Hi Brian,
There seems to be a new 'class' AVR35, introduced in 4.2.3. Would it be
possible to find out who was responsible for this change/patch? He could
tell if a newer binutils was used for his testing.
Below are the diffs for avr.c, avr.h, and t-avr in the source tree
/gcc-4.2.3/gcc/config/avr.
[egbert@server avr]$ diff avr.c
/var/ftp/Linux/AVR-GCC/gcc-4.2.3/gcc/config/avr/avr.c
145a146
> { 0, 0, 1, 1, "__AVR_ARCH__=35"},
159a161
> ARCH_AVR35,
214a217,220
> /* Classic + MOVW + JMP/CALL. */
> { "avr35", ARCH_AVR35, NULL },
> { "at90usb82", ARCH_AVR35, "__AVR_AT90USB82__" },
> { "at90usb162", ARCH_AVR35, "__AVR_AT90USB162__" },
265,266d270
< { "at90usb82", ARCH_AVR5, "__AVR_AT90USB82__" },
< { "at90usb162", ARCH_AVR5, "__AVR_AT90USB162__" },
[egbert@server avr]$ diff avr.h
/var/ftp/Linux/AVR-GCC/gcc-4.2.3/gcc/config/avr/avr.h
736c736
< #define ASM_SPEC "%{mmcu=avr25:-mmcu=avr2;\
---
> #define ASM_SPEC "%{mmcu=avr25:-mmcu=avr2;mmcu=avr35:-mmcu=avr3;\
762c762,764
< mmcu=at76*:-m avr3}\
---
> mmcu=at76*|\
> mmcu=at90usb82|\
> mmcu=at90usb162:-m avr3}\
772c774,775
< mmcu=at90usb*|\
---
> mmcu=at90usb64*|\
> mmcu=at90usb128*|\
846a850,851
> %{mmcu=at90usb162|mmcu=avr35:crtusb162.o%s} \
> %{mmcu=at90usb82:crtusb82.o%s} \
893,894d897
< %{mmcu=at90usb82:crtusb82.o%s} \
< %{mmcu=at90usb162:crtusb162.o%s} \
[egbert@server avr]$ diff t-avr
/var/ftp/Linux/AVR-GCC/gcc-4.2.3/gcc/config/avr/t-avr
40,41c40,41
< MULTILIB_OPTIONS = mmcu=avr2/mmcu=avr25/mmcu=avr3/mmcu=avr4/mmcu=avr5
< MULTILIB_DIRNAMES = avr2 avr25 avr3 avr4 avr5
---
> MULTILIB_OPTIONS =
mmcu=avr2/mmcu=avr25/mmcu=avr3/mmcu=avr35/mmcu=avr4/mmcu=avr5
> MULTILIB_DIRNAMES = avr2 avr25 avr3 avr35 avr4 avr5
61a62,63
> mmcu?avr35=mmcu?at90usb82 \
> mmcu?avr35=mmcu?at90usb162 \
108,109d109
< mmcu?avr5=mmcu?at90usb82 \
< mmcu?avr5=mmcu?at90usb162 \
[egbert@server avr]$
Egbert Jan
Brian Dessent wrote:
Egbert Jan van den Bussche wrote:
Thanks Brian. I went back just one release (GCC 4.2.2) and building
AVR-GCC is OK again. I'll try to investigate bit more. I did use the
2.18 binutils which compiled just fine on the same machine. There was an
Since binutils and gcc are not released in sync, you may require
something newer than 2.18 (which was released 2007-08-28) to go with
4.2.3 (released 2008-02-01.)
issue some time ago (in the 4.1.1 era) with libssp. Maybe I was bitten
by that. During Configure you must specify --disable-libssp. This comes
all from the avwiki (avrwiki.com) and I have no idea what libssp does.
libssp is a library that's part of the stack-smashing protection system
that's activated with -fstack-check. It isn't available on all targets,
and it's likely that AVR is one such target. Ideally it should default
to disabled for those targets that don't support it, but sometimes those
details aren't looked after. I don't think this is related.
Brian