Index: lib/builtins/adddf3.c =================================================================== --- lib/builtins/adddf3.c +++ lib/builtins/adddf3.c @@ -19,9 +19,10 @@ return __addXf3__(a, b); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI double __aeabi_dadd(double a, double b) { return __adddf3(a, b); } +#else +ARM_EABI_FNALIAS(__aeabi_dadd, __adddf3) #endif - Index: lib/builtins/addsf3.c =================================================================== --- lib/builtins/addsf3.c +++ lib/builtins/addsf3.c @@ -19,9 +19,10 @@ return __addXf3__(a, b); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI float __aeabi_fadd(float a, float b) { return __addsf3(a, b); } +#else +ARM_EABI_FNALIAS(__aeabi_fadd, __addsf3) #endif - Index: lib/builtins/ashldi3.c =================================================================== --- lib/builtins/ashldi3.c +++ lib/builtins/ashldi3.c @@ -40,9 +40,4 @@ return result.all; } -#if defined(__ARM_EABI__) -AEABI_RTABI di_int __aeabi_llsl(di_int a, si_int b) { - return __ashldi3(a, b); -} -#endif - +ARM_EABI_FNALIAS(__aeabi_llsl, __ashldi3) Index: lib/builtins/ashrdi3.c =================================================================== --- lib/builtins/ashrdi3.c +++ lib/builtins/ashrdi3.c @@ -41,9 +41,4 @@ return result.all; } -#if defined(__ARM_EABI__) -AEABI_RTABI di_int __aeabi_lasr(di_int a, si_int b) { - return __ashrdi3(a, b); -} -#endif - +ARM_EABI_FNALIAS(__aeabi_lasr, __ashrdi3) Index: lib/builtins/comparedf2.c =================================================================== --- lib/builtins/comparedf2.c +++ lib/builtins/comparedf2.c @@ -142,9 +142,10 @@ return __gedf2(a, b); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI int __aeabi_dcmpun(fp_t a, fp_t b) { return __unorddf2(a, b); } +#else +ARM_EABI_FNALIAS(__aeabi_dcmpun, __unorddf2) #endif - Index: lib/builtins/comparesf2.c =================================================================== --- lib/builtins/comparesf2.c +++ lib/builtins/comparesf2.c @@ -142,9 +142,11 @@ return __gesf2(a, b); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI int __aeabi_fcmpun(fp_t a, fp_t b) { return __unordsf2(a, b); } +#else +ARM_EABI_FNALIAS(__aeabi_fcmpun, __unordsf2) #endif Index: lib/builtins/divdf3.c =================================================================== --- lib/builtins/divdf3.c +++ lib/builtins/divdf3.c @@ -182,9 +182,10 @@ } } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI fp_t __aeabi_ddiv(fp_t a, fp_t b) { return __divdf3(a, b); } +#else +ARM_EABI_FNALIAS(__aeabi_ddiv, __divdf3) #endif - Index: lib/builtins/divsf3.c =================================================================== --- lib/builtins/divsf3.c +++ lib/builtins/divsf3.c @@ -166,9 +166,10 @@ } } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI fp_t __aeabi_fdiv(fp_t a, fp_t b) { return __divsf3(a, b); } +#else +ARM_EABI_FNALIAS(__aeabi_fdiv, __divsf3) #endif - Index: lib/builtins/divsi3.c =================================================================== --- lib/builtins/divsi3.c +++ lib/builtins/divsi3.c @@ -34,9 +34,4 @@ return ((su_int)a/(su_int)b ^ s_a) - s_a; /* negate if s_a == -1 */ } -#if defined(__ARM_EABI__) -AEABI_RTABI si_int __aeabi_idiv(si_int a, si_int b) { - return __divsi3(a, b); -} -#endif - +ARM_EABI_FNALIAS(__aeabi_idiv, __divsi3) Index: lib/builtins/extendhfsf2.c =================================================================== --- lib/builtins/extendhfsf2.c +++ lib/builtins/extendhfsf2.c @@ -22,9 +22,10 @@ return __extendhfsf2(a); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI float __aeabi_h2f(uint16_t a) { return __extendhfsf2(a); } +#else +ARM_EABI_FNALIAS(__aeabi_h2f, __extendhfsf2) #endif - Index: lib/builtins/extendsfdf2.c =================================================================== --- lib/builtins/extendsfdf2.c +++ lib/builtins/extendsfdf2.c @@ -16,9 +16,11 @@ return __extendXfYf2__(a); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI double __aeabi_f2d(float a) { return __extendsfdf2(a); } +#else +ARM_EABI_FNALIAS(__aeabi_f2d, __extendsfdf2) #endif Index: lib/builtins/fixdfdi.c =================================================================== --- lib/builtins/fixdfdi.c +++ lib/builtins/fixdfdi.c @@ -44,14 +44,11 @@ #endif -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI di_int -#if defined(__SOFT_FP__) __aeabi_d2lz(fp_t a) { -#else -__aeabi_d2lz(double a) { -#endif return __fixdfdi(a); } +#else +ARM_EABI_FNALIAS(__aeabi_d2lz, __fixdfdi) #endif - Index: lib/builtins/fixdfsi.c =================================================================== --- lib/builtins/fixdfsi.c +++ lib/builtins/fixdfsi.c @@ -19,9 +19,11 @@ return __fixint(a); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI si_int __aeabi_d2iz(fp_t a) { return __fixdfsi(a); } +#else +ARM_EABI_FNALIAS(__aeabi_d2iz, __fixdfsi) #endif Index: lib/builtins/fixsfdi.c =================================================================== --- lib/builtins/fixsfdi.c +++ lib/builtins/fixsfdi.c @@ -44,14 +44,11 @@ #endif -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI di_int -#if defined(__SOFT_FP__) __aeabi_f2lz(fp_t a) { -#else -__aeabi_f2lz(float a) { -#endif return __fixsfdi(a); } +#else +ARM_EABI_FNALIAS(__aeabi_f2lz, __fixsfdi) #endif - Index: lib/builtins/fixsfsi.c =================================================================== --- lib/builtins/fixsfsi.c +++ lib/builtins/fixsfsi.c @@ -19,9 +19,11 @@ return __fixint(a); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI si_int __aeabi_f2iz(fp_t a) { return __fixsfsi(a); } +#else +ARM_EABI_FNALIAS(__aeabi_f2iz, __fixsfsi) #endif Index: lib/builtins/fixunsdfdi.c =================================================================== --- lib/builtins/fixunsdfdi.c +++ lib/builtins/fixunsdfdi.c @@ -41,14 +41,11 @@ #endif -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI du_int -#if defined(__SOFT_FP__) __aeabi_d2ulz(fp_t a) { -#else -__aeabi_d2ulz(double a) { -#endif return __fixunsdfdi(a); } +#else +ARM_EABI_FNALIAS(__aeabi_d2ulz, __fixunsdfdi) #endif - Index: lib/builtins/fixunsdfsi.c =================================================================== --- lib/builtins/fixunsdfsi.c +++ lib/builtins/fixunsdfsi.c @@ -18,9 +18,10 @@ return __fixuint(a); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI su_int __aeabi_d2uiz(fp_t a) { return __fixunsdfsi(a); } +#else +ARM_EABI_FNALIAS(__aeabi_d2uiz, __fixunsdfsi) #endif - Index: lib/builtins/fixunssfdi.c =================================================================== --- lib/builtins/fixunssfdi.c +++ lib/builtins/fixunssfdi.c @@ -42,14 +42,11 @@ #endif -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI du_int -#if defined(__SOFT_FP__) __aeabi_f2ulz(fp_t a) { -#else -__aeabi_f2ulz(float a) { -#endif return __fixunssfdi(a); } +#else +ARM_EABI_FNALIAS(__aeabi_f2ulz, __fixunssfdi) #endif - Index: lib/builtins/fixunssfsi.c =================================================================== --- lib/builtins/fixunssfsi.c +++ lib/builtins/fixunssfsi.c @@ -22,9 +22,10 @@ return __fixuint(a); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI su_int __aeabi_f2uiz(fp_t a) { return __fixunssfsi(a); } +#else +ARM_EABI_FNALIAS(__aeabi_f2uiz, __fixunssfsi) #endif - Index: lib/builtins/floatdidf.c =================================================================== --- lib/builtins/floatdidf.c +++ lib/builtins/floatdidf.c @@ -104,9 +104,10 @@ } #endif -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI double __aeabi_l2d(di_int a) { return __floatdidf(a); } +#else +ARM_EABI_FNALIAS(__aeabi_l2d, __floatdidf) #endif - Index: lib/builtins/floatdisf.c =================================================================== --- lib/builtins/floatdisf.c +++ lib/builtins/floatdisf.c @@ -77,9 +77,10 @@ return fb.f; } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI float __aeabi_l2f(di_int a) { return __floatdisf(a); } +#else +ARM_EABI_FNALIAS(__aeabi_l2f, __floatdisf) #endif - Index: lib/builtins/floatsidf.c =================================================================== --- lib/builtins/floatsidf.c +++ lib/builtins/floatsidf.c @@ -50,9 +50,11 @@ return fromRep(result | sign); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI fp_t __aeabi_i2d(int a) { return __floatsidf(a); } +#else +ARM_EABI_FNALIAS(__aeabi_i2d, __floatsidf) #endif Index: lib/builtins/floatsisf.c =================================================================== --- lib/builtins/floatsisf.c +++ lib/builtins/floatsisf.c @@ -56,9 +56,10 @@ return fromRep(result | sign); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI fp_t __aeabi_i2f(int a) { return __floatsisf(a); } +#else +ARM_EABI_FNALIAS(__aeabi_i2f, __floatsisf) #endif - Index: lib/builtins/floatundidf.c =================================================================== --- lib/builtins/floatundidf.c +++ lib/builtins/floatundidf.c @@ -103,9 +103,11 @@ } #endif -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI double __aeabi_ul2d(du_int a) { return __floatundidf(a); } +#else +ARM_EABI_FNALIAS(__aeabi_ul2d, __floatundidf) #endif Index: lib/builtins/floatundisf.c =================================================================== --- lib/builtins/floatundisf.c +++ lib/builtins/floatundisf.c @@ -74,9 +74,11 @@ return fb.f; } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI float __aeabi_ul2f(du_int a) { return __floatundisf(a); } +#else +ARM_EABI_FNALIAS(__aeabi_ul2f, __floatundisf) #endif Index: lib/builtins/floatunsidf.c =================================================================== --- lib/builtins/floatunsidf.c +++ lib/builtins/floatunsidf.c @@ -39,9 +39,11 @@ return fromRep(result); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI fp_t __aeabi_ui2d(unsigned int a) { return __floatunsidf(a); } +#else +ARM_EABI_FNALIAS(__aeabi_ui2d, __floatunsidf) #endif Index: lib/builtins/floatunsisf.c =================================================================== --- lib/builtins/floatunsisf.c +++ lib/builtins/floatunsisf.c @@ -47,9 +47,11 @@ return fromRep(result); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI fp_t __aeabi_ui2f(unsigned int a) { return __floatunsisf(a); } +#else +ARM_EABI_FNALIAS(__aeabi_ui2f, __floatunsisf) #endif Index: lib/builtins/int_lib.h =================================================================== --- lib/builtins/int_lib.h +++ lib/builtins/int_lib.h @@ -30,12 +30,15 @@ /* ABI macro definitions */ #if __ARM_EABI__ +# define ARM_EABI_FNALIAS(aeabi_name, name) \ + void aeabi_name() __attribute__((alias(#name))); # ifdef COMPILER_RT_ARMHF_TARGET # define COMPILER_RT_ABI # else # define COMPILER_RT_ABI __attribute__((__pcs__("aapcs"))) # endif #else +# define ARM_EABI_FNALIAS(aeabi_name, name) # define COMPILER_RT_ABI #endif Index: lib/builtins/lshrdi3.c =================================================================== --- lib/builtins/lshrdi3.c +++ lib/builtins/lshrdi3.c @@ -40,9 +40,4 @@ return result.all; } -#if defined(__ARM_EABI__) -AEABI_RTABI di_int __aeabi_llsr(di_int a, si_int b) { - return __lshrdi3(a, b); -} -#endif - +ARM_EABI_FNALIAS(__aeabi_llsr, __lshrdi3) Index: lib/builtins/muldf3.c =================================================================== --- lib/builtins/muldf3.c +++ lib/builtins/muldf3.c @@ -19,9 +19,11 @@ return __mulXf3__(a, b); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI fp_t __aeabi_dmul(fp_t a, fp_t b) { return __muldf3(a, b); } +#else +ARM_EABI_FNALIAS(__aeabi_dmul, __muldf3) #endif Index: lib/builtins/muldi3.c =================================================================== --- lib/builtins/muldi3.c +++ lib/builtins/muldi3.c @@ -53,9 +53,4 @@ return r.all; } -#if defined(__ARM_EABI__) -AEABI_RTABI di_int __aeabi_lmul(di_int a, di_int b) { - return __muldi3(a, b); -} -#endif - +ARM_EABI_FNALIAS(__aeabi_lmul, __muldi3) Index: lib/builtins/mulsf3.c =================================================================== --- lib/builtins/mulsf3.c +++ lib/builtins/mulsf3.c @@ -19,9 +19,11 @@ return __mulXf3__(a, b); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI fp_t __aeabi_fmul(fp_t a, fp_t b) { return __mulsf3(a, b); } +#else +ARM_EABI_FNALIAS(__aeabi_fmul, __mulsf3) #endif Index: lib/builtins/negdf2.c =================================================================== --- lib/builtins/negdf2.c +++ lib/builtins/negdf2.c @@ -19,9 +19,11 @@ return fromRep(toRep(a) ^ signBit); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI fp_t __aeabi_dneg(fp_t a) { return __negdf2(a); } +#else +ARM_EABI_FNALIAS(__aeabi_dneg, __negdf2) #endif Index: lib/builtins/negsf2.c =================================================================== --- lib/builtins/negsf2.c +++ lib/builtins/negsf2.c @@ -19,9 +19,11 @@ return fromRep(toRep(a) ^ signBit); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI fp_t __aeabi_fneg(fp_t a) { return __negsf2(a); } +#else +ARM_EABI_FNALIAS(__aeabi_fneg, __negsf2) #endif Index: lib/builtins/subdf3.c =================================================================== --- lib/builtins/subdf3.c +++ lib/builtins/subdf3.c @@ -21,9 +21,11 @@ return __adddf3(a, fromRep(toRep(b) ^ signBit)); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI fp_t __aeabi_dsub(fp_t a, fp_t b) { return __subdf3(a, b); } +#else +ARM_EABI_FNALIAS(__aeabi_dsub, __subdf3) #endif Index: lib/builtins/subsf3.c =================================================================== --- lib/builtins/subsf3.c +++ lib/builtins/subsf3.c @@ -21,9 +21,11 @@ return __addsf3(a, fromRep(toRep(b) ^ signBit)); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI fp_t __aeabi_fsub(fp_t a, fp_t b) { return __subsf3(a, b); } +#else +ARM_EABI_FNALIAS(__aeabi_fsub, __subsf3) #endif Index: lib/builtins/truncdfhf2.c =================================================================== --- lib/builtins/truncdfhf2.c +++ lib/builtins/truncdfhf2.c @@ -15,9 +15,11 @@ return __truncXfYf2__(a); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI uint16_t __aeabi_d2h(double a) { return __truncdfhf2(a); } +#else +ARM_EABI_FNALIAS(__aeabi_d2h, __truncdfhf2) #endif Index: lib/builtins/truncdfsf2.c =================================================================== --- lib/builtins/truncdfsf2.c +++ lib/builtins/truncdfsf2.c @@ -15,9 +15,11 @@ return __truncXfYf2__(a); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI float __aeabi_d2f(double a) { return __truncdfsf2(a); } +#else +ARM_EABI_FNALIAS(__aeabi_d2f, __truncdfsf2) #endif Index: lib/builtins/truncsfhf2.c =================================================================== --- lib/builtins/truncsfhf2.c +++ lib/builtins/truncsfhf2.c @@ -21,9 +21,10 @@ return __truncsfhf2(a); } -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) && defined(COMPILER_RT_ARMHF_TARGET) AEABI_RTABI uint16_t __aeabi_f2h(float a) { return __truncsfhf2(a); } +#else +ARM_EABI_FNALIAS(__aeabi_f2h, __truncsfhf2) #endif - Index: lib/builtins/udivsi3.c =================================================================== --- lib/builtins/udivsi3.c +++ lib/builtins/udivsi3.c @@ -63,9 +63,4 @@ return q; } -#if defined(__ARM_EABI__) -AEABI_RTABI su_int __aeabi_uidiv(su_int n, su_int d) { - return __udivsi3(n, d); -} -#endif - +ARM_EABI_FNALIAS(__aeabi_uidiv, __udivsi3)