mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-04-12 14:33:06 +08:00
aarch64: GCS tests for linking issues with dynamic objects
This commit is contained in:
parent
724a8341f6
commit
1c136b8ee9
@ -42,6 +42,21 @@ set aarch64elflinktests {
|
||||
"-shared" ""
|
||||
"-I$srcdir/$subdir -defsym __property_bti__=1"
|
||||
{bti-plt-so.s} {} "libbti-plt-so.so"}
|
||||
|
||||
{"Build gcs-so for GCS tests"
|
||||
"-shared" ""
|
||||
"-I$srcdir/$subdir -defsym __property_gcs__=1"
|
||||
{gcs-so.s} {} "libgcs-so.so"}
|
||||
|
||||
{"Build nogcs-so for GCS tests"
|
||||
"-shared" ""
|
||||
"-I$srcdir/$subdir"
|
||||
{gcs-so.s} {} "libnogcs-so.so"}
|
||||
|
||||
{"Build gcs-so2 for GCS tests"
|
||||
"-shared" ""
|
||||
"-I$srcdir/$subdir -defsym __property_gcs__=1"
|
||||
{gcs-so2.s} {} "libgcs-so2.so"}
|
||||
}
|
||||
|
||||
if [check_shared_lib_support] {
|
||||
|
12
ld/testsuite/ld-aarch64/protections/gcs-dynamic-1-a.d
Normal file
12
ld/testsuite/ld-aarch64/protections/gcs-dynamic-1-a.d
Normal file
@ -0,0 +1,12 @@
|
||||
#name: '-z gcs=always -z gcs-report=error' and shared library with GCS feature reports no error.
|
||||
#source: gcs.s
|
||||
#source: gcs2.s
|
||||
#alltargets: [check_shared_lib_support] *linux*
|
||||
#as: -march=armv9.4-a+gcs -defsym __property_gcs__=1
|
||||
#ld: -z gcs=always -z gcs-report=error -L./tmpdir -lgcs-so
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: AArch64 feature: GCS
|
12
ld/testsuite/ld-aarch64/protections/gcs-dynamic-1-b.d
Normal file
12
ld/testsuite/ld-aarch64/protections/gcs-dynamic-1-b.d
Normal file
@ -0,0 +1,12 @@
|
||||
#name: '-z gcs=always -z gcs-report=error -z gcs-report-dynamic=error' and shared library with GCS feature reports no error.
|
||||
#source: gcs.s
|
||||
#source: gcs2.s
|
||||
#alltargets: [check_shared_lib_support] *linux*
|
||||
#as: -march=armv9.4-a+gcs -defsym __property_gcs__=1
|
||||
#ld: -z gcs=always -z gcs-report=error -z gcs-report-dynamic=error -L./tmpdir -lgcs-so
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: AArch64 feature: GCS
|
15
ld/testsuite/ld-aarch64/protections/gcs-dynamic-2-a-i.d
Normal file
15
ld/testsuite/ld-aarch64/protections/gcs-dynamic-2-a-i.d
Normal file
@ -0,0 +1,15 @@
|
||||
#name: '-z gcs=always -z gcs-report=error' and shared libraries without GCS feature reports warnings.
|
||||
#source: gcs.s
|
||||
#source: gcs2.s
|
||||
#alltargets: [check_shared_lib_support] *linux*
|
||||
#as: -march=armv9.4-a+gcs -defsym __property_gcs__=1
|
||||
#ld: -z gcs=always -z gcs-report=error -L./tmpdir -lnogcs-so -lbti-plt-so -lgcs-so2
|
||||
#warning: \A[^\n]*libnogcs-so\.so: warning: GCS is required by -z gcs[^\n]*\n
|
||||
#warning: [^\n]*libbti-plt-so\.so: warning: GCS is required by -z gcs[^\n]*
|
||||
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: AArch64 feature: GCS
|
8
ld/testsuite/ld-aarch64/protections/gcs-dynamic-2-a-ii.d
Normal file
8
ld/testsuite/ld-aarch64/protections/gcs-dynamic-2-a-ii.d
Normal file
@ -0,0 +1,8 @@
|
||||
#name: '-z gcs=always -z gcs-report=error -z gcs-report-dynamic=error' and shared libraries without GCS feature reports errors.
|
||||
#source: gcs.s
|
||||
#source: gcs2.s
|
||||
#alltargets: [check_shared_lib_support] *linux*
|
||||
#as: -march=armv9.4-a+gcs -defsym __property_gcs__=1
|
||||
#ld: -z gcs=always -z gcs-report=error -z gcs-report-dynamic=error -L./tmpdir -lnogcs-so -lbti-plt-so -lgcs-so2
|
||||
#error: \A[^\n]*libnogcs-so\.so: error: GCS is required by -z gcs[^\n]*\n
|
||||
#error: [^\n]*libbti-plt-so\.so: error: GCS is required by -z gcs[^\n]*
|
15
ld/testsuite/ld-aarch64/protections/gcs-dynamic-2-a-iii.d
Normal file
15
ld/testsuite/ld-aarch64/protections/gcs-dynamic-2-a-iii.d
Normal file
@ -0,0 +1,15 @@
|
||||
#name: '-z gcs=always -z gcs-report=error -z gcs-report-dynamic=warning' and shared libraries without GCS feature reports warnings.
|
||||
#source: gcs.s
|
||||
#source: gcs2.s
|
||||
#alltargets: [check_shared_lib_support] *linux*
|
||||
#as: -march=armv9.4-a+gcs -defsym __property_gcs__=1
|
||||
#ld: -z gcs=always -z gcs-report=error -z gcs-report-dynamic=warning -L./tmpdir -lnogcs-so -lbti-plt-so -lgcs-so2
|
||||
#warning: \A[^\n]*libnogcs-so\.so: warning: GCS is required by -z gcs[^\n]*\n
|
||||
#warning: [^\n]*libbti-plt-so\.so: warning: GCS is required by -z gcs[^\n]*
|
||||
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: AArch64 feature: GCS
|
12
ld/testsuite/ld-aarch64/protections/gcs-dynamic-2-a-iv.d
Normal file
12
ld/testsuite/ld-aarch64/protections/gcs-dynamic-2-a-iv.d
Normal file
@ -0,0 +1,12 @@
|
||||
#name: '-z gcs=always -z gcs-report=error -z gcs-report-dynamic=none' and shared libraries without GCS feature reports nothing.
|
||||
#source: gcs.s
|
||||
#source: gcs2.s
|
||||
#alltargets: [check_shared_lib_support] *linux*
|
||||
#as: -march=armv9.4-a+gcs -defsym __property_gcs__=1
|
||||
#ld: -z gcs=always -z gcs-report=error -z gcs-report-dynamic=none -L./tmpdir -lnogcs-so -lbti-plt-so -lgcs-so2
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: AArch64 feature: GCS
|
14
ld/testsuite/ld-aarch64/protections/gcs-dynamic-2-b.d
Normal file
14
ld/testsuite/ld-aarch64/protections/gcs-dynamic-2-b.d
Normal file
@ -0,0 +1,14 @@
|
||||
#name: '-z gcs=always -z gcs-report=warning' and shared libraries without GCS feature reports warnings.
|
||||
#source: gcs.s
|
||||
#source: gcs2.s
|
||||
#alltargets: [check_shared_lib_support] *linux*
|
||||
#as: -march=armv9.4-a+gcs -defsym __property_gcs__=1
|
||||
#ld: -z gcs=always -z gcs-report=warning -L./tmpdir -lnogcs-so -lbti-plt-so -lgcs-so2
|
||||
#warning: \A[^\n]*libnogcs-so\.so: warning: GCS is required by -z gcs[^\n]*\n
|
||||
#warning: [^\n]*libbti-plt-so\.so: warning: GCS is required by -z gcs[^\n]*
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: AArch64 feature: GCS
|
12
ld/testsuite/ld-aarch64/protections/gcs-dynamic-2-c.d
Normal file
12
ld/testsuite/ld-aarch64/protections/gcs-dynamic-2-c.d
Normal file
@ -0,0 +1,12 @@
|
||||
#name: '-z gcs=always -z gcs-report=none' and shared libraries without GCS feature reports nothing.
|
||||
#source: gcs.s
|
||||
#source: gcs2.s
|
||||
#alltargets: [check_shared_lib_support] *linux*
|
||||
#as: -march=armv9.4-a+gcs -defsym __property_gcs__=1
|
||||
#ld: -z gcs=always -z gcs-report=none -L./tmpdir -lnogcs-so -lbti-plt-so -lgcs-so2
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: AArch64 feature: GCS
|
14
ld/testsuite/ld-aarch64/protections/gcs-dynamic-2-d.d
Normal file
14
ld/testsuite/ld-aarch64/protections/gcs-dynamic-2-d.d
Normal file
@ -0,0 +1,14 @@
|
||||
#name: '-z gcs=always -z gcs-report' and shared libraries without GCS feature reports warnings.
|
||||
#source: gcs.s
|
||||
#source: gcs2.s
|
||||
#alltargets: [check_shared_lib_support] *linux*
|
||||
#as: -march=armv9.4-a+gcs -defsym __property_gcs__=1
|
||||
#ld: -z gcs=always -z gcs-report -L./tmpdir -lnogcs-so -lbti-plt-so -lgcs-so2
|
||||
#warning: \A[^\n]*libnogcs-so\.so: warning: GCS is required by -z gcs[^\n]*\n
|
||||
#warning: [^\n]*libbti-plt-so\.so: warning: GCS is required by -z gcs[^\n]*
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: AArch64 feature: GCS
|
15
ld/testsuite/ld-aarch64/protections/gcs-dynamic-3-a.d
Normal file
15
ld/testsuite/ld-aarch64/protections/gcs-dynamic-3-a.d
Normal file
@ -0,0 +1,15 @@
|
||||
#name: '-z gcs=implicit -z gcs-report=error' and shared libraries without GCS feature reports warnings.
|
||||
#source: gcs.s
|
||||
#source: gcs2.s
|
||||
#alltargets: [check_shared_lib_support] *linux*
|
||||
#as: -march=armv9.4-a+gcs -defsym __property_gcs__=1
|
||||
#ld: -z gcs=implicit -z gcs-report=error -L./tmpdir -lnogcs-so -lbti-plt-so -lgcs-so2
|
||||
#warning: \A[^\n]*libnogcs-so\.so: warning: GCS is required by -z gcs[^\n]*\n
|
||||
#warning: [^\n]*libbti-plt-so\.so: warning: GCS is required by -z gcs[^\n]*
|
||||
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: AArch64 feature: GCS
|
14
ld/testsuite/ld-aarch64/protections/gcs-dynamic-3-b.d
Normal file
14
ld/testsuite/ld-aarch64/protections/gcs-dynamic-3-b.d
Normal file
@ -0,0 +1,14 @@
|
||||
#name: '-z gcs=implicit -z gcs-report=warning' and shared libraries without GCS feature reports warnings.
|
||||
#source: gcs.s
|
||||
#source: gcs2.s
|
||||
#alltargets: [check_shared_lib_support] *linux*
|
||||
#as: -march=armv9.4-a+gcs -defsym __property_gcs__=1
|
||||
#ld: -z gcs=implicit -z gcs-report=warning -L./tmpdir -lnogcs-so -lbti-plt-so -lgcs-so2
|
||||
#warning: \A[^\n]*libnogcs-so\.so: warning: GCS is required by -z gcs[^\n]*\n
|
||||
#warning: [^\n]*libbti-plt-so\.so: warning: GCS is required by -z gcs[^\n]*
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: AArch64 feature: GCS
|
12
ld/testsuite/ld-aarch64/protections/gcs-dynamic-3-c.d
Normal file
12
ld/testsuite/ld-aarch64/protections/gcs-dynamic-3-c.d
Normal file
@ -0,0 +1,12 @@
|
||||
#name: '-z gcs=implicit -z gcs-report=none' and shared libraries without GCS feature reports no warning.
|
||||
#source: gcs.s
|
||||
#source: gcs2.s
|
||||
#alltargets: [check_shared_lib_support] *linux*
|
||||
#as: -march=armv9.4-a+gcs -defsym __property_gcs__=1
|
||||
#ld: -z gcs=implicit -z gcs-report=none -L./tmpdir -lnogcs-so -lbti-plt-so -lgcs-so2
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: AArch64 feature: GCS
|
7
ld/testsuite/ld-aarch64/protections/gcs-dynamic-4-a.d
Normal file
7
ld/testsuite/ld-aarch64/protections/gcs-dynamic-4-a.d
Normal file
@ -0,0 +1,7 @@
|
||||
#name: '-z gcs=never -z gcs-report=error' and shared libraries without GCS feature reports no warning/error.
|
||||
#source: gcs.s
|
||||
#source: gcs2.s
|
||||
#alltargets: [check_shared_lib_support] *linux*
|
||||
#as: -march=armv9.4-a+gcs -defsym __property_gcs__=1
|
||||
#ld: -z gcs=never -z gcs-report=error -L./tmpdir -lnogcs-so -lbti-plt-so -lgcs-so2
|
||||
#readelf: -n
|
7
ld/testsuite/ld-aarch64/protections/gcs-dynamic-4-b.d
Normal file
7
ld/testsuite/ld-aarch64/protections/gcs-dynamic-4-b.d
Normal file
@ -0,0 +1,7 @@
|
||||
#name: '-z gcs=never -z gcs-report=warning' and shared libraries without GCS feature reports no warning/error.
|
||||
#source: gcs.s
|
||||
#source: gcs2.s
|
||||
#alltargets: [check_shared_lib_support] *linux*
|
||||
#as: -march=armv9.4-a+gcs -defsym __property_gcs__=1
|
||||
#ld: -z gcs=never -z gcs-report=warning -L./tmpdir -lnogcs-so -lbti-plt-so -lgcs-so2
|
||||
#readelf: -n
|
7
ld/testsuite/ld-aarch64/protections/gcs-dynamic-4-c.d
Normal file
7
ld/testsuite/ld-aarch64/protections/gcs-dynamic-4-c.d
Normal file
@ -0,0 +1,7 @@
|
||||
#name: '-z gcs=never -z gcs-report=none' and shared libraries without GCS feature reports no warning/error.
|
||||
#source: gcs.s
|
||||
#source: gcs2.s
|
||||
#alltargets: [check_shared_lib_support] *linux*
|
||||
#as: -march=armv9.4-a+gcs -defsym __property_gcs__=1
|
||||
#ld: -z gcs=never -z gcs-report=none -L./tmpdir -lnogcs-so -lbti-plt-so -lgcs-so2
|
||||
#readelf: -n
|
28
ld/testsuite/ld-aarch64/protections/gcs-so.s
Normal file
28
ld/testsuite/ld-aarch64/protections/gcs-so.s
Normal file
@ -0,0 +1,28 @@
|
||||
.global foo2
|
||||
.type foo2, %function
|
||||
foo2:
|
||||
sub sp, sp, #16
|
||||
mov w0, 9
|
||||
str w0, [sp, 12]
|
||||
ldr w0, [sp, 12]
|
||||
add w0, w0, 4
|
||||
str w0, [sp, 12]
|
||||
nop
|
||||
add sp, sp, 16
|
||||
ret
|
||||
.size foo2, .-foo2
|
||||
.global bar2
|
||||
.type bar2, %function
|
||||
bar2:
|
||||
sub sp, sp, #16
|
||||
mov w0, 9
|
||||
str w0, [sp, 12]
|
||||
ldr w0, [sp, 12]
|
||||
add w0, w0, 4
|
||||
str w0, [sp, 12]
|
||||
nop
|
||||
add sp, sp, 16
|
||||
ret
|
||||
.size bar2, .-bar2
|
||||
|
||||
.include "gnu-note-properties-selectable-merged.inc"
|
28
ld/testsuite/ld-aarch64/protections/gcs-so2.s
Normal file
28
ld/testsuite/ld-aarch64/protections/gcs-so2.s
Normal file
@ -0,0 +1,28 @@
|
||||
.global foo3
|
||||
.type foo3, %function
|
||||
foo3:
|
||||
sub sp, sp, #16
|
||||
mov w0, 9
|
||||
str w0, [sp, 12]
|
||||
ldr w0, [sp, 12]
|
||||
add w0, w0, 4
|
||||
str w0, [sp, 12]
|
||||
nop
|
||||
add sp, sp, 16
|
||||
ret
|
||||
.size foo3, .-foo3
|
||||
.global bar3
|
||||
.type bar3, %function
|
||||
bar3:
|
||||
sub sp, sp, #16
|
||||
mov w0, 9
|
||||
str w0, [sp, 12]
|
||||
ldr w0, [sp, 12]
|
||||
add w0, w0, 4
|
||||
str w0, [sp, 12]
|
||||
nop
|
||||
add sp, sp, 16
|
||||
ret
|
||||
.size bar3, .-bar3
|
||||
|
||||
.include "gnu-note-properties-selectable-merged.inc"
|
Loading…
x
Reference in New Issue
Block a user