]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/ELF/relro.s
Vendor import of lld trunk r338150:
[FreeBSD/FreeBSD.git] / test / ELF / relro.s
1 // REQUIRES: x86
2
3 // RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
4 // RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/shared.s -o %t2.o
5 // RUN: ld.lld -shared %t2.o -o %t2.so
6
7 // RUN: ld.lld %t.o %t2.so -z now -z norelro -z relro -o %t
8 // RUN: llvm-readobj -l --elf-output-style=GNU %t | FileCheck --check-prefix=CHECK --check-prefix=FULLRELRO %s
9
10 // RUN: ld.lld %t.o %t2.so -z norelro -z relro -o %t
11 // RUN: llvm-readobj -l --elf-output-style=GNU %t | FileCheck --check-prefix=CHECK --check-prefix=PARTRELRO %s
12
13 // RUN: ld.lld %t.o %t2.so -z norelro -o %t
14 // RUN: llvm-readobj -l --elf-output-style=GNU %t | FileCheck --check-prefix=NORELRO %s
15
16 // CHECK:      Program Headers:
17 // CHECK-NEXT: Type
18 // CHECK-NEXT: PHDR
19 // CHECK-NEXT: LOAD
20 // CHECK-NEXT: LOAD
21 // CHECK-NEXT: LOAD
22 // CHECK-NEXT: DYNAMIC
23 // CHECK-NEXT: GNU_RELRO
24 // CHECK: Section to Segment mapping:
25
26 // FULLRELRO:  05     .openbsd.randomdata .dynamic .got .got.plt {{$}}
27 // PARTRELRO:  05     .openbsd.randomdata .dynamic .got {{$}}
28
29
30 // NORELRO-NOT: GNU_RELRO
31
32 .global _start
33 _start:
34   .long bar
35   jmp *bar2@GOTPCREL(%rip)
36
37 .section .data,"aw"
38 .quad 0
39
40 .zero 4
41 .section .foo,"aw"
42 .section .bss,"",@nobits
43
44 .section .openbsd.randomdata, "aw"
45 .quad 0