[llvm-readobj/libObject] - Introduce a custom warning handler for `ELFFile<ELFT>...
commitc5899d0ed496489a55fbe255c0f9143489d42f31
authorGeorge Rimar <grimar@accesssoftek.com>
Thu, 8 Aug 2019 07:17:35 +0000 (8 07:17 +0000)
committerGeorge Rimar <grimar@accesssoftek.com>
Thu, 8 Aug 2019 07:17:35 +0000 (8 07:17 +0000)
tree329162b54f75aa68aa0fb9f52c9dd8b81be99831
parentea08aee23ed5a1d075e656c3b08f6cbe1964a65b
[llvm-readobj/libObject] - Introduce a custom warning handler for `ELFFile<ELFT>` methods.

Currently, we have a code duplication in llvm-readobj which was introduced in D63266.
The duplication was introduced to allow llvm-readobj to dump the partially
broken object. Methods in ELFFile<ELFT> perform a strict validation of the inputs,
what is itself good, but not for dumper tools, that might want to dump the information,
even if some pieces are broken/unexpected.

This patch introduces a warning handler which can be passed to ELFFile<ELFT> methods
and can allow skipping the non-critical errors when needed/possible.

For demonstration, I removed the duplication from llvm-readobj and implemented a warning using
the new custom warning handler. It also deduplicates the strings printed, making the output less verbose.

Differential revision: https://reviews.llvm.org/D65515

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@368260 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Object/ELF.h
test/Object/invalid.test
test/tools/llvm-readobj/elf-wrong-shstrtab-type.test
tools/llvm-readobj/ELFDumper.cpp
tools/llvm-readobj/llvm-readobj.cpp
tools/llvm-readobj/llvm-readobj.h