aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-readobj/llvm-readobj.cpp
diff options
context:
space:
mode:
authorGeorge Rimar <grimar@accesssoftek.com>2019-08-17 14:36:40 +0000
committerGeorge Rimar <grimar@accesssoftek.com>2019-08-17 14:36:40 +0000
commitbb56755f153a83387fa6c7fa0a6d7d540da41633 (patch)
treefbff5a5ba4e67a2af5bca0cf4018a59eeafb6af7 /llvm/tools/llvm-readobj/llvm-readobj.cpp
parent50166f81072c8aba7690b0a57e751393732b64e8 (diff)
downloadllvm-bb56755f153a83387fa6c7fa0a6d7d540da41633.zip
llvm-bb56755f153a83387fa6c7fa0a6d7d540da41633.tar.gz
llvm-bb56755f153a83387fa6c7fa0a6d7d540da41633.tar.bz2
[llvm-readobj/llvm-readelf] - Improve/cleanup the error reporting API.
urrently we have the following functions for error reporting: -- LLVM_ATTRIBUTE_NORETURN void reportError(Twine Msg); void reportError(Error Err, StringRef Input); void reportWarning(Twine Msg); void reportWarning(StringRef Input, Error Err); void warn(llvm::Error Err); void error(std::error_code EC); --- Problems are: naming is inconsistent, arguments order is inconsistent, some of the functions looks excessive. After applying this patch we have: --- LLVM_ATTRIBUTE_NORETURN void reportError(Error Err, StringRef Input); LLVM_ATTRIBUTE_NORETURN void reportError(std::error_code EC, StringRef Input); void reportWarning(Error Err, StringRef Input); --- I'd be happy to remove reportError(std::error_code EC, StringRef Input) too, but it is used by COFF heavily. Test cases were updated, they show an improvement introduced. Differential revision: https://reviews.llvm.org/D66286 llvm-svn: 369190
Diffstat (limited to 'llvm/tools/llvm-readobj/llvm-readobj.cpp')
-rw-r--r--llvm/tools/llvm-readobj/llvm-readobj.cpp44
1 files changed, 19 insertions, 25 deletions
diff --git a/llvm/tools/llvm-readobj/llvm-readobj.cpp b/llvm/tools/llvm-readobj/llvm-readobj.cpp
index ec67bd5..8e89ccc 100644
--- a/llvm/tools/llvm-readobj/llvm-readobj.cpp
+++ b/llvm/tools/llvm-readobj/llvm-readobj.cpp
@@ -375,52 +375,46 @@ namespace opts {
namespace llvm {
-LLVM_ATTRIBUTE_NORETURN void reportError(Twine Msg) {
+LLVM_ATTRIBUTE_NORETURN static void error(Twine Msg) {
+ // Flush the standard output to print the error at a
+ // proper place.
fouts().flush();
errs() << "\n";
WithColor::error(errs()) << Msg << "\n";
exit(1);
}
-void reportError(Error Err, StringRef Input) {
+LLVM_ATTRIBUTE_NORETURN void reportError(Error Err, StringRef Input) {
assert(Err);
if (Input == "-")
Input = "<stdin>";
handleAllErrors(createFileError(Input, std::move(Err)),
- [&](const ErrorInfoBase &EI) { reportError(EI.message()); });
+ [&](const ErrorInfoBase &EI) { error(EI.message()); });
+ llvm_unreachable("error() call should never return");
}
-void reportWarning(Twine Msg) {
- fouts().flush();
- errs() << "\n";
- WithColor::warning(errs()) << Msg << "\n";
-}
-
-void reportWarning(StringRef Input, Error Err) {
+void reportWarning(Error Err, StringRef Input) {
+ assert(Err);
if (Input == "-")
Input = "<stdin>";
- warn(createFileError(Input, std::move(Err)));
-}
-void warn(Error Err) {
- handleAllErrors(std::move(Err), [&](const ErrorInfoBase &EI) {
- reportWarning(EI.message());
- });
-}
-
-void error(std::error_code EC) {
- if (!EC)
- return;
- reportError(EC.message());
+ handleAllErrors(createFileError(Input, std::move(Err)),
+ [&](const ErrorInfoBase &EI) {
+ // Flush the standard output to print the warning at a
+ // proper place.
+ fouts().flush();
+ errs() << "\n";
+ WithColor::warning(errs()) << EI.message() << "\n";
+ });
}
-} // namespace llvm
-
-static void reportError(std::error_code EC, StringRef Input) {
+LLVM_ATTRIBUTE_NORETURN void reportError(std::error_code EC, StringRef Input) {
assert(EC != readobj_error::success);
reportError(errorCodeToError(EC), Input);
}
+} // namespace llvm
+
static bool isMipsArch(unsigned Arch) {
switch (Arch) {
case llvm::Triple::mips: