summaryrefslogtreecommitdiffstats
path: root/libgcc
diff options
context:
space:
mode:
authorgjl <gjl@138bc75d-0d04-0410-961f-82ee72b054a4>2012-09-05 08:47:50 +0000
committergjl <gjl@138bc75d-0d04-0410-961f-82ee72b054a4>2012-09-05 08:47:50 +0000
commitfd28e216af180749a1b733a72218754ecc1b25d6 (patch)
tree9f336c5bfcd0b1ffef11bb616b7591f8823a8ed2 /libgcc
parentb27bfb9678863d0870d13120e6c0c50b2290ce4c (diff)
downloadppe42-gcc-fd28e216af180749a1b733a72218754ecc1b25d6.tar.gz
ppe42-gcc-fd28e216af180749a1b733a72218754ecc1b25d6.zip
PR target/54461
* configure.ac (noconfigdirs,target=avr-*-*): Add target-newlib, target-libgloss if not configured --with-avrlibc=no. * configure: Regenerate. libgcc/ PR target/54461 * config.host (tmake_file,host=avr-*-*): Add avr/t-avrlibc if not configured --with-avrlibc=no. * config/avr/t-avrlibc: New file. * Makefile.in (FPBIT_FUNCS): filter-out LIB2FUNCS_EXCLUDE. (DPBIT_FUNCS): Ditto. (TPBIT_FUNCS): Ditto. gcc/ PR target/54461 * config.gcc (tm_file,target=avr-*-*): Add avr/avrlibc.h if not configured --with-avrlibc=no. (tm_defines,target=avr-*-*): Add WITH_AVRLIBC if not configured --with-avrlibc=no. * config/avr/avrlibc.h: New file. * config/avr/avr-c.c: Build-in define __WITH_AVRLIBC__ if not configured --with-avrlibc=no. * doc/invoke.texi (AVR Built-in Macros): Document __WITH_AVRLIBC__ git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@190967 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/ChangeLog10
-rw-r--r--libgcc/Makefile.in4
-rw-r--r--libgcc/config.host3
-rw-r--r--libgcc/config/avr/t-avrlibc66
4 files changed, 83 insertions, 0 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index ed5b2af2e22..7ffb58c3d24 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,13 @@
+2012-09-05 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/54461
+ * config.host (tmake_file,host=avr-*-*): Add avr/t-avrlibc if
+ not configured --with-avrlibc=no.
+ * config/avr/t-avrlibc: New file.
+ * Makefile.in (FPBIT_FUNCS): filter-out LIB2FUNCS_EXCLUDE.
+ (DPBIT_FUNCS): Ditto.
+ (TPBIT_FUNCS): Ditto.
+
2012-09-04 Teresa Johnson <tejohnson@google.com>
* libgcov.c (struct gcov_summary_buffer): New structure.
diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in
index 1de1b8e5a48..43b14a01f93 100644
--- a/libgcc/Makefile.in
+++ b/libgcc/Makefile.in
@@ -516,6 +516,10 @@ FPBIT_FUNCS := $(filter-out _sf_to_tf,$(FPBIT_FUNCS))
DPBIT_FUNCS := $(filter-out _df_to_tf,$(DPBIT_FUNCS))
endif
+FPBIT_FUNCS := $(filter-out $(LIB2FUNCS_EXCLUDE),$(FPBIT_FUNCS))
+DPBIT_FUNCS := $(filter-out $(LIB2FUNCS_EXCLUDE),$(DPBIT_FUNCS))
+TPBIT_FUNCS := $(filter-out $(LIB2FUNCS_EXCLUDE),$(TPBIT_FUNCS))
+
fpbit-src := $(srcdir)/fp-bit.c
# Build FPBIT.
diff --git a/libgcc/config.host b/libgcc/config.host
index f9bab01c094..486b7152551 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -380,6 +380,9 @@ avr-*-rtems*)
avr-*-*)
# Make HImode functions for AVR
tmake_file="${cpu_type}/t-avr t-fpbit"
+ if test x${with_avrlibc} != xno; then
+ tmake_file="$tmake_file ${cpu_type}/t-avrlibc"
+ fi
tm_file="$tm_file avr/avr-lib.h"
;;
bfin*-elf*)
diff --git a/libgcc/config/avr/t-avrlibc b/libgcc/config/avr/t-avrlibc
new file mode 100644
index 00000000000..d2c8b870aab
--- /dev/null
+++ b/libgcc/config/avr/t-avrlibc
@@ -0,0 +1,66 @@
+# This file is used if not configured --with-avrlibc=no
+#
+# AVR-Libc comes with hand-optimized float routines.
+# For historical reasons, these routines live in AVR-Libc
+# and not in libgcc and use the same function names like libgcc.
+# To get the best support, i.e. always use the routines from
+# AVR-Libc, we remove these routines from libgcc.
+#
+# See also PR54461.
+#
+#
+# Arithmetic:
+# __addsf3 __subsf3 __divsf3 __mulsf3 __negsf2
+#
+# Comparison:
+# __cmpsf2 __unordsf2
+# __eqsf2 __lesf2 __ltsf2 __nesf2 __gesf2 __gtsf2
+#
+# Conversion:
+# __fixsfdi __fixunssfdi __floatdisf __floatundisf
+# __fixsfsi __fixunssfsi __floatsisf __floatunsisf
+#
+#
+# These functions are contained in modules:
+#
+# _addsub_sf.o: __addsf3 __subsf3
+# _mul_sf.o: __mulsf3
+# _div_sf.o: __divsf3
+# _negate_sf.o: __negsf2
+#
+# _compare_sf.o: __cmpsf2
+# _unord_sf.o: __unordsf2
+# _eq_sf.o: __eqsf2
+# _ne_sf.o: __nesf2
+# _ge_sf.o: __gesf2
+# _gt_sf.o: __gtsf2
+# _le_sf.o: __lesf2
+# _lt_sf.o: __ltsf2
+#
+# _fixsfdi.o: __fixsfdi
+# _fixunssfdi.o: __fixunssfdi
+# _fixunssfsi.o: __fixunssfsi
+# _floatdisf.o: __floatdisf
+# _floatundisf.o: __floatundisf
+# _sf_to_si.o: __fixsfsi
+# _si_to_sf.o: __floatsisf
+# _usi_to_sf.o: __floatunsisf
+
+
+# SFmode
+LIB2FUNCS_EXCLUDE += \
+ _addsub_sf \
+ _negate_sf \
+ _mul_sf _div_sf \
+ \
+ _compare_sf \
+ _unord_sf \
+ _eq_sf _ne_sf \
+ _gt_sf _ge_sf \
+ _lt_sf _le_sf \
+ \
+ _si_to_sf _sf_to_si \
+ _usi_to_sf _sf_to_usi \
+ _fixunssfsi _fixsfdi \
+ _fixunssfdi \
+ _floatdisf _floatundisf
OpenPOWER on IntegriCloud