xref: /llvm-project/clang/test/InstallAPI/diagnostics-zippered.test (revision c24efffabbf96c7a138439bb8e219850c4d78887)
1; RUN: rm -rf %t
2; RUN: split-file %s %t
3; RUN: cp -r %S/Inputs/Foundation/Foundation.framework %t/System/Library/Frameworks/
4; RUN: sed -e "s|DSTROOT|%/t|g" %t/inputs.json.in > %t/inputs.json
5; RUN: yaml2obj %t/Mismatch.yaml -o %t/System/Library/Frameworks/Mismatch.framework/Mismatch
6
7; RUN: not clang-installapi --target=arm64-apple-macos13 \
8; RUN: --target=x86_64-apple-macos13 -darwin-target-variant x86_64-apple-ios16.0-macabi \
9; RUN: -darwin-target-variant arm64-apple-ios16.0-macabi \
10; RUN: -F %t/System/Library/Frameworks -isysroot %S/Inputs/MacOSX13.0.sdk \
11; RUN: -install_name /System/Library/Frameworks/Mismatch.framework/Versions/A/Mismatch \
12; RUN: -current_version 1 -compatibility_version 1 %t/inputs.json -o %t/Mismatch.tbd \
13; RUN: --verify-against=%t/System/Library/Frameworks/Mismatch.framework/Mismatch \
14; RUN: --verify-mode=Pedantic 2>&1 | FileCheck %s
15
16; CHECK:      warning: violations found for x86_64-apple-macos13
17; CHECK:      error: declaration has external linkage, but dynamic library doesn't have symbol 'foo_arch_x86'
18; CHECK-NEXT: extern int foo_arch_x86();
19
20; CHECK:      error: symbol exported in dynamic library, but marked hidden in declaration 'baz'
21; CHECK-NEXT: int baz() __attribute__((visibility("hidden")));
22
23; CHECK-NOT:  inlinedFunc
24
25; CHECK:      error: declaration has external linkage, but symbol has internal linkage in dynamic library 'bar'
26; CHECK-NEXT: extern int bar();
27
28; CHECK:      error: declaration has external linkage, but dynamic library doesn't have symbol 'NSFoo'
29; CHECK-NEXT: @interface NSFoo
30
31; CHECK:      error: declaration has external linkage, but dynamic library doesn't have symbol 'NSFoo.nsint'
32; CHECK-NEXT: int nsint;
33
34; CHECK:      error: declaration has external linkage, but dynamic library doesn't have symbol 'NSFooExcept'
35; CHECK-NEXT: @interface NSFooExcept
36
37; CHECK:      warning: violations found for arm64-apple-macos13
38; CHECK:      error: declaration has external linkage, but dynamic library doesn't have symbol 'foo_arch_arm'
39; CHECK-NEXT: extern int foo_arch_arm();
40
41; CHECK:      warning: violations found for x86_64
42; CHECK-NEXT: error: no declaration found for exported symbol '_fooBar' in dynamic library
43
44; CHECK:      warning: violations found for arm64
45; CHECK-NEXT: error: no declaration found for exported symbol '_fooBar' in dynamic library
46; CHECK:      warning: violations found for arm64-apple-macos13
47; CHECK-NEXT: error: declaration 'unavailableSymbol' is marked unavailable, but symbol is exported in dynamic library
48; CHECK-NEXT: extern int unavailableSymbol
49; CHECK:      warning: violations found for arm64-apple-ios16.0-macabi
50; CHECK-NEXT: error: declaration 'unavailableSymbol' is marked unavailable, but symbol is exported in dynamic library
51; CHECK-NEXT: extern int unavailableSymbol
52
53
54;--- System/Library/Frameworks/Mismatch.framework/Headers/Mismatch.h
55#if defined(__x86_64__)
56extern int foo_arch_x86();
57#else
58extern int foo_arch_arm();
59#endif
60
61int foo();
62int baz() __attribute__((visibility("hidden")));
63
64__attribute__((visibility("hidden"))) inline int inlinedFunc() { return 1; }
65
66;--- System/Library/Frameworks/Mismatch.framework/PrivateHeaders/Mismatch_Private.h
67#include <Foundation/Foundation.h>
68extern int bar();
69
70@interface NSFoo : NSObject {
71  int nsint;
72}
73@end
74
75__attribute__((objc_exception))
76@interface NSFooExcept : NSObject
77@end
78
79extern int unavailableSymbol __attribute__((
80    availability(macosx, unavailable), availability(macCatalyst, unavailable)));
81
82
83// Generated from source:
84// ***
85//     int inlinedFunc() { return 1; }
86//     int foo() { return 1; }
87//     __attribute__((visibility("hidden"))) int bar() { return 1; }
88//     int baz() { return 1; }
89//     int fooBar = 1;
90//     int unavailableSymbol = 1;
91// ***
92// xcrun -sdk macosx clang -target x86_64-apple-macos13 --target-variant=x86_64-apple-ios16-macabi -dynamiclib
93// xcrun -sdk macosx clang -target arm64-apple-macos13 --target-variant=arm64-apple-ios16-macabi -dynamiclib
94// then lipo'ed together.
95
96;--- Mismatch.yaml
97--- !fat-mach-o
98FatHeader:
99  magic:           0xCAFEBABE
100  nfat_arch:       2
101FatArchs:
102  - cputype:         0x1000007
103    cpusubtype:      0x3
104    offset:          0x1000
105    size:            20768
106    align:           12
107  - cputype:         0x100000C
108    cpusubtype:      0x0
109    offset:          0x8000
110    size:            49984
111    align:           14
112Slices:
113  - !mach-o
114    FileHeader:
115      magic:           0xFEEDFACF
116      cputype:         0x1000007
117      cpusubtype:      0x3
118      filetype:        0x6
119      ncmds:           15
120      sizeofcmds:      1584
121      flags:           0x100085
122      reserved:        0x0
123    LoadCommands:
124      - cmd:             LC_SEGMENT_64
125        cmdsize:         312
126        segname:         __TEXT
127        vmaddr:          0
128        vmsize:          12288
129        fileoff:         0
130        filesize:        12288
131        maxprot:         5
132        initprot:        5
133        nsects:          3
134        flags:           0
135        Sections:
136          - sectname:        __text
137            segname:         __TEXT
138            addr:            0x1090
139            size:            59
140            offset:          0x1090
141            align:           4
142            reloff:          0x0
143            nreloc:          0
144            flags:           0x80000400
145            reserved1:       0x0
146            reserved2:       0x0
147            reserved3:       0x0
148            content:         554889E5B8010000005DC30F1F440000554889E5B8010000005DC30F1F440000554889E5B8010000005DC30F1F440000554889E5B8010000005DC3
149          - sectname:        __unwind_info
150            segname:         __TEXT
151            addr:            0x10CC
152            size:            4152
153            offset:          0x10CC
154            align:           2
155            reloff:          0x0
156            nreloc:          0
157            flags:           0x0
158            reserved1:       0x0
159            reserved2:       0x0
160            reserved3:       0x0
161            content:         010000001C000000010000002000000000000000200000000200000000000001901000003800000038000000CB1000000000000038000000030000000C0001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
162          - sectname:        __eh_frame
163            segname:         __TEXT
164            addr:            0x2108
165            size:            24
166            offset:          0x2108
167            align:           3
168            reloff:          0x0
169            nreloc:          0
170            flags:           0x6000000B
171            reserved1:       0x0
172            reserved2:       0x0
173            reserved3:       0x0
174            content:         1400000000000000017A520001781001100C070890010000
175      - cmd:             LC_SEGMENT_64
176        cmdsize:         152
177        segname:         __DATA_CONST
178        vmaddr:          12288
179        vmsize:          4096
180        fileoff:         12288
181        filesize:        4096
182        maxprot:         3
183        initprot:        3
184        nsects:          1
185        flags:           16
186        Sections:
187          - sectname:        __objc_imageinfo
188            segname:         __DATA_CONST
189            addr:            0x3000
190            size:            8
191            offset:          0x3000
192            align:           0
193            reloff:          0x0
194            nreloc:          0
195            flags:           0x0
196            reserved1:       0x0
197            reserved2:       0x0
198            reserved3:       0x0
199            content:         '0000000040000000'
200      - cmd:             LC_SEGMENT_64
201        cmdsize:         152
202        segname:         __DATA
203        vmaddr:          16384
204        vmsize:          4096
205        fileoff:         16384
206        filesize:        4096
207        maxprot:         3
208        initprot:        3
209        nsects:          1
210        flags:           0
211        Sections:
212          - sectname:        __data
213            segname:         __DATA
214            addr:            0x4000
215            size:            8
216            offset:          0x4000
217            align:           2
218            reloff:          0x0
219            nreloc:          0
220            flags:           0x0
221            reserved1:       0x0
222            reserved2:       0x0
223            reserved3:       0x0
224            content:         '0100000001000000'
225      - cmd:             LC_SEGMENT_64
226        cmdsize:         72
227        segname:         __LINKEDIT
228        vmaddr:          20480
229        vmsize:          288
230        fileoff:         20480
231        filesize:        288
232        maxprot:         1
233        initprot:        1
234        nsects:          0
235        flags:           0
236      - cmd:             LC_DYLD_INFO_ONLY
237        cmdsize:         48
238        rebase_off:      0
239        rebase_size:     0
240        bind_off:        0
241        bind_size:       0
242        weak_bind_off:   0
243        weak_bind_size:  0
244        lazy_bind_off:   0
245        lazy_bind_size:  0
246        export_off:      20480
247        export_size:     88
248      - cmd:             LC_SYMTAB
249        cmdsize:         24
250        symoff:          20576
251        nsyms:           7
252        stroff:          20688
253        strsize:         80
254      - cmd:             LC_DYSYMTAB
255        cmdsize:         80
256        ilocalsym:       0
257        nlocalsym:       1
258        iextdefsym:      1
259        nextdefsym:      5
260        iundefsym:       6
261        nundefsym:       1
262        tocoff:          0
263        ntoc:            0
264        modtaboff:       0
265        nmodtab:         0
266        extrefsymoff:    0
267        nextrefsyms:     0
268        indirectsymoff:  0
269        nindirectsyms:   0
270        extreloff:       0
271        nextrel:         0
272        locreloff:       0
273        nlocrel:         0
274      - cmd:             LC_ID_DYLIB
275        cmdsize:         96
276        dylib:
277          name:            24
278          timestamp:       0
279          current_version: 65536
280          compatibility_version: 65536
281        Content:         '/System/Library/Frameworks/Mismatch.framework/Versions/A/Mismatch'
282        ZeroPadBytes:    7
283      - cmd:             LC_UUID
284        cmdsize:         24
285        uuid:            4C4C4421-5555-3144-A16C-E4AA63D66775
286      - cmd:             LC_BUILD_VERSION
287        cmdsize:         32
288        platform:        1
289        minos:           851968
290        sdk:             983040
291        ntools:          1
292        Tools:
293          - tool:            4
294            version:         1245184
295      - cmd:             LC_BUILD_VERSION
296        cmdsize:         32
297        platform:        6
298        minos:           1048576
299        sdk:             1048576
300        ntools:          1
301        Tools:
302          - tool:            4
303            version:         1245184
304      - cmd:             LC_LOAD_DYLIB
305        cmdsize:         56
306        dylib:
307          name:            24
308          timestamp:       0
309          current_version: 14942208
310          compatibility_version: 65536
311        Content:         '/usr/lib/libobjc.A.dylib'
312        ZeroPadBytes:    8
313      - cmd:             LC_LOAD_DYLIB
314        cmdsize:         56
315        dylib:
316          name:            24
317          timestamp:       0
318          current_version: 88539136
319          compatibility_version: 65536
320        Content:         '/usr/lib/libSystem.B.dylib'
321        ZeroPadBytes:    6
322      - cmd:             LC_FUNCTION_STARTS
323        cmdsize:         16
324        dataoff:         20568
325        datasize:        8
326      - cmd:             LC_DATA_IN_CODE
327        cmdsize:         16
328        dataoff:         20576
329        datasize:        0
330    LinkEditData:
331      ExportTrie:
332        TerminalSize:    0
333        NodeOffset:      0
334        Name:            ''
335        Flags:           0x0
336        Address:         0x0
337        Other:           0x0
338        ImportName:      ''
339        Children:
340          - TerminalSize:    0
341            NodeOffset:      5
342            Name:            _
343            Flags:           0x0
344            Address:         0x0
345            Other:           0x0
346            ImportName:      ''
347            Children:
348              - TerminalSize:    3
349                NodeOffset:      49
350                Name:            inlinedFunc
351                Flags:           0x0
352                Address:         0x1090
353                Other:           0x0
354                ImportName:      ''
355              - TerminalSize:    3
356                NodeOffset:      54
357                Name:            foo
358                Flags:           0x0
359                Address:         0x10A0
360                Other:           0x0
361                ImportName:      ''
362                Children:
363                  - TerminalSize:    4
364                    NodeOffset:      64
365                    Name:            Bar
366                    Flags:           0x0
367                    Address:         0x4000
368                    Other:           0x0
369                    ImportName:      ''
370              - TerminalSize:    4
371                NodeOffset:      70
372                Name:            unavailableSymbol
373                Flags:           0x0
374                Address:         0x4004
375                Other:           0x0
376                ImportName:      ''
377              - TerminalSize:    3
378                NodeOffset:      76
379                Name:            baz
380                Flags:           0x0
381                Address:         0x10C0
382                Other:           0x0
383                ImportName:      ''
384      NameList:
385        - n_strx:          20
386          n_type:          0x1E
387          n_sect:          1
388          n_desc:          0
389          n_value:         4272
390        - n_strx:          2
391          n_type:          0xF
392          n_sect:          1
393          n_desc:          0
394          n_value:         4240
395        - n_strx:          15
396          n_type:          0xF
397          n_sect:          1
398          n_desc:          0
399          n_value:         4256
400        - n_strx:          25
401          n_type:          0xF
402          n_sect:          1
403          n_desc:          0
404          n_value:         4288
405        - n_strx:          30
406          n_type:          0xF
407          n_sect:          5
408          n_desc:          0
409          n_value:         16384
410        - n_strx:          38
411          n_type:          0xF
412          n_sect:          5
413          n_desc:          0
414          n_value:         16388
415        - n_strx:          57
416          n_type:          0x1
417          n_sect:          0
418          n_desc:          512
419          n_value:         0
420      StringTable:
421        - ' '
422        - _inlinedFunc
423        - _foo
424        - _bar
425        - _baz
426        - _fooBar
427        - _unavailableSymbol
428        - dyld_stub_binder
429        - ''
430        - ''
431        - ''
432        - ''
433        - ''
434        - ''
435      FunctionStarts:  [ 0x1090, 0x10A0, 0x10B0, 0x10C0 ]
436  - !mach-o
437    FileHeader:
438      magic:           0xFEEDFACF
439      cputype:         0x100000C
440      cpusubtype:      0x0
441      filetype:        0x6
442      ncmds:           16
443      sizeofcmds:      1104
444      flags:           0x100085
445      reserved:        0x0
446    LoadCommands:
447      - cmd:             LC_SEGMENT_64
448        cmdsize:         232
449        segname:         __TEXT
450        vmaddr:          0
451        vmsize:          16384
452        fileoff:         0
453        filesize:        16384
454        maxprot:         5
455        initprot:        5
456        nsects:          2
457        flags:           0
458        Sections:
459          - sectname:        __text
460            segname:         __TEXT
461            addr:            0x1050
462            size:            32
463            offset:          0x1050
464            align:           2
465            reloff:          0x0
466            nreloc:          0
467            flags:           0x80000400
468            reserved1:       0x0
469            reserved2:       0x0
470            reserved3:       0x0
471            content:         20008052C0035FD620008052C0035FD620008052C0035FD620008052C0035FD6
472          - sectname:        __unwind_info
473            segname:         __TEXT
474            addr:            0x1070
475            size:            4152
476            offset:          0x1070
477            align:           2
478            reloff:          0x0
479            nreloc:          0
480            flags:           0x0
481            reserved1:       0x0
482            reserved2:       0x0
483            reserved3:       0x0
484            content:         010000001C000000010000002000000000000000200000000200000000000002501000003800000038000000701000000000000038000000030000000C0001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
485      - cmd:             LC_SEGMENT_64
486        cmdsize:         152
487        segname:         __DATA_CONST
488        vmaddr:          16384
489        vmsize:          16384
490        fileoff:         16384
491        filesize:        16384
492        maxprot:         3
493        initprot:        3
494        nsects:          1
495        flags:           16
496        Sections:
497          - sectname:        __objc_imageinfo
498            segname:         __DATA_CONST
499            addr:            0x4000
500            size:            8
501            offset:          0x4000
502            align:           0
503            reloff:          0x0
504            nreloc:          0
505            flags:           0x0
506            reserved1:       0x0
507            reserved2:       0x0
508            reserved3:       0x0
509            content:         '0000000040000000'
510      - cmd:             LC_SEGMENT_64
511        cmdsize:         152
512        segname:         __DATA
513        vmaddr:          32768
514        vmsize:          16384
515        fileoff:         32768
516        filesize:        16384
517        maxprot:         3
518        initprot:        3
519        nsects:          1
520        flags:           0
521        Sections:
522          - sectname:        __data
523            segname:         __DATA
524            addr:            0x8000
525            size:            8
526            offset:          0x8000
527            align:           2
528            reloff:          0x0
529            nreloc:          0
530            flags:           0x0
531            reserved1:       0x0
532            reserved2:       0x0
533            reserved3:       0x0
534            content:         '0100000001000000'
535      - cmd:             LC_SEGMENT_64
536        cmdsize:         72
537        segname:         __LINKEDIT
538        vmaddr:          49152
539        vmsize:          832
540        fileoff:         49152
541        filesize:        832
542        maxprot:         1
543        initprot:        1
544        nsects:          0
545        flags:           0
546      - cmd:             LC_DYLD_INFO_ONLY
547        cmdsize:         48
548        rebase_off:      0
549        rebase_size:     0
550        bind_off:        0
551        bind_size:       0
552        weak_bind_off:   0
553        weak_bind_size:  0
554        lazy_bind_off:   0
555        lazy_bind_size:  0
556        export_off:      49152
557        export_size:     88
558      - cmd:             LC_SYMTAB
559        cmdsize:         24
560        symoff:          49248
561        nsyms:           7
562        stroff:          49360
563        strsize:         80
564      - cmd:             LC_DYSYMTAB
565        cmdsize:         80
566        ilocalsym:       0
567        nlocalsym:       1
568        iextdefsym:      1
569        nextdefsym:      5
570        iundefsym:       6
571        nundefsym:       1
572        tocoff:          0
573        ntoc:            0
574        modtaboff:       0
575        nmodtab:         0
576        extrefsymoff:    0
577        nextrefsyms:     0
578        indirectsymoff:  0
579        nindirectsyms:   0
580        extreloff:       0
581        nextrel:         0
582        locreloff:       0
583        nlocrel:         0
584      - cmd:             LC_ID_DYLIB
585        cmdsize:         96
586        dylib:
587          name:            24
588          timestamp:       0
589          current_version: 65536
590          compatibility_version: 65536
591        Content:         '/System/Library/Frameworks/Mismatch.framework/Versions/A/Mismatch'
592        ZeroPadBytes:    7
593      - cmd:             LC_UUID
594        cmdsize:         24
595        uuid:            4C4C4428-5555-3144-A12B-7130A3C946D2
596      - cmd:             LC_BUILD_VERSION
597        cmdsize:         32
598        platform:        1
599        minos:           851968
600        sdk:             983040
601        ntools:          1
602        Tools:
603          - tool:            4
604            version:         1245184
605      - cmd:             LC_BUILD_VERSION
606        cmdsize:         32
607        platform:        6
608        minos:           1048576
609        sdk:             1048576
610        ntools:          1
611        Tools:
612          - tool:            4
613            version:         1245184
614      - cmd:             LC_LOAD_DYLIB
615        cmdsize:         56
616        dylib:
617          name:            24
618          timestamp:       0
619          current_version: 14942208
620          compatibility_version: 65536
621        Content:         '/usr/lib/libobjc.A.dylib'
622        ZeroPadBytes:    8
623      - cmd:             LC_LOAD_DYLIB
624        cmdsize:         56
625        dylib:
626          name:            24
627          timestamp:       0
628          current_version: 88539136
629          compatibility_version: 65536
630        Content:         '/usr/lib/libSystem.B.dylib'
631        ZeroPadBytes:    6
632      - cmd:             LC_FUNCTION_STARTS
633        cmdsize:         16
634        dataoff:         49240
635        datasize:        8
636      - cmd:             LC_DATA_IN_CODE
637        cmdsize:         16
638        dataoff:         49248
639        datasize:        0
640      - cmd:             LC_CODE_SIGNATURE
641        cmdsize:         16
642        dataoff:         49440
643        datasize:        544
644    LinkEditData:
645      ExportTrie:
646        TerminalSize:    0
647        NodeOffset:      0
648        Name:            ''
649        Flags:           0x0
650        Address:         0x0
651        Other:           0x0
652        ImportName:      ''
653        Children:
654          - TerminalSize:    0
655            NodeOffset:      5
656            Name:            _
657            Flags:           0x0
658            Address:         0x0
659            Other:           0x0
660            ImportName:      ''
661            Children:
662              - TerminalSize:    3
663                NodeOffset:      49
664                Name:            inlinedFunc
665                Flags:           0x0
666                Address:         0x1050
667                Other:           0x0
668                ImportName:      ''
669              - TerminalSize:    3
670                NodeOffset:      54
671                Name:            foo
672                Flags:           0x0
673                Address:         0x1058
674                Other:           0x0
675                ImportName:      ''
676                Children:
677                  - TerminalSize:    4
678                    NodeOffset:      64
679                    Name:            Bar
680                    Flags:           0x0
681                    Address:         0x8000
682                    Other:           0x0
683                    ImportName:      ''
684              - TerminalSize:    4
685                NodeOffset:      70
686                Name:            unavailableSymbol
687                Flags:           0x0
688                Address:         0x8004
689                Other:           0x0
690                ImportName:      ''
691              - TerminalSize:    3
692                NodeOffset:      76
693                Name:            baz
694                Flags:           0x0
695                Address:         0x1068
696                Other:           0x0
697                ImportName:      ''
698      NameList:
699        - n_strx:          20
700          n_type:          0x1E
701          n_sect:          1
702          n_desc:          0
703          n_value:         4192
704        - n_strx:          2
705          n_type:          0xF
706          n_sect:          1
707          n_desc:          0
708          n_value:         4176
709        - n_strx:          15
710          n_type:          0xF
711          n_sect:          1
712          n_desc:          0
713          n_value:         4184
714        - n_strx:          25
715          n_type:          0xF
716          n_sect:          1
717          n_desc:          0
718          n_value:         4200
719        - n_strx:          30
720          n_type:          0xF
721          n_sect:          4
722          n_desc:          0
723          n_value:         32768
724        - n_strx:          38
725          n_type:          0xF
726          n_sect:          4
727          n_desc:          0
728          n_value:         32772
729        - n_strx:          57
730          n_type:          0x1
731          n_sect:          0
732          n_desc:          512
733          n_value:         0
734      StringTable:
735        - ' '
736        - _inlinedFunc
737        - _foo
738        - _bar
739        - _baz
740        - _fooBar
741        - _unavailableSymbol
742        - dyld_stub_binder
743        - ''
744        - ''
745        - ''
746        - ''
747        - ''
748        - ''
749      FunctionStarts:  [ 0x1050, 0x1058, 0x1060, 0x1068 ]
750...
751
752;--- inputs.json.in
753{
754  "headers": [
755  {
756    "path" : "DSTROOT/System/Library/Frameworks/Mismatch.framework/PrivateHeaders/Mismatch_Private.h",
757    "type" : "private"
758  },
759  {
760    "path" : "DSTROOT/System/Library/Frameworks/Mismatch.framework/Headers/Mismatch.h",
761    "type" : "public"
762  }
763  ],
764  "version": "3"
765}
766