diff options
Diffstat (limited to 'llvm/tools')
| -rw-r--r-- | llvm/tools/dsymutil/DebugMap.cpp | 6 | ||||
| -rw-r--r-- | llvm/tools/dsymutil/MachODebugMapParser.cpp | 12 |
2 files changed, 13 insertions, 5 deletions
diff --git a/llvm/tools/dsymutil/DebugMap.cpp b/llvm/tools/dsymutil/DebugMap.cpp index e5cc87b3f31..46b269dc267 100644 --- a/llvm/tools/dsymutil/DebugMap.cpp +++ b/llvm/tools/dsymutil/DebugMap.cpp @@ -216,7 +216,11 @@ MappingTraits<dsymutil::DebugMapObject>::YamlDMO::denormalize(IO &IO) { // during the test, we can't hardcode the symbols addresses, so // look them up here and rewrite them. for (const auto &Sym : ErrOrObjectFile->symbols()) { - uint64_t Address = Sym.getValue(); + uint64_t Address; + if (Sym.getFlags() & SymbolRef::SF_Common) + Address = Sym.getCommonSize(); + else + Address = Sym.getValue(); ErrorOr<StringRef> Name = Sym.getName(); if (!Name) continue; 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; |

