xref: /llvm-project/llvm/test/tools/llvm-objcopy/MachO/install-name-tool-id.test (revision c0da287c30c9f511ccb07fdd42c997be2caea9ec)
1ca518c49SSameer Arora## This test checks updating a dynamic shared library ID in a MachO binary.
2ca518c49SSameer Arora
3ca518c49SSameer Arora# RUN: yaml2obj %s --docnum=1 -o %t
4ca518c49SSameer Arora
5ca518c49SSameer Arora## Specifying -id once:
6ca518c49SSameer Arora# RUN: llvm-install-name-tool -id /usr/lib/A_long_long_test %t
75f56da37SShoaib Meenai# RUN: llvm-objdump -p %t | FileCheck %s --check-prefix=ID --implicit-check-not='name /usr'
8ca518c49SSameer Arora
95f56da37SShoaib Meenai# ID: name /usr/lib/A_long_long_test
10ca518c49SSameer Arora
11ca518c49SSameer Arora## Specifying -id more than once:
12ca518c49SSameer Arora# RUN: llvm-install-name-tool -id /usr/lib/B_long -id /usr/lib/K_long -id /usr/A_short  %t
135f56da37SShoaib Meenai# RUN: llvm-objdump -p %t | FileCheck %s --check-prefix=ID-MULTIPLE --implicit-check-not='name /usr'
14ca518c49SSameer Arora
155f56da37SShoaib Meenai# ID-MULTIPLE: name /usr/A_short
16ca518c49SSameer Arora
17ca518c49SSameer Arora## Specifying -id with empty string:
18ca518c49SSameer Arora# RUN: not llvm-install-name-tool -id '' %t 2>&1 | \
19ca518c49SSameer Arora# RUN:   FileCheck %s --check-prefix=EMPTY
20ca518c49SSameer Arora
21ca518c49SSameer Arora# EMPTY: cannot specify an empty id
22ca518c49SSameer Arora
23ca518c49SSameer Arora## Missing id argument:
24ca518c49SSameer Arora# RUN: not llvm-install-name-tool %t -id 2>&1 | \
25ca518c49SSameer Arora# RUN:   FileCheck %s --check-prefix=MISSING
26ca518c49SSameer Arora
27ca518c49SSameer Arora# MISSING: missing argument to -id option
28ca518c49SSameer Arora
29ca518c49SSameer Arora## Shared dylib binary
30ca518c49SSameer Arora--- !mach-o
31ca518c49SSameer AroraFileHeader:
32ca518c49SSameer Arora  magic:           0xFEEDFACF
33ca518c49SSameer Arora  cputype:         0x01000007
34ca518c49SSameer Arora  cpusubtype:      0x00000003
35ca518c49SSameer Arora  filetype:        0x00000006
36ca518c49SSameer Arora  ncmds:           1
37ca518c49SSameer Arora  sizeofcmds:      56
38ca518c49SSameer Arora  flags:           0x00002000
39ca518c49SSameer Arora  reserved:        0x00000000
40ca518c49SSameer AroraLoadCommands:
41ca518c49SSameer Arora  - cmd:                        LC_ID_DYLIB
42ca518c49SSameer Arora    cmdsize:                    56
43ca518c49SSameer Arora    dylib:
44ca518c49SSameer Arora        name:                   24
45ca518c49SSameer Arora        timestamp:              2
46ca518c49SSameer Arora        current_version:        82115073
47ca518c49SSameer Arora        compatibility_version:  65536
48*c0da287cSFangrui Song    Content:                    '/usr/lib/A'
49ca518c49SSameer Arora
50ca518c49SSameer Arora# RUN: yaml2obj %s --docnum=2 -o %t
51ca518c49SSameer Arora
52ca518c49SSameer Arora## Check that -id option has no effect if binary is not a shared dylib:
53ca518c49SSameer Arora# RUN: cp %t %t1
54ca518c49SSameer Arora# RUN: llvm-install-name-tool -id /usr/lib/J %t
55ca518c49SSameer Arora# RUN: cmp %t %t1
56ca518c49SSameer Arora
57ca518c49SSameer Arora## Executable binary
58ca518c49SSameer Arora--- !mach-o
59ca518c49SSameer AroraFileHeader:
60ca518c49SSameer Arora  magic:           0xFEEDFACF
61ca518c49SSameer Arora  cputype:         0x01000007
62ca518c49SSameer Arora  cpusubtype:      0x00000003
63ca518c49SSameer Arora  filetype:        0x00000001
64ca518c49SSameer Arora  ncmds:           0
65ca518c49SSameer Arora  sizeofcmds:      0
66ca518c49SSameer Arora  flags:           0x00002000
67ca518c49SSameer Arora  reserved:        0x00000000
68