mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-19 07:13:40 +08:00
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:
parent
2888249fc9
commit
d346bb277c
17
ld/ChangeLog
17
ld/ChangeLog
@ -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
|
||||
|
@ -1,4 +1,4 @@
|
||||
#ld: -shared -z relro
|
||||
#ld: -shared -z relro -z noseparate-code
|
||||
#readelf: -l --wide
|
||||
#target: *-*-linux-gnu *-*-gnu* *-*-nacl*
|
||||
|
||||
|
21
ld/testsuite/ld-elf/pr22393-1.s
Normal file
21
ld/testsuite/ld-elf/pr22393-1.s
Normal 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
|
9
ld/testsuite/ld-elf/pr22393-1a.d
Normal file
9
ld/testsuite/ld-elf/pr22393-1a.d
Normal 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.*
|
||||
#...
|
9
ld/testsuite/ld-elf/pr22393-1b.d
Normal file
9
ld/testsuite/ld-elf/pr22393-1b.d
Normal 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).*
|
||||
#...
|
9
ld/testsuite/ld-elf/pr22393-1c.d
Normal file
9
ld/testsuite/ld-elf/pr22393-1c.d
Normal 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.*
|
||||
#...
|
9
ld/testsuite/ld-elf/pr22393-1d.d
Normal file
9
ld/testsuite/ld-elf/pr22393-1d.d
Normal 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).*
|
||||
#...
|
9
ld/testsuite/ld-elf/pr22393-1e.d
Normal file
9
ld/testsuite/ld-elf/pr22393-1e.d
Normal 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.*
|
||||
#...
|
9
ld/testsuite/ld-elf/pr22393-1f.d
Normal file
9
ld/testsuite/ld-elf/pr22393-1f.d
Normal 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).*
|
||||
#...
|
7
ld/testsuite/ld-elf/pr22393-2a.c
Normal file
7
ld/testsuite/ld-elf/pr22393-2a.c
Normal file
@ -0,0 +1,7 @@
|
||||
#include <stdio.h>
|
||||
|
||||
void
|
||||
test()
|
||||
{
|
||||
printf ("PASS\n");
|
||||
}
|
9
ld/testsuite/ld-elf/pr22393-2a.rd
Normal file
9
ld/testsuite/ld-elf/pr22393-2a.rd
Normal 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.*
|
||||
#...
|
7
ld/testsuite/ld-elf/pr22393-2b.c
Normal file
7
ld/testsuite/ld-elf/pr22393-2b.c
Normal file
@ -0,0 +1,7 @@
|
||||
void test(void);
|
||||
|
||||
int main()
|
||||
{
|
||||
test();
|
||||
return 0;
|
||||
}
|
9
ld/testsuite/ld-elf/pr22393-2b.rd
Normal file
9
ld/testsuite/ld-elf/pr22393-2b.rd
Normal 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.*
|
||||
#...
|
@ -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" \
|
||||
] \
|
||||
]
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user