| # REQUIRES: ppc |
| |
| # RUN: llvm-mc -filetype=obj -triple=powerpc64le %s -o %t.o |
| # RUN: ld.lld %t.o -o %t |
| # RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s --check-prefix=PDE |
| # RUN: ld.lld -pie %t.o -o %t |
| # RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s --check-prefix=PIC |
| # RUN: ld.lld -shared %t.o -o %t.so |
| # RUN: llvm-objdump -d --no-show-raw-insn %t.so | FileCheck %s --check-prefix=PIC |
| |
| # RUN: llvm-mc -filetype=obj -triple=powerpc64 %s -o %t.o |
| # RUN: ld.lld %t.o -o %t |
| # RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s --check-prefix=PDE |
| |
| ## Branches to an undefined weak symbol need a thunk iff a dynamic relocation is |
| ## produced. undefweak2 is hidden and does not need a dynamic relocation, so we |
| ## suppress the thunk. undefweak1 needs a thunk iff -pie or -shared. |
| |
| # PDE-LABEL: <_start>: |
| # PDE-NEXT: bl {{.*}} <_start> |
| # PDE-NEXT: nop |
| # PDE-NEXT: bl {{.*}} <_start+0x8> |
| # PDE-NEXT: nop |
| |
| # PIC-LABEL: <_start>: |
| # PIC-NEXT: bl {{.*}} <__plt_undefweak1> |
| # PIC-NEXT: ld 2, 24(1) |
| # PIC-NEXT: bl {{.*}} <_start+0x8> |
| # PIC-NEXT: nop |
| |
| .text |
| .global _start |
| _start: |
| bl undefweak1 |
| nop |
| bl undefweak2 |
| nop |
| |
| .weak undefweak1, undefweak2 |
| .hidden undefweak2 |