On 20/04/15 21:29, Oleg Endo wrote: > On Mon, 2015-04-20 at 19:56 +0100, Szabolcs Nagy wrote: >> Set up dynamic linker name for sh. >> > > The SH parts are OK for trunk. >
Patch v2 It turns out we have to distinguish between hard float and nofpu ABI. I simply listed the options that turn on nofpu and hardfloat code generation (the single precision modes are not relevant to musl, currently musl only supports sh4 and up because it assumes either gusa or llsc atomics is available and requires an mmu, but I listed all the options for the nofpu check for completeness). gcc/Changelog: 2015-04-27 Gregor Richards <gregor.richa...@uwaterloo.ca> Szabolcs Nagy <szabolcs.n...@arm.com> * config/sh/linux.h (MUSL_DYNAMIC_LINKER): Define. (MUSL_DYNAMIC_LINKER_E, MUSL_DYNAMIC_LINKER_FP): Define.
diff --git a/gcc/config/sh/linux.h b/gcc/config/sh/linux.h index 0f5d614..4c167c6 100644 --- a/gcc/config/sh/linux.h +++ b/gcc/config/sh/linux.h @@ -43,6 +43,28 @@ along with GCC; see the file COPYING3. If not see #define TARGET_ASM_FILE_END file_end_indicate_exec_stack +#if TARGET_ENDIAN_DEFAULT == MASK_LITTLE_ENDIAN +#define MUSL_DYNAMIC_LINKER_E "%{mb:eb}" +#else +#define MUSL_DYNAMIC_LINKER_E "%{!ml:eb}" +#endif + +#if TARGET_CPU_DEFAULT & ( MASK_HARD_SH2A_DOUBLE | MASK_SH4 ) +/* "-nofpu" if any nofpu option is specified */ +#define MUSL_DYNAMIC_LINKER_FP \ + "%{m1|m2|m2a-nofpu|m3|m4-nofpu|m4-100-nofpu|m4-200-nofpu|m4-300-nofpu|" \ + "m4-340|m4-400|m4-500|m4al|m5-32media-nofpu|m5-64media-nofpu|" \ + "m5-compact-nofpu:-nofpu}" +#else +/* "-nofpu" if none of the hard fpu options are specified */ +#define MUSL_DYNAMIC_LINKER_FP \ + "%{m2a|m4|m4-100|m4-200|m4-300|m4a|m5-32media|m5-64media|m5-compact:;:-nofpu}" +#endif + +#undef MUSL_DYNAMIC_LINKER +#define MUSL_DYNAMIC_LINKER \ + "/lib/ld-musl-sh" MUSL_DYNAMIC_LINKER_E MUSL_DYNAMIC_LINKER_FP ".so.1" + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" #undef SUBTARGET_LINK_EMUL_SUFFIX