fix ldso name for sh-nofpu subarch
authorRich Felker <dalias@aerifal.cx>
Fri, 24 Apr 2015 16:09:01 +0000 (12:09 -0400)
committerRich Felker <dalias@aerifal.cx>
Fri, 24 Apr 2015 17:05:21 +0000 (13:05 -0400)
previously it was using the same name as the default ABI with hard
float (floating point args and return value in registers).

the test __SH_FPU_ANY__ || __SH4__ matches what's used in the
configure script already, and seems correct under casual review
against gcc's config/sh.h, but may need tweaks. the logic for
predefined macros for sh, and what they all mean, is very complex.
eventually this should be documented in comments here.

configure already rejects "half-hard" configurations on sh where
double=float since these do not conform to Annex F and are not
suitable for musl, so these do not need to be considered here.

arch/sh/reloc.h

index 61192ffe766863fcd82596eb5673ad8c6df761a1..77da65080ed78f5dcfd74e5379805db96ce673c4 100644 (file)
@@ -6,7 +6,13 @@
 #define ENDIAN_SUFFIX ""
 #endif
 
-#define LDSO_ARCH "sh" ENDIAN_SUFFIX
+#if __SH_FPU_ANY__ || __SH4__
+#define FP_SUFFIX ""
+#else
+#define FP_SUFFIX "-nofpu"
+#endif
+
+#define LDSO_ARCH "sh" ENDIAN_SUFFIX FP_SUFFIX
 
 #define TPOFF_K 8