------- Comment #4 from jakub at gcc dot gnu dot org 2008-12-10 11:09 ------- -findirect-dispatch compiled/linked programs built with 4.3 work just fine against 4.4 libgcj_bc.so.1 (that's why libgcj_bc.so.1 was added). The only problem is if you link a program against both -lgcj_bc and -lgcj, because if you link say with 4.3, then it will be linked against libgcj_bc.so.1 and libgcj.so.9 and if you then dynamically link it against 4.4 libgcj_bc.so.1, which depends on libgcj.so.10, both libgcj.so.9 and libgcj.so.10 will be dynamically linked into the same program, which for obvious reasons can't work at all (same as for e.g. libstdc++.so.5 and libstdc++.so.6 etc.).
The answer is simple, never link against both -lgcj_bc and -lgcj if you want the program to work against newer libjava versions. If a program is -findirect-dispatch as whole, it should be linked against -lgcj_bc, otherwise against -lgcj. This is nothing new, for 4.2 to 4.3 you get exactly the same problems. -- jakub at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |aph at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38396