mips-non-zero-gp0.s
1.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# REQUIRES: mips
# Check addend adjustment in case of generating a relocatable object
# if some input files have non-zero GP0 value.
# We have to use GNU as and ld.bfd 2.28 to generate relocatable object
# files with non-zero GP0 value using the following command lines:
#
# as -mips32 -o test.o \
# && ld.bfd -m elf32btsmip -r test.o -o mips-gp0-non-zero.o
# as -mips64 -o test.o \
# && ld.bfd -m elf64btsmip -r test.o -o mips-n64-gp0-non-zero.o
# Source code for mips-gp0-non-zero.o:
# .text
# .global __start
# __start:
# lw $t0,%call16(__start)($gp)
# foo:
# nop
# bar:
# nop
#
# .section .rodata, "a"
# v:
# .gpword foo
# .gpword bar
# Source code for mips-n64-gp0-non-zero.o and mips-micro-gp0-non-zero.o:
# .text
# .global __start
# __start:
# foo:
# lui $gp,%hi(%neg(%gp_rel(foo)))
# RUN: ld.lld -r -o %t-32.r %S/Inputs/mips-gp0-non-zero.o
# RUN: llvm-readobj -A %t-32.r | FileCheck --check-prefix=GPVAL %s
# RUN: llvm-objdump -s %t-32.r | FileCheck --check-prefix=ADDEND32 %s
# RUN: ld.lld -r -o %t-64.r %S/Inputs/mips-n64-gp0-non-zero.o
# RUN: llvm-readobj -A %t-64.r | FileCheck --check-prefix=GPVAL %s
# RUN: llvm-readobj -r %S/Inputs/mips-n64-gp0-non-zero.o %t-64.r \
# RUN: | FileCheck --check-prefix=ADDEND64 %s
# GPVAL: GP: 0x0
# ADDEND32: Contents of section .rodata:
# ADDEND32-NEXT: 0000 00007ff4 00007ff8
# ^ 4+GP0 ^ 8+GP0
# ADDEND64: File: {{.*}}{{/|\\}}mips-n64-gp0-non-zero.o
# ADDEND64: .text 0xFFFFFFFFFFFF8011
# ADDEND64: File: {{.*}}{{/|\\}}mips-non-zero-gp0.s.tmp-64.r
# ADDEND64: .text 0x0