public inbox for libc-ports@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v2] ARM: Use different linker path for hardfloat ABI
@ 2012-04-22 22:20 Michael Hope
  2012-04-23 15:37 ` Richard Earnshaw
  2012-04-23 19:58 ` Carlos O'Donell
  0 siblings, 2 replies; 24+ messages in thread
From: Michael Hope @ 2012-04-22 22:20 UTC (permalink / raw)
  To: GCC Patches; +Cc: cross-distro, libc-ports

Change the dynamic linker path for ARM hard float executables.
Matches the path discussed and agreed on last week[1].  Carlos will
follow up with the matching patch to GLIBC[2].  I'm happy to if he's
busy.

OK for trunk?

-- Michael
[1] http://sourceware.org/ml/libc-ports/2012-04/msg00060.html
[2] http://sourceware.org/ml/libc-ports/2012-04/msg00064.html

2012-04-23  Michael Hope  <michael.hope@linaro.org>

	* config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_HARD_FLOAT): Define.
	(GLIBC_DYNAMIC_LINKER_SOFT_FLOAT): Define.
	(GLIBC_DYNAMIC_LINKER):	Redefine to use the hard float path.

diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
index 80bd825..3ddf812 100644
--- a/gcc/config/arm/linux-eabi.h
+++ b/gcc/config/arm/linux-eabi.h
@@ -62,7 +62,11 @@
 /* Use ld-linux.so.3 so that it will be possible to run "classic"
    GNU/Linux binaries on an EABI system.  */
 #undef  GLIBC_DYNAMIC_LINKER
-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
+#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
+#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
+#define GLIBC_DYNAMIC_LINKER \
+   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
+    %{!mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "}"

 /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
    use the GNU/Linux version, not the generic BPABI version.  */

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-04-22 22:20 [PATCH v2] ARM: Use different linker path for hardfloat ABI Michael Hope
@ 2012-04-23 15:37 ` Richard Earnshaw
  2012-04-23 21:37   ` Michael Hope
  2012-04-23 19:58 ` Carlos O'Donell
  1 sibling, 1 reply; 24+ messages in thread
From: Richard Earnshaw @ 2012-04-23 15:37 UTC (permalink / raw)
  To: Michael Hope; +Cc: GCC Patches, cross-distro, libc-ports

On 22/04/12 23:20, Michael Hope wrote:
> Change the dynamic linker path for ARM hard float executables.
> Matches the path discussed and agreed on last week[1].  Carlos will
> follow up with the matching patch to GLIBC[2].  I'm happy to if he's
> busy.
> 
> OK for trunk?
> 
> -- Michael
> [1] http://sourceware.org/ml/libc-ports/2012-04/msg00060.html
> [2] http://sourceware.org/ml/libc-ports/2012-04/msg00064.html
> 
> 2012-04-23  Michael Hope  <michael.hope@linaro.org>
> 
> 	* config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_HARD_FLOAT): Define.
> 	(GLIBC_DYNAMIC_LINKER_SOFT_FLOAT): Define.
> 	(GLIBC_DYNAMIC_LINKER):	Redefine to use the hard float path.
> 
> diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
> index 80bd825..3ddf812 100644
> --- a/gcc/config/arm/linux-eabi.h
> +++ b/gcc/config/arm/linux-eabi.h
> @@ -62,7 +62,11 @@
>  /* Use ld-linux.so.3 so that it will be possible to run "classic"
>     GNU/Linux binaries on an EABI system.  */
>  #undef  GLIBC_DYNAMIC_LINKER
> -#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
> +#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
> +#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
> +#define GLIBC_DYNAMIC_LINKER \
> +   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
> +    %{!mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "}"
> 
>  /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
>     use the GNU/Linux version, not the generic BPABI version.  */
> 


I think this should handle having the hard-float variant as the default
more gracefully, so something like:


-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
+#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
+#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
+#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD
+#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
+#else
+#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
+#endif
+#define GLIBC_DYNAMIC_LINKER \
+   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
+    %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
+    %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"

But I haven't tested any of that.

R.

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-04-22 22:20 [PATCH v2] ARM: Use different linker path for hardfloat ABI Michael Hope
  2012-04-23 15:37 ` Richard Earnshaw
@ 2012-04-23 19:58 ` Carlos O'Donell
  1 sibling, 0 replies; 24+ messages in thread
From: Carlos O'Donell @ 2012-04-23 19:58 UTC (permalink / raw)
  To: Michael Hope; +Cc: GCC Patches, cross-distro, libc-ports

On Sun, Apr 22, 2012 at 6:20 PM, Michael Hope <michael.hope@linaro.org> wrote:
> Change the dynamic linker path for ARM hard float executables.
> Matches the path discussed and agreed on last week[1].  Carlos will
> follow up with the matching patch to GLIBC[2].  I'm happy to if he's
> busy.

I'm testing a glibc patch with Richard's alternate version.

If all goes well I'll post it tomorrow for review on libc-ports@sourceware.org.

Cheers,
Carlos.

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-04-23 15:37 ` Richard Earnshaw
@ 2012-04-23 21:37   ` Michael Hope
  2012-04-24 13:32     ` Richard Earnshaw
  2012-04-26 20:21     ` Carlos O'Donell
  0 siblings, 2 replies; 24+ messages in thread
From: Michael Hope @ 2012-04-23 21:37 UTC (permalink / raw)
  To: Richard Earnshaw; +Cc: GCC Patches, cross-distro, libc-ports

On 24 April 2012 03:35, Richard Earnshaw <rearnsha@arm.com> wrote:
> On 22/04/12 23:20, Michael Hope wrote:
>> Change the dynamic linker path for ARM hard float executables.
>> Matches the path discussed and agreed on last week[1].  Carlos will
>> follow up with the matching patch to GLIBC[2].  I'm happy to if he's
>> busy.
>>
>> OK for trunk?
>>
>> -- Michael
>> [1] http://sourceware.org/ml/libc-ports/2012-04/msg00060.html
>> [2] http://sourceware.org/ml/libc-ports/2012-04/msg00064.html
>>
>> 2012-04-23  Michael Hope  <michael.hope@linaro.org>
>>
>>       * config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_HARD_FLOAT): Define.
>>       (GLIBC_DYNAMIC_LINKER_SOFT_FLOAT): Define.
>>       (GLIBC_DYNAMIC_LINKER): Redefine to use the hard float path.
>>
>> diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
>> index 80bd825..3ddf812 100644
>> --- a/gcc/config/arm/linux-eabi.h
>> +++ b/gcc/config/arm/linux-eabi.h
>> @@ -62,7 +62,11 @@
>>  /* Use ld-linux.so.3 so that it will be possible to run "classic"
>>     GNU/Linux binaries on an EABI system.  */
>>  #undef  GLIBC_DYNAMIC_LINKER
>> -#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
>> +#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
>> +#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
>> +#define GLIBC_DYNAMIC_LINKER \
>> +   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
>> +    %{!mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "}"
>>
>>  /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
>>     use the GNU/Linux version, not the generic BPABI version.  */
>>
>
>
> I think this should handle having the hard-float variant as the default
> more gracefully, so something like:
>
>
> -#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
> +#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
> +#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
> +#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD
> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
> +#else
> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
> +#endif
> +#define GLIBC_DYNAMIC_LINKER \
> +   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
> +    %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
> +    %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
>
> But I haven't tested any of that.

It tests just fine when setting the float ABI at configure time or
explicitly.  Updated patch is below.  I prefer the original, shorter
version but the new one is easier for someone else to understand.

OK for trunk?

-- Michael

2012-04-24  Michael Hope  <michael.hope@linaro.org>
	    Richard Earnshaw  <rearnsha@arm.com>

	* config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_SOFT_FLOAT): Define.
	(GLIBC_DYNAMIC_LINKER_HARD_FLOAT): Define.
	(GLIBC_DYNAMIC_LINKER_DEFAULT): Define.
	(GLIBC_DYNAMIC_LINKER): Redefine to use the hard float path.

diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
index 80bd825..2ace6f0 100644
--- a/gcc/config/arm/linux-eabi.h
+++ b/gcc/config/arm/linux-eabi.h
@@ -62,7 +62,17 @@
 /* Use ld-linux.so.3 so that it will be possible to run "classic"
    GNU/Linux binaries on an EABI system.  */
 #undef  GLIBC_DYNAMIC_LINKER
-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
+#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
+#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
+#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD
+#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
+#else
+#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
+#endif
+#define GLIBC_DYNAMIC_LINKER \
+   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
+    %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
+    %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"

 /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
    use the GNU/Linux version, not the generic BPABI version.  */

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-04-23 21:37   ` Michael Hope
@ 2012-04-24 13:32     ` Richard Earnshaw
  2012-04-26 20:21     ` Carlos O'Donell
  1 sibling, 0 replies; 24+ messages in thread
From: Richard Earnshaw @ 2012-04-24 13:32 UTC (permalink / raw)
  To: Michael Hope; +Cc: GCC Patches, cross-distro, libc-ports

On 23/04/12 22:36, Michael Hope wrote:
> On 24 April 2012 03:35, Richard Earnshaw <rearnsha@arm.com> wrote:
>> On 22/04/12 23:20, Michael Hope wrote:
>>> Change the dynamic linker path for ARM hard float executables.
>>> Matches the path discussed and agreed on last week[1].  Carlos will
>>> follow up with the matching patch to GLIBC[2].  I'm happy to if he's
>>> busy.
>>>
>>> OK for trunk?
>>>
>>> -- Michael
>>> [1] http://sourceware.org/ml/libc-ports/2012-04/msg00060.html
>>> [2] http://sourceware.org/ml/libc-ports/2012-04/msg00064.html
>>>
>>> 2012-04-23  Michael Hope  <michael.hope@linaro.org>
>>>
>>>       * config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_HARD_FLOAT): Define.
>>>       (GLIBC_DYNAMIC_LINKER_SOFT_FLOAT): Define.
>>>       (GLIBC_DYNAMIC_LINKER): Redefine to use the hard float path.
>>>
>>> diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
>>> index 80bd825..3ddf812 100644
>>> --- a/gcc/config/arm/linux-eabi.h
>>> +++ b/gcc/config/arm/linux-eabi.h
>>> @@ -62,7 +62,11 @@
>>>  /* Use ld-linux.so.3 so that it will be possible to run "classic"
>>>     GNU/Linux binaries on an EABI system.  */
>>>  #undef  GLIBC_DYNAMIC_LINKER
>>> -#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
>>> +#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
>>> +#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
>>> +#define GLIBC_DYNAMIC_LINKER \
>>> +   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
>>> +    %{!mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "}"
>>>
>>>  /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
>>>     use the GNU/Linux version, not the generic BPABI version.  */
>>>
>>
>>
>> I think this should handle having the hard-float variant as the default
>> more gracefully, so something like:
>>
>>
>> -#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
>> +#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
>> +#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
>> +#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD
>> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
>> +#else
>> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
>> +#endif
>> +#define GLIBC_DYNAMIC_LINKER \
>> +   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
>> +    %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
>> +    %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
>>
>> But I haven't tested any of that.
> 
> It tests just fine when setting the float ABI at configure time or
> explicitly.  Updated patch is below.  I prefer the original, shorter
> version but the new one is easier for someone else to understand.
> 

Your version would work for configuration using --with-float-abi, but
not for built-in setting with hard-float as default.

> OK for trunk?
> 

OK.

> -- Michael
> 
> 2012-04-24  Michael Hope  <michael.hope@linaro.org>
> 	    Richard Earnshaw  <rearnsha@arm.com>
> 
> 	* config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_SOFT_FLOAT): Define.
> 	(GLIBC_DYNAMIC_LINKER_HARD_FLOAT): Define.
> 	(GLIBC_DYNAMIC_LINKER_DEFAULT): Define.
> 	(GLIBC_DYNAMIC_LINKER): Redefine to use the hard float path.
> 
> diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
> index 80bd825..2ace6f0 100644
> --- a/gcc/config/arm/linux-eabi.h
> +++ b/gcc/config/arm/linux-eabi.h
> @@ -62,7 +62,17 @@
>  /* Use ld-linux.so.3 so that it will be possible to run "classic"
>     GNU/Linux binaries on an EABI system.  */
>  #undef  GLIBC_DYNAMIC_LINKER
> -#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
> +#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
> +#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
> +#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD
> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
> +#else
> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
> +#endif
> +#define GLIBC_DYNAMIC_LINKER \
> +   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
> +    %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
> +    %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
> 
>  /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
>     use the GNU/Linux version, not the generic BPABI version.  */
> 


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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-04-23 21:37   ` Michael Hope
  2012-04-24 13:32     ` Richard Earnshaw
