diff options
| -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)) {  | 

