On Tue, Jun 30, 2015 at 03:17:00PM +0100, Jiong Wang wrote:
> 
> As discussed here
> 
>   https://gcc.gnu.org/ml/gcc-patches/2015-06/msg02151.html,
> 
> Since have enabled binutils feature detection when configuring gcc,
> -fpic will not be enabled if there is no binutils support on those new
> relocation modifiers, thus we should update the testcase pic-small.c,
> only run it if check_effective_target_aarch64_small_fpic is true.
> 
> On AArch64, if -fpic is not supported, then we will fall back to -fPIC
> silently.  So, we can't rely on the existed "check_effective_target_fpic" as
> it assume compiler will give warning if -fpic not supported.  Here we
> check whether binutils support those new -fpic relocation modifiers, and
> assume -fpic is supported if there is binutils support, as gcc
> configuration will enable -fpic for AArch64 on such case. This will not
> apply if the test system is with new binutils and old gcc which is rare
> and this patch will not handle.
> 
> OK for trunk?

OK, with a couple of very minor changes in the documentation/comments.

> diff --git a/gcc/testsuite/lib/target-supports.exp 
> b/gcc/testsuite/lib/target-supports.exp
> index f0c209f..4c743c3 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
> +# assume compiler will give warning if -fpic not supported.  Here we check

s/assume/assumes/

> +# whether binutils support those new -fpic relocation modifiers, and assume

s/support/supports/

> +# -fpic is supported is there is binutils support, as gcc configuration will

s/is there is/if there is/
s/, as gcc/.  GCC/

> +# enable -fpic for AArch64 on such case.

s/on such case/in this case/

> diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
> index 13f63d1..a0bab65 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 support relocation types required by -fpic

s/support/supports/

> +for AArch64 small memory model.
> +
> +@end table
> +
>  @subsubsection MIPS-specific attributes
>  
>  @table @code


Thanks,
James

> 
> Thanks.
> 
> 2015-06-30  Jiong Wang  <jiong.w...@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 by
>   check_effective_target_aarch64_small_fpic.
>   

> diff --git a/gcc/testsuite/gcc.target/aarch64/pic-small.c 
> b/gcc/testsuite/gcc.target/aarch64/pic-small.c
> index 874f81b..282e4d0 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 f0c209f..4c743c3 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
> +# assume compiler will give warning if -fpic not supported.  Here we check
> +# whether binutils support those new -fpic relocation modifiers, and assume
> +# -fpic is supported is there is binutils support, as gcc configuration will
> +# enable -fpic for AArch64 on such 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.
>  
> diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
> index 13f63d1..a0bab65 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 support relocation types required by -fpic
> +for AArch64 small memory model.
> +
> +@end table
> +
>  @subsubsection MIPS-specific attributes
>  
>  @table @code

Reply via email to