@ 2012-04-26 20:21     ` Carlos O'Donell
  2012-04-26 23:27       ` Michael Hope
  1 sibling, 1 reply; 24+ messages in thread
From: Carlos O'Donell @ 2012-04-26 20:21 UTC (permalink / raw)
  To: Michael Hope; +Cc: Richard Earnshaw, GCC Patches, cross-distro, libc-ports

On Mon, Apr 23, 2012 at 5:36 PM, Michael Hope <michael.hope@linaro.org> wrote:
> 2012-04-24  Michael Hope  <michael.hope@linaro.org>
>            Richard Earnshaw  <rearnsha@arm.com>
>
>        * config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_SOFT_FLOAT): Define.
>        (GLIBC_DYNAMIC_LINKER_HARD_FLOAT): Define.
>        (GLIBC_DYNAMIC_LINKER_DEFAULT): Define.
>        (GLIBC_DYNAMIC_LINKER): Redefine to use the hard float path.
>
> diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
> index 80bd825..2ace6f0 100644
> --- a/gcc/config/arm/linux-eabi.h
> +++ b/gcc/config/arm/linux-eabi.h
> @@ -62,7 +62,17 @@
>  /* Use ld-linux.so.3 so that it will be possible to run "classic"
>    GNU/Linux binaries on an EABI system.  */
>  #undef  GLIBC_DYNAMIC_LINKER
> -#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
> +#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
> +#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
> +#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD
> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
> +#else
> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
> +#endif
> +#define GLIBC_DYNAMIC_LINKER \
> +   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
> +    %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
> +    %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
>
>  /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
>    use the GNU/Linux version, not the generic BPABI version.  */

This patch is broken. Please fix this.

You can't use a named enumeration in cpp equality.

The type ARM_FLOAT_ABI_HARD is a named enumeration and evaluates to 0
as an unknown identifier.

Therefore "#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD"
evaluates to "#if 0 == 0" and is always true.

Watch out that "#define ARM_FLOAT_ABI_HARD ARM_FLOAT_ABI_HARD" for
such enums is not conforming C99/C11.

I suggest you define the types as macros and then set the named enum
to those values, then use the macros in the header equality checks.

e.g.
#define VAL1 0 then enum FOO { RVAL1 = VAL1, ... }

Look at arm.h for the enum definition.

