[AArch64] Restrict pic-small.c by new test directive
authorJiong Wang <jiong.wang@arm.com>
Wed, 1 Jul 2015 08:51:49 +0000 (08:51 +0000)
committerJiong Wang <jiwang@gcc.gnu.org>
Wed, 1 Jul 2015 08:51:49 +0000 (08:51 +0000)
2015-07-01  Jiong Wang  <jiong.wang@arm.com>

      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
gcc/doc/sourcebuild.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/pic-small.c
gcc/testsuite/lib/target-supports.exp

index e9ba35f..6df579b 100644 (file)
@@ -1,5 +1,10 @@
 2015-07-01  Jiong Wang  <jiong.wang@arm.com>
 
+       * doc/sourcebuild.texi (AArch64-specific attributes): New subsection.
+       Document "aarch64_small_fpic".
+
+2015-07-01  Jiong Wang  <jiong.wang@arm.com>
+
        * configure.ac: Add check for aarch64 assembler -fpic relocation
        modifier support.
        * configure: Regenerate.
index 13f63d1..52a4aa4 100644 (file)
@@ -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
index 8d53a61..8f76813 100644 (file)
@@ -1,3 +1,9 @@
+2015-07-01  Jiong Wang  <jiong.wang@arm.com>
+
+       * 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  <ebotcazou@adacore.com>
 
        * gfortran.dg/gomp/pr66633.f90: New test.
index 874f81b..282e4d0 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target aarch64_small_fpic } */
 /* { dg-options "-O2 -fpic -fno-inline --save-temps" } */
 
 void abort ();
index f0c209f..fc05e84 100644 (file)
@@ -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.