diff options
author | Michael J. Spencer <bigcheesegs@gmail.com> | 2012-02-28 00:40:37 +0000 |
---|---|---|
committer | Michael J. Spencer <bigcheesegs@gmail.com> | 2012-02-28 00:40:37 +0000 |
commit | dfa1896b6b61e708f002b814794890ff308172ee (patch) | |
tree | ae050184b874434f8414e9e0b66b2db0e110cead /tools | |
parent | 921c9bd91f59937e25e754e19832c40b2f130d63 (diff) | |
download | llvm-dfa1896b6b61e708f002b814794890ff308172ee.tar.gz llvm-dfa1896b6b61e708f002b814794890ff308172ee.tar.bz2 llvm-dfa1896b6b61e708f002b814794890ff308172ee.tar.xz |
[Object] Add {begin,end}_dynamic_symbols stubs and implementation for ELF.
Add -D option to llvm-nm to dump dynamic symbols.
Patch by David Meyer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151600 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r-- | tools/llvm-nm/llvm-nm.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp index 13356f81b8..8688d4af65 100644 --- a/tools/llvm-nm/llvm-nm.cpp +++ b/tools/llvm-nm/llvm-nm.cpp @@ -61,6 +61,12 @@ namespace { cl::alias UndefinedOnly2("u", cl::desc("Alias for --undefined-only"), cl::aliasopt(UndefinedOnly)); + cl::opt<bool> DynamicSyms("dynamic", + cl::desc("Display the dynamic symbols instead " + "of normal symbols.")); + cl::alias DynamicSyms2("D", cl::desc("Alias for --dynamic"), + cl::aliasopt(DynamicSyms)); + cl::opt<bool> DefinedOnly("defined-only", cl::desc("Show only defined symbols")); @@ -277,9 +283,13 @@ static void DumpSymbolNamesFromModule(Module *M) { static void DumpSymbolNamesFromObject(ObjectFile *obj) { error_code ec; - for (symbol_iterator i = obj->begin_symbols(), - e = obj->end_symbols(); - i != e; i.increment(ec)) { + symbol_iterator ibegin = obj->begin_symbols(); + symbol_iterator iend = obj->end_symbols(); + if (DynamicSyms) { + ibegin = obj->begin_dynamic_symbols(); + iend = obj->end_dynamic_symbols(); + } + for (symbol_iterator i = ibegin; i != iend; i.increment(ec)) { if (error(ec)) break; bool internal; if (error(i->isInternal(internal))) break; |