diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2021-11-19 20:06:13 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2021-11-19 20:06:13 +0000 |
commit | c0981da47d5696fe36474fcf86b4ce03ae3ff818 (patch) | |
tree | f42add1021b9f2ac6a69ac7cf6c4499962739a45 /llvm/tools/llvm-readobj/llvm-readobj.cpp | |
parent | 344a3780b2e33f6ca763666c380202b18aab72a3 (diff) |
Diffstat (limited to 'llvm/tools/llvm-readobj/llvm-readobj.cpp')
-rw-r--r-- | llvm/tools/llvm-readobj/llvm-readobj.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/llvm/tools/llvm-readobj/llvm-readobj.cpp b/llvm/tools/llvm-readobj/llvm-readobj.cpp index 0b49f03f4275..a598e2c28832 100644 --- a/llvm/tools/llvm-readobj/llvm-readobj.cpp +++ b/llvm/tools/llvm-readobj/llvm-readobj.cpp @@ -23,6 +23,7 @@ #include "WindowsResourceDumper.h" #include "llvm/DebugInfo/CodeView/GlobalTypeTableBuilder.h" #include "llvm/DebugInfo/CodeView/MergingTypeTableBuilder.h" +#include "llvm/MC/TargetRegistry.h" #include "llvm/Object/Archive.h" #include "llvm/Object/COFFImportFile.h" #include "llvm/Object/ELFObjectFile.h" @@ -44,7 +45,6 @@ #include "llvm/Support/InitLLVM.h" #include "llvm/Support/Path.h" #include "llvm/Support/ScopedPrinter.h" -#include "llvm/Support/TargetRegistry.h" #include "llvm/Support/WithColor.h" using namespace llvm; @@ -65,7 +65,7 @@ enum ID { #include "Opts.inc" #undef PREFIX -static const opt::OptTable::Info InfoTable[] = { +const opt::OptTable::Info InfoTable[] = { #define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ HELPTEXT, METAVAR, VALUES) \ { \ @@ -149,6 +149,9 @@ static bool COFFLoadConfig; static bool COFFResources; static bool COFFTLSDirectory; +// XCOFF specific options. +static bool XCOFFAuxiliaryHeader; + OutputStyleTy Output = OutputStyleTy::LLVM; static std::vector<std::string> InputFilenames; } // namespace opts @@ -157,7 +160,7 @@ static StringRef ToolName; namespace llvm { -LLVM_ATTRIBUTE_NORETURN static void error(Twine Msg) { +[[noreturn]] static void error(Twine Msg) { // Flush the standard output to print the error at a // proper place. fouts().flush(); @@ -165,7 +168,7 @@ LLVM_ATTRIBUTE_NORETURN static void error(Twine Msg) { exit(1); } -LLVM_ATTRIBUTE_NORETURN void reportError(Error Err, StringRef Input) { +[[noreturn]] void reportError(Error Err, StringRef Input) { assert(Err); if (Input == "-") Input = "<stdin>"; @@ -268,6 +271,9 @@ static void parseOptions(const opt::InputArgList &Args) { opts::COFFResources = Args.hasArg(OPT_coff_resources); opts::COFFTLSDirectory = Args.hasArg(OPT_coff_tls_directory); + // XCOFF specific options. + opts::XCOFFAuxiliaryHeader = Args.hasArg(OPT_auxiliary_header); + opts::InputFilenames = Args.getAllArgValues(OPT_INPUT); } @@ -343,6 +349,9 @@ static void dumpObject(ObjectFile &Obj, ScopedPrinter &Writer, if (opts::FileHeaders) Dumper->printFileHeaders(); + if (Obj.isXCOFF() && opts::XCOFFAuxiliaryHeader) + Dumper->printAuxiliaryHeader(); + // This is only used for ELF currently. In some cases, when an object is // corrupt (e.g. truncated), we can't dump anything except the file header. if (!ContentErrString.empty()) @@ -577,6 +586,7 @@ int main(int argc, char *argv[]) { if (opts::All) { opts::FileHeaders = true; + opts::XCOFFAuxiliaryHeader = true; opts::ProgramHeaders = true; opts::SectionHeaders = true; opts::Symbols = true; @@ -595,6 +605,7 @@ int main(int argc, char *argv[]) { if (opts::Headers) { opts::FileHeaders = true; + opts::XCOFFAuxiliaryHeader = true; opts::ProgramHeaders = true; opts::SectionHeaders = true; } |