View | Details | Return to bug 92055 | Differences between
and this patch

Collapse All | Expand All

(-)gcc/common/config/avr/avr-common.c (+53 lines)
Lines 23-28 Link Here
23
#include "tm.h"
23
#include "tm.h"
24
#include "common/common-target.h"
24
#include "common/common-target.h"
25
#include "common/common-target-def.h"
25
#include "common/common-target-def.h"
26
#include "opts.h"
27
#include "diagnostic.h"
26
28
27
/* Implement TARGET_OPTION_OPTIMIZATION_TABLE.  */
29
/* Implement TARGET_OPTION_OPTIMIZATION_TABLE.  */
28
static const struct default_options avr_option_optimization_table[] =
30
static const struct default_options avr_option_optimization_table[] =
Lines 43-51 static const struct default_options avr_ Link Here
43
       performance decrease. For the AVR though, disallowing data races
45
       performance decrease. For the AVR though, disallowing data races
44
       introduces additional code in LIM and increases reg pressure.  */
46
       introduces additional code in LIM and increases reg pressure.  */
45
    { OPT_LEVELS_ALL, OPT_fallow_store_data_races, NULL, 1 },
47
    { OPT_LEVELS_ALL, OPT_fallow_store_data_races, NULL, 1 },
48
#if defined (WITH_DOUBLE_64)
49
    { OPT_LEVELS_ALL, OPT_mdouble_, NULL, 64 },
50
#else
51
    { OPT_LEVELS_ALL, OPT_mdouble_, NULL, 32 },
52
#endif
53
# if defined (WITH_DOUBLE_64) || defined (WITH_LONG_DOUBLE_64)
54
    { OPT_LEVELS_ALL, OPT_mlong_double_, NULL, 64 },
55
#else
56
    { OPT_LEVELS_ALL, OPT_mlong_double_, NULL, 32 },
57
#endif
46
    { OPT_LEVELS_NONE, 0, NULL, 0 }
58
    { OPT_LEVELS_NONE, 0, NULL, 0 }
47
  };
59
  };
48
60
61
62
/* Implement `TARGET_HANDLE_OPTION'.  */
63
64
static bool
65
avr_handle_option (struct gcc_options *opts, struct gcc_options*,
66
                   const struct cl_decoded_option *decoded, location_t loc)
67
{
68
  size_t code = decoded->opt_index;
69
  int value = decoded->value;
70
71
  switch (code)
72
    {
73
    case OPT_mdouble_:
74
      // Only accept -mdouble64 if configured --with-double={32|64}.
75
#if !defined (HAVE_DOUBLE64)
76
      error_at (loc, "unrecognized option %<-mdouble={32|64}%>: this option "
77
                "is only available if configured %<--with-double={32|64}%>");
78
#endif
79
      if (value == 64)
80
        opts->x_avr_long_double = 64;
81
      break;
82
83
    case OPT_mlong_double_:
84
      // Only accept -mlong-double64 if configured --with-long-double={32|64}.
85
#if !defined (HAVE_LONG_DOUBLE64)
86
      error_at (loc, "unrecognized option %<-mlong-double={32|64}%>: "
87
                "this option is only available if configured "
88
                "%<--with-long-double={32|64}%>");
89
#endif
90
      if (value == 32)
91
        opts->x_avr_double = 32;
92
      break;
93
    }
94
95
  return true;
96
}
97
98
99
#undef TARGET_HANDLE_OPTION
100
#define TARGET_HANDLE_OPTION avr_handle_option
101
49
#undef TARGET_OPTION_OPTIMIZATION_TABLE
102
#undef TARGET_OPTION_OPTIMIZATION_TABLE
50
#define TARGET_OPTION_OPTIMIZATION_TABLE avr_option_optimization_table
103
#define TARGET_OPTION_OPTIMIZATION_TABLE avr_option_optimization_table
51
104
(-)gcc/config/avr/avr-c.c (+19 lines)
Lines 390-395 start address. This macro shall be used Link Here
390
  cpp_define (pfile, "__WITH_AVRLIBC__");
