1# RUN: yaml2obj %s -o %t.o
2# Preserve input to verify it is not modified.
3# RUN: cp %t.o %t-copy.o
4# RUN: llvm-objcopy %t.o -O elf64-x86-64 %t.2.o
5# RUN: llvm-readobj --sections --symbols %t.2.o | FileCheck %s
6# RUN: cmp %t.o %t-copy.o
7
8!ELF
9FileHeader:
10  Class:           ELFCLASS32
11  Data:            ELFDATA2LSB
12  Type:            ET_EXEC
13  Machine:         EM_386
14Sections:
15  - Name:            .text
16    Type:            SHT_PROGBITS
17    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
18    Size:            32
19  - Name:            .data
20    Type:            SHT_PROGBITS
21    Flags:           [ SHF_ALLOC ]
22    Content:         DEADBEEF
23    Size:            16
24Symbols:
25  - Name:     foo
26    Type:     STT_FUNC
27    Section:  .text
28    Value:    16
29    Size:     8
30    Binding:  STB_GLOBAL
31  - Name:     bar
32    Type:     STT_OBJECT
33    Section:  .data
34    Size:     16
35    Binding:  STB_GLOBAL
36
37# CHECK:      Sections [
38# CHECK-NEXT:   Section {
39# CHECK-NEXT:     Index: 0
40# CHECK-NEXT:     Name:  (0)
41# CHECK-NEXT:     Type: SHT_NULL (0x0)
42# CHECK-NEXT:     Flags [ (0x0)
43# CHECK-NEXT:     ]
44# CHECK-NEXT:     Address:
45# CHECK-NEXT:     Offset:
46# CHECK-NEXT:     Size: 0
47# CHECK-NEXT:     Link: 0
48# CHECK-NEXT:     Info: 0
49# CHECK-NEXT:     AddressAlignment: 0
50# CHECK-NEXT:     EntrySize: 0
51# CHECK-NEXT:   }
52# CHECK-NEXT:   Section {
53# CHECK-NEXT:     Index: 1
54# CHECK-NEXT:     Name: .text
55# CHECK-NEXT:     Type: SHT_PROGBITS (0x1)
56# CHECK-NEXT:     Flags [ (0x6)
57# CHECK-NEXT:       SHF_ALLOC (0x2)
58# CHECK-NEXT:       SHF_EXECINSTR (0x4)
59# CHECK-NEXT:     ]
60# CHECK-NEXT:     Address:
61# CHECK-NEXT:     Offset:
62# CHECK-NEXT:     Size: 32
63# CHECK-NEXT:     Link: 0
64# CHECK-NEXT:     Info: 0
65# CHECK-NEXT:     AddressAlignment: 0
66# CHECK-NEXT:     EntrySize: 0
67# CHECK-NEXT:   }
68# CHECK-NEXT:   Section {
69# CHECK-NEXT:     Index: 2
70# CHECK-NEXT:     Name: .data
71# CHECK-NEXT:     Type: SHT_PROGBITS (0x1)
72# CHECK-NEXT:     Flags [ (0x2)
73# CHECK-NEXT:       SHF_ALLOC (0x2)
74# CHECK-NEXT:     ]
75# CHECK-NEXT:     Address:
76# CHECK-NEXT:     Offset:
77# CHECK-NEXT:     Size: 16
78# CHECK-NEXT:     Link: 0
79# CHECK-NEXT:     Info: 0
80# CHECK-NEXT:     AddressAlignment: 0
81# CHECK-NEXT:     EntrySize: 0
82# CHECK-NEXT:   }
83# CHECK-NEXT:   Section {
84# CHECK-NEXT:     Index: 3
85# CHECK-NEXT:     Name: .symtab
86# CHECK-NEXT:     Type: SHT_SYMTAB (0x2)
87# CHECK-NEXT:     Flags [ (0x0)
88# CHECK-NEXT:     ]
89# CHECK-NEXT:     Address:
90# CHECK-NEXT:     Offset:
91# CHECK-NEXT:     Size: 72
92# CHECK-NEXT:     Link: 4
93# CHECK-NEXT:     Info: 1
94# CHECK-NEXT:     AddressAlignment: 8
95# CHECK-NEXT:     EntrySize: 24
96# CHECK-NEXT:   }
97# CHECK-NEXT:   Section {
98# CHECK-NEXT:     Index: 4
99# CHECK-NEXT:     Name: .strtab
100# CHECK-NEXT:     Type: SHT_STRTAB (0x3)
101# CHECK-NEXT:     Flags [ (0x0)
102# CHECK-NEXT:     ]
103# CHECK-NEXT:     Address:
104# CHECK-NEXT:     Offset:
105# CHECK-NEXT:     Size: 9
106# CHECK-NEXT:     Link: 0
107# CHECK-NEXT:     Info: 0
108# CHECK-NEXT:     AddressAlignment: 1
109# CHECK-NEXT:     EntrySize: 0
110# CHECK-NEXT:   }
111# CHECK-NEXT:   Section {
112# CHECK-NEXT:     Index: 5
113# CHECK-NEXT:     Name: .shstrtab
114# CHECK-NEXT:     Type: SHT_STRTAB (0x3)
115# CHECK-NEXT:     Flags [ (0x0)
116# CHECK-NEXT:     ]
117# CHECK-NEXT:     Address:
118# CHECK-NEXT:     Offset:
119# CHECK-NEXT:     Size: 39
120# CHECK-NEXT:     Link: 0
121# CHECK-NEXT:     Info: 0
122# CHECK-NEXT:     AddressAlignment: 1
123# CHECK-NEXT:     EntrySize: 0
124# CHECK-NEXT:   }
125# CHECK-NEXT: ]
126# CHECK-NEXT: Symbols [
127# CHECK-NEXT:   Symbol {
128# CHECK-NEXT:     Name:
129# CHECK-NEXT:     Value: 0x0
130# CHECK-NEXT:     Size: 0
131# CHECK-NEXT:     Binding: Local (0x0)
132# CHECK-NEXT:     Type: None (0x0)
133# CHECK-NEXT:     Other: 0
134# CHECK-NEXT:     Section: Undefined
135# CHECK-NEXT:   }
136# CHECK-NEXT:   Symbol {
137# CHECK-NEXT:     Name: foo
138# CHECK-NEXT:     Value: 0x10
139# CHECK-NEXT:     Size: 8
140# CHECK-NEXT:     Binding: Global (0x1)
141# CHECK-NEXT:     Type: Function (0x2)
142# CHECK-NEXT:     Other: 0
143# CHECK-NEXT:     Section: .text
144# CHECK-NEXT:   }
145# CHECK-NEXT:   Symbol {
146# CHECK-NEXT:     Name: bar
147# CHECK-NEXT:     Value: 0x0
148# CHECK-NEXT:     Size: 16
149# CHECK-NEXT:     Binding: Global (0x1)
150# CHECK-NEXT:     Type: Object (0x1)
151# CHECK-NEXT:     Other: 0
152# CHECK-NEXT:     Section: .data
153# CHECK-NEXT:   }
154# CHECK-NEXT: ]
155