forked from OSchip/llvm-project
127 lines
3.2 KiB
YAML
127 lines
3.2 KiB
YAML
# RUN: ld64.lld -arch armv7 %s %p/Inputs/arm-shims.yaml \
|
|
# RUN: -dylib %p/Inputs/armv7/libSystem.yaml -o %t
|
|
# RUN: llvm-readobj -S --section-data %t | FileCheck %s
|
|
#
|
|
# Test b from arm to thumb or vice versa has shims added.s
|
|
#
|
|
#
|
|
|
|
--- !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, 0xFF, 0xF7, 0xFE, 0xEF, 0xFF, 0xF7,
|
|
0xFB, 0xBF, 0x00, 0x00, 0x00, 0xF0, 0x20, 0xE3,
|
|
0xFA, 0xFF, 0xFF, 0xFA, 0xF9, 0xFF, 0xFF, 0xEA ]
|
|
relocations:
|
|
- offset: 0x00000014
|
|
type: ARM_RELOC_BR24
|
|
length: 2
|
|
pc-rel: true
|
|
extern: true
|
|
symbol: 3
|
|
- offset: 0x00000010
|
|
type: ARM_RELOC_BR24
|
|
length: 2
|
|
pc-rel: true
|
|
extern: true
|
|
symbol: 3
|
|
- offset: 0x00000006
|
|
type: ARM_THUMB_RELOC_BR22
|
|
length: 2
|
|
pc-rel: true
|
|
extern: true
|
|
symbol: 2
|
|
- offset: 0x00000002
|
|
type: ARM_THUMB_RELOC_BR22
|
|
length: 2
|
|
pc-rel: true
|
|
extern: true
|
|
symbol: 2
|
|
global-symbols:
|
|
- name: _a1
|
|
type: N_SECT
|
|
scope: [ N_EXT ]
|
|
sect: 1
|
|
value: 0x000000000000000C
|
|
- name: _t1
|
|
type: N_SECT
|
|
scope: [ N_EXT ]
|
|
sect: 1
|
|
desc: [ N_ARM_THUMB_DEF ]
|
|
value: 0x0000000000000000
|
|
undefined-symbols:
|
|
- name: _a2
|
|
type: N_UNDF
|
|
scope: [ N_EXT ]
|
|
value: 0x0000000000000000
|
|
- name: _t2
|
|
type: N_UNDF
|
|
scope: [ N_EXT ]
|
|
value: 0x0000000000000000
|
|
|
|
...
|
|
|
|
# CHECK: Section {
|
|
# CHECK: Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00)
|
|
# CHECK: Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
|
|
# CHECK: SectionData (
|
|
# CHECK: 0000: 00BF00F0 10E800F0 19B80000 00F020E3
|
|
# CHECK: 0010: 000000FA 0F0000EA 00BFFFF7 F8EF00F0
|
|
# CHECK: 0020: 07B80000 00F020E3 F4FFFFFA 050000EA
|
|
# CHECK: 0030: DFF804C0 FF446047 D4FFFFFF DFF804C0
|
|
# CHECK: 0040: FF446047 E0FFFFFF 04C09FE5 0CC08FE0
|
|
# CHECK: 0050: 1CFF2FE1 ADFFFFFF 04C09FE5 0CC08FE0
|
|
# CHECK: 0060: 1CFF2FE1 B5FFFFFF
|
|
# CHECK: )
|
|
|
|
# When we get a good mach-o disassembler the above __text section content check can be change to be symbolic.
|
|
|
|
|
|
# Input file one:
|
|
#
|
|
# .align 2
|
|
# .code 16
|
|
# .globl _t1
|
|
# .thumb_func _t1
|
|
#_t1:
|
|
# nop
|
|
# blx _a2
|
|
# b _a2
|
|
#
|
|
# .code 32
|
|
# .align 2
|
|
# .globl _a1
|
|
#_a1:
|
|
# nop
|
|
# blx _t2
|
|
# b _t2
|
|
|
|
|
|
|
|
# Input file two:
|
|
#
|
|
# .align 2
|
|
# .code 16
|
|
# .globl _t2
|
|
# .thumb_func _t2
|
|
#_t2:
|
|
# nop
|
|
# blx _a1
|
|
# b _a1
|
|
#
|
|
# .code 32
|
|
# .align 2
|
|
# .globl _a2
|
|
#_a2:
|
|
# nop
|
|
# blx _t1
|
|
# b _t1
|