# RUN: yaml2obj %s -o %t
## Show that llvm-objcopy copies relocation entries where r_extern = 0.
# RUN: llvm-objcopy %t %t2
# RUN: cmp %t %t2
## Show that llvm-objcopy updates section indices properly.
# RUN: llvm-objcopy --remove-section=__DATA,__foo %t %t3
# RUN: llvm-objdump --macho --reloc %t3 | FileCheck %s
# CHECK: Relocation information (__DATA,__bar) 2 entries
# CHECK-NEXT: address pcrel length extern type scattered symbolnum/value
# CHECK-NEXT: 00000000 False quad False SUB False 2 (__DATA,__bar)
# CHECK-NEXT: 00000000 False quad False UNSIGND False 1 (__TEXT,__text)
--- !mach-o
FileHeader:
magic: 0xFEEDFACF
cputype: 0x01000007
cpusubtype: 0x00000003
filetype: 0x00000001
ncmds: 1
sizeofcmds: 312
flags: 0x00000000
reserved: 0x00000000
LoadCommands:
- cmd: LC_SEGMENT_64
cmdsize: 312
segname: ''
vmaddr: 0
vmsize: 24
fileoff: 344
filesize: 24
maxprot: 7
initprot: 7
nsects: 3
flags: 0
Sections:
- sectname: __text
segname: __TEXT
addr: 0x0000000000000000
size: 8
offset: 0x00000158
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x80000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
content: '0000000000000000'
- sectname: __foo
segname: __DATA
addr: 0x0000000000000008
size: 8
offset: 0x00000160
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
content: '0000000000000000'
- sectname: __bar
segname: __DATA
addr: 0x0000000000000010
size: 8
offset: 0x00000168
align: 0
reloff: 0x00000170
nreloc: 2
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
content: F0FFFFFFFFFFFFFF
relocations:
- address: 0x00000000
symbolnum: 3
pcrel: false
length: 3
extern: false
type: 5
scattered: false
value: 0
- address: 0x00000000
symbolnum: 1
pcrel: false
length: 3
extern: false
type: 0
scattered: false
value: 0
...