relocations.test 3 KB
# 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
...