This is the mail archive of the
libc-ports@sources.redhat.com
mailing list for the libc-ports project.
Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
- From: Richard Earnshaw <rearnsha at arm dot com>
- To: Michael Hope <michael dot hope at linaro dot org>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, "cross-distro at lists dot linaro dot org" <cross-distro at lists dot linaro dot org>, "libc-ports at sourceware dot org" <libc-ports at sourceware dot org>
- Date: Mon, 23 Apr 2012 16:35:58 +0100
- Subject: Re: [PATCH v2] ARM: Use different linker path for hardfloat ABI
- References: <CANLjY-kZ6FakmtKkHjjC2YNgCBkydiNq8F81Fb7SgW0RE6iF5w@mail.gmail.com>
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.