From 8e0a70be24832b4524233cb7d2ca3b309c390e54 Mon Sep 17 00:00:00 2001 From: George Rimar Date: Thu, 10 Jan 2019 16:24:10 +0000 Subject: [llvm-objdump] - Do not include reserved undefined symbol in -t output. This is https://bugs.llvm.org/show_bug.cgi?id=26892, GNU objdump hides the special symbol entry: SYMBOL TABLE: 000000000000a7e0 l F .text 00000000000003f9 bi_copymodules while llvm-objdump does not: SYMBOL TABLE: 0000000000000000 *UND* 00000000 000000000000a7e0 l F .text 000003f9 bi_copymodules Patch makes the behavior of the llvm-objdump to be consistent with the GNU objdump. Differential revision: https://reviews.llvm.org/D56076 llvm-svn: 350840 --- llvm/tools/llvm-objdump/llvm-objdump.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp') diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index 21359a702c6..b68714e624a 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -2015,7 +2015,14 @@ void llvm::PrintSymbolTable(const ObjectFile *o, StringRef ArchiveName, printCOFFSymbolTable(coff); return; } - for (const SymbolRef &Symbol : o->symbols()) { + + for (auto I = o->symbol_begin(), E = o->symbol_end(); I != E; ++I) { + // Skip printing the special zero symbol when dumping an ELF file. + // This makes the output consistent with the GNU objdump. + if (I == o->symbol_begin() && isa(o)) + continue; + + const SymbolRef &Symbol = *I; Expected AddressOrError = Symbol.getAddress(); if (!AddressOrError) report_error(ArchiveName, o->getFileName(), AddressOrError.takeError(), -- cgit v1.2.3