Add ARM EABI runtime aliases to the GCC runtime functions that we include
authorkettenis <kettenis@openbsd.org>
Tue, 26 Dec 2017 15:11:17 +0000 (15:11 +0000)
committerkettenis <kettenis@openbsd.org>
Tue, 26 Dec 2017 15:11:17 +0000 (15:11 +0000)
in libc.

ok patrick@, jsg@, guenther@

lib/libc/arch/arm/Symbols.list
lib/libc/arch/arm/gen/divsi3.S
lib/libc/quad/fixdfdi.c
lib/libc/quad/fixsfdi.c
lib/libc/quad/fixunsdfdi.c
lib/libc/quad/fixunssfdi.c
lib/libc/quad/floatdidf.c
lib/libc/quad/floatdisf.c
lib/libc/shlib_version
lib/libc/softfloat/softfloat-for-gcc.h

index 2c79e9b..bd7e8cb 100644 (file)
@@ -58,6 +58,32 @@ frexpl
 ldexpl
 modfl
 
+/* EABI */
+__aeabi_idiv
+__aeabi_idivmod
+__aeabi_uidiv
+__aeabi_uidivmod
+
+/* EABI softfloat */
+__aeabi_d2f
+__aeabi_d2iz
+__aeabi_d2lz
+__aeabi_dadd
+__aeabi_ddiv
+__aeabi_dmul
+__aeabi_dsub
+__aeabi_f2d
+__aeabi_f2iz
+__aeabi_f2lz
+__aeabi_fadd
+__aeabi_fdiv
+__aeabi_fmul
+__aeabi_fsub
+__aeabi_i2d
+__aeabi_i2f
+__aeabi_l2d
+__aeabi_l2f
+
 /* dlfcn */
 dl_unwind_find_exidx
 __gnu_Unwind_Find_exidx
