From be954243f4c29842a4ea882a04477881f2770855 Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Sat, 19 Nov 2022 09:58:14 -0800 Subject: [PATCH] Revert "[XCOFF] llvvm-readobj support display symbol table of loader section of xcoff object file." Use of uninitialized value. This reverts commit 037f5c283a2278ef156189be48db0738323206bd. --- llvm/docs/CommandGuide/llvm-readobj.rst | 4 - llvm/include/llvm/Object/XCOFFObjectFile.h | 37 ------ llvm/lib/Object/XCOFFObjectFile.cpp | 28 ----- .../loader-section-invalid-stringtable-offset.test | 38 ------- .../llvm-readobj/XCOFF/loader-section-symbol.test | 124 --------------------- llvm/tools/llvm-readobj/ObjDumper.h | 2 +- llvm/tools/llvm-readobj/Opts.td | 1 - llvm/tools/llvm-readobj/XCOFFDumper.cpp | 104 ++++------------- llvm/tools/llvm-readobj/llvm-readobj.cpp | 7 +- 9 files changed, 27 insertions(+), 318 deletions(-) delete mode 100644 llvm/test/tools/llvm-readobj/XCOFF/loader-section-invalid-stringtable-offset.test delete mode 100644 llvm/test/tools/llvm-readobj/XCOFF/loader-section-symbol.test diff --git a/llvm/docs/CommandGuide/llvm-readobj.rst b/llvm/docs/CommandGuide/llvm-readobj.rst index 6437375..eb1bb93 100644 --- a/llvm/docs/CommandGuide/llvm-readobj.rst +++ b/llvm/docs/CommandGuide/llvm-readobj.rst @@ -338,10 +338,6 @@ The following options are implemented only for the XCOFF file format. Display XCOFF loader section header. -.. option:: --loader-section-symbols - - Display symbol table of loader section. - EXIT STATUS ----------- diff --git a/llvm/include/llvm/Object/XCOFFObjectFile.h b/llvm/include/llvm/Object/XCOFFObjectFile.h index 2becf56..da27fc0 100644 --- a/llvm/include/llvm/Object/XCOFFObjectFile.h +++ b/llvm/include/llvm/Object/XCOFFObjectFile.h @@ -204,10 +204,6 @@ struct LoaderSectionHeader32 { support::big32_t OffsetToImpid; support::ubig32_t LengthOfStrTbl; support::big32_t OffsetToStrTbl; - - uint64_t getOffsetToSymTbl() const { - return NumberOfSymTabEnt == 0 ? 0 : sizeof(LoaderSectionHeader32); - } }; struct LoaderSectionHeader64 { @@ -221,39 +217,6 @@ struct LoaderSectionHeader64 { support::big64_t OffsetToStrTbl; support::big64_t OffsetToSymTbl; support::big64_t OffsetToRelEnt; - - uint64_t getOffsetToSymTbl() const { return OffsetToSymTbl; } -}; - -struct LoaderSectionSymbolEntry32 { - struct NameOffsetInStrTbl { - support::big32_t IsNameInStrTbl; // Zero indicates name in string table. - support::ubig32_t Offset; - }; - - char SymbolName[XCOFF::NameSize]; - support::ubig32_t Value; // The virtual address of the symbol. - support::big16_t SectionNumber; - uint8_t SymbolType; - XCOFF::StorageClass StorageClass; - support::ubig32_t ImportFileID; - support::ubig32_t ParameterTypeCheck; - - Expected - getSymbolName(const LoaderSectionHeader32 *LoaderSecHeader) const; -}; - -struct LoaderSectionSymbolEntry64 { - support::ubig64_t Value; // The virtual address of the symbol. - support::ubig32_t Offset; - support::big16_t SectionNumber; - uint8_t SymbolType; - XCOFF::StorageClass StorageClass; - support::ubig32_t ImportFileID; - support::ubig32_t ParameterTypeCheck; - - Expected - getSymbolName(const LoaderSectionHeader64 *LoaderSecHeader) const; }; template struct ExceptionSectionEntry { diff --git a/llvm/lib/Object/XCOFFObjectFile.cpp b/llvm/lib/Object/XCOFFObjectFile.cpp index 061c47d..c758e35 100644 --- a/llvm/lib/Object/XCOFFObjectFile.cpp +++ b/llvm/lib/Object/XCOFFObjectFile.cpp @@ -89,34 +89,6 @@ uint8_t XCOFFRelocation::getRelocatedLength() const { template struct ExceptionSectionEntry; template struct ExceptionSectionEntry; -template -Expected getLoaderSecSymNameInStrTbl(const T *LoaderSecHeader, - uint64_t Offset) { - if (LoaderSecHeader->LengthOfStrTbl > Offset) - return (reinterpret_cast(LoaderSecHeader) + - LoaderSecHeader->OffsetToStrTbl + Offset); - - return createError("entry with offset 0x" + Twine::utohexstr(Offset) + - " in the loader section's string table with size 0x" + - Twine::utohexstr(LoaderSecHeader->LengthOfStrTbl) + - " is invalid"); -} - -Expected LoaderSectionSymbolEntry32::getSymbolName( - const LoaderSectionHeader32 *LoaderSecHeader32) const { - const NameOffsetInStrTbl *NameInStrTbl = - reinterpret_cast(SymbolName); - if (NameInStrTbl->IsNameInStrTbl != XCOFFSymbolRef::NAME_IN_STR_TBL_MAGIC) - return generateXCOFFFixedNameStringRef(SymbolName); - - return getLoaderSecSymNameInStrTbl(LoaderSecHeader32, NameInStrTbl->Offset); -} - -Expected LoaderSectionSymbolEntry64::getSymbolName( - const LoaderSectionHeader64 *LoaderSecHeader64) const { - return getLoaderSecSymNameInStrTbl(LoaderSecHeader64, Offset); -} - uintptr_t XCOFFObjectFile::getAdvancedSymbolEntryAddress(uintptr_t CurrentAddress, uint32_t Distance) { diff --git a/llvm/test/tools/llvm-readobj/XCOFF/loader-section-invalid-stringtable-offset.test b/llvm/test/tools/llvm-readobj/XCOFF/loader-section-invalid-stringtable-offset.test deleted file mode 100644 index d6cb1d4..0000000 --- a/llvm/test/tools/llvm-readobj/XCOFF/loader-section-invalid-stringtable-offset.test +++ /dev/null @@ -1,38 +0,0 @@ -## Test invalid offset to symbol string table of loader section for --loader-section-symbols option. - -# RUN: yaml2obj %s -o %t_xcoff.o -# RUN: llvm-readobj --loader-section-symbols %t_xcoff.o 2>&1 | FileCheck -DFILE=%t_xcoff.o %s - ---- !XCOFF -FileHeader: - MagicNumber: 0x1DF -Sections: - - Name: .loader - Flags: [ STYP_LOADER ] - SectionData: "0000000100000002000000050000016D00000001000000A40000000c000000506d79696e747661722000028000021105000000000000000000000000000000A2200002840002110a0000000000000000000a66756e63305f5f467600" -## ^------- -Version=1 -## ^------- -NumberOfSymbolEntries=2 -## ^------- -NumberOfRelocationEntries=5 -## ^------- -LengthOfImportFileIDStringTable=365 -## ^------- -NumberOfImportFileIDs=1 -## ^------- -OffsetToImportFileIDs=0xA4 -## ^------- -LengthOfStringTable=12 -## ^------- -OffsetToStringTable=0x050 -## ^--------------- SymbolName=myintvar -## ^------- Value=0x20000280 -## ^--- sectionNumber = 2 -## ^- SymbolType=0x11 -## ^- StorageClass=0x0a -## ^------- ImportFileID=0 -## ^-------ParameterCheckType=0 -## ^-------SymbolZero=0 -## ^-------OffsetToStringTbl=0xA2 (Invalid) -## ^------- Value=20000284 -## ^--- sectionNumber = 2 -## ^- SymbolType=0x11 -## ^- StorageClass=0x0a -## ^------- ImportFileID=0 -## ^-------ParameterCheckType=0 -## ^StringTable - -# CHECK: warning: '[[FILE]]': entry with offset 0xa2 in the loader section's string table with size 0xc is invalid diff --git a/llvm/test/tools/llvm-readobj/XCOFF/loader-section-symbol.test b/llvm/test/tools/llvm-readobj/XCOFF/loader-section-symbol.test deleted file mode 100644 index 6e532df..0000000 --- a/llvm/test/tools/llvm-readobj/XCOFF/loader-section-symbol.test +++ /dev/null @@ -1,124 +0,0 @@ -## Test the --loader-section-symbols option. - -# RUN: yaml2obj --docnum=1 -DSYMNUM=2 %s -o %t_xcoff32.o -# RUN: yaml2obj --docnum=1 -DSYMNUM=4 %s -o %t_xcoff32_invalid.o -# RUN: yaml2obj --docnum=2 %s -o %t_xcoff64.o - -# RUN: llvm-readobj --loader-section-symbols %t_xcoff32.o |\ -# RUN: FileCheck %s --check-prefixes=CHECK32 -# RUN: llvm-readobj --loader-section-symbols %t_xcoff32_invalid.o 2>&1 |\ -# RUN: FileCheck -DFILE=%t_xcoff32_invalid.o %s --check-prefixes=CHECK32,WARN -# RUN: llvm-readobj --loader-section-symbols %t_xcoff64.o |\ -# RUN: FileCheck %s --check-prefixes=CHECK64 - ---- !XCOFF -FileHeader: - MagicNumber: 0x1DF -Sections: - - Name: .loader - Flags: [ STYP_LOADER ] - SectionData: "000000010000000[[SYMNUM]]000000050000016D00000001000000A40000000c000000506d79696e74766172200002800002110500000000000000000000000000000002200002840002110a0000000000000000000a66756e63305f5f467600" -## ^------- -Version=1 -## ^---------------- -NumberOfSymbolEntries=SYMNUM -## ^------- -NumberOfRelocationEntries=5 -## ^------- -LengthOfImportFileIDStringTable=365 -## ^------- -NumberOfImportFileIDs=1 -## ^------- -OffsetToImportFileIDs=0xA4 -## ^------- -LengthOfStringTable=12 -## ^------- -OffsetToStringTable=0x050 -## ^--------------- SymbolName=myintvar -## ^------- Value=0x20000280 -## ^--- sectionNumber = 2 -## ^- SymbolType=0x11 -## ^- StorageClass=0x05 -## ^------- ImportFileID=0 -## ^-------ParameterCheckType=0 -## ^-------SymbolZero=0 -## ^-------OffsetToSymTbl=2 -## ^------- Value=20000284 -## ^--- sectionNumber = 2 -## ^- SymbolType=0x11 -## ^- StorageClass=0x0a -## ^------- ImportFileID=0 -## ^-------ParameterCheckType=0 -## ^StringTable - ---- !XCOFF -FileHeader: - MagicNumber: 0x1F7 -Sections: - - Name: .loader - Flags: [ STYP_LOADER ] - SectionData: "0000000200000002000000050000016D000000010000001200000000000000D000000000000000680000000000000038000000000000008000000001100003000000000200021105000000000000000000000001100003080000000d0002110a000000000000000000096d79696e7476617200000a5f5a3566756e6330760000" -## ^------- -Version=2 -## ^------- -NumberOfSymbolEntries=2 -## ^------- -NumberOfRelocationEntries=5 -## ^------- -LengthOfImportFileIDStringTable=365 -## ^------- -NumberOfImportFileIDs=1 -## ^------- --LengthOfStringTable=0x12 -## ^--------------- -OffsetToImportFileIDs=0xD0 -## ^--------------- -OffsetToStringTable=0x68 -## ^--------------- -OffsetToSymbolTable=0x38 -## ^--------------- -OffsetToRelocationEntries=0x80 -## ^--------------- Value=0x0000000110000300 -## ^------- OffsetToStringTbl=2 -## ^--- sectionNumber = 2 -## ^- SymbolType=0x11 -## ^- StorageClass=0x05 -## ^------- ImportFileID=0 -## ^-------ParameterCheckType=0 -## ^--------------- Value=0x0000000110000308 -## ^------- OffsetToStringTbl= 0x0d -## ^--- sectionNumber = 2 -## ^- SymbolType=0x11 -## ^- StorageClass=0x0a -## ^------- ImportFileID=0 -## ^-------ParameterCheckType=0 -## ^StringTable - -# CHECK32: Loader Section { -# CHECK32-NEXT: Loader Section Symbols { -# CHECK32-NEXT: Symbol { -# CHECK32-NEXT: Name: myintvar -# CHECK32-NEXT: Virtual Address: 0x20000280 -# CHECK32-NEXT: SectionNum: 2 -# CHECK32-NEXT: SymbolType: 0x11 -# CHECK32-NEXT: StorageClass: C_EXTDEF (0x5) -# CHECK32-NEXT: ImportFileID: 0x0 -# CHECK32-NEXT: ParameterTypeCheck: 0 -# CHECK32-NEXT: } -# CHECK32-NEXT: Symbol { -# CHECK32-NEXT: Name: func0__Fv -# CHECK32-NEXT: Virtual Address: 0x20000284 -# CHECK32-NEXT: SectionNum: 2 -# CHECK32-NEXT: SymbolType: 0x11 -# CHECK32-NEXT: StorageClass: C_STRTAG (0xA) -# CHECK32-NEXT: ImportFileID: 0x0 -# CHECK32-NEXT: ParameterTypeCheck: 0 -# CHECK32-NEXT: } -# WARN: warning: '[[FILE]]': The end of the file was unexpectedly encountered -# CHECK32-NEXT: } -# CHECK32-NEXT: } - -# CHECK64: Loader Section { -# CHECK64-NEXT: Loader Section Symbols { -# CHECK64-NEXT: Symbol { -# CHECK64-NEXT: Name: myintvar -# CHECK64-NEXT: Virtual Address: 0x110000300 -# CHECK64-NEXT: SectionNum: 2 -# CHECK64-NEXT: SymbolType: 0x11 -# CHECK64-NEXT: StorageClass: C_EXTDEF (0x5) -# CHECK64-NEXT: ImportFileID: 0x0 -# CHECK64-NEXT: ParameterTypeCheck: 0 -# CHECK64-NEXT: } -# CHECK64-NEXT: Symbol { -# CHECK64-NEXT: Name: _Z5func0v -# CHECK64-NEXT: Virtual Address: 0x110000308 -# CHECK64-NEXT: SectionNum: 2 -# CHECK64-NEXT: SymbolType: 0x11 -# CHECK64-NEXT: StorageClass: C_STRTAG (0xA) -# CHECK64-NEXT: ImportFileID: 0x0 -# CHECK64-NEXT: ParameterTypeCheck: 0 -# CHECK64-NEXT: } -# CHECK64-NEXT: } -# CHECK64-NEXT: } diff --git a/llvm/tools/llvm-readobj/ObjDumper.h b/llvm/tools/llvm-readobj/ObjDumper.h index 4aff9fb..2a6af54 100644 --- a/llvm/tools/llvm-readobj/ObjDumper.h +++ b/llvm/tools/llvm-readobj/ObjDumper.h @@ -158,7 +158,7 @@ public: // Only implement for XCOFF virtual void printAuxiliaryHeader() {} virtual void printExceptionSection() {} - virtual void printLoaderSection(bool PrintHeader, bool PrintSymbolTable) {} + virtual void printLoaderSection(bool PrintHeader) {} // Only implemented for MachO. virtual void printMachODataInCode() { } diff --git a/llvm/tools/llvm-readobj/Opts.td b/llvm/tools/llvm-readobj/Opts.td index 7d0e64a..4f126d6 100644 --- a/llvm/tools/llvm-readobj/Opts.td +++ b/llvm/tools/llvm-readobj/Opts.td @@ -90,7 +90,6 @@ def grp_xcoff : OptionGroup<"kind">, HelpText<"OPTIONS (XCOFF specific)">; def auxiliary_header : FF<"auxiliary-header" , "Display the auxiliary header">, Group; def exception_section : FF<"exception-section" , "Display the exception section entries">, Group; def loader_section_header : FF<"loader-section-header" , "Display the loader section header">, Group; -def loader_section_symbols : FF<"loader-section-symbols" , "Display the loader section symbol table">, Group; def help : FF<"help", "Display this help">; def version : FF<"version", "Display the version">; diff --git a/llvm/tools/llvm-readobj/XCOFFDumper.cpp b/llvm/tools/llvm-readobj/XCOFFDumper.cpp index c03cdd1..9e52f86 100644 --- a/llvm/tools/llvm-readobj/XCOFFDumper.cpp +++ b/llvm/tools/llvm-readobj/XCOFFDumper.cpp @@ -40,7 +40,7 @@ public: void printNeededLibraries() override; void printStringTable() override; void printExceptionSection() override; - void printLoaderSection(bool PrintHeader, bool PrintSymbolTable) override; + void printLoaderSection(bool PrintHeader) override; ScopedPrinter &getScopedPrinter() const { return W; } @@ -68,9 +68,6 @@ private: void printAuxiliaryHeader(const XCOFFAuxiliaryHeader32 *AuxHeader); void printAuxiliaryHeader(const XCOFFAuxiliaryHeader64 *AuxHeader); void printLoaderSectionHeader(uintptr_t LoaderSectAddr); - void printLoaderSectionSymbols(uintptr_t LoaderSectAddr); - template - void printLoaderSectionSymbolsHelper(uintptr_t LoaderSectAddr); const XCOFFObjectFile &Obj; }; } // anonymous namespace @@ -138,7 +135,7 @@ void XCOFFDumper::printSectionHeaders() { printSectionHeaders(Obj.sections32()); } -void XCOFFDumper::printLoaderSection(bool PrintHeader, bool PrintSymbolTable) { +void XCOFFDumper::printLoaderSection(bool PrintHeader) { DictScope DS(W, "Loader Section"); Expected LoaderSectionAddrOrError = Obj.getSectionFileOffsetToRawData(XCOFF::STYP_LOADER); @@ -148,18 +145,13 @@ void XCOFFDumper::printLoaderSection(bool PrintHeader, bool PrintSymbolTable) { } uintptr_t LoaderSectionAddr = LoaderSectionAddrOrError.get(); - if (LoaderSectionAddr == 0) - return; - W.indent(); if (PrintHeader) printLoaderSectionHeader(LoaderSectionAddr); - - if (PrintSymbolTable) - printLoaderSectionSymbols(LoaderSectionAddr); - - // TODO: Need to add printing of relocation entry of loader section later. + // TODO: Need to print symbol table, relocation entry of loader section later. // For example: + // if (PrintSymbolTable) + // printLoaderSectionSymbolTable(); // if (PrintRelocation) // printLoaderSectionRelocationEntry(); W.unindent(); @@ -193,73 +185,6 @@ void XCOFFDumper::printLoaderSectionHeader(uintptr_t LoaderSectionAddr) { } } -const EnumEntry SymStorageClass[] = { -#define ECase(X) \ - { #X, XCOFF::X } - ECase(C_NULL), ECase(C_AUTO), ECase(C_EXT), ECase(C_STAT), - ECase(C_REG), ECase(C_EXTDEF), ECase(C_LABEL), ECase(C_ULABEL), - ECase(C_MOS), ECase(C_ARG), ECase(C_STRTAG), ECase(C_MOU), - ECase(C_UNTAG), ECase(C_TPDEF), ECase(C_USTATIC), ECase(C_ENTAG), - ECase(C_MOE), ECase(C_REGPARM), ECase(C_FIELD), ECase(C_BLOCK), - ECase(C_FCN), ECase(C_EOS), ECase(C_FILE), ECase(C_LINE), - ECase(C_ALIAS), ECase(C_HIDDEN), ECase(C_HIDEXT), ECase(C_BINCL), - ECase(C_EINCL), ECase(C_INFO), ECase(C_WEAKEXT), ECase(C_DWARF), - ECase(C_GSYM), ECase(C_LSYM), ECase(C_PSYM), ECase(C_RSYM), - ECase(C_RPSYM), ECase(C_STSYM), ECase(C_TCSYM), ECase(C_BCOMM), - ECase(C_ECOML), ECase(C_ECOMM), ECase(C_DECL), ECase(C_ENTRY), - ECase(C_FUN), ECase(C_BSTAT), ECase(C_ESTAT), ECase(C_GTLS), - ECase(C_STTLS), ECase(C_EFCN) -#undef ECase -}; - -template -void XCOFFDumper::printLoaderSectionSymbolsHelper(uintptr_t LoaderSectionAddr) { - const LoaderSectionHeader *LoadSecHeader = - reinterpret_cast(LoaderSectionAddr); - const LoaderSectionSymbolEntry *LoadSecSymEntPtr = - reinterpret_cast( - LoaderSectionAddr + uintptr_t(LoadSecHeader->getOffsetToSymTbl())); - - for (uint32_t i = 0; i < LoadSecHeader->NumberOfSymTabEnt; - ++i, ++LoadSecSymEntPtr) { - if (Error E = Binary::checkOffset( - Obj.getMemoryBufferRef(), - LoaderSectionAddr + (i * sizeof(LoaderSectionSymbolEntry)), - sizeof(LoaderSectionSymbolEntry))) { - reportUniqueWarning(std::move(E)); - return; - } - - Expected SymbolNameOrErr = - LoadSecSymEntPtr->getSymbolName(LoadSecHeader); - if (!SymbolNameOrErr) { - reportUniqueWarning(SymbolNameOrErr.takeError()); - return; - } - - DictScope DS(W, "Symbol"); - W.printString("Name", SymbolNameOrErr.get()); - W.printHex("Virtual Address", LoadSecSymEntPtr->Value); - W.printNumber("SectionNum", LoadSecSymEntPtr->SectionNumber); - W.printHex("SymbolType", LoadSecSymEntPtr->SymbolType); - W.printEnum("StorageClass", - static_cast(LoadSecSymEntPtr->StorageClass), - makeArrayRef(SymStorageClass)); - W.printHex("ImportFileID", LoadSecSymEntPtr->ImportFileID); - W.printNumber("ParameterTypeCheck", LoadSecSymEntPtr->ParameterTypeCheck); - } -} - -void XCOFFDumper::printLoaderSectionSymbols(uintptr_t LoaderSectionAddr) { - DictScope DS(W, "Loader Section Symbols"); - if (Obj.is64Bit()) - printLoaderSectionSymbolsHelper(LoaderSectionAddr); - else - printLoaderSectionSymbolsHelper(LoaderSectionAddr); -} - template void XCOFFDumper::printExceptionSectionEntry(const T &ExceptionSectEnt) const { if (ExceptionSectEnt.getReason()) @@ -543,6 +468,25 @@ void XCOFFDumper::printSectAuxEntForDWARF(const T *AuxEntPtr) { makeArrayRef(SymAuxType)); } +const EnumEntry SymStorageClass[] = { +#define ECase(X) \ + { #X, XCOFF::X } + ECase(C_NULL), ECase(C_AUTO), ECase(C_EXT), ECase(C_STAT), + ECase(C_REG), ECase(C_EXTDEF), ECase(C_LABEL), ECase(C_ULABEL), + ECase(C_MOS), ECase(C_ARG), ECase(C_STRTAG), ECase(C_MOU), + ECase(C_UNTAG), ECase(C_TPDEF), ECase(C_USTATIC), ECase(C_ENTAG), + ECase(C_MOE), ECase(C_REGPARM), ECase(C_FIELD), ECase(C_BLOCK), + ECase(C_FCN), ECase(C_EOS), ECase(C_FILE), ECase(C_LINE), + ECase(C_ALIAS), ECase(C_HIDDEN), ECase(C_HIDEXT), ECase(C_BINCL), + ECase(C_EINCL), ECase(C_INFO), ECase(C_WEAKEXT), ECase(C_DWARF), + ECase(C_GSYM), ECase(C_LSYM), ECase(C_PSYM), ECase(C_RSYM), + ECase(C_RPSYM), ECase(C_STSYM), ECase(C_TCSYM), ECase(C_BCOMM), + ECase(C_ECOML), ECase(C_ECOMM), ECase(C_DECL), ECase(C_ENTRY), + ECase(C_FUN), ECase(C_BSTAT), ECase(C_ESTAT), ECase(C_GTLS), + ECase(C_STTLS), ECase(C_EFCN) +#undef ECase +}; + static StringRef GetSymbolValueName(XCOFF::StorageClass SC) { switch (SC) { case XCOFF::C_EXT: diff --git a/llvm/tools/llvm-readobj/llvm-readobj.cpp b/llvm/tools/llvm-readobj/llvm-readobj.cpp index ac1d9d9..fadf144 100644 --- a/llvm/tools/llvm-readobj/llvm-readobj.cpp +++ b/llvm/tools/llvm-readobj/llvm-readobj.cpp @@ -163,7 +163,6 @@ static bool COFFTLSDirectory; // XCOFF specific options. static bool XCOFFAuxiliaryHeader; static bool XCOFFLoaderSectionHeader; -static bool XCOFFLoaderSectionSymbol; static bool XCOFFExceptionSection; OutputStyleTy Output = OutputStyleTy::LLVM; @@ -306,7 +305,6 @@ static void parseOptions(const opt::InputArgList &Args) { // XCOFF specific options. opts::XCOFFAuxiliaryHeader = Args.hasArg(OPT_auxiliary_header); opts::XCOFFLoaderSectionHeader = Args.hasArg(OPT_loader_section_header); - opts::XCOFFLoaderSectionSymbol = Args.hasArg(OPT_loader_section_symbols); opts::XCOFFExceptionSection = Args.hasArg(OPT_exception_section); opts::InputFilenames = Args.getAllArgValues(OPT_INPUT); @@ -512,9 +510,8 @@ static void dumpObject(ObjectFile &Obj, ScopedPrinter &Writer, } if (Obj.isXCOFF()) { - if (opts::XCOFFLoaderSectionHeader || opts::XCOFFLoaderSectionSymbol) - Dumper->printLoaderSection(opts::XCOFFLoaderSectionHeader, - opts::XCOFFLoaderSectionSymbol); + if (opts::XCOFFLoaderSectionHeader) + Dumper->printLoaderSection(opts::XCOFFLoaderSectionHeader); if (opts::XCOFFExceptionSection) Dumper->printExceptionSection(); -- 2.7.4