diff options
author | Eric Christopher <echristo@gmail.com> | 2014-01-29 22:22:56 +0000 |
---|---|---|
committer | Eric Christopher <echristo@gmail.com> | 2014-01-29 22:22:56 +0000 |
commit | 8873adaa60d3fff28758d341f136c650fc1314db (patch) | |
tree | fec8033cee2c295a8b017a60c483531b9f89e8e3 /llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | |
parent | 35db2b3d4c89343171a52963518b03880432de0c (diff) | |
download | bcm5719-llvm-8873adaa60d3fff28758d341f136c650fc1314db.tar.gz bcm5719-llvm-8873adaa60d3fff28758d341f136c650fc1314db.zip |
If we use DW_AT_ranges we need to specify a base address that ranges
are relative to in the compile unit. Currently let's just use 0...
Thanks to Greg Clayton for the catch!
llvm-svn: 200425
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index d557f403480..326c4482d2e 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -1054,11 +1054,17 @@ void DwarfDebug::finalizeModuleInfo() { // FIXME: We should use ranges if we have multiple compile units or // allow reordering of code ala .subsections_via_symbols in mach-o. DwarfCompileUnit *U = SkCU ? SkCU : static_cast<DwarfCompileUnit *>(TheU); - if (useCURanges() && TheU->getRanges().size()) + if (useCURanges() && TheU->getRanges().size()) { addSectionLabel(Asm, U, U->getUnitDie(), dwarf::DW_AT_ranges, Asm->GetTempSymbol("cu_ranges", U->getUniqueID()), DwarfDebugRangeSectionSym); - else + + // A DW_AT_low_pc attribute may also be specified in combination with + // DW_AT_ranges to specify the default base address for use in location + // lists (see Section 2.6.2) and range lists (see Section 2.17.3). + U->addUInt(U->getUnitDie(), dwarf::DW_AT_low_pc, dwarf::DW_FORM_addr, + 0); + } else U->addUInt(U->getUnitDie(), dwarf::DW_AT_low_pc, dwarf::DW_FORM_addr, 0); } |