Cheers,
Carlos.

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-04-26 20:21     ` Carlos O'Donell
@ 2012-04-26 23:27       ` Michael Hope
  2012-04-30 15:24         ` Richard Earnshaw
  0 siblings, 1 reply; 24+ messages in thread
From: Michael Hope @ 2012-04-26 23:27 UTC (permalink / raw)
  To: Carlos O'Donell
  Cc: Richard Earnshaw, GCC Patches, cross-distro, libc-ports

On 27 April 2012 08:20, Carlos O'Donell <carlos@systemhalted.org> wrote:
> On Mon, Apr 23, 2012 at 5:36 PM, Michael Hope <michael.hope@linaro.org> wrote:
>> 2012-04-24  Michael Hope  <michael.hope@linaro.org>
>>            Richard Earnshaw  <rearnsha@arm.com>
>>
>>        * config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_SOFT_FLOAT): Define.
>>        (GLIBC_DYNAMIC_LINKER_HARD_FLOAT): Define.
>>        (GLIBC_DYNAMIC_LINKER_DEFAULT): Define.
>>        (GLIBC_DYNAMIC_LINKER): Redefine to use the hard float path.
>>
>> diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
>> index 80bd825..2ace6f0 100644
>> --- a/gcc/config/arm/linux-eabi.h
>> +++ b/gcc/config/arm/linux-eabi.h
>> @@ -62,7 +62,17 @@
>>  /* Use ld-linux.so.3 so that it will be possible to run "classic"
>>    GNU/Linux binaries on an EABI system.  */
>>  #undef  GLIBC_DYNAMIC_LINKER
>> -#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
>> +#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
>> +#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
>> +#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD
>> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
>> +#else
>> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
>> +#endif
>> +#define GLIBC_DYNAMIC_LINKER \
>> +   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
>> +    %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
>> +    %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
>>
>>  /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
>>    use the GNU/Linux version, not the generic BPABI version.  */
>
> This patch is broken. Please fix this.
>
> You can't use a named enumeration in cpp equality.
>
> The type ARM_FLOAT_ABI_HARD is a named enumeration and evaluates to 0
> as an unknown identifier.
>
> Therefore "#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD"
> evaluates to "#if 0 == 0" and is always true.
>
> Watch out that "#define ARM_FLOAT_ABI_HARD ARM_FLOAT_ABI_HARD" for
> such enums is not conforming C99/C11.
>
> I suggest you define the types as macros and then set the named enum
> to those values, then use the macros in the header equality checks.
>
> e.g.
> #define VAL1 0 then enum FOO { RVAL1 = VAL1, ... }
>
> Look at arm.h for the enum definition.

I've looked further into this and I think the original pre-#if version
is correct.

The float ABI comes from these places:
 * The -mfloat-abi= command line argument, else
 * The --with-float= configure time argument, else
 * TARGET_DEFAULT_FLOAT_ABI from linux-eabi.h

In the first case the ABI is explicit.  In the second
OPTION_DEFAULT_SPECS turns the configure time argument into an explict
-mfloat-abi=.

The patch below covers all cases, keeps the logic in the spec file,
and adds a comment linking the two #defines.

Tested by building with no configure flags, --wtih-float=softfp,
--with-float=hard, and then running with all combinations of
{,-mfloat-abi=softfp,-mfloat-abi=hard} {,-mglibc,-muclibc,-mbionic}.

OK?

-- Michael

2012-04-27  Michael Hope  <michael.hope@linaro.org>

	* config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER): Pick the loader
	using a spec rule.


diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
index 2ace6f0..e3cba57 100644
--- a/gcc/config/arm/linux-eabi.h
+++ b/gcc/config/arm/linux-eabi.h
@@ -60,19 +60,17 @@
 #define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION

 /* Use ld-linux.so.3 so that it will be possible to run "classic"
-   GNU/Linux binaries on an EABI system.  */
+   GNU/Linux binaries on an EABI system.
+   Use ld-linux-armhf.so.3 so that it will be possible to install both
+   hard and soft float binaries on a system.  */
 #undef  GLIBC_DYNAMIC_LINKER
 #define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
 #define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
-#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD
-#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
-#else
-#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
-#endif
+/* Update this rule if TARGET_DEFAULT_FLOAT_ABI changes from
+   ARM_FLOAT_ABI_SOFT.  */
 #define GLIBC_DYNAMIC_LINKER \
-   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
-    %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
-    %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
+  "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT \
+  "; :" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "}"

 /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
    use the GNU/Linux version, not the generic BPABI version.  */

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-04-26 23:27       ` Michael Hope
@ 2012-04-30 15:24         ` Richard Earnshaw
  2012-04-30 21:48           ` Michael Hope
  0 siblings, 1 reply; 24+ messages in thread
From: Richard Earnshaw @ 2012-04-30 15:24 UTC (permalink / raw)
  To: Michael Hope; +Cc: Carlos O'Donell, GCC Patches, cross-distro, libc-ports

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

On 27/04/12 00:27, Michael Hope wrote:
> On 27 April 2012 08:20, Carlos O'Donell <carlos@systemhalted.org> wrote:
>> On Mon, Apr 23, 2012 at 5:36 PM, Michael Hope <michael.hope@linaro.org> wrote:
>>> 2012-04-24  Michael Hope  <michael.hope@linaro.org>
>>>            Richard Earnshaw  <rearnsha@arm.com>
>>>
>>>        * config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_SOFT_FLOAT): Define.
>>>        (GLIBC_DYNAMIC_LINKER_HARD_FLOAT): Define.
>>>        (GLIBC_DYNAMIC_LINKER_DEFAULT): Define.
>>>        (GLIBC_DYNAMIC_LINKER): Redefine to use the hard float path.
>>>
>>> diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
>>> index 80bd825..2ace6f0 100644
>>> --- a/gcc/config/arm/linux-eabi.h
>>> +++ b/gcc/config/arm/linux-eabi.h
>>> @@ -62,7 +62,17 @@
>>>  /* Use ld-linux.so.3 so that it will be possible to run "classic"
>>>    GNU/Linux binaries on an EABI system.  */
>>>  #undef  GLIBC_DYNAMIC_LINKER
>>> -#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
>>> +#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
>>> +#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
>>> +#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD
>>> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
>>> +#else
>>> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
>>> +#endif
>>> +#define GLIBC_DYNAMIC_LINKER \
>>> +   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
>>> +    %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
>>> +    %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
>>>
>>>  /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
>>>    use the GNU/Linux version, not the generic BPABI version.  */
>>
>> This patch is broken. Please fix this.
>>
>> You can't use a named enumeration in cpp equality.
>>
>> The type ARM_FLOAT_ABI_HARD is a named enumeration and evaluates to 0
>> as an unknown identifier.
>>
>> Therefore "#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD"
>> evaluates to "#if 0 == 0" and is always true.
>>
>> Watch out that "#define ARM_FLOAT_ABI_HARD ARM_FLOAT_ABI_HARD" for
>> such enums is not conforming C99/C11.
>>
>> I suggest you define the types as macros and then set the named enum
>> to those values, then use the macros in the header equality checks.
>>
>> e.g.
>> #define VAL1 0 then enum FOO { RVAL1 = VAL1, ... }
>>
>> Look at arm.h for the enum definition.
> 
> I've looked further into this and I think the original pre-#if version
> is correct.
> 
> The float ABI comes from these places:
>  * The -mfloat-abi= command line argument, else
>  * The --with-float= configure time argument, else
>  * TARGET_DEFAULT_FLOAT_ABI from linux-eabi.h
> 
> In the first case the ABI is explicit.  In the second
> OPTION_DEFAULT_SPECS turns the configure time argument into an explict
> -mfloat-abi=.
> 
> The patch below covers all cases, keeps the logic in the spec file,
> and adds a comment linking the two #defines.
> 
> Tested by building with no configure flags, --wtih-float=softfp,
> --with-float=hard, and then running with all combinations of
> {,-mfloat-abi=softfp,-mfloat-abi=hard} {,-mglibc,-muclibc,-mbionic}.
> 
> OK?
> 
> -- Michael
> 
> 2012-04-27  Michael Hope  <michael.hope@linaro.org>
> 
> 	* config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER): Pick the loader
> 	using a spec rule.
> 

Michael,

can you try this patch please.  It should make it possible to then
create linux-eabihf.h containing just

#undef TARGET_DEFAULT_FLOAT_ABI
#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
#undef GLIBC_DYNAMIC_LINKER_DEFAULT
#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT

Which is not quite as simple as leaving out the second re-define, but
pretty close.

R.

