blob: 11dbc3c3bdc0dc00c6c160cb5e75639f4068d528 [file] [log] [blame]
# REQUIRES: x86
## This tests that we can handle relocations that are not sorted by address.
## llvm-mc isn't able to emit such a file, hence the use of yaml2obj. ld64
## may emit files with unsorted relocations in `-r` mode, so we need to support
## this.
# RUN: yaml2obj %s -o %t.o
# RUN: %lld -dylib -o %t %t.o
# RUN: llvm-objdump --macho -d %t | FileCheck %s
# CHECK: _foo:
# CHECK-NEXT: movq _bar(%rip), %rax
# CHECK-NEXT: _bar:
# CHECK-NEXT: movq _baz(%rip), %rax
# CHECK-NEXT: _baz:
# CHECK-NEXT: movq _foo(%rip), %rax
--- !mach-o
FileHeader:
magic: 0xFEEDFACF
cputype: 0x1000007
cpusubtype: 0x3
filetype: 0x1
ncmds: 2
sizeofcmds: 280
flags: 0x2000
reserved: 0x0
LoadCommands:
- cmd: LC_SEGMENT_64
cmdsize: 152
segname: ''
vmaddr: 0
vmsize: 21
fileoff: 312
filesize: 21
maxprot: 7
initprot: 7
nsects: 1
flags: 0
Sections:
- sectname: __text
segname: __TEXT
addr: 0x0
size: 21
offset: 0x138
align: 0
reloff: 0x150
nreloc: 3
flags: 0x80000400
reserved1: 0x0
reserved2: 0x0
reserved3: 0x0
content: 488B0500000000488B0500000000488B0500000000
relocations:
- address: 0x3
symbolnum: 1
pcrel: true
length: 2
extern: true
type: 1
scattered: false
value: 0
- address: 0x11
symbolnum: 0
pcrel: true
length: 2
extern: true
type: 1
scattered: false
value: 0
- address: 0xA
symbolnum: 2
pcrel: true
length: 2
extern: true
type: 1
scattered: false
value: 0
- cmd: LC_SYMTAB
cmdsize: 24
symoff: 360
nsyms: 3
stroff: 408
strsize: 16
LinkEditData:
NameList:
- n_strx: 11
n_type: 0xE
n_sect: 1
n_desc: 0
n_value: 0
- n_strx: 6
n_type: 0xE
n_sect: 1
n_desc: 0
n_value: 7
- n_strx: 1
n_type: 0xE
n_sect: 1
n_desc: 0
n_value: 14
StringTable:
- ''
- _baz
- _bar
- _foo
...