public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* AARCH64 configure check for gas -mabi support
@ 2013-12-04 21:03 Kugan
  2013-12-06 16:18 ` Yufeng Zhang
  0 siblings, 1 reply; 14+ messages in thread
From: Kugan @ 2013-12-04 21:03 UTC (permalink / raw)
  To: gcc-patches; +Cc: config-patches, Marcus Shawcroft, patches

[-- Attachment #1: Type: text/plain, Size: 502 bytes --]

Hi,

gcc trunk aarch64 bootstrapping fails with gas version 2.23.2 (with
error message similar to cannot compute suffix of object files) as this
particular version does not support -mabi=lp64. It succeeds with later
versions of gas that supports -mabi.

Attached patch add checking for -mabi=lp64 and prompts upgradation. Is
this Ok?

Thanks,
Kugan

+2013-12-05  Kugan Vivekanandarajah  <kuganv@linaro.org>
+	* configure.ac: Add checks for aarch64 assembler -mabi support.
+	* configure: Regenerate.
+

[-- Attachment #2: p.txt --]
[-- Type: text/plain, Size: 2128 bytes --]

diff --git a/gcc/configure b/gcc/configure
index fdf0cd0..17b6e85 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -24057,6 +24057,38 @@ $as_echo "#define HAVE_AS_NO_MUL_BUG_ABORT_OPTION 1" >>confdefs.h
 fi
     ;;
 
+ aarch64-*-*)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for -mabi option" >&5
+$as_echo_n "checking assembler for -mabi option... " >&6; }
+if test "${gcc_cv_as_aarch64_mabi+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  gcc_cv_as_aarch64_mabi=no
+  if test x$gcc_cv_as != x; then
+    $as_echo '.text' > conftest.s
+    if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mabi=lp64 -o conftest.o conftest.s >&5'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }
+    then
+	gcc_cv_as_aarch64_mabi=yes
+    else
+      echo "configure: failed program was" >&5
+      cat conftest.s >&5
+    fi
+    rm -f conftest.o conftest.s
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_aarch64_mabi" >&5
+$as_echo "$gcc_cv_as_aarch64_mabi" >&6; }
+
+    if test x$gcc_cv_as_aarch64_mabi = xno; then
+	as_fn_error "Assembler support for -mabi=lp64 is required. Upgrade the Assembler." "$LINENO" 5
+    fi
+    ;;
+
   sparc*-*-*)
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .register" >&5
 $as_echo_n "checking assembler for .register... " >&6; }
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 91a22d5..730ada0 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -3532,6 +3532,15 @@ case "$target" in
 		[Define if your assembler supports the -no-mul-bug-abort option.])])
     ;;
 
+ aarch64-*-*)
+    gcc_GAS_CHECK_FEATURE([-mabi option],
+      gcc_cv_as_aarch64_mabi,,
+      [-mabi=lp64], [.text],,,)
+    if test x$gcc_cv_as_aarch64_mabi = xno; then
+	AC_MSG_ERROR([Assembler support for -mabi=lp64 is required. Upgrade the Assembler.])
+    fi
+    ;;
+
   sparc*-*-*)
     gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
       [.register %g2, #scratch],,

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: AARCH64 configure check for gas -mabi support
  2013-12-04 21:03 AARCH64 configure check for gas -mabi support Kugan
@ 2013-12-06 16:18 ` Yufeng Zhang
  2013-12-09 11:20   ` Kugan
  0 siblings, 1 reply; 14+ messages in thread
From: Yufeng Zhang @ 2013-12-06 16:18 UTC (permalink / raw)
  To: Kugan; +Cc: gcc-patches, config-patches, Marcus Shawcroft, patches

Hi Kugan,

Thanks for working on this issue.

On 12/04/13 21:03, Kugan wrote:
> Hi,
>
> gcc trunk aarch64 bootstrapping fails with gas version 2.23.2 (with
> error message similar to cannot compute suffix of object files) as this
> particular version does not support -mabi=lp64. It succeeds with later
> versions of gas that supports -mabi.

The -mabi option was introduced to gas when the support for ILP32 was 
added.  Initially the options were named -milp32 and -mlp64:

   http://sourceware.org/ml/binutils/2013-06/msg00178.html

and later on they were change to -mabi=ilp32 and -mabi=lp64 for 
consistency with those in the aarch64 gcc:

   http://sourceware.org/ml/binutils/2013-07/msg00180.html

The following gcc patch made the driver use the explicit option to drive 
gas:

   http://gcc.gnu.org/ml/gcc-patches/2013-07/msg00083.html

It is a neglect of the backward compatibility with binutils 2.23.

>
> Attached patch add checking for -mabi=lp64 and prompts upgradation. Is
> this Ok?

I think instead of mandating the support for the -mabi option, the 
compiler shall be changed able to work with binutils 2.23.  The 2.23 
binutils have a good support for aarch64 and the main difference from 
2.24 is the ILP32 support.  I think it is necessary to maintain the 
backward compatibility, and it should be achieved by suppressing the 
compiler's support for ILP32 when the -mabi option is not found 
available in gas during the configuration time.

I had a quick look at areas need to be updated:

* multilib support

In gcc/config.gcc, the default and the only accepted value for 
--with-multilib-list and --with-abi shall be lp64 when -mabi is not 
available.

* -mabi option

I suggest we keep the -mabi option, but reject -mabi=ilp32 in 
gcc/config/aarch64/aarch64.c:aarch64_override_options ()

* driver spec

In gcc/config/aarch64/aarch64-elf.h, the DRIVER_SELF_SPECS and ASM_SPEC 
shall be updated to not pass/specify -mabi for gas.

* documentation

I think it needs to be mentioned in gcc/doc/install.texi the constraint 
of using pre-2.24 binutils with aarch64 gcc that is 4.9 or later.

It is a quick scouting, but hopefully it has provided provide some 
guidance.  If you need more help, just let me know.


Yufeng

P.s. some minor comments on the attached patch.

>
> diff --git a/gcc/configure b/gcc/configure
> index fdf0cd0..17b6e85 100755
> --- a/gcc/configure
> +++ b/gcc/configure

Diff result of auto-generation is usually excluded from a patch.

> diff --git a/gcc/configure.ac b/gcc/configure.ac
> index 91a22d5..730ada0 100644
> --- a/gcc/configure.ac
> +++ b/gcc/configure.ac
> @@ -3532,6 +3532,15 @@ case "$target" in
>   		[Define if your assembler supports the -no-mul-bug-abort option.])])
>       ;;
>
> + aarch64-*-*)

aarch64*-*-*

> +    gcc_GAS_CHECK_FEATURE([-mabi option],
> +      gcc_cv_as_aarch64_mabi,,
> +      [-mabi=lp64], [.text],,,)
> +    if test x$gcc_cv_as_aarch64_mabi = xno; then
> +	AC_MSG_ERROR([Assembler support for -mabi=lp64 is required. Upgrade the Assembler.])
> +    fi
> +    ;;
> +
>     sparc*-*-*)
>       gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
>         [.register %g2, #scratch],,
>


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: AARCH64 configure check for gas -mabi support
  2013-12-06 16:18 ` Yufeng Zhang
@ 2013-12-09 11:20   ` Kugan
  2013-12-09 21:57     ` Yufeng Zhang
  0 siblings, 1 reply; 14+ messages in thread
From: Kugan @ 2013-12-09 11:20 UTC (permalink / raw)
  To: Yufeng Zhang; +Cc: gcc-patches, config-patches, Marcus Shawcroft, patches

