diff options
author | andrew <andrew@FreeBSD.org> | 2013-01-19 04:11:45 +0000 |
---|---|---|
committer | andrew <andrew@FreeBSD.org> | 2013-01-19 04:11:45 +0000 |
commit | 3600c83b820e00959d61600e67e9dcb32ef6b518 (patch) | |
tree | d5e36a7927de79aefe8a3e54aab56174913a7fc4 | |
parent | 109e426da134da0aa0a02bfa0f7bc2c02de562df (diff) | |
download | FreeBSD-src-3600c83b820e00959d61600e67e9dcb32ef6b518.zip FreeBSD-src-3600c83b820e00959d61600e67e9dcb32ef6b518.tar.gz |
Use the compiler-rt version __{u,}divsi3 and __{u,}modsi3 on ARM EABI
-rw-r--r-- | lib/libc/arm/Makefile.inc | 6 | ||||
-rw-r--r-- | lib/libc/arm/Symbol.map | 4 | ||||
-rw-r--r-- | lib/libc/arm/Symbol_oabi.map | 16 | ||||
-rw-r--r-- | lib/libc/arm/gen/Makefile.inc | 6 | ||||
-rw-r--r-- | lib/libcompiler_rt/Makefile | 10 |
5 files changed, 34 insertions, 8 deletions
diff --git a/lib/libc/arm/Makefile.inc b/lib/libc/arm/Makefile.inc index 4c72e56..dafc8d6 100644 --- a/lib/libc/arm/Makefile.inc +++ b/lib/libc/arm/Makefile.inc @@ -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 + diff --git a/lib/libc/arm/Symbol.map b/lib/libc/arm/Symbol.map index 48f6747..1c83b0a 100644 --- a/lib/libc/arm/Symbol.map +++ b/lib/libc/arm/Symbol.map @@ -46,10 +46,6 @@ FBSDprivate_1.0 { _set_tp; __aeabi_read_tp; ___longjmp; - __umodsi3; - __modsi3; - __udivsi3; - __divsi3; __makecontext; __longjmp; signalcontext; diff --git a/lib/libc/arm/Symbol_oabi.map b/lib/libc/arm/Symbol_oabi.map new file mode 100644 index 0000000..0c22e4a --- /dev/null +++ b/lib/libc/arm/Symbol_oabi.map @@ -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; +}; diff --git a/lib/libc/arm/gen/Makefile.inc b/lib/libc/arm/gen/Makefile.inc index a78cbb9..ec36d45 100644 --- a/lib/libc/arm/gen/Makefile.inc +++ b/lib/libc/arm/gen/Makefile.inc @@ -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 diff --git a/lib/libcompiler_rt/Makefile b/lib/libcompiler_rt/Makefile index 44df5e0..26ce4f7a 100644 --- a/lib/libcompiler_rt/Makefile +++ b/lib/libcompiler_rt/Makefile @@ -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 |