| # RUN: ld64.lld -arch i386 -r -print_atoms %s -o %t | FileCheck %s |
| # |
| # Test parsing of non-lazy-pointer sections. |
| # |
| |
| --- !mach-o |
| arch: x86 |
| file-type: MH_OBJECT |
| flags: [ MH_SUBSECTIONS_VIA_SYMBOLS ] |
| has-UUID: false |
| OS: unknown |
| sections: |
| - segment: __TEXT |
| section: __text |
| type: S_REGULAR |
| attributes: [ S_ATTR_PURE_INSTRUCTIONS, S_ATTR_SOME_INSTRUCTIONS ] |
| address: 0x0000000000000000 |
| content: [ 0x55, 0x89, 0xE5, 0xE8, 0x00, 0x00, 0x00, 0x00, |
| 0x59, 0x8D, 0x81, 0x14, 0x00, 0x00, 0x00, 0x8D, |
| 0x81, 0x18, 0x00, 0x00, 0x00, 0x5D, 0xC3, 0x55, |
| 0x89, 0xE5, 0x5D, 0xC3 ] |
| relocations: |
| - offset: 0x00000011 |
| scattered: true |
| type: GENERIC_RELOC_LOCAL_SECTDIFF |
| length: 2 |
| pc-rel: false |
| value: 0x00000020 |
| - offset: 0x00000000 |
| scattered: true |
| type: GENERIC_RELOC_PAIR |
| length: 2 |
| pc-rel: false |
| value: 0x00000008 |
| - offset: 0x0000000B |
| scattered: true |
| type: GENERIC_RELOC_LOCAL_SECTDIFF |
| length: 2 |
| pc-rel: false |
| value: 0x0000001C |
| - offset: 0x00000000 |
| scattered: true |
| type: GENERIC_RELOC_PAIR |
| length: 2 |
| pc-rel: false |
| value: 0x00000008 |
| - segment: __IMPORT |
| section: __pointers |
| type: S_NON_LAZY_SYMBOL_POINTERS |
| attributes: [ ] |
| address: 0x000000000000001C |
| content: [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ] |
| indirect-syms: [ 2, 2147483648 ] |
| local-symbols: |
| - name: _foo |
| type: N_SECT |
| sect: 1 |
| value: 0x0000000000000017 |
| global-symbols: |
| - name: _get |
| type: N_SECT |
| scope: [ N_EXT ] |
| sect: 1 |
| value: 0x0000000000000000 |
| undefined-symbols: |
| - name: _bar |
| type: N_UNDF |
| scope: [ N_EXT ] |
| value: 0x0000000000000000 |
| ... |
| |
| |
| # CHECK:defined-atoms: |
| # CHECK: - ref-name: [[GOT1:L[L0-9]+]] |
| # CHECK: scope: hidden |
| # CHECK: type: got |
| # CHECK: content: [ 00, 00, 00, 00 ] |
| # CHECK: merge: by-content |
| # CHECK: - ref-name: [[GOT2:L[L0-9]+]] |
| # CHECK: scope: hidden |
| # CHECK: type: got |
| # CHECK: content: [ 00, 00, 00, 00 ] |
| # CHECK: merge: by-content |
| # CHECK: - name: _get |
| # CHECK: scope: global |
| # CHECK: content: [ 55, 89, E5, E8, 00, 00, 00, 00, 59, 8D, 81, 14, |
| # CHECK: 00, 00, 00, 8D, 81, 18, 00, 00, 00, 5D, C3 ] |
| # CHECK: references: |
| # CHECK: - kind: funcRel32 |
| # CHECK: offset: 11 |
| # CHECK: target: [[GOT1]] |
| # CHECK: - kind: funcRel32 |
| # CHECK: offset: 17 |
| # CHECK: target: [[GOT2]] |
| # CHECK: - name: _foo |
| # CHECK: content: [ 55, 89, E5, 5D, C3 ] |
| |
| |