| // REQUIRES: ppc |
| // RUN: rm -rf %t && mkdir %t && cd %t |
| |
| // RUN: llvm-mc -filetype=obj -triple=powerpc64le %s -o a.o |
| // RUN: llvm-mc -filetype=obj -triple=powerpc64le %p/Inputs/shared-ppc64.s -o b.o |
| // RUN: ld.lld -shared b.o -o b.so |
| // RUN: not ld.lld a.o b.so 2>&1 | FileCheck %s --implicit-check-not=error: |
| |
| // RUN: llvm-mc -filetype=obj -triple=powerpc64 %s -o a.o |
| // RUN: llvm-mc -filetype=obj -triple=powerpc64 %p/Inputs/shared-ppc64.s -o b.o |
| // RUN: ld.lld -shared b.o -o b.so |
| // RUN: not ld.lld a.o b.so 2>&1 | FileCheck %s --implicit-check-not=error: |
| |
| /// A tail call to an external function without a nop should issue an error. |
| // CHECK: error: a.o:(.text+0x0): call to foo lacks nop, can't restore toc |
| // CHECK-NOT: lacks nop |
| .text |
| .abiversion 2 |
| |
| .global _start |
| _start: |
| b foo |
| |
| // gcc/gfortran 5.4, 6.3 and earlier versions do not add nop for recursive |
| // calls. |
| b _start |
| b _start |