On Jun 21, 2022, Richard Sandiford <richard.sandif...@arm.com> wrote:
> Could we instead have a new target selector for whether the memory > map includes xGB of RAM? How about this? Testing on aarch64-rtems6.0. Ok to install? aarch64: testsuite: symbol-range fallback to compile From: Alexandre Oliva <ol...@adacore.com> 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 TwoPlusGigs effective target, that checks for the ability to link a program with 2GB of sbss, and use that to select whether to link or just compile symbol-range.c. for gcc/testsuite/ChangeLog * lib/target-supports.exp (check_effective_target_TwoPlusGigs): New. * gcc.target/aarch64/symbol-range.c: Link only on TwoPlusGigs targets, compile otherwise. --- gcc/testsuite/gcc.target/aarch64/symbol-range.c | 3 ++- gcc/testsuite/lib/target-supports.exp | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/gcc/testsuite/gcc.target/aarch64/symbol-range.c b/gcc/testsuite/gcc.target/aarch64/symbol-range.c index d8e82fa1b2829..f9a916c7ae2f0 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 TwoPlusGigs } } */ +/* { dg-do compile { target { ! TwoPlusGigs } } } */ /* { 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 d1f4eb7641fa7..0507d6e617fef 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_TwoPlusGigs { } { + return [check_no_compiler_messages TwoPlusGigs executable { + int dummy[0x80000000]; + int main () { return 0; } + }] +} + # Return 1 if we're generating 32-bit code using default options, 0 # otherwise. -- Alexandre Oliva, happy hacker https://FSFLA.org/blogs/lxo/ Free Software Activist GNU Toolchain Engineer Disinformation flourishes because many people care deeply about injustice but very few check the facts. Ask me about <https://stallmansupport.org>