From 8997ef1850cee602e321210e23c85af6b85bccc0 Mon Sep 17 00:00:00 2001 From: Jiong Wang Date: Wed, 1 Jul 2015 08:51:49 +0000 Subject: [PATCH] [AArch64] Restrict pic-small.c by new test directive 2015-07-01 Jiong Wang gcc/ * doc/sourcebuild.texi (AArch64-specific attributes): New subsection. Document "aarch64_small_fpic". gcc/testsuite/ * lib/target-supports.exp (check_effective_target_aarch64_small_fpic): New function. * gcc.target/aarch64/pic-small.c: Restrict this test under check_effective_target_aarch64_small_fpic. From-SVN: r225232 --- gcc/ChangeLog | 5 +++++ gcc/doc/sourcebuild.texi | 9 +++++++++ gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/gcc.target/aarch64/pic-small.c | 1 + gcc/testsuite/lib/target-supports.exp | 20 ++++++++++++++++++++ 5 files changed, 41 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e9ba35fbfe1..6df579b0f96 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2015-07-01 Jiong Wang + + * doc/sourcebuild.texi (AArch64-specific attributes): New subsection. + Document "aarch64_small_fpic". + 2015-07-01 Jiong Wang * configure.ac: Add check for aarch64 assembler -fpic relocation diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index 13f63d1b914..52a4aa48be1 100644 --- a/gcc/doc/sourcebuild.texi +++ b/gcc/doc/sourcebuild.texi @@ -1580,6 +1580,15 @@ ARM target prefers @code{LDRD} and @code{STRD} instructions over @end table +@subsubsection AArch64-specific attributes + +@table @code +@item aarch64_small_fpic +Binutils installed on test system supports relocation types required by -fpic +for AArch64 small memory model. + +@end table + @subsubsection MIPS-specific attributes @table @code diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8d53a61fc1e..8f768136eab 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2015-07-01 Jiong Wang + + * lib/target-supports.exp (check_effective_target_aarch64_small_fpic): New function. + * gcc.target/aarch64/pic-small.c: Restrict this test under + check_effective_target_aarch64_small_fpic. + 2015-07-01 Eric Botcazou * gfortran.dg/gomp/pr66633.f90: New test. diff --git a/gcc/testsuite/gcc.target/aarch64/pic-small.c b/gcc/testsuite/gcc.target/aarch64/pic-small.c index 874f81b830b..282e4d073c0 100644 --- a/gcc/testsuite/gcc.target/aarch64/pic-small.c +++ b/gcc/testsuite/gcc.target/aarch64/pic-small.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target aarch64_small_fpic } */ /* { dg-options "-O2 -fpic -fno-inline --save-temps" } */ void abort (); diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index f0c209fc702..fc05e84cbed 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -937,6 +937,26 @@ proc check_effective_target_fpic { } { return 0 } +# On AArch64, if -fpic is not supported, then we will fall back to -fPIC +# silently. So, we can't rely on above "check_effective_target_fpic" as it +# assumes compiler will give warning if -fpic not supported. Here we check +# whether binutils supports those new -fpic relocation modifiers, and assume +# -fpic is supported if there is binutils support. GCC configuration will +# enable -fpic for AArch64 in this case. +# +# "check_effective_target_aarch64_small_fpic" is dedicated for checking small +# memory model -fpic relocation types. + +proc check_effective_target_aarch64_small_fpic { } { + if { [istarget aarch64*-*-*] } { + return [check_no_compiler_messages aarch64_small_fpic object { + void foo (void) { asm ("ldr x0, [x2, #:gotpage_lo15:globalsym]"); } + }] + } else { + return 0 + } +} + # Return 1 if -shared is supported, as in no warnings or errors # emitted, 0 otherwise. -- 2.30.2