390
  cpp_define (pfile, "__WITH_AVRLIBC__");
391
#endif /* WITH_AVRLIBC */
391
#endif /* WITH_AVRLIBC */
392
392
393
#ifdef HAVE_DOUBLE64
394
  cpp_define (pfile, "__HAVE_DOUBLE64__");
395
#ifdef WITH_DOUBLE_64
396
  cpp_define (pfile, "__DEFAULT_DOUBLE__=64");
397
#else
398
  cpp_define (pfile, "__DEFAULT_DOUBLE__=32");
399
#endif
400
#endif
401
402
#if defined (HAVE_LONG_DOUBLE64) || defined (HAVE_DOUBLE64)
403
  cpp_define (pfile, "__HAVE_LONG_DOUBLE64__");
404
#if defined (WITH_LONG_DOUBLE_64) || defined (WITH_DOUBLE_64)
405
  cpp_define (pfile, "__DEFAULT_LONG_DOUBLE__=64");
406
#else
407
  cpp_define (pfile, "__DEFAULT_LONG_DOUBLE__=32");
408
#endif
409
#endif
410
411
  
393
  /* Define builtin macros so that the user can easily query whether
412
  /* Define builtin macros so that the user can easily query whether
394
     non-generic address spaces (and which) are supported or not.
413
     non-generic address spaces (and which) are supported or not.
395
     This is only supported for C.  For C++, a language extension is needed
414
     This is only supported for C.  For C++, a language extension is needed
(-)gcc/config/avr/avr.c (+6 lines)
Lines 768-773 avr_option_override (void) Link Here
768
  if (!avr_set_core_architecture())
768
  if (!avr_set_core_architecture())
769
    return;
769
    return;
770
770
771
  if (avr_double == 64)
772
    avr_long_double = 64;
773
774
  if (avr_long_double == 32)
775
    avr_double = 32;
776
771
  /* RAM addresses of some SFRs common to all devices in respective arch. */
777
  /* RAM addresses of some SFRs common to all devices in respective arch. */
772
778
773
  /* SREG: Status Register containing flags like I (global IRQ) */
779
  /* SREG: Status Register containing flags like I (global IRQ) */