[-- Attachment #1: Type: text/plain, Size: 3975 bytes --]

Thanks Yufeng for the review.

On 07/12/13 03:18, Yufeng Zhang wrote:

>> gcc trunk aarch64 bootstrapping fails with gas version 2.23.2 (with
>> error message similar to cannot compute suffix of object files) as this
>> particular version does not support -mabi=lp64. It succeeds with later
>> versions of gas that supports -mabi.
> 
> The -mabi option was introduced to gas when the support for ILP32 was
> added.  Initially the options were named -milp32 and -mlp64:
> 
>   http://sourceware.org/ml/binutils/2013-06/msg00178.html
> 
> and later on they were change to -mabi=ilp32 and -mabi=lp64 for
> consistency with those in the aarch64 gcc:
> 
>   http://sourceware.org/ml/binutils/2013-07/msg00180.html
> 
> The following gcc patch made the driver use the explicit option to drive
> gas:
> 
>   http://gcc.gnu.org/ml/gcc-patches/2013-07/msg00083.html
> 
> It is a neglect of the backward compatibility with binutils 2.23.
> 
>>
>> Attached patch add checking for -mabi=lp64 and prompts upgradation. Is
>> this Ok?
> 
> I think instead of mandating the support for the -mabi option, the
> compiler shall be changed able to work with binutils 2.23.  The 2.23
> binutils have a good support for aarch64 and the main difference from
> 2.24 is the ILP32 support.  I think it is necessary to maintain the
> backward compatibility, and it should be achieved by suppressing the
> compiler's support for ILP32 when the -mabi option is not found
> available in gas during the configuration time.
> 
> I had a quick look at areas need to be updated:
> 
> * multilib support
> 
> In gcc/config.gcc, the default and the only accepted value for
> --with-multilib-list and --with-abi shall be lp64 when -mabi is not
> available.
> 
> * -mabi option
> 
> I suggest we keep the -mabi option, but reject -mabi=ilp32 in
> gcc/config/aarch64/aarch64.c:aarch64_override_options ()
> 
> * driver spec
> 
> In gcc/config/aarch64/aarch64-elf.h, the DRIVER_SELF_SPECS and ASM_SPEC
> shall be updated to not pass/specify -mabi for gas.
> 
> * documentation
> 
> I think it needs to be mentioned in gcc/doc/install.texi the constraint
> of using pre-2.24 binutils with aarch64 gcc that is 4.9 or later.
> 
> It is a quick scouting, but hopefully it has provided provide some
> guidance.  If you need more help, just let me know.
> 
> 
> Yufeng
> 
> P.s. some minor comments on the attached patch.
> 
>>
>> diff --git a/gcc/configure b/gcc/configure
>> index fdf0cd0..17b6e85 100755
>> --- a/gcc/configure
>> +++ b/gcc/configure
> 
> Diff result of auto-generation is usually excluded from a patch.
> 
>> diff --git a/gcc/configure.ac b/gcc/configure.ac
>> index 91a22d5..730ada0 100644
>> --- a/gcc/configure.ac
>> +++ b/gcc/configure.ac
>> @@ -3532,6 +3532,15 @@ case "$target" in
>>           [Define if your assembler supports the -no-mul-bug-abort
>> option.])])
>>       ;;
>>
>> + aarch64-*-*)
> 
> aarch64*-*-*
> 
>> +    gcc_GAS_CHECK_FEATURE([-mabi option],
>> +      gcc_cv_as_aarch64_mabi,,
>> +      [-mabi=lp64], [.text],,,)
>> +    if test x$gcc_cv_as_aarch64_mabi = xno; then
>> +    AC_MSG_ERROR([Assembler support for -mabi=lp64 is required.
>> Upgrade the Assembler.])
>> +    fi
>> +    ;;
>> +
>>     sparc*-*-*)
>>       gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
>>         [.register %g2, #scratch],,
>>
> 
> 

Here is an attempt to do it the way you have suggested.

Thanks,
Kugan

gcc/

+2013-12-09  Kugan Vivekanandarajah  <kuganv@linaro.org>
+	* configure.ac: Add check for aarch64 assembler -mabi support.
+	* configure: Regenerate.
+	* config.in: Regenerate.
+	* config/aarch64/aarch64-elf.h (ASM_MABI_SPEC): New define.
+	(ASM_SPEC): Update to substitute -mabi with ASM_MABI_SPEC.
+	* config/aarch64/aarch64.h (aarch64_override_options):  Issue error if
+	Assembler does not support -mabi and option ilp32 is selected.
+	* doc/install.texi: Added note that building gcc 4.9 and after with pre
+	2.24 binutils will not support -mabi=ilp32.
+



[-- Attachment #2: p.txt --]
[-- Type: text/plain, Size: 2475 bytes --]

diff --git a/gcc/config/aarch64/aarch64-elf.h b/gcc/config/aarch64/aarch64-elf.h
index 4757d22..b260b7c 100644
--- a/gcc/config/aarch64/aarch64-elf.h
+++ b/gcc/config/aarch64/aarch64-elf.h
@@ -134,13 +134,19 @@
   " %{!mbig-endian:%{!mlittle-endian:" ENDIAN_SPEC "}}" \
   " %{!mabi=*:" ABI_SPEC "}"
 
+#ifdef HAVE_AS_MABI_OPTION
+#define ASM_MABI_SPEC	"%{mabi=*:-mabi=%*}"
+#else
+#define ASM_MABI_SPEC	"%{mabi=lp64*:}"
+#endif
+
 #ifndef ASM_SPEC
 #define ASM_SPEC "\
 %{mbig-endian:-EB} \
 %{mlittle-endian:-EL} \
 %{mcpu=*:-mcpu=%*} \
-%{march=*:-march=%*} \
-%{mabi=*:-mabi=%*}"
+%{march=*:-march=%*}" \
+ASM_MABI_SPEC
 #endif
 
 #undef TYPE_OPERAND_FMT
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index b1b4eef..c1a9cbd 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -5186,6 +5186,10 @@ aarch64_override_options (void)
     {
       aarch64_parse_tune ();
     }
+#ifndef HAVE_AS_MABI_OPTION
+  if (TARGET_ILP32)
+    error ("Assembler does not supprt -mabi=ilp32");
+#endif
 
   initialize_aarch64_code_model ();
 
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 91a22d5..fcfdbdb 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -3532,6 +3532,19 @@ case "$target" in
 		[Define if your assembler supports the -no-mul-bug-abort option.])])
     ;;
 
