mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-21 02:24:22 +00:00
Remove wild .debug_aranges entries generated from unimportant labels
r191052 added emitting .debug_aranges to Clang, but this functionality is broken: it uses all MC labels added in DWARF Asm printer, including the labels for build relocations between different DWARF sections, like .Lsection_line or .Ldebug_loc0. As a result, if any DIE .debug_info would contain "DW_AT_location=0x123" attribute, .debug_aranges would also contain a range starting from 0x123, breaking tools that rely on this section. This patch fixes this by using only MC labels that corresponds to the addresses in the user program. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191884 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -1110,8 +1110,8 @@ void DwarfDebug::finalizeModuleInfo() {
|
||||
|
||||
void DwarfDebug::endSections() {
|
||||
// Filter labels by section.
|
||||
for (size_t n = 0; n < Labels.size(); n++) {
|
||||
const SymbolCU &SCU = Labels[n];
|
||||
for (size_t n = 0; n < ArangeLabels.size(); n++) {
|
||||
const SymbolCU &SCU = ArangeLabels[n];
|
||||
if (SCU.Sym->isInSection()) {
|
||||
// Make a note of this symbol and it's section.
|
||||
const MCSection *Section = &SCU.Sym->getSection();
|
||||
@ -1138,10 +1138,7 @@ void DwarfDebug::endSections() {
|
||||
}
|
||||
|
||||
// Insert a final terminator.
|
||||
SymbolCU Entry;
|
||||
Entry.CU = NULL;
|
||||
Entry.Sym = Sym;
|
||||
SectionMap[Section].push_back(Entry);
|
||||
SectionMap[Section].push_back(SymbolCU(NULL, Sym));
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user