[llvm] 4372e62 - [AIX] add the xcoff symbol size for the llvm-nm.
via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 11 13:24:56 PST 2022
Author: zhijian
Date: 2022-01-11T16:24:43-05:00
New Revision: 4372e629a9a98577a6a2d130109c3dc7da84dc62
URL: https://github.com/llvm/llvm-project/commit/4372e629a9a98577a6a2d130109c3dc7da84dc62
DIFF: https://github.com/llvm/llvm-project/commit/4372e629a9a98577a6a2d130109c3dc7da84dc62.diff
LOG: [AIX] add the xcoff symbol size for the llvm-nm.
Summary:
add the xcoff symbol size for the llvm-nm.
Reviewers: James Henderson
Differential Revision: https://reviews.llvm.org/D113104
Added:
llvm/test/tools/llvm-nm/XCOFF/size.test
Modified:
llvm/tools/llvm-nm/llvm-nm.cpp
Removed:
################################################################################
diff --git a/llvm/test/tools/llvm-nm/XCOFF/size.test b/llvm/test/tools/llvm-nm/XCOFF/size.test
new file mode 100644
index 000000000000..182f04868c92
--- /dev/null
+++ b/llvm/test/tools/llvm-nm/XCOFF/size.test
@@ -0,0 +1,51 @@
+## Test llvm-nm for XCOFF object files with --print-size option.
+
+# RUN: yaml2obj %s -o %t.o
+# RUN: llvm-nm --print-size %t.o | FileCheck --match-full-lines %s
+
+--- !XCOFF
+FileHeader:
+ MagicNumber: 0x1DF
+Sections:
+ - Name: .text
+ Flags: [ STYP_TEXT ]
+ - Name: .data
+ Flags: [ STYP_DATA ]
+ - Name: .bss
+ Flags: [ STYP_BSS ]
+Symbols:
+ - Name: ._ZL5func0v
+ Section: .text
+ StorageClass: C_EXT
+ Type: 0x20
+ AuxEntries:
+ - Type: AUX_CSECT
+ SymbolAlignmentAndType: 0x02
+ StorageMappingClass: XMC_PR
+ - Name: val
+ Value: 0x200
+ Section: .data
+ StorageClass: C_EXT
+ Type: 0x20
+ AuxEntries:
+ - Type: AUX_CSECT
+ SymbolAlignmentAndType: 0x01
+ StorageMappingClass: XMC_RW
+ SectionOrLength: 0x8
+ - Name: comval
+ Section: .bss
+ Value: 0x13C
+ StorageClass: C_EXT
+ Type: 0x00
+ AuxEntries:
+ - Type: AUX_CSECT
+ SymbolAlignmentAndType: 0x03
+ StorageMappingClass: XMC_RW
+ SectionOrLength: 0x4
+
+## Label symbol.
+# CHECK: 00000000 00000000 T ._ZL5func0v
+## Common symbol.
+# CHECK-NEXT: 0000013c 00000004 C comval
+## SD symbol.
+# CHECK-NEXT: 00000200 00000008 D val
diff --git a/llvm/tools/llvm-nm/llvm-nm.cpp b/llvm/tools/llvm-nm/llvm-nm.cpp
index 82ae31b17ca2..68df643a04ae 100644
--- a/llvm/tools/llvm-nm/llvm-nm.cpp
+++ b/llvm/tools/llvm-nm/llvm-nm.cpp
@@ -1687,6 +1687,11 @@ static void dumpSymbolNamesFromObject(SymbolicFile &Obj, bool printName,
S.Address = 0;
if (isa<ELFObjectFileBase>(&Obj))
S.Size = ELFSymbolRef(Sym).getSize();
+
+ if (const XCOFFObjectFile *XCOFFObj =
+ dyn_cast<const XCOFFObjectFile>(&Obj))
+ S.Size = XCOFFObj->getSymbolSize(Sym.getRawDataRefImpl());
+
if (PrintAddress && isa<ObjectFile>(Obj)) {
SymbolRef SymRef(Sym);
Expected<uint64_t> AddressOrErr = SymRef.getAddress();
More information about the llvm-commits
mailing list