[PATCH 7/13] powerpc musl support
Szabolcs Nagy
nsz@port70.net
Mon Aug 24 16:30:00 GMT 2015
* David Edelsohn <dje.gcc@gmail.com> [2015-08-24 10:21:05 -0400]:
> Patch v2.
>
> Powerpc does not include the top level linux.h, so I had to
> repeat the include order fixes from there in rs6000/sysv4.h.
>
> I corrected the endianness handling (the "le" suffix should
> be added correctly now).
>
> gcc/Changelog:
>
> 2015-04-24 Gregor Richards <gregor.richards@uwaterloo.ca>
> Szabolcs Nagy <szabolcs.nagy@arm.com>
>
> * config.gcc (secure_plt): Add *-linux*-musl*.
> * config/rs6000/linux64.h (MUSL_DYNAMIC_LINKER32): Define.
> (MUSL_DYNAMIC_LINKER64): Define.
> (GNU_USER_DYNAMIC_LINKER32): Update.
> (GNU_USER_DYNAMIC_LINKER64): Update.
> (CHOOSE_DYNAMIC_LINKER): Update.
>
> * config/rs6000/secureplt.h (LINK_SECURE_PLT_DEFAULT_SPEC): Define.
> * config/rs6000/sysv4.h (GNU_USER_DYNAMIC_LINKER): Update.
> (MUSL_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER_E,)
> (INCLUDE_DEFAULTS_MUSL_GPP, INCLUDE_DEFAULTS_MUSL_LOCAL,)
> (INCLUDE_DEFAULTS_MUSL_PREFIX, INCLUDE_DEFAULTS_MUSL_CROSS,)
> (INCLUDE_DEFAULTS_MUSL_TOOL, INCLUDE_DEFAULTS_MUSL_NATIVE): Define.
> (LINK_SECURE_PLT_DEFAULT_SPEC): Define.
> (CHOOSE_DYNAMIC_LINKER, LINK_TARGET_SPEC, LINK_OS_LINUX_SPEC): Update.
>
> * config/rs6000/sysv4le.h (MUSL_DYNAMIC_LINKER_E): Define.
>
> This patch is generally okay, but why all of the secure PLT changes?
>
i'm not sure.. i kept that from a previous version of the patch
musl dynamic linker only supports secure plt and it seems
gcc (configured with --enable-secureplt) does not pass
--secure-plt to ld, the ld manual says this flag is only
needed for non-pic code otherwise it will figure out the
plt abi, so it is probably not needed. i will check.
> /* Override the default target of the linker. */
> #define LINK_TARGET_SPEC \
> - ENDIAN_SELECT("", " --oformat elf32-powerpcle", "")
> + ENDIAN_SELECT("", " --oformat elf32-powerpcle", "") \
> + "%{!mbss-plt: %{!msecure-plt: %(link_secure_plt_default)}}"
>
> elf32-powerpcle is not defined and does not exist. The original
> change in sysv4.h seems to be an errant search-and-replace error.
>
ok so that line should be removed.
meanwhile i found another bug in my patch:
soft float abi is different so it needs a different dynamic
linker name for musl. this is problematic because i don't
see an easy way to determine if the target is soft-float.
(i will probably have to have a long list of cpu types and
handle -msoft-float, -mhard-float too which will be ugly in
the link spec syntax).
thanks for the review.
More information about the Gcc-patches
mailing list