1# REQUIRES: ppc
2# RUN: split-file %s %t
3# RUN: llvm-mc -filetype=obj -triple=ppc64le %t/asm -o %t.o
4# RUN: not ld.lld --script %t/lds %t.o -o %t1 2>&1 | FileCheck %s
5# RUN: ld.lld --script %t/lds %t.o -o %t1 --noinhibit-exec
6# RUN: rm %t.o %t1
7
8# RUN: llvm-mc -filetype=obj -triple=ppc64 %t/asm -o %t.o
9# RUN: not ld.lld --script %t/lds %t.o -o %t1 2>&1 | FileCheck %s
10# RUN: ld.lld --script %t/lds %t.o -o %t1 --noinhibit-exec
11# RUN: rm %t.o %t1
12
13# CHECK: error: R12 setup stub offset is out of range: 8589934592 is not in [-8589934592, 8589934591]; references callee
14# CHECK-NEXT: >>> defined in {{.*}}.o
15
16//--- asm
17.section .text_high, "ax", %progbits
18callee:
19  .Lfunc_gep1:
20  addis 2, 12, .TOC.-.Lfunc_gep1@ha
21  addi 2, 2, .TOC.-.Lfunc_gep1@l
22  .Lfunc_lep1:
23  .localentry callee, .Lfunc_lep1-.Lfunc_gep1
24  addis 4, 2, global@toc@ha
25  lwz 4, global@toc@l(4)
26  blr
27
28.section .text_low, "ax", %progbits
29caller:
30  .localentry caller, 1
31  bl callee@notoc
32  blr
33global:
34  .long 0
35
36//--- lds
37PHDRS {
38  low PT_LOAD FLAGS(0x1 | 0x4);
39  high PT_LOAD FLAGS(0x1 | 0x4);
40}
41SECTIONS {
42  .text_low 0x2000 : { *(.text_low) } :low
43  .text_high 0x200002010 : { *(.text_high) } :high
44}
45