sections.test 3.47 KB
## Check how llvm-readobj prints sections with --sections.
## We test the --sections flag for llvm-readelf in the gnu-sections.test.

# RUN: yaml2obj --docnum=1 %s -o %t64
# RUN: llvm-readobj --sections %t64 | FileCheck %s --check-prefixes=ELF,ELF64
# RUN: yaml2obj --docnum=2 %s -o %t32
# RUN: llvm-readobj --sections %t32 | FileCheck %s --check-prefixes=ELF,ELF32

## Check flag aliases produce identical output.
# RUN: llvm-readobj --sections %t64 > %t64.llvm.sections
# RUN: llvm-readobj -S %t64 > %t64.llvm.upper.s
# RUN: cmp %t64.llvm.sections %t64.llvm.upper.s
# RUN: llvm-readobj -s %t64 > %t64.llvm.lower.s
# RUN: cmp %t64.llvm.sections %t64.llvm.lower.s
# RUN: llvm-readobj --section-headers %t64 > %t64.llvm.section-headers
# RUN: cmp %t64.llvm.sections %t64.llvm.section-headers

# RUN: llvm-readobj --sections %t32 > %t32.llvm.sections
# RUN: llvm-readobj -S %t32 > %t32.llvm.upper.s
# RUN: cmp %t32.llvm.sections %t32.llvm.upper.s
# RUN: llvm-readobj -s %t32 > %t32.llvm.lower.s
# RUN: cmp %t32.llvm.sections %t32.llvm.lower.s
# RUN: llvm-readobj --section-headers %t32 > %t32.llvm.section-headers
# RUN: cmp %t32.llvm.sections %t32.llvm.section-headers

# ELF:      Sections [
# ELF-NEXT:   Section {
# ELF-NEXT:     Index: 0
# ELF-NEXT:     Name:  (0)
# ELF-NEXT:     Type: SHT_NULL (0x0)
# ELF-NEXT:     Flags [ (0x0)
# ELF-NEXT:     ]
# ELF-NEXT:     Address: 0x0
# ELF-NEXT:     Offset: 0x0
# ELF-NEXT:     Size: 0
# ELF-NEXT:     Link: 0
# ELF-NEXT:     Info: 0
# ELF-NEXT:     AddressAlignment: 0
# ELF-NEXT:     EntrySize: 0
# ELF-NEXT:   }
# ELF-NEXT:   Section {
# ELF-NEXT:     Index: 1
# ELF-NEXT:     Name: .foo (1)
# ELF-NEXT:     Type: SHT_PROGBITS (0x1)
# ELF-NEXT:     Flags [ (0x3)
# ELF-NEXT:       SHF_ALLOC (0x2)
# ELF-NEXT:       SHF_WRITE (0x1)
# ELF-NEXT:     ]
# ELF-NEXT:     Address: 0x2
# ELF64-NEXT:   Offset: 0x41
# ELF32-NEXT:   Offset: 0x37
# ELF-NEXT:     Size: 3
# ELF-NEXT:     Link: 4
# ELF-NEXT:     Info: 1
# ELF-NEXT:     AddressAlignment: 5
# ELF-NEXT:     EntrySize: 6
# ELF-NEXT:   }
# ELF-NEXT:   Section {
# ELF-NEXT:     Index: 2
# ELF-NEXT:     Name: .strtab (16)
# ELF-NEXT:     Type: SHT_STRTAB (0x3)
# ELF-NEXT:     Flags [ (0x0)
# ELF-NEXT:     ]
# ELF-NEXT:     Address: 0x0
# ELF64-NEXT:   Offset: 0x44
# ELF32-NEXT:   Offset: 0x3A
# ELF-NEXT:     Size: 1
# ELF-NEXT:     Link: 0
# ELF-NEXT:     Info: 0
# ELF-NEXT:     AddressAlignment: 1
# ELF-NEXT:     EntrySize: 0
# ELF-NEXT:   }
# ELF-NEXT:   Section {
# ELF-NEXT:     Index: 3
# ELF-NEXT:     Name: .shstrtab (6)
# ELF-NEXT:     Type: SHT_STRTAB (0x3)
# ELF-NEXT:     Flags [ (0x0)
# ELF-NEXT:     ]
# ELF-NEXT:     Address: 0x0
# ELF64-NEXT:   Offset: 0x45
# ELF32-NEXT:   Offset: 0x3B
# ELF-NEXT:     Size: 24
# ELF-NEXT:     Link: 0
# ELF-NEXT:     Info: 0
# ELF-NEXT:     AddressAlignment: 1
# ELF-NEXT:     EntrySize: 0
# ELF-NEXT:   }
# ELF-NEXT: ]

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_X86_64
Sections:
  - Name:         .foo
    Type:         SHT_PROGBITS
    Info:         1
    Address:      0x2
    Size:         0x3
    Flags:        [ SHF_WRITE, SHF_ALLOC ]
    Link:         4
    AddressAlign: 5
    EntSize:      6

--- !ELF
FileHeader:
  Class:   ELFCLASS32
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_386
Sections:
  - Name:         .foo
    Type:         SHT_PROGBITS
    Info:         1
    Address:      0x2
    Size:         0x3
    Flags:        [ SHF_WRITE, SHF_ALLOC ]
    Link:         4
    AddressAlign: 5
    EntSize:      6