brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · 3605b94 Raw
108 lines · plain
1## This test checks updating a dependent shared library install name in a MachO binary.2 3# RUN: yaml2obj %s -o %t4 5## Specifying -change once:6# RUN: cp %t %t.copy7# RUN: llvm-install-name-tool -change /usr/dylib/LOAD /usr/long/long/dylib/LOAD %t.copy8# RUN: llvm-objdump -p %t.copy | FileCheck %s --check-prefix=CHANGE --implicit-check-not='name /usr'9 10# CHANGE: name /usr/long/long/dylib/LOAD11# CHANGE: name /usr/dylib/WEAK12 13## Specifying -change multiple times:14# RUN: cp %t %t.copy15# RUN: llvm-install-name-tool -change /usr/dylib/WEAK /usr/sh/WEAK \16# RUN:                        -change /usr/dylib/LOAD /usr/sh/LOAD  %t.copy17# RUN: llvm-objdump -p %t.copy | FileCheck %s --check-prefix=CHANGE-MULTIPLE --implicit-check-not='name /usr'18 19# CHANGE-MULTIPLE: name /usr/sh/LOAD20# CHANGE-MULTIPLE: name /usr/sh/WEAK21 22## Changing same dependent library name multiple times:23# RUN: cp %t %t.copy24# RUN: llvm-install-name-tool -change /usr/dylib/LOAD /usr/LOAD \25# RUN:                        -change /usr/dylib/LOAD /usr/XXXX %t.copy26# RUN: llvm-objdump -p %t.copy | FileCheck %s --check-prefix=CHANGE-REPEAT --implicit-check-not='name /usr'27 28# CHANGE-REPEAT: name /usr/LOAD29# CHANGE-REPEAT: name /usr/dylib/WEAK30 31## Specifying dependent library names in a chain:32# RUN: cp %t %t.copy33# RUN: llvm-install-name-tool -change /usr/dylib/LOAD /usr/XX/LOAD \34# RUN:                        -change /usr/XX/LOAD /usr/YY/LOAD %t.copy35# RUN: llvm-objdump -p %t.copy | FileCheck %s --check-prefix=CHANGE-CHAIN --implicit-check-not='name /usr'36 37# CHANGE-CHAIN: name /usr/XX/LOAD38# CHANGE-CHAIN: name /usr/dylib/WEAK39 40## Changing multiple dependent library names where one exists and the other doesn't:41# RUN: cp %t %t.copy42# RUN: llvm-install-name-tool -change /usr/dylib/LOAD /usr/JOJO/LOAD \43# RUN:                        -change /usr/BIZARRE /usr/KOKO/LOAD %t.copy44# RUN: llvm-objdump -p %t.copy | FileCheck %s --check-prefix=CHANGE-SWITCH --implicit-check-not='name /usr'45 46# CHANGE-SWITCH: name /usr/JOJO/LOAD47# CHANGE-SWITCH: name /usr/dylib/WEAK48 49## Changing to a common dependent library name:50# RUN: cp %t %t.copy51# RUN: llvm-install-name-tool -change /usr/dylib/LOAD /usr/COMMON \52# RUN:                        -change /usr/dylib/WEAK /usr/COMMON %t.copy53# RUN: llvm-objdump -p %t.copy | FileCheck %s --check-prefix=CHANGE-COMMON --implicit-check-not='name /usr'54 55# CHANGE-COMMON: name /usr/COMMON56# CHANGE-COMMON: name /usr/COMMON57 58## Change all common dependent library names at once:59# RUN: llvm-install-name-tool -change /usr/COMMON /usr/ONCE %t.copy60# RUN: llvm-objdump -p %t.copy | FileCheck %s --check-prefix=CHANGE-ONCE --implicit-check-not='name /usr'61 62# CHANGE-ONCE: name /usr/ONCE63# CHANGE-ONCE: name /usr/ONCE64 65## Check that -change option has no effect if the binary doesn't contain old install name:66# RUN: cp %t %t167# RUN: llvm-install-name-tool -change /usr/JOJO/LOAD /usr/XX/LOAD \68# RUN:                        -change /usr/KOKO/WEAK /usr/YY/WEAK %t69# RUN: cmp %t %t170 71## Missing a -change argument:72# RUN: not llvm-install-name-tool %t -change /usr/ONCE 2>&1 | \73# RUN:   FileCheck %s --check-prefix=MISSING74 75## Missing both -change arguments:76# RUN: not llvm-install-name-tool %t -change 2>&1 | \77# RUN:   FileCheck %s --check-prefix=MISSING78 79# MISSING: missing argument to -change option80 81--- !mach-o82FileHeader:83  magic:           0xFEEDFACF84  cputype:         0x0100000785  cpusubtype:      0x0000000386  filetype:        0x0000000187  ncmds:           288  sizeofcmds:      8089  flags:           0x0000200090  reserved:        0x0000000091LoadCommands:92  - cmd:                        LC_LOAD_DYLIB93    cmdsize:                    4094    dylib:95        name:                   2496        timestamp:              297        current_version:        8211507398        compatibility_version:  6553699    Content:                    '/usr/dylib/LOAD'100  - cmd:                        LC_LOAD_WEAK_DYLIB101    cmdsize:                    40102    dylib:103        name:                   24104        timestamp:              2105        current_version:        82115073106        compatibility_version:  65536107    Content:                    '/usr/dylib/WEAK'108