Bug 20392 - invalid install/relink of llibgcj{,0_convenience} during `make install`
Summary: invalid install/relink of llibgcj{,0_convenience} during `make install`
Status: RESOLVED WORKSFORME
Alias: None
Product: gcc
Classification: Unclassified
Component: libgcj (show other bugs)
Version: 4.0.0
: P2 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-03-09 08:17 UTC by Pawel Sikora
Modified: 2005-07-23 22:49 UTC (History)
3 users (show)

See Also:
Host: x86,amd64,ppc
Target: x86,amd64,ppc
Build: x86,amd64,ppc
Known to work:
Known to fail:
Last reconfirmed:


Attachments
install log. (30.49 KB, application/octet-stream)
2005-03-09 08:18 UTC, Pawel Sikora
Details
test patch. (1.84 KB, patch)
2005-03-10 19:53 UTC, Pawel Sikora
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Pawel Sikora 2005-03-09 08:17:31 UTC
I've installed the gcc-4.0.0-0.20050305.1 with enabled c, c++ and ada. 
Now I'm trying rebuild gcc with added java, objc and fortran support 
but install fails. It worked several snapshots ago, now it's broken.
Comment 1 Pawel Sikora 2005-03-09 08:18:22 UTC
Created attachment 8368 [details]
install log.
Comment 2 Andrew Pinski 2005-03-09 08:34:00 UTC
This does not make sense:
(cd /home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-
linux/libjava; /bin/sh ./libtool --tag CXX --mode=relink /home/users/pluto/multimedia/rpm/BUILD/
gcc-4.0-20050305/obj-i686-pld-linux/gcc/xgcc -shared-libgcc -B/home/users/pluto/multimedia/
rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/gcc/ -nostdinc++ -L/home/users/pluto/
multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libstdc++-v3/src -L/
home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/
libstdc++-v3/src/.libs -B/usr/i686-pld-linux/bin/ -B/usr/i686-pld-linux/lib/ -isystem /usr/i686-
pld-linux/include -isystem /usr/i686-pld-linux/sys-include -L/home/users/pluto/multimedia/rpm/
BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libjava -ffloat-store -fno-omit-frame-
pointer -O2 -march=i686 -mtune=pentium4 -fomit-frame-pointer -funroll-loops -pipe -o libgcj.la 
-objectlist libgcj.objectlist external/sax/libsax_convenience.la external/w3c_dom/
libw3c_convenience.la libgcj0_convenience.la ../libffi/libffi_convenience.la ../boehm-gc/
libgcjgc_convenience.la gnu/regexp/MessagesBundle.properties.lo gnu/regexp/
MessagesBundle_fr.properties.lo org/ietf/jgss/MessagesBundle.properties.lo -rpath /usr/lib -rpath /
usr/lib -lpthread ./libltdl/libltdlc.la -lz -version-info 6:0:0)
mv: cannot stat `libgcj.so.6.0.0': No such file or directory
libtool: install: error: relink `libgcj.la' with the above command before installing it