+ aarch64*-*-*)
+    gcc_GAS_CHECK_FEATURE([-mabi option],
+      gcc_cv_as_aarch64_mabi,,
+      [-mabi=lp64], [.text],,,)
+    if test $gcc_cv_as_aarch64_mabi = yes ; then
+	AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
+		  [Define if your assembler supports the -mabi option.])
+    fi
+    if test x$gcc_cv_as_aarch64_mabi = xno && test x$with_abi = xilp32; then
+	AC_MSG_ERROR([Assembler doesnot support -mabi=ilp32. Upgrade the Assembler.]) 
+    fi
+    ;;
+
   sparc*-*-*)
     gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
       [.register %g2, #scratch],,
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index a8f9f8a..e4de2d2 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -3735,6 +3735,15 @@ removed and the system libunwind library will always be used.
 
 @html
 <hr />
+@end html
+@anchor{aarch64-x-x}
+@heading aarch64-*-*
+Pre 2.24 binutils does not have support for selecting -mabi and does not
+support ILP32.  If GCC 4.9 or later is built with pre 2.24, GCC will not
+support option -mabi=ilp32.
+
+@html
+<hr />
 <!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
 @end html
 @anchor{x-ibm-aix}

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: AARCH64 configure check for gas -mabi support
  2013-12-09 11:20   ` Kugan
@ 2013-12-09 21:57     ` Yufeng Zhang
  2013-12-10  6:21       ` Kugan
  0 siblings, 1 reply; 14+ messages in thread
From: Yufeng Zhang @ 2013-12-09 21:57 UTC (permalink / raw)
  To: Kugan; +Cc: gcc-patches, config-patches, Marcus Shawcroft, patches

Hi Kugan,

Thanks for the quick action.

On 12/09/13 11:20, Kugan wrote:
> Thanks Yufeng for the review.
>
> On 07/12/13 03:18, Yufeng Zhang wrote:
>
>>> >>  gcc trunk aarch64 bootstrapping fails with gas version 2.23.2 (with
>>> >>  error message similar to cannot compute suffix of object files) as this
>>> >>  particular version does not support -mabi=lp64. It succeeds with later
>>> >>  versions of gas that supports -mabi.
>> >
>> >  The -mabi option was introduced to gas when the support for ILP32 was
>> >  added.  Initially the options were named -milp32 and -mlp64:
>> >
>> >     http://sourceware.org/ml/binutils/2013-06/msg00178.html
>> >
>> >  and later on they were change to -mabi=ilp32 and -mabi=lp64 for
>> >  consistency with those in the aarch64 gcc:
>> >
>> >     http://sourceware.org/ml/binutils/2013-07/msg00180.html
>> >
>> >  The following gcc patch made the driver use the explicit option to drive
>> >  gas:
>> >
>> >     http://gcc.gnu.org/ml/gcc-patches/2013-07/msg00083.html
>> >
>> >  It is a neglect of the backward compatibility with binutils 2.23.
>> >
>>> >>
>>> >>  Attached patch add checking for -mabi=lp64 and prompts upgradation. Is
>>> >>  this Ok?
>> >
>> >  I think instead of mandating the support for the -mabi option, the
>> >  compiler shall be changed able to work with binutils 2.23.  The 2.23
>> >  binutils have a good support for aarch64 and the main difference from
>> >  2.24 is the ILP32 support.  I think it is necessary to maintain the
>> >  backward compatibility, and it should be achieved by suppressing the
>> >  compiler's support for ILP32 when the -mabi option is not found
>> >  available in gas during the configuration time.
>> >
>> >  I had a quick look at areas need to be updated:
>> >
>> >  * multilib support
>> >
>> >  In gcc/config.gcc, the default and the only accepted value for
>> >  --with-multilib-list and --with-abi shall be lp64 when -mabi is not
>> >  available.
>> >
>> >  * -mabi option
>> >
>> >  I suggest we keep the -mabi option, but reject -mabi=ilp32 in
>> >  gcc/config/aarch64/aarch64.c:aarch64_override_options ()
>> >
>> >  * driver spec
>> >
>> >  In gcc/config/aarch64/aarch64-elf.h, the DRIVER_SELF_SPECS and ASM_SPEC
>> >  shall be updated to not pass/specify -mabi for gas.
>> >
>> >  * documentation
>> >
>> >  I think it needs to be mentioned in gcc/doc/install.texi the constraint
>> >  of using pre-2.24 binutils with aarch64 gcc that is 4.9 or later.
>> >
>> >  It is a quick scouting, but hopefully it has provided provide some
>> >  guidance.  If you need more help, just let me know.
>> >
>> >
>> >  Yufeng
>> >
>> >  P.s. some minor comments on the attached patch.
>> >
>>> >>
>>> >>  diff --git a/gcc/configure b/gcc/configure
>>> >>  index fdf0cd0..17b6e85 100755
>>> >>  --- a/gcc/configure
>>> >>  +++ b/gcc/configure
>> >
>> >  Diff result of auto-generation is usually excluded from a patch.
>> >
>>> >>  diff --git a/gcc/configure.ac b/gcc/configure.ac
>>> >>  index 91a22d5..730ada0 100644
>>> >>  --- a/gcc/configure.ac
>>> >>  +++ b/gcc/configure.ac
>>> >>  @@ -3532,6 +3532,15 @@ case "$target" in
>>> >>             [Define if your assembler supports the -no-mul-bug-abort
>>> >>  option.])])
>>> >>         ;;
>>> >>
>>> >>  + aarch64-*-*)
>> >
>> >  aarch64*-*-*
>> >
>>> >>  +    gcc_GAS_CHECK_FEATURE([-mabi option],
>>> >>  +      gcc_cv_as_aarch64_mabi,,
>>> >>  +      [-mabi=lp64], [.text],,,)
>>> >>  +    if test x$gcc_cv_as_aarch64_mabi = xno; then
>>> >>  +    AC_MSG_ERROR([Assembler support for -mabi=lp64 is required.
>>> >>  Upgrade the Assembler.])
>>> >>  +    fi
>>> >>  +    ;;
>>> >>  +
>>> >>       sparc*-*-*)
>>> >>         gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
>>> >>           [.register %g2, #scratch],,
>>> >>
>> >
>> >
> Here is an attempt to do it the way you have suggested.
>
> Thanks,
> Kugan
>
> gcc/
>
> +2013-12-09  Kugan Vivekanandarajah<kuganv@linaro.org>
> +	* configure.ac: Add check for aarch64 assembler -mabi support.
> +	* configure: Regenerate.
> +	* config.in: Regenerate.
> +	* config/aarch64/aarch64-elf.h (ASM_MABI_SPEC): New define.
> +	(ASM_SPEC): Update to substitute -mabi with ASM_MABI_SPEC.
> +	* config/aarch64/aarch64.h (aarch64_override_options):  Issue error if
> +	Assembler does not support -mabi and option ilp32 is selected.

Assembler/assembler

> +	* doc/install.texi: Added note that building gcc 4.9 and after with pre
> +	2.24 binutils will not support -mabi=ilp32.
> +
>
>
>
> p.txt
>
>
> diff --git a/gcc/config/aarch64/aarch64-elf.h b/gcc/config/aarch64/aarch64-elf.h
> index 4757d22..b260b7c 100644
> --- a/gcc/config/aarch64/aarch64-elf.h
> +++ b/gcc/config/aarch64/aarch64-elf.h
> @@ -134,13 +134,19 @@
>     " %{!mbig-endian:%{!mlittle-endian:" ENDIAN_SPEC "}}" \
>     " %{!mabi=*:" ABI_SPEC "}"
>
> +#ifdef HAVE_AS_MABI_OPTION
> +#define ASM_MABI_SPEC	"%{mabi=*:-mabi=%*}"
> +#else
> +#define ASM_MABI_SPEC	"%{mabi=lp64*:}"

Is '*' necessary here?

> +#endif
> +
>   #ifndef ASM_SPEC
>   #define ASM_SPEC "\
>   %{mbig-endian:-EB} \
>   %{mlittle-endian:-EL} \
>   %{mcpu=*:-mcpu=%*} \
> -%{march=*:-march=%*} \
> -%{mabi=*:-mabi=%*}"
> +%{march=*:-march=%*}" \
> +ASM_MABI_SPEC
>   #endif
>
>   #undef TYPE_OPERAND_FMT
> diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
> index b1b4eef..c1a9cbd 100644
> --- a/gcc/config/aarch64/aarch64.c
> +++ b/gcc/config/aarch64/aarch64.c
> @@ -5186,6 +5186,10 @@ aarch64_override_options (void)
>       {
>         aarch64_parse_tune ();
>       }
> +#ifndef HAVE_AS_MABI_OPTION
> +  if (TARGET_ILP32)
> +    error ("Assembler does not supprt -mabi=ilp32");
> +#endif

A blank line before #ifndef and some comment to explain the reason please.

>
>     initialize_aarch64_code_model ();
>
> diff --git a/gcc/configure.ac b/gcc/configure.ac
> index 91a22d5..fcfdbdb 100644
> --- a/gcc/configure.ac
> +++ b/gcc/configure.ac
> @@ -3532,6 +3532,19 @@ case "$target" in
>   		[Define if your assembler supports the -no-mul-bug-abort option.])])
>       ;;
>
> + aarch64*-*-*)

Alphabetically, this should be placed before alpha*.

> +    gcc_GAS_CHECK_FEATURE([-mabi option],
> +      gcc_cv_as_aarch64_mabi,,
> +      [-mabi=lp64], [.text],,,)
> +    if test $gcc_cv_as_aarch64_mabi = yes ; then
> +	AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
> +		  [Define if your assembler supports the -mabi option.])
> +    fi
> +    if test x$gcc_cv_as_aarch64_mabi = xno&&  test x$with_abi = xilp32; then
> +	AC_MSG_ERROR([Assembler doesnot support -mabi=ilp32. Upgrade the Assembler.])
> +    fi
> +    ;;

It is not sufficient to only check with_abi itself.  By default, 
aarch64*-*-elf builds both ilp32 and lp64 libraries (e.g. libgcc).  This 
needs to be turned off if test x$gcc_cv_as_aarch64_mabi = xno.  We also 
need to detect the situation where users explicitly configure the 
toolchain with --with-multilib-list=lp64,ilp32

Here is an incremental diff based on your change to gcc/configure.ac to 
give an example on a more thorough check:

diff --git a/gcc/configure.ac b/gcc/configure.ac
index c8cf274..c590ad7 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -3488,12 +3488,27 @@ case "$target" in
      gcc_GAS_CHECK_FEATURE([-mabi option],
        gcc_cv_as_aarch64_mabi,,
        [-mabi=lp64], [.text],,,)
-    if test $gcc_cv_as_aarch64_mabi = yes ; then
+    if test x$gcc_cv_as_aarch64_mabi = xyes ; then
  	AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
  		  [Define if your assembler supports the -mabi option.])
-    fi
-    if test x$gcc_cv_as_aarch64_mabi = xno && test x$with_abi = xilp32; 
then
-	AC_MSG_ERROR([Assembler doesnot support -mabi=ilp32. Upgrade the 
Assembler.])
+    else
+	if test x$with_abi = xilp32; then
+	  AC_MSG_ERROR([Assembler does not support -mabi=ilp32.  Upgrade the 
Assembler.])
+	fi
+	if test x"$with_multilib_list" = xdefault; then
+	  TM_MULTILIB_CONFIG=lp64
+	else
+	  aarch64_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
+	  for aarch64_multilib in ${aarch64_multilibs}; do
+	    case ${aarch64_multilib} in
+	      ilp32 )
+		AC_MSG_ERROR([Assembler does not support -mabi=ilp32.  Upgrade the 
Assembler.])
+		;;
+	      *)
+		;;
+	    esac
+	  done
+	fi
      fi
      ;;


> +
>     sparc*-*-*)
>       gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
>         [.register %g2, #scratch],,
> diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
> index a8f9f8a..e4de2d2 100644
> --- a/gcc/doc/install.texi
> +++ b/gcc/doc/install.texi
> @@ -3735,6 +3735,15 @@ removed and the system libunwind library will always be used.
>
>   @html
>   <hr />
> +@end html
> +@anchor{aarch64-x-x}
> +@heading aarch64-*-*

aarch64*-*-*


Please also indicate what tests you have done with the patch.


Thanks,
Yufeng

> +Pre 2.24 binutils does not have support for selecting -mabi and does not
> +support ILP32.  If GCC 4.9 or later is built with pre 2.24, GCC will not
> +support option -mabi=ilp32.
> +
> +@html
> +<hr />
>   <!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
>   @end html
>   @anchor{x-ibm-aix}
>


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: AARCH64 configure check for gas -mabi support
  2013-12-09 21:57     ` Yufeng Zhang
@ 2013-12-10  6:21       ` Kugan
  2013-12-10 11:29         ` Yufeng Zhang
  0 siblings, 1 reply; 14+ messages in thread
From: Kugan @ 2013-12-10  6:21 UTC (permalink / raw)
  To: Yufeng Zhang; +Cc: gcc-patches, config-patches, Marcus Shawcroft, patches

[-- Attachment #1: Type: text/plain, Size: 3971 bytes --]

Hi Yufeng,

Thanks for the quick response.

>> +#define ASM_MABI_SPEC    "%{mabi=lp64*:}"
> 
> Is '*' necessary here?

Removed it.

>> diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
>> index b1b4eef..c1a9cbd 100644
>> --- a/gcc/config/aarch64/aarch64.c
>> +++ b/gcc/config/aarch64/aarch64.c
>> @@ -5186,6 +5186,10 @@ aarch64_override_options (void)
>>       {
>>         aarch64_parse_tune ();
>>       }
>> +#ifndef HAVE_AS_MABI_OPTION
>> +  if (TARGET_ILP32)
>> +    error ("Assembler does not supprt -mabi=ilp32");
>> +#endif
> 
> A blank line before #ifndef and some comment to explain the reason please.

Blank line and comments are added.

>> + aarch64*-*-*)
> 
> Alphabetically, this should be placed before alpha*.

Moved it up.

> 
> It is not sufficient to only check with_abi itself.  By default,
> aarch64*-*-elf builds both ilp32 and lp64 libraries (e.g. libgcc).  This
> needs to be turned off if test x$gcc_cv_as_aarch64_mabi = xno.  We also
> need to detect the situation where users explicitly configure the
> toolchain with --with-multilib-list=lp64,ilp32
> 
> Here is an incremental diff based on your change to gcc/configure.ac to
> give an example on a more thorough check:
> 
> diff --git a/gcc/configure.ac b/gcc/configure.ac
> index c8cf274..c590ad7 100644
> --- a/gcc/configure.ac
> +++ b/gcc/configure.ac
> @@ -3488,12 +3488,27 @@ case "$target" in
>      gcc_GAS_CHECK_FEATURE([-mabi option],
>        gcc_cv_as_aarch64_mabi,,
>        [-mabi=lp64], [.text],,,)
> -    if test $gcc_cv_as_aarch64_mabi = yes ; then
> +    if test x$gcc_cv_as_aarch64_mabi = xyes ; then
>      AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
>            [Define if your assembler supports the -mabi option.])
> -    fi
> -    if test x$gcc_cv_as_aarch64_mabi = xno && test x$with_abi = xilp32;
> then
> -    AC_MSG_ERROR([Assembler doesnot support -mabi=ilp32. Upgrade the
> Assembler.])
> +    else
> +    if test x$with_abi = xilp32; then
> +      AC_MSG_ERROR([Assembler does not support -mabi=ilp32.  Upgrade
> the Assembler.])
> +    fi
> +    if test x"$with_multilib_list" = xdefault; then
> +      TM_MULTILIB_CONFIG=lp64
> +    else
> +      aarch64_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
> +      for aarch64_multilib in ${aarch64_multilibs}; do
> +        case ${aarch64_multilib} in
> +          ilp32 )
> +        AC_MSG_ERROR([Assembler does not support -mabi=ilp32.  Upgrade
> the Assembler.])
> +        ;;
> +          *)
> +        ;;
> +        esac
> +      done
> +    fi
>      fi
>      ;;

