# 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 ...