# REQUIRES: mips
# Check LA25 stubs creation. This stub code is necessary when
# non-PIC code calls PIC function.
# RUN: echo "SECTIONS { .out 0x20000 : { *(.text.*) . = . + 0x100 ;  *(.text) }  }" > %t1.script
# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux \
# RUN:   %p/Inputs/mips-fpic.s -o %t-fpic.o
# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux \
# RUN:   %p/Inputs/mips-fnpic.s -o %t-fnpic.o
# RUN: ld.lld -r %t-fpic.o %t-fnpic.o -o %t-sto-pic.o
# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux \
# RUN:   %p/Inputs/mips-pic.s -o %t-pic.o
# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %s -o %t-npic.o
# RUN: ld.lld --script %t1.script %t-npic.o %t-pic.o %t-sto-pic.o -o %t.exe
# RUN: llvm-objdump -d --no-show-raw-insn %t.exe | FileCheck %s

# CHECK: Disassembly of section .out:
# CHECK-EMPTY:
# CHECK-NEXT: <__LA25Thunk_foo1a>:
# CHECK-NEXT:    20000:       lui     $25, 2
# CHECK-NEXT:    20004:       j       131104 <foo1a>
# CHECK-NEXT:    20008:       addiu   $25, $25, 32
# CHECK-NEXT:    2000c:       nop

# CHECK: <__LA25Thunk_foo1b>:
# CHECK-NEXT:    20010:       lui     $25, 2
# CHECK-NEXT:    20014:       j       131108 <foo1b>
# CHECK-NEXT:    20018:       addiu   $25, $25, 36
# CHECK-NEXT:    2001c:       nop

# CHECK: <foo1a>:
# CHECK-NEXT:    20020:       nop

# CHECK: <foo1b>:
# CHECK-NEXT:    20024:       nop

# CHECK: <__LA25Thunk_foo2>:
# CHECK-NEXT:    20028:       lui     $25, 2
# CHECK-NEXT:    2002c:       j       131136 <foo2>
# CHECK-NEXT:    20030:       addiu   $25, $25, 64
# CHECK-NEXT:    20034:       nop

# CHECK: <foo2>:
# CHECK-NEXT:    20040:       nop

# CHECK: <__start>:
# CHECK-NEXT:    20150:       jal     131072 <__LA25Thunk_foo1a>
# CHECK-NEXT:    20154:       nop
# CHECK-NEXT:    20158:       jal     131112 <__LA25Thunk_foo2>
# CHECK-NEXT:    2015c:       nop
# CHECK-NEXT:    20160:       jal     131088 <__LA25Thunk_foo1b>
# CHECK-NEXT:    20164:       nop
# CHECK-NEXT:    20168:       jal     131112 <__LA25Thunk_foo2>
# CHECK-NEXT:    2016c:       nop
# CHECK-NEXT:    20170:       jal     131456 <__LA25Thunk_fpic>
# CHECK-NEXT:    20174:       nop
# CHECK-NEXT:    20178:       jal     131488 <fnpic>
# CHECK-NEXT:    2017c:       nop

# CHECK: <__LA25Thunk_fpic>:
# CHECK-NEXT:    20180:       lui     $25, 2
# CHECK-NEXT:    20184:       j       131472 <fpic>
# CHECK-NEXT:    20188:       addiu   $25, $25, 400
# CHECK-NEXT:    2018c:       nop

# CHECK: <fpic>:
# CHECK-NEXT:    20190:       nop

# CHECK: <fnpic>:
# CHECK-NEXT:    201a0:       nop

  .text
  .globl __start
__start:
  jal foo1a
  jal foo2
  jal foo1b
  jal foo2
  jal fpic
  jal fnpic

# Test script with orphans added to existing OutputSection, the .text.1 and
# .text.2 sections will be added to .text
# RUN: echo "SECTIONS { .text 0x20000 : { *(.text) }  }" > %t2.script
# RUN: ld.lld --script %t2.script %t-npic.o %t-pic.o %t-sto-pic.o -o %t2.exe
# RUN: llvm-objdump -d --no-show-raw-insn %t2.exe | FileCheck --check-prefix=ORPH1 %s

# ORPH1: Disassembly of section .text:
# ORPH1-EMPTY:
# ORPH1-NEXT: <__start>:
# ORPH1-NEXT:    20000:       jal     131168 <__LA25Thunk_foo1a>
# ORPH1-NEXT:    20004:       nop
# ORPH1-NEXT:    20008:       jal     131216 <__LA25Thunk_foo2>
# ORPH1-NEXT:    2000c:       nop
# ORPH1-NEXT:    20010:       jal     131184 <__LA25Thunk_foo1b>
# ORPH1-NEXT:    20014:       nop
# ORPH1-NEXT:    20018:       jal     131216 <__LA25Thunk_foo2>
# ORPH1-NEXT:    2001c:       nop
# ORPH1-NEXT:    20020:       jal     131120 <__LA25Thunk_fpic>
# ORPH1-NEXT:    20024:       nop
# ORPH1-NEXT:    20028:       jal     131152 <fnpic>
# ORPH1-NEXT:    2002c:       nop

