Add test for rebase opcodes. We didn't have one. NFC.

This will be used to test upcoming changes to improve binding opcode
emission to match the more compressed form ld64 can generate.

llvm-svn: 278400
This commit is contained in:
Pete Cooper 2016-08-11 20:31:50 +00:00
parent 1e885c529d
commit 91db988dfb
1 changed files with 161 additions and 0 deletions

View File

@ -0,0 +1,161 @@
# RUN: lld -flavor darwin -arch arm64 %s %p/Inputs/hello-world-arm64.yaml -o %t
# RUN: obj2yaml %t | FileCheck %s
#
--- !mach-o
arch: arm64
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: [ 0xFD, 0x7B, 0xBF, 0xA9, 0xFD, 0x03, 0x00, 0x91,
0x08, 0x00, 0x00, 0x90, 0x08, 0x01, 0x40, 0xF9,
0x00, 0x01, 0x40, 0xF9, 0x01, 0x00, 0x00, 0x90,
0x21, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x94,
0x00, 0x00, 0x80, 0x52, 0xFD, 0x7B, 0xC1, 0xA8,
0xC0, 0x03, 0x5F, 0xD6 ]
relocations:
- offset: 0x0000001C
type: ARM64_RELOC_BRANCH26
length: 2
pc-rel: true
extern: true
symbol: 5
- offset: 0x00000018
type: ARM64_RELOC_PAGEOFF12
length: 2
pc-rel: false
extern: true
symbol: 1
- offset: 0x00000014
type: ARM64_RELOC_PAGE21
length: 2
pc-rel: true
extern: true
symbol: 1
- offset: 0x0000000C
type: ARM64_RELOC_GOT_LOAD_PAGEOFF12
length: 2
pc-rel: false
extern: true
symbol: 4
- offset: 0x00000008
type: ARM64_RELOC_GOT_LOAD_PAGE21
length: 2
pc-rel: true
extern: true
symbol: 4
- segment: __TEXT
section: __cstring
type: S_CSTRING_LITERALS
attributes: [ ]
address: 0x000000000000002C
content: [ 0x68, 0x65, 0x6C, 0x6C, 0x6F, 0x0A, 0x00 ]
local-symbols:
- name: ltmp0
type: N_SECT
sect: 1
value: 0x0000000000000000
- name: l_.str
type: N_SECT
sect: 2
value: 0x000000000000002C
- name: ltmp1
type: N_SECT
sect: 2
value: 0x000000000000002C
global-symbols:
- name: _main
type: N_SECT
scope: [ N_EXT ]
sect: 1
value: 0x0000000000000000
undefined-symbols:
- name: ___stdoutp
type: N_UNDF
scope: [ N_EXT ]
value: 0x0000000000000000
- name: _fprintf
type: N_UNDF
scope: [ N_EXT ]
value: 0x0000000000000000
...
# CHECK: BindOpcodes:
# CHECK: - Opcode: BIND_OPCODE_SET_TYPE_IMM
# CHECK: Imm: 1
# CHECK: Symbol: ''
# CHECK: - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
# CHECK: Imm: 2
# CHECK: ULEBExtraData:
# CHECK: - 0x0000000000000000
# CHECK: Symbol: ''
# CHECK: - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
# CHECK: Imm: 1
# CHECK: Symbol: ''
# CHECK: - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
# CHECK: Imm: 0
# CHECK: Symbol: dyld_stub_binder
# CHECK: - Opcode: BIND_OPCODE_DO_BIND
# CHECK: Imm: 0
# CHECK: Symbol: ''
# CHECK: - Opcode: BIND_OPCODE_SET_TYPE_IMM
# CHECK: Imm: 1
# CHECK: Symbol: ''
# CHECK: - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
# CHECK: Imm: 2
# CHECK: ULEBExtraData:
# CHECK: - 0x0000000000000010
# CHECK: Symbol: ''
# CHECK: - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
# CHECK: Imm: 1
# CHECK: Symbol: ''
# CHECK: - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
# CHECK: Imm: 0
# CHECK: Symbol: ___stdoutp
# CHECK: - Opcode: BIND_OPCODE_DO_BIND
# CHECK: Imm: 0
# CHECK: Symbol: ''
# CHECK: - Opcode: BIND_OPCODE_DONE
# CHECK: Imm: 0
# CHECK: Symbol: ''
# CHECK: LazyBindOpcodes:
# CHECK: - Opcode: BIND_OPCODE_SET_TYPE_IMM
# CHECK: Imm: 1
# CHECK: Symbol: ''
# CHECK: - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
# CHECK: Imm: 2
# CHECK: ULEBExtraData:
# CHECK: - 0x0000000000000018
# CHECK: Symbol: ''
# CHECK: - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
# CHECK: Imm: 1
# CHECK: Symbol: ''
# CHECK: - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
# CHECK: Imm: 0
# CHECK: Symbol: _fprintf
# CHECK: - Opcode: BIND_OPCODE_DO_BIND
# CHECK: Imm: 0
# CHECK: Symbol: ''
# CHECK: - Opcode: BIND_OPCODE_DONE
# CHECK: Imm: 0
# CHECK: Symbol: ''
# CHECK: - Opcode: BIND_OPCODE_DONE
# CHECK: Imm: 0
# CHECK: Symbol: ''
# CHECK: - Opcode: BIND_OPCODE_DONE
# CHECK: Imm: 0
# CHECK: Symbol: ''
# CHECK: - Opcode: BIND_OPCODE_DONE
# CHECK: Imm: 0
# CHECK: Symbol: ''
# CHECK: - Opcode: BIND_OPCODE_DONE
# CHECK: Imm: 0
# CHECK: Symbol: ''