aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlexandre Oliva <oliva@adacore.com>2022-06-23 23:20:45 -0300
committerAlexandre Oliva <oliva@gnu.org>2022-06-23 23:20:45 -0300
commitc655ff35eda02dc53cf8dc9a98208ce8a4604a1f (patch)
tree0eb1044821f0d68efb20348079f12cb7fa70fdcd /gcc
parentdf724ec773d63b2efc4010a7e31280eeb51ee2ce (diff)
downloadgcc-c655ff35eda02dc53cf8dc9a98208ce8a4604a1f.zip
gcc-c655ff35eda02dc53cf8dc9a98208ce8a4604a1f.tar.gz
gcc-c655ff35eda02dc53cf8dc9a98208ce8a4604a1f.tar.bz2
aarch64: testsuite: symbol-range fallback to compile
On some of our embedded aarch64 targets, RAM size is too small for this test to fit. It doesn't look like this test requires linking, and if it does, the -tiny version may presumably get most of the coverage without going overboard in target system requirements. Still, linking may be useful, so introduce a two_plus_gigs effective target, that checks for the ability to link a program with 2GiB of sbss, and use that to select whether to link or just compile symbol-range.c. for gcc/ChangeLog * doc/sourcebuild.texi (Environment attributes): Document two_plus_gigs. for gcc/testsuite/ChangeLog * lib/target-supports.exp (check_effective_target_two_plus_gigs): New. * gcc.target/aarch64/symbol-range.c: Link only on two_plus_gigs targets, compile otherwise.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/doc/sourcebuild.texi3
-rw-r--r--gcc/testsuite/gcc.target/aarch64/symbol-range.c3
-rw-r--r--gcc/testsuite/lib/target-supports.exp9
3 files changed, 14 insertions, 1 deletions
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index 606ab85..3696a58 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2681,6 +2681,9 @@ Target supports @code{sysconf}.
@item trampolines
Target supports trampolines.
+@item two_plus_gigs
+Target supports linking programs with 2+GiB of data.
+
@item uclibc
Target supports uClibc.
diff --git a/gcc/testsuite/gcc.target/aarch64/symbol-range.c b/gcc/testsuite/gcc.target/aarch64/symbol-range.c
index d8e82fa..6b15f08 100644
--- a/gcc/testsuite/gcc.target/aarch64/symbol-range.c
+++ b/gcc/testsuite/gcc.target/aarch64/symbol-range.c
@@ -1,4 +1,5 @@
-/* { dg-do link } */
+/* { dg-do link { target two_plus_gigs } } */
+/* { dg-do compile { target { ! two_plus_gigs } } } */
/* { dg-options "-O3 -save-temps -mcmodel=small" } */
char fixed_regs[0x80000000];
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index d1f4eb7..20171f9 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -2906,6 +2906,15 @@ proc check_effective_target_le { } {
}]
}
+# Return 1 if we can link a program with 2+GB of data.
+
+proc check_effective_target_two_plus_gigs { } {
+ return [check_no_compiler_messages two_plus_gigs executable {
+ int dummy[0x80000000];
+ int main () { return 0; }
+ }]
+}
+
# Return 1 if we're generating 32-bit code using default options, 0
# otherwise.