Updated it and tested with

1. binutils 2.23.2
   a. bootstrapped with defaults and tested gcc for -mabi=lp64
(compiles) and -mabi=ilp32 gives error
   b. Trying to boottsrap with --with-multilibs-list=lp64,ilp32 fails
with error msg
   c. Trying to bootstrap with --with-multilibs-list=ilp32 fails with
error msg
   d. Bootstrap with --with-multilibs-list=lp64 works.

2. binutils 2.24.51
    a. bootstrapped with defaults and tested gcc for -mabi=lp64
(compiles) and -mabi=ilp32 (compiles)
   b. Bootstrap with --with-multilibs-list=lp64,ilp32 works and tested
gcc for -mabi=lp64
compiles and -mabi=ilp32  compiles(* gives linker error in my setup -
aarch64:ilp32 architecture of input file `/tmp/ccIFqSxU.o' is
incompatible with aarch64 output; I believe this is not related to what
I am testing)
   c. Bootstrap with default works


Thanks,
kugan

gcc/

+2013-12-09  Kugan Vivekanandarajah  <kuganv@linaro.org>
+	* configure.ac: Add check for aarch64 assembler -mabi support.
+	* configure: Regenerate.
+	* config.in: Regenerate.
+	* config/aarch64/aarch64-elf.h (ASM_MABI_SPEC): New define.
+	(ASM_SPEC): Update to substitute -mabi with ASM_MABI_SPEC.
+	* config/aarch64/aarch64.h (aarch64_override_options):  Issue error if
+	assebler does not support -mabi and option ilp32 is selected.
+	* doc/install.texi: Added note that building gcc 4.9 and after with pre
+	2.24 binutils will not support -mabi=ilp32.
+




[-- Attachment #2: p.txt --]
[-- Type: text/plain, Size: 2996 bytes --]

diff --git a/gcc/config/aarch64/aarch64-elf.h b/gcc/config/aarch64/aarch64-elf.h
index 4757d22..a66c3db 100644
--- a/gcc/config/aarch64/aarch64-elf.h
+++ b/gcc/config/aarch64/aarch64-elf.h
@@ -134,13 +134,19 @@
   " %{!mbig-endian:%{!mlittle-endian:" ENDIAN_SPEC "}}" \
   " %{!mabi=*:" ABI_SPEC "}"
 
+#ifdef HAVE_AS_MABI_OPTION
+#define ASM_MABI_SPEC	"%{mabi=*:-mabi=%*}"
+#else
+#define ASM_MABI_SPEC	"%{mabi=lp64:}"
+#endif
+
 #ifndef ASM_SPEC
 #define ASM_SPEC "\
 %{mbig-endian:-EB} \
 %{mlittle-endian:-EL} \
 %{mcpu=*:-mcpu=%*} \
-%{march=*:-march=%*} \
-%{mabi=*:-mabi=%*}"
+%{march=*:-march=%*}" \
+ASM_MABI_SPEC
 #endif
 
 #undef TYPE_OPERAND_FMT
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index b1b4eef..a53febc 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -5187,6 +5187,13 @@ aarch64_override_options (void)
       aarch64_parse_tune ();
     }
 
+/* Issue error if assembler does not support -mabi and option ilp32
+  is selected.  */
+#ifndef HAVE_AS_MABI_OPTION
+  if (TARGET_ILP32)
+    error ("Assembler does not supprt -mabi=ilp32");
+#endif
+
   initialize_aarch64_code_model ();
 
   aarch64_build_bitmask_table ();
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 91a22d5..a951b82 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -3495,6 +3495,35 @@ AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
 AC_MSG_RESULT($gcc_cv_lto_plugin)
 
 case "$target" in
+
+  aarch64*-*-*)
+    gcc_GAS_CHECK_FEATURE([-mabi option],
+      gcc_cv_as_aarch64_mabi,,
+      [-mabi=lp64], [.text],,,)
+    if test x$gcc_cv_as_aarch64_mabi = xyes; then
+	AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
+		  [Define if your assembler supports the -mabi option.])
+    else
+	if test x$with_abi = xilp32; then
+	    AC_MSG_ERROR([Assembler does not support -mabi=ilp32.  Upgrade the Assembler.])
+	fi
+        if test x"$with_multilib_list" = xdefault; then
+	    TM_MULTILIB_CONFIG=lp64
+        else
+	    aarch64_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
+	    for aarch64_multilib in ${aarch64_multilibs}; do
+		case ${aarch64_multilib} in
+		    ilp32)
+			AC_MSG_ERROR([Assembler does not support -mabi=ilp32.  Upgrade the Assembler.])
+		    ;;
+		    *)
+		    ;;
+		esac
+	    done
+	fi
+    fi
+    ;;
+
   # All TARGET_ABI_OSF targets.
   alpha*-*-linux* | alpha*-*-*bsd*)
     gcc_GAS_CHECK_FEATURE([explicit relocation support],
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index a8f9f8a..00c4f0d 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -3735,6 +3735,15 @@ removed and the system libunwind library will always be used.
 
 @html
 <hr />
+@end html
+@anchor{aarch64-x-x}
+@heading aarch64*-*-*
+Pre 2.24 binutils does not have support for selecting -mabi and does not
+support ILP32.  If GCC 4.9 or later is built with pre 2.24, GCC will not
+support option -mabi=ilp32.
+
+@html
+<hr />
 <!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
 @end html
 @anchor{x-ibm-aix}

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: AARCH64 configure check for gas -mabi support
  2013-12-10  6:21       ` Kugan
@ 2013-12-10 11:29         ` Yufeng Zhang
  2013-12-10 20:23           ` Kugan
  0 siblings, 1 reply; 14+ messages in thread
From: Yufeng Zhang @ 2013-12-10 11:29 UTC (permalink / raw)
  To: Kugan; +Cc: gcc-patches, Marcus Shawcroft, patches

Hi Kugan,

The latest patch looks good to me; I only have a couple of minor 
comments inlined below.  Please ask Marcus to review and approve it. 
Thanks again for fixing this issue!

On 12/10/13 06:21, Kugan wrote:
[snip]

> Updated it and tested with
>
> 1. binutils 2.23.2
>    a. bootstrapped with defaults and tested gcc for -mabi=lp64
> (compiles) and -mabi=ilp32 gives error
>    b. Trying to boottsrap with --with-multilibs-list=lp64,ilp32 fails
> with error msg
>    c. Trying to bootstrap with --with-multilibs-list=ilp32 fails with
> error msg
>    d. Bootstrap with --with-multilibs-list=lp64 works.
>
> 2. binutils 2.24.51
>     a. bootstrapped with defaults and tested gcc for -mabi=lp64
> (compiles) and -mabi=ilp32 (compiles)
>    b. Bootstrap with --with-multilibs-list=lp64,ilp32 works and tested
> gcc for -mabi=lp64
> compiles and -mabi=ilp32  compiles(* gives linker error in my setup -
> aarch64:ilp32 architecture of input file `/tmp/ccIFqSxU.o' is
> incompatible with aarch64 output; I believe this is not related to what
> I am testing)
>    c. Bootstrap with default works

Thanks for the comprehensive testing.  The linker error you see is 
because that the ILP32 support for aarch64*-*-linux* has not been added 
(Andrew Pinski has sent the patch series to enable the support here 
http://gcc.gnu.org/ml/gcc-patches/2013-12/msg00282.html)

I also test the patch by building aarch64-none-elf cross compilers with 
binutils 2.23.2 and mainline, with default --with-multilibs-list.  It 
works well.

[snip]

> diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
> index b1b4eef..a53febc 100644
> --- a/gcc/config/aarch64/aarch64.c
> +++ b/gcc/config/aarch64/aarch64.c
> @@ -5187,6 +5187,13 @@ aarch64_override_options (void)
>         aarch64_parse_tune ();
>       }
>
> +/* Issue error if assembler does not support -mabi and option ilp32
> +  is selected.  */

I'd prefer the comment to be "The compiler may have been configured with 
2.23.* binutils, which does not have support for ILP32."

> +#ifndef HAVE_AS_MABI_OPTION
> +  if (TARGET_ILP32)
> +    error ("Assembler does not supprt -mabi=ilp32");
> +#endif

supprt/support

> +
>     initialize_aarch64_code_model ();
>
>     aarch64_build_bitmask_table ();
> diff --git a/gcc/configure.ac b/gcc/configure.ac
> index 91a22d5..a951b82 100644
> --- a/gcc/configure.ac
> +++ b/gcc/configure.ac
> @@ -3495,6 +3495,35 @@ AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
>   AC_MSG_RESULT($gcc_cv_lto_plugin)
>
>   case "$target" in
> +
> +  aarch64*-*-*)
> +    gcc_GAS_CHECK_FEATURE([-mabi option],
> +      gcc_cv_as_aarch64_mabi,,
> +      [-mabi=lp64], [.text],,,)
> +    if test x$gcc_cv_as_aarch64_mabi = xyes; then
> +	AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
> +		  [Define if your assembler supports the -mabi option.])
> +    else
> +	if test x$with_abi = xilp32; then
> +	    AC_MSG_ERROR([Assembler does not support -mabi=ilp32.  Upgrade the Assembler.])
> +	fi
> +        if test x"$with_multilib_list" = xdefault; then
> +	    TM_MULTILIB_CONFIG=lp64
> +        else
> +	    aarch64_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
> +	    for aarch64_multilib in ${aarch64_multilibs}; do
> +		case ${aarch64_multilib} in
> +		    ilp32)
> +			AC_MSG_ERROR([Assembler does not support -mabi=ilp32.  Upgrade the Assembler.])
> +		    ;;
> +		    *)
> +		    ;;
> +		esac
> +	    done
> +	fi
> +    fi
> +    ;;
> +

I'm not very sure about the indent rules for configury files, but in 
other areas of configure.ac, it seems using a similar indent convention 
as in .c files.


Thanks,
Yufeng


>     # All TARGET_ABI_OSF targets.
>     alpha*-*-linux* | alpha*-*-*bsd*)
>       gcc_GAS_CHECK_FEATURE([explicit relocation support],
> diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
> index a8f9f8a..00c4f0d 100644
> --- a/gcc/doc/install.texi
> +++ b/gcc/doc/install.texi
> @@ -3735,6 +3735,15 @@ removed and the system libunwind library will always be used.
>
>   @html
>   <hr />
> +@end html
> +@anchor{aarch64-x-x}
> +@heading aarch64*-*-*
> +Pre 2.24 binutils does not have support for selecting -mabi and does not
> +support ILP32.  If GCC 4.9 or later is built with pre 2.24, GCC will not
> +support option -mabi=ilp32.
> +
> +@html
> +<hr />
>   <!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
>   @end html
>   @anchor{x-ibm-aix}
>


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: AARCH64 configure check for gas -mabi support
  2013-12-10 11:29         ` Yufeng Zhang
@ 2013-12-10 20:23           ` Kugan
  2013-12-11 12:27             ` Marcus Shawcroft
  2014-06-30  9:44             ` Gerald Pfeifer
  0 siblings, 2 replies; 14+ messages in thread
From: Kugan @ 2013-12-10 20:23 UTC (permalink / raw)
  To: Yufeng Zhang; +Cc: gcc-patches, Marcus Shawcroft, patches

[-- Attachment #1: Type: text/plain, Size: 1539 bytes --]


[snip]

>> diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
>> index b1b4eef..a53febc 100644
>> --- a/gcc/config/aarch64/aarch64.c
>> +++ b/gcc/config/aarch64/aarch64.c
>> @@ -5187,6 +5187,13 @@ aarch64_override_options (void)
>>         aarch64_parse_tune ();
>>       }
>>
>> +/* Issue error if assembler does not support -mabi and option ilp32
>> +  is selected.  */
>
>I'd prefer the comment to be "The compiler may have been configured
>with 2.23.* binutils, which does not have support for ILP32."


>> +#ifndef HAVE_AS_MABI_OPTION
>> +  if (TARGET_ILP32)
>> +    error ("Assembler does not supprt -mabi=ilp32");
>> +#endif
> 
> supprt/support
> 
[snip]

> I'm not very sure about the indent rules for configury files, but in
> other areas of configure.ac, it seems using a similar indent convention
> as in .c files.
> 

Thanks Yufeng. I have updated the patch based on the comments above.

Marcus, is this OK for trunk now?

Thanks,
Kugan


gcc/

+2013-12-11  Kugan Vivekanandarajah  <kuganv@linaro.org>
+	* configure.ac: Add check for aarch64 assembler -mabi support.
+	* configure: Regenerate.
+	* config.in: Regenerate.
+	* config/aarch64/aarch64-elf.h (ASM_MABI_SPEC): New define.
+	(ASM_SPEC): Update to substitute -mabi with ASM_MABI_SPEC.
+	* config/aarch64/aarch64.h (aarch64_override_options):  Issue error if
+	assembler does not support -mabi and option ilp32 is selected.
+	* doc/install.texi: Added note that building gcc 4.9 and after with pre
+	2.24 binutils will not support -mabi=ilp32.
+

[-- Attachment #2: p.txt --]
[-- Type: text/plain, Size: 3183 bytes --]

diff --git a/gcc/config/aarch64/aarch64-elf.h b/gcc/config/aarch64/aarch64-elf.h
index 4757d22..a66c3db 100644
--- a/gcc/config/aarch64/aarch64-elf.h
+++ b/gcc/config/aarch64/aarch64-elf.h
@@ -134,13 +134,19 @@
   " %{!mbig-endian:%{!mlittle-endian:" ENDIAN_SPEC "}}" \
   " %{!mabi=*:" ABI_SPEC "}"
 
+#ifdef HAVE_AS_MABI_OPTION
+#define ASM_MABI_SPEC	"%{mabi=*:-mabi=%*}"
+#else
+#define ASM_MABI_SPEC	"%{mabi=lp64:}"
+#endif
+
 #ifndef ASM_SPEC
 #define ASM_SPEC "\
 %{mbig-endian:-EB} \
 %{mlittle-endian:-EL} \
 %{mcpu=*:-mcpu=%*} \
-%{march=*:-march=%*} \
-%{mabi=*:-mabi=%*}"
+%{march=*:-march=%*}" \
+ASM_MABI_SPEC
 #endif
 
 #undef TYPE_OPERAND_FMT
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index b1b4eef..01dbe23 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -5187,6 +5187,13 @@ aarch64_override_options (void)
       aarch64_parse_tune ();
     }
 
+#ifndef HAVE_AS_MABI_OPTION
+  /* The compiler may have been configured with 2.23.* binutils, which does
+     not have support for ILP32.  */
+  if (TARGET_ILP32)
+    error ("Assembler does not support -mabi=ilp32");
+#endif
+
   initialize_aarch64_code_model ();
 
   aarch64_build_bitmask_table ();
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 91a22d5..0a3b97b 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -3495,6 +3495,35 @@ AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
 AC_MSG_RESULT($gcc_cv_lto_plugin)
 
 case "$target" in
+  aarch64*-*-*)
+    gcc_GAS_CHECK_FEATURE([-mabi option], gcc_cv_as_aarch64_mabi,,
+                          [-mabi=lp64], [.text],,,)
+    if test x$gcc_cv_as_aarch64_mabi = xyes; then
+      AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
+                [Define if your assembler supports the -mabi option.])
+    else
+      if test x$with_abi = xilp32; then
+        AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
+                     Upgrade the Assembler.])
+      fi
+      if test x"$with_multilib_list" = xdefault; then
+        TM_MULTILIB_CONFIG=lp64
+      else
+        aarch64_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
+        for aarch64_multilib in ${aarch64_multilibs}; do
+          case ${aarch64_multilib} in
+            ilp32)
+              AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
+                            Upgrade the Assembler.])
+              ;;
+            *)
+              ;;
+          esac
+        done
+      fi
+    fi
+    ;;
+
   # All TARGET_ABI_OSF targets.
   alpha*-*-linux* | alpha*-*-*bsd*)
     gcc_GAS_CHECK_FEATURE([explicit relocation support],
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index a8f9f8a..00c4f0d 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -3735,6 +3735,15 @@ removed and the system libunwind library will always be used.
 
 @html
 <hr />
+@end html
+@anchor{aarch64-x-x}
+@heading aarch64*-*-*
+Pre 2.24 binutils does not have support for selecting -mabi and does not
+support ILP32.  If GCC 4.9 or later is built with pre 2.24, GCC will not
+support option -mabi=ilp32.
+
+@html
+<hr />
 <!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
 @end html
 @anchor{x-ibm-aix}

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: AARCH64 configure check for gas -mabi support
  2013-12-10 20:23           ` Kugan
@ 2013-12-11 12:27             ` Marcus Shawcroft
  2013-12-11 12:58               ` Christophe Lyon
  2014-06-30  9:44             ` Gerald Pfeifer
  1 sibling, 1 reply; 14+ messages in thread
From: Marcus Shawcroft @ 2013-12-11 12:27 UTC (permalink / raw)
  To: Kugan, Yufeng Zhang; +Cc: gcc-patches, patches

On 10/12/13 20:23, Kugan wrote:

> gcc/
>
> +2013-12-11  Kugan Vivekanandarajah  <kuganv@linaro.org>
> +	* configure.ac: Add check for aarch64 assembler -mabi support.
> +	* configure: Regenerate.
> +	* config.in: Regenerate.
> +	* config/aarch64/aarch64-elf.h (ASM_MABI_SPEC): New define.
> +	(ASM_SPEC): Update to substitute -mabi with ASM_MABI_SPEC.
> +	* config/aarch64/aarch64.h (aarch64_override_options):  Issue error if
> +	assembler does not support -mabi and option ilp32 is selected.
> +	* doc/install.texi: Added note that building gcc 4.9 and after with pre
> +	2.24 binutils will not support -mabi=ilp32.
> +
>

Kugan, Thanks for sorting this out. OK to commit.

/Marcus

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: AARCH64 configure check for gas -mabi support
  2013-12-11 12:27             ` Marcus Shawcroft
@ 2013-12-11 12:58               ` Christophe Lyon
  2019-06-20 10:04                 ` Thomas Schwinge
  0 siblings, 1 reply; 14+ messages in thread
From: Christophe Lyon @ 2013-12-11 12:58 UTC (permalink / raw)
  To: Marcus Shawcroft; +Cc: Kugan, Yufeng Zhang, gcc-patches, patches

Committed on Kugan's behalf as rev 205891.

On 11 December 2013 13:27, Marcus Shawcroft <marcus.shawcroft@arm.com> wrote:
> On 10/12/13 20:23, Kugan wrote:
>
>> gcc/
>>
>> +2013-12-11  Kugan Vivekanandarajah  <kuganv@linaro.org>
>> +       * configure.ac: Add check for aarch64 assembler -mabi support.
>> +       * configure: Regenerate.
>> +       * config.in: Regenerate.
>> +       * config/aarch64/aarch64-elf.h (ASM_MABI_SPEC): New define.
>> +       (ASM_SPEC): Update to substitute -mabi with ASM_MABI_SPEC.
>> +       * config/aarch64/aarch64.h (aarch64_override_options):  Issue
>> error if
>> +       assembler does not support -mabi and option ilp32 is selected.
>> +       * doc/install.texi: Added note that building gcc 4.9 and after
>> with pre
>> +       2.24 binutils will not support -mabi=ilp32.
>> +
>>
>
> Kugan, Thanks for sorting this out. OK to commit.
>
> /Marcus
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: AARCH64 configure check for gas -mabi support
  2013-12-10 20:23           ` Kugan
  2013-12-11 12:27             ` Marcus Shawcroft
@ 2014-06-30  9:44             ` Gerald Pfeifer
  2014-06-30  9:53               ` Yufeng Zhang
  1 sibling, 1 reply; 14+ messages in thread
From: Gerald Pfeifer @ 2014-06-30  9:44 UTC (permalink / raw)
  To: Kugan; +Cc: Yufeng Zhang, gcc-patches, Marcus Shawcroft, patches

I applied the small patch on top of this, mostly triggered by the
markup issue.

Let me know if there is anything you'd like to see differently; I
am thinking to push back to GCC 4.9 as well later.

Gerald


2014-06-30  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/install.texi (Specific, aarch64*-*-*): Fix markup.  Reword a bit.

Index: doc/install.texi
===================================================================
--- doc/install.texi	(revision 212139)
+++ doc/install.texi	(working copy)
@@ -3760,9 +3760,9 @@
 @end html
 @anchor{aarch64-x-x}
 @heading aarch64*-*-*
-Pre 2.24 binutils does not have support for selecting -mabi and does not
-support ILP32.  If GCC 4.9 or later is built with pre 2.24, GCC will not
-support option -mabi=ilp32.
+Binutils pre 2.24 does not have support for selecting @option{-mabi} and
+does not support ILP32.  If it is used to build GCC 4.9 or later, GCC will
+not support option @option{-mabi=ilp32}.
 
 @html
 <hr />

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: AARCH64 configure check for gas -mabi support
  2014-06-30  9:44             ` Gerald Pfeifer
@ 2014-06-30  9:53               ` Yufeng Zhang
  2014-07-05 22:13                 ` Gerald Pfeifer
  0 siblings, 1 reply; 14+ messages in thread
From: Yufeng Zhang @ 2014-06-30  9:53 UTC (permalink / raw)
  To: Gerald Pfeifer; +Cc: Kugan, gcc-patches, Marcus Shawcroft, patches

Looks good to me.  Thanks for the fix.

Yufeng

On 06/30/14 10:44, Gerald Pfeifer wrote:
> I applied the small patch on top of this, mostly triggered by the
> markup issue.
>
> Let me know if there is anything you'd like to see differently; I
> am thinking to push back to GCC 4.9 as well later.
>
> Gerald
>
>
> 2014-06-30  Gerald Pfeifer<gerald@pfeifer.com>
>
> 	* doc/install.texi (Specific, aarch64*-*-*): Fix markup.  Reword a bit.
>
> Index: doc/install.texi
> ===================================================================
> --- doc/install.texi	(revision 212139)
> +++ doc/install.texi	(working copy)
> @@ -3760,9 +3760,9 @@
>   @end html
>   @anchor{aarch64-x-x}
>   @heading aarch64*-*-*
> -Pre 2.24 binutils does not have support for selecting -mabi and does not
> -support ILP32.  If GCC 4.9 or later is built with pre 2.24, GCC will not
> -support option -mabi=ilp32.
> +Binutils pre 2.24 does not have support for selecting @option{-mabi} and
> +does not support ILP32.  If it is used to build GCC 4.9 or later, GCC will
> +not support option @option{-mabi=ilp32}.
>
>   @html
>   <hr />
>


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: AARCH64 configure check for gas -mabi support
  2014-06-30  9:53               ` Yufeng Zhang
@ 2014-07-05 22:13                 ` Gerald Pfeifer
  0 siblings, 0 replies; 14+ messages in thread
From: Gerald Pfeifer @ 2014-07-05 22:13 UTC (permalink / raw)
  To: Yufeng Zhang; +Cc: Kugan, gcc-patches, Marcus Shawcroft, patches

On Mon, 30 Jun 2014, Yufeng Zhang wrote:
> Looks good to me.  Thanks for the fix.
>> 2014-06-30  Gerald Pfeifer<gerald@pfeifer.com>
>> 
>> 	* doc/install.texi (Specific, aarch64*-*-*): Fix markup.  Reword a bit.

I also pushed this to the GCC 4.9 branch now.

Gerald

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: AARCH64 configure check for gas -mabi support
  2013-12-11 12:58               ` Christophe Lyon
@ 2019-06-20 10:04                 ` Thomas Schwinge
  2019-06-20 10:49                   ` Kugan Vivekanandarajah
  0 siblings, 1 reply; 14+ messages in thread
From: Thomas Schwinge @ 2019-06-20 10:04 UTC (permalink / raw)
  To: Kugan, Christophe Lyon, Marcus Shawcroft
  Cc: Yufeng Zhang, gcc-patches, patches

[-- Attachment #1: Type: text/plain, Size: 2253 bytes --]

Hi!

I was just building an aarch64 cross-compiler (indeed compiler only:
'make all-gcc'), and then wanted to check something in gimplification
('-S -fdump-tree-gimple'), with '-mabi=ilp32', which told me: "cc1:
error: assembler does not support '-mabi=ilp32'".  That's unexpected, as
for '-S' GCC isn't even going to invoke the assembler.  It's coming from
this change:

On Wed, 11 Dec 2013 13:57:59 +0100, Christophe Lyon <christophe.lyon@linaro.org> wrote:
> Committed on Kugan's behalf as rev 205891.
> 
> On 11 December 2013 13:27, Marcus Shawcroft <marcus.shawcroft@arm.com> wrote:
> > On 10/12/13 20:23, Kugan wrote:
> >
> >> gcc/
> >>
> >> +2013-12-11  Kugan Vivekanandarajah  <kuganv@linaro.org>
> >> +       * configure.ac: Add check for aarch64 assembler -mabi support.
> >> +       * configure: Regenerate.
> >> +       * config.in: Regenerate.
> >> +       * config/aarch64/aarch64-elf.h (ASM_MABI_SPEC): New define.
> >> +       (ASM_SPEC): Update to substitute -mabi with ASM_MABI_SPEC.
> >> +       * config/aarch64/aarch64.h (aarch64_override_options):  Issue
> >> error if
> >> +       assembler does not support -mabi and option ilp32 is selected.
> >> +       * doc/install.texi: Added note that building gcc 4.9 and after
> >> with pre
> >> +       2.24 binutils will not support -mabi=ilp32.
> >> +
> >>
> >
> > Kugan, Thanks for sorting this out. OK to commit.
> >
> > /Marcus

Specifically:

    --- a/gcc/config/aarch64/aarch64.c
    +++ b/gcc/config/aarch64/aarch64.c
    @@ -5187,6 +5187,13 @@ aarch64_override_options (void)
           aarch64_parse_tune ();
         }
    
    +#ifndef HAVE_AS_MABI_OPTION
    +  /* The compiler may have been configured with 2.23.* binutils, which does
    +     not have support for ILP32.  */
    +  if (TARGET_ILP32)
    +    error ("Assembler does not support -mabi=ilp32");
    +#endif

Why is that necessary?  Won't the assembler itself tell the user that it
"does not support -mabi=ilp32", thus this check can be removed?  If not,
can a condition simply be added here to only emit this error if we're
indeed going to invoke the assembler?

(For my own testing, I just locally disabled that, of course.)


Grüße
 Thomas

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 658 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: AARCH64 configure check for gas -mabi support
  2019-06-20 10:04                 ` Thomas Schwinge
@ 2019-06-20 10:49                   ` Kugan Vivekanandarajah
  0 siblings, 0 replies; 14+ messages in thread
From: Kugan Vivekanandarajah @ 2019-06-20 10:49 UTC (permalink / raw)
  To: Thomas Schwinge
  Cc: Christophe Lyon, Marcus Shawcroft, Yufeng Zhang, gcc-patches, patches

Hi Thomas,

On Thu, 20 Jun 2019 at 20:04, Thomas Schwinge <thomas@codesourcery.com> wrote:
>
> Hi!
>
> I was just building an aarch64 cross-compiler (indeed compiler only:
> 'make all-gcc'), and then wanted to check something in gimplification
> ('-S -fdump-tree-gimple'), with '-mabi=ilp32', which told me: "cc1:
> error: assembler does not support '-mabi=ilp32'".  That's unexpected, as
> for '-S' GCC isn't even going to invoke the assembler.  It's coming from
> this change:
>
> On Wed, 11 Dec 2013 13:57:59 +0100, Christophe Lyon <christophe.lyon@linaro.org> wrote:
> > Committed on Kugan's behalf as rev 205891.
> >
> > On 11 December 2013 13:27, Marcus Shawcroft <marcus.shawcroft@arm.com> wrote:
> > > On 10/12/13 20:23, Kugan wrote:
> > >
> > >> gcc/
> > >>
> > >> +2013-12-11  Kugan Vivekanandarajah  <kuganv@linaro.org>
> > >> +       * configure.ac: Add check for aarch64 assembler -mabi support.
> > >> +       * configure: Regenerate.
> > >> +       * config.in: Regenerate.
> > >> +       * config/aarch64/aarch64-elf.h (ASM_MABI_SPEC): New define.
> > >> +       (ASM_SPEC): Update to substitute -mabi with ASM_MABI_SPEC.
> > >> +       * config/aarch64/aarch64.h (aarch64_override_options):  Issue
> > >> error if
> > >> +       assembler does not support -mabi and option ilp32 is selected.
> > >> +       * doc/install.texi: Added note that building gcc 4.9 and after
> > >> with pre
> > >> +       2.24 binutils will not support -mabi=ilp32.
> > >> +
> > >>
> > >
> > > Kugan, Thanks for sorting this out. OK to commit.
> > >
> > > /Marcus
>
> Specifically:
>
>     --- a/gcc/config/aarch64/aarch64.c
>     +++ b/gcc/config/aarch64/aarch64.c
>     @@ -5187,6 +5187,13 @@ aarch64_override_options (void)
>            aarch64_parse_tune ();
>          }
>
>     +#ifndef HAVE_AS_MABI_OPTION
>     +  /* The compiler may have been configured with 2.23.* binutils, which does
>     +     not have support for ILP32.  */
>     +  if (TARGET_ILP32)
>     +    error ("Assembler does not support -mabi=ilp32");
>     +#endif
>
> Why is that necessary?  Won't the assembler itself tell the user that it
> "does not support -mabi=ilp32", thus this check can be removed?  If not,
> can a condition simply be added here to only emit this error if we're
> indeed going to invoke the assembler?
Current binutils will but  binutils  2.23 and before didnt.
Specifically, with  2.23.2, bootstrap was failing. That is why we
needed this.

Thanks,
Kugan


>
> (For my own testing, I just locally disabled that, of course.)
>
>
> Grüße
>  Thomas

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2019-06-20 10:49 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-12-04 21:03 AARCH64 configure check for gas -mabi support Kugan
2013-12-06 16:18 ` Yufeng Zhang
2013-12-09 11:20   ` Kugan
2013-12-09 21:57     ` Yufeng Zhang
2013-12-10  6:21       ` Kugan
2013-12-10 11:29         ` Yufeng Zhang
2013-12-10 20:23           ` Kugan
2013-12-11 12:27             ` Marcus Shawcroft
2013-12-11 12:58               ` Christophe Lyon
2019-06-20 10:04                 ` Thomas Schwinge
2019-06-20 10:49                   ` Kugan Vivekanandarajah
2014-06-30  9:44             ` Gerald Pfeifer
2014-06-30  9:53               ` Yufeng Zhang
2014-07-05 22:13                 ` Gerald Pfeifer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).