summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Enderby <enderby@apple.com>2014-07-03 21:51:07 +0000
committerKevin Enderby <enderby@apple.com>2014-07-03 21:51:07 +0000
commit0fd8aac5dae2fe529e51a6b4db7eb32ce3922158 (patch)
treea0dc225236c1518041629f60fadd57ccf4ecb000
parenta37a2fc81f942ef044ea08430e3405bc23ece5c2 (diff)
downloadbcm5719-llvm-0fd8aac5dae2fe529e51a6b4db7eb32ce3922158.tar.gz
bcm5719-llvm-0fd8aac5dae2fe529e51a6b4db7eb32ce3922158.zip
Add the -just-symbol-name (aka -j) flag to llvm-nm to just print the
symbol’s name. On darwin the -j flag is used (often in combinations with other flags) to produce a complete list of symbol names which than can then be reorder and used with ld(1)’s -order_file. llvm-svn: 212294
-rw-r--r--llvm/test/Object/nm-trivial-object.test8
-rw-r--r--llvm/tools/llvm-nm/llvm-nm.cpp9
2 files changed, 17 insertions, 0 deletions
diff --git a/llvm/test/Object/nm-trivial-object.test b/llvm/test/Object/nm-trivial-object.test
index 09642e1c688..656d6b00cd3 100644
--- a/llvm/test/Object/nm-trivial-object.test
+++ b/llvm/test/Object/nm-trivial-object.test
@@ -18,6 +18,8 @@ RUN: llvm-nm %p/Inputs/trivial-object-test.macho-x86-64 \
RUN: | FileCheck %s -check-prefix macho64
RUN: llvm-nm %p/Inputs/macho-text-data-bss.macho-x86_64 \
RUN: | FileCheck %s -check-prefix macho-tdb
+RUN: llvm-nm -j %p/Inputs/macho-text-data-bss.macho-x86_64 \
+RUN: | FileCheck %s -check-prefix macho-j
RUN: llvm-nm -r %p/Inputs/macho-text-data-bss.macho-x86_64 \
RUN: | FileCheck %s -check-prefix macho-r
RUN: llvm-nm %p/Inputs/common.coff-i386 \
@@ -85,6 +87,12 @@ macho-tdb: 000000000000000c D _d
macho-tdb: 0000000000000000 T _t
macho-tdb: 0000000000000048 S _t.eh
+macho-j: EH_frame0
+macho-j: _b
+macho-j: _d
+macho-j: _t
+macho-j: _t.eh
+
macho-r: 0000000000000048 S _t.eh
macho-r-NEXT: 0000000000000000 T _t
macho-r-NEXT: 000000000000000c D _d
diff --git a/llvm/tools/llvm-nm/llvm-nm.cpp b/llvm/tools/llvm-nm/llvm-nm.cpp
index 3f9ce24471a..d3918547d84 100644
--- a/llvm/tools/llvm-nm/llvm-nm.cpp
+++ b/llvm/tools/llvm-nm/llvm-nm.cpp
@@ -131,6 +131,11 @@ cl::opt<bool> WithoutAliases("without-aliases", cl::Hidden,
cl::opt<bool> ArchiveMap("print-armap", cl::desc("Print the archive map"));
cl::alias ArchiveMaps("s", cl::desc("Alias for --print-armap"),
cl::aliasopt(ArchiveMap));
+
+cl::opt<bool> JustSymbolName("just-symbol-name",
+ cl::desc("Print just the symbol's name"));
+cl::alias JustSymbolNames("j", cl::desc("Alias for --just-symbol-name"),
+ cl::aliasopt(JustSymbolName));
bool PrintAddress = true;
bool MultipleFiles = false;
@@ -446,6 +451,10 @@ static void sortAndPrintSymbolList(SymbolicFile *Obj, bool printName) {
continue;
if (SizeSort && !PrintAddress && I->Size == UnknownAddressOrSize)
continue;
+ if (JustSymbolName) {
+ outs() << I->Name << "\n";
+ continue;
+ }
char SymbolAddrStr[18] = "";
char SymbolSizeStr[18] = "";
OpenPOWER on IntegriCloud