re PR target/54461 ([avr] add configure option for better AVR-Libc integration)
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__ From-SVN: r190967
This commit is contained in:
parent
4efbb06f67
commit
b588ae3074
12 changed files with 159 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
|||
2012-09-05 Georg-Johann Lay <avr@gjlay.de>
|
||||
|
||||
PR target/54461
|
||||
* configure.ac (noconfigdirs,target=avr-*-*): Add target-newlib,
|
||||
target-libgloss if not configured --with-avrlibc=no.
|
||||
* configure: Regenerate.
|
||||
|
||||
2012-09-04 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* configure.ac: Fix --enable-languages=all.
|
||||
|
|
7
configure
vendored
7
configure
vendored
|
@ -3499,6 +3499,13 @@ case "${target}" in
|
|||
arm-*-riscix*)
|
||||
noconfigdirs="$noconfigdirs ld target-libgloss"
|
||||
;;
|
||||
avr-*-rtems*)
|
||||
;;
|
||||
avr-*-*)
|
||||
if test x${with_avrlibc} != xno; then
|
||||
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
|
||||
fi
|
||||
;;
|
||||
c4x-*-* | tic4x-*-*)
|
||||
noconfigdirs="$noconfigdirs target-libgloss"
|
||||
;;
|
||||
|
|
|
@ -891,6 +891,13 @@ case "${target}" in
|
|||
arm-*-riscix*)
|
||||
noconfigdirs="$noconfigdirs ld target-libgloss"
|
||||
;;
|
||||
avr-*-rtems*)
|
||||
;;
|
||||
avr-*-*)
|
||||
if test x${with_avrlibc} != xno; then
|
||||
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
|
||||
fi
|
||||
;;
|
||||
c4x-*-* | tic4x-*-*)
|
||||
noconfigdirs="$noconfigdirs target-libgloss"
|
||||
;;
|
||||
|
|
|
@ -1,3 +1,15 @@
|
|||
2012-09-05 Georg-Johann Lay <avr@gjlay.de>
|
||||
|
||||
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__
|
||||
|
||||
2012-09-04 Teresa Johnson <tejohnson@google.com>
|
||||
|
||||
* gcov-io.c (gcov_write_summary): Write out non-zero histogram
|
||||
|
|
|
@ -892,6 +892,10 @@ avr-*-rtems*)
|
|||
;;
|
||||
avr-*-*)
|
||||
tm_file="elfos.h avr/elf.h avr/avr.h dbxelf.h avr/avr-stdint.h"
|
||||
if test x${with_avrlibc} != xno; 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"
|
||||
|
|
|
@ -148,6 +148,10 @@ avr_cpu_cpp_builtins (struct cpp_reader *pfile)
|
|||
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
|
||||
|
|
31
gcc/config/avr/avrlibc.h
Normal file
31
gcc/config/avr/avrlibc.h
Normal file
|
@ -0,0 +1,31 @@
|
|||
/* Definitions of target machine for the GNU compiler collection
|
||||
for Atmel AVR micro controller if configured for AVR-Libc.
|
||||
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"
|
|
@ -11496,6 +11496,10 @@ or @code{STS}. This offset depends on the device architecture and has
|
|||
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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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*)
|
||||
|
|
66
libgcc/config/avr/t-avrlibc
Normal file
66
libgcc/config/avr/t-avrlibc
Normal file
|
@ -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
|
Loading…
Add table
Reference in a new issue