[llvm-readelf] Don't suppress static symbol table with --dyn-symbols + --symbols
authorJames Henderson <jh7370@my.bristol.ac.uk>
Wed, 23 Jan 2019 16:15:39 +0000 (16:15 +0000)
committerJames Henderson <jh7370@my.bristol.ac.uk>
Wed, 23 Jan 2019 16:15:39 +0000 (16:15 +0000)
commit21ed868390fee0faca2fb86d52ec41ec65101bd6
tree288973118bf4842ad0927ceddc89ce2393014fde
parentac5b775522c602324f6dd4ec877d54ef198ebfe0
[llvm-readelf] Don't suppress static symbol table with --dyn-symbols + --symbols

In r287786, a bug was introduced into llvm-readelf where it didn't print
the static symbol table if both --symbols and --dyn-symbols were
specified, even if there was no dynamic symbol table. This is obviously
incorrect.

This patch fixes this issue, by delegating the decision of which symbol
tables should be printed to the final dumper, rather than trying to
decide in the command-line option handling layer. The decision was made
to follow the approach taken in this patch because the LLVM style dumper
uses a different order to the original GNU style behaviour (and GNU
readelf) for ELF output. Other approaches resulted in behaviour changes
for other dumpers which felt wrong. In particular, I wanted to avoid
changing the order of the output for --symbols --dyn-symbols for LLVM
style, keep what is emitted by --symbols unchanged for all dumpers, and
avoid having different orders of .dynsym and .symtab dumping for GNU
"--symbols" and "--symbols --dyn-symbols".

Reviewed by: grimar, rupprecht

Differential Revision: https://reviews.llvm.org/D57016

llvm-svn: 351960
llvm/test/tools/llvm-readobj/demangle.test
llvm/test/tools/llvm-readobj/gnu-symbols.test
llvm/tools/llvm-readobj/COFFDumper.cpp
llvm/tools/llvm-readobj/ELFDumper.cpp
llvm/tools/llvm-readobj/MachODumper.cpp
llvm/tools/llvm-readobj/ObjDumper.h
llvm/tools/llvm-readobj/WasmDumper.cpp
llvm/tools/llvm-readobj/llvm-readobj.cpp
llvm/tools/llvm-readobj/llvm-readobj.h