3 // Reserve space for copy relocations of read-only symbols in
.bss.rel.ro
5 // RUN
: llvm-mc
-filetype
=obj
-triple
=x86_64-pc-linux
%s
-o
%t.o
6 // RUN
: llvm-mc
-filetype
=obj
-triple
=x86_64-pc-linux
%p
/Inputs
/relocation-copy-relro.s
-o
%t2.o
7 // RUN
: ld.lld
-shared
%t2.o
-soname
=so
-o
%t.so
8 // RUN
: ld.lld
%t.o
%t.so
-o
%t3
9 // RUN
: llvm-readobj
-S
-l -r
%t3 | FileCheck
%s
11 /// Due to
-z rodynamic
, The only RELRO section is
.bss.rel.ro. Test that we
12 /// still append the
.relro_padding section.
13 // RUN
: ld.lld
-z rodynamic
%t.o
%t.so
-o
%t4
14 // RUN
: llvm-readelf
-S
-l %t4 | FileCheck
%s
--check-prefix
=CHECK2
16 // CHECK
: Name
: .bss.rel.ro
17 // CHECK-NEXT
: Type
: SHT_NOBITS
(0x8)
18 // CHECK-NEXT
: Flags
[ (0x3)
19 // CHECK-NEXT
: SHF_ALLOC
(0x2)
20 // CHECK-NEXT
: SHF_WRITE
(0x1)
22 // CHECK-NEXT
: Address
: 0x202368
23 // CHECK-NEXT
: Offset
: 0x368
24 // CHECK-NEXT
: Size
: 8
26 // CHECK
: Type
: PT_GNU_RELRO
(0x6474E552)
27 // CHECK-NEXT
: Offset
: 0x2A8
28 // CHECK-NEXT
: VirtualAddress
: 0x2022A8
29 // CHECK-NEXT
: PhysicalAddress
: 0x2022A8
30 // CHECK-NEXT
: FileSize
: 192
31 // CHECK-NEXT
: MemSize
: 3416
33 // CHECK
: 0x202368 R_X86_64_COPY
a 0x0
34 // CHECK
: 0x20236C R_X86_64_COPY
b 0x0
36 // CHECK2
: LOAD
0x000356 0x0000000000202356 0x0000000000202356 0x000000 0x000caa RW
0x1000
37 // CHECK2
: DYNAMIC
0x000258 0x0000000000200258 0x0000000000200258 0x0000b0 0x0000b0 R
0x8
38 // CHECK2
: GNU_RELRO
0x000356 0x0000000000202356 0x0000000000202356 0x000000 0x000caa R
0x1
40 // CHECK2
: Section to Segment mapping
:
41 // CHECK2-NEXT
: Segment Sections.
..
43 // CHECK2-NEXT
: 01 .dynsym .gnu.hash .hash .dynamic .dynstr .rela.dyn
44 // CHECK2-NEXT
: 02 .text
45 // CHECK2-NEXT
: 03 .bss.rel.ro .relro_padding
46 // CHECK2-NEXT
: 04 .dynamic
47 // CHECK2-NEXT
: 05 .bss.rel.ro .relro_padding