Skip to content

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

@WestfW

Description

@WestfW

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...

Metadata

Metadata

Assignees

Labels

Component: ToolchainThe tools used for compilation and uploading to Arduino boards

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions