[llvm] [llvm-objdump] Implement decoding auxiliary header for xcoff with llvm-objdump --private-headers (PR #105682)
James Henderson via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 21 01:06:45 PDT 2024
================
@@ -0,0 +1,102 @@
+## Test that `the llvm-objdump --private-headers` prints out the auxiliary header of XCOFF object file.
+# RUN: yaml2obj %s -o %t1
+# RUN: llvm-objdump --private-headers %t1 | \
+# RUN: FileCheck %s --check-prefixes=CHECK32,COMMON --match-full-lines --strict-whitespace
+# RUN: yaml2obj %s -DMAGIC=0x1F7 -DFLAG64=0x2 -o %t2
+# RUN: llvm-objdump --private-headers %t2 | \
+# RUN: FileCheck %s --check-prefixes=CHECK64,COMMON --match-full-lines --strict-whitespace
+
+--- !XCOFF
+FileHeader:
+ MagicNumber: [[MAGIC=0x1DF]]
+AuxiliaryHeader:
+ Magic: 0x10B
+ Version: 0x1
+ TextSectionSize: 0x8
+ DataSectionSize: 0x9
+ BssSectionSize: 0x10
+ EntryPointAddr: 0x1111
+ TextStartAddr: 0x2222
+ DataStartAddr: 0x3333
+ TOCAnchorAddr: 0x4444
+ SecNumOfEntryPoint: 1
+ SecNumOfText: 2
+ SecNumOfData: 3
+ SecNumOfTOC: 4
+ SecNumOfLoader: 5
+ SecNumOfBSS: 6
+ MaxAlignOfText: 0x7
+ MaxAlignOfData: 0x3
+ ModuleType: 0x1
+ TextPageSize: 0x1
+ DataPageSize: 0x1
+ StackPageSize: 0x1
+ SecNumOfTData: 7
+ SecNumOfTBSS: 8
+ FlagAndTDataAlignment: 0x1
+ Flag: [[FLAG64=<none>]]
+Sections:
+ - Flags: [ STYP_TEXT ]
+ SectionData: "1232"
+ - Flags: [ STYP_DATA ]
+ SectionData: "5678"
+ - Flags: [ STYP_BSS ]
+ SectionData: "9101"
+ - Flags: [ STYP_TDATA ]
+ SectionData: "1112"
+ - Flags: [ STYP_TBSS ]
+ SectionData: "1314"
+
+# COMMON:---Auxiliary Header:
+# COMMON-NEXT:Magic: 0x10b
+# COMMON-NEXT:Version: 0x1
+# CHECK32-NEXT:Size of .text section: 0x8
+# CHECK32-NEXT:Size of .data section: 0x9
+# CHECK32-NEXT:Size of .bss section: 0x10
+# CHECK32-NEXT:Entry point address: 0x1111
+# CHECK64-NEXT:Reserved for debugger: 0x0
+# COMMON-NEXT:.text section start address: 0x2222
+# COMMON-NEXT:.data section start address: 0x3333
+# COMMON-NEXT:TOC anchor address: 0x4444
+# COMMON-NEXT:Section number of entryPoint: 1
+# COMMON-NEXT:Section number of .text: 2
+# COMMON-NEXT:Section number of .data: 3
+# COMMON-NEXT:Section number of TOC: 4
+# COMMON-NEXT:Section number of loader data: 5
+# COMMON-NEXT:Section number of .bss: 6
+# COMMON-NEXT:Maxium alignment of .text: 0x7
+# COMMON-NEXT:Maxium alignment of .data: 0x3
+# COMMON-NEXT:Module type: 0x0
+# COMMON-NEXT:CPU type of objects: 0x1
+# CHECK32-NEXT:Maximum stack size: 0x0
+# CHECK32-NEXT:Maximum data size: 0x0
+# CHECK32-NEXT:Reserved for debugger: 0x0
+# COMMON-NEXT:Text page size: 0x1
+# COMMON-NEXT:Data page size: 0x1
+# COMMON-NEXT:Stack page size: 0x1
+# COMMON-NEXT:Flag: 0x0
+# COMMON-NEXT:Alignment of thread-local storage: 0x1
+# CHECK64-NEXT:Size of .text section: 0x8
+# CHECK64-NEXT:Size of .data section: 0x9
+# CHECK64-NEXT:Size of .bss section: 0x10
+# CHECK64-NEXT:Entry point address: 0x1111
+# CHECK64-NEXT:Maximum stack size: 0x0
+# CHECK64-NEXT:Maximum data size: 0x0
+# COMMON-NEXT:Section number for .tdata: 7
+# COMMON-NEXT:Section number for .tbss: 8
+# CHECK64-NEXT:Additional flags 64-bit XCOFF: 0x2
+
+## Test how llvm-objdump behaves when the auxiliary header of the XCOFF object file contains a partial field.
+# RUN: cp %t1 %t1_err1
+# RUN: python -c "with open(r'%t1_err1', 'r+b') as input: input.seek(17); input.write(b'\x45'); input.seek(4); input.write(b'\x00')"
----------------
jh7370 wrote:
The problem is likely that you're calling `python` without using the `%python` substitution, here and below. Take a look at carefully at how other tests use `python` (e.g. https://github.com/llvm/llvm-project/blob/ba5676cf91f91bbddfacae06c036cf79af0f2088/llvm/test/tools/llvm-readobj/basic.test#L29)
https://github.com/llvm/llvm-project/pull/105682
More information about the llvm-commits
mailing list