[-- Attachment #2: hard-float-dyn.patch --]
[-- Type: text/plain, Size: 1630 bytes --]

--- linux-eabi.h	(revision 186924)
+++ linux-eabi.h	(local)
@@ -32,7 +32,8 @@
   while (false)
 
 /* We default to a soft-float ABI so that binaries can run on all
-   target hardware.  */
+   target hardware.  If you override this to use the hard-float ABI then
+   change the setting of GLIBC_DYNAMIC_LINKER_DEFAULT as well.  */
 #undef  TARGET_DEFAULT_FLOAT_ABI
 #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
 
@@ -59,16 +60,19 @@
 #undef  SUBTARGET_EXTRA_LINK_SPEC
 #define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION
 
-/* Use ld-linux.so.3 so that it will be possible to run "classic"
-   GNU/Linux binaries on an EABI system.  */
+/* GNU/Linux on ARM currently supports three dynamic linkers:
+   - ld-linux.so.2 - for the legacy ABI
+   - ld-linux.so.3 - for the EABI-derived soft-float ABI
+   - ld-linux-armhf.so.3 - for the EABI-derived hard-float ABI.
+   All the dynamic linkers live in /lib.
+   We default to soft-float, but this can be overridden by changing both
+   GLIBC_DYNAMIC_LINKER_DEFAULT and TARGET_DEFAULT_FLOAT_ABI.  */
+
 #undef  GLIBC_DYNAMIC_LINKER
 #define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
 #define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
-#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD
-#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
-#else
 #define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
-#endif
+
 #define GLIBC_DYNAMIC_LINKER \
    "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
     %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-04-30 15:24         ` Richard Earnshaw
@ 2012-04-30 21:48           ` Michael Hope
  2012-04-30 22:01             ` Jeff Law
  2012-05-01  8:52             ` Richard Earnshaw
  0 siblings, 2 replies; 24+ messages in thread
From: Michael Hope @ 2012-04-30 21:48 UTC (permalink / raw)
  To: Richard Earnshaw
  Cc: Carlos O'Donell, GCC Patches, cross-distro, libc-ports

On 1 May 2012 03:24, Richard Earnshaw <rearnsha@arm.com> wrote:
> On 27/04/12 00:27, Michael Hope wrote:
>> On 27 April 2012 08:20, Carlos O'Donell <carlos@systemhalted.org> wrote:
>>> On Mon, Apr 23, 2012 at 5:36 PM, Michael Hope <michael.hope@linaro.org> wrote:
>>>> 2012-04-24  Michael Hope  <michael.hope@linaro.org>
>>>>            Richard Earnshaw  <rearnsha@arm.com>
>>>>
>>>>        * config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_SOFT_FLOAT): Define.
>>>>        (GLIBC_DYNAMIC_LINKER_HARD_FLOAT): Define.
>>>>        (GLIBC_DYNAMIC_LINKER_DEFAULT): Define.
>>>>        (GLIBC_DYNAMIC_LINKER): Redefine to use the hard float path.
>>>>
>>>> diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
>>>> index 80bd825..2ace6f0 100644
>>>> --- a/gcc/config/arm/linux-eabi.h
>>>> +++ b/gcc/config/arm/linux-eabi.h
>>>> @@ -62,7 +62,17 @@
>>>>  /* Use ld-linux.so.3 so that it will be possible to run "classic"
>>>>    GNU/Linux binaries on an EABI system.  */
>>>>  #undef  GLIBC_DYNAMIC_LINKER
>>>> -#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
>>>> +#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
>>>> +#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
>>>> +#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD
>>>> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
>>>> +#else
>>>> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
>>>> +#endif
>>>> +#define GLIBC_DYNAMIC_LINKER \
>>>> +   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
>>>> +    %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
>>>> +    %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
>>>>
>>>>  /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
>>>>    use the GNU/Linux version, not the generic BPABI version.  */
>>>
>>> This patch is broken. Please fix this.
>>>
>>> You can't use a named enumeration in cpp equality.
>>>
>>> The type ARM_FLOAT_ABI_HARD is a named enumeration and evaluates to 0
>>> as an unknown identifier.
>>>
>>> Therefore "#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD"
>>> evaluates to "#if 0 == 0" and is always true.
>>>
>>> Watch out that "#define ARM_FLOAT_ABI_HARD ARM_FLOAT_ABI_HARD" for
>>> such enums is not conforming C99/C11.
>>>
>>> I suggest you define the types as macros and then set the named enum
>>> to those values, then use the macros in the header equality checks.
>>>
>>> e.g.
>>> #define VAL1 0 then enum FOO { RVAL1 = VAL1, ... }
>>>
>>> Look at arm.h for the enum definition.
>>
>> I've looked further into this and I think the original pre-#if version
>> is correct.
>>
>> The float ABI comes from these places:
>>  * The -mfloat-abi= command line argument, else
>>  * The --with-float= configure time argument, else
>>  * TARGET_DEFAULT_FLOAT_ABI from linux-eabi.h
>>
>> In the first case the ABI is explicit.  In the second
>> OPTION_DEFAULT_SPECS turns the configure time argument into an explict
>> -mfloat-abi=.
>>
>> The patch below covers all cases, keeps the logic in the spec file,
>> and adds a comment linking the two #defines.
>>
>> Tested by building with no configure flags, --wtih-float=softfp,
>> --with-float=hard, and then running with all combinations of
>> {,-mfloat-abi=softfp,-mfloat-abi=hard} {,-mglibc,-muclibc,-mbionic}.
>>
>> OK?
>>
>> -- Michael
>>
>> 2012-04-27  Michael Hope  <michael.hope@linaro.org>
>>
>>       * config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER): Pick the loader
>>       using a spec rule.
>>
>
> Michael,
>
> can you try this patch please.  It should make it possible to then
> create linux-eabihf.h containing just
>
> #undef TARGET_DEFAULT_FLOAT_ABI
> #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
> #undef GLIBC_DYNAMIC_LINKER_DEFAULT
> #define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
>
> Which is not quite as simple as leaving out the second re-define, but
> pretty close.

Hi Richard.  Your patch tests just fine.  I like it.  You could change
the spec rule to the newer if-elseif-else form but that's a nit.

-- Michael

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-04-30 21:48           ` Michael Hope
@ 2012-04-30 22:01             ` Jeff Law
  2012-05-01  2:44               ` Michael Hope
  2012-05-01  8:52             ` Richard Earnshaw
  1 sibling, 1 reply; 24+ messages in thread
From: Jeff Law @ 2012-04-30 22:01 UTC (permalink / raw)
  To: Michael Hope
  Cc: Richard Earnshaw, Carlos O'Donell, GCC Patches, cross-distro,
	libc-ports

On 04/30/2012 03:47 PM, Michael Hope wrote:

>>>
>>> 2012-04-27  Michael Hope<michael.hope@linaro.org>
>>>
>>>        * config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER): Pick the loader
>>>        using a spec rule.
>>>
>>
>> Michael,
>>
>> can you try this patch please.  It should make it possible to then
>> create linux-eabihf.h containing just
>>
>> #undef TARGET_DEFAULT_FLOAT_ABI
>> #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
>> #undef GLIBC_DYNAMIC_LINKER_DEFAULT
>> #define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
>>
>> Which is not quite as simple as leaving out the second re-define, but
>> pretty close.
>
> Hi Richard.  Your patch tests just fine.  I like it.  You could change
> the spec rule to the newer if-elseif-else form but that's a nit.
So who owns creating the appropriate glibc patch now that we've got a 
good gcc patch?

