## 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/.'