[llvm] [llvm-objdump] Print out xcoff load section of xcoff object file with option private-headers (PR #121226)
James Henderson via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 16 01:51:54 PST 2025
================
@@ -262,6 +264,45 @@ void XCOFFDumper::printAuxiliaryHeader(
AuxSize, *AuxHeader);
}
+void XCOFFDumper::printLoaderSectionHeader() {
+ Expected<uintptr_t> LoaderSectionAddrOrError =
+ Obj.getSectionFileOffsetToRawData(XCOFF::STYP_LOADER);
+ if (!LoaderSectionAddrOrError) {
+ reportUniqueWarning(LoaderSectionAddrOrError.takeError());
+ return;
+ }
+ uintptr_t LoaderSectionAddr = LoaderSectionAddrOrError.get();
+
+ if (LoaderSectionAddr == 0)
+ return;
+
+ auto PrintLoadSecHeaderCommon = [&](const auto *LDHeader) {
+ printNumber("Version:", LDHeader->Version);
+ printNumber("NumberOfSymbolEntries:", LDHeader->NumberOfSymTabEnt);
+ printNumber("NumberOfRelocationEntries:", LDHeader->NumberOfRelTabEnt);
+ printNumber("LengthOfImportFileIDStringTable:",
+ LDHeader->LengthOfImpidStrTbl);
+ printNumber("NumberOfImportFileIDs:", LDHeader->NumberOfImpid);
+ printHex("OffsetToImportFileIDs:", LDHeader->OffsetToImpid);
+ printNumber("LengthOfStringTable:", LDHeader->LengthOfStrTbl);
+ printHex("OffsetToStringTable:", LDHeader->OffsetToStrTbl);
+ };
+
+ Width = 35;
+ outs() << "\n---Loader Section Header:\n";
+ if (Obj.is64Bit()) {
+ const LoaderSectionHeader64 *LoaderSec64 =
+ reinterpret_cast<const LoaderSectionHeader64 *>(LoaderSectionAddr);
----------------
jh7370 wrote:
I've seen issues fixed in LLVM because of alignment problems, flagged by build bots. The issue I filed was just one possible example. Another example: https://github.com/llvm/llvm-project/commit/8fbe1e760224cc4941f1f014d1a3c7480f2e0e7c.
https://github.com/llvm/llvm-project/pull/121226
More information about the llvm-commits
mailing list