jeff

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-04-30 22:01             ` Jeff Law
@ 2012-05-01  2:44               ` Michael Hope
  2012-05-01  3:46                 ` Jeff Law
  0 siblings, 1 reply; 24+ messages in thread
From: Michael Hope @ 2012-05-01  2:44 UTC (permalink / raw)
  To: Jeff Law
  Cc: Richard Earnshaw, Carlos O'Donell, GCC Patches, cross-distro,
	libc-ports

On 1 May 2012 10:01, Jeff Law <law@redhat.com> wrote:
> On 04/30/2012 03:47 PM, Michael Hope wrote:
>
>>>>
>>>> 2012-04-27  Michael Hope<michael.hope@linaro.org>
>>>>
>>>>       * config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER): Pick the loader
>>>>       using a spec rule.
>>>>
>>>
>>> Michael,
>>>
>>> can you try this patch please.  It should make it possible to then
>>> create linux-eabihf.h containing just
>>>
>>> #undef TARGET_DEFAULT_FLOAT_ABI
>>> #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
>>> #undef GLIBC_DYNAMIC_LINKER_DEFAULT
>>> #define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
>>>
>>> Which is not quite as simple as leaving out the second re-define, but
>>> pretty close.
>>
>>
>> Hi Richard.  Your patch tests just fine.  I like it.  You could change
>> the spec rule to the newer if-elseif-else form but that's a nit.
>
> So who owns creating the appropriate glibc patch now that we've got a good
> gcc patch?

Carlos is working on the GLIBC patch:
 http://sourceware.org/ml/libc-ports/2012-04/msg00171.html

-- Michael

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-05-01  2:44               ` Michael Hope
@ 2012-05-01  3:46                 ` Jeff Law
  0 siblings, 0 replies; 24+ messages in thread
From: Jeff Law @ 2012-05-01  3:46 UTC (permalink / raw)
  To: Michael Hope
  Cc: Richard Earnshaw, Carlos O'Donell, GCC Patches, cross-distro,
	libc-ports

On 04/30/2012 08:43 PM, Michael Hope wrote:
> On 1 May 2012 10:01, Jeff Law<law@redhat.com>  wrote:
>> On 04/30/2012 03:47 PM, Michael Hope wrote:
>>
>>>>>
>>>>> 2012-04-27  Michael Hope<michael.hope@linaro.org>
>>>>>
>>>>>        * config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER): Pick the loader
>>>>>        using a spec rule.
>>>>>
>>>>
>>>> Michael,
>>>>
>>>> can you try this patch please.  It should make it possible to then
>>>> create linux-eabihf.h containing just
>>>>
>>>> #undef TARGET_DEFAULT_FLOAT_ABI
>>>> #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
>>>> #undef GLIBC_DYNAMIC_LINKER_DEFAULT
>>>> #define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
>>>>
>>>> Which is not quite as simple as leaving out the second re-define, but
>>>> pretty close.
>>>
>>>
>>> Hi Richard.  Your patch tests just fine.  I like it.  You could change
>>> the spec rule to the newer if-elseif-else form but that's a nit.
>>
>> So who owns creating the appropriate glibc patch now that we've got a good
>> gcc patch?
>
> Carlos is working on the GLIBC patch:
>   http://sourceware.org/ml/libc-ports/2012-04/msg00171.html
Ah, not on the main glibc list...  That's why I missed it.  Thanks.

jeff

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-04-30 21:48           ` Michael Hope
  2012-04-30 22:01             ` Jeff Law
@ 2012-05-01  8:52             ` Richard Earnshaw
  2012-05-23  7:13               ` Andreas Jaeger
  1 sibling, 1 reply; 24+ messages in thread
From: Richard Earnshaw @ 2012-05-01  8:52 UTC (permalink / raw)
  To: Michael Hope; +Cc: Carlos O'Donell, GCC Patches, cross-distro, libc-ports

On 30/04/12 22:47, Michael Hope wrote:
> On 1 May 2012 03:24, Richard Earnshaw <rearnsha@arm.com> wrote:
>> On 27/04/12 00:27, Michael Hope wrote:
>>> On 27 April 2012 08:20, Carlos O'Donell <carlos@systemhalted.org> wrote:
>>>> On Mon, Apr 23, 2012 at 5:36 PM, Michael Hope <michael.hope@linaro.org> wrote:
>>>>> 2012-04-24  Michael Hope  <michael.hope@linaro.org>
>>>>>            Richard Earnshaw  <rearnsha@arm.com>
>>>>>
>>>>>        * config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_SOFT_FLOAT): Define.
>>>>>        (GLIBC_DYNAMIC_LINKER_HARD_FLOAT): Define.
>>>>>        (GLIBC_DYNAMIC_LINKER_DEFAULT): Define.
>>>>>        (GLIBC_DYNAMIC_LINKER): Redefine to use the hard float path.
>>>>>
>>>>> diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
>>>>> index 80bd825..2ace6f0 100644
>>>>> --- a/gcc/config/arm/linux-eabi.h
>>>>> +++ b/gcc/config/arm/linux-eabi.h
>>>>> @@ -62,7 +62,17 @@
>>>>>  /* Use ld-linux.so.3 so that it will be possible to run "classic"
>>>>>    GNU/Linux binaries on an EABI system.  */
>>>>>  #undef  GLIBC_DYNAMIC_LINKER
>>>>> -#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
>>>>> +#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
>>>>> +#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
>>>>> +#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD
>>>>> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
>>>>> +#else
>>>>> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
>>>>> +#endif
>>>>> +#define GLIBC_DYNAMIC_LINKER \
>>>>> +   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
>>>>> +    %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
>>>>> +    %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
>>>>>
>>>>>  /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
>>>>>    use the GNU/Linux version, not the generic BPABI version.  */
>>>>
>>>> This patch is broken. Please fix this.
>>>>
>>>> You can't use a named enumeration in cpp equality.
>>>>
>>>> The type ARM_FLOAT_ABI_HARD is a named enumeration and evaluates to 0
>>>> as an unknown identifier.
>>>>
>>>> Therefore "#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD"
>>>> evaluates to "#if 0 == 0" and is always true.
>>>>
>>>> Watch out that "#define ARM_FLOAT_ABI_HARD ARM_FLOAT_ABI_HARD" for
>>>> such enums is not conforming C99/C11.
>>>>
>>>> I suggest you define the types as macros and then set the named enum
>>>> to those values, then use the macros in the header equality checks.
>>>>
>>>> e.g.
>>>> #define VAL1 0 then enum FOO { RVAL1 = VAL1, ... }
>>>>
>>>> Look at arm.h for the enum definition.
>>>
>>> I've looked further into this and I think the original pre-#if version
>>> is correct.
>>>
>>> The float ABI comes from these places:
>>>  * The -mfloat-abi= command line argument, else
>>>  * The --with-float= configure time argument, else
>>>  * TARGET_DEFAULT_FLOAT_ABI from linux-eabi.h
>>>
>>> In the first case the ABI is explicit.  In the second
>>> OPTION_DEFAULT_SPECS turns the configure time argument into an explict
>>> -mfloat-abi=.
>>>
>>> The patch below covers all cases, keeps the logic in the spec file,
>>> and adds a comment linking the two #defines.
>>>
>>> Tested by building with no configure flags, --wtih-float=softfp,
>>> --with-float=hard, and then running with all combinations of
>>> {,-mfloat-abi=softfp,-mfloat-abi=hard} {,-mglibc,-muclibc,-mbionic}.
>>>
>>> OK?
>>>
>>> -- Michael
>>>
>>> 2012-04-27  Michael Hope  <michael.hope@linaro.org>
>>>
>>>       * config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER): Pick the loader
>>>       using a spec rule.
>>>
>>
>> Michael,
>>
>> can you try this patch please.  It should make it possible to then
>> create linux-eabihf.h containing just
>>
>> #undef TARGET_DEFAULT_FLOAT_ABI
>> #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
>> #undef GLIBC_DYNAMIC_LINKER_DEFAULT
>> #define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
>>
>> Which is not quite as simple as leaving out the second re-define, but
>> pretty close.
> 
> Hi Richard.  Your patch tests just fine.  I like it.  You could change
> the spec rule to the newer if-elseif-else form but that's a nit.
> 
> -- Michael
> 

Great, thanks!  I've committed it as is.

R.

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-05-01  8:52             ` Richard Earnshaw
@ 2012-05-23  7:13               ` Andreas Jaeger
  2012-05-23  7:56                 ` Richard Earnshaw
  0 siblings, 1 reply; 24+ messages in thread
From: Andreas Jaeger @ 2012-05-23  7:13 UTC (permalink / raw)
  To: Richard Earnshaw
  Cc: Michael Hope, cross-distro, Carlos O'Donell, GCC Patches,
	libc-ports, Richard Guenther

