You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.9 KiB
91 lines
2.9 KiB
## This test checks deleting a LC_RPATH load command from a MachO binary.
|
|
|
|
# RUN: yaml2obj %s -o %t
|
|
|
|
## Deleting a single RPath entry:
|
|
# RUN: llvm-install-name-tool -delete_rpath @executable_a/. %t
|
|
# RUN: llvm-objdump -p %t | \
|
|
# RUN: FileCheck %s --check-prefix=RPATHS --implicit-check-not=@executable
|
|
|
|
# RPATHS: @executable_b/.
|
|
# RPATHS: @executable_c/.
|
|
# RPATHS: @executable_d/.
|
|
# RPATHS: @executable_e/.
|
|
|
|
## Deleting multiple RPath entries:
|
|
# RUN: llvm-install-name-tool -delete_rpath @executable_b/. \
|
|
# RUN: -delete_rpath @executable_c/. %t
|
|
# RUN: llvm-objdump -p %t | \
|
|
# RUN: FileCheck %s --check-prefix=RPATHS-MULTIPLE --implicit-check-not=@executable
|
|
|
|
# RPATHS-MULTIPLE: @executable_d/.
|
|
# RPATHS-MULTIPLE: @executable_e/.
|
|
|
|
## Duplicate delete_rpath commands:
|
|
# RUN: llvm-install-name-tool -delete_rpath @executable_d/. \
|
|
# RUN: -delete_rpath @executable_d/. %t
|
|
# RUN: llvm-objdump -p %t | \
|
|
# RUN: FileCheck %s --check-prefix=DUPLICATE --implicit-check-not=@executable
|
|
|
|
# DUPLICATE: @executable_e/.
|
|
|
|
## Deleting a nonexistent RPath:
|
|
# RUN: not llvm-install-name-tool -delete_rpath @executable_a/. %t 2>&1 | \
|
|
# RUN: FileCheck %s --check-prefix=ABSENT-RPATH
|
|
|
|
# ABSENT-RPATH: no LC_RPATH load command with path: @executable_a/.
|
|
|
|
## Adding and deleting RPATH at the same time:
|
|
# RUN: not llvm-install-name-tool -add_rpath @executable_b/. \
|
|
# RUN: -delete_rpath @executable_b/. %t 2>&1 | \
|
|
# RUN: FileCheck %s --check-prefix=COMBINED
|
|
|
|
# COMBINED: cannot specify both -add_rpath '@executable_b/.' and -delete_rpath '@executable_b/.'
|
|
|
|
## Remove all RPATHS
|
|
# RUN: yaml2obj %s -o %t2
|
|
# RUN: llvm-install-name-tool -delete_all_rpaths %t2
|
|
# RUN: llvm-objdump -p %t2 | FileCheck %s
|
|
|
|
# CHECK-NOT: LC_RPATH
|
|
|
|
## Remove all RPATHS and add a new one.
|
|
# RUN: yaml2obj %s -o %t3
|
|
# RUN: llvm-install-name-tool --delete_all_rpaths -add_rpath @executable_b/. %t3
|
|
# RUN: llvm-objdump -p %t3 | \
|
|
# RUN: FileCheck %s --check-prefix=DELETE_AND_ADD --implicit-check-not=@executable
|
|
|
|
# DELETE_AND_ADD: @executable_b/.
|
|
|
|
--- !mach-o
|
|
FileHeader:
|
|
magic: 0xFEEDFACF
|
|
cputype: 0x01000007
|
|
cpusubtype: 0x00000003
|
|
filetype: 0x00000001
|
|
ncmds: 5
|
|
sizeofcmds: 160
|
|
flags: 0x00002000
|
|
reserved: 0x00000000
|
|
LoadCommands:
|
|
- cmd: LC_RPATH
|
|
cmdsize: 32
|
|
path: 12
|
|
PayloadString: '@executable_a/.'
|
|
- cmd: LC_RPATH
|
|
cmdsize: 32
|
|
path: 12
|
|
PayloadString: '@executable_b/.'
|
|
- cmd: LC_RPATH
|
|
cmdsize: 32
|
|
path: 12
|
|
PayloadString: '@executable_c/.'
|
|
- cmd: LC_RPATH
|
|
cmdsize: 32
|
|
path: 12
|
|
PayloadString: '@executable_d/.'
|
|
- cmd: LC_RPATH
|
|
cmdsize: 32
|
|
path: 12
|
|
PayloadString: '@executable_e/.'
|