diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-06 18:18:44 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-06 18:18:44 +0000 |
| commit | 80c3354634267ebb5aac88e2340c45de0fe89b42 (patch) | |
| tree | 13854dc053371bb88cc30a06beef7180e3f8a8c8 | |
| parent | 298be46e3f04da4e64b5c087b1fff6778e518bd7 (diff) | |
| download | bcm5719-llvm-80c3354634267ebb5aac88e2340c45de0fe89b42.tar.gz bcm5719-llvm-80c3354634267ebb5aac88e2340c45de0fe89b42.zip | |
Fix printing of common symbols.
Printing the symbol size matches the behavior or both gnu nm and freebsd nm.
llvm-svn: 241480
| -rw-r--r-- | llvm/test/Object/X86/nm-print-size.s | 3 | ||||
| -rw-r--r-- | llvm/tools/llvm-nm/llvm-nm.cpp | 13 |
2 files changed, 12 insertions, 4 deletions
diff --git a/llvm/test/Object/X86/nm-print-size.s b/llvm/test/Object/X86/nm-print-size.s index b833601969c..4aed80257ea 100644 --- a/llvm/test/Object/X86/nm-print-size.s +++ b/llvm/test/Object/X86/nm-print-size.s @@ -3,6 +3,7 @@ // CHECK: 0000000000000000 ffffffffffffffff n a // CHECK: 0000000000000000 0000000000000000 N b +// CHECK: 0000000000000004 0000000000000004 C c .section foo a: @@ -10,3 +11,5 @@ a: .global b b: + + .comm c,4,8 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))) |

