diff options
Diffstat (limited to 'test/mach-o/parse-data-in-code-armv7.yaml')
-rw-r--r-- | test/mach-o/parse-data-in-code-armv7.yaml | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/test/mach-o/parse-data-in-code-armv7.yaml b/test/mach-o/parse-data-in-code-armv7.yaml new file mode 100644 index 0000000000000..29b483e7d7236 --- /dev/null +++ b/test/mach-o/parse-data-in-code-armv7.yaml @@ -0,0 +1,157 @@ +# RUN: lld -flavor darwin -arch armv7 -r -print_atoms %s -o %t | FileCheck %s +# RUN: lld -flavor darwin -arch armv7 -r -print_atoms %t -o %t2 | FileCheck %s +# RUN: lld -flavor darwin -arch armv7 -dylib %s -o %t3.dylib %p/Inputs/libSystem.yaml \ +# RUN: && llvm-objdump -macho -private-headers %t3.dylib | FileCheck --check-prefix=CHECK2 %s +# +# Test parsing LC_DATA_IN_CODE +# +# + +--- !mach-o +arch: armv7 +file-type: MH_OBJECT +flags: [ MH_SUBSECTIONS_VIA_SYMBOLS ] +sections: + - segment: __TEXT + section: __text + type: S_REGULAR + attributes: [ S_ATTR_PURE_INSTRUCTIONS, S_ATTR_SOME_INSTRUCTIONS ] + alignment: 2 + address: 0x0000000000000000 + content: [ 0x00, 0xBF, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x00, 0xBF, + 0x00, 0xF0, 0x20, 0xE3, 0x0A, 0x00, 0x00, 0x00, + 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, + 0x0D, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x20, 0xE3 ] +local-symbols: + - name: _foo_thumb + type: N_SECT + sect: 1 + desc: [ N_ARM_THUMB_DEF ] + value: 0x0000000000000000 + - name: _foo_arm + type: N_SECT + sect: 1 + value: 0x0000000000000018 +dataInCode: + - offset: 0x00000004 + length: 0x0004 + kind: DICE_KIND_DATA + - offset: 0x00000008 + length: 0x0004 + kind: DICE_KIND_JUMP_TABLE32 + - offset: 0x0000000C + length: 0x0004 + kind: DICE_KIND_JUMP_TABLE16 + - offset: 0x00000010 + length: 0x0004 + kind: DICE_KIND_JUMP_TABLE8 + - offset: 0x0000001C + length: 0x0004 + kind: DICE_KIND_DATA + - offset: 0x00000020 + length: 0x0004 + kind: DICE_KIND_JUMP_TABLE32 + - offset: 0x00000024 + length: 0x0004 + kind: DICE_KIND_JUMP_TABLE16 + - offset: 0x00000028 + length: 0x0004 + kind: DICE_KIND_JUMP_TABLE8 +... + + + +# CHECK: defined-atoms: +# CHECK: - name: _foo_thumb +# CHECK: references: +# CHECK: - kind: modeThumbCode +# CHECK: offset: 0 +# CHECK: - kind: modeData +# CHECK: offset: 4 +# CHECK: addend: 1 +# CHECK: - kind: modeData +# CHECK: offset: 8 +# CHECK: addend: 4 +# CHECK: - kind: modeData +# CHECK: offset: 12 +# CHECK: addend: 3 +# CHECK: - kind: modeData +# CHECK: offset: 16 +# CHECK: addend: 2 +# CHECK: - kind: modeThumbCode +# CHECK: offset: 20 +# CHECK: - name: _foo_arm +# CHECK: references: +# CHECK: - kind: modeData +# CHECK: offset: 4 +# CHECK: addend: 1 +# CHECK: - kind: modeData +# CHECK: offset: 8 +# CHECK: addend: 4 +# CHECK: - kind: modeData +# CHECK: offset: 12 +# CHECK: addend: 3 +# CHECK: - kind: modeData +# CHECK: offset: 16 +# CHECK: addend: 2 +# CHECK: - kind: modeArmCode +# CHECK: offset: 20 + + +# CHECK2: cmd LC_DATA_IN_CODE +# CHECK2: cmdsize 16 +# CHECK2: datasize 64 + + +# .code 16 +# .thumb_func _foo_thumb +#_foo_thumb: +# nop +# nop +# +# .data_region +# .long 0 +# .end_data_region +# +# .data_region jt32 +# .long 1 +# .end_data_region +# +# .data_region jt16 +# .long 2 +# .end_data_region +# +# .data_region jt8 +# .long 3 +# .end_data_region +# +# nop +# nop +# +# +# +# .code 32 +# .align 2 +#_foo_arm: +# nop +# +# .data_region +# .long 10 +# .end_data_region +# +# .data_region jt32 +# .long 11 +# .end_data_region +# +# .data_region jt16 +# .long 12 +# .end_data_region +# +# .data_region jt8 +# .long 13 +# .end_data_region +# +# nop +# |