Menu

#1 x86_64

open
None
5
2008-04-11
2008-04-11
No

Well, now that the bug is fixed, it works fine on a i386 machine, but x86_64 systems are getting quite popular now.

Configure stage runs fine in a x86_64, but if I try to compile it, I get this error:

./generic/tclmilter.c: In function ‘TM_body’:
./generic/tclmilter.c:670: warning: pointer targets in passing argument 1 of ‘tclStubsPtr->tcl_NewStringObj’ differ in signedness
./generic/tclmilter.c: In function ‘TM_ReplaceBody’:
./generic/tclmilter.c:1931: warning: pointer targets in assignment differ in signedness
./generic/tclmilter.c:1933: warning: pointer targets in passing argument 2 of ‘smfi_replacebody’ differ in signedness
rm -f libtclmilter1.1.so
gcc -shared -pipe -O2 -fomit-frame-pointer -Wall -Wno-implicit-int -fPIC -Wl,--export-dynamic -o libtclmilter1.1.so tclmilter.o -L/usr/lib -lmilter -L/usr/lib -ltclstub8.4
/usr/bin/ld: skipping incompatible /usr/lib/libmilter.a when searching for -lmilter
/usr/bin/ld: skipping incompatible /usr/lib/libmilter.a when searching for -lmilter
/usr/bin/ld: skipping incompatible /usr/lib/libtclstub8.4.a when searching for -ltclstub8.4
/usr/bin/ld: skipping incompatible /usr/lib/libtclstub8.4.a when searching for -ltclstub8.4
/usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libmilter.a(listener.o): relocation R_X86_64_PC32 against `mi_opensocket' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: ld returned 1 exit status
make: *** [libtclmilter1.1.so] Error 1

If i compile it in a i386 and copy the tclmilter1.1 directory into a x86_64 system, i get this:

% package require TclMilter
couldn't load file "/usr/share/tcl8.4/tclmilter1.1/libtclmilter1.1.so": /usr/share/tcl8.4/tclmilter1.1/libtclmilter1.1.so: wrong ELF class: ELFCLASS32

This is not exactly a bug report, as it works fine in a i386 environment, but would be great to have x86_64 support too.

Regards,

-=Raul=-

Discussion

  • Michael Kirkham

    Michael Kirkham - 2008-04-11

    Logged In: YES
    user_id=498198
    Originator: NO

    I don't have an x86_64 linux system set up just at the moment, but we recently acquired a server that'll support it and I'm working on setting up a bunch of virtual machines (x86_64 linux to be included), so I'll take a look when that gets set up.

    Offhand, though, this looks more to be an issue with how the milter library was built than the tclmilter wrapper. tclmilter needs to be (and is being) compiled with -fPIC because you're building it as a shared library, and generally -fPIC libraries need to link against other -fPIC libraries, but it would seem that libmilter.a was not compiled with the -fPIC option, so the link fails.

    You might try rebuilding libmilter.a, ensuring it's compiled with -fPIC (there may be an enable-shared or similar config option to do it for you), and then give it another try.

     
  • Michael Kirkham

    Michael Kirkham - 2008-04-11
    • assigned_to: nobody --> muonics
     

Log in to post a comment.