I'm trying to build 64-bit shared libraries for openssl-0.9.6 on Solaris 8, and
am having a strange problem. It seems to build the static libraries just fine
but when it tries to make .so libs from the .a libs, it comes up with a library
with very few symbols in it that is much smaller than the .a lib.

I'm using Sun Workshop Compiler v5.0 and have installed the necessary compiler
patch. I have also attempted the linker patch (109147-06), but it didnt seem to
make a difference. I have also attempted to build 32-bit libraries on the same
machine and they works just fine. I also see the same problem under Solaris 7,
so I don't think it's a patch-related problem. My feeling is that the ld flags
are incorrect for 64-bit libs.

Here's basically what I've done:

$ cd openssl-0.9.6/
$ ./Configure shared solaris64-sparcv9-cc
$ ./make

It grinds away for a while and then it reaches the stage where it converts the
.a lib to a .so and I get the following message:

+ cc -G -o libcrypto.so.0.9.6 -h libcrypto.so.0 -z allextract libcrypto.a
-lsocket -lnsl -ldl -lc 
ld: warning: file libcrypto.a(cryptlib.o): wrong ELF class: ELFCLASS64

When I look in the directory, I see this:

$ ls -l libcrypto*
-rw-r--r--   1 jtlayton sysadmin 2764204 Feb 26 13:31 libcrypto.a
lrwxrwxrwx   1 jtlayton sysadmin      14 Feb 26 13:39 libcrypto.so ->
libcrypto.so.0*
lrwxrwxrwx   1 jtlayton sysadmin      18 Feb 26 13:39 libcrypto.so.0 ->
libcrypto.so.0.9.6*
-rwxr-xr-x   1 jtlayton sysadmin    3076 Feb 26 13:41 libcrypto.so.0.9.6*

$ nm libcrypto.so.0.9.6

libcrypto.so.0.9.6:

[Index]   Value      Size    Type  Bind  Other Shndx   Name

[18]    |         0|       0|SECT |LOCL |0    |17     |
[2]     |       148|       0|SECT |LOCL |0    |1      |
[3]     |       264|       0|SECT |LOCL |0    |2      |
[4]     |       488|       0|SECT |LOCL |0    |3      |
[5]     |       740|       0|SECT |LOCL |0    |4      |
[6]     |       788|       0|SECT |LOCL |0    |5      |
[7]     |       788|       0|SECT |LOCL |0    |6      |
[8]     |       868|       0|SECT |LOCL |0    |7      |
[9]     |       948|       0|SECT |LOCL |0    |8      |
[10]    |       952|       0|SECT |LOCL |0    |9      |
[11]    |     66492|       0|SECT |LOCL |0    |10     |
[12]    |     66496|       0|SECT |LOCL |0    |11     |
[13]    |     66648|       0|SECT |LOCL |0    |12     |
[14]    |     66688|       0|SECT |LOCL |0    |13     |
[15]    |         0|       0|SECT |LOCL |0    |14     |
[16]    |         0|       0|SECT |LOCL |0    |15     |
[17]    |         0|       0|SECT |LOCL |0    |16     |
[36]    |     66496|       0|OBJT |GLOB |0    |11     |_DYNAMIC
[20]    |     66688|       0|OBJT |LOCL |0    |13     |_END_
[33]    |     66492|       0|OBJT |GLOB |0    |10     |_GLOBAL_OFFSET_TABLE_
[39]    |         0|       0|OBJT |GLOB |0    |ABS    |_PROCEDURE_LINKAGE_TABLE_
[19]    |         0|       0|OBJT |LOCL |0    |1      |_START_
[41]    |         0|       0|NOTY |WEAK |0    |UNDEF 
|__1cH__CimplKcplus_fini6F_v_
[38]    |         0|       0|NOTY |WEAK |0    |UNDEF 
|__1cH__CimplKcplus_init6F_v_
[31]    |     66688|       0|OBJT |GLOB |0    |12     |_edata
[32]    |     66688|       0|OBJT |GLOB |0    |13     |_end
[35]    |       956|       0|OBJT |GLOB |0    |9      |_etext
[40]    |         0|       0|NOTY |WEAK |0    |UNDEF  |_ex_deregister
[23]    |       948|       0|NOTY |LOCL |0    |8      |_ex_range0
[28]    |       948|       0|NOTY |LOCL |0    |8      |_ex_range1
[37]    |         0|       0|NOTY |WEAK |0    |UNDEF  |_ex_register
[22]    |     66664|       0|NOTY |LOCL |0    |12     |_ex_shared0
[27]    |     66680|       0|NOTY |LOCL |0    |12     |_ex_shared1
[24]    |       788|       0|NOTY |LOCL |0    |5      |_ex_text0
[29]    |       788|       0|NOTY |LOCL |0    |5      |_ex_text1
[42]    |       868|      80|FUNC |GLOB |0    |7      |_fini
[34]    |       788|      80|FUNC |GLOB |0    |6      |_init
[30]    |       952|       4|OBJT |GLOB |0    |9      |_lib_version
[21]    |         0|       0|FILE |LOCL |0    |ABS    |crti.s
[26]    |         0|       0|FILE |LOCL |0    |ABS    |crtn.s
[1]     |         0|       0|FILE |LOCL |0    |ABS    |libcrypto.so.0.9.6
[25]    |         0|       0|FILE |LOCL |0    |ABS    |values-Xa.c

It looks like almost none of the symbols from libcrypto.a make it into
libcrypto.so. Perhaps the "wrong ELF class" message makes ld ignore that
library? Does anyone have any idea what I'm doing wrong here? I suspect that the
flags being passed to ld are incorrect, but I don't know what the correct ones
should be.
--
Jeff Layton                                         [EMAIL PROTECTED]
Pliant Systems                                      (919) 405-4311

    "If God dwells inside us, like some people say, I sure hope He likes
     enchiladas, because that's what He's getting!"

        -- Deep Thoughts by Jack Handey (Saturday Night Live - NBC)
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to