* 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).