diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/test/tools/llvm-nm/X86/Inputs/libExample.a.macho-x86_64 | bin | 0 -> 832 bytes | |||
| -rw-r--r-- | llvm/test/tools/llvm-nm/X86/posixArchiveMachO.test | 5 | ||||
| -rw-r--r-- | llvm/test/tools/llvm-nm/X86/posixELF.test | 4 | ||||
| -rw-r--r-- | llvm/test/tools/llvm-nm/X86/posixMachO.test | 6 | ||||
| -rw-r--r-- | llvm/tools/llvm-nm/llvm-nm.cpp | 33 |
5 files changed, 31 insertions, 17 deletions
diff --git a/llvm/test/tools/llvm-nm/X86/Inputs/libExample.a.macho-x86_64 b/llvm/test/tools/llvm-nm/X86/Inputs/libExample.a.macho-x86_64 Binary files differnew file mode 100644 index 00000000000..a5d1096daa3 --- /dev/null +++ b/llvm/test/tools/llvm-nm/X86/Inputs/libExample.a.macho-x86_64 diff --git a/llvm/test/tools/llvm-nm/X86/posixArchiveMachO.test b/llvm/test/tools/llvm-nm/X86/posixArchiveMachO.test new file mode 100644 index 00000000000..071cf29432c --- /dev/null +++ b/llvm/test/tools/llvm-nm/X86/posixArchiveMachO.test @@ -0,0 +1,5 @@ +# RUN: llvm-nm -P -A %p/Inputs/libExample.a.macho-x86_64 | FileCheck %s + +# CHECK: libExample.a.macho-x86_64[example.o]: EH_frame0 s 30 0 +# CHECK: libExample.a.macho-x86_64[example.o]: _f T 0 0 +# CHECK: libExample.a.macho-x86_64[example.o]: _f.eh S 48 0 diff --git a/llvm/test/tools/llvm-nm/X86/posixELF.test b/llvm/test/tools/llvm-nm/X86/posixELF.test index 6b4e9549612..f66e1befc8f 100644 --- a/llvm/test/tools/llvm-nm/X86/posixELF.test +++ b/llvm/test/tools/llvm-nm/X86/posixELF.test @@ -1,4 +1,4 @@ # RUN: llvm-nm -P %p/Inputs/hello.obj.elf-x86_64 | FileCheck %s -CHECK: main T 0000000000000000 0000000000000000 -CHECK: puts U 0000000000000000 +CHECK: main T 0 0 +CHECK: puts U 0 0 diff --git a/llvm/test/tools/llvm-nm/X86/posixMachO.test b/llvm/test/tools/llvm-nm/X86/posixMachO.test index a0d114237ce..5a82bbb88e9 100644 --- a/llvm/test/tools/llvm-nm/X86/posixMachO.test +++ b/llvm/test/tools/llvm-nm/X86/posixMachO.test @@ -1,7 +1,7 @@ # RUN: llvm-nm -P %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s -# CHECK: EH_frame0 s 104 0 -# CHECK: L_.str s 59 0 +# CHECK: EH_frame0 s 68 0 +# CHECK: L_.str s 3b 0 # CHECK: _main T 0 0 -# CHECK: _main.eh S 128 0 +# CHECK: _main.eh S 80 0 # CHECK: _printf U 0 0 diff --git a/llvm/tools/llvm-nm/llvm-nm.cpp b/llvm/tools/llvm-nm/llvm-nm.cpp index 65e9156a74d..241ee8fb40f 100644 --- a/llvm/tools/llvm-nm/llvm-nm.cpp +++ b/llvm/tools/llvm-nm/llvm-nm.cpp @@ -583,26 +583,26 @@ static void sortAndPrintSymbolList(SymbolicFile &Obj, bool printName, printDashes = "----------------"; switch (AddressRadix) { case Radix::o: - printFormat = "%016" PRIo64; + printFormat = OutputFormat == posix ? "%" PRIo64 : "%016" PRIo64; break; case Radix::x: - printFormat = "%016" PRIx64; + printFormat = OutputFormat == posix ? "%" PRIx64 : "%016" PRIx64; break; default: - printFormat = "%016" PRId64; + printFormat = OutputFormat == posix ? "%" PRId64 : "%016" PRId64; } } else { printBlanks = " "; printDashes = "--------"; switch (AddressRadix) { case Radix::o: - printFormat = "%08" PRIo64; + printFormat = OutputFormat == posix ? "%" PRIo64 : "%08" PRIo64; break; case Radix::x: - printFormat = "%08" PRIx64; + printFormat = OutputFormat == posix ? "%" PRIx64 : "%08" PRIx64; break; default: - printFormat = "%08" PRId64; + printFormat = OutputFormat == posix ? "%" PRId64 : "%08" PRId64; } } @@ -617,9 +617,13 @@ static void sortAndPrintSymbolList(SymbolicFile &Obj, bool printName, if (PrintFileName) { if (!ArchitectureName.empty()) outs() << "(for architecture " << ArchitectureName << "):"; - if (!ArchiveName.empty()) - outs() << ArchiveName << ":"; - outs() << CurrentFilename << ": "; + if (OutputFormat == posix && !ArchiveName.empty()) + outs() << ArchiveName << "[" << CurrentFilename << "]: "; + else { + if (!ArchiveName.empty()) + outs() << ArchiveName << ":"; + outs() << CurrentFilename << ": "; + } } if ((JustSymbolName || (UndefinedOnly && isa<MachOObjectFile>(Obj) && OutputFormat != darwin)) && OutputFormat != posix) { @@ -630,8 +634,13 @@ static void sortAndPrintSymbolList(SymbolicFile &Obj, bool printName, char SymbolAddrStr[18] = ""; char SymbolSizeStr[18] = ""; - if (OutputFormat == sysv || I->TypeChar == 'U') - strcpy(SymbolAddrStr, printBlanks); + if (OutputFormat == sysv || I->TypeChar == 'U') { + if (OutputFormat == posix) + format(printFormat, I->Address) + .print(SymbolAddrStr, sizeof(SymbolAddrStr)); + else + strcpy(SymbolAddrStr, printBlanks); + } if (OutputFormat == sysv) strcpy(SymbolSizeStr, printBlanks); @@ -656,7 +665,7 @@ static void sortAndPrintSymbolList(SymbolicFile &Obj, bool printName, } else if (OutputFormat == posix) { outs() << I->Name << " " << I->TypeChar << " "; if (MachO) - outs() << I->Address << " " << "0" /* SymbolSizeStr */ << "\n"; + outs() << SymbolAddrStr << " " << "0" /* SymbolSizeStr */ << "\n"; else outs() << SymbolAddrStr << " " << SymbolSizeStr << "\n"; } else if (OutputFormat == bsd || (OutputFormat == darwin && !MachO)) { |

