99 changes: 99 additions & 0 deletions lld/test/MachO/invalid/invalid-relocation.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# REQUIRES: x86
# RUN: yaml2obj %s -o %t.o
# RUN: not lld -flavor darwinnew -o %t %t.o 2>&1 | FileCheck %s -DFILE=%t.o
#
# CHECK: error: invalid relocation at offset 1 of __TEXT,__text in [[FILE]]: relocations of type 0 must not be pcrel

!mach-o
FileHeader:
magic: 0xFEEDFACF
cputype: 0x01000007
cpusubtype: 0x00000003
filetype: 0x00000001
ncmds: 4
sizeofcmds: 280
flags: 0x00000000
reserved: 0x00000000
LoadCommands:
- cmd: LC_SEGMENT_64
cmdsize: 152
segname: ''
vmaddr: 0
vmsize: 9
fileoff: 312
filesize: 9
maxprot: 7
initprot: 7
nsects: 1
flags: 0
Sections:
- sectname: __text
segname: __TEXT
addr: 0x0000000000000000
size: 9
offset: 0x00000138
align: 0
reloff: 0x00000144
nreloc: 1
flags: 0x80000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
content: '000000000000000000'
relocations:
- address: 0x00000001
symbolnum: 1
pcrel: true
length: 3
extern: true
type: 0
scattered: false
value: 0
- cmd: LC_BUILD_VERSION
cmdsize: 24
platform: 1
minos: 659200
sdk: 0
ntools: 0
- cmd: LC_SYMTAB
cmdsize: 24
symoff: 332
nsyms: 2
stroff: 364
strsize: 12
- cmd: LC_DYSYMTAB
cmdsize: 80
ilocalsym: 0
nlocalsym: 0
iextdefsym: 0
nextdefsym: 2
iundefsym: 2
nundefsym: 0
tocoff: 0
ntoc: 0
modtaboff: 0
nmodtab: 0
extrefsymoff: 0
nextrefsyms: 0
indirectsymoff: 0
nindirectsyms: 0
extreloff: 0
nextrel: 0
locreloff: 0
nlocrel: 0
LinkEditData:
NameList:
- n_strx: 1
n_type: 0x0F
n_sect: 1
n_desc: 0
n_value: 1
- n_strx: 6
n_type: 0x0F
n_sect: 1
n_desc: 0
n_value: 9
StringTable:
- ''
- _foo
- _main
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,15 +1,22 @@
## This yaml file was originally generated from linking the following source
## input with ld64:
# REQUIRES: x86
# RUN: mkdir -p %t
# RUN: yaml2obj %s -o %t/libnoid.dylib
# RUN: echo ".globl _main; .text; _main: ret" | llvm-mc -filetype=obj -triple=x86_64-apple-darwin -o %t/no-id-dylink.o
# RUN: not lld -flavor darwinnew -o %t/no-id-dylink -Z -L%t -lnoid %t/no-id-dylink.o 2>&1 | FileCheck %s
# CHECK: error: dylib {{.*}}libnoid.dylib missing LC_ID_DYLIB load command

## This YAML file was originally generated from linking the following source
## input with ld64 and passing the resulting binary through obj2yaml:
##
## .section __TEXT,__cstring
## .globl _hello_world
##
## _hello_world:
## .asciz "Hello world!\n"
##
## Then we deleted the LC_ID_DYLIB command from the YAML file.
## Then we deleted the LC_ID_DYLIB command from the file.

--- !mach-o
!mach-o
FileHeader:
magic: 0xFEEDFACF
cputype: 0x01000007
Expand Down Expand Up @@ -157,4 +164,3 @@ LinkEditData:
- ' '
- _hello_world
- ''
...
File renamed without changes.
11 changes: 11 additions & 0 deletions lld/test/MachO/invalid/undefined-symbol.s
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# REQUIRES: x86
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
# RUN: not lld -flavor darwinnew -Z -o %t %t.o 2>&1 | FileCheck %s -DBASENAME=%basename_t
# CHECK: error: undefined symbol _foo, referenced from [[BASENAME]]

.globl _main
.text
_main:
callq _foo
movq $0, %rax
retq
13 changes: 0 additions & 13 deletions lld/test/MachO/no-id-dylink.s

This file was deleted.

6 changes: 3 additions & 3 deletions lld/test/MachO/segments.s
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
# CHECK: Cmd: LC_SEGMENT_64
# CHECK: Name: __PAGEZERO
# CHECK: Size: 72
# CHECK: vmaddr:
# CHECK: vmsize:
# CHECK: vmaddr: 0x0
# CHECK: vmsize: 0x100000000
# CHECK: fileoff: 0
# CHECK: filesize: 0
## The kernel won't execute a binary with the wrong protections for __PAGEZERO.
Expand All @@ -23,7 +23,7 @@
# CHECK: Cmd: LC_SEGMENT_64
# CHECK: Name: __TEXT
# CHECK: Size: 152
# CHECK: vmaddr:
# CHECK: vmaddr: 0x100000000
# CHECK: vmsize:
## dyld3 assumes that the __TEXT segment starts from the file header
# CHECK: fileoff: 0
Expand Down
12 changes: 6 additions & 6 deletions lld/test/MachO/x86-64-reloc-signed.s
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,18 @@
# RUN: llvm-objdump -D %t | FileCheck %s

# CHECK: <_main>:
# CHECK-NEXT: movl {{.*}} # 2000 <_s>
# CHECK-NEXT: movl {{.*}} # 100001000 <_s>
# CHECK-NEXT: callq {{.*}}
# CHECK-NEXT: movl {{.*}} # 2002 <_s+0x2>
# CHECK-NEXT: movl {{.*}} # 100001002 <_s+0x2>
# CHECK-NEXT: callq {{.*}}
# CHECK-NEXT: movb {{.*}} # 2000 <_s>
# CHECK-NEXT: movb {{.*}} # 100001000 <_s>
# CHECK-NEXT: callq {{.*}}
# CHECK: <__not_text>:
# CHECK-NEXT: movl {{.*}} # 2005
# CHECK-NEXT: movl {{.*}} # 100001005
# CHECK-NEXT: callq {{.*}}
# CHECK-NEXT: movl {{.*}} # 2007
# CHECK-NEXT: movl {{.*}} # 100001007
# CHECK-NEXT: callq {{.*}}
# CHECK-NEXT: movb {{.*}} # 2005
# CHECK-NEXT: movb {{.*}} # 100001005
# CHECK-NEXT: callq {{.*}}

.section __TEXT,__text
Expand Down
4 changes: 2 additions & 2 deletions lld/test/MachO/x86-64-reloc-unsigned.s
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
# RUN: lld -flavor darwinnew -o %t %t.o
# RUN: llvm-objdump --full-contents %t | FileCheck %s
# CHECK: Contents of section foo:
# CHECK: 2000 08200000 00000000
# CHECK: 100001000 08100000 01000000
# CHECK: Contents of section bar:
# CHECK: 2008 11311111 01000000
# CHECK: 100001008 11211111 02000000

.globl _main, _foo, _bar

Expand Down