that means something is wrong with your build.
Comment 3 Pawel Sikora 2005-03-09 13:49:44 UTC
(In reply to comment #2) 
> This does not make sense: 
> 
(cd /home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld- 
> linux/libjava; /bin/sh ./libtool --tag CXX 
--mode=relink /home/users/pluto/multimedia/rpm/BUILD/ 
> gcc-4.0-20050305/obj-i686-pld-linux/gcc/xgcc -shared-libgcc 
-B/home/users/pluto/multimedia/ 
> rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/gcc/ -nostdinc++ 
-L/home/users/pluto/ 
> 
multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libstdc++-v3/src 
-L/ 
> 
home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/ 
> libstdc++-v3/src/.libs -B/usr/i686-pld-linux/bin/ -B/usr/i686-pld-linux/lib/ 
-isystem /usr/i686- 
> pld-linux/include -isystem /usr/i686-pld-linux/sys-include 
-L/home/users/pluto/multimedia/rpm/ 
> BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libjava 
-ffloat-store -fno-omit-frame- 
> pointer -O2 -march=i686 -mtune=pentium4 -fomit-frame-pointer -funroll-loops 
-pipe -o libgcj.la  
> -objectlist libgcj.objectlist external/sax/libsax_convenience.la 
external/w3c_dom/ 
> libw3c_convenience.la 
libgcj0_convenience.la ../libffi/libffi_convenience.la ../boehm-gc/ 
> libgcjgc_convenience.la gnu/regexp/MessagesBundle.properties.lo gnu/regexp/ 
> MessagesBundle_fr.properties.lo org/ietf/jgss/MessagesBundle.properties.lo 
-rpath /usr/lib -rpath / 
> usr/lib -lpthread ./libltdl/libltdlc.la -lz -version-info 6:0:0) 
> mv: cannot stat `libgcj.so.6.0.0': No such file or directory 
> libtool: install: error: relink `libgcj.la' with the above command before 
installing it 
>  
> that means something is wrong with your build. 
 
I think that relinking java libs with `-rpath /usr/lib` are quite wrong. 
At build/install time java libs exist only in 
rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libjava/.libs 
and $(DESTDIR)/$libdir. 
Am I right? 
Comment 4 Pawel Sikora 2005-03-10 19:01:15 UTC
[~/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libjava/.libs]  
drwxr-xr-x   2 pluto users     4096 2005-03-10 19:51 . 
drwxr-xr-x  15 pluto users     4096 2005-03-10 19:51 .. 
-rw-------   1 pluto users    11600 2005-03-10 19:42 boehm.o 
-rw-------   1 pluto users    35316 2005-03-10 19:37 defineclass.o 
-rw-r--r--   1 pluto users     4816 2005-03-10 00:30 exception.o 
-rwx------   1 pluto users    33329 2005-03-10 19:51 gcj-dbtool 
-rwx------   1 pluto users     6409 2005-03-10 19:51 gij 
-rw-r--r--   1 pluto users     6612 2005-03-10 01:51 gij.o 
-rwx------   1 pluto users     6764 2005-03-10 19:51 grmic 
-rwx------   1 pluto users     6793 2005-03-10 19:51 grmiregistry 
-rw-------   1 pluto users    45404 2005-03-10 19:38 interpret.o 
-rw-------   1 pluto users   119072 2005-03-10 19:37 jni.o 
-rwx------   1 pluto users     6765 2005-03-10 19:51 jv-convert 
-rw-------   1 pluto users 32257574 2005-03-10 19:49 libgcj0_convenience.a 
lrwxrwxrwx   1 pluto users       25 2005-03-10 19:49 libgcj0_convenience.la 
-> ../libgcj0_convenience.la 
-rw-------   1 pluto users     1319 2005-03-10 19:49 libgcj0_convenience.lai 
lrwxrwxrwx   1 pluto users       28 2005-03-10 19:47 libgcj0_convenience.so -> 
libgcj0_convenience.so.0.0.0 
lrwxrwxrwx   1 pluto users       28 2005-03-10 19:47 libgcj0_convenience.so.0 
-> libgcj0_convenience.so.0.0.0 
-rwx------   1 pluto users 19935083 2005-03-10 19:47 
libgcj0_convenience.so.0.0.0 
-rw-------   1 pluto users  1661364 2005-03-10 19:49 libgcj.a 
lrwxrwxrwx   1 pluto users       12 2005-03-10 19:49 libgcj.la -> ../libgcj.la 
-rw-------   1 pluto users     1299 2005-03-10 19:49 libgcj.lai 
lrwxrwxrwx   1 pluto users       15 2005-03-10 19:49 libgcj.so -> 
libgcj.so.6.0.0 
lrwxrwxrwx   1 pluto users       15 2005-03-10 19:49 libgcj.so.6 -> 
libgcj.so.6.0.0 
-rwx------   1 pluto users   928202 2005-03-10 19:49 libgcj.so.6.0.0 
-rw-------   1 pluto users     5170 2005-03-10 19:50 libgij.a 
lrwxrwxrwx   1 pluto users       12 2005-03-10 19:50 libgij.la -> ../libgij.la 
-rw-------   1 pluto users     1444 2005-03-10 19:50 libgij.lai 
lrwxrwxrwx   1 pluto users       15 2005-03-10 19:50 libgij.so -> 
libgij.so.6.0.0 
lrwxrwxrwx   1 pluto users       15 2005-03-10 19:50 libgij.so.6 -> 
libgij.so.6.0.0 
-rwx------   1 pluto users    10298 2005-03-10 19:50 libgij.so.6.0.0 
-rw-------   1 pluto users    29780 2005-03-10 19:37 link.o 
-rw-------   1 pluto users     4380 2005-03-10 19:42 posix.o 
-rw-------   1 pluto users     7572 2005-03-10 19:42 posix-threads.o 
-rw-------   1 pluto users    32348 2005-03-10 19:36 prims.o 
-rw-------   1 pluto users   106304 2005-03-10 19:38 verify.o 
 
 
Hmm, build is fine but when relinking fails 
libgcj.so.6.0.0 dissappears (libtool script removes it). 
 
Comment 5 Pawel Sikora 2005-03-10 19:11:23 UTC
I've recheckd the install log and found the reason of relinking error. 
 
 /home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/gcc/xgcc 
-shared-libgcc 
-B/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/gcc/ 
-nostdinc++ 
-L/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libstdc++-v3/src 
-L/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libstdc++-v3/src/.libs 
-B/usr/i686-pld-linux/bin/ -B/usr/i686-pld-linux/lib/ 
-isystem /usr/i686-pld-linux/include -isystem /usr/i686-pld-linux/sys-include 
-shared 
-nostdlib /usr/lib/gcc/i686-pld-linux/4.0.0/../../../crti.o /home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/gcc/crtbeginS.o  
gnu/regexp/.libs/MessagesBundle.properties.o 
gnu/regexp/.libs/MessagesBundle_fr.properties.o 
org/ietf/jgss/.libs/MessagesBundle.properties.o -Wl,--whole-archive 
external/sax/.libs/libsax_convenience.a 
external/w3c_dom/.libs/libw3c_convenience.a ../libffi/.libs/libffi_convenience.a ../boehm-gc/.libs/libgcjgc_convenience.a ./libltdl/.libs/libltdlc.a 
-Wl,--no-whole-archive  -L/tmp/gcc-4.0.0-root-pluto/usr/lib 
-L/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libstdc++-v3/src 
-L/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libstdc++-v3/src/.libs 
-L/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libjava 
external/sax/.libs/libsax_convenience.a 
external/w3c_dom/.libs/libw3c_convenience.a -L/usr/lib -lgcj0_convenience 
-L/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/gcc 
-L/usr/lib/gcc/i686-pld-linux/4.0.0 
-L/usr/lib/gcc/i686-pld-linux/4.0.0/../../.. ../libffi/.libs/libffi_convenience.a ../boehm-gc/.libs/libgcjgc_convenience.a 
-lpthread ./libltdl/.libs/libltdlc.a -ldl -lz -lgcc_s -lc 
-lgcc_s       /home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/gcc/crtendS.o /usr/lib/gcc/i686-pld-linux/4.0.0/../../../crtn.o  
-Wl,-soname -Wl,libgcj.so.6 -o .libs/libgcj.so.6.0.0 
/usr/bin/ld: cannot find -lgcj0_convenience 
collect2: ld returned 1 exit status 
 
 
Adding below path helpd. 
-L/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libjava/.libs  
Comment 6 Pawel Sikora 2005-03-10 19:53:11 UTC
Created attachment 8374 [details]
test patch.
Comment 7 Pawel Sikora 2005-03-11 01:29:34 UTC
(In reply to comment #6) 
> Created an attachment (id=8374) 
> test patch. 
>  
 
Attached patch was wrong. 
Now I have libgcj0_convenience dep. 
 
$ ldd libgcj.so.6.0.0 
        libgcj0_convenience.so.0 => not found 
        libpthread.so.0 => /lib64/tls/libpthread.so.0 (0x0000002a95784000) 
        libdl.so.2 => /lib64/libdl.so.2 (0x0000002a95899000) 
        libz.so.1 => /lib64/libz.so.1 (0x0000002a9599d000) 
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000002a95ab0000) 
        libc.so.6 => /lib64/tls/libc.so.6 (0x0000002a95bbd000) 
        /lib64/ld-linux-x86-64.so.2 (0x000000552aaaa000) 
 
I give up with this libtool stuff... 
Comment 8 Pawel Sikora 2005-03-12 10:02:43 UTC
I've noticed that below change fixes relinking. 
Could anonyone merge this fix to Makefile{.am,.in} ? 
 
--- libgcj0_convenience.la.orig 2005-03-12 06:07:36.000000000 +0100 
+++ libgcj0_convenience.la      2005-03-12 10:49:59.865017152 +0100 
@@ -5,16 +5,16 @@ 
 # It is necessary for linking the library. 
 
 # The name that we can dlopen(3). 
-dlname='libgcj0_convenience.so.0' 
+dlname='' 
 
 # Names of this library. 
-library_names='libgcj0_convenience.so.0.0.0 libgcj0_convenience.so.0 
libgcj0_convenience.so' 
+library_names='' 
 
 # The name of the static archive. 
 old_library='libgcj0_convenience.a' 
 
 # Libraries that this one depends upon. 
-dependency_libs=' 
-L/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libstdc++-v3/src 
-L/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libstdc++-v3/src/.libs 
-L/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libjava 
-L/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/gcc 
-L/usr/lib/gcc/i686-pld-linux/4.0.0 
-L/usr/lib/gcc/i686-pld-linux/4.0.0/../../.. -lgcc_s -lc -lgcc_s' 
+dependency_libs='' 
 
 # Version information for libgcj0_convenience. 
 current=0 
@@ -29,4 +29,4 @@ 
 dlpreopen='' 
 
 # Directory that this library needs to be installed in: 
-libdir='/usr/lib' 
+libdir='' 
Comment 9 Pawel Sikora 2005-03-12 17:55:26 UTC
finally I've fixed this problem with this patch. 
gcc was bootstraped and tested successfuly on ix86 and amd64. 
 
--- gcc-4.0-20050305/libjava/Makefile.am.orig 
+++ gcc-4.0-20050305/libjava/Makefile.am 
@@ -624,7 +624,7 @@ 
        $(libgcj0_convenience_la_LINK) \ 
        -objectlist libgcj0_convenience.objectlist \ 
        $(libgcj0_convenience_la_LIBADD) \ 
-       -rpath $(toolexeclibdir) $(libgcj0_convenience_la_LDFLAGS) $(LIBS) 
+       $(libgcj0_convenience_la_LDFLAGS) $(LIBS) 
 
 lib-gnu-awt-xlib.la: $(lib_gnu_awt_xlib_la_OBJECTS) 
$(lib_gnu_awt_xlib_la_DEPENDENCIES) 
        @echo Creating list of files to link... 
--- gcc-4.0-20050305/libjava/Makefile.in.orig 
+++ gcc-4.0-20050305/libjava/Makefile.in 
@@ -26699,7 +26699,7 @@ 
        $(libgcj0_convenience_la_LINK) \ 
        -objectlist libgcj0_convenience.objectlist \ 
        $(libgcj0_convenience_la_LIBADD) \ 
-       -rpath $(toolexeclibdir) $(libgcj0_convenience_la_LDFLAGS) $(LIBS) 
+       $(libgcj0_convenience_la_LDFLAGS) $(LIBS) 
 
 lib-gnu-awt-xlib.la: $(lib_gnu_awt_xlib_la_OBJECTS) 
$(lib_gnu_awt_xlib_la_DEPENDENCIES) 
        @echo Creating list of files to link...