aboutsummaryrefslogblamecommitdiff
path: root/test/ELF/ppc64-toc-restore.s
blob: dbfeaece7db4d03c244f25d36e387adfbafbd92c (plain) (tree)






















































                                                                                               

                                                           




                                                       
// RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %s -o %t.o
// RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %p/Inputs/shared-ppc64.s -o %t2.o
// RUN: ld.lld -shared %t2.o -o %t2.so
// RUN: ld.lld %t.o %t2.so -o %t
// RUN: llvm-objdump -d %t | FileCheck %s
// REQUIRES: ppc

// CHECK: Disassembly of section .text:

.global _start
_start:
  bl bar
  nop

// CHECK: _start:
// CHECK: 10010000:       48 00 00 21     bl .+32
// CHECK-NOT: 10010004:       60 00 00 00     nop
// CHECK: 10010004:       e8 41 00 28     ld 2, 40(1)

.global noret
noret:
  bl bar
  li 5, 7

// CHECK: noret:
// CHECK: 10010008: 48 00 00 19 bl .+24
// CHECK: 1001000c: 38 a0 00 07 li 5, 7

.global noretend
noretend:
  bl bar

// CHECK: noretend:
// CHECK: 10010010: 48 00 00 11 bl .+16

.global noretb
noretb:
  b bar

// CHECK: noretb:
// CHECK: 10010014: 48 00 00 0c b .+12

// This should come last to check the end-of-buffer condition.
.global last
last:
  bl bar
  nop

// CHECK: last:
// CHECK: 10010018: 48 00 00 09 bl .+8
// CHECK: 1001001c: e8 41 00 28 ld 2, 40(1)

// CHECK: Disassembly of section .plt:
// CHECK: .plt:
// CHECK: 10010020:       f8 41 00 28     std 2, 40(1)
// CHECK: 10010024:       3d 62 10 03     addis 11, 2, 4099
// CHECK: 10010028:       e9 8b 80 18     ld 12, -32744(11)
// CHECK: 1001002c:       e9 6c 00 00     ld 11, 0(12)
// CHECK: 10010030:       7d 69 03 a6     mtctr 11
// CHECK: 10010034:       e8 4c 00 08     ld 2, 8(12)
// CHECK: 10010038:       e9 6c 00 10     ld 11, 16(12)
// CHECK: 1001003c:       4e 80 04 20     bctr