ld: Add tests for -z separate-code and -z noseparate-code

Verify that -z separate-code works and -z noseparate-code doesn't disable
-z relro.

	PR ld/22393
	* testsuite/ld-elf/pr16322.d: Add -z noseparate-code.
	* testsuite/ld-elf/pr22393-1.s: New file.
	* testsuite/ld-elf/pr22393-1a.d: Likewise.
	* testsuite/ld-elf/pr22393-1b.d: Likewise.
	* testsuite/ld-elf/pr22393-1c.d: Likewise.
	* testsuite/ld-elf/pr22393-1d.d: Likewise.
	* testsuite/ld-elf/pr22393-1e.d: Likewise.
	* testsuite/ld-elf/pr22393-1f.d: Likewise.
	* testsuite/ld-elf/pr22393-2a.c: Likewise.
	* testsuite/ld-elf/pr22393-2a.rd: Likewise.
	* testsuite/ld-elf/pr22393-2b.c: Likewise.
	* testsuite/ld-elf/pr22393-2b.rd: Likewise.
	* testsuite/ld-elf/shared.exp: Run tests for -z separate-code.
This commit is contained in:
H.J. Lu 2018-01-11 19:17:46 -08:00
parent 2888249fc9
commit d346bb277c
14 changed files with 196 additions and 1 deletions

View File

@ -1,3 +1,20 @@
2018-01-11 H.J. Lu <hongjiu.lu@intel.com>
PR ld/22393
* testsuite/ld-elf/pr16322.d: Add -z noseparate-code.
* testsuite/ld-elf/pr22393-1.s: New file.
* testsuite/ld-elf/pr22393-1a.d: Likewise.
* testsuite/ld-elf/pr22393-1b.d: Likewise.
* testsuite/ld-elf/pr22393-1c.d: Likewise.
* testsuite/ld-elf/pr22393-1d.d: Likewise.
* testsuite/ld-elf/pr22393-1e.d: Likewise.
* testsuite/ld-elf/pr22393-1f.d: Likewise.
* testsuite/ld-elf/pr22393-2a.c: Likewise.
* testsuite/ld-elf/pr22393-2a.rd: Likewise.
* testsuite/ld-elf/pr22393-2b.c: Likewise.
* testsuite/ld-elf/pr22393-2b.rd: Likewise.
* testsuite/ld-elf/shared.exp: Run tests for -z separate-code.
2018-01-11 H.J. Lu <hongjiu.lu@intel.com>
PR ld/22393

View File

@ -1,4 +1,4 @@
#ld: -shared -z relro
#ld: -shared -z relro -z noseparate-code
#readelf: -l --wide
#target: *-*-linux-gnu *-*-gnu* *-*-nacl*

View File

@ -0,0 +1,21 @@
.section .rodata,"a",%progbits
.globl fx1
.type fx1, %object
fx1:
.zero 20
.section .data.rel.ro,"aw",%progbits
.globl px1
.type px1, %object
px1:
.dc.a fx1
.text
.global start /* Used by SH targets. */
start:
.global _start
_start:
.global __start
__start:
.global main /* Used by HPPA targets. */
main:
.dc.a 0

View File

@ -0,0 +1,9 @@
#source: pr22393-1.s
#ld: -shared -z separate-code -z relro
#readelf: -l --wide
#target: *-*-linux-gnu *-*-gnu* *-*-nacl*
#failif
#...
+[0-9]+ +.*(\.note|\.gnu|\.hash|\.dyn|\.rel).*\.text.*
#...

View File

@ -0,0 +1,9 @@
#source: pr22393-1.s
#ld: -shared -z relro -z separate-code
#readelf: -l --wide
#target: *-*-linux-gnu *-*-gnu* *-*-nacl*
#failif
#...
+[0-9]+ +.*.text.*(.eh_frame|\.rodata).*
#...

View File

@ -0,0 +1,9 @@
#source: pr22393-1.s
#ld: -pie -z separate-code
#readelf: -l --wide
#target: *-*-linux-gnu *-*-gnu* *-*-nacl*
#failif
#...
+[0-9]+ +.*(\.note|\.gnu|\.hash|\.dyn|\.rel).*\.text.*
#...

View File

@ -0,0 +1,9 @@
#source: pr22393-1.s
#ld: -pie -z separate-code
#readelf: -l --wide
#target: *-*-linux-gnu *-*-gnu* *-*-nacl*
#failif
#...
+[0-9]+ +.*.text.*(.eh_frame|\.rodata).*
#...

