diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-07 15:05:09 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-07 15:05:09 +0000 |
commit | 7e7be92c7f2d0505a3fbf33f57024f6cedeab82f (patch) | |
tree | 5bcaf77df6bf10ed129d6f429b7df336b8555067 /llvm/tools/dsymutil/MachODebugMapParser.cpp | |
parent | cf0a80728c935b2cb68458a191d3f2cf10edcb84 (diff) | |
download | bcm5719-llvm-7e7be92c7f2d0505a3fbf33f57024f6cedeab82f.tar.gz bcm5719-llvm-7e7be92c7f2d0505a3fbf33f57024f6cedeab82f.zip |
Common symbols don't have a value.
At least not in the interface exposed by ObjectFile. This matches what ELF and
COFF implement.
Adjust existing code that was expecting them to have values. No overall
functionality change intended.
Another option would be to change the interface and the ELF and COFF
implementations to say that the value of a common symbol is its size.
llvm-svn: 241593
Diffstat (limited to 'llvm/tools/dsymutil/MachODebugMapParser.cpp')
-rw-r--r-- | llvm/tools/dsymutil/MachODebugMapParser.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/tools/dsymutil/MachODebugMapParser.cpp b/llvm/tools/dsymutil/MachODebugMapParser.cpp index bec95915a0f..76fc7612e68 100644 --- a/llvm/tools/dsymutil/MachODebugMapParser.cpp +++ b/llvm/tools/dsymutil/MachODebugMapParser.cpp @@ -197,10 +197,14 @@ void MachODebugMapParser::loadCurrentObjectFileSymbols() { CurrentObjectAddresses.clear(); for (auto Sym : CurrentObjectHolder.Get().symbols()) { - - uint64_t Addr = Sym.getValue(); - if (Addr == UnknownAddress) - continue; + uint64_t Addr; + if (Sym.getFlags() & SymbolRef::SF_Common) { + Addr = Sym.getCommonSize(); + } else { + Addr = Sym.getValue(); + if (Addr == UnknownAddress) + continue; + } ErrorOr<StringRef> Name = Sym.getName(); if (!Name) continue; |