| # Test that obj2yaml + yaml2obj can round-trip mach-o executables with |
| # raw __LINKEDIT segments. |
| # |
| # RUN: yaml2obj %s | obj2yaml --raw-segment=data --raw-segment=linkedit | FileCheck %s |
| # |
| # This file was produced using: |
| # echo "int ext;" > a.c |
| # xcrun --sdk iphoneos clang -target arm64-apple-ios15.1 -o a.o a.c -c |
| # xcrun --sdk iphoneos clang -target arm64-apple-ios15.1 -dynamiclib a.o -o liba.dylib -install_name @executable_path/liba.dylib |
| # echo "extern int ext;" > b.c |
| # echo "int padding;" >> b.c |
| # echo "int *p = &ext + 4;" >> b.c |
| # xcrun --sdk iphoneos clang -target arm64-apple-ios15.1 -o b.o b.c -c |
| # xcrun --sdk iphoneos clang -target arm64-apple-ios15.1 -dynamiclib b.o -o libfixups.dylib -install_name @executable_path/libfixups.dylib -L. -la |
| # |
| # CHECK: - sectname: __data |
| # CHECK: segname: __DATA |
| # CHECK: content: '0000001000000080' |
| # CHECK: __LINKEDIT: 0000000020000000480000004C000000010000000100000000000000000000000300000000000000100000000000000018000000004006000040000000000000000000000100000001020000005F6578740000000000000000015F700006040080800100000000000000000000000000020000000F02000000400000000000000500000001000001000000000000000020005F70005F65787400000000000000 |
| |
| --- !mach-o |
| FileHeader: |
| magic: 0xFEEDFACF |
| cputype: 0x100000C |
| cpusubtype: 0x0 |
| filetype: 0x6 |
| ncmds: 16 |
| sizeofcmds: 816 |
| flags: 0x100085 |
| reserved: 0x0 |
| LoadCommands: |
| - cmd: LC_SEGMENT_64 |
| cmdsize: 152 |
| segname: __TEXT |
| vmaddr: 0 |
| vmsize: 16384 |
| fileoff: 0 |
| filesize: 16384 |
| maxprot: 5 |
| initprot: 5 |
| nsects: 1 |
| flags: 0 |
| Sections: |
| - sectname: __text |
| segname: __TEXT |
| addr: 0x4000 |
| size: 0 |
| offset: 0x4000 |
| align: 0 |
| reloff: 0x0 |
| nreloc: 0 |
| flags: 0x80000400 |
| reserved1: 0x0 |
| reserved2: 0x0 |
| reserved3: 0x0 |
| content: '' |
| - cmd: LC_SEGMENT_64 |
| cmdsize: 152 |
| segname: __DATA |
| vmaddr: 16384 |
| vmsize: 16384 |
| fileoff: 16384 |
| filesize: 16384 |
| maxprot: 3 |
| initprot: 3 |
| nsects: 1 |
| flags: 0 |
| Sections: |
| - sectname: __data |
| segname: __DATA |
| addr: 0x4000 |
| size: 8 |
| offset: 0x4000 |
| align: 3 |
| reloff: 0x0 |
| nreloc: 0 |
| flags: 0x0 |
| reserved1: 0x0 |
| reserved2: 0x0 |
| reserved3: 0x0 |
| content: '0000001000000080' |
| - cmd: LC_SEGMENT_64 |
| cmdsize: 72 |
| segname: __LINKEDIT |
| vmaddr: 32768 |
| vmsize: 16384 |
| fileoff: 32768 |
| filesize: 160 |
| maxprot: 1 |
| initprot: 1 |
| nsects: 0 |
| flags: 0 |
| - cmd: LC_ID_DYLIB |
| cmdsize: 64 |
| dylib: |
| name: 24 |
| timestamp: 1 |
| current_version: 0 |
| compatibility_version: 0 |
| Content: '@executable_path/libfixups.dylib' |
| ZeroPadBytes: 8 |
| - cmd: LC_DYLD_CHAINED_FIXUPS |
| cmdsize: 16 |
| dataoff: 32768 |
| datasize: 88 |
| - cmd: LC_DYLD_EXPORTS_TRIE |
| cmdsize: 16 |
| dataoff: 32856 |
| datasize: 16 |
| - cmd: LC_SYMTAB |
| cmdsize: 24 |
| symoff: 32880 |
| nsyms: 2 |
| stroff: 32912 |
| strsize: 16 |
| - cmd: LC_DYSYMTAB |
| cmdsize: 80 |
| ilocalsym: 0 |
| nlocalsym: 0 |
| iextdefsym: 0 |
| nextdefsym: 1 |
| iundefsym: 1 |
| nundefsym: 1 |
| tocoff: 0 |
| ntoc: 0 |
| modtaboff: 0 |
| nmodtab: 0 |
| extrefsymoff: 0 |
| nextrefsyms: 0 |
| indirectsymoff: 0 |
| nindirectsyms: 0 |
| extreloff: 0 |
| nextrel: 0 |
| locreloff: 0 |
| nlocrel: 0 |
| - cmd: LC_UUID |
| cmdsize: 24 |
| uuid: 56F7BCE0-C1A7-38E3-A90D-742D8E3D5FA9 |
| - cmd: LC_BUILD_VERSION |
| cmdsize: 32 |
| platform: 2 |
| minos: 983296 |
| sdk: 983552 |
| ntools: 1 |
| Tools: |
| - tool: 3 |
| version: 46596096 |
| - cmd: LC_SOURCE_VERSION |
| cmdsize: 16 |
| version: 0 |
| - cmd: LC_ENCRYPTION_INFO_64 |
| cmdsize: 24 |
| cryptoff: 16384 |
| cryptsize: 0 |
| cryptid: 0 |
| pad: 0 |
| - cmd: LC_LOAD_DYLIB |
| cmdsize: 56 |
| dylib: |
| name: 24 |
| timestamp: 2 |
| current_version: 0 |
| compatibility_version: 0 |
| Content: '@executable_path/liba.dylib' |
| ZeroPadBytes: 5 |
| - cmd: LC_LOAD_DYLIB |
| cmdsize: 56 |
| dylib: |
| name: 24 |
| timestamp: 2 |
| current_version: 85917696 |
| compatibility_version: 65536 |
| Content: '/usr/lib/libSystem.B.dylib' |
| ZeroPadBytes: 6 |
| - cmd: LC_FUNCTION_STARTS |
| cmdsize: 16 |
| dataoff: 32872 |
| datasize: 8 |
| - cmd: LC_DATA_IN_CODE |
| cmdsize: 16 |
| dataoff: 32880 |
| datasize: 0 |
| __LINKEDIT: 0000000020000000480000004C000000010000000100000000000000000000000300000000000000100000000000000018000000004006000040000000000000000000000100000001020000005F6578740000000000000000015F700006040080800100000000000000000000000000020000000F02000000400000000000000500000001000001000000000000000020005F70005F65787400000000000000 |
| ... |