index ad14f80..a95dbda 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: divsi3.S,v 1.3 2016/08/06 19:16:09 guenther Exp $     */
+/*     $OpenBSD: divsi3.S,v 1.4 2017/12/26 15:11:17 kettenis Exp $     */
 /*     $NetBSD: divsi3.S,v 1.5 2003/04/05 23:08:51 bjh21 Exp $ */
 
 /*
@@ -385,3 +385,8 @@ ENTRY(__divsi3)
        addhs   r3, r3, r2
        mov     r0, r3
        mov     pc, lr
+
+STRONG_ALIAS(__aeabi_idiv, __divsi3)
+STRONG_ALIAS(__aeabi_idivmod, __divsi3)
+STRONG_ALIAS(__aeabi_uidiv, __udivsi3)
+STRONG_ALIAS(__aeabi_uidivmod, __udivsi3)
index 861cf35..f389242 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: fixdfdi.c,v 1.5 2005/08/08 08:05:35 espie Exp $ */
+/*     $OpenBSD: fixdfdi.c,v 1.6 2017/12/26 15:11:17 kettenis Exp $ */
 /*-
  * Copyright (c) 1992, 1993
  *     The Regents of the University of California.  All rights reserved.
@@ -52,3 +52,7 @@ __fixdfdi(double x)
                else
                        return ((quad_t)(u_quad_t)x);
 }
+
+#ifdef __ARM_EABI__
+__strong_alias(__aeabi_d2lz, __fixdfdi);
+#endif
index fb28d46..d8b4f96 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: fixsfdi.c,v 1.6 2005/08/08 08:05:35 espie Exp $ */
+/*     $OpenBSD: fixsfdi.c,v 1.7 2017/12/26 15:11:17 kettenis Exp $ */
 /*-
  * Copyright (c) 1992 The Regents of the University of California.
  * All rights reserved.
@@ -54,3 +54,7 @@ __fixsfdi(float x)
                else
                        return ((quad_t)(u_quad_t)x);
 }
+
+#ifdef __ARM_EABI__
+__strong_alias(__aeabi_f2lz, __fixsfdi);
+#endif
index ed04c13..21cea67 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: fixunsdfdi.c,v 1.7 2005/08/08 08:05:35 espie Exp $ */
+/*     $OpenBSD: fixunsdfdi.c,v 1.8 2017/12/26 15:11:17 kettenis Exp $ */
 /*-
  * Copyright (c) 1992, 1993
  *     The Regents of the University of California.  All rights reserved.
@@ -70,3 +70,7 @@ __fixunsdfdi(double x)
        t.ul[H] = tmp;
        return (t.uq);
 }
+
+#ifdef __ARM_EABI__
+__strong_alias(__aeabi_d2ulz, __fixunsdfdi);
+#endif
index 359779e..bc75c6d 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: fixunssfdi.c,v 1.5 2005/08/08 08:05:35 espie Exp $ */
+/*     $OpenBSD: fixunssfdi.c,v 1.6 2017/12/26 15:11:17 kettenis Exp $ */
 /*-
  * Copyright (c) 1992, 1993
  *     The Regents of the University of California.  All rights reserved.
@@ -91,3 +91,7 @@ __fixunssfdi(float f)
        t.ul[L] = (u_int)x;
        return (t.uq);
 }
+
+#ifdef __ARM_EABI__
+__strong_alias(__aeabi_f2ulz, __fixunssfdi);
+#endif
index 5cdc839..2b9beb0 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: floatdidf.c,v 1.6 2005/08/08 08:05:35 espie Exp $ */
+/*     $OpenBSD: floatdidf.c,v 1.7 2017/12/26 15:11:17 kettenis Exp $ */
 /*-
  * Copyright (c) 1992, 1993
  *     The Regents of the University of California.  All rights reserved.
@@ -64,3 +64,7 @@ __floatdidf(quad_t x)
 
        return (neg ? -d : d);
 }
+
+#ifdef __ARM_EABI__
+__strong_alias(__aeabi_l2d, __floatdidf);
+#endif
index 6134787..1e6726b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: floatdisf.c,v 1.6 2005/08/08 08:05:35 espie Exp $ */
+/*     $OpenBSD: floatdisf.c,v 1.7 2017/12/26 15:11:17 kettenis Exp $ */
 /*-
  * Copyright (c) 1992, 1993
  *     The Regents of the University of California.  All rights reserved.
@@ -66,3 +66,7 @@ __floatdisf(quad_t x)
 
        return (neg ? -f : f);
 }
+
+#ifdef __ARM_EABI__
+__strong_alias(__aeabi_l2f, __floatdisf);
+#endif
index 858859a..06e36d2 100644 (file)
@@ -1,4 +1,4 @@
 major=92
-minor=1
+minor=2
 # note: If changes were made to include/thread_private.h or if system
 # calls were added/changed then librthread/shlib_version also be updated.
index 3162626..22bfcad 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: softfloat-for-gcc.h,v 1.1 2006/11/06 15:11:37 drahn Exp $     */
+/*     $OpenBSD: softfloat-for-gcc.h,v 1.2 2017/12/26 15:11:17 kettenis Exp $  */
 /* $NetBSD: softfloat-for-gcc.h,v 1.6 2003/07/26 19:24:51 salo Exp $ */
 
 /*
 #define float32_to_float64             __extendsfdf2
 #define float64_to_float32             __truncdfsf2
 
+#ifdef __ARM_EABI__
+__strong_alias(__aeabi_fadd, __addsf3);
+__strong_alias(__aeabi_dadd, __adddf3);
+__strong_alias(__aeabi_fsub, __subsf3);
+__strong_alias(__aeabi_dsub, __subdf3);
+__strong_alias(__aeabi_fmul, __mulsf3);
+__strong_alias(__aeabi_dmul, __muldf3);
+__strong_alias(__aeabi_fdiv, __divsf3);
+__strong_alias(__aeabi_ddiv, __divdf3);
+__strong_alias(__aeabi_i2f, __floatsisf);
+__strong_alias(__aeabi_i2d, __floatsidf);
+__strong_alias(__aeabi_l2f, __floatdisf);
+__strong_alias(__aeabi_l2d, __floatdidf);
+__strong_alias(__aeabi_f2iz, __fixsfsi);
+__strong_alias(__aeabi_d2iz, __fixdfsi);
+__strong_alias(__aeabi_f2lz, __fixsfdi);
+__strong_alias(__aeabi_d2lz, __fixdfdi);
+__strong_alias(__aeabi_f2uiz, __fixunssfsi);
+__strong_alias(__aeabi_d2uiz, __fixunsdfsi);
+__strong_alias(__aeabi_f2d, __extendsfdf2);
+__strong_alias(__aeabi_d2f, __truncdfsf2);
+#endif