This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Libtool problem (Was: Multilib libjava problem)


On Tuesday 01 October 2002 12:08, Bo Thorsen wrote:
> I have a linking problem in libjava, trying to link the 32 bit libjava on
> x86-64:
>
> /bin/sh ./libtool --tag=CXX --mode=link /suse/bo/Work/gcc/build/gcc/xgcc
> -shared-libgcc -B/suse/bo/Work/gcc/build/gcc/ -nostdinc++
> -L/suse/bo/Work/gcc/build/x86_64-unknown-linux-gnu/32/libstdc++-v3/src
> -L/suse/bo/Work/gcc/build/x86_64-unknown-linux-gnu/32/libstdc++-v3/src/.lib
>s -B/usr/local/x86_64-unknown-linux-gnu/bin/
> -B/usr/local/x86_64-unknown-linux-gnu/lib/ -isystem
> /usr/local/x86_64-unknown-linux-gnu/include  -m32
> -L/suse/bo/Work/gcc/build/x86_64-unknown-linux-gnu/32/libjava -ffloat-store
> -g -O2  -m32 -m32 -o libgcj.la -objectlist libgcj.objectlist
> ../boehm-gc/libgcjgc_convenience.la ../libffi/libffi_convenience.la
> ../zlib/libzgcj_convenience.la -rpath /usr/local/lib/32 -rpath
> /usr/local/lib/32  -lpthread ./libltdl/libltdlc.la  -version-info `grep -v
> '^#' ../../../../gcc/libjava/libtool-version`
>
> creating reloadable object files...
>
> creating a temporary reloadable object file: .libs/libgcj.la-2.o
>
> /usr/bin/ld -r -o .libs/libgcj.la-1.o <aLOToffiles>.o
>
> /usr/bin/ld: Relocatable linking with relocations from format elf32-i386
> (.libs/prims.o) to format elf64-x86-64 (.libs/libgcj.la-1.o) is not
> supported
>
> make[5]: *** [libgcj.la] Error 1
>
> The problem here is the /usr/bin/ld command. This ought to have a -m
> elf_i386 switch.

This is a libtool problem. I have come up with two different patches to try to 
solve this:

Index: libtool.m4
===================================================================
RCS file: /cvs/gcc/gcc/libtool.m4,v
retrieving revision 1.9
diff -u -r1.9 libtool.m4
--- libtool.m4	14 Aug 2002 02:39:52 -0000	1.9
+++ libtool.m4	1 Oct 2002 14:51:18 -0000
@@ -175,6 +175,19 @@
   rm -rf conftest*
   ;;
 
+x86_64*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case "`/usr/bin/file conftest.o`" in
+    *32-bit*)
+      LD="${LD-ld} -m elf_i386"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
 *-*-sco3.2v5*)
   # On SCO OpenServer 5, we need -belf to get full-featured binaries.
   SAVE_CFLAGS="$CFLAGS"

I tried this and just running configure && make bootstrap (srcdir!=builddir) 
but that didn't do any change. The libtool in 32/libjava didn't have any line 
with x86_64 in it??

Now I'm running a test with this:

Index: libtool.m4
===================================================================
RCS file: /cvs/gcc/gcc/libtool.m4,v
retrieving revision 1.9
diff -u -r1.9 libtool.m4
--- libtool.m4	14 Aug 2002 02:39:52 -0000	1.9
+++ libtool.m4	1 Oct 2002 14:50:41 -0000
@@ -622,7 +622,7 @@
 # This must be Linux ELF.
 linux-gnu*)
   case $host_cpu in
-  alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
+  alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | x86_64* )
     lt_cv_deplibs_check_method=pass_all ;;
   *)
     # glibc up to 2.1.1 does not perform some relocations on ARM

Is there something I have to do to make it actually use these changes?

Am I completely wrong in trying this - any comments on the patches?

Help! I don't know how to handle libtool. I can just see that it doesn't work 
as it is now.

Bo.

-- 

     Bo Thorsen                 |   Praestevejen 4
     Senior Software Engineer   |   5290 Marslev
     Klarälvdalens Datakonsult  |   Denmark


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]