(-)gcc/config/avr/avr.h (-2 / +3 lines)
Lines 140-147 These two properties are reflected by bu Link Here
140
#define LONG_TYPE_SIZE (INT_TYPE_SIZE == 8 ? 16 : 32)
140
#define LONG_TYPE_SIZE (INT_TYPE_SIZE == 8 ? 16 : 32)
141
#define LONG_LONG_TYPE_SIZE (INT_TYPE_SIZE == 8 ? 32 : 64)
141
#define LONG_LONG_TYPE_SIZE (INT_TYPE_SIZE == 8 ? 32 : 64)
142
#define FLOAT_TYPE_SIZE 32
142
#define FLOAT_TYPE_SIZE 32
143
#define DOUBLE_TYPE_SIZE 32
143
#define DOUBLE_TYPE_SIZE (avr_double == 64 ? 64 : FLOAT_TYPE_SIZE)
144
#define LONG_DOUBLE_TYPE_SIZE 32
144
#define LONG_DOUBLE_TYPE_SIZE (avr_long_double == 64 ? 64 : DOUBLE_TYPE_SIZE)
145
145
#define LONG_LONG_ACCUM_TYPE_SIZE 64
146
#define LONG_LONG_ACCUM_TYPE_SIZE 64
146
147
147
#define DEFAULT_SIGNED_CHAR 1
148
#define DEFAULT_SIGNED_CHAR 1
(-)gcc/config/avr/avr.opt (+18 lines)
Lines 115-120 mabsdata Link Here
115
Target Report Mask(ABSDATA)
115
Target Report Mask(ABSDATA)
116
Assume that all data in static storage can be accessed by LDS / STS.  This option is only useful for reduced Tiny devices.
116
Assume that all data in static storage can be accessed by LDS / STS.  This option is only useful for reduced Tiny devices.
117
117
118
mdouble=
119
Target Report Joined RejectNegative Var(avr_double) Init(0) Enum(avr_bits_e)
120
mdouble=<BITS>	Use <BITS> bits wide double type.
121
122
mlong-double=
123
Target Report Joined RejectNegative Var(avr_long_double) Init(0) Enum(avr_bits_e)
124
mlong-double=<BITS>	Use <BITS> bits wide long double type.
125
118
nodevicelib
126
nodevicelib
119
Driver Target Report RejectNegative
127
Driver Target Report RejectNegative
120
Do not link against the device-specific library lib<MCU>.a.
128
Do not link against the device-specific library lib<MCU>.a.
129
130
Enum
131
Name(avr_bits_e) Type(int)
132
Available BITS selections:
133
134
EnumValue
135
Enum(avr_bits_e) String(32)  Value(32)
136
137
EnumValue
138
Enum(avr_bits_e) String(64) Value(64)
(-)gcc/config/avr/genmultilib.awk (-2 / +52 lines)
Lines 38-43 BEGIN { Link Here
38
    dir_rcall = "short-calls"
38
    dir_rcall = "short-calls"
39
    opt_rcall = "mshort-calls"
39
    opt_rcall = "mshort-calls"
40
40
41
    dir_double64 = "double64"
42
    opt_double64 = "mdouble=64"
43
44
    dir_long_double64 = "long-double64"
45
    opt_long_double64 = "mlong-double=64"
46
41
    #    awk Variable         Makefile Variable  
47
    #    awk Variable         Makefile Variable  
42
    #  ------------------------------------------
48
    #  ------------------------------------------
43
    #    m_options     <->    MULTILIB_OPTIONS
49
    #    m_options     <->    MULTILIB_OPTIONS
Lines 47-52 BEGIN { Link Here
47
    m_options    = "\nMULTILIB_OPTIONS = "
53
    m_options    = "\nMULTILIB_OPTIONS = "
48
    m_dirnames   = "\nMULTILIB_DIRNAMES ="
54
    m_dirnames   = "\nMULTILIB_DIRNAMES ="
49
    m_required   = "\nMULTILIB_REQUIRED ="
55
    m_required   = "\nMULTILIB_REQUIRED ="
56
57
    # configure will only set one of these.
58
    have_double64 = (have_double64 == "HAVE_DOUBLE64")
59
    have_long_double64 = (have_long_double64 == "HAVE_LONG_DOUBLE64")
50
}
60
}
51
61
52
##################################################################
62
##################################################################
Lines 130-136 BEGIN { Link Here
130
	# leading "mmcu=avr2/" in order not to confuse genmultilib.
140
	# leading "mmcu=avr2/" in order not to confuse genmultilib.
131
	gsub (/^mmcu=avr2\//, "", opts)
141
	gsub (/^mmcu=avr2\//, "", opts)
132
	if (opts != "mmcu=avr2")
142
	if (opts != "mmcu=avr2")
143
	{
133
	    m_required = m_required " \\\n\t" opts
144
	    m_required = m_required " \\\n\t" opts
145
	    if (have_double64 && have_long_double64)
146
	    {
147
		m_required = m_required " \\\n\t" opts "/" opt_double64
148
		m_required = m_required " \\\n\t" opts "/" opt_long_double64
149
	    }
150
	    else if (have_double64)
151
		m_required = m_required " \\\n\t" opts "/" opt_double64
152
	    else if (have_long_double64)
153
		m_required = m_required " \\\n\t" opts "/" opt_long_double64
154
	}
134
    }
155
    }
135
}
156
}
136
157
Lines 144-151 END { Link Here
144
    ############################################################
165
    ############################################################
145
166
146
    # Intended Target: ./gcc/config/avr/t-multilib
167
    # Intended Target: ./gcc/config/avr/t-multilib
168
    if (have_double64 && have_long_double64)
169
    {
170
	print m_options  " " opt_tiny " " opt_rcall " " opt_double64 "/" opt_long_double64
171
	print m_dirnames " " dir_tiny " " dir_rcall " " dir_double64 " " dir_long_double64
172
	# Do not try to build a ./double64 variant, because we currently
173
	# are just copying from the respective non-[long-]double variant.
174
	# And due to the build order of multilibs, the default lib is built
175
	# after all the other libs have been build, hence there would be
176
	# nothing to copy from...
177
	#m_required = m_required " \\\n\t" opt_double64
178
	#m_required = m_required " \\\n\t" opt_long_double64
179
    }
180
    else if (have_double64)
181
    {
182
	print m_options  " " opt_tiny " " opt_rcall " " opt_double64
183
	print m_dirnames " " dir_tiny " " dir_rcall " " dir_double64
184
	# ...dito.
185
	#m_required = m_required " \\\n\t" opt_double64
186
    }
187
    else if (have_long_double64)
188
    {
189
	print m_options  " " opt_tiny " " opt_rcall " " opt_long_double64
190
	print m_dirnames " " dir_tiny " " dir_rcall " " dir_long_double64
191
	# ...dito.
192
	#m_required = m_required " \\\n\t" opt_long_double64
193
    }
194
    else
195
    {
196
	print m_options  " " opt_tiny " " opt_rcall
197
	print m_dirnames " " dir_tiny " " dir_rcall
198
    }
147
199
148
    print m_options  " " opt_tiny " " opt_rcall
149
    print m_dirnames " " dir_tiny " " dir_rcall
150
    print m_required
200
    print m_required
151
}
201
}
(-)gcc/config/avr/t-avr (-3 / +10 lines)
Lines 16-21 Link Here
16
# along with GCC; see the file COPYING3.  If not see
16
# along with GCC; see the file COPYING3.  If not see
17
# <http://www.gnu.org/licenses/>.
17
# <http://www.gnu.org/licenses/>.
18
18
19
HAVE_DOUBLE64 = $(findstring HAVE_DOUBLE64, $(tm_defines))
20
HAVE_LONG_DOUBLE64 = $(findstring HAVE_LONG_DOUBLE64, $(tm_defines))
21
19
PASSES_EXTRA += $(srcdir)/config/avr/avr-passes.def
22
PASSES_EXTRA += $(srcdir)/config/avr/avr-passes.def
20
23
21
driver-avr.o: $(srcdir)/config/avr/driver-avr.c \
24
driver-avr.o: $(srcdir)/config/avr/driver-avr.c \
Lines 94-101 install-device-specs: s-device-specs ins Link Here
94
# MULTILIB_DIRNAMES
97
# MULTILIB_DIRNAMES
95
# MULTILIB_REQUIRED
98
# MULTILIB_REQUIRED
96
99
97
s-mlib: $(srcdir)/config/avr/t-multilib
100
multilib.h Makefile s-mlib: t-multilib-avr
98
101
99
$(srcdir)/config/avr/t-multilib: $(srcdir)/config/avr/genmultilib.awk \
102
t-multilib-avr: $(srcdir)/config/avr/genmultilib.awk \
100
				 $(AVR_MCUS)
