diff options
Diffstat (limited to 'llvm/tools/llvm-nm/llvm-nm.cpp')
| -rw-r--r-- | llvm/tools/llvm-nm/llvm-nm.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/llvm/tools/llvm-nm/llvm-nm.cpp b/llvm/tools/llvm-nm/llvm-nm.cpp index cf674610995..4edb4efa8d0 100644 --- a/llvm/tools/llvm-nm/llvm-nm.cpp +++ b/llvm/tools/llvm-nm/llvm-nm.cpp @@ -901,10 +901,15 @@ static void dumpSymbolNamesFromObject(SymbolicFile &Obj, bool printName, S.Size = ELFSymbolRef(Sym).getSize(); } if (PrintAddress && isa<ObjectFile>(Obj)) { - ErrorOr<uint64_t> AddressOrErr = SymbolRef(Sym).getAddress(); - if (error(AddressOrErr.getError())) - break; - S.Address = *AddressOrErr; + SymbolRef SymRef(Sym); + if (SymFlags & SymbolRef::SF_Common) { + S.Address = SymRef.getCommonSize(); + } else { + ErrorOr<uint64_t> AddressOrErr = SymRef.getAddress(); + if (error(AddressOrErr.getError())) + break; + S.Address = *AddressOrErr; + } } S.TypeChar = getNMTypeChar(Obj, Sym); if (error(Sym.printName(OS))) |

