aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-readobj/llvm-readobj.cpp
diff options
context:
space:
mode:
authorGeorge Rimar <grimar@accesssoftek.com>2019-07-16 11:07:30 +0000
committerGeorge Rimar <grimar@accesssoftek.com>2019-07-16 11:07:30 +0000
commita1370877d7f4621a4243f0ae1c22dbbfd6483f35 (patch)
treebcbc53402c46f52eb5bfa278887ed64a0465e2e8 /llvm/tools/llvm-readobj/llvm-readobj.cpp
parenta5dc9c98352c396c0114403486fbd47e092d084a (diff)
downloadllvm-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.cpp13
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));
}