103
				 $(AVR_MCUS)
101
	$(AWK) -f $< $< $(AVR_MCUS) > $@
104
	$(AWK)	-v have_double64=$(HAVE_DOUBLE64) 		\
105
		-v have_long_double64=$(HAVE_LONG_DOUBLE64) 	\
106
		-f $< $< $(AVR_MCUS) > $@
107
108
include t-multilib-avr
(-)gcc/config/avr/t-multilib (-46 lines)
Lines 1-46 Link Here
1
# Auto-generated Makefile Snip
2
# Generated by    : ./gcc/config/avr/genmultilib.awk
3
# Generated from  : ./gcc/config/avr/avr-mcus.def
4
# Used by         : tmake_file from Makefile and genmultilib
5
6
# Copyright (C) 2011-2019 Free Software Foundation, Inc.
7
#
8
# This file is part of GCC.
9
#
10
# GCC is free software; you can redistribute it and/or modify it under
11
# the terms of the GNU General Public License as published by the Free
12
# Software Foundation; either version 3, or (at your option) any later
13
# version.
14
#
15
# GCC is distributed in the hope that it will be useful, but WITHOUT ANY
16
# WARRANTY; without even the implied warranty of MERCHANTABILITY or
17
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
18
# for more details.
19
#
20
# You should have received a copy of the GNU General Public License
21
# along with GCC; see the file COPYING3.  If not see
22
# <http://www.gnu.org/licenses/>.
23
24
MULTILIB_OPTIONS = mmcu=avr2/mmcu=avr25/mmcu=avr3/mmcu=avr31/mmcu=avr35/mmcu=avr4/mmcu=avr5/mmcu=avr51/mmcu=avr6/mmcu=avrxmega2/mmcu=avrxmega3/mmcu=avrxmega4/mmcu=avrxmega5/mmcu=avrxmega6/mmcu=avrxmega7/mmcu=avrtiny msp8 mshort-calls
25
26
MULTILIB_DIRNAMES = avr2 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6 avrxmega2 avrxmega3 avrxmega4 avrxmega5 avrxmega6 avrxmega7 avrtiny tiny-stack short-calls
27
28
MULTILIB_REQUIRED = \
29
	msp8 \
