[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / tools / llvm-objcopy / MachO / symbol-table.test
blob7e0e1421c0646e060a98790888d21b6f066e4bf2
1 ## This test is based on a trimmed down version of the binary built as follows:
2 ## a.c:
3 ## __attribute__((used)) static int PrivateSymbol;
4 ## __attribute__((visibility("hidden"))) int PrivateExternalSymbol;
5 ## __attribute__((used)) int CommonSymbol;
6 ## extern int UndefinedExternalSymbol;
7 ## // Defined external symbol
8 ## int main() {
9 ##   return PrivateSymbol + PrivateExternalSymbol + CommonSymbol +
10 ##          UndefinedExternalSymbol;
11 ## }
12 ## build command:
13 ##   clang -g -fno-exceptions -fno-unwind-tables -undefined dynamic_lookup \
14 ##   a.c -o a.exe
15 ## All the load commands except the symbol table and its transitive dependencies
16 ## have been removed.
18 # RUN: yaml2obj %s -o %t
19 # RUN: llvm-objcopy %t %t.copy
20 # RUN: cmp %t %t.copy
22 ## Verify that the binary is valid and check its symbol table.
23 # RUN: llvm-readobj --symbols %t.copy | FileCheck %s
25 # CHECK: Symbols [
26 # CHECK-NEXT:   Symbol {
27 # CHECK-NEXT:     Name: _PrivateSymbol (170)
28 # CHECK-NEXT:     Type: Section (0xE)
29 # CHECK-NEXT:     Section: __bss (0x4)
30 # CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
31 # CHECK-NEXT:     Flags [ (0x0)
32 # CHECK-NEXT:     ]
33 # CHECK-NEXT:     Value: 0x100001008
34 # CHECK-NEXT:   }
35 # CHECK-NEXT:   Symbol {
36 # CHECK-NEXT:     Name: _PrivateExternalSymbol (122)
37 # CHECK-NEXT:     PrivateExtern
38 # CHECK-NEXT:     Type: Section (0xE)
39 # CHECK-NEXT:     Section: __common (0x5)
40 # CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
41 # CHECK-NEXT:     Flags [ (0x0)
42 # CHECK-NEXT:     ]
43 # CHECK-NEXT:     Value: 0x100001010
44 # CHECK-NEXT:   }
45 # CHECK-NEXT:   Symbol {
46 # CHECK-NEXT:     Name: /Users/aaaaaaaa/ (192)
47 # CHECK-NEXT:     Type: SymDebugTable (0x64)
48 # CHECK-NEXT:     Section:  (0x0)
49 # CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
50 # CHECK-NEXT:     Flags [ (0x0)
51 # CHECK-NEXT:     ]
52 # CHECK-NEXT:     Value: 0x0
53 # CHECK-NEXT:   }
54 # CHECK-NEXT:   Symbol {
55 # CHECK-NEXT:     Name: main.c (185)
56 # CHECK-NEXT:     Type: SymDebugTable (0x64)
57 # CHECK-NEXT:     Section:  (0x0)
58 # CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
59 # CHECK-NEXT:     Flags [ (0x0)
60 # CHECK-NEXT:     ]
61 # CHECK-NEXT:     Value: 0x0
62 # CHECK-NEXT:   }
63 # CHECK-NEXT:   Symbol {
64 # CHECK-NEXT:     Name: /var/folders/1d/zyfdpp7j2995h5hqspjy28bc0000gn/T/main-c5ac21.o (39)
65 # CHECK-NEXT:     Type: SymDebugTable (0x66)
66 # CHECK-NEXT:     Section:  (0x3)
67 # CHECK-NEXT:     RefType: ReferenceFlagUndefinedLazy (0x1)
68 # CHECK-NEXT:     Flags [ (0x0)
69 # CHECK-NEXT:     ]
70 # CHECK-NEXT:     Value: 0x5EA74C81
71 # CHECK-NEXT:   }
72 # CHECK-NEXT:   Symbol {
73 # CHECK-NEXT:     Name:  (208)
74 # CHECK-NEXT:     Type: SymDebugTable (0x2E)
75 # CHECK-NEXT:     Section:  (0x1)
76 # CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
77 # CHECK-NEXT:     Flags [ (0x0)
78 # CHECK-NEXT:     ]
79 # CHECK-NEXT:     Value: 0x100000F80
80 # CHECK-NEXT:   }
81 # CHECK-NEXT:   Symbol {
82 # CHECK-NEXT:     Name: _main (102)
83 # CHECK-NEXT:     Type: SymDebugTable (0x24)
84 # CHECK-NEXT:     Section:  (0x1)
85 # CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
86 # CHECK-NEXT:     Flags [ (0x0)
87 # CHECK-NEXT:     ]
88 # CHECK-NEXT:     Value: 0x100000F80
89 # CHECK-NEXT:   }
90 # CHECK-NEXT:   Symbol {
91 # CHECK-NEXT:     Name:  (208)
92 # CHECK-NEXT:     Type: SymDebugTable (0x24)
93 # CHECK-NEXT:     Section:  (0x0)
94 # CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
95 # CHECK-NEXT:     Flags [ (0x0)
96 # CHECK-NEXT:     ]
97 # CHECK-NEXT:     Value: 0x2D
98 # CHECK-NEXT:   }
99 # CHECK-NEXT:   Symbol {
100 # CHECK-NEXT:     Name:  (208)
101 # CHECK-NEXT:     Type: SymDebugTable (0x4E)
102 # CHECK-NEXT:     Section:  (0x1)
103 # CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
104 # CHECK-NEXT:     Flags [ (0x0)
105 # CHECK-NEXT:     ]
106 # CHECK-NEXT:     Value: 0x2D
107 # CHECK-NEXT:   }
108 # CHECK-NEXT:   Symbol {
109 # CHECK-NEXT:     Name: _PrivateSymbol (170)
110 # CHECK-NEXT:     Type: SymDebugTable (0x26)
111 # CHECK-NEXT:     Section:  (0x4)
112 # CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
113 # CHECK-NEXT:     Flags [ (0x0)
114 # CHECK-NEXT:     ]
115 # CHECK-NEXT:     Value: 0x100001008
116 # CHECK-NEXT:   }
117 # CHECK-NEXT:   Symbol {
118 # CHECK-NEXT:     Name: _CommonSymbol (108)
119 # CHECK-NEXT:     Type: SymDebugTable (0x20)
120 # CHECK-NEXT:     Section:  (0x0)
121 # CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
122 # CHECK-NEXT:     Flags [ (0x0)
123 # CHECK-NEXT:     ]
124 # CHECK-NEXT:     Value: 0x0
125 # CHECK-NEXT:   }
126 # CHECK-NEXT:   Symbol {
127 # CHECK-NEXT:     Name: _PrivateExternalSymbol (122)
128 # CHECK-NEXT:     Type: SymDebugTable (0x20)
129 # CHECK-NEXT:     Section:  (0x0)
130 # CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
131 # CHECK-NEXT:     Flags [ (0x0)
132 # CHECK-NEXT:     ]
133 # CHECK-NEXT:     Value: 0x0
134 # CHECK-NEXT:   }
135 # CHECK-NEXT:   Symbol {
136 # CHECK-NEXT:     Name:  (208)
137 # CHECK-NEXT:     Type: SymDebugTable (0x64)
138 # CHECK-NEXT:     Section:  (0x1)
139 # CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
140 # CHECK-NEXT:     Flags [ (0x0)
141 # CHECK-NEXT:     ]
142 # CHECK-NEXT:     Value: 0x0
143 # CHECK-NEXT:   }
144 # CHECK-NEXT:   Symbol {
145 # CHECK-NEXT:     Name: _CommonSymbol (108)
146 # CHECK-NEXT:     Extern
147 # CHECK-NEXT:     Type: Section (0xE)
148 # CHECK-NEXT:     Section: __common (0x5)
149 # CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
150 # CHECK-NEXT:     Flags [ (0x0)
151 # CHECK-NEXT:     ]
152 # CHECK-NEXT:     Value: 0x10000100C
153 # CHECK-NEXT:   }
154 # CHECK-NEXT:   Symbol {
155 # CHECK-NEXT:     Name: __mh_execute_header (19)
156 # CHECK-NEXT:     Extern
157 # CHECK-NEXT:     Type: Section (0xE)
158 # CHECK-NEXT:     Section: __text (0x1)
159 # CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
160 # CHECK-NEXT:     Flags [ (0x10)
161 # CHECK-NEXT:       ReferencedDynamically (0x10)
162 # CHECK-NEXT:     ]
163 # CHECK-NEXT:     Value: 0x100000000
164 # CHECK-NEXT:   }
165 # CHECK-NEXT:   Symbol {
166 # CHECK-NEXT:     Name: _main (102)
167 # CHECK-NEXT:     Extern
168 # CHECK-NEXT:     Type: Section (0xE)
169 # CHECK-NEXT:     Section: __text (0x1)
170 # CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
171 # CHECK-NEXT:     Flags [ (0x0)
172 # CHECK-NEXT:     ]
173 # CHECK-NEXT:     Value: 0x100000F80
174 # CHECK-NEXT:   }
175 # CHECK-NEXT:   Symbol {
176 # CHECK-NEXT:     Name: _UndefinedExternalSymbol (145)
177 # CHECK-NEXT:     Extern
178 # CHECK-NEXT:     Type: Undef (0x0)
179 # CHECK-NEXT:     Section:  (0x0)
180 # CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
181 # CHECK-NEXT:     Flags [ (0xFE00)
182 # CHECK-NEXT:       AltEntry (0x200)
183 # CHECK-NEXT:       ColdFunc (0x400)
184 # CHECK-NEXT:     ]
185 # CHECK-NEXT:     Value: 0x0
186 # CHECK-NEXT:   }
187 # CHECK-NEXT:   Symbol {
188 # CHECK-NEXT:     Name: dyld_stub_binder (2)
189 # CHECK-NEXT:     Extern
190 # CHECK-NEXT:     Type: Undef (0x0)
191 # CHECK-NEXT:     Section:  (0x0)
192 # CHECK-NEXT:     RefType: UndefinedNonLazy (0x0)
193 # CHECK-NEXT:     Flags [ (0x100)
194 # CHECK-NEXT:       SymbolResolver (0x100)
195 # CHECK-NEXT:     ]
196 # CHECK-NEXT:     Value: 0x0
197 # CHECK-NEXT:   }
198 # CHECK-NEXT: ]
200 --- !mach-o
201 FileHeader:
202   magic:           0xFEEDFACF
203   cputype:         0x01000007
204   cpusubtype:      0x80000003
205   filetype:        0x00000002
206   ncmds:           5
207   sizeofcmds:      720
208   flags:           0x00200085
209   reserved:        0x00000000
210 LoadCommands:
211   - cmd:             LC_SEGMENT_64
212     cmdsize:         232
213     segname:         __TEXT
214     vmaddr:          4294967296
215     vmsize:          4096
216     fileoff:         0
217     filesize:        4096
218     maxprot:         5
219     initprot:        5
220     nsects:          2
221     flags:           0
222     Sections:
223       - sectname:        __text
224         segname:         __TEXT
225         addr:            0x0000000100000F80
226         size:            45
227         offset:          0x00000F80
228         align:           4
229         reloff:          0x00000000
230         nreloc:          0
231         flags:           0x80000400
232         reserved1:       0x00000000
233         reserved2:       0x00000000
234         reserved3:       0x00000000
235         content:         554889E5488B0575000000488D0D7A000000C745FC000000008B156900000003156B0000000311031089D05DC3
236       - sectname:        __unwind_info
237         segname:         __TEXT
238         addr:            0x0000000100000FB0
239         size:            72
240         offset:          0x00000FB0
241         align:           2
242         reloff:          0x00000000
243         nreloc:          0
244         flags:           0x00000000
245         reserved1:       0x00000000
246         reserved2:       0x00000000
247         reserved3:       0x00000000
248         content:         010000001C000000000000001C000000000000001C00000002000000800F00003400000034000000AE0F00000000000034000000030000000C000100100001000000000000000000
249   - cmd:             LC_SEGMENT_64
250     cmdsize:         312
251     segname:         __DATA
252     vmaddr:          4294971392
253     vmsize:          4096
254     fileoff:         4096
255     filesize:        4096
256     maxprot:         3
257     initprot:        3
258     nsects:          3
259     flags:           0
260     Sections:
261       - sectname:        __got
262         segname:         __DATA
263         addr:            0x0000000100001000
264         size:            8
265         offset:          0x00001000
266         align:           3
267         reloff:          0x00000000
268         nreloc:          0
269         flags:           0x00000006
270         reserved1:       0x00000000
271         reserved2:       0x00000000
272         reserved3:       0x00000000
273         content:         '0000000000000000'
274       - sectname:        __bss
275         segname:         __DATA
276         addr:            0x0000000100001008
277         size:            4
278         offset:          0x00000000
279         align:           2
280         reloff:          0x00000000
281         nreloc:          0
282         flags:           0x00000001
283         reserved1:       0x00000000
284         reserved2:       0x00000000
285         reserved3:       0x00000000
286       - sectname:        __common
287         segname:         __DATA
288         addr:            0x000000010000100C
289         size:            8
290         offset:          0x00000000
291         align:           2
292         reloff:          0x00000000
293         nreloc:          0
294         flags:           0x00000001
295         reserved1:       0x00000000
296         reserved2:       0x00000000
297         reserved3:       0x00000000
298   - cmd:             LC_SEGMENT_64
299     cmdsize:         72
300     segname:         __LINKEDIT
301     vmaddr:          4294975488
302     vmsize:          4096
303     fileoff:         8192
304     filesize:        508
305     maxprot:         1
306     initprot:        1
307     nsects:          0
308     flags:           0
309   - cmd:             LC_SYMTAB
310     cmdsize:         24
311     symoff:          8192
312     nsyms:           18
313     stroff:          8484
314     strsize:         216
315   - cmd:             LC_DYSYMTAB
316     cmdsize:         80
317     ilocalsym:       0
318     nlocalsym:       13
319     iextdefsym:      13
320     nextdefsym:      3
321     iundefsym:       16
322     nundefsym:       2
323     tocoff:          0
324     ntoc:            0
325     modtaboff:       0
326     nmodtab:         0
327     extrefsymoff:    0
328     nextrefsyms:     0
329     indirectsymoff:  8480
330     nindirectsyms:   1
331     extreloff:       0
332     nextrel:         0
333     locreloff:       0
334     nlocrel:         0
335 LinkEditData:
336   NameList:
337     - n_strx:          170
338       n_type:          0x0E
339       n_sect:          4
340       n_desc:          0
341       n_value:         4294971400
342     - n_strx:          122
343       n_type:          0x1E
344       n_sect:          5
345       n_desc:          0
346       n_value:         4294971408
347     - n_strx:          192
348       n_type:          0x64
349       n_sect:          0
350       n_desc:          0
351       n_value:         0
352     - n_strx:          185
353       n_type:          0x64
354       n_sect:          0
355       n_desc:          0
356       n_value:         0
357     - n_strx:          39
358       n_type:          0x66
359       n_sect:          3
360       n_desc:          1
361       n_value:         1588022401
362     - n_strx:          208
363       n_type:          0x2E
364       n_sect:          1
365       n_desc:          0
366       n_value:         4294971264
367     - n_strx:          102
368       n_type:          0x24
369       n_sect:          1
370       n_desc:          0
371       n_value:         4294971264
372     - n_strx:          208
373       n_type:          0x24
374       n_sect:          0
375       n_desc:          0
376       n_value:         45
377     - n_strx:          208
378       n_type:          0x4E
379       n_sect:          1
380       n_desc:          0
381       n_value:         45
382     - n_strx:          170
383       n_type:          0x26
384       n_sect:          4
385       n_desc:          0
386       n_value:         4294971400
387     - n_strx:          108
388       n_type:          0x20
389       n_sect:          0
390       n_desc:          0
391       n_value:         0
392     - n_strx:          122
393       n_type:          0x20
394       n_sect:          0
395       n_desc:          0
396       n_value:         0
397     - n_strx:          208
398       n_type:          0x64
399       n_sect:          1
400       n_desc:          0
401       n_value:         0
402     - n_strx:          108
403       n_type:          0x0F
404       n_sect:          5
405       n_desc:          0
406       n_value:         4294971404
407     - n_strx:          19
408       n_type:          0x0F
409       n_sect:          1
410       n_desc:          16
411       n_value:         4294967296
412     - n_strx:          102
413       n_type:          0x0F
414       n_sect:          1
415       n_desc:          0
416       n_value:         4294971264
417     - n_strx:          145
418       n_type:          0x01
419       n_sect:          0
420       n_desc:          65024
421       n_value:         0
422     - n_strx:          2
423       n_type:          0x01
424       n_sect:          0
425       n_desc:          256
426       n_value:         0
427   StringTable:
428     - ' '
429     - dyld_stub_binder
430     - __mh_execute_header
431     - '/var/folders/1d/zyfdpp7j2995h5hqspjy28bc0000gn/T/main-c5ac21.o'
432     - _main
433     - _CommonSymbol
434     - _PrivateExternalSymbol
435     - _UndefinedExternalSymbol
436     - _PrivateSymbol
437     - main.c
438     - '/Users/aaaaaaaa/'
439     - ''
440     - ''
441     - ''
442     - ''
443     - ''
444     - ''
445     - ''