## Test various details of llvm-objdump -h (--section-headers).

## Check leading and trailing whitespace for full lines.

# RUN: yaml2obj %s --docnum=1 -o %t-whitespace.o
# RUN: llvm-objdump -h --show-lma %t-whitespace.o \
# RUN:   | FileCheck %s --check-prefix=WHITESPACE --strict-whitespace
# RUN: llvm-objdump -h %t-whitespace.o \
# RUN:   | FileCheck %s --check-prefix=WHITESPACE-NO-LMA --strict-whitespace

# WHITESPACE:      {{^}}Sections:{{$}}
# WHITESPACE-NEXT: {{^}}Idx Name          Size     VMA              LMA              Type{{$}}
# WHITESPACE-NEXT: {{^}}  0               00000000 0000000000000000 0000000000000000 {{$}}
# WHITESPACE-NEXT: {{^}}  1 .text         00000000 0000000000000000 0000000000000000 TEXT{{$}}
# WHITESPACE-NEXT: {{^}}  2 .data         00000000 0000000000000000 0000000000000000 DATA{{$}}
# WHITESPACE-NEXT: {{^}}  3 .bss          00000000 0000000000000000 0000000000000000 BSS{{$}}
# WHITESPACE-NEXT: {{^}}  4 .other        00000000 0000000000000000 0000000000000000 {{$}}

# WHITESPACE-NO-LMA:      {{^}}Sections:{{$}}
# WHITESPACE-NO-LMA-NEXT: {{^}}Idx Name          Size     VMA              Type{{$}}
# WHITESPACE-NO-LMA-NEXT: {{^}}  0               00000000 0000000000000000 {{$}}
# WHITESPACE-NO-LMA-NEXT: {{^}}  1 .text         00000000 0000000000000000 TEXT{{$}}
# WHITESPACE-NO-LMA-NEXT: {{^}}  2 .data         00000000 0000000000000000 DATA{{$}}
# WHITESPACE-NO-LMA-NEXT: {{^}}  3 .bss          00000000 0000000000000000 BSS{{$}}
# WHITESPACE-NO-LMA-NEXT: {{^}}  4 .other        00000000 0000000000000000 {{$}}

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
Sections:
  - Name:  .text
    Type:  SHT_PROGBITS
    Flags: [SHF_ALLOC, SHF_EXECINSTR]
  - Name:  .data
    Type:  SHT_PROGBITS
    Flags: [SHF_ALLOC, SHF_WRITE]
  - Name:  .bss
    Type:  SHT_NOBITS
    Flags: [SHF_ALLOC, SHF_WRITE]
  - Name:  .other
    Type:  SHT_REL

## The name field automatically expands past the default 13 columns when a
## section name is longer than that.
## Note: check with and without --show-lma to make sure resizing happens in
## both cases.

# RUN: yaml2obj %s --docnum=2 -o %t-name13chars.o
# RUN: llvm-objdump -h --show-lma %t-name13chars.o \
# RUN:   | FileCheck %s --check-prefix=NAME-13 --strict-whitespace
# RUN: llvm-objdump -h %t-name13chars.o \
# RUN:   | FileCheck %s --check-prefix=NAME-13 --strict-whitespace

# NAME-13:      Sections:
# NAME-13-NEXT: {{^}}Idx Name          Size
# NAME-13-NEXT: {{^}}  0               00000000
# NAME-13-NEXT: {{^}}  1 .foo          00000000
# NAME-13-NEXT: {{^}}  2 .thirteenchar 00000000
# NAME-13-NEXT: {{^}}  3 .bar          00000000

## Including a section with a name of length 14 expands the width of the "Name"
## column.
# RUN: yaml2obj %s --docnum=3 -o %t-name14chars.o
# RUN: llvm-objdump -h --show-lma %t-name14chars.o \
# RUN:   | FileCheck %s --check-prefix=NAME-14 --strict-whitespace
# RUN: llvm-objdump -h %t-name14chars.o \
# RUN:   | FileCheck %s --check-prefix=NAME-14 --strict-whitespace

# NAME-14:      Sections:
# NAME-14-NEXT: {{^}}Idx Name           Size
# NAME-14-NEXT: {{^}}  0                00000000
# NAME-14-NEXT: {{^}}  1 .foo           00000000
# NAME-14-NEXT: {{^}}  2 .fourteenchars 00000000
# NAME-14-NEXT: {{^}}  3 .bar           00000000

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
Sections:
  - Name: .foo
    Type: SHT_PROGBITS
  - Name: .thirteenchar
    Type: SHT_PROGBITS
  - Name: .bar
    Type: SHT_PROGBITS

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
Sections:
  - Name: .foo
    Type: SHT_PROGBITS
  - Name: .fourteenchars
    Type: SHT_PROGBITS
  - Name: .bar
    Type: SHT_PROGBITS

## Check that objdump -h only prints the necessary amount of bytes for
## addresses.

# RUN: yaml2obj %s --docnum=4 -o %t-32bit.o
# RUN: yaml2obj %s --docnum=5 -o %t-64bit.o

# RUN: llvm-objdump -h --show-lma %t-32bit.o \
# RUN:   | FileCheck %s --check-prefix=32 --strict-whitespace
# 32: {{^}}Idx Name          Size     VMA      LMA      Type{{$}}
# 32: {{^}}  1 .foo          00000000 00000400 00000400 TEXT{{$}}

# RUN: llvm-objdump -h %t-32bit.o \
# RUN:   | FileCheck %s --check-prefix=32-NO-LMA --strict-whitespace
# 32-NO-LMA: {{^}}Idx Name          Size     VMA      Type{{$}}
# 32-NO-LMA: {{^}}  1 .foo          00000000 00000400 TEXT{{$}}

# RUN: llvm-objdump -h --show-lma %t-64bit.o \
# RUN:   | FileCheck %s --check-prefix=64 --strict-whitespace
# 64: {{^}}Idx Name          Size     VMA              LMA              Type{{$}}
# 64: {{^}}  1 .foo          00000000 0000000000000400 0000000000000400 TEXT{{$}}

# RUN: llvm-objdump -h %t-64bit.o \
# RUN:   | FileCheck %s --check-prefix=64-NO-LMA --strict-whitespace
# 64-NO-LMA: {{^}}Idx Name          Size     VMA              Type{{$}}
# 64-NO-LMA: {{^}}  1 .foo          00000000 0000000000000400 TEXT{{$}}

--- !ELF
FileHeader:
  Class:   ELFCLASS32
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_386
Sections:
  - Name:    .foo
    Type:    SHT_PROGBITS
    Flags:   [SHF_ALLOC, SHF_EXECINSTR]
    Address: 0x400

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
Sections:
  - Name:    .foo
    Type:    SHT_PROGBITS
    Flags:   [SHF_ALLOC, SHF_EXECINSTR]
    Address: 0x400