On 05/01/2012 10:52 AM, Richard Earnshaw wrote:
> On 30/04/12 22:47, Michael Hope wrote:
>> On 1 May 2012 03:24, Richard Earnshaw<rearnsha@arm.com>  wrote:
>>> On 27/04/12 00:27, Michael Hope wrote:
>>>> On 27 April 2012 08:20, Carlos O'Donell<carlos@systemhalted.org>  wrote:
>>>>> On Mon, Apr 23, 2012 at 5:36 PM, Michael Hope<michael.hope@linaro.org>  wrote:
>>>>>> 2012-04-24  Michael Hope<michael.hope@linaro.org>
>>>>>>             Richard Earnshaw<rearnsha@arm.com>
>>>>>>
>>>>>>         * config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_SOFT_FLOAT): Define.
>>>>>>         (GLIBC_DYNAMIC_LINKER_HARD_FLOAT): Define.
>>>>>>         (GLIBC_DYNAMIC_LINKER_DEFAULT): Define.
>>>>>>         (GLIBC_DYNAMIC_LINKER): Redefine to use the hard float path.
>>>>>>
>>>>>> diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
>>>>>> index 80bd825..2ace6f0 100644
>>>>>> --- a/gcc/config/arm/linux-eabi.h
>>>>>> +++ b/gcc/config/arm/linux-eabi.h
>>>>>> @@ -62,7 +62,17 @@
>>>>>>   /* Use ld-linux.so.3 so that it will be possible to run "classic"
>>>>>>     GNU/Linux binaries on an EABI system.  */
>>>>>>   #undef  GLIBC_DYNAMIC_LINKER
>>>>>> -#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
>>>>>> +#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
>>>>>> +#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
>>>>>> +#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD
>>>>>> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
>>>>>> +#else
>>>>>> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
>>>>>> +#endif
>>>>>> +#define GLIBC_DYNAMIC_LINKER \
>>>>>> +   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
>>>>>> +    %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
>>>>>> +    %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
>>>>>>
>>>>>>   /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
>>>>>>     use the GNU/Linux version, not the generic BPABI version.  */
>>>>>
>>>>> This patch is broken. Please fix this.
>>>>>
>>>>> You can't use a named enumeration in cpp equality.
>>>>>
>>>>> The type ARM_FLOAT_ABI_HARD is a named enumeration and evaluates to 0
>>>>> as an unknown identifier.
>>>>>
>>>>> Therefore "#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD"
>>>>> evaluates to "#if 0 == 0" and is always true.
>>>>>
>>>>> Watch out that "#define ARM_FLOAT_ABI_HARD ARM_FLOAT_ABI_HARD" for
>>>>> such enums is not conforming C99/C11.
>>>>>
>>>>> I suggest you define the types as macros and then set the named enum
>>>>> to those values, then use the macros in the header equality checks.
>>>>>
>>>>> e.g.
>>>>> #define VAL1 0 then enum FOO { RVAL1 = VAL1, ... }
>>>>>
>>>>> Look at arm.h for the enum definition.
>>>>
>>>> I've looked further into this and I think the original pre-#if version
>>>> is correct.
>>>>
>>>> The float ABI comes from these places:
>>>>   * The -mfloat-abi= command line argument, else
>>>>   * The --with-float= configure time argument, else
>>>>   * TARGET_DEFAULT_FLOAT_ABI from linux-eabi.h
>>>>
>>>> In the first case the ABI is explicit.  In the second
>>>> OPTION_DEFAULT_SPECS turns the configure time argument into an explict
>>>> -mfloat-abi=.
>>>>
>>>> The patch below covers all cases, keeps the logic in the spec file,
>>>> and adds a comment linking the two #defines.
>>>>
>>>> Tested by building with no configure flags, --wtih-float=softfp,
>>>> --with-float=hard, and then running with all combinations of
>>>> {,-mfloat-abi=softfp,-mfloat-abi=hard} {,-mglibc,-muclibc,-mbionic}.
>>>>
>>>> OK?
>>>>
>>>> -- Michael
>>>>
>>>> 2012-04-27  Michael Hope<michael.hope@linaro.org>
>>>>
>>>>        * config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER): Pick the loader
>>>>        using a spec rule.
>>>>
>>>
>>> Michael,
>>>
>>> can you try this patch please.  It should make it possible to then
>>> create linux-eabihf.h containing just
>>>
>>> #undef TARGET_DEFAULT_FLOAT_ABI
>>> #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
>>> #undef GLIBC_DYNAMIC_LINKER_DEFAULT
>>> #define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
>>>
>>> Which is not quite as simple as leaving out the second re-define, but
>>> pretty close.
>>
>> Hi Richard.  Your patch tests just fine.  I like it.  You could change
>> the spec rule to the newer if-elseif-else form but that's a nit.
>>
>> -- Michael
>>
>
> Great, thanks!  I've committed it as is.

I suggest to add this also to the gcc 4.7 branch. Richard (Earnshaw), 
could you do take care of this, please?

Thanks,
Andreas
-- 
  Andreas Jaeger aj@{suse.com,opensuse.org} Twitter/Identica: jaegerandi
   SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
    GF: Jeff Hawn,Jennifer Guild,Felix Imendörffer,HRB16746 (AG Nürnberg)
     GPG fingerprint = 93A3 365E CE47 B889 DF7F  FED1 389A 563C C272 A126

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-05-23  7:13               ` Andreas Jaeger
@ 2012-05-23  7:56                 ` Richard Earnshaw
  2012-05-23  8:01                   ` Andreas Jaeger
  0 siblings, 1 reply; 24+ messages in thread
From: Richard Earnshaw @ 2012-05-23  7:56 UTC (permalink / raw)
  To: Andreas Jaeger
  Cc: Michael Hope, cross-distro, Carlos O'Donell, GCC Patches,
	libc-ports, Richard Guenther

On 23/05/12 08:12, Andreas Jaeger wrote:
> On 05/01/2012 10:52 AM, Richard Earnshaw wrote:
>> On 30/04/12 22:47, Michael Hope wrote:
>>> On 1 May 2012 03:24, Richard Earnshaw<rearnsha@arm.com>  wrote:
>>>> On 27/04/12 00:27, Michael Hope wrote:
>>>>> On 27 April 2012 08:20, Carlos O'Donell<carlos@systemhalted.org>  wrote:
>>>>>> On Mon, Apr 23, 2012 at 5:36 PM, Michael Hope<michael.hope@linaro.org>  wrote:
>>>>>>> 2012-04-24  Michael Hope<michael.hope@linaro.org>
>>>>>>>             Richard Earnshaw<rearnsha@arm.com>
>>>>>>>
>>>>>>>         * config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_SOFT_FLOAT): Define.
>>>>>>>         (GLIBC_DYNAMIC_LINKER_HARD_FLOAT): Define.
>>>>>>>         (GLIBC_DYNAMIC_LINKER_DEFAULT): Define.
>>>>>>>         (GLIBC_DYNAMIC_LINKER): Redefine to use the hard float path.
>>>>>>>
>>>>>>> diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
>>>>>>> index 80bd825..2ace6f0 100644
>>>>>>> --- a/gcc/config/arm/linux-eabi.h
>>>>>>> +++ b/gcc/config/arm/linux-eabi.h
>>>>>>> @@ -62,7 +62,17 @@
>>>>>>>   /* Use ld-linux.so.3 so that it will be possible to run "classic"
>>>>>>>     GNU/Linux binaries on an EABI system.  */
>>>>>>>   #undef  GLIBC_DYNAMIC_LINKER
>>>>>>> -#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
>>>>>>> +#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
>>>>>>> +#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
>>>>>>> +#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD
>>>>>>> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
>>>>>>> +#else
>>>>>>> +#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
>>>>>>> +#endif
>>>>>>> +#define GLIBC_DYNAMIC_LINKER \
>>>>>>> +   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
>>>>>>> +    %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
>>>>>>> +    %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
>>>>>>>
>>>>>>>   /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
>>>>>>>     use the GNU/Linux version, not the generic BPABI version.  */
>>>>>>
>>>>>> This patch is broken. Please fix this.
>>>>>>
>>>>>> You can't use a named enumeration in cpp equality.
>>>>>>
>>>>>> The type ARM_FLOAT_ABI_HARD is a named enumeration and evaluates to 0
>>>>>> as an unknown identifier.
>>>>>>
>>>>>> Therefore "#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD"
>>>>>> evaluates to "#if 0 == 0" and is always true.
>>>>>>
>>>>>> Watch out that "#define ARM_FLOAT_ABI_HARD ARM_FLOAT_ABI_HARD" for
>>>>>> such enums is not conforming C99/C11.
>>>>>>
>>>>>> I suggest you define the types as macros and then set the named enum
>>>>>> to those values, then use the macros in the header equality checks.
>>>>>>
>>>>>> e.g.
>>>>>> #define VAL1 0 then enum FOO { RVAL1 = VAL1, ... }
>>>>>>
>>>>>> Look at arm.h for the enum definition.
>>>>>
>>>>> I've looked further into this and I think the original pre-#if version
>>>>> is correct.
>>>>>
>>>>> The float ABI comes from these places:
>>>>>   * The -mfloat-abi= command line argument, else
>>>>>   * The --with-float= configure time argument, else
>>>>>   * TARGET_DEFAULT_FLOAT_ABI from linux-eabi.h
>>>>>
>>>>> In the first case the ABI is explicit.  In the second
>>>>> OPTION_DEFAULT_SPECS turns the configure time argument into an explict
>>>>> -mfloat-abi=.
>>>>>
>>>>> The patch below covers all cases, keeps the logic in the spec file,
>>>>> and adds a comment linking the two #defines.
>>>>>
>>>>> Tested by building with no configure flags, --wtih-float=softfp,
>>>>> --with-float=hard, and then running with all combinations of
>>>>> {,-mfloat-abi=softfp,-mfloat-abi=hard} {,-mglibc,-muclibc,-mbionic}.
>>>>>
>>>>> OK?
>>>>>
>>>>> -- Michael
>>>>>
>>>>> 2012-04-27  Michael Hope<michael.hope@linaro.org>
>>>>>
>>>>>        * config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER): Pick the loader
>>>>>        using a spec rule.
>>>>>
>>>>
>>>> Michael,
>>>>
>>>> can you try this patch please.  It should make it possible to then
>>>> create linux-eabihf.h containing just
>>>>
>>>> #undef TARGET_DEFAULT_FLOAT_ABI
>>>> #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
>>>> #undef GLIBC_DYNAMIC_LINKER_DEFAULT
>>>> #define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
>>>>
>>>> Which is not quite as simple as leaving out the second re-define, but
>>>> pretty close.
>>>
>>> Hi Richard.  Your patch tests just fine.  I like it.  You could change
>>> the spec rule to the newer if-elseif-else form but that's a nit.
>>>
>>> -- Michael
>>>
>>
>> Great, thanks!  I've committed it as is.
> 
> I suggest to add this also to the gcc 4.7 branch. Richard (Earnshaw), 
> could you do take care of this, please?

This is a behaviour change.  It would need RM approval for a release branch.

R.


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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-05-23  7:56                 ` Richard Earnshaw
@ 2012-05-23  8:01                   ` Andreas Jaeger
  2012-05-23  8:18                     ` Richard Guenther
  0 siblings, 1 reply; 24+ messages in thread
