avr-gcc, avr-libc compiler and toolchain known bugs #1208

Closed
WestfW opened this Issue Jan 10, 2013 · 2 comments

Comments

4 participants
Contributor

WestfW commented Jan 10, 2013

This "issues" is supposed to collect "known" problems with tool versions that are not actually in use. So it's not so much a bug to be fixed as a warning sign for experimenters.

The Arduino environment, as of version 1.0.2, uses avr-gcc version 4.3.2, binutils 2.19, and avr-libc 1.6.4 These are pretty old. But several more recent versions have serious bugs when one attempts to use them with Arduino.

  1. Global Constructor bug.
    This is the bug that infamously caused any Arduino MEGA sketches to fail at runtime in large sketches when compiled under linux with the 4.5.3 release.
    Arduino issue http://code.google.com/p/arduino/issues/detail?id=131
    This is avr-gcc bug: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45263
    It broke in 4.4.something, is known broken in 4.5.3 and 4.6.0, and known fixed in 4.5.4, 4.6.1, and 4.7.0

  2. "round()" incompatibility
    http://code.google.com/p/arduino/issues/detail?id=604

  3. byte assembly (shift) bug
    (broken in 4.4.0, 4.5.3, 4.6.1. Fixed in 4.5.4, 4.6.2, 4.7.0)
    http://code.google.com/p/arduino/issues/detail?id=605
    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51445
    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46779

  4. delay() bug introduced with binutils 2.21.1
    http://code.google.com/p/arduino/issues/detail?id=689

  5. util/delay.h bug wrt math.h
    https://savannah.nongnu.org/bugs/?34047

  6. progmem is used wrong, nearly everywhere. Mostly this breaks g++
    (avr-gcc 4.7.2 apparently significantly changes the way progmem is handled?)
    http://savannah.nongnu.org/bugs/?33716
    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38342

I'll add more when and if I find or remember them...

amcjen commented Jan 11, 2013

Thanks Bill for posting these. This really helps to understand what is actually broken where. Appreciate you putting these up.

@ffissore ffissore added the New label Feb 27, 2014

@matthijskooijman matthijskooijman removed the New label Sep 11, 2014

Contributor

ffissore commented May 27, 2015

Fixed. See #611

@ffissore ffissore closed this May 27, 2015

@ffissore ffissore added this to the Release 1.6.5 milestone May 27, 2015

@ffissore ffissore self-assigned this May 27, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment