http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28718
Kurz und gut: du wirst nicht umhin kommen, das mit -nostdlib zu
linken und dann die gewünschten Bibliotheken manuell reinzuziehen.
Ich betrachte das nach wie vor als einen Bug im GCC, aber siehe PR:
die GCC-Leute sehen da keinen Handlungsbedarf. Der Bug ist dabei
in meinen Augen nicht das direkte Problem der libm.a und deren
Inkonsistenz mit der libgcc, sondern die Tatsache, dass im C++-Modus
(und nur in diesem) versucht wird, gegen die libstdc++ zu linken,
bevor irgendwelche vom Nutzer benannten Bibliotheken gefragt werden.
Da das AVR-Setup keine libstdc++ hat, ersetzt GCC dann (weil sie den
Platz offenbar nicht freilassen wollen in der Folge) stattdessen die
libgcc an deren Stelle, was einem hier in diesem Falle nun (aufgrund
der Inkonsistenz zwischen libgcc und libm) zu 100 % auf die Füße
fällt. Andrew Pinski mag ja Recht haben, dass wir in einem Setup,
bei dem wir keine Patches in die libgcc bekommen, die eigentlich dort
hingehören würden (sodass wir sie in der libm führen) in der Tat ein
Problem haben, aber erstens kommt ihm dabei offenbar nicht in den Sinn,
dass es gerade die Lizenzpolitik der FSF ist, die genau dazu führt,
dass nicht alles aus der libm.a auch akzeptabel für die libgcc.a ist,
und zweitens ignoriert sein Kommentar eben auch, dass es in meinen
Augen widersinnig ist, eine Systembibliothek (egal, ob nun libstdc++
oder libgcc) vor den Nutzerbibliotheken überhaupt zu durchsuchen.
Wenn dich das alles genauso stört wie mich, dann hinterlass' deinen
Senf da im Bugtracker.
Edit: Johann war schneller.