xref: /llvm-project/llvm/test/tools/llvm-readobj/ELF/sections.test (revision d4dcb55c7050fd908af2378fa551078d859d994f)
1## Check how llvm-readobj prints sections with --sections.
2## We test the --sections flag for llvm-readelf in the gnu-sections.test.
3
4# RUN: yaml2obj %s -o %t64
5# RUN: llvm-readobj --sections %t64 | FileCheck %s --check-prefixes=ELF,ELF64
6# RUN: yaml2obj -DBITS=32 %s -o %t32
7# RUN: llvm-readobj --sections %t32 | FileCheck %s --check-prefixes=ELF,ELF32
8
9## Check flag aliases produce identical output.
10# RUN: llvm-readobj --sections %t64 > %t64.llvm.sections
11# RUN: llvm-readobj -S %t64 > %t64.llvm.upper.s
12# RUN: cmp %t64.llvm.sections %t64.llvm.upper.s
13# RUN: llvm-readobj --section-headers %t64 > %t64.llvm.section-headers
14# RUN: cmp %t64.llvm.sections %t64.llvm.section-headers
15
16# RUN: llvm-readobj --sections %t32 > %t32.llvm.sections
17# RUN: llvm-readobj -S %t32 > %t32.llvm.upper.s
18# RUN: cmp %t32.llvm.sections %t32.llvm.upper.s
19# RUN: llvm-readobj --section-headers %t32 > %t32.llvm.section-headers
20# RUN: cmp %t32.llvm.sections %t32.llvm.section-headers
21
22# ELF:      Sections [
23# ELF-NEXT:   Section {
24# ELF-NEXT:     Index: 0
25# ELF-NEXT:     Name:  (0)
26# ELF-NEXT:     Type: SHT_NULL (0x0)
27# ELF-NEXT:     Flags [ (0x0)
28# ELF-NEXT:     ]
29# ELF-NEXT:     Address: 0x0
30# ELF-NEXT:     Offset: 0x0
31# ELF-NEXT:     Size: 0
32# ELF-NEXT:     Link: 0
33# ELF-NEXT:     Info: 0
34# ELF-NEXT:     AddressAlignment: 0
35# ELF-NEXT:     EntrySize: 0
36# ELF-NEXT:   }
37# ELF-NEXT:   Section {
38# ELF-NEXT:     Index: 1
39# ELF-NEXT:     Name: .foo (1)
40# ELF-NEXT:     Type: SHT_PROGBITS (0x1)
41# ELF-NEXT:     Flags [ (0x3)
42# ELF-NEXT:       SHF_ALLOC (0x2)
43# ELF-NEXT:       SHF_WRITE (0x1)
44# ELF-NEXT:     ]
45# ELF-NEXT:     Address: 0x2
46# ELF64-NEXT:   Offset: 0x41
47# ELF32-NEXT:   Offset: 0x37
48# ELF-NEXT:     Size: 3
49# ELF-NEXT:     Link: 4
50# ELF-NEXT:     Info: 1
51# ELF-NEXT:     AddressAlignment: 5
52# ELF-NEXT:     EntrySize: 6
53# ELF-NEXT:   }
54# ELF-NEXT:   Section {
55# ELF-NEXT:     Index: 2
56# ELF-NEXT:     Name: .strtab (16)
57# ELF-NEXT:     Type: SHT_STRTAB (0x3)
58# ELF-NEXT:     Flags [ (0x0)
59# ELF-NEXT:     ]
60# ELF-NEXT:     Address: 0x0
61# ELF64-NEXT:   Offset: 0x44
62# ELF32-NEXT:   Offset: 0x3A
63# ELF-NEXT:     Size: 1
64# ELF-NEXT:     Link: 0
65# ELF-NEXT:     Info: 0
66# ELF-NEXT:     AddressAlignment: 1
67# ELF-NEXT:     EntrySize: 0
68# ELF-NEXT:   }
69# ELF-NEXT:   Section {
70# ELF-NEXT:     Index: 3
71# ELF-NEXT:     Name: .shstrtab (6)
72# ELF-NEXT:     Type: SHT_STRTAB (0x3)
73# ELF-NEXT:     Flags [ (0x0)
74# ELF-NEXT:     ]
75# ELF-NEXT:     Address: 0x0
76# ELF64-NEXT:   Offset: 0x45
77# ELF32-NEXT:   Offset: 0x3B
78# ELF-NEXT:     Size: 24
79# ELF-NEXT:     Link: 0
80# ELF-NEXT:     Info: 0
81# ELF-NEXT:     AddressAlignment: 1
82# ELF-NEXT:     EntrySize: 0
83# ELF-NEXT:   }
84# ELF-NEXT: ]
85
86--- !ELF
87FileHeader:
88  Class: ELFCLASS[[BITS=64]]
89  Data:  ELFDATA2LSB
90  Type:  ET_REL
91Sections:
92  - Name:         .foo
93    Type:         SHT_PROGBITS
94    Info:         1
95    Address:      0x2
96    Size:         0x3
97    Flags:        [ SHF_WRITE, SHF_ALLOC ]
98    Link:         4
99    AddressAlign: 5
100    EntSize:      6
101