binutils ar was recently changed to exclude path when comparing object filenames, to agree with POSIX. This combines with Windows' case-insensitive filesystem to cause java/lang/Exception.o to replace exception.o in the following command while creating libgcj.a.
ar rc .libs/libgcj0_convenience.a prims.o jni.o exception.o ... java/lang/Exception.o ... This causes bootstrap to fail when linking jv-convert. make[4]: Entering directory `/aaronwl/cs/env/mingw- head/20050325/build/gcc/i686-pc-mingw32/libjava' /bin/sh ./libtool --tag=GCJ --mode=link /aaronwl/cs/env/mingw- head/20050325/build/gcc/./gcc/gcj -B/aaronwl/cs/env/mingw- head/20050325/build/gcc/./gcc/ -B/aaronwl/cs/env/mingw-head/20050325/i686-pc- mingw32/bin/ -B/aaronwl/cs/env/mingw-head/20050325/i686-pc-mingw32/lib/ - isystem /aaronwl/cs/env/mingw-head/20050325/i686-pc-mingw32/include - isystem /aaronwl/cs/env/mingw-head/20050325/i686-pc-mingw32/sys-include - L/aaronwl/cs/env/mingw-head/20050325/build/gcc/i686-pc-mingw32/libjava -ffloat- store -fno-omit-frame-pointer -g -O2 -o jv-convert.exe -- main=gnu.gcj.convert.Convert -rpath /aaronwl/cs/env/mingw-head/20050325/lib - shared-libgcc -L/aaronwl/cs/env/mingw-head/20050325/build/gcc/i686-pc- mingw32/libjava/.libs libgcj.la /aaronwl/cs/env/mingw-head/20050325/build/gcc/./gcc/gcj - B/aaronwl/cs/env/mingw-head/20050325/build/gcc/./gcc/ -B/aaronwl/cs/env/mingw- head/20050325/i686-pc-mingw32/bin/ -B/aaronwl/cs/env/mingw-head/20050325/i686- pc-mingw32/lib/ -isystem /aaronwl/cs/env/mingw-head/20050325/i686-pc- mingw32/include -isystem /aaronwl/cs/env/mingw-head/20050325/i686-pc- mingw32/sys-include -ffloat-store -fno-omit-frame-pointer -g -O2 -o jv- convert.exe --main=gnu.gcj.convert.Convert -shared-libgcc - L/aaronwl/cs/env/mingw-head/20050325/build/gcc/i686-pc-mingw32/libjava - L/aaronwl/cs/env/mingw-head/20050325/build/gcc/i686-pc- mingw32/libjava/.libs ./.libs/libgcj.a -L/aaronwl/cs/env/mingw- head/20050325/build/gcc/i686-pc-mingw32/libstdc++-v3/src - L/aaronwl/cs/env/mingw-head/20050325/build/gcc/i686-pc-mingw32/libstdc++- v3/src/.libs -L/aaronwl/cs/env/mingw-head/20050325/build/gcc/./gcc - L/aaronwl/cs/env/mingw-head/20050325/i686-pc-mingw32/bin - L/aaronwl/cs/env/mingw-head/20050325/i686-pc-mingw32/lib - L/aaronwl/cs/env/mingw-head/20050325/lib/../i686-pc-mingw32/lib - L/aaronwl/cs/env/mingw-head/20050325/lib -L/mingw/lib -lmingw32 -lgcc - lmoldname -lmingwex -lmsvcrt -luser32 -lkernel32 -ladvapi32 -lshell32 - lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -Wl,--rpath - Wl,/aaronwl/cs/env/mingw-head/20050325/lib ./.libs/libgcj.a(prims.o): In function `Z17_Jv_ThrowNoMemoryv': /aaronwl/cs/compilers/gcc/src/cvs/head/gcc/libjava/prims.cc:369: undefined reference to `_Jv_Throw' ./.libs/libgcj.a(prims.o): In function `Jv_Malloc': /aaronwl/cs/compilers/gcc/src/cvs/head/gcc/libjava/prims.cc:1276: undefined reference to `_Jv_Throw' ... Since, depending on how you look at it, 'ar' is doing the right thing, I think the easiest way to fix this to rename exception.cc to exceptions.cc. -- Summary: exception.o is not included in libgcj.a due to case- insensitivity Product: gcc Version: 4.1.0 Status: UNCONFIRMED Keywords: build Severity: normal Priority: P2 Component: java AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: aaronavay62 at aaronwl dot com CC: gcc-bugs at gcc dot gnu dot org,java-prs at gcc dot gnu dot org GCC target triplet: i?86-pc-mingw32 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20654