177cbf259SKeith Smiley## This test checks prepending a new LC_RPATH load command to a MachO binary. 277cbf259SKeith Smiley 377cbf259SKeith Smiley# RUN: yaml2obj %p/Inputs/i386.yaml -o %t.i386 477cbf259SKeith Smiley# RUN: llvm-install-name-tool -add_rpath @executable_path/. %t.i386 577cbf259SKeith Smiley# RUN: llvm-install-name-tool -prepend_rpath first_rpath %t.i386 677cbf259SKeith Smiley# RUN: llvm-objdump -p %t.i386 | FileCheck --check-prefix=NEW-RPATH %s 777cbf259SKeith Smiley 877cbf259SKeith Smiley# RUN: yaml2obj %p/Inputs/x86_64.yaml -o %t.x86_64 977cbf259SKeith Smiley# RUN: llvm-install-name-tool -add_rpath @executable_path/. %t.x86_64 1077cbf259SKeith Smiley# RUN: llvm-install-name-tool -prepend_rpath first_rpath %t.x86_64 1177cbf259SKeith Smiley# RUN: llvm-objdump -p %t.x86_64 | FileCheck --check-prefix=NEW-RPATH %s 1277cbf259SKeith Smiley 1377cbf259SKeith Smiley# NEW-RPATH: cmd LC_RPATH 1477cbf259SKeith Smiley# NEW-RPATH-NEXT: cmdsize 1577cbf259SKeith Smiley# NEW-RPATH-NEXT: first_rpath 1677cbf259SKeith Smiley 1777cbf259SKeith Smiley# NEW-RPATH: cmd LC_RPATH 1877cbf259SKeith Smiley# NEW-RPATH-NEXT: cmdsize 1977cbf259SKeith Smiley# NEW-RPATH-NEXT: @executable_path/. 2077cbf259SKeith Smiley 2177cbf259SKeith Smiley## Prepend with dylib loads: 2277cbf259SKeith Smiley# RUN: yaml2obj %p/Inputs/strip-all.yaml -o %t.dylib 2377cbf259SKeith Smiley# RUN: llvm-install-name-tool -prepend_rpath first_rpath %t.dylib 2477cbf259SKeith Smiley# RUN: llvm-objdump -p %t.dylib | FileCheck --check-prefix=DYLIB %s 2577cbf259SKeith Smiley 2677cbf259SKeith Smiley# DYLIB: cmd LC_RPATH 2777cbf259SKeith Smiley# DYLIB-NEXT: cmdsize 2877cbf259SKeith Smiley# DYLIB-NEXT: first_rpath 2977cbf259SKeith Smiley 3077cbf259SKeith Smiley# RUN: not llvm-install-name-tool -prepend_rpath first_rpath %t.i386 2>&1 | \ 3177cbf259SKeith Smiley# RUN: FileCheck --check-prefix=DUPLICATE-RPATH %s 3277cbf259SKeith Smiley 33*51f8d464SKeith Smiley# DUPLICATE-RPATH: rpath 'first_rpath' would create a duplicate load command 3477cbf259SKeith Smiley 3577cbf259SKeith Smiley## Prepend same RPATH twice: 3677cbf259SKeith Smiley# RUN: not llvm-install-name-tool -prepend_rpath @executable_X \ 3777cbf259SKeith Smiley# RUN: -prepend_rpath @executable_X %t.i386 2>&1 | \ 3877cbf259SKeith Smiley# RUN: FileCheck --check-prefix=DOUBLE %s 3977cbf259SKeith Smiley 40*51f8d464SKeith Smiley# DOUBLE: rpath '@executable_X' would create a duplicate load command 4177cbf259SKeith Smiley 4277cbf259SKeith Smiley## Prepend and delete RPATH: 4377cbf259SKeith Smiley# RUN: not llvm-install-name-tool -prepend_rpath foo \ 4477cbf259SKeith Smiley# RUN: -delete_rpath foo %t.i386 2>&1 | \ 4577cbf259SKeith Smiley# RUN: FileCheck --check-prefix=DELETE %s 4677cbf259SKeith Smiley 47*51f8d464SKeith Smiley# DELETE: cannot specify both -prepend_rpath 'foo' and -delete_rpath 'foo' 4877cbf259SKeith Smiley 4977cbf259SKeith Smiley## Prepend and replace RPATH: 5077cbf259SKeith Smiley# RUN: not llvm-install-name-tool -prepend_rpath foo \ 5177cbf259SKeith Smiley# RUN: -rpath foo bar %t.i386 2>&1 | \ 5277cbf259SKeith Smiley# RUN: FileCheck --check-prefix=REPLACE %s 5377cbf259SKeith Smiley 54*51f8d464SKeith Smiley# REPLACE: cannot specify both -prepend_rpath 'foo' and -rpath 'foo' 'bar' 5577cbf259SKeith Smiley 5677cbf259SKeith Smiley## Check that cmdsize accounts for NULL terminator: 5777cbf259SKeith Smiley# RUN: yaml2obj %p/Inputs/x86_64.yaml -o %t.x86_64 5877cbf259SKeith Smiley# RUN: llvm-install-name-tool -prepend_rpath abcd %t.x86_64 5977cbf259SKeith Smiley# RUN: llvm-objdump -p %t.x86_64 | FileCheck %s --check-prefix=RPATH-SIZE 6077cbf259SKeith Smiley 6177cbf259SKeith Smiley# RPATH-SIZE: cmd LC_RPATH 6277cbf259SKeith Smiley# RPATH-SIZE-NEXT: cmdsize 24 6377cbf259SKeith Smiley# RPATH-SIZE-NEXT: path abcd 64