PR target/54461
* configure.ac (noconfigdirs,target=avr-*-*): Add target-newlib,
target-libgloss if configured --with-avrlibc.
* configure: Regenerate.
libgcc/
Backport from 2012-09-05 mainline r190697.
PR target/54461
* config.host (tmake_file,host=avr-*-*): Add avr/t-avrlibc if
configured --with-avrlibc.
* Makefile.in (FPBIT_FUNCS): filter-out LIB2FUNCS_EXCLUDE.
(DPBIT_FUNCS): Ditto.
(TPBIT_FUNCS): Ditto.
* config/avr/t-avrlibc: New file.
gcc/
Backport from 2012-09-05 mainline r190697.
PR target/54461
* config.gcc (tm_file,target=avr-*-*): Add avr/avrlibc.h if
configured --with-avrlibc.
(tm_defines,target=avr-*-*): Add WITH_AVRLIBC if configured
--with-avrlibc.
* config/avr/avrlibc.h: New file.
* config/avr/avr-c.c: Build-in define __WITH_AVRLIBC__ if
configured --with-avrlibc.
* doc/invoke.texi (AVR Built-in Macros): Document __WITH_AVRLIBC__
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@190973
138bc75d-0d04-0410-961f-
82ee72b054a4
+2012-09-05 Georg-Johann Lay <avr@gjlay.de>
+
+ Backport from 2012-09-05 mainline r190697.
+
+ PR target/54461
+ * configure.ac (noconfigdirs,target=avr-*-*): Add target-newlib,
+ target-libgloss if configured --with-avrlibc.
+ * configure: Regenerate.
+
2012-06-14 Release Manager
* GCC 4.7.1 released.
arm-*-riscix*)
noconfigdirs="$noconfigdirs ld target-libgloss"
;;
+ avr-*-rtems*)
+ ;;
+ avr-*-*)
+ if test x${with_avrlibc} = xyes; then
+ noconfigdirs="$noconfigdirs target-newlib target-libgloss"
+ fi
+ ;;
c4x-*-* | tic4x-*-*)
noconfigdirs="$noconfigdirs target-libgloss"
;;
arm-*-riscix*)
noconfigdirs="$noconfigdirs ld target-libgloss"
;;
+ avr-*-rtems*)
+ ;;
+ avr-*-*)
+ if test x${with_avrlibc} = xyes; then
+ noconfigdirs="$noconfigdirs target-newlib target-libgloss"
+ fi
+ ;;
c4x-*-* | tic4x-*-*)
noconfigdirs="$noconfigdirs target-libgloss"
;;
+2012-09-05 Georg-Johann Lay <avr@gjlay.de>
+
+ Backport from 2012-09-05 mainline r190697.
+
+ PR target/54461
+ * config.gcc (tm_file,target=avr-*-*): Add avr/avrlibc.h if
+ configured --with-avrlibc.
+ (tm_defines,target=avr-*-*): Add WITH_AVRLIBC if configured
+ --with-avrlibc.
+ * config/avr/avrlibc.h: New file.
+ * config/avr/avr-c.c: Build-in define __WITH_AVRLIBC__ if
+ configured --with-avrlibc.
+ * doc/invoke.texi (AVR Built-in Macros): Document __WITH_AVRLIBC__
+
2012-09-05 Bin Cheng <bin.cheng@arm.com>
Backport from 2012-09-04 mainline r190919
;;
avr-*-*)
tm_file="elfos.h avr/elf.h avr/avr.h dbxelf.h avr/avr-stdint.h"
+ if test x${with_avrlibc} = xyes; then
+ tm_file="${tm_file} ${cpu_type}/avrlibc.h"
+ tm_defines="${tm_defines} WITH_AVRLIBC"
+ fi
tmake_file="avr/t-avr avr/t-multilib"
use_gcc_stdint=wrap
extra_gcc_objs="driver-avr.o avr-devices.o"
cpp_define_formatted (pfile, "__AVR_SFR_OFFSET__=0x%x",
avr_current_arch->sfr_offset);
+#ifdef WITH_AVRLIBC
+ cpp_define (pfile, "__WITH_AVRLIBC__");
+#endif /* WITH_AVRLIBC */
+
/* Define builtin macros so that the user can easily query if or if not
non-generic address spaces (and which) are supported.
This is only supported for C. For C++, a language extension is needed
--- /dev/null
+/* Definitions of target machine for the GNU compiler collection
+ for Atmel AVR micro controller.
+ Copyright (C) 2012
+ Free Software Foundation, Inc.
+ Contributed by Georg-Johann Lay (avr@gjlay.de)
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+/* AVR-Libc implements functions from libgcc.a in libm.a, see PR54461. */
+
+#undef LIBGCC_SPEC
+#define LIBGCC_SPEC \
+ "%{!mmcu=at90s1*:%{!mmcu=attiny11:%{!mmcu=attiny12:%{!mmcu=attiny15:%{!mmcu=attiny28: -lgcc -lm }}}}}"
+
+#undef LINK_GCC_C_SEQUENCE_SPEC
+#define LINK_GCC_C_SEQUENCE_SPEC \
+ "--start-group %G %L --end-group"
to be subtracted from the RAM address in order to get the
respective I/O@tie{}address.
+@item __WITH_AVRLIBC__
+The compiler is configured to be used together with AVR-Libc.
+See the @code{--with-avrlibc} configure option.
+
@end table
@node Blackfin Options
+2012-09-05 Georg-Johann Lay <avr@gjlay.de>
+
+ Backport from 2012-09-05 mainline r190697.
+
+ PR target/54461
+ * config.host (tmake_file,host=avr-*-*): Add avr/t-avrlibc if
+ configured --with-avrlibc.
+ * config/avr/t-avrlibc: New file.
+ * Makefile.in (FPBIT_FUNCS): filter-out LIB2FUNCS_EXCLUDE.
+ (DPBIT_FUNCS): Ditto.
+ (TPBIT_FUNCS): Ditto.
+
2012-08-21 Ian Lance Taylor <iant@google.com>
* config/i386/morestack.S (__morestack_non_split): Increase amount
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.
avr-*-*)
# Make HImode functions for AVR
tmake_file="${cpu_type}/t-avr t-fpbit"
+ if test x${with_avrlibc} = xyes; then
+ tmake_file="$tmake_file ${cpu_type}/t-avrlibc"
+ fi
tm_file="$tm_file avr/avr-lib.h"
;;
bfin*-elf*)
--- /dev/null
+# This file is used with --with-avrlibc=yes
+#
+# 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