View File

@ -0,0 +1,9 @@
#source: pr22393-1.s
#ld: -z separate-code
#readelf: -l --wide
#target: *-*-linux-gnu *-*-gnu* *-*-nacl*
#failif
#...
+[0-9]+ +.*(\.note|\.gnu|\.hash|\.dyn|\.rel).*\.text.*
#...

View File

@ -0,0 +1,9 @@
#source: pr22393-1.s
#ld: -z separate-code
#readelf: -l --wide
#target: *-*-linux-gnu *-*-gnu* *-*-nacl*
#failif
#...
+[0-9]+ +.*.text.*(.eh_frame|\.rodata).*
#...

View File

@ -0,0 +1,7 @@
#include <stdio.h>
void
test()
{
printf ("PASS\n");
}

View File

@ -0,0 +1,9 @@
#source: pr22393-1.s
#ld: -shared -z textonly
#readelf: -l --wide
#target: *-*-linux-gnu *-*-gnu* *-*-nacl*
#failif
#...
+[0-9]+ +.*(\.note|\.gnu|\.hash|\.dyn|\.rel).*\.text.*
#...

View File

@ -0,0 +1,7 @@
void test(void);
int main()
{
test();
return 0;
}

View File

@ -0,0 +1,9 @@
#source: pr22393-1.s
#ld: -shared -z textonly
#readelf: -l --wide
#target: *-*-linux-gnu *-*-gnu* *-*-nacl*
#failif
#...
+[0-9]+ +.*(\.note|\.gnu|\.hash|\.dyn|\.rel).*\.text.*
#...

View File

@ -864,6 +864,51 @@ if { [istarget *-*-linux*]
{} \
"libpr19579.so" \
] \
[list \
"Build pr22393-2a.so" \
"-shared -Wl,-z,separate-code" \
"-fPIC" \
{pr22393-2a.c} \
{{readelf -lW pr22393-2a.rd} \
{readelf -lW pr22393-2b.rd}} \
"pr22393-2a.so" \
] \
[list \
"Build pr22393-2a-now.so" \
"-shared -Wl,-z,separate-code,-z,now" \
"-fPIC" \
{pr22393-2a.c} \
{{readelf -lW pr22393-2a.rd} \
{readelf -lW pr22393-2b.rd}} \
"pr22393-2a-now.so" \
] \
[list \
"Build pr22393-2" \
"$NOPIE_LDFLAGS -Wl,-z,separate-code,--no-as-needed tmpdir/pr22393-2a.so" \
"$NOPIE_CFLAGS" \
{pr22393-2b.c} \
{{readelf -lW pr22393-2a.rd} \
{readelf -lW pr22393-2b.rd}} \
"pr22393-2" \
] \
[list \
"Build pr22393-2 (PIE)" \
"-pie -Wl,-z,separate-code,--no-as-needed tmpdir/pr22393-2a-now.so" \
"-fPIE" \
{pr22393-2b.c} \
{{readelf -lW pr22393-2a.rd} \
{readelf -lW pr22393-2b.rd}} \
"pr22393-2-pie" \
] \
[list \
"Build pr22393-2 (static)" \
"-static -Wl,-z,separate-code" \
"" \
{pr22393-2a.c pr22393-2b.c} \
{{readelf -lW pr22393-2a.rd} \
{readelf -lW pr22393-2b.rd}} \
"pr22393-2-static" \
] \
]
run_ld_link_exec_tests [list \
[list \
@ -1001,6 +1046,32 @@ if { [istarget *-*-linux*]
"pass.out" \
"-fPIE" \
] \
[list \
"Run pr22393-2" \
"$NOPIE_LDFLAGS -Wl,-z,separate-code,--no-as-needed tmpdir/pr22393-2a.so" \
"" \
{pr22393-2b.c} \
"pr22393-2" \
"pass.out" \
"$NOPIE_CFLAGS" \
] \
[list \
"Run pr22393-2 (PIE)" \
"-pie -Wl,-z,separate-code,--no-as-needed tmpdir/pr22393-2a-now.so" \
"" \
{pr22393-2b.c} \
"pr22393-2-pie" \
"pass.out" \
"-fPIE" \
] \
[list \
"Run pr22393-2 (static)" \
"-static -Wl,-z,separate-code" \
"" \
{pr22393-2a.c pr22393-2b.c} \
"pr22393-2-static" \
"pass.out" \
] \
]
}