[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 e9ba35fbfe1f4805ea7cbf7368bc2dad4e8f1bd6..6df579b0f96f14537e826f7dd69c6f45f6b3cb74 100644 (file)
@@ -1,3 +1,8 @@
+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
index 13f63d1b914a76e611d0aa849a6ef0c11659ab23..52a4aa48be14eb12db5963f242649d609a3d5d3f 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 8d53a61fc1e2de49ce96497fc9ec364379437638..8f768136eabd71d255fe02d1d856db803a646867 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 874f81b830be9be13a1eaf4a1dc575809fccb785..282e4d073c0e6fd3d10d397e186f81c4a2c55310 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 f0c209fc7022fda77ee2a04b496fca8a6b1dcce0..fc05e84cbed752a18d06052ddf2a1db3fb66e7ab 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.