From: Andreas Jaeger @ 2012-05-23  8:01 UTC (permalink / raw)
  To: cross-distro
  Cc: Richard Earnshaw, Richard Guenther, Carlos O'Donell,
	GCC Patches, libc-ports

On Wednesday, May 23, 2012 09:56:31 Richard Earnshaw wrote:
> [...]
> This is a behaviour change.  It would need RM approval for a release
> branch.
> 
> R.

There was agreement by all pushing for the change to use it. So, let's ask 
the release managers about their opinion,

Andreas
-- 
 Andreas Jaeger aj@{suse.com,opensuse.org} Twitter/Identica: jaegerandi
  SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
   GF: Jeff Hawn,Jennifer Guild,Felix Imendörffer,HRB16746 (AG Nürnberg)
    GPG fingerprint = 93A3 365E CE47 B889 DF7F  FED1 389A 563C C272 A126

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-05-23  8:01                   ` Andreas Jaeger
@ 2012-05-23  8:18                     ` Richard Guenther
  2012-05-23 14:15                       ` Mike Frysinger
  2012-05-24 17:08                       ` Jakub Jelinek
  0 siblings, 2 replies; 24+ messages in thread
From: Richard Guenther @ 2012-05-23  8:18 UTC (permalink / raw)
  To: Andreas Jaeger
  Cc: cross-distro, Richard Earnshaw, Carlos O'Donell, GCC Patches,
	libc-ports

On Wed, 23 May 2012, Andreas Jaeger wrote:

> On Wednesday, May 23, 2012 09:56:31 Richard Earnshaw wrote:
> > [...]
> > This is a behaviour change.  It would need RM approval for a release
> > branch.
> > 
> > R.
> 
> There was agreement by all pushing for the change to use it. So, let's ask 
> the release managers about their opinion,

I'm ok with the change - but of course only to carry one less patch
in our local tree.  What do others think?  It would definitely (anyway)
need documenting in changes.html (for both 4.7.1 and 4.8).

Richard.

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-05-23  8:18                     ` Richard Guenther
@ 2012-05-23 14:15                       ` Mike Frysinger
  2012-05-23 21:12                         ` Michael Hope
  2012-05-24 17:08                       ` Jakub Jelinek
  1 sibling, 1 reply; 24+ messages in thread
From: Mike Frysinger @ 2012-05-23 14:15 UTC (permalink / raw)
  To: libc-ports
  Cc: Richard Guenther, Andreas Jaeger, cross-distro, Richard Earnshaw,
	Carlos O'Donell, GCC Patches

