From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6225 invoked by alias); 14 Aug 2006 12:13:51 -0000 Received: (qmail 4267 invoked by uid 48); 14 Aug 2006 12:13:26 -0000 Date: Mon, 14 Aug 2006 12:13:00 -0000 Subject: [Bug c++/28718] New: Call to -lgcc added prior to user libraries X-Bugzilla-Reason: CC Message-ID: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "j at uriah dot heep dot sax dot de" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2006-08/txt/msg01002.txt.bz2 List-Id: When calling avr-g++, the linker driver adds a call to -lgcc before any of the user libraries entered on the command-line. On the AVR, this causes the wrong math function implementations taken from libgcc.a rather than the (user-supplied) libm.a. This is different from the C compiler driver, why? Given (any) C++ file foo.cc, using avr-gcc: % avr-gcc -v foo.cc Using built-in specs. Target: avr Configured with: ./configure --prefix=/tools/i686 --target=avr --disable-libssp --with-dwarf2 Thread model: single gcc version 4.1.0 /tools/i686/libexec/gcc/avr/4.1.0/cc1plus -quiet -v foo.cc -quiet -dumpbase foo.cc -auxbase foo -version -fno-rtti -fno-enforce-eh-specs -fno-exceptions -o /tmp/cc7jbBxg.s ignoring nonexistent directory "/tools/i686/lib/gcc/avr/4.1.0/../../../../include/c++/4.1.0" ignoring nonexistent directory "/tools/i686/lib/gcc/avr/4.1.0/../../../../include/c++/4.1.0/avr" ignoring nonexistent directory "/tools/i686/lib/gcc/avr/4.1.0/../../../../include/c++/4.1.0/backward" ignoring nonexistent directory "/tools/i686/lib/gcc/avr/4.1.0/../../../../avr/sys-include" #include "..." search starts here: #include <...> search starts here: /tools/i686/lib/gcc/avr/4.1.0/include /tools/i686/lib/gcc/avr/4.1.0/../../../../avr/include End of search list. GNU C++ version 4.1.0 (avr) compiled by GNU C version 3.2.3 20030502 (Red Hat Linux 3.2.3-49). GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: e56ae0f62a848350ccb9716b24fc3bd9 /tools/i686/lib/gcc/avr/4.1.0/../../../../avr/bin/as -o /tmp/ccyX7jFq.o /tmp/cc7jbBxg.s /tools/i686/lib/gcc/avr/4.1.0/../../../../avr/bin/ld -m avr2 /tools/i686/lib/gcc/avr/4.1.0/../../../../avr/lib/crts8515.o -L/tools/i686/lib/gcc/avr/4.1.0 -L/tools/i686/lib/gcc/avr/4.1.0/../../../../avr/lib /tmp/ccyX7jFq.o -lgcc -lc -lgcc Using avr-g++ instead of avr-gcc: % avr-g++ -v foo.cc Using built-in specs. Target: avr Configured with: ./configure --prefix=/tools/i686 --target=avr --disable-libssp --with-dwarf2 Thread model: single gcc version 4.1.0 /tools/i686/libexec/gcc/avr/4.1.0/cc1plus -quiet -v foo.cc -quiet -dumpbase foo.cc -auxbase foo -version -fno-rtti -fno-enforce-eh-specs -fno-exceptions -o /tmp/ccbXCZLa.s ignoring nonexistent directory "/tools/i686/lib/gcc/avr/4.1.0/../../../../include/c++/4.1.0" ignoring nonexistent directory "/tools/i686/lib/gcc/avr/4.1.0/../../../../include/c++/4.1.0/avr" ignoring nonexistent directory "/tools/i686/lib/gcc/avr/4.1.0/../../../../include/c++/4.1.0/backward" ignoring nonexistent directory "/tools/i686/lib/gcc/avr/4.1.0/../../../../avr/sys-include" #include "..." search starts here: #include <...> search starts here: /tools/i686/lib/gcc/avr/4.1.0/include /tools/i686/lib/gcc/avr/4.1.0/../../../../avr/include End of search list. GNU C++ version 4.1.0 (avr) compiled by GNU C version 3.2.3 20030502 (Red Hat Linux 3.2.3-49). GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: e56ae0f62a848350ccb9716b24fc3bd9 /tools/i686/lib/gcc/avr/4.1.0/../../../../avr/bin/as -o /tmp/ccSHVtCa.o /tmp/ccbXCZLa.s /tools/i686/lib/gcc/avr/4.1.0/../../../../avr/bin/ld -m avr2 /tools/i686/lib/gcc/avr/4.1.0/../../../../avr/lib/crts8515.o -L/tools/i686/lib/gcc/avr/4.1.0 -L/tools/i686/lib/gcc/avr/4.1.0/../../../../avr/lib /tmp/ccSHVtCa.o -lgcc -lm -lgcc -lc -lgcc -- Summary: Call to -lgcc added prior to user libraries Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: j at uriah dot heep dot sax dot de GCC host triplet: *-*-* GCC target triplet: avr-*-* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28718