aarch64: GCS tests for linking issues with dynamic objects

This commit is contained in:
Matthieu Longo 2024-11-05 12:58:51 +00:00
parent 724a8341f6
commit 1c136b8ee9
18 changed files with 247 additions and 0 deletions

View File

@ -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] {

View 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

View 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

View 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

View 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]*

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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"

View 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"