forked from OSchip/llvm-project
[lld-macho] Skip over symbols in un-parsed debug info sections
clang appears to emit symbols in `__debug_aranges`, at least for arm64... in the examples I've seen, it doesn't seem like those symbols are referenced outside of `__DWARF`, so I think they're safe to ignore. But hopefully @clayborg can confirm. Reviewed By: clayborg Differential Revision: https://reviews.llvm.org/D98073
This commit is contained in:
parent
fc011b5eb1
commit
3c19b4f34d
|
@ -407,7 +407,11 @@ void ObjFile::parseSymbols(ArrayRef<structs::nlist_64> nList,
|
|||
|
||||
const section_64 &sec = sectionHeaders[sym.n_sect - 1];
|
||||
SubsectionMap &subsecMap = subsections[sym.n_sect - 1];
|
||||
assert(!subsecMap.empty());
|
||||
|
||||
// parseSections() may have chosen not to parse this section.
|
||||
if (subsecMap.empty())
|
||||
continue;
|
||||
|
||||
uint64_t offset = sym.n_value - sec.addr;
|
||||
|
||||
// If the input file does not use subsections-via-symbols, all symbols can
|
||||
|
|
|
@ -733,6 +733,8 @@ void SymtabSection::finalizeContents() {
|
|||
for (InputFile *file : inputFiles) {
|
||||
if (auto *objFile = dyn_cast<ObjFile>(file)) {
|
||||
for (Symbol *sym : objFile->symbols) {
|
||||
if (sym == nullptr)
|
||||
continue;
|
||||
// TODO: when we implement -dead_strip, we should filter out symbols
|
||||
// that belong to dead sections.
|
||||
if (auto *defined = dyn_cast<Defined>(sym)) {
|
||||
|
|
|
@ -181,6 +181,10 @@ Ldebug_info_end0:
|
|||
.subsections_via_symbols
|
||||
.section __DWARF,__debug_line,regular,debug
|
||||
|
||||
.section __DWARF,__debug_aranges,regular,debug
|
||||
ltmp1:
|
||||
.byte 0
|
||||
|
||||
#--- no-debug.s
|
||||
## This file has no debug info.
|
||||
.text
|
||||
|
|
Loading…
Reference in New Issue