30
	mmcu=avr25 \
31
	mmcu=avr25/msp8 \
32
	mmcu=avr3 \
33
	mmcu=avr31 \
34
	mmcu=avr35 \
35
	mmcu=avr4 \
36
	mmcu=avr5 \
37
	mmcu=avr51 \
38
	mmcu=avr6 \
39
	mmcu=avrxmega2 \
40
	mmcu=avrxmega3/mshort-calls \
41
	mmcu=avrxmega3 \
42
	mmcu=avrxmega4 \
43
	mmcu=avrxmega5 \
44
	mmcu=avrxmega6 \
45
	mmcu=avrxmega7 \
46
	mmcu=avrtiny
(-)gcc/config.gcc (+25 lines)
Lines 1287-1292 avr-*-*) Link Here
1287
	    tm_file="${tm_file} ${cpu_type}/avrlibc.h"
1287
	    tm_file="${tm_file} ${cpu_type}/avrlibc.h"
1288
	    tm_defines="${tm_defines} WITH_AVRLIBC"
1288
	    tm_defines="${tm_defines} WITH_AVRLIBC"
1289
	fi
1289
	fi
1290
	if test y${with_double} = y64; then
1291
	    tm_defines="${tm_defines} WITH_DOUBLE_64"
1292
	    tm_defines="${tm_defines} HAVE_DOUBLE64"
1293
	elif test y${with_double} = y32; then
1294
	    tm_defines="${tm_defines} WITH_DOUBLE_32"
1295
	    tm_defines="${tm_defines} HAVE_DOUBLE64"
1296
	elif test y${with_double} != yno && y${with_double} != y; then
1297
	    echo "Error: only --with-double=32 and --with-double=64 can be used" 1>&2
1298
	    exit 1
1299
	fi
1300
	if test y${with_long_double} = y64; then
1301
	    tm_defines="${tm_defines} WITH_LONG_DOUBLE_64"
1302
	    tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1303
	elif test y${with_long_double} = y32; then
1304
	    tm_defines="${tm_defines} WITH_LONG_DOUBLE_32"
1305
	    tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1306
	elif test y${with_long_double} != yno && y${with_long_double} != y; then
1307
	    echo "Error: only --with-long-double=32 and --with-long-double=64 can be used" 1>&2
1308
	    exit 1
1309
	fi
1310
	if test y${with_double} = y64 && y${with_long_double} = y32; then
1311
	    echo "Error: combining --with-long-double=32 and --with-double=64" 1>&2
1312
	    exit 1
1313
	fi
1314
	
1290
	tmake_file="${tmake_file} avr/t-avr avr/t-multilib"
1315
	tmake_file="${tmake_file} avr/t-avr avr/t-multilib"
1291
	use_gcc_stdint=wrap
1316
	use_gcc_stdint=wrap
1292
	extra_gcc_objs="driver-avr.o avr-devices.o"
1317
	extra_gcc_objs="driver-avr.o avr-devices.o"
