1db4ac5a6SEsme-Yi## Test various details of llvm-objdump -h/--section-headers for XCOFF. 26d026c89SFangrui Song 3db4ac5a6SEsme-Yi## Check the -h/--section-headers option prints section headers correctly. 4db4ac5a6SEsme-Yi# RUN: yaml2obj %s --docnum=1 -o %t-basic.o 5db4ac5a6SEsme-Yi# RUN: llvm-objdump --section-headers %t-basic.o | FileCheck %s 66d026c89SFangrui Song 7db4ac5a6SEsme-Yi# CHECK: Sections: 8db4ac5a6SEsme-Yi# CHECK-NEXT: Idx Name Size VMA Type 9db4ac5a6SEsme-Yi# CHECK-NEXT: 0 .text 00000008 00000008 TEXT 10db4ac5a6SEsme-Yi# CHECK-NEXT: 1 .data 00000004 00000000 DATA 11db4ac5a6SEsme-Yi# CHECK-NEXT: 2 .bss 00000000 00000010 BSS 12db4ac5a6SEsme-Yi# CHECK-NEXT: 3 .tdata 00000004 00000000 DATA 13*b5abaea3Sstephenpeckham# CHECK-NEXT: 4 .tbss 00000000 00000004 BSS 14c8e980abSEsme-Yi# CHECK-NEXT: 5 .dwline 00000046 00000000 DEBUG 15c8e980abSEsme-Yi# CHECK-NEXT: 6 .debug 00000046 00000000 DEBUG 16db4ac5a6SEsme-Yi 17db4ac5a6SEsme-Yi--- !XCOFF 18db4ac5a6SEsme-YiFileHeader: 19db4ac5a6SEsme-Yi MagicNumber: 0x1DF 20db4ac5a6SEsme-YiSections: 21db4ac5a6SEsme-Yi - Name: .text 22db4ac5a6SEsme-Yi Address: 0x8 23db4ac5a6SEsme-Yi Size: 0x8 24db4ac5a6SEsme-Yi Flags: [ STYP_TEXT ] 25db4ac5a6SEsme-Yi - Name: .data 26db4ac5a6SEsme-Yi Size: 0x4 27db4ac5a6SEsme-Yi Flags: [ STYP_DATA ] 28db4ac5a6SEsme-Yi - Name: .bss 29db4ac5a6SEsme-Yi Size: 0x0 30db4ac5a6SEsme-Yi Address: 0x10 31db4ac5a6SEsme-Yi Flags: [ STYP_BSS ] 32db4ac5a6SEsme-Yi - Name: .tdata 33db4ac5a6SEsme-Yi Size: 0x4 34db4ac5a6SEsme-Yi Flags: [ STYP_TDATA ] 35db4ac5a6SEsme-Yi - Name: .tbss 36db4ac5a6SEsme-Yi Size: 0x0 37db4ac5a6SEsme-Yi Flags: [ STYP_TBSS ] 38c8e980abSEsme-Yi - Name: .dwline 39c8e980abSEsme-Yi Size: 0x46 40c8e980abSEsme-Yi Flags: [ STYP_DWARF ] 41c8e980abSEsme-Yi - Name: .debug 42c8e980abSEsme-Yi Size: 0x46 43c8e980abSEsme-Yi Flags: [ STYP_DEBUG ] 44db4ac5a6SEsme-Yi 45db4ac5a6SEsme-Yi## Check the -h/--section-headers option prints long section names. 46db4ac5a6SEsme-Yi# RUN: yaml2obj %s --docnum=2 -o %t-longname.o 47db4ac5a6SEsme-Yi# RUN: llvm-objdump --section-headers %t-longname.o \ 48db4ac5a6SEsme-Yi# RUN: | FileCheck %s --check-prefix=LONG 49db4ac5a6SEsme-Yi 50db4ac5a6SEsme-Yi# LONG: Sections: 51db4ac5a6SEsme-Yi# LONG-NEXT: Idx Name Size VMA Type 52db4ac5a6SEsme-Yi# LONG-NEXT: 0 .dwarnge 00000004 00000000 53db4ac5a6SEsme-Yi# LONG-NEXT: 1 .dwpbnms 00000004 00000000 54db4ac5a6SEsme-Yi# LONG-NEXT: 2 .dwpbtyp 00000004 00000000 55db4ac5a6SEsme-Yi 56db4ac5a6SEsme-Yi--- !XCOFF 57db4ac5a6SEsme-YiFileHeader: 58db4ac5a6SEsme-Yi MagicNumber: 0x1DF 59db4ac5a6SEsme-YiSections: 60db4ac5a6SEsme-Yi - Name: .dwarnge 61db4ac5a6SEsme-Yi Size: 0x4 62db4ac5a6SEsme-Yi Flags: [ STYP_PAD ] 63db4ac5a6SEsme-Yi - Name: .dwpbnms 64db4ac5a6SEsme-Yi Size: 0x4 65db4ac5a6SEsme-Yi Flags: [ STYP_PAD ] 66db4ac5a6SEsme-Yi - Name: .dwpbtyp 67db4ac5a6SEsme-Yi Size: 0x4 68db4ac5a6SEsme-Yi Flags: [ STYP_PAD ] 69db4ac5a6SEsme-Yi 70db4ac5a6SEsme-Yi## Truncate the file to end before the section header table ends. 71db4ac5a6SEsme-Yi# RUN: yaml2obj %s --docnum=3 -o %t-truncate.o 72699231abSEsme-Yi# RUN: %python -c "with open('%/t-truncate.o', 'r+b') as input: input.truncate(20)" 73db4ac5a6SEsme-Yi# RUN: not llvm-objdump --section-headers %t-truncate.o 2>&1 \ 74db4ac5a6SEsme-Yi# RUN: | FileCheck --check-prefix=ERROR %s 756d026c89SFangrui Song 76a00ff716SEsme-Yi# ERROR: The end of the file was unexpectedly encountered: section headers with offset 0x14 and size 0x28 go past the end of the file 776d026c89SFangrui Song 78db4ac5a6SEsme-Yi--- !XCOFF 79db4ac5a6SEsme-YiFileHeader: 80db4ac5a6SEsme-Yi MagicNumber: 0x1DF 81db4ac5a6SEsme-YiSections: 82db4ac5a6SEsme-Yi - Name: .text 83db4ac5a6SEsme-Yi Size: 0x8 84db4ac5a6SEsme-Yi Flags: [ STYP_TEXT ] 85