[llvm] be95424 - Revert "[XCOFF] llvvm-readobj support display symbol table of loader section of xcoff object file."

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Sat Nov 19 09:59:05 PST 2022


Author: Vitaly Buka
Date: 2022-11-19T09:58:14-08:00
New Revision: be954243f4c29842a4ea882a04477881f2770855

URL: https://github.com/llvm/llvm-project/commit/be954243f4c29842a4ea882a04477881f2770855
DIFF: https://github.com/llvm/llvm-project/commit/be954243f4c29842a4ea882a04477881f2770855.diff

LOG: Revert "[XCOFF] llvvm-readobj support display symbol table of loader section of xcoff object file."

Use of uninitialized value.

This reverts commit 037f5c283a2278ef156189be48db0738323206bd.

Added: 
    

Modified: 
    llvm/docs/CommandGuide/llvm-readobj.rst
    llvm/include/llvm/Object/XCOFFObjectFile.h
    llvm/lib/Object/XCOFFObjectFile.cpp
    llvm/tools/llvm-readobj/ObjDumper.h
    llvm/tools/llvm-readobj/Opts.td
    llvm/tools/llvm-readobj/XCOFFDumper.cpp
    llvm/tools/llvm-readobj/llvm-readobj.cpp

Removed: 
    llvm/test/tools/llvm-readobj/XCOFF/loader-section-invalid-stringtable-offset.test
    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 64373755fdf31..eb1bb933eccaf 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 2becf56c2079d..da27fc0b52a64 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<StringRef>
-  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<StringRef>
-  getSymbolName(const LoaderSectionHeader64 *LoaderSecHeader) const;
 };
 
 template <typename AddressType> struct ExceptionSectionEntry {

diff  --git a/llvm/lib/Object/XCOFFObjectFile.cpp b/llvm/lib/Object/XCOFFObjectFile.cpp
index 061c47d3eb56d..c758e3508fd89 100644
--- a/llvm/lib/Object/XCOFFObjectFile.cpp
+++ b/llvm/lib/Object/XCOFFObjectFile.cpp
@@ -89,34 +89,6 @@ uint8_t XCOFFRelocation<AddressType>::getRelocatedLength() const {
 template struct ExceptionSectionEntry<support::ubig32_t>;
 template struct ExceptionSectionEntry<support::ubig64_t>;
 
-template <typename T>
-Expected<StringRef> getLoaderSecSymNameInStrTbl(const T *LoaderSecHeader,
-                                                uint64_t Offset) {
-  if (LoaderSecHeader->LengthOfStrTbl > Offset)
-    return (reinterpret_cast<const char *>(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<StringRef> LoaderSectionSymbolEntry32::getSymbolName(
-    const LoaderSectionHeader32 *LoaderSecHeader32) const {
-  const NameOffsetInStrTbl *NameInStrTbl =
-      reinterpret_cast<const NameOffsetInStrTbl *>(SymbolName);
-  if (NameInStrTbl->IsNameInStrTbl != XCOFFSymbolRef::NAME_IN_STR_TBL_MAGIC)
-    return generateXCOFFFixedNameStringRef(SymbolName);
-
-  return getLoaderSecSymNameInStrTbl(LoaderSecHeader32, NameInStrTbl->Offset);
-}
-
-Expected<StringRef> 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 d6cb1d4f9e711..0000000000000
--- 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 6e532dfbf2feb..0000000000000
--- 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 4aff9fb7a3d91..2a6af54eb14a1 100644
--- a/llvm/tools/llvm-readobj/ObjDumper.h
+++ b/llvm/tools/llvm-readobj/ObjDumper.h
@@ -158,7 +158,7 @@ class ObjDumper {
   // 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 7d0e64ad42c04..4f126d673c462 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<grp_xcoff>;
 def exception_section : FF<"exception-section" , "Display the exception section entries">, Group<grp_xcoff>;
 def loader_section_header : FF<"loader-section-header" , "Display the loader section header">, Group<grp_xcoff>;
-def loader_section_symbols : FF<"loader-section-symbols" , "Display the loader section symbol table">, Group<grp_xcoff>;
 
 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 c03cdd14c0e75..9e52f86a08fc9 100644
--- a/llvm/tools/llvm-readobj/XCOFFDumper.cpp
+++ b/llvm/tools/llvm-readobj/XCOFFDumper.cpp
@@ -40,7 +40,7 @@ class XCOFFDumper : public ObjDumper {
   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 @@ class XCOFFDumper : public ObjDumper {
   void printAuxiliaryHeader(const XCOFFAuxiliaryHeader32 *AuxHeader);
   void printAuxiliaryHeader(const XCOFFAuxiliaryHeader64 *AuxHeader);
   void printLoaderSectionHeader(uintptr_t LoaderSectAddr);
-  void printLoaderSectionSymbols(uintptr_t LoaderSectAddr);
-  template <typename LoaderSectionSymbolEntry, typename LoaderSectionHeader>
-  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<uintptr_t> 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<XCOFF::StorageClass> 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 <typename LoaderSectionSymbolEntry, typename LoaderSectionHeader>
-void XCOFFDumper::printLoaderSectionSymbolsHelper(uintptr_t LoaderSectionAddr) {
-  const LoaderSectionHeader *LoadSecHeader =
-      reinterpret_cast<const LoaderSectionHeader *>(LoaderSectionAddr);
-  const LoaderSectionSymbolEntry *LoadSecSymEntPtr =
-      reinterpret_cast<LoaderSectionSymbolEntry *>(
-          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<StringRef> 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<uint8_t>(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<LoaderSectionSymbolEntry64,
-                                    LoaderSectionHeader64>(LoaderSectionAddr);
-  else
-    printLoaderSectionSymbolsHelper<LoaderSectionSymbolEntry32,
-                                    LoaderSectionHeader32>(LoaderSectionAddr);
-}
-
 template <typename T>
 void XCOFFDumper::printExceptionSectionEntry(const T &ExceptionSectEnt) const {
   if (ExceptionSectEnt.getReason())
@@ -543,6 +468,25 @@ void XCOFFDumper::printSectAuxEntForDWARF(const T *AuxEntPtr) {
                 makeArrayRef(SymAuxType));
 }
 
+const EnumEntry<XCOFF::StorageClass> 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 ac1d9d9d1b3a0..fadf1445b76dd 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();


        


More information about the llvm-commits mailing list