Deleted Added
full compact
MCDwarf.cpp (263508) MCDwarf.cpp (266715)
1//===- lib/MC/MCDwarf.cpp - MCDwarf implementation ------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//

--- 825 unchanged lines hidden (view full) ---

834 case dwarf::DW_EH_PE_sdata4:
835 return 4;
836 case dwarf::DW_EH_PE_udata8:
837 case dwarf::DW_EH_PE_sdata8:
838 return 8;
839 }
840}
841
1//===- lib/MC/MCDwarf.cpp - MCDwarf implementation ------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//

--- 825 unchanged lines hidden (view full) ---

834 case dwarf::DW_EH_PE_sdata4:
835 return 4;
836 case dwarf::DW_EH_PE_udata8:
837 case dwarf::DW_EH_PE_sdata8:
838 return 8;
839 }
840}
841
842static void EmitSymbol(MCStreamer &streamer, const MCSymbol &symbol,
843 unsigned symbolEncoding, const char *comment = 0) {
842static void EmitFDESymbol(MCStreamer &streamer, const MCSymbol &symbol,
843 unsigned symbolEncoding, bool isEH,
844 const char *comment = 0) {
844 MCContext &context = streamer.getContext();
845 const MCAsmInfo *asmInfo = context.getAsmInfo();
846 const MCExpr *v = asmInfo->getExprForFDESymbol(&symbol,
847 symbolEncoding,
848 streamer);
849 unsigned size = getSizeForEncoding(streamer, symbolEncoding);
850 if (streamer.isVerboseAsm() && comment) streamer.AddComment(comment);
845 MCContext &context = streamer.getContext();
846 const MCAsmInfo *asmInfo = context.getAsmInfo();
847 const MCExpr *v = asmInfo->getExprForFDESymbol(&symbol,
848 symbolEncoding,
849 streamer);
850 unsigned size = getSizeForEncoding(streamer, symbolEncoding);
851 if (streamer.isVerboseAsm() && comment) streamer.AddComment(comment);
851 streamer.EmitAbsValue(v, size);
852 if (asmInfo->doDwarfFDESymbolsUseAbsDiff() && isEH)
853 streamer.EmitAbsValue(v, size);
854 else
855 streamer.EmitValue(v, size);
852}
853
854static void EmitPersonality(MCStreamer &streamer, const MCSymbol &symbol,
855 unsigned symbolEncoding) {
856 MCContext &context = streamer.getContext();
857 const MCAsmInfo *asmInfo = context.getAsmInfo();
858 const MCExpr *v = asmInfo->getExprForPersonalitySymbol(&symbol,
859 symbolEncoding,

--- 482 unchanged lines hidden (view full) ---

1342 } else {
1343 streamer.EmitSymbolValue(&cieStart, 4);
1344 }
1345
1346 // PC Begin
1347 unsigned PCEncoding = IsEH ? MOFI->getFDEEncoding(UsingCFI)
1348 : (unsigned)dwarf::DW_EH_PE_absptr;
1349 unsigned PCSize = getSizeForEncoding(streamer, PCEncoding);
856}
857
858static void EmitPersonality(MCStreamer &streamer, const MCSymbol &symbol,
859 unsigned symbolEncoding) {
860 MCContext &context = streamer.getContext();
861 const MCAsmInfo *asmInfo = context.getAsmInfo();
862 const MCExpr *v = asmInfo->getExprForPersonalitySymbol(&symbol,
863 symbolEncoding,

--- 482 unchanged lines hidden (view full) ---

1346 } else {
1347 streamer.EmitSymbolValue(&cieStart, 4);
1348 }
1349
1350 // PC Begin
1351 unsigned PCEncoding = IsEH ? MOFI->getFDEEncoding(UsingCFI)
1352 : (unsigned)dwarf::DW_EH_PE_absptr;
1353 unsigned PCSize = getSizeForEncoding(streamer, PCEncoding);
1350 EmitSymbol(streamer, *frame.Begin, PCEncoding, "FDE initial location");
1354 EmitFDESymbol(streamer, *frame.Begin, PCEncoding, IsEH, "FDE initial location");
1351
1352 // PC Range
1353 const MCExpr *Range = MakeStartMinusEndExpr(streamer, *frame.Begin,
1354 *frame.End, 0);
1355 if (verboseAsm) streamer.AddComment("FDE address range");
1356 streamer.EmitAbsValue(Range, PCSize);
1357
1358 if (IsEH) {
1359 // Augmentation Data Length
1360 unsigned augmentationLength = 0;
1361
1362 if (frame.Lsda)
1363 augmentationLength += getSizeForEncoding(streamer, frame.LsdaEncoding);
1364
1365 if (verboseAsm) streamer.AddComment("Augmentation size");
1366 streamer.EmitULEB128IntValue(augmentationLength);
1367
1368 // Augmentation Data
1369 if (frame.Lsda)
1355
1356 // PC Range
1357 const MCExpr *Range = MakeStartMinusEndExpr(streamer, *frame.Begin,
1358 *frame.End, 0);
1359 if (verboseAsm) streamer.AddComment("FDE address range");
1360 streamer.EmitAbsValue(Range, PCSize);
1361
1362 if (IsEH) {
1363 // Augmentation Data Length
1364 unsigned augmentationLength = 0;
1365
1366 if (frame.Lsda)
1367 augmentationLength += getSizeForEncoding(streamer, frame.LsdaEncoding);
1368
1369 if (verboseAsm) streamer.AddComment("Augmentation size");
1370 streamer.EmitULEB128IntValue(augmentationLength);
1371
1372 // Augmentation Data
1373 if (frame.Lsda)
1370 EmitSymbol(streamer, *frame.Lsda, frame.LsdaEncoding,
1371 "Language Specific Data Area");
1374 EmitFDESymbol(streamer, *frame.Lsda, frame.LsdaEncoding, true,
1375 "Language Specific Data Area");
1372 }
1373
1374 // Call Frame Instructions
1375 EmitCFIInstructions(streamer, frame.Instructions, frame.Begin);
1376
1377 // Padding
1378 streamer.EmitValueToAlignment(PCSize);
1379

--- 141 unchanged lines hidden ---
1376 }
1377
1378 // Call Frame Instructions
1379 EmitCFIInstructions(streamer, frame.Instructions, frame.Begin);
1380
1381 // Padding
1382 streamer.EmitValueToAlignment(PCSize);
1383

--- 141 unchanged lines hidden ---