[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / tools / llvm-objcopy / MachO / add-multiple-sections.test
blob2b6c12e8ec9716e5d0b557aa2109d94d3a86eea1
1 ## This test verifies that llvm-objcopy can add multiple sections to a Mach-O binary.
3 # RUN: yaml2obj %s -o %t
4 # RUN: echo -n FOOabcdefg > %t.foo.data
5 # RUN: echo -n BARabcdefg > %t.bar.data
7 ## Case 1: Add a new section twice into an existing segment.
8 # RUN: llvm-objcopy --add-section __TEXT,__foo=%t.foo.data %t %t.foo.1
9 # RUN: llvm-objcopy --add-section __TEXT,__bar=%t.bar.data %t.foo.1 %t.foo.bar.1
10 # RUN: llvm-readobj --sections --section-data %t.foo.bar.1 \
11 # RUN:   | FileCheck %s -check-prefix=CASE1
13 ## Case 2: Add two new sections into an existing segment.
14 # RUN: llvm-objcopy --add-section __TEXT,__foo=%t.foo.data --add-section __TEXT,__bar=%t.bar.data %t %t.foo.bar.2
15 # RUN: llvm-readobj --sections --section-data %t.foo.bar.2 \
16 # RUN:   | FileCheck %s -check-prefix=CASE1
18 ## Case 3: Add two new sections into two different segments.
19 # RUN: llvm-objcopy --add-section __FOO,__foo=%t.foo.data --add-section __BAR,__bar=%t.bar.data %t %t.foo.bar.3
20 # RUN: llvm-readobj --sections --section-data %t.foo.bar.3 \
21 # RUN:   | FileCheck %s -check-prefix=CASE3
23 --- !mach-o
24 FileHeader:
25   magic:           0xFEEDFACF
26   cputype:         0x01000007
27   cpusubtype:      0x00000003
28   filetype:        0x00000001
29   ncmds:           1
30   sizeofcmds:      152
31   flags:           0x00002000
32   reserved:        0x00000000
33 LoadCommands:
34   - cmd:             LC_SEGMENT_64
35     cmdsize:         152
36     segname:         __TEXT
37     vmaddr:          0
38     vmsize:          4
39     fileoff:         184
40     filesize:        4
41     maxprot:         7
42     initprot:        7
43     nsects:          1
44     flags:           0
45     Sections:
46       - sectname:        __text
47         segname:         __TEXT
48         addr:            0x0000000000000000
49         content:         'AABBCCDD'
50         size:            4
51         offset:          184
52         align:           0
53         reloff:          0x00000000
54         nreloc:          0
55         flags:           0x80000400
56         reserved1:       0x00000000
57         reserved2:       0x00000000
58         reserved3:       0x00000000
60 # CASE1:        Sections [
61 # CASE1-NEXT:    Section {
62 # CASE1-NEXT:      Index: 0
63 # CASE1-NEXT:      Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00)
64 # CASE1-NEXT:      Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
65 # CASE1-NEXT:      Address: 0x0
66 # CASE1-NEXT:      Size: 0x4
67 # CASE1-NEXT:      Offset: 344
68 # CASE1-NEXT:      Alignment: 0
69 # CASE1-NEXT:      RelocationOffset: 0x0
70 # CASE1-NEXT:      RelocationCount: 0
71 # CASE1-NEXT:      Type: Regular (0x0)
72 # CASE1-NEXT:      Attributes [ (0x800004)
73 # CASE1-NEXT:        PureInstructions (0x800000)
74 # CASE1-NEXT:        SomeInstructions (0x4)
75 # CASE1-NEXT:      ]
76 # CASE1-NEXT:      Reserved1: 0x0
77 # CASE1-NEXT:      Reserved2: 0x0
78 # CASE1-NEXT:      Reserved3: 0x0
79 # CASE1-NEXT:      SectionData (
80 # CASE1-NEXT:        0000: AABBCCDD                             |....|
81 # CASE1-NEXT:      )
82 # CASE1-NEXT:    }
83 # CASE1-NEXT:    Section {
84 # CASE1-NEXT:      Index: 1
85 # CASE1-NEXT:      Name: __foo (5F 5F 66 6F 6F 00 00 00 00 00 00 00 00 00 00 00)
86 # CASE1-NEXT:      Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
87 # CASE1-NEXT:      Address: 0x4
88 # CASE1-NEXT:      Size: 0xA
89 # CASE1-NEXT:      Offset: 348
90 # CASE1-NEXT:      Alignment: 0
91 # CASE1-NEXT:      RelocationOffset: 0x0
92 # CASE1-NEXT:      RelocationCount: 0
93 # CASE1-NEXT:      Type: Regular (0x0)
94 # CASE1-NEXT:      Attributes [ (0x0)
95 # CASE1-NEXT:      ]
96 # CASE1-NEXT:      Reserved1: 0x0
97 # CASE1-NEXT:      Reserved2: 0x0
98 # CASE1-NEXT:      Reserved3: 0x0
99 # CASE1-NEXT:      SectionData (
100 # CASE1-NEXT:        0000: 464F4F61 62636465 6667               |FOOabcdefg|
101 # CASE1-NEXT:      )
102 # CASE1-NEXT:    }
103 # CASE1-NEXT:    Section {
104 # CASE1-NEXT:      Index: 2
105 # CASE1-NEXT:      Name: __bar (5F 5F 62 61 72 00 00 00 00 00 00 00 00 00 00 00)
106 # CASE1-NEXT:      Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
107 # CASE1-NEXT:      Address: 0xE
108 # CASE1-NEXT:      Size: 0xA
109 # CASE1-NEXT:      Offset: 358
110 # CASE1-NEXT:      Alignment: 0
111 # CASE1-NEXT:      RelocationOffset: 0x0
112 # CASE1-NEXT:      RelocationCount: 0
113 # CASE1-NEXT:      Type: Regular (0x0)
114 # CASE1-NEXT:      Attributes [ (0x0)
115 # CASE1-NEXT:      ]
116 # CASE1-NEXT:      Reserved1: 0x0
117 # CASE1-NEXT:      Reserved2: 0x0
118 # CASE1-NEXT:      Reserved3: 0x0
119 # CASE1-NEXT:      SectionData (
120 # CASE1-NEXT:        0000: 42415261 62636465 6667               |BARabcdefg|
121 # CASE1-NEXT:      )
122 # CASE1-NEXT:    }
123 # CASE1-NEXT:  ]
125 # CASE3:        Sections [
126 # CASE3-NEXT:    Section {
127 # CASE3-NEXT:      Index: 0
128 # CASE3-NEXT:      Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00)
129 # CASE3-NEXT:      Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
130 # CASE3-NEXT:      Address: 0x0
131 # CASE3-NEXT:      Size: 0x4
132 # CASE3-NEXT:      Offset: 488
133 # CASE3-NEXT:      Alignment: 0
134 # CASE3-NEXT:      RelocationOffset: 0x0
135 # CASE3-NEXT:      RelocationCount: 0
136 # CASE3-NEXT:      Type: Regular (0x0)
137 # CASE3-NEXT:      Attributes [ (0x800004)
138 # CASE3-NEXT:        PureInstructions (0x800000)
139 # CASE3-NEXT:        SomeInstructions (0x4)
140 # CASE3-NEXT:      ]
141 # CASE3-NEXT:      Reserved1: 0x0
142 # CASE3-NEXT:      Reserved2: 0x0
143 # CASE3-NEXT:      Reserved3: 0x0
144 # CASE3-NEXT:      SectionData (
145 # CASE3-NEXT:        0000: AABBCCDD                             |....|
146 # CASE3-NEXT:      )
147 # CASE3-NEXT:    }
148 # CASE3-NEXT:    Section {
149 # CASE3-NEXT:      Index: 1
150 # CASE3-NEXT:      Name: __foo (5F 5F 66 6F 6F 00 00 00 00 00 00 00 00 00 00 00)
151 # CASE3-NEXT:      Segment: __FOO (5F 5F 46 4F 4F 00 00 00 00 00 00 00 00 00 00 00)
152 # CASE3-NEXT:      Address: 0xB8
153 # CASE3-NEXT:      Size: 0xA
154 # CASE3-NEXT:      Offset: 492
155 # CASE3-NEXT:      Alignment: 0
156 # CASE3-NEXT:      RelocationOffset: 0x0
157 # CASE3-NEXT:      RelocationCount: 0
158 # CASE3-NEXT:      Type: Regular (0x0)
159 # CASE3-NEXT:      Attributes [ (0x0)
160 # CASE3-NEXT:      ]
161 # CASE3-NEXT:      Reserved1: 0x0
162 # CASE3-NEXT:      Reserved2: 0x0
163 # CASE3-NEXT:      Reserved3: 0x0
164 # CASE3-NEXT:      SectionData (
165 # CASE3-NEXT:        0000: 464F4F61 62636465 6667               |FOOabcdefg|
166 # CASE3-NEXT:      )
167 # CASE3-NEXT:    }
168 # CASE3-NEXT:    Section {
169 # CASE3-NEXT:      Index: 2
170 # CASE3-NEXT:      Name: __bar (5F 5F 62 61 72 00 00 00 00 00 00 00 00 00 00 00)
171 # CASE3-NEXT:      Segment: __BAR (5F 5F 42 41 52 00 00 00 00 00 00 00 00 00 00 00)
172 # CASE3-NEXT:      Address: 0x40B8
173 # CASE3-NEXT:      Size: 0xA
174 # CASE3-NEXT:      Offset: 502
175 # CASE3-NEXT:      Alignment: 0
176 # CASE3-NEXT:      RelocationOffset: 0x0
177 # CASE3-NEXT:      RelocationCount: 0
178 # CASE3-NEXT:      Type: Regular (0x0)
179 # CASE3-NEXT:      Attributes [ (0x0)
180 # CASE3-NEXT:      ]
181 # CASE3-NEXT:      Reserved1: 0x0
182 # CASE3-NEXT:      Reserved2: 0x0
183 # CASE3-NEXT:      Reserved3: 0x0
184 # CASE3-NEXT:      SectionData (
185 # CASE3-NEXT:        0000: 42415261 62636465 6667               |BARabcdefg|
186 # CASE3-NEXT:      )
187 # CASE3-NEXT:    }
188 # CASE3-NEXT:  ]