(-)gcc/doc/invoke.texi (+17 lines)
Lines 721-726 -imacros @var{file} -imultilib @var{dir Link Here
721
@gccoptlist{-mmcu=@var{mcu}  -mabsdata  -maccumulate-args @gol
721
@gccoptlist{-mmcu=@var{mcu}  -mabsdata  -maccumulate-args @gol
722
-mbranch-cost=@var{cost} @gol
722
-mbranch-cost=@var{cost} @gol
723
-mcall-prologues  -mgas-isr-prologues  -mint8 @gol
723
-mcall-prologues  -mgas-isr-prologues  -mint8 @gol
724
-mdouble=@var{bits} -mlong-double=@var{bits} @gol
724
-mn_flash=@var{size}  -mno-interrupts @gol
725
-mn_flash=@var{size}  -mno-interrupts @gol
725
-mmain-is-OS_task  -mrelax  -mrmw  -mstrict-X  -mtiny-stack @gol
726
-mmain-is-OS_task  -mrelax  -mrmw  -mstrict-X  -mtiny-stack @gol
726
-mfract-convert-truncate @gol
727
-mfract-convert-truncate @gol
Lines 18226-18231 integers. The default branch cost is 0. Link Here
18226
Functions prologues/epilogues are expanded as calls to appropriate
18227
Functions prologues/epilogues are expanded as calls to appropriate
18227
subroutines.  Code size is smaller.
18228
subroutines.  Code size is smaller.
18228
18229
18230
@item -mdouble=@var{bits}
18231
@opindex mdouble
18232
Set the size (in bits) of the @code{double} type.  Valid values for
18233
@var{bits} are 32 and 64. This option is only available if the compiler
18234
is configured with @code{--with-double=32} or with @code{--with-double=64},
18235
and the argument of @code{--with-double=} specifies the default layout of
18236
@code{double}.
18237
18238
@item -mlong-double=@var{bits}
18239
@opindex mlong-double
18240
Set the size (in bits) of the @code{long double} type.  Valid values for
18241
@var{bits} are 32 and 64. This option is only available if the compiler
18242
is configured with @code{--with-long-double=32} or with
18243
@code{--with-long-double=64}, and the argument of @code{--with-long-double=}
18244
specifies the default layout of @code{long double}.
18245
18229
@item -mgas-isr-prologues
18246
@item -mgas-isr-prologues
18230
@opindex mgas-isr-prologues
18247
@opindex mgas-isr-prologues
18231
Interrupt service routines (ISRs) may use the @code{__gcc_isr} pseudo
18248
Interrupt service routines (ISRs) may use the @code{__gcc_isr} pseudo
(-)libgcc/config/avr/t-avr (-2 / +9 lines)
Lines 1-3 Link Here
1
HAVE_DOUBLE64 = $(findstring HAVE_DOUBLE64, $(libgcc_tm_defines))
2
HAVE_LONG_DOUBLE64 = $(findstring HAVE_LONG_DOUBLE64, $(libgcc_tm_defines))
3
1
LIB1ASMSRC = avr/lib1funcs.S
4
LIB1ASMSRC = avr/lib1funcs.S
2
LIB1ASMFUNCS = \
5
LIB1ASMFUNCS = \
3
	_mulqi3 \
6
	_mulqi3 \
Lines 112-121 LIB2FUNCS_EXCLUDE = \ Link Here
112
	_clrsbdi2 \
115
	_clrsbdi2 \
113
116
114
117
115
# We do not have the DF type.
118
ifeq ($(long_double_type_size),32)
119
# We do not have the DFtype.
120
HOST_LIBGCC2_CFLAGS += -DDF=SF
121
endif
122
116
# Most of the C functions in libgcc2 use almost all registers,
123
# Most of the C functions in libgcc2 use almost all registers,
117
# so use -mcall-prologues for smaller code size.
124
# so use -mcall-prologues for smaller code size.
118
HOST_LIBGCC2_CFLAGS += -DDF=SF -Dinhibit_libc -mcall-prologues -Os
125
HOST_LIBGCC2_CFLAGS += -Dinhibit_libc -mcall-prologues -Os
119
126
120
# Extra 16-bit integer functions.
127
# Extra 16-bit integer functions.
121
intfuncs16 = _absvXX2 _addvXX3 _subvXX3 _mulvXX3 _negvXX2 _clrsbXX2
128
intfuncs16 = _absvXX2 _addvXX3 _subvXX3 _mulvXX3 _negvXX2 _clrsbXX2
(-)libgcc/config/avr/t-avrlibc (+25 lines)
Lines 64-66 LIB2FUNCS_EXCLUDE += \ Link Here
64
	_fixunssfsi _fixsfdi \
64
	_fixunssfsi _fixsfdi \
65
	_fixunssfdi \
65
	_fixunssfdi \
66
	_floatdisf _floatundisf
66
	_floatdisf _floatundisf
67
68
69
ifneq (,$(findstring double64,$(MULTISUBDIR)))
70
71
# We are in double64/libgcc or long-double64/libgcc:
72
# Just copy from the [long ]double=float multilib; we would remove any DFmode
73
# bits from this multilib variant, anyway, because the current assumption
74
# is that avr-libc hosts *all* the IEEE-double stuff.
75
76
LIB2FUNCS_EXCLUDE := %
77
LIB1ASMFUNCS :=
78
libgcc-objects :=
79
libgcov-objects :=
80
objects :=
81
82
t-copy-libgcc.dep: $(srcdir)/config/avr/t-copy-libgcc
83
	-rm -f libgcc.a
84
	-rm -f libgcov.a
85
	cp $< $@
86
87
libgcc.a libgcov.a libgcc_tm.h: t-copy-libgcc.dep
88
89
Makefile: t-copy-libgcc.dep
90
91
endif
(-)libgcc/config/avr/t-copy-libgcc (+13 lines)
Line 0 Link Here
1
# Only used with --with-avrlibc & (-mlong-double=64 | -mdouble=64)
2
#
3
# Inserted at the end of Makefile by magic[tm].
4
# We need this *after* Makefile's rules so we can override them.
5
6
libgcc.a: ../../libgcc/libgcc.a
7
	cp $< $@
8
9
libgcov.a: ../../libgcc/libgcov.a
10
	@:
11
ifeq ($(enable_gcov),yes)
12
	cp $< $@
13
endif
(-)libgcc/config.host (+9 lines)
Lines 499-510 arm*-*-eabi* | arm*-*-symbianelf* | arm* Link Here
499
	unwind_header=config/arm/unwind-arm.h
499
	unwind_header=config/arm/unwind-arm.h
500
	;;
500
	;;
501
avr-*-*)
501
avr-*-*)
502
	if test y${with_double} = y64 || y${with_double} = y32; then
503
	    tm_defines="${tm_defines} HAVE_DOUBLE64"
504
	fi
505
	if test y${with_long_double} = y64 || y${with_long_double} = y32; then
506
	    tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
507
	fi
502
	# Make HImode functions for AVR
508
	# Make HImode functions for AVR
503
	tmake_file="${cpu_type}/t-avr t-fpbit"
509
	tmake_file="${cpu_type}/t-avr t-fpbit"
504
	if test x${with_avrlibc} != xno; then
510
	if test x${with_avrlibc} != xno; then
505
	    tmake_file="$tmake_file ${cpu_type}/t-avrlibc"
511
	    tmake_file="$tmake_file ${cpu_type}/t-avrlibc"
506
	fi
512
	fi
507
	tm_file="$tm_file avr/avr-lib.h"
513
	tm_file="$tm_file avr/avr-lib.h"
514
	if test x${with_fixed_point} = xno; then
515
	    fixed_point=no
516
	fi
508
	;;
517
	;;
509
bfin*-elf*)
518
bfin*-elf*)
510
	tmake_file="bfin/t-bfin bfin/t-crtlibid bfin/t-crtstuff t-libgcc-pic t-fdpbit"
519
	tmake_file="bfin/t-bfin bfin/t-crtlibid bfin/t-crtstuff t-libgcc-pic t-fdpbit"

Return to bug 92055