brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.0 KiB · 5c43098 Raw
143 lines · plain
1## This test checks updating a LC_RPATH load command in a MachO binary.2 3# RUN: yaml2obj %s -o %t4 5## Updating a single RPath entry:6# RUN: llvm-install-name-tool -rpath @executable_a/. @executable_A/. %t7# RUN: llvm-objdump -p %t | \8# RUN:   FileCheck %s --check-prefix=RPATHS --implicit-check-not=@executable9 10# RPATHS: @executable_A/.11# RPATHS: @executable_short_test12# RPATHS: @executable_long_test/.13# RPATHS: @executable_d/.14 15## Updating multiple RPath entries:16# RUN: llvm-install-name-tool -rpath @executable_short_test/. @executable_test/. \17# RUN:                        -rpath @executable_long_test/. @executable_long_long_test/. %t18# RUN: llvm-objdump -p %t | \19# RUN:   FileCheck %s --check-prefix=RPATHS-MULTIPLE --implicit-check-not=@executable20 21# RPATHS-MULTIPLE: @executable_A/.22# RPATHS-MULTIPLE: @executable_test/.23# RPATHS-MULTIPLE: @executable_long_long_test/.24# RPATHS-MULTIPLE: @executable_d/.25 26## Check that cmdsize accounts for NULL terminator:27# RUN: llvm-install-name-tool -rpath @executable_A/. ABCD %t28# RUN: llvm-objdump -p %t | FileCheck %s --check-prefix=RPATH-SIZE29 30# RPATH-SIZE:      cmd LC_RPATH31# RPATH-SIZE-NEXT: cmdsize 2432# RPATH-SIZE-NEXT: path ABCD33 34## Updating and adding different RPaths:35# RUN: llvm-install-name-tool -rpath @executable_d/. @executable_D/. \36# RUN:                        -add_rpath @executable_e/. %t37# RUN: llvm-objdump -p %t | FileCheck %s --check-prefix=RPATHS-ADD --implicit-check-not=@executable38 39# RPATHS-ADD: ABCD40# RPATHS-ADD: @executable_test/.41# RPATHS-ADD: @executable_long_long_test/.42# RPATHS-ADD: @executable_D/.43# RPATHS-ADD: @executable_e/.44 45## Updating and deleting different RPaths:46# RUN: llvm-install-name-tool -rpath @executable_D/. @executable_d/. \47# RUN:                        -delete_rpath @executable_e/. %t48# RUN: llvm-objdump -p %t | FileCheck %s --check-prefix=RPATHS-DELETE --implicit-check-not=@executable49 50# RPATHS-DELETE: ABCD51# RPATHS-DELETE: @executable_test/.52# RPATHS-DELETE: @executable_long_long_test/.53# RPATHS-DELETE: @executable_d/.54 55# RUN: cp %t %t156 57## Updating multiple RPath entries where one exists and the other doesn't:58# RUN: not llvm-install-name-tool -rpath @executable_test/. @executable/. \59# RUN:                            -rpath @executable_long_test/. @executable_long_longest/. %t 2>&1 | \60# RUN:   FileCheck %s --check-prefix=RPATHS-FAIL61# RUN: cmp %t %t162 63# RPATHS-FAIL: no LC_RPATH load command with path: @executable_long_test/.64 65## Updating a nonexistent RPath:66# RUN: not llvm-install-name-tool -rpath @executable_a/. @executable_AA/. %t 2>&1 | \67# RUN:   FileCheck %s --check-prefix=ABSENT-RPATH68# RUN: cmp %t %t169 70# ABSENT-RPATH: no LC_RPATH load command with path: @executable_a/.71 72## Updating to an existing RPath:73# RUN: not llvm-install-name-tool -rpath @executable_d/. ABCD %t 2>&1 | \74# RUN:   FileCheck %s --check-prefix=EXISTING75# RUN: cmp %t %t176 77# EXISTING: rpath 'ABCD' would create a duplicate load command78 79## Duplicate RPath entries:80# RUN: not llvm-install-name-tool -rpath DDD1/. @exec_d/. \81# RUN:                            -rpath @exec_d/. DDD2/. %t 2>&1 | \82# RUN:   FileCheck %s --check-prefix=DUPLICATE83# RUN: cmp %t %t184 85# DUPLICATE: cannot specify both -rpath 'DDD1/.' '@exec_d/.' and -rpath '@exec_d/.' 'DDD2/.'86 87## Updating and deleting RPath at the same time:88# RUN: not llvm-install-name-tool -rpath @executable_d/. DD/. \89# RUN:                            -delete_rpath @executable_d/. %t 2>&1 | \90# RUN:   FileCheck %s --check-prefix=COMBINED-DELETE91# RUN: cmp %t %t192 93# COMBINED-DELETE: cannot specify both -delete_rpath '@executable_d/.' and -rpath '@executable_d/.' 'DD/.'94 95## Updating and adding RPath at the same time:96# RUN: not llvm-install-name-tool -rpath @executable_e/. EE/. \97# RUN:                            -add_rpath @executable_e/. %t 2>&1 | \98# RUN:   FileCheck %s --check-prefix=COMBINED-ADD99# RUN: cmp %t %t1100 101# COMBINED-ADD: cannot specify both -add_rpath '@executable_e/.' and -rpath '@executable_e/.' 'EE/.'102 103## Missing an RPath argument:104# RUN: not llvm-install-name-tool %t -rpath @executable_e/. 2>&1 | \105# RUN:   FileCheck %s --check-prefix=MISSING106# RUN: cmp %t %t1107 108## Missing both RPath arguments:109# RUN: not llvm-install-name-tool %t -rpath 2>&1 | \110# RUN:   FileCheck %s --check-prefix=MISSING111# RUN: cmp %t %t1112 113# MISSING: missing argument to -rpath option114 115 116--- !mach-o117FileHeader:118  magic:           0xFEEDFACF119  cputype:         0x01000007120  cpusubtype:      0x00000003121  filetype:        0x00000001122  ncmds:           4123  sizeofcmds:      144124  flags:           0x00002000125  reserved:        0x00000000126LoadCommands:127  - cmd:             LC_RPATH128    cmdsize:         32129    path:            12130    Content:         '@executable_a/.'131  - cmd:             LC_RPATH132    cmdsize:         40133    path:            12134    Content:         '@executable_short_test/.'135  - cmd:             LC_RPATH136    cmdsize:         40137    path:            12138    Content:         '@executable_long_test/.'139  - cmd:             LC_RPATH140    cmdsize:         32141    path:            12142    Content:         '@executable_d/.'143