diff options
author | zhijian <zhijian@ca.ibm.com> | 2021-10-26 10:40:25 -0400 |
---|---|---|
committer | zhijian <zhijian@ca.ibm.com> | 2021-10-26 10:40:25 -0400 |
commit | 158083f0de033dec4f4f9a68f558da6e68d30c35 (patch) | |
tree | ceb874ffffa9b9b3aeae868071cb2dcfdbbbd740 /llvm/tools/llvm-readobj/llvm-readobj.cpp | |
parent | 025988ded6b2a57022dbf9775f35a1a933584bfa (diff) | |
download | llvm-158083f0de033dec4f4f9a68f558da6e68d30c35.zip llvm-158083f0de033dec4f4f9a68f558da6e68d30c35.tar.gz llvm-158083f0de033dec4f4f9a68f558da6e68d30c35.tar.bz2 |
[AIX][XCOFF] parsing xcoff object file auxiliary header
Summary:
The patch supports parsing the xcoff object file auxiliary header with llvm-readobj with option "auxiliary-headers"
the format of auxiliary header as
https://www.ibm.com/support/knowledgecenter/en/ssw_aix_72/filesreference/XCOFF.html#XCOFF__fyovh386shar
Reviewers: James Henderson, Jason Liu, Hubert Tong, Esme yi, Sean Fertile.
Differential Revision: https://reviews.llvm.org/D82549
Diffstat (limited to 'llvm/tools/llvm-readobj/llvm-readobj.cpp')
-rw-r--r-- | llvm/tools/llvm-readobj/llvm-readobj.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/tools/llvm-readobj/llvm-readobj.cpp b/llvm/tools/llvm-readobj/llvm-readobj.cpp index 001dace..a598e2c 100644 --- a/llvm/tools/llvm-readobj/llvm-readobj.cpp +++ b/llvm/tools/llvm-readobj/llvm-readobj.cpp @@ -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 @@ -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; } |