From bbbfad97fc1485bd860a0f5442edcfcb448dac11 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Thu, 31 Aug 2017 21:23:44 +0000 Subject: [PATCH] [llvm-nm] Fix output formatting of -f sysv for 64bit targets Differential Revision: https://reviews.llvm.org/D37347 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312284 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/tools/llvm-nm/X86/Inputs/hello.obj.elf-i386 | Bin 0 -> 664 bytes test/tools/llvm-nm/X86/sysv-i386.test | 6 ++++++ test/tools/llvm-nm/X86/sysv-x86_64.test | 13 +++++++++++++ tools/llvm-nm/llvm-nm.cpp | 10 +++++++--- 4 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 test/tools/llvm-nm/X86/Inputs/hello.obj.elf-i386 create mode 100644 test/tools/llvm-nm/X86/sysv-i386.test create mode 100644 test/tools/llvm-nm/X86/sysv-x86_64.test diff --git a/test/tools/llvm-nm/X86/Inputs/hello.obj.elf-i386 b/test/tools/llvm-nm/X86/Inputs/hello.obj.elf-i386 new file mode 100644 index 0000000000000000000000000000000000000000..d14b8d7a7f654a58f1367226adca54407129943a GIT binary patch literal 664 zcma)3Jxjw-6uoKdcR>*y+#)EnpwC9zQU}4M>QKd{;NTLIprtQ~B(GH`hyD$JjG*9O zap>Y+i1(yIGf%$g+-Wjj~yivhN>E zYxQbbk2KNRBqA!%PqLNetE>iB%q-tzU8fvvWI1GwInOk5L@TVh0zV@1q)^_oBH@I- z?*)n;dnzW;60wTNw>treAXJ_>ziRKt%67W+fZc>ca47qZ^~Fy$3SC>-C|knfkN*!R zY|GDBM;zbI?}@GPa#_!+XGx4`7p`AWq9km!;L?;#UtGjT@^ q^g!GST44e%vyn#QNBed;MXd3rgG_a=$vNiGfbW`#KJI||Fz+w7TuBW8 literal 0 HcmV?d00001 diff --git a/test/tools/llvm-nm/X86/sysv-i386.test b/test/tools/llvm-nm/X86/sysv-i386.test new file mode 100644 index 00000000000..b9b1f6024b1 --- /dev/null +++ b/test/tools/llvm-nm/X86/sysv-i386.test @@ -0,0 +1,6 @@ +RUN: llvm-nm -f sysv %p/Inputs/hello.obj.elf-i386 | FileCheck %s --strict-whitespace + +CHECK: Name Value Class Type Size Line Section +CHECK: .L.str |00000000| r | |0000000f| | +CHECK: main |00000000| T | |00000015| | +CHECK: puts | | U | | | | diff --git a/test/tools/llvm-nm/X86/sysv-x86_64.test b/test/tools/llvm-nm/X86/sysv-x86_64.test new file mode 100644 index 00000000000..bf041b202f7 --- /dev/null +++ b/test/tools/llvm-nm/X86/sysv-x86_64.test @@ -0,0 +1,13 @@ +RUN: llvm-nm -f sysv %p/Inputs/hello.obj.elf-x86_64 | FileCheck %s --check-prefix=ELF --strict-whitespace +RUN: llvm-nm -f sysv %p/Inputs/hello.obj.macho-x86_64 2>&1 | FileCheck %s --check-prefix=MACHO --strict-whitespace + +ELF: Name Value Class Type Size Line Section +ELF: main |0000000000000000| T | |0000000000000015| | +ELF: puts | | U | | | | + +MACHO: Name Value Class Type Size Line Section +MACHO: EH_frame0 |0000000000000068| s | |0000000000000000| | +MACHO: L_.str |000000000000003b| s | |0000000000000000| | +MACHO: _main |0000000000000000| T | |0000000000000000| | +MACHO: _main.eh |0000000000000080| S | |0000000000000000| | +MACHO: _printf | | U | | | | diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp index 126a9ae925e..1934051c65d 100644 --- a/tools/llvm-nm/llvm-nm.cpp +++ b/tools/llvm-nm/llvm-nm.cpp @@ -709,9 +709,13 @@ static void sortAndPrintSymbolList(SymbolicFile &Obj, bool printName, } else if (OutputFormat == bsd && MultipleFiles && printName) { outs() << "\n" << CurrentFilename << ":\n"; } else if (OutputFormat == sysv) { - outs() << "\n\nSymbols from " << CurrentFilename << ":\n\n" - << "Name Value Class Type" - << " Size Line Section\n"; + outs() << "\n\nSymbols from " << CurrentFilename << ":\n\n"; + if (isSymbolList64Bit(Obj)) + outs() << "Name Value Class Type" + << " Size Line Section\n"; + else + outs() << "Name Value Class Type" + << " Size Line Section\n"; } } -- 2.50.1