[-- Attachment #1: Type: Text/Plain, Size: 805 bytes --]

On Wednesday 23 May 2012 04:17:51 Richard Guenther wrote:
> On Wed, 23 May 2012, Andreas Jaeger wrote:
> > On Wednesday, May 23, 2012 09:56:31 Richard Earnshaw wrote:
> > > [...]
> > > This is a behaviour change.  It would need RM approval for a release
> > > branch.
> > > 
> > > R.
> > 
> > There was agreement by all pushing for the change to use it. So, let's
> > ask the release managers about their opinion,
> 
> I'm ok with the change - but of course only to carry one less patch
> in our local tree.  What do others think?  It would definitely (anyway)
> need documenting in changes.html (for both 4.7.1 and 4.8).

i've done this for Gentoo and 4.5.0+, so if all the distros are going to be 
doing this in 4.7.x anyways, makes sense to me to do it in the official branch.
-mike

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-05-23 14:15                       ` Mike Frysinger
@ 2012-05-23 21:12                         ` Michael Hope
  2012-05-24  4:08                           ` Mike Frysinger
  2012-05-24  8:15                           ` Andrew Haley
  0 siblings, 2 replies; 24+ messages in thread
From: Michael Hope @ 2012-05-23 21:12 UTC (permalink / raw)
  To: Mike Frysinger
  Cc: libc-ports, cross-distro, Richard Guenther, Richard Earnshaw,
	Carlos O'Donell, GCC Patches, Andreas Jaeger

On 24 May 2012 02:16, Mike Frysinger <vapier@gentoo.org> wrote:
> On Wednesday 23 May 2012 04:17:51 Richard Guenther wrote:
>> On Wed, 23 May 2012, Andreas Jaeger wrote:
>> > On Wednesday, May 23, 2012 09:56:31 Richard Earnshaw wrote:
>> > > [...]
>> > > This is a behaviour change.  It would need RM approval for a release
>> > > branch.
>> > >
>> > > R.
>> >
>> > There was agreement by all pushing for the change to use it. So, let's
>> > ask the release managers about their opinion,
>>
>> I'm ok with the change - but of course only to carry one less patch
>> in our local tree.  What do others think?  It would definitely (anyway)
>> need documenting in changes.html (for both 4.7.1 and 4.8).
>
> i've done this for Gentoo and 4.5.0+, so if all the distros are going to be
> doing this in 4.7.x anyways, makes sense to me to do it in the official branch.

Agreed.  Google have done it for their 4.6, Fedora have done it for
4.7 (?), and we've done it for Linaro GCC 4.6 and 4.7.

My concern is that a point release of GCC would stop working against
the latest release of GLIBC.

I'm happy to prepare a backport to GCC 4.6, GCC 4.7, and GLIBC 2.15 so
the next set of point releases will all work with each other.  This
would match what the distros are doing.

-- Michael

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-05-23 21:12                         ` Michael Hope
@ 2012-05-24  4:08                           ` Mike Frysinger
  2012-05-24  8:15                           ` Andrew Haley
  1 sibling, 0 replies; 24+ messages in thread
From: Mike Frysinger @ 2012-05-24  4:08 UTC (permalink / raw)
  To: Michael Hope
  Cc: libc-ports, cross-distro, Richard Guenther, Richard Earnshaw,
	Carlos O'Donell, GCC Patches, Andreas Jaeger

[-- Attachment #1: Type: Text/Plain, Size: 1668 bytes --]

On Wednesday 23 May 2012 17:11:53 Michael Hope wrote:
> On 24 May 2012 02:16, Mike Frysinger wrote:
> > On Wednesday 23 May 2012 04:17:51 Richard Guenther wrote:
> >> On Wed, 23 May 2012, Andreas Jaeger wrote:
> >> > On Wednesday, May 23, 2012 09:56:31 Richard Earnshaw wrote:
> >> > > [...]
> >> > > This is a behaviour change.  It would need RM approval for a release
> >> > > branch.
> >> > > 
> >> > > R.
> >> > 
> >> > There was agreement by all pushing for the change to use it. So, let's
> >> > ask the release managers about their opinion,
> >> 
> >> I'm ok with the change - but of course only to carry one less patch
> >> in our local tree.  What do others think?  It would definitely (anyway)
> >> need documenting in changes.html (for both 4.7.1 and 4.8).
> > 
> > i've done this for Gentoo and 4.5.0+, so if all the distros are going to
> > be doing this in 4.7.x anyways, makes sense to me to do it in the
> > official branch.
> 
> Agreed.  Google have done it for their 4.6, Fedora have done it for
> 4.7 (?), and we've done it for Linaro GCC 4.6 and 4.7.
> 
> My concern is that a point release of GCC would stop working against
> the latest release of GLIBC.
> 
> I'm happy to prepare a backport to GCC 4.6, GCC 4.7, and GLIBC 2.15 so
> the next set of point releases will all work with each other.  This
> would match what the distros are doing.

http://sources.gentoo.org/gentoo/src/patchsets/gcc/4.6.3/gentoo/33_all_armhf.patch
http://sources.gentoo.org/gentoo/src/patchsets/gcc/4.7.0/gentoo/33_all_armhf.patch
http://sources.gentoo.org/gentoo/src/patchsets/glibc/2.15/6226_all_arm-glibc-2.15-hardfp.patch
-mike

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-05-23 21:12                         ` Michael Hope
  2012-05-24  4:08                           ` Mike Frysinger
@ 2012-05-24  8:15                           ` Andrew Haley
  2012-05-25  0:27                             ` Mike Frysinger
  1 sibling, 1 reply; 24+ messages in thread
From: Andrew Haley @ 2012-05-24  8:15 UTC (permalink / raw)
  To: libc-ports

On 05/23/2012 10:11 PM, Michael Hope wrote:
> My concern is that a point release of GCC would stop working against
> the latest release of GLIBC.

Can't we put the compatibility symlink into the official glibc
codebase?

Andrew.

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-05-23  8:18                     ` Richard Guenther
  2012-05-23 14:15                       ` Mike Frysinger
@ 2012-05-24 17:08                       ` Jakub Jelinek
  1 sibling, 0 replies; 24+ messages in thread
From: Jakub Jelinek @ 2012-05-24 17:08 UTC (permalink / raw)
  To: Richard Guenther
  Cc: Andreas Jaeger, cross-distro, Richard Earnshaw,
	Carlos O'Donell, GCC Patches, libc-ports

On Wed, May 23, 2012 at 10:17:51AM +0200, Richard Guenther wrote:
> On Wed, 23 May 2012, Andreas Jaeger wrote:
> 
> > On Wednesday, May 23, 2012 09:56:31 Richard Earnshaw wrote:
> > > [...]
> > > This is a behaviour change.  It would need RM approval for a release
> > > branch.
> > > 
> > > R.
> > 
> > There was agreement by all pushing for the change to use it. So, let's ask 
> > the release managers about their opinion,
> 
> I'm ok with the change - but of course only to carry one less patch
> in our local tree.  What do others think?  It would definitely (anyway)
> need documenting in changes.html (for both 4.7.1 and 4.8).

I'm ok with that change as well (again, would apply that too), but note that
it isn't effortless on the side of gcc users, with the patch in they either
need recent enough glibc, or at least make a compatiblity symlink.

	Jakub

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-05-24  8:15                           ` Andrew Haley
@ 2012-05-25  0:27                             ` Mike Frysinger
  2012-05-25  8:24                               ` Andrew Haley
  0 siblings, 1 reply; 24+ messages in thread
From: Mike Frysinger @ 2012-05-25  0:27 UTC (permalink / raw)
  To: libc-ports; +Cc: Andrew Haley

[-- Attachment #1: Type: Text/Plain, Size: 628 bytes --]

On Thursday 24 May 2012 04:14:58 Andrew Haley wrote:
> On 05/23/2012 10:11 PM, Michael Hope wrote:
> > My concern is that a point release of GCC would stop working against
> > the latest release of GLIBC.
> 
> Can't we put the compatibility symlink into the official glibc
> codebase?

i don't think that makes much sense.  the old ldso name is the official 
EABI/softfp name.  that it was used by some people for EABI/hardfp is 
unfortunate, but the few that do want to support compatibility with that 
configuration should carry it themselves.  from glibc's PoV, we don't know when 
the compat is desired.
-mike

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

* Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
  2012-05-25  0:27                             ` Mike Frysinger
@ 2012-05-25  8:24                               ` Andrew Haley
  0 siblings, 0 replies; 24+ messages in thread
From: Andrew Haley @ 2012-05-25  8:24 UTC (permalink / raw)
  To: Mike Frysinger; +Cc: libc-ports

On 05/25/2012 01:28 AM, Mike Frysinger wrote:
> On Thursday 24 May 2012 04:14:58 Andrew Haley wrote:
>> On 05/23/2012 10:11 PM, Michael Hope wrote:
>>> My concern is that a point release of GCC would stop working against the latest release of GLIBC.
>> 
>> Can't we put the compatibility symlink into the official glibc codebase?
> 
> i don't think that makes much sense.  the old ldso name is the official EABI/softfp name.  that it was used by some people for EABI/hardfp is unfortunate, but the few that do want to support compatibility with that configuration should carry it themselves.

Fair enough.

Andrew.

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

end of thread, other threads:[~2012-05-25  8:24 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-22 22:20 [PATCH v2] ARM: Use different linker path for hardfloat ABI Michael Hope
2012-04-23 15:37 ` Richard Earnshaw
2012-04-23 21:37   ` Michael Hope
2012-04-24 13:32     ` Richard Earnshaw
2012-04-26 20:21     ` Carlos O'Donell
2012-04-26 23:27       ` Michael Hope
2012-04-30 15:24         ` Richard Earnshaw
2012-04-30 21:48           ` Michael Hope
2012-04-30 22:01             ` Jeff Law
2012-05-01  2:44               ` Michael Hope
2012-05-01  3:46                 ` Jeff Law
2012-05-01  8:52             ` Richard Earnshaw
2012-05-23  7:13               ` Andreas Jaeger
2012-05-23  7:56                 ` Richard Earnshaw
2012-05-23  8:01                   ` Andreas Jaeger
2012-05-23  8:18                     ` Richard Guenther
2012-05-23 14:15                       ` Mike Frysinger
2012-05-23 21:12                         ` Michael Hope
2012-05-24  4:08                           ` Mike Frysinger
2012-05-24  8:15                           ` Andrew Haley
2012-05-25  0:27                             ` Mike Frysinger
2012-05-25  8:24                               ` Andrew Haley
2012-05-24 17:08                       ` Jakub Jelinek
2012-04-23 19:58 ` Carlos O'Donell

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