dylib-install-names.yaml 2.97 KB
# Check we accept -install_name correctly:
# RUN: ld64.lld -arch x86_64 -install_name libwibble.dylib -dylib \
# RUN:     -compatibility_version 2.0 -current_version 5.3 \
# RUN:     %p/Inputs/x86_64/libSystem.yaml %s -o %t.dylib
# RUN: llvm-objdump --private-headers %t.dylib | FileCheck %s --check-prefix=CHECK-BINARY-WRITE

# Check we read LC_ID_DYLIB correctly:
# RUN: ld64.lld -arch x86_64 %p/Inputs/use-dylib-install-names.yaml \
# RUN:      %p/Inputs/x86_64/libSystem.yaml %t.dylib -dylib -o %t2.dylib
# RUN: llvm-objdump --private-headers %t2.dylib | FileCheck %s --check-prefix=CHECK-BINARY-READ

# Check we default the install-name to the output file:
# RUN: ld64.lld -arch x86_64 -dylib %s -o libwibble.dylib \
# RUN:     -compatibility_version 2.0 -current_version 5.3 \
# RUN:     %p/Inputs/x86_64/libSystem.yaml
# RUN: llvm-objdump --private-headers libwibble.dylib | FileCheck %s --check-prefix=CHECK-BINARY-WRITE
# RUN: rm -f libwibble.dylib

# Check -single_module does nothing
# RUN: ld64.lld -arch x86_64 -dylib %s -install_name libwibble.dylib \
# RUN:     -compatibility_version 2.0 -current_version 5.3 \
# RUN:     -single_module -o %t2.dylib %p/Inputs/x86_64/libSystem.yaml
# RUN: llvm-objdump --private-headers %t2.dylib | FileCheck %s --check-prefix=CHECK-BINARY-WRITE

--- !mach-o
arch:            x86_64
file-type:       MH_OBJECT
flags:           [ MH_SUBSECTIONS_VIA_SYMBOLS ]
has-UUID:        false
OS:              unknown
sections:
  - segment:         __TEXT
    section:         __text
    type:            S_REGULAR
    attributes:      [ S_ATTR_PURE_INSTRUCTIONS, S_ATTR_SOME_INSTRUCTIONS ]
    alignment:       4
    address:         0x0000000000000000
    content:         [ 0xCC, 0xC3, 0x90, 0xC3, 0x90, 0x90, 0xC3, 0x90,
                       0x90, 0x90, 0xC3, 0x90, 0x90, 0x90, 0x90, 0xC3,
                       0x31, 0xC0, 0xC3 ]
local-symbols:
  - name:            _myStatic
    type:            N_SECT
    sect:            1
    value:           0x000000000000000B
global-symbols:
  - name:            _myGlobal
    type:            N_SECT
    scope:           [ N_EXT ]
    sect:            1
    value:           0x0000000000000001
...


# CHECK-BINARY-WRITE: cmd LC_ID_DYLIB
# CHECK-BINARY-WRITE-NEXT: cmdsize 40
# CHECK-BINARY-WRITE-NEXT:  name libwibble.dylib (offset 24)
# CHECK-BINARY-WRITE-NEXT:  time stamp 1
# CHECK-BINARY-WRITE-NEXT:  current version 5.3.0
# CHECK-BINARY-WRITE-NEXT:  compatibility version 2.0.0

# CHECK-BINARY-READ: cmd LC_LOAD_DYLIB
# CHECK-BINARY-READ-NEXT: cmdsize 56
# CHECK-BINARY-READ-NEXT:  name /usr/lib/libSystem.B.dylib (offset 24)
# CHECK-BINARY-READ-NEXT:  time stamp 2
# CHECK-BINARY-READ-NEXT:  current version 1.0.0
# CHECK-BINARY-READ-NEXT:  compatibility version 1.0.0

# CHECK-BINARY-READ: cmd LC_LOAD_DYLIB
# CHECK-BINARY-READ-NEXT: cmdsize 40
# CHECK-BINARY-READ-NEXT:  name libwibble.dylib (offset 24)
# CHECK-BINARY-READ-NEXT:  time stamp 2
# CHECK-BINARY-READ-NEXT:  current version 5.3.0
# CHECK-BINARY-READ-NEXT:  compatibility version 2.0.0