[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