A simple example of what breaks the libgfortran build: $ cat a.c #include <math.h>
extern float foo(float); float bar(float x) { return sinhf(x); } int main(void) { float x; x = bar(x); x = foo(x); return 0; } $ cat b.c #include <math.h> int foo(float x) { return sinhf(x); } $ gcc a.c b.c -std=c99 C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x0): multiple definition of `__fpclassifyl' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x0): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x1f): multiple definition of `__isnan' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x1f): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x55): multiple definition of `__isnanf' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x55): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x7f): multiple definition of `__isnanl' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x7f): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0xa9): multiple definition of `__signbit' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0xa9): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0xdc): multiple definition of `__signbitf' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0xdc): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x103): multiple definition of `__signbitl' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x103): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x12a): multiple definition of `sinhf' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x12a): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x14d): multiple definition of `coshf' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x14d): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x170): multiple definition of `tanhf' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x170): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x193): multiple definition of `expf' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x193): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x1b6): multiple definition of `frexpf' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x1b6): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x1dc): multiple definition of `ldexpf' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x1dc): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x202): multiple definition of `logb' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x202): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x22f): multiple definition of `logbf' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x22f): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x24a): multiple definition of `logbl' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x24a): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x271): multiple definition of `hypotf' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x271): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x29d): multiple definition of `powf' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x29d): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x2c9): multiple definition of `rint' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x2c9): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x2f4): multiple definition of `rintf' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x2f4): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x30d): multiple definition of `rintl' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x30d): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x332): multiple definition of `lrint' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x332): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x34f): multiple definition of `lrintf' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x34f): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x360): multiple definition of `lrintl' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x360): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x371): multiple definition of `llrint' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x371): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x391): multiple definition of `llrintf' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x391): first defined here C:/DOCUME~1/coudert/LOCALS~1/Temp/ccyLWAx7.o:b.c:(.text+0x3a5): multiple definition of `llrintl' C:/DOCUME~1/coudert/LOCALS~1/Temp/ccuYdlXI.o:a.c:(.text+0x3a5): first defined here collect2: ld returned 1 exit status -- Summary: [4.3 regression] C99 extern inline patch broke bootstrap on i386-pc-mingw32 Product: gcc Version: 4.3.0 Status: UNCONFIRMED Keywords: rejects-valid, build Severity: critical Priority: P3 Component: bootstrap AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: fxcoudert at gcc dot gnu dot org GCC build triplet: i386-pc-mingw32 GCC host triplet: i386-pc-mingw32 GCC target triplet: i386-pc-mingw32 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30589