diff options
author | George Rimar <grimar@accesssoftek.com> | 2019-07-16 11:07:30 +0000 |
---|---|---|
committer | George Rimar <grimar@accesssoftek.com> | 2019-07-16 11:07:30 +0000 |
commit | a1370877d7f4621a4243f0ae1c22dbbfd6483f35 (patch) | |
tree | bcbc53402c46f52eb5bfa278887ed64a0465e2e8 /llvm/tools/llvm-readobj/llvm-readobj.cpp | |
parent | a5dc9c98352c396c0114403486fbd47e092d084a (diff) | |
download | llvm-a1370877d7f4621a4243f0ae1c22dbbfd6483f35.zip llvm-a1370877d7f4621a4243f0ae1c22dbbfd6483f35.tar.gz llvm-a1370877d7f4621a4243f0ae1c22dbbfd6483f35.tar.bz2 |
[Object/llvm-readelf/llvm-readobj] - Improve error reporting when e_shstrndx is broken.
When e_shstrndx is broken, it is impossible to get a section name.
In this patch I improved the error message we show and
added tests for Object and for llvm-readelf/llvm-readobj
Message was changed in two places:
1) llvm-readelf/llvm-readobj previously used a code from Object/ELF.h,
now they have a modified version of it (it has less checks and allows
dumping broken things).
2) Code in Object/ELF.h is still used for generic cases.
Differential revision: https://reviews.llvm.org/D64714
llvm-svn: 366203
Diffstat (limited to 'llvm/tools/llvm-readobj/llvm-readobj.cpp')
-rw-r--r-- | llvm/tools/llvm-readobj/llvm-readobj.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/llvm/tools/llvm-readobj/llvm-readobj.cpp b/llvm/tools/llvm-readobj/llvm-readobj.cpp index b6d0493..1bd5bb7 100644 --- a/llvm/tools/llvm-readobj/llvm-readobj.cpp +++ b/llvm/tools/llvm-readobj/llvm-readobj.cpp @@ -371,11 +371,18 @@ namespace opts { namespace llvm { LLVM_ATTRIBUTE_NORETURN void reportError(Twine Msg) { + fouts().flush(); errs() << "\n"; WithColor::error(errs()) << Msg << "\n"; exit(1); } +void reportError(StringRef Input, Error Err) { + if (Input == "-") + Input = "<stdin>"; + error(createFileError(Input, std::move(Err))); +} + void reportWarning(Twine Msg) { fouts().flush(); errs() << "\n"; @@ -403,12 +410,6 @@ void error(std::error_code EC) { } // namespace llvm -static void reportError(StringRef Input, Error Err) { - if (Input == "-") - Input = "<stdin>"; - error(createFileError(Input, std::move(Err))); -} - static void reportError(StringRef Input, std::error_code EC) { reportError(Input, errorCodeToError(EC)); } |