brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.5 KiB · 0c5521e Raw
340 lines · plain
1## This test verifies that the linkedit segment is2## laid out in the right order.3 4# RUN: yaml2obj %s -o %t.original5# RUN: llvm-objcopy %t.original %t.copy6# RUN: obj2yaml %t.copy > %t.yaml7## Print the results several times in order to capture the linkedit offsets8## in the order they are needed, but still following the order of the load9## commands where they appear.10# RUN: cat %t.yaml %t.yaml %t.yaml | FileCheck %s11 12# CHECK: cmd:             LC_SEGMENT_6413# CHECK: segname:         __LINKEDIT14# CHECK: fileoff:         [[#LINKEDIT_FILEOFF:]]15# CHECK: filesize:        [[#LINKEDIT_FILESIZE:]]16 17# CHECK: cmd:             LC_DYLD_CHAINED_FIXUPS18# CHECK: dataoff:         [[#CHAINED_FIXUPS_FILEOFF: LINKEDIT_FILEOFF]]19# CHECK: datasize:        [[#CHAINED_FIXUPS_FILESIZE:]]20 21# CHECK: cmd:             LC_DYLD_EXPORTS_TRIE22# CHECK: dataoff:         [[#DYLD_EXPORTS_TRIE_FILEOFF: CHAINED_FIXUPS_FILEOFF + CHAINED_FIXUPS_FILESIZE]]23# CHECK: datasize:        [[#DYLD_EXPORTS_TRIE_FILESIZE:]]24 25## Jump over LC_SYMTAB and LC_DYSYMTAB, which will be checked during26## later.27 28# CHECK: cmd:             LC_FUNCTION_STARTS29# CHECK: dataoff:         [[#FUNCTION_STARTS_FILEOFF: DYLD_EXPORTS_TRIE_FILEOFF + DYLD_EXPORTS_TRIE_FILESIZE]]30# CHECK: datasize:        [[#FUNCTION_STARTS_FILESIZE:]]31 32# CHECK: cmd:             LC_DATA_IN_CODE33# CHECK: dataoff:         [[#DATA_IN_CODE_FILEOFF: FUNCTION_STARTS_FILEOFF + FUNCTION_STARTS_FILESIZE]]34# CHECK: datasize:        [[#DATA_IN_CODE_FILESIZE:]]35 36## Jump over LC_CODE_SIGNATURE, which needs to be checked last37 38# CHECK: --- !mach-o39 40# CHECK: cmd:             LC_SYMTAB41# CHECK: symoff:          [[#SYMTAB_SYMOFF: DATA_IN_CODE_FILEOFF + DATA_IN_CODE_FILESIZE]]42# CHECK: nsyms:           [[#SYMTAB_NSYMS:]]43 44## Skip over the strings table offset/size (part of LC_SYMTAB) until next loop.45 46# CHECK: cmd:             LC_DYSYMTAB47# CHECK: indirectsymoff:  [[#DYSYMTAB_INDIRECTSYMOFF: SYMTAB_SYMOFF + mul(SYMTAB_NSYMS, 16)]]48# CHECK: nindirectsyms:   [[#DYSYMTAB_NINDIRECTSYMS:]]49 50# CHECK: --- !mach-o51 52# CHECK: cmd:             LC_SYMTAB53# CHECK: stroff:          [[#SYMTAB_STROFF: DYSYMTAB_INDIRECTSYMOFF + mul(DYSYMTAB_NINDIRECTSYMS, 4)]]54# CHECK: strsize:         [[#SYMTAB_STRSIZE:]]55 56# CHECK: cmd:             LC_CODE_SIGNATURE57## LC_CODE_SIGNATURE needs to be aligned to 16 bytes boundaries.58# CHECK: dataoff:         [[#CODE_SIGNATURE_FILEOFF: mul(div(SYMTAB_STROFF + SYMTAB_STRSIZE + 8, 16), 16)]]59# CHECK: datasize:        [[#CODE_SIGNATURE_FILESIZE:LINKEDIT_FILEOFF + LINKEDIT_FILESIZE - CODE_SIGNATURE_FILEOFF]]60 61--- !mach-o62FileHeader:63  magic:           0xFEEDFACF64  cputype:         0x100000765  cpusubtype:      0x366  filetype:        0x267  ncmds:           1868  sizeofcmds:      103269  flags:           0x21008570  reserved:        0x071LoadCommands:72  - cmd:             LC_SEGMENT_6473    cmdsize:         7274    segname:         __PAGEZERO75    vmaddr:          076    vmsize:          429496729677    fileoff:         078    filesize:        079    maxprot:         080    initprot:        081    nsects:          082    flags:           083  - cmd:             LC_SEGMENT_6484    cmdsize:         31285    segname:         __TEXT86    vmaddr:          429496729687    vmsize:          1638488    fileoff:         089    filesize:        1638490    maxprot:         591    initprot:        592    nsects:          393    flags:           094    Sections:95      - sectname:        __text96        segname:         __TEXT97        addr:            0x100003F9C98        size:            1699        offset:          0x3F9C100        align:           2101        reloff:          0x0102        nreloc:          0103        flags:           0x80000400104        reserved1:       0x0105        reserved2:       0x0106        reserved3:       0x0107        content:         E80B000000E80C000000C39000000000108      - sectname:        __stubs109        segname:         __TEXT110        addr:            0x100003FAC111        size:            12112        offset:          0x3FAC113        align:           1114        reloff:          0x0115        nreloc:          0116        flags:           0x80000408117        reserved1:       0x0118        reserved2:       0x6119        reserved3:       0x0120        content:         FF254E000000FF2550000000121      - sectname:        __unwind_info122        segname:         __TEXT123        addr:            0x100003FB8124        size:            72125        offset:          0x3FB8126        align:           2127        reloff:          0x0128        nreloc:          0129        flags:           0x0130        reserved1:       0x0131        reserved2:       0x0132        reserved3:       0x0133        content:         010000001C000000000000001C000000000000001C000000020000009C3F00003400000034000000AD3F00000000000034000000030000000C000100100001000000000000000000134  - cmd:             LC_SEGMENT_64135    cmdsize:         152136    segname:         __DATA_CONST137    vmaddr:          4294983680138    vmsize:          16384139    fileoff:         16384140    filesize:        16384141    maxprot:         3142    initprot:        3143    nsects:          1144    flags:           16145    Sections:146      - sectname:        __got147        segname:         __DATA_CONST148        addr:            0x100004000149        size:            16150        offset:          0x4000151        align:           3152        reloff:          0x0153        nreloc:          0154        flags:           0x6155        reserved1:       0x2156        reserved2:       0x0157        reserved3:       0x0158        content:         '00000000000010800100000000000080'159  - cmd:             LC_SEGMENT_64160    cmdsize:         72161    segname:         __LINKEDIT162    vmaddr:          4295000064163    vmsize:          16384164    fileoff:         32768165    filesize:        719166    maxprot:         1167    initprot:        1168    nsects:          0169    flags:           0170  - cmd:             LC_DYLD_CHAINED_FIXUPS171    cmdsize:         16172    dataoff:         32768173    datasize:        104174  - cmd:             LC_DYLD_EXPORTS_TRIE175    cmdsize:         16176    dataoff:         32872177    datasize:        48178  - cmd:             LC_SYMTAB179    cmdsize:         24180    symoff:          32936181    nsyms:           4182    stroff:          33016183    strsize:         48184  - cmd:             LC_DYSYMTAB185    cmdsize:         80186    ilocalsym:       0187    nlocalsym:       0188    iextdefsym:      0189    nextdefsym:      2190    iundefsym:       2191    nundefsym:       2192    tocoff:          0193    ntoc:            0194    modtaboff:       0195    nmodtab:         0196    extrefsymoff:    0197    nextrefsyms:     0198    indirectsymoff:  33000199    nindirectsyms:   4200    extreloff:       0201    nextrel:         0202    locreloff:       0203    nlocrel:         0204  - cmd:             LC_LOAD_DYLINKER205    cmdsize:         32206    name:            12207    Content:         '/usr/lib/dyld'208    ZeroPadBytes:    7209  - cmd:             LC_UUID210    cmdsize:         24211    uuid:            F74FD957-51B1-3D8E-AE70-D8A248BB5D93212  - cmd:             LC_BUILD_VERSION213    cmdsize:         32214    platform:        1215    minos:           786432216    sdk:             787200217    ntools:          1218    Tools:219      - tool:            3220        version:         50069504221  - cmd:             LC_SOURCE_VERSION222    cmdsize:         16223    version:         0224  - cmd:             LC_MAIN225    cmdsize:         24226    entryoff:        16284227    stacksize:       0228  - cmd:             LC_LOAD_DYLIB229    cmdsize:         56230    dylib:231      name:            24232      timestamp:       2233      current_version: 0234      compatibility_version: 0235    Content:         libFoo-chained-fixups.dylib236    ZeroPadBytes:    5237  - cmd:             LC_LOAD_DYLIB238    cmdsize:         56239    dylib:240      name:            24241      timestamp:       2242      current_version: 85943299243      compatibility_version: 65536244    Content:         '/usr/lib/libSystem.B.dylib'245    ZeroPadBytes:    6246  - cmd:             LC_FUNCTION_STARTS247    cmdsize:         16248    dataoff:         32920249    datasize:        8250  - cmd:             LC_DATA_IN_CODE251    cmdsize:         16252    dataoff:         32928253    datasize:        8254  - cmd:             LC_CODE_SIGNATURE255    cmdsize:         16256    dataoff:         33072257    datasize:        415258LinkEditData:259  ExportTrie:260    TerminalSize:    0261    NodeOffset:      0262    Name:            ''263    Flags:           0x0264    Address:         0x0265    Other:           0x0266    ImportName:      ''267    Children:268      - TerminalSize:    0269        NodeOffset:      5270        Name:            _271        Flags:           0x0272        Address:         0x0273        Other:           0x0274        ImportName:      ''275        Children:276          - TerminalSize:    2277            NodeOffset:      33278            Name:            _mh_execute_header279            Flags:           0x0280            Address:         0x0281            Other:           0x0282            ImportName:      ''283          - TerminalSize:    3284            NodeOffset:      37285            Name:            main286            Flags:           0x0287            Address:         0x3F9C288            Other:           0x0289            ImportName:      ''290  NameList:291    - n_strx:          2292      n_type:          0xF293      n_sect:          1294      n_desc:          16295      n_value:         4294967296296    - n_strx:          22297      n_type:          0xF298      n_sect:          1299      n_desc:          0300      n_value:         4294983580301    - n_strx:          28302      n_type:          0x1303      n_sect:          0304      n_desc:          256305      n_value:         0306    - n_strx:          33307      n_type:          0x1308      n_sect:          0309      n_desc:          384310      n_value:         0311  StringTable:312    - ' '313    - __mh_execute_header314    - _main315    - _foo316    - _weak_foo317    - ''318    - ''319    - ''320    - ''321    - ''322  IndirectSymbols: [ 0x2, 0x3, 0x2, 0x3 ]323  FunctionStarts:  [ 0x3F9C ]324  ChainedFixups:   [ 0x0, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x50, 0x0,325                     0x0, 0x0, 0x58, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0,326                     0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,327                     0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,328                     0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0,329                     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0,330                     0x0, 0x10, 0x6, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0,331                     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0,332                     0x1, 0x2, 0x0, 0x0, 0xFD, 0xC, 0x0, 0x0, 0x0, 0x5F,333                     0x66, 0x6F, 0x6F, 0x0, 0x5F, 0x77, 0x65, 0x61, 0x6B,334                     0x5F, 0x66, 0x6F, 0x6F, 0x0 ]335  DataInCode:336    - Offset:          0x3FA8337      Length:          4338      Kind:            0x4339...340