## Test various details of llvm-objdump -h/--section-headers for XCOFF.

## Check the -h/--section-headers option prints section headers correctly.
# RUN: yaml2obj %s --docnum=1 -o %t-basic.o
# RUN: llvm-objdump --section-headers %t-basic.o | FileCheck %s

# CHECK:      Sections:
# CHECK-NEXT: Idx Name          Size     VMA      Type
# CHECK-NEXT:   0 .text         00000008 00000008 TEXT
# CHECK-NEXT:   1 .data         00000004 00000000 DATA
# CHECK-NEXT:   2 .bss          00000000 00000010 BSS
# CHECK-NEXT:   3 .tdata        00000004 00000000 DATA
# CHECK-NEXT:   4 .tbss         00000000 00000000 BSS
# CHECK-NEXT:   5 .dwline       00000046 00000000 DEBUG
# CHECK-NEXT:   6 .debug        00000046 00000000 DEBUG

--- !XCOFF
FileHeader:
  MagicNumber: 0x1DF
Sections:
  - Name:    .text
    Address: 0x8
    Size:    0x8
    Flags:   [ STYP_TEXT ]
  - Name:    .data
    Size:    0x4
    Flags:   [ STYP_DATA ]
  - Name:    .bss
    Size:    0x0
    Address: 0x10
    Flags:   [ STYP_BSS ]
  - Name:    .tdata
    Size:    0x4
    Flags:   [ STYP_TDATA ]
  - Name:    .tbss
    Size:    0x0
    Flags:   [ STYP_TBSS ]
  - Name:    .dwline
    Size:    0x46
    Flags:   [ STYP_DWARF ]
  - Name:    .debug
    Size:    0x46
    Flags:   [ STYP_DEBUG ]

## Check the -h/--section-headers option prints long section names.
# RUN: yaml2obj %s --docnum=2 -o %t-longname.o
# RUN: llvm-objdump --section-headers %t-longname.o \
# RUN:   | FileCheck %s --check-prefix=LONG

# LONG:      Sections:
# LONG-NEXT: Idx Name          Size     VMA      Type
# LONG-NEXT:   0 .dwarnge      00000004 00000000
# LONG-NEXT:   1 .dwpbnms      00000004 00000000
# LONG-NEXT:   2 .dwpbtyp      00000004 00000000

--- !XCOFF
FileHeader:
  MagicNumber: 0x1DF
Sections:
  - Name:  .dwarnge
    Size:  0x4
    Flags: [ STYP_PAD ]
  - Name:  .dwpbnms
    Size:  0x4
    Flags: [ STYP_PAD ]
  - Name:  .dwpbtyp
    Size:  0x4
    Flags: [ STYP_PAD ]

## Truncate the file to end before the section header table ends.
# RUN: yaml2obj %s --docnum=3 -o %t-truncate.o
# RUN: %python -c "with open('%/t-truncate.o', 'r+b') as input: input.truncate(20)"
# RUN: not llvm-objdump --section-headers %t-truncate.o 2>&1 \
# RUN:  | FileCheck --check-prefix=ERROR %s

# ERROR: The end of the file was unexpectedly encountered: section headers with offset 0x14 and size 0x28 go past the end of the file

--- !XCOFF
FileHeader:
  MagicNumber: 0x1DF
Sections:
  - Name:  .text
    Size:  0x8
    Flags: [ STYP_TEXT ]
