brintos

brintos / llvm-project-archived public Read only

0
0
Text · 24.1 KiB · 41c4f53 Raw
639 lines · plain
1; RUN: rm -rf %t2; RUN: split-file %s %t3; RUN: sed -e "s|DSTROOT|%/t|g" %t/inputs.json.in > %t/inputs.json4 5; RUN: yaml2obj %t/Umbrella.yaml -o %t/Umbrella6; RUN: mkdir -p %t/System/Library/Frameworks/Bar.framework7; RUN: yaml2obj %t/Bar.yaml -o %t/System/Library/Frameworks/Bar.framework/Bar8 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 %s17; RUN: llvm-readtapi -compare %t/Umbrella.tbd %t/expected.tbd 2>&1 | FileCheck -allow-empty %s18 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_SYMBOL30 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: error36; CHECK-NOT: warning37 38;--- System/Library/Frameworks/Umbrella.framework/Headers/Bar.h39extern int bar();40 41;--- System/Library/Frameworks/Umbrella.framework/Headers/Baz.h42extern int baz();43 44;--- System/Library/Frameworks/Umbrella.framework/Headers/Foo.h45extern int foo();46 47;--- System/Library/Frameworks/Umbrella.framework/Headers/Umbrella.h48#import <Umbrella/Bar.h>49#import <Umbrella/Baz.h>50#import <Umbrella/Foo.h>51 52;--- inputs.json.in53{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.yaml75--- !mach-o76FileHeader:77  magic:           0xFEEDFACF78  cputype:         0x100000779  cpusubtype:      0x380  filetype:        0x681  ncmds:           1882  sizeofcmds:      118483  flags:           0x8584  reserved:        0x085LoadCommands:86  - cmd:             LC_SEGMENT_6487    cmdsize:         15288    segname:         __TEXT89    vmaddr:          090    vmsize:          1228891    fileoff:         092    filesize:        1228893    maxprot:         594    initprot:        595    nsects:          196    flags:           097    Sections:98      - sectname:        __text99        segname:         __TEXT100        addr:            0x24C0101        size:            0102        offset:          0x24C0103        align:           0104        reloff:          0x0105        nreloc:          0106        flags:           0x80000000107        reserved1:       0x0108        reserved2:       0x0109        reserved3:       0x0110        content:         ''111  - cmd:             LC_SEGMENT_64112    cmdsize:         152113    segname:         __DATA_CONST114    vmaddr:          12288115    vmsize:          4096116    fileoff:         12288117    filesize:        4096118    maxprot:         3119    initprot:        3120    nsects:          1121    flags:           16122    Sections:123      - sectname:        __objc_imageinfo124        segname:         __DATA_CONST125        addr:            0x3000126        size:            8127        offset:          0x3000128        align:           0129        reloff:          0x0130        nreloc:          0131        flags:           0x0132        reserved1:       0x0133        reserved2:       0x0134        reserved3:       0x0135        content:         '0000000040000000'136  - cmd:             LC_SEGMENT_64137    cmdsize:         72138    segname:         __LINKEDIT139    vmaddr:          16384140    vmsize:          48141    fileoff:         16384142    filesize:        48143    maxprot:         1144    initprot:        1145    nsects:          0146    flags:           0147  - cmd:             LC_DYLD_INFO_ONLY148    cmdsize:         48149    rebase_off:      0150    rebase_size:     0151    bind_off:        0152    bind_size:       0153    weak_bind_off:   0154    weak_bind_size:  0155    lazy_bind_off:   0156    lazy_bind_size:  0157    export_off:      0158    export_size:     0159  - cmd:             LC_SYMTAB160    cmdsize:         24161    symoff:          16392162    nsyms:           1163    stroff:          16408164    strsize:         24165  - cmd:             LC_DYSYMTAB166    cmdsize:         80167    ilocalsym:       0168    nlocalsym:       0169    iextdefsym:      0170    nextdefsym:      0171    iundefsym:       0172    nundefsym:       1173    tocoff:          0174    ntoc:            0175    modtaboff:       0176    nmodtab:         0177    extrefsymoff:    0178    nextrefsyms:     0179    indirectsymoff:  0180    nindirectsyms:   0181    extreloff:       0182    nextrel:         0183    locreloff:       0184    nlocrel:         0185  - cmd:             LC_ID_DYLIB186    cmdsize:         96187    dylib:188      name:            24189      timestamp:       0190      current_version: 65536191      compatibility_version: 65536192    Content:         '/System/Library/Frameworks/Umbrella3.framework/Versions/A/Umbrella3'193    ZeroPadBytes:    5194  - cmd:             LC_UUID195    cmdsize:         24196    uuid:            4C4C44AE-5555-3144-A1D3-33A5C6F7B36A197  - cmd:             LC_BUILD_VERSION198    cmdsize:         32199    platform:        1200    minos:           851968201    sdk:             983040202    ntools:          1203    Tools:204      - tool:            4205        version:         1245184206  - cmd:             LC_LOAD_DYLIB207    cmdsize:         80208    dylib:209      name:            24210      timestamp:       0211      current_version: 65536212      compatibility_version: 65536213    Content:         '/System/Library/Frameworks/Foo.framework/Versions/A/Foo'214    ZeroPadBytes:    1215  - cmd:             LC_REEXPORT_DYLIB216    cmdsize:         80217    dylib:218      name:            24219      timestamp:       0220      current_version: 0221      compatibility_version: 0222    Content:         '/System/Library/Frameworks/Foo.framework/Versions/A/Foo'223    ZeroPadBytes:    1224  - cmd:             LC_LOAD_DYLIB225    cmdsize:         80226    dylib:227      name:            24228      timestamp:       0229      current_version: 65536230      compatibility_version: 65536231    Content:         '/System/Library/Frameworks/Bar.framework/Versions/A/Bar'232    ZeroPadBytes:    1233  - cmd:             LC_REEXPORT_DYLIB234    cmdsize:         80235    dylib:236      name:            24237      timestamp:       0238      current_version: 0239      compatibility_version: 0240    Content:         '/System/Library/Frameworks/Bar.framework/Versions/A/Bar'241    ZeroPadBytes:    1242  - cmd:             LC_LOAD_DYLIB243    cmdsize:         48244    dylib:245      name:            24246      timestamp:       0247      current_version: 65536248      compatibility_version: 65536249    Content:         '/usr/lib/libBaz.1.dylib'250    ZeroPadBytes:    1251  - cmd:             LC_REEXPORT_DYLIB252    cmdsize:         48253    dylib:254      name:            24255      timestamp:       0256      current_version: 0257      compatibility_version: 0258    Content:         '/usr/lib/libBaz.1.dylib'259    ZeroPadBytes:    1260  - cmd:             LC_LOAD_DYLIB261    cmdsize:         56262    dylib:263      name:            24264      timestamp:       0265      current_version: 88539136266      compatibility_version: 65536267    Content:         '/usr/lib/libSystem.B.dylib'268    ZeroPadBytes:    6269  - cmd:             LC_FUNCTION_STARTS270    cmdsize:         16271    dataoff:         16384272    datasize:        8273  - cmd:             LC_DATA_IN_CODE274    cmdsize:         16275    dataoff:         16392276    datasize:        0277LinkEditData:278  NameList:279    - n_strx:          2280      n_type:          0x1281      n_sect:          0282      n_desc:          1024283      n_value:         0284  StringTable:285    - ' '286    - dyld_stub_binder287    - ''288    - ''289    - ''290    - ''291    - ''292...293 294;--- System/Library/Frameworks/Foo.framework/Foo.tbd295{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": 5326}327 328;--- Bar.yaml329--- !mach-o330FileHeader:331  magic:           0xFEEDFACF332  cputype:         0x1000007333  cpusubtype:      0x3334  filetype:        0x6335  ncmds:           12336  sizeofcmds:      912337  flags:           0x100085338  reserved:        0x0339LoadCommands:340  - cmd:             LC_SEGMENT_64341    cmdsize:         312342    segname:         __TEXT343    vmaddr:          0344    vmsize:          8192345    fileoff:         0346    filesize:        8192347    maxprot:         5348    initprot:        5349    nsects:          3350    flags:           0351    Sections:352      - sectname:        __text353        segname:         __TEXT354        addr:            0xBB0355        size:            8356        offset:          0xBB0357        align:           4358        reloff:          0x0359        nreloc:          0360        flags:           0x80000400361        reserved1:       0x0362        reserved2:       0x0363        reserved3:       0x0364        content:         554889E531C05DC3365      - sectname:        __unwind_info366        segname:         __TEXT367        addr:            0xBB8368        size:            4152369        offset:          0xBB8370        align:           2371        reloff:          0x0372        nreloc:          0373        flags:           0x0374        reserved1:       0x0375        reserved2:       0x0376        reserved3:       0x0377        content:         010000001C000000010000002000000000000000200000000200000000000001B00B00003800000038000000B80B00000000000038000000030000000C0001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000378      - sectname:        __eh_frame379        segname:         __TEXT380        addr:            0x1BF0381        size:            24382        offset:          0x1BF0383        align:           3384        reloff:          0x0385        nreloc:          0386        flags:           0x6000000B387        reserved1:       0x0388        reserved2:       0x0389        reserved3:       0x0390        content:         1400000000000000017A520001781001100C070890010000391  - cmd:             LC_SEGMENT_64392    cmdsize:         152393    segname:         __DATA_CONST394    vmaddr:          8192395    vmsize:          4096396    fileoff:         8192397    filesize:        4096398    maxprot:         3399    initprot:        3400    nsects:          1401    flags:           16402    Sections:403      - sectname:        __objc_imageinfo404        segname:         __DATA_CONST405        addr:            0x2000406        size:            8407        offset:          0x2000408        align:           0409        reloff:          0x0410        nreloc:          0411        flags:           0x0412        reserved1:       0x0413        reserved2:       0x0414        reserved3:       0x0415        content:         '0000000040000000'416  - cmd:             LC_SEGMENT_64417    cmdsize:         72418    segname:         __LINKEDIT419    vmaddr:          12288420    vmsize:          80421    fileoff:         12288422    filesize:        80423    maxprot:         1424    initprot:        1425    nsects:          0426    flags:           0427  - cmd:             LC_DYLD_INFO_ONLY428    cmdsize:         48429    rebase_off:      0430    rebase_size:     0431    bind_off:        0432    bind_size:       0433    weak_bind_off:   0434    weak_bind_size:  0435    lazy_bind_off:   0436    lazy_bind_size:  0437    export_off:      12288438    export_size:     16439  - cmd:             LC_SYMTAB440    cmdsize:         24441    symoff:          12312442    nsyms:           2443    stroff:          12344444    strsize:         24445  - cmd:             LC_DYSYMTAB446    cmdsize:         80447    ilocalsym:       0448    nlocalsym:       0449    iextdefsym:      0450    nextdefsym:      1451    iundefsym:       1452    nundefsym:       1453    tocoff:          0454    ntoc:            0455    modtaboff:       0456    nmodtab:         0457    extrefsymoff:    0458    nextrefsyms:     0459    indirectsymoff:  0460    nindirectsyms:   0461    extreloff:       0462    nextrel:         0463    locreloff:       0464    nlocrel:         0465  - cmd:             LC_ID_DYLIB466    cmdsize:         80467    dylib:468      name:            24469      timestamp:       0470      current_version: 65536471      compatibility_version: 65536472    Content:         '/System/Library/Frameworks/Bar.framework/Versions/A/Bar'473    ZeroPadBytes:    1474  - cmd:             LC_UUID475    cmdsize:         24476    uuid:            4C4C4415-5555-3144-A11E-3C68D85CC061477  - cmd:             LC_BUILD_VERSION478    cmdsize:         32479    platform:        1480    minos:           851968481    sdk:             983040482    ntools:          1483    Tools:484      - tool:            4485        version:         1245184486  - cmd:             LC_LOAD_DYLIB487    cmdsize:         56488    dylib:489      name:            24490      timestamp:       0491      current_version: 88539136492      compatibility_version: 65536493    Content:         '/usr/lib/libSystem.B.dylib'494    ZeroPadBytes:    6495  - cmd:             LC_FUNCTION_STARTS496    cmdsize:         16497    dataoff:         12304498    datasize:        8499  - cmd:             LC_DATA_IN_CODE500    cmdsize:         16501    dataoff:         12312502    datasize:        0503LinkEditData:504  ExportTrie:505    TerminalSize:    0506    NodeOffset:      0507    Name:            ''508    Flags:           0x0509    Address:         0x0510    Other:           0x0511    ImportName:      ''512    Children:513      - TerminalSize:    3514        NodeOffset:      8515        Name:            _bar516        Flags:           0x0517        Address:         0xBB0518        Other:           0x0519        ImportName:      ''520  NameList:521    - n_strx:          2522      n_type:          0xF523      n_sect:          1524      n_desc:          0525      n_value:         2992526    - n_strx:          7527      n_type:          0x1528      n_sect:          0529      n_desc:          256530      n_value:         0531  StringTable:532    - ' '533    - _bar534    - dyld_stub_binder535  FunctionStarts:  [ 0xBB0 ]536...537 538;--- usr/lib/libBaz.tbd539{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": 5570}571 572;--- BadFoo/Foo.framework/Foo.tbd573{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": 5604}605 606;--- expected.tbd607{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": 5638}639