svn commit: r245651 - in head/lib: libc/arm libc/arm/gen libcompiler_rt

Andrew Turner andrew at FreeBSD.org
Sat Jan 19 04:11:46 UTC 2013


Author: andrew
Date: Sat Jan 19 04:11:45 2013
New Revision: 245651
URL: http://svnweb.freebsd.org/changeset/base/245651

Log:
  Use the compiler-rt version __{u,}divsi3 and __{u,}modsi3 on ARM EABI

Added:
  head/lib/libc/arm/Symbol_oabi.map   (contents, props changed)
Modified:
  head/lib/libc/arm/Makefile.inc
  head/lib/libc/arm/Symbol.map
  head/lib/libc/arm/gen/Makefile.inc
  head/lib/libcompiler_rt/Makefile

Modified: head/lib/libc/arm/Makefile.inc
==============================================================================
--- head/lib/libc/arm/Makefile.inc	Sat Jan 19 04:03:18 2013	(r245650)
+++ head/lib/libc/arm/Makefile.inc	Sat Jan 19 04:11:45 2013	(r245651)
@@ -8,3 +8,9 @@ SOFTFLOAT_BITS=32
 # Long double is just double precision.
 MDSRCS+=machdep_ldisd.c
 SYM_MAPS+=${.CURDIR}/arm/Symbol.map
+
+.if ${MK_ARM_EABI} == "no"
+# This contains the symbols that were removed when moving to the ARM EABI
+SYM_MAPS+=${.CURDIR}/arm/Symbol_oabi.map
+.endif
+

Modified: head/lib/libc/arm/Symbol.map
==============================================================================
--- head/lib/libc/arm/Symbol.map	Sat Jan 19 04:03:18 2013	(r245650)
+++ head/lib/libc/arm/Symbol.map	Sat Jan 19 04:11:45 2013	(r245651)
@@ -46,10 +46,6 @@ FBSDprivate_1.0 {
 	_set_tp;
 	__aeabi_read_tp;
 	___longjmp;
-	__umodsi3;
-	__modsi3;
-	__udivsi3;
-	__divsi3;
 	__makecontext;
 	__longjmp;
 	signalcontext;

Added: head/lib/libc/arm/Symbol_oabi.map
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lib/libc/arm/Symbol_oabi.map	Sat Jan 19 04:11:45 2013	(r245651)
@@ -0,0 +1,16 @@
+/*
+ * $FreeBSD$
+ */
+
+/*
+ * This only needs to contain symbols that are not listed in
+ * symbol maps from other parts of libc (i.e., not found in
+ * stdlib/Symbol.map, string/Symbol.map, sys/Symbol.map, ...)
+ * and are not used in the ARM EABI.
+ */
+FBSDprivate_1.0 {
+	__umodsi3;
+	__modsi3;
+	__udivsi3;
+	__divsi3;
+};

Modified: head/lib/libc/arm/gen/Makefile.inc
==============================================================================
--- head/lib/libc/arm/gen/Makefile.inc	Sat Jan 19 04:03:18 2013	(r245650)
+++ head/lib/libc/arm/gen/Makefile.inc	Sat Jan 19 04:11:45 2013	(r245651)
@@ -3,4 +3,8 @@
 
 SRCS+=	_ctx_start.S _setjmp.S _set_tp.c alloca.S fabs.c \
 	getcontextx.c infinity.c ldexp.c makecontext.c \
-	__aeabi_read_tp.S setjmp.S signalcontext.c sigsetjmp.S divsi3.S flt_rounds.c
+	__aeabi_read_tp.S setjmp.S signalcontext.c sigsetjmp.S flt_rounds.c
+
+.if ${MK_ARM_EABI} == "no"
+SRCS+=	divsi3.S
+.endif

Modified: head/lib/libcompiler_rt/Makefile
==============================================================================
--- head/lib/libcompiler_rt/Makefile	Sat Jan 19 04:03:18 2013	(r245650)
+++ head/lib/libcompiler_rt/Makefile	Sat Jan 19 04:11:45 2013	(r245651)
@@ -136,18 +136,22 @@ SRCF+=	adddf3 \
 	addsf3 \
 	divdf3 \
 	divsf3 \
-	divsi3 \
 	extendsfdf2 \
 	fixdfsi \
 	fixsfsi \
 	floatsidf \
 	floatsisf \
-	modsi3 \
 	muldf3 \
 	mulsf3 \
 	subdf3 \
 	subsf3 \
-	truncdfsf2 \
+	truncdfsf2
+.endif
+
+.if ${MACHINE_CPUARCH} != "mips" && \
+    (${MACHINE_CPUARCH} != "arm" || ${MK_ARM_EABI} != "no")
+SRCF+=	divsi3 \
+	modsi3 \
 	udivsi3 \
 	umodsi3
 .endif


More information about the svn-src-head mailing list