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
7 // RUN
: ld.lld
%t.o
%t2.so
-z now
-z norelro
-z relro
-o
%t
8 // RUN
: llvm-readelf
-l %t | FileCheck
--check-prefix
=CHECK
--check-prefix
=FULLRELRO
%s
10 // RUN
: ld.lld
%t.o
%t2.so
-z norelro
-z relro
-o
%t
11 // RUN
: llvm-readelf
-l %t | FileCheck
--check-prefix
=CHECK
--check-prefix
=PARTRELRO
%s
13 // RUN
: ld.lld
%t.o
%t2.so
-z norelro
-o
%t
14 // RUN
: llvm-readelf
-l %t | FileCheck
--check-prefix
=NORELRO
%s
16 // CHECK
: Program Headers
:
23 // CHECK-NEXT
: DYNAMIC
24 // CHECK-NEXT
: GNU_RELRO
25 // CHECK
: Section to Segment mapping
:
27 // FULLRELRO
: 03 .data.rel.ro .dynamic .got .got.plt .relro_padding {{$}}
28 // PARTRELRO
: 03 .data.rel.ro .dynamic .got .relro_padding {{$}}
31 // NORELRO-
NOT: GNU_RELRO
36 jmp
*bar2@GOTPCREL
(%rip
)
43 .section .bss,"",@nobits
45 .section .data.rel.ro, "aw"