12bdcd8b1SSameer Arora## This test checks updating a dependent shared library install name in a MachO binary. 22bdcd8b1SSameer Arora 32bdcd8b1SSameer Arora# RUN: yaml2obj %s -o %t 42bdcd8b1SSameer Arora 52bdcd8b1SSameer Arora## Specifying -change once: 62bdcd8b1SSameer Arora# RUN: cp %t %t.copy 72bdcd8b1SSameer Arora# RUN: llvm-install-name-tool -change /usr/dylib/LOAD /usr/long/long/dylib/LOAD %t.copy 85f56da37SShoaib Meenai# RUN: llvm-objdump -p %t.copy | FileCheck %s --check-prefix=CHANGE --implicit-check-not='name /usr' 92bdcd8b1SSameer Arora 105f56da37SShoaib Meenai# CHANGE: name /usr/long/long/dylib/LOAD 115f56da37SShoaib Meenai# CHANGE: name /usr/dylib/WEAK 122bdcd8b1SSameer Arora 132bdcd8b1SSameer Arora## Specifying -change multiple times: 142bdcd8b1SSameer Arora# RUN: cp %t %t.copy 152bdcd8b1SSameer Arora# RUN: llvm-install-name-tool -change /usr/dylib/WEAK /usr/sh/WEAK \ 162bdcd8b1SSameer Arora# RUN: -change /usr/dylib/LOAD /usr/sh/LOAD %t.copy 175f56da37SShoaib Meenai# RUN: llvm-objdump -p %t.copy | FileCheck %s --check-prefix=CHANGE-MULTIPLE --implicit-check-not='name /usr' 182bdcd8b1SSameer Arora 195f56da37SShoaib Meenai# CHANGE-MULTIPLE: name /usr/sh/LOAD 205f56da37SShoaib Meenai# CHANGE-MULTIPLE: name /usr/sh/WEAK 212bdcd8b1SSameer Arora 222bdcd8b1SSameer Arora## Changing same dependent library name multiple times: 232bdcd8b1SSameer Arora# RUN: cp %t %t.copy 242bdcd8b1SSameer Arora# RUN: llvm-install-name-tool -change /usr/dylib/LOAD /usr/LOAD \ 252bdcd8b1SSameer Arora# RUN: -change /usr/dylib/LOAD /usr/XXXX %t.copy 265f56da37SShoaib Meenai# RUN: llvm-objdump -p %t.copy | FileCheck %s --check-prefix=CHANGE-REPEAT --implicit-check-not='name /usr' 272bdcd8b1SSameer Arora 285f56da37SShoaib Meenai# CHANGE-REPEAT: name /usr/LOAD 295f56da37SShoaib Meenai# CHANGE-REPEAT: name /usr/dylib/WEAK 302bdcd8b1SSameer Arora 312bdcd8b1SSameer Arora## Specifying dependent library names in a chain: 322bdcd8b1SSameer Arora# RUN: cp %t %t.copy 332bdcd8b1SSameer Arora# RUN: llvm-install-name-tool -change /usr/dylib/LOAD /usr/XX/LOAD \ 342bdcd8b1SSameer Arora# RUN: -change /usr/XX/LOAD /usr/YY/LOAD %t.copy 355f56da37SShoaib Meenai# RUN: llvm-objdump -p %t.copy | FileCheck %s --check-prefix=CHANGE-CHAIN --implicit-check-not='name /usr' 362bdcd8b1SSameer Arora 375f56da37SShoaib Meenai# CHANGE-CHAIN: name /usr/XX/LOAD 385f56da37SShoaib Meenai# CHANGE-CHAIN: name /usr/dylib/WEAK 392bdcd8b1SSameer Arora 402bdcd8b1SSameer Arora## Changing multiple dependent library names where one exists and the other doesn't: 412bdcd8b1SSameer Arora# RUN: cp %t %t.copy 422bdcd8b1SSameer Arora# RUN: llvm-install-name-tool -change /usr/dylib/LOAD /usr/JOJO/LOAD \ 432bdcd8b1SSameer Arora# RUN: -change /usr/BIZARRE /usr/KOKO/LOAD %t.copy 445f56da37SShoaib Meenai# RUN: llvm-objdump -p %t.copy | FileCheck %s --check-prefix=CHANGE-SWITCH --implicit-check-not='name /usr' 452bdcd8b1SSameer Arora 465f56da37SShoaib Meenai# CHANGE-SWITCH: name /usr/JOJO/LOAD 475f56da37SShoaib Meenai# CHANGE-SWITCH: name /usr/dylib/WEAK 482bdcd8b1SSameer Arora 492bdcd8b1SSameer Arora## Changing to a common dependent library name: 502bdcd8b1SSameer Arora# RUN: cp %t %t.copy 512bdcd8b1SSameer Arora# RUN: llvm-install-name-tool -change /usr/dylib/LOAD /usr/COMMON \ 522bdcd8b1SSameer Arora# RUN: -change /usr/dylib/WEAK /usr/COMMON %t.copy 535f56da37SShoaib Meenai# RUN: llvm-objdump -p %t.copy | FileCheck %s --check-prefix=CHANGE-COMMON --implicit-check-not='name /usr' 542bdcd8b1SSameer Arora 555f56da37SShoaib Meenai# CHANGE-COMMON: name /usr/COMMON 565f56da37SShoaib Meenai# CHANGE-COMMON: name /usr/COMMON 572bdcd8b1SSameer Arora 582bdcd8b1SSameer Arora## Change all common dependent library names at once: 592bdcd8b1SSameer Arora# RUN: llvm-install-name-tool -change /usr/COMMON /usr/ONCE %t.copy 605f56da37SShoaib Meenai# RUN: llvm-objdump -p %t.copy | FileCheck %s --check-prefix=CHANGE-ONCE --implicit-check-not='name /usr' 612bdcd8b1SSameer Arora 625f56da37SShoaib Meenai# CHANGE-ONCE: name /usr/ONCE 635f56da37SShoaib Meenai# CHANGE-ONCE: name /usr/ONCE 642bdcd8b1SSameer Arora 652bdcd8b1SSameer Arora## Check that -change option has no effect if the binary doesn't contain old install name: 662bdcd8b1SSameer Arora# RUN: cp %t %t1 672bdcd8b1SSameer Arora# RUN: llvm-install-name-tool -change /usr/JOJO/LOAD /usr/XX/LOAD \ 682bdcd8b1SSameer Arora# RUN: -change /usr/KOKO/WEAK /usr/YY/WEAK %t 692bdcd8b1SSameer Arora# RUN: cmp %t %t1 702bdcd8b1SSameer Arora 712bdcd8b1SSameer Arora## Missing a -change argument: 722bdcd8b1SSameer Arora# RUN: not llvm-install-name-tool %t -change /usr/ONCE 2>&1 | \ 732bdcd8b1SSameer Arora# RUN: FileCheck %s --check-prefix=MISSING 742bdcd8b1SSameer Arora 752bdcd8b1SSameer Arora## Missing both -change arguments: 762bdcd8b1SSameer Arora# RUN: not llvm-install-name-tool %t -change 2>&1 | \ 772bdcd8b1SSameer Arora# RUN: FileCheck %s --check-prefix=MISSING 782bdcd8b1SSameer Arora 792bdcd8b1SSameer Arora# MISSING: missing argument to -change option 802bdcd8b1SSameer Arora 812bdcd8b1SSameer Arora--- !mach-o 822bdcd8b1SSameer AroraFileHeader: 832bdcd8b1SSameer Arora magic: 0xFEEDFACF 842bdcd8b1SSameer Arora cputype: 0x01000007 852bdcd8b1SSameer Arora cpusubtype: 0x00000003 862bdcd8b1SSameer Arora filetype: 0x00000001 872bdcd8b1SSameer Arora ncmds: 2 882bdcd8b1SSameer Arora sizeofcmds: 80 892bdcd8b1SSameer Arora flags: 0x00002000 902bdcd8b1SSameer Arora reserved: 0x00000000 912bdcd8b1SSameer AroraLoadCommands: 922bdcd8b1SSameer Arora - cmd: LC_LOAD_DYLIB 932bdcd8b1SSameer Arora cmdsize: 40 942bdcd8b1SSameer Arora dylib: 952bdcd8b1SSameer Arora name: 24 962bdcd8b1SSameer Arora timestamp: 2 972bdcd8b1SSameer Arora current_version: 82115073 982bdcd8b1SSameer Arora compatibility_version: 65536 99*c0da287cSFangrui Song Content: '/usr/dylib/LOAD' 1002bdcd8b1SSameer Arora - cmd: LC_LOAD_WEAK_DYLIB 1012bdcd8b1SSameer Arora cmdsize: 40 1022bdcd8b1SSameer Arora dylib: 1032bdcd8b1SSameer Arora name: 24 1042bdcd8b1SSameer Arora timestamp: 2 1052bdcd8b1SSameer Arora current_version: 82115073 1062bdcd8b1SSameer Arora compatibility_version: 65536 107*c0da287cSFangrui Song Content: '/usr/dylib/WEAK' 108