Hi Torbjörn,
This looks like a nice improvement to me ;-)
On 10/19/22 11:42, Torbjörn SVENSSON via Gcc-patches wrote:
Depending on the DejaGNU board definition, the .gnu.sgstubs section
might be placed on different locations in order to suite the target.
typo: suite -> suit
With this patch, the start location of the section is overrideable
from the board definition with the fallback of the previously
hardcoded location.
gcc/testsuite/ChangeLog:
* gcc.target/arm/cmse/bitfield-1.c: Use overridable location.
* gcc.target/arm/cmse/bitfield-2.c: Likewise.
* gcc.target/arm/cmse/bitfield-3.c: Likewise.
* gcc.target/arm/cmse/cmse-20.c: Likewise.
* gcc.target/arm/cmse/struct-1.c: Likewise.
* gcc.target/arm/cmse/cmse.exp (cmse_sgstubs): New.
Signed-off-by: Torbjörn SVENSSON <torbjorn.svens...@foss.st.com>
---
gcc/testsuite/gcc.target/arm/cmse/bitfield-1.c | 2 +-
gcc/testsuite/gcc.target/arm/cmse/bitfield-2.c | 2 +-
gcc/testsuite/gcc.target/arm/cmse/bitfield-3.c | 2 +-
gcc/testsuite/gcc.target/arm/cmse/cmse-20.c | 2 +-
gcc/testsuite/gcc.target/arm/cmse/cmse.exp | 11 +++++++++++
gcc/testsuite/gcc.target/arm/cmse/struct-1.c | 2 +-
6 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/gcc/testsuite/gcc.target/arm/cmse/bitfield-1.c
b/gcc/testsuite/gcc.target/arm/cmse/bitfield-1.c
index 5685f744435..c1221bef29f 100644
--- a/gcc/testsuite/gcc.target/arm/cmse/bitfield-1.c
+++ b/gcc/testsuite/gcc.target/arm/cmse/bitfield-1.c
@@ -1,5 +1,5 @@
/* This test is executed only if the execution engine supports CMSE
instructions. */
-/* { dg-options "--save-temps -mcmse
-Wl,--section-start,.gnu.sgstubs=0x00400000" } */
+/* { dg-options "--save-temps -mcmse
-Wl,--section-start,.gnu.sgstubs=[cmse_sgstubs]" } */
typedef struct
{
diff --git a/gcc/testsuite/gcc.target/arm/cmse/bitfield-2.c
b/gcc/testsuite/gcc.target/arm/cmse/bitfield-2.c
index 7a794d44644..79e9a3efc93 100644
--- a/gcc/testsuite/gcc.target/arm/cmse/bitfield-2.c
+++ b/gcc/testsuite/gcc.target/arm/cmse/bitfield-2.c
@@ -1,5 +1,5 @@
/* This test is executed only if the execution engine supports CMSE
instructions. */
-/* { dg-options "--save-temps -mcmse
-Wl,--section-start,.gnu.sgstubs=0x00400000" } */
+/* { dg-options "--save-temps -mcmse
-Wl,--section-start,.gnu.sgstubs=[cmse_sgstubs]" } */
typedef struct
{
diff --git a/gcc/testsuite/gcc.target/arm/cmse/bitfield-3.c
b/gcc/testsuite/gcc.target/arm/cmse/bitfield-3.c
index 5875f8dff48..d621a802ee1 100644
--- a/gcc/testsuite/gcc.target/arm/cmse/bitfield-3.c
+++ b/gcc/testsuite/gcc.target/arm/cmse/bitfield-3.c
@@ -1,5 +1,5 @@
/* This test is executed only if the execution engine supports CMSE
instructions. */
-/* { dg-options "--save-temps -mcmse
-Wl,--section-start,.gnu.sgstubs=0x00400000" } */
+/* { dg-options "--save-temps -mcmse
-Wl,--section-start,.gnu.sgstubs=[cmse_sgstubs]" } */
typedef struct
{
diff --git a/gcc/testsuite/gcc.target/arm/cmse/cmse-20.c
b/gcc/testsuite/gcc.target/arm/cmse/cmse-20.c
index 08e89bff637..bbea9358870 100644
--- a/gcc/testsuite/gcc.target/arm/cmse/cmse-20.c
+++ b/gcc/testsuite/gcc.target/arm/cmse/cmse-20.c
@@ -1,5 +1,5 @@
/* This test is executed only if the execution engine supports CMSE
instructions. */
-/* { dg-options "--save-temps -mcmse
-Wl,--section-start,.gnu.sgstubs=0x00400000" } */
+/* { dg-options "--save-temps -mcmse
-Wl,--section-start,.gnu.sgstubs=[cmse_sgstubs]" } */
#include <arm_cmse.h>
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/arm/cmse/cmse.exp
b/gcc/testsuite/gcc.target/arm/cmse/cmse.exp
index 436dd71ef89..1df5d56c6d5 100644
--- a/gcc/testsuite/gcc.target/arm/cmse/cmse.exp
+++ b/gcc/testsuite/gcc.target/arm/cmse/cmse.exp
@@ -44,6 +44,17 @@ if {[is-effective-target arm_cmse_hw]} then {
set saved-lto_torture_options ${LTO_TORTURE_OPTIONS}
set LTO_TORTURE_OPTIONS ""
+# Return the start address of the .gnu.sgstubs section.
+proc cmse_sgstubs {} {
+ # Allow to override the location of .gnu.sgstubs section.
+ set tboard [target_info name]
+ if {[board_info $tboard exists cmse_sgstubs]} {
+ return [board_info $tboard cmse_sgstubs]
+ }
+
+ return "0x00400000"
+}
+
I am not sure if/where this new cmse_sgstubs target-board property needs
to be documented?
Thanks,
Christophe
# These are for both baseline and mainline.
gcc-dg-runtest [lsort [glob $srcdir/$subdir/*.c]] \
"" $DEFAULT_CFLAGS
diff --git a/gcc/testsuite/gcc.target/arm/cmse/struct-1.c
b/gcc/testsuite/gcc.target/arm/cmse/struct-1.c
index 75a99f487e7..bebd059b13f 100644
--- a/gcc/testsuite/gcc.target/arm/cmse/struct-1.c
+++ b/gcc/testsuite/gcc.target/arm/cmse/struct-1.c
@@ -1,5 +1,5 @@
/* This test is executed only if the execution engine supports CMSE
instructions. */
-/* { dg-options "--save-temps -mcmse
-Wl,--section-start,.gnu.sgstubs=0x00400000" } */
+/* { dg-options "--save-temps -mcmse
-Wl,--section-start,.gnu.sgstubs=[cmse_sgstubs]" } */
typedef struct
{