# ORPH1: <__LA25Thunk_fpic>:
# ORPH1-NEXT:    20030:       lui     $25, 2
# ORPH1-NEXT:    20034:       j       131136 <fpic>
# ORPH1-NEXT:    20038:       addiu   $25, $25, 64
# ORPH1-NEXT:    2003c:       nop

# ORPH1: <fpic>:
# ORPH1-NEXT:    20040:       nop

# ORPH1: <fnpic>:
# ORPH1-NEXT:    20050:       nop

# ORPH1: <__LA25Thunk_foo1a>:
# ORPH1-NEXT:    20060:       lui     $25, 2
# ORPH1-NEXT:                 j       131200 <foo1a>
# ORPH1-NEXT:                 addiu   $25, $25, 128
# ORPH1-NEXT:                 nop

# ORPH1: <__LA25Thunk_foo1b>:
# ORPH1-NEXT:    20070:       lui     $25, 2
# ORPH1-NEXT:                 j       131204 <foo1b>
# ORPH1-NEXT:                 addiu   $25, $25, 132
# ORPH1-NEXT:                 nop

# ORPH1: <foo1a>:
# ORPH1-NEXT:    20080:       nop

# ORPH1: <foo1b>:
# ORPH1-NEXT:    20084:       nop

# ORPH1: <__LA25Thunk_foo2>:
# ORPH1-NEXT:    20090:       lui     $25, 2
# ORPH1-NEXT:                 j       131232 <foo2>
# ORPH1-NEXT:                 addiu   $25, $25, 160
# ORPH1-NEXT:                 nop

# ORPH1: <foo2>:
# ORPH1-NEXT:    200a0:       nop

# Test script with orphans added to new OutputSection, the .text.1 and
# .text.2 sections will form a new OutputSection .text
# RUN: echo "SECTIONS { .out 0x20000 : { *(.text) } .text : {*(.text*)} }" > %t3.script
# RUN: ld.lld --script %t3.script %t-npic.o %t-pic.o %t-sto-pic.o -o %t3.exe
# RUN: llvm-objdump -d --no-show-raw-insn %t3.exe | FileCheck --check-prefix=ORPH2 %s

# ORPH2: Disassembly of section .out:
# ORPH2-EMPTY:
# ORPH2-NEXT: <__start>:
# ORPH2-NEXT:    20000:       jal     131168 <__LA25Thunk_foo1a>
# ORPH2-NEXT:    20004:       nop
# ORPH2-NEXT:    20008:       jal     131208 <__LA25Thunk_foo2>
# ORPH2-NEXT:    2000c:       nop
# ORPH2-NEXT:    20010:       jal     131184 <__LA25Thunk_foo1b>
# ORPH2-NEXT:    20014:       nop
# ORPH2-NEXT:    20018:       jal     131208 <__LA25Thunk_foo2>
# ORPH2-NEXT:    2001c:       nop
# ORPH2-NEXT:    20020:       jal     131120 <__LA25Thunk_fpic>
# ORPH2-NEXT:    20024:       nop
# ORPH2-NEXT:    20028:       jal     131152 <fnpic>
# ORPH2-NEXT:    2002c:       nop

# ORPH2: <__LA25Thunk_fpic>:
# ORPH2-NEXT:    20030:       lui     $25, 2
# ORPH2-NEXT:    20034:       j       131136 <fpic>
# ORPH2-NEXT:    20038:       addiu   $25, $25, 64
# ORPH2-NEXT:    2003c:       nop

# ORPH2: <fpic>:
# ORPH2-NEXT:    20040:       nop

# ORPH2: <fnpic>:
# ORPH2-NEXT:    20050:       nop
# ORPH2-EMPTY:
# ORPH2-NEXT: Disassembly of section .text:
# ORPH2-EMPTY:

# ORPH2-NEXT: <__LA25Thunk_foo1a>:
# ORPH2-NEXT:    20060:       lui     $25, 2
# ORPH2-NEXT:    20064:       j       131200 <foo1a>
# ORPH2-NEXT:    20068:       addiu   $25, $25, 128
# ORPH2-NEXT:    2006c:       nop

# ORPH2: <__LA25Thunk_foo1b>:
# ORPH2-NEXT:    20070:       lui     $25, 2
# ORPH2-NEXT:    20074:       j       131204 <foo1b>
# ORPH2-NEXT:    20078:       addiu   $25, $25, 132
# ORPH2-NEXT:    2007c:       nop

# ORPH2: <foo1a>:
# ORPH2-NEXT:    20080:       nop

# ORPH2: <foo1b>:
# ORPH2-NEXT:    20084:       nop

# ORPH2: <__LA25Thunk_foo2>:
# ORPH2-NEXT:    20088:       lui     $25, 2
# ORPH2-NEXT:    2008c:       j       131232 <foo2>
# ORPH2-NEXT:    20090:       addiu   $25, $25, 160
# ORPH2-NEXT:    20094:       nop

# ORPH2: <foo2>:
# ORPH2-NEXT:    200a0:       nop
