xref: /llvm-project/clang/test/InstallAPI/reexported-frameworks.test (revision 27b2d7d4bb790ec1e7430bf18b1bc2f6e0800d0d)
1; RUN: rm -rf %t
2; RUN: split-file %s %t
3; RUN: sed -e "s|DSTROOT|%/t|g" %t/inputs.json.in > %t/inputs.json
4
5; RUN: yaml2obj %t/Umbrella.yaml -o %t/Umbrella
6; RUN: mkdir -p %t/System/Library/Frameworks/Bar.framework
7; RUN: yaml2obj %t/Bar.yaml -o %t/System/Library/Frameworks/Bar.framework/Bar
8
9; RUN: clang-installapi -target x86_64-apple-macosx13 -install_name \
10; RUN: /System/Library/Frameworks/Umbrella3.framework/Versions/A/Umbrella3 \
11; RUN: -current_version 1 -compatibility_version 1 \
12; RUN: --verify-against=%t/Umbrella \
13; RUN: -F %t/System/Library/Frameworks -L %t/usr/lib \
14; RUN: %t/inputs.json --verify-mode=Pedantic \
15; RUN: -reexport_framework Foo -reexport_framework Bar -reexport-lBaz \
16; RUN: -o %t/Umbrella.tbd 2>&1 | FileCheck -allow-empty %s
17; RUN: llvm-readtapi -compare %t/Umbrella.tbd %t/expected.tbd 2>&1 | FileCheck -allow-empty %s
18
19// Checks that one of the reexported frameworks found earlier doesn't resolve
20// a missing export from a declaration.
21; RUN: not clang-installapi -target x86_64-apple-macosx13 -install_name \
22; RUN: /System/Library/Frameworks/Umbrella3.framework/Versions/A/Umbrella3 \
23; RUN: -current_version 1 -compatibility_version 1 \
24; RUN: --verify-against=%t/Umbrella \
25; RUN: %t/inputs.json -F %t/BadFoo \
26; RUN: -F %t/System/Library/Frameworks -L %t/usr/lib \
27; RUN: --verify-mode=ErrorsOnly \
28; RUN: -reexport_framework Foo -reexport_framework Bar -reexport-lBaz \
29; RUN: -o %t/Umbrella.tbd 2>&1 | FileCheck %s --check-prefix MISSING_SYMBOL
30
31; MISSING_SYMBOL: error: declaration has external linkage, but dynamic library doesn't have symbol 'foo'
32; MISSING_SYMBOL-NEXT: extern int foo();
33
34
35; CHECK-NOT: error
36; CHECK-NOT: warning
37
38;--- System/Library/Frameworks/Umbrella.framework/Headers/Bar.h
39extern int bar();
40
41;--- System/Library/Frameworks/Umbrella.framework/Headers/Baz.h
42extern int baz();
43
44;--- System/Library/Frameworks/Umbrella.framework/Headers/Foo.h
45extern int foo();
46
47;--- System/Library/Frameworks/Umbrella.framework/Headers/Umbrella.h
48#import <Umbrella/Bar.h>
49#import <Umbrella/Baz.h>
50#import <Umbrella/Foo.h>
51
52;--- inputs.json.in
53{
54  "headers": [ {
55    "path" : "DSTROOT/System/Library/Frameworks/Umbrella.framework/Headers/Bar.h",
56    "type" : "public"
57  },
58  {
59    "path" : "DSTROOT/System/Library/Frameworks/Umbrella.framework/Headers/Baz.h",
60    "type" : "public"
61  },
62  {
63    "path" : "DSTROOT/System/Library/Frameworks/Umbrella.framework/Headers/Umbrella.h",
64    "type" : "public"
65  },
66  {
67    "path" : "DSTROOT/System/Library/Frameworks/Umbrella.framework/Headers/Foo.h",
68    "type" : "public"
69  }
70  ],
71  "version": "3"
72}
73
74;--- Umbrella.yaml
75--- !mach-o
76FileHeader:
77  magic:           0xFEEDFACF
78  cputype:         0x1000007
79  cpusubtype:      0x3
80  filetype:        0x6
81  ncmds:           18
82  sizeofcmds:      1184
83  flags:           0x85
84  reserved:        0x0
85LoadCommands:
86  - cmd:             LC_SEGMENT_64
87    cmdsize:         152
88    segname:         __TEXT
89    vmaddr:          0
90    vmsize:          12288
91    fileoff:         0
92    filesize:        12288
93    maxprot:         5
94    initprot:        5
95    nsects:          1
96    flags:           0
97    Sections:
98      - sectname:        __text
99        segname:         __TEXT
100        addr:            0x24C0
101        size:            0
102        offset:          0x24C0
103        align:           0
104        reloff:          0x0
105        nreloc:          0
106        flags:           0x80000000
107        reserved1:       0x0
108        reserved2:       0x0
109        reserved3:       0x0
110        content:         ''
111  - cmd:             LC_SEGMENT_64
112    cmdsize:         152
113    segname:         __DATA_CONST
114    vmaddr:          12288
115    vmsize:          4096
116    fileoff:         12288
117    filesize:        4096
118    maxprot:         3
119    initprot:        3
120    nsects:          1
121    flags:           16
122    Sections:
123      - sectname:        __objc_imageinfo
124        segname:         __DATA_CONST
125        addr:            0x3000
126        size:            8
127        offset:          0x3000
128        align:           0
129        reloff:          0x0
130        nreloc:          0
131        flags:           0x0
132        reserved1:       0x0
133        reserved2:       0x0
134        reserved3:       0x0
135        content:         '0000000040000000'
136  - cmd:             LC_SEGMENT_64
137    cmdsize:         72
138    segname:         __LINKEDIT
139    vmaddr:          16384
140    vmsize:          48
141    fileoff:         16384
142    filesize:        48
143    maxprot:         1
144    initprot:        1
145    nsects:          0
146    flags:           0
147  - cmd:             LC_DYLD_INFO_ONLY
148    cmdsize:         48
149    rebase_off:      0
150    rebase_size:     0
151    bind_off:        0
152    bind_size:       0
153    weak_bind_off:   0
154    weak_bind_size:  0
155    lazy_bind_off:   0
156    lazy_bind_size:  0
157    export_off:      0
158    export_size:     0
159  - cmd:             LC_SYMTAB
160    cmdsize:         24
161    symoff:          16392
162    nsyms:           1
163    stroff:          16408
164    strsize:         24
165  - cmd:             LC_DYSYMTAB
166    cmdsize:         80
167    ilocalsym:       0
168    nlocalsym:       0
169    iextdefsym:      0
170    nextdefsym:      0
171    iundefsym:       0
172    nundefsym:       1
173    tocoff:          0
174    ntoc:            0
175    modtaboff:       0
176    nmodtab:         0
177    extrefsymoff:    0
178    nextrefsyms:     0
179    indirectsymoff:  0
180    nindirectsyms:   0
181    extreloff:       0
182    nextrel:         0
183    locreloff:       0
184    nlocrel:         0
185  - cmd:             LC_ID_DYLIB
186    cmdsize:         96
187    dylib:
188      name:            24
189      timestamp:       0
190      current_version: 65536
191      compatibility_version: 65536
192    Content:         '/System/Library/Frameworks/Umbrella3.framework/Versions/A/Umbrella3'
193    ZeroPadBytes:    5
194  - cmd:             LC_UUID
195    cmdsize:         24
196    uuid:            4C4C44AE-5555-3144-A1D3-33A5C6F7B36A
197  - cmd:             LC_BUILD_VERSION
198    cmdsize:         32
199    platform:        1
200    minos:           851968
201    sdk:             983040
202    ntools:          1
203    Tools:
204      - tool:            4
205        version:         1245184
206  - cmd:             LC_LOAD_DYLIB
207    cmdsize:         80
208    dylib:
209      name:            24
210      timestamp:       0
211      current_version: 65536
212      compatibility_version: 65536
213    Content:         '/System/Library/Frameworks/Foo.framework/Versions/A/Foo'
214    ZeroPadBytes:    1
215  - cmd:             LC_REEXPORT_DYLIB
216    cmdsize:         80
217    dylib:
218      name:            24
219      timestamp:       0
220      current_version: 0
221      compatibility_version: 0
222    Content:         '/System/Library/Frameworks/Foo.framework/Versions/A/Foo'
223    ZeroPadBytes:    1
224  - cmd:             LC_LOAD_DYLIB
225    cmdsize:         80
226    dylib:
227      name:            24
228      timestamp:       0
229      current_version: 65536
230      compatibility_version: 65536
231    Content:         '/System/Library/Frameworks/Bar.framework/Versions/A/Bar'
232    ZeroPadBytes:    1
233  - cmd:             LC_REEXPORT_DYLIB
234    cmdsize:         80
235    dylib:
236      name:            24
237      timestamp:       0
238      current_version: 0
239      compatibility_version: 0
240    Content:         '/System/Library/Frameworks/Bar.framework/Versions/A/Bar'
241    ZeroPadBytes:    1
242  - cmd:             LC_LOAD_DYLIB
243    cmdsize:         48
244    dylib:
245      name:            24
246      timestamp:       0
247      current_version: 65536
248      compatibility_version: 65536
249    Content:         '/usr/lib/libBaz.1.dylib'
250    ZeroPadBytes:    1
251  - cmd:             LC_REEXPORT_DYLIB
252    cmdsize:         48
253    dylib:
254      name:            24
255      timestamp:       0
256      current_version: 0
257      compatibility_version: 0
258    Content:         '/usr/lib/libBaz.1.dylib'
259    ZeroPadBytes:    1
260  - cmd:             LC_LOAD_DYLIB
261    cmdsize:         56
262    dylib:
263      name:            24
264      timestamp:       0
265      current_version: 88539136
266      compatibility_version: 65536
267    Content:         '/usr/lib/libSystem.B.dylib'
268    ZeroPadBytes:    6
269  - cmd:             LC_FUNCTION_STARTS
270    cmdsize:         16
271    dataoff:         16384
272    datasize:        8
273  - cmd:             LC_DATA_IN_CODE
274    cmdsize:         16
275    dataoff:         16392
276    datasize:        0
277LinkEditData:
278  NameList:
279    - n_strx:          2
280      n_type:          0x1
281      n_sect:          0
282      n_desc:          1024
283      n_value:         0
284  StringTable:
285    - ' '
286    - dyld_stub_binder
287    - ''
288    - ''
289    - ''
290    - ''
291    - ''
292...
293
294;--- System/Library/Frameworks/Foo.framework/Foo.tbd
295{
296  "main_library": {
297    "exported_symbols": [
298      {
299        "text": {
300          "global": [
301            "_foo"
302          ]
303        }
304      }
305    ],
306    "flags": [
307      {
308        "attributes": [
309          "not_app_extension_safe"
310        ]
311      }
312    ],
313    "install_names": [
314      {
315        "name": "/System/Library/Frameworks/Foo.framework/Versions/A/Foo"
316      }
317    ],
318    "target_info": [
319      {
320        "min_deployment": "13",
321        "target": "x86_64-macos"
322      }
323    ]
324  },
325  "tapi_tbd_version": 5
326}
327
328;--- Bar.yaml
329--- !mach-o
330FileHeader:
331  magic:           0xFEEDFACF
332  cputype:         0x1000007
333  cpusubtype:      0x3
334  filetype:        0x6
335  ncmds:           12
336  sizeofcmds:      912
337  flags:           0x100085
338  reserved:        0x0
339LoadCommands:
340  - cmd:             LC_SEGMENT_64
341    cmdsize:         312
342    segname:         __TEXT
343    vmaddr:          0
344    vmsize:          8192
345    fileoff:         0
346    filesize:        8192
347    maxprot:         5
348    initprot:        5
349    nsects:          3
350    flags:           0
351    Sections:
352      - sectname:        __text
353        segname:         __TEXT
354        addr:            0xBB0
355        size:            8
356        offset:          0xBB0
357        align:           4
358        reloff:          0x0
359        nreloc:          0
360        flags:           0x80000400
361        reserved1:       0x0
362        reserved2:       0x0
363        reserved3:       0x0
364        content:         554889E531C05DC3
365      - sectname:        __unwind_info
366        segname:         __TEXT
367        addr:            0xBB8
368        size:            4152
369        offset:          0xBB8
370        align:           2
371        reloff:          0x0
372        nreloc:          0
373        flags:           0x0
374        reserved1:       0x0
375        reserved2:       0x0
376        reserved3:       0x0
377        content:         010000001C000000010000002000000000000000200000000200000000000001B00B00003800000038000000B80B00000000000038000000030000000C0001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
378      - sectname:        __eh_frame
379        segname:         __TEXT
380        addr:            0x1BF0
381        size:            24
382        offset:          0x1BF0
383        align:           3
384        reloff:          0x0
385        nreloc:          0
386        flags:           0x6000000B
387        reserved1:       0x0
388        reserved2:       0x0
389        reserved3:       0x0
390        content:         1400000000000000017A520001781001100C070890010000
391  - cmd:             LC_SEGMENT_64
392    cmdsize:         152
393    segname:         __DATA_CONST
394    vmaddr:          8192
395    vmsize:          4096
396    fileoff:         8192
397    filesize:        4096
398    maxprot:         3
399    initprot:        3
400    nsects:          1
401    flags:           16
402    Sections:
403      - sectname:        __objc_imageinfo
404        segname:         __DATA_CONST
405        addr:            0x2000
406        size:            8
407        offset:          0x2000
408        align:           0
409        reloff:          0x0
410        nreloc:          0
411        flags:           0x0
412        reserved1:       0x0
413        reserved2:       0x0
414        reserved3:       0x0
415        content:         '0000000040000000'
416  - cmd:             LC_SEGMENT_64
417    cmdsize:         72
418    segname:         __LINKEDIT
419    vmaddr:          12288
420    vmsize:          80
421    fileoff:         12288
422    filesize:        80
423    maxprot:         1
424    initprot:        1
425    nsects:          0
426    flags:           0
427  - cmd:             LC_DYLD_INFO_ONLY
428    cmdsize:         48
429    rebase_off:      0
430    rebase_size:     0
431    bind_off:        0
432    bind_size:       0
433    weak_bind_off:   0
434    weak_bind_size:  0
435    lazy_bind_off:   0
436    lazy_bind_size:  0
437    export_off:      12288
438    export_size:     16
439  - cmd:             LC_SYMTAB
440    cmdsize:         24
441    symoff:          12312
442    nsyms:           2
443    stroff:          12344
444    strsize:         24
445  - cmd:             LC_DYSYMTAB
446    cmdsize:         80
447    ilocalsym:       0
448    nlocalsym:       0
449    iextdefsym:      0
450    nextdefsym:      1
451    iundefsym:       1
452    nundefsym:       1
453    tocoff:          0
454    ntoc:            0
455    modtaboff:       0
456    nmodtab:         0
457    extrefsymoff:    0
458    nextrefsyms:     0
459    indirectsymoff:  0
460    nindirectsyms:   0
461    extreloff:       0
462    nextrel:         0
463    locreloff:       0
464    nlocrel:         0
465  - cmd:             LC_ID_DYLIB
466    cmdsize:         80
467    dylib:
468      name:            24
469      timestamp:       0
470      current_version: 65536
471      compatibility_version: 65536
472    Content:         '/System/Library/Frameworks/Bar.framework/Versions/A/Bar'
473    ZeroPadBytes:    1
474  - cmd:             LC_UUID
475    cmdsize:         24
476    uuid:            4C4C4415-5555-3144-A11E-3C68D85CC061
477  - cmd:             LC_BUILD_VERSION
478    cmdsize:         32
479    platform:        1
480    minos:           851968
481    sdk:             983040
482    ntools:          1
483    Tools:
484      - tool:            4
485        version:         1245184
486  - cmd:             LC_LOAD_DYLIB
487    cmdsize:         56
488    dylib:
489      name:            24
490      timestamp:       0
491      current_version: 88539136
492      compatibility_version: 65536
493    Content:         '/usr/lib/libSystem.B.dylib'
494    ZeroPadBytes:    6
495  - cmd:             LC_FUNCTION_STARTS
496    cmdsize:         16
497    dataoff:         12304
498    datasize:        8
499  - cmd:             LC_DATA_IN_CODE
500    cmdsize:         16
501    dataoff:         12312
502    datasize:        0
503LinkEditData:
504  ExportTrie:
505    TerminalSize:    0
506    NodeOffset:      0
507    Name:            ''
508    Flags:           0x0
509    Address:         0x0
510    Other:           0x0
511    ImportName:      ''
512    Children:
513      - TerminalSize:    3
514        NodeOffset:      8
515        Name:            _bar
516        Flags:           0x0
517        Address:         0xBB0
518        Other:           0x0
519        ImportName:      ''
520  NameList:
521    - n_strx:          2
522      n_type:          0xF
523      n_sect:          1
524      n_desc:          0
525      n_value:         2992
526    - n_strx:          7
527      n_type:          0x1
528      n_sect:          0
529      n_desc:          256
530      n_value:         0
531  StringTable:
532    - ' '
533    - _bar
534    - dyld_stub_binder
535  FunctionStarts:  [ 0xBB0 ]
536...
537
538;--- usr/lib/libBaz.tbd
539{
540  "main_library": {
541    "exported_symbols": [
542      {
543        "text": {
544          "global": [
545            "_baz"
546          ]
547        }
548      }
549    ],
550    "flags": [
551      {
552        "attributes": [
553          "not_app_extension_safe"
554        ]
555      }
556    ],
557    "install_names": [
558      {
559        "name": "/usr/lib/libBaz.1.dylib"
560      }
561    ],
562    "target_info": [
563      {
564        "min_deployment": "13",
565        "target": "x86_64-macos"
566      }
567    ]
568  },
569  "tapi_tbd_version": 5
570}
571
572;--- BadFoo/Foo.framework/Foo.tbd
573{
574  "main_library": {
575    "exported_symbols": [
576      {
577        "text": {
578          "global": [
579            "_not_so_foo"
580          ]
581        }
582      }
583    ],
584    "flags": [
585      {
586        "attributes": [
587          "not_app_extension_safe"
588        ]
589      }
590    ],
591    "install_names": [
592      {
593        "name": "/System/Library/Frameworks/Foo.framework/Versions/A/Foo"
594      }
595    ],
596    "target_info": [
597      {
598        "min_deployment": "13",
599        "target": "x86_64-macos"
600      }
601    ]
602  },
603  "tapi_tbd_version": 5
604}
605
606;--- expected.tbd
607{
608  "main_library": {
609    "flags": [
610      {
611        "attributes": [
612          "not_app_extension_safe"
613        ]
614      }
615    ],
616    "install_names": [
617      {
618        "name": "/System/Library/Frameworks/Umbrella3.framework/Versions/A/Umbrella3"
619      }
620    ],
621    "reexported_libraries": [
622      {
623        "names": [
624          "/System/Library/Frameworks/Bar.framework/Versions/A/Bar",
625          "/System/Library/Frameworks/Foo.framework/Versions/A/Foo",
626          "/usr/lib/libBaz.1.dylib"
627        ]
628      }
629    ],
630    "target_info": [
631      {
632        "min_deployment": "13",
633        "target": "x86_64-macos"
634      }
635    ]
636  },
637  "tapi_tbd_version": 5
638}
639