Closed
Bug 271317
Opened 20 years ago
Closed 19 years ago
libswft.so linking problems ; needs DEF file
Categories
(NSS :: Libraries, defect, P1)
Tracking
(Not tracked)
VERIFIED
FIXED
3.11
People
(Reporter: julien.pierre, Assigned: rrelyea)
References
(Depends on 1 open bug)
Details
Attachments
(2 files)
660 bytes,
patch
|
julien.pierre
:
review+
wtc
:
review+
|
Details | Diff | Splinter Review |
831 bytes,
text/plain
|
julien.pierre
:
review+
wtc
:
superreview+
|
Details |
I ran into a problem linking libswft.so on Solaris AMD64 using gcc .
The error message is :
gcc -m64 -shared -h libswft.so -o SunOS5.10_i86pc_gcc_64_OPT.OBJ/libswft.so
SunOS5.10_i86pc_gcc_64_OPT.OBJ/forsock.o
SunOS5.10_i86pc_gcc_64_OPT.OBJ/fortpk11.o
SunOS5.10_i86pc_gcc_64_OPT.OBJ/fmutex.o SunOS5.10_i86pc_gcc_64_OPT.OBJ/stub.o
../../../../../../dist/SunOS5.10_i86pc_gcc_64_OPT.OBJ/lib/libswfci.a
../../../../../../dist/SunOS5.10_i86pc_gcc_64_OPT.OBJ/lib/libsoftokn.a
../../../../../../dist/SunOS5.10_i86pc_gcc_64_OPT.OBJ/lib/libfreebl.a
../../../../../../dist/SunOS5.10_i86pc_gcc_64_OPT.OBJ/lib/libsecutil.a
../../../../../../dist/SunOS5.10_i86pc_gcc_64_OPT.OBJ/lib/libplc4.a
../../../../../../dist/SunOS5.10_i86pc_gcc_64_OPT.OBJ/lib/libplds4.a
Text relocation remains referenced
against symbol offset in file
big_mul_set_vec64 0x449
../../../../../../dist/SunOS5.10_i86pc_gcc_64_OPT.OBJ/lib/libfreebl.a(mpi_amd64_asm.o)
big_mul_add_vec64 0x46e
../../../../../../dist/SunOS5.10_i86pc_gcc_64_OPT.OBJ/lib/libfreebl.a(mpi_amd64_asm.o)
ld: fatal: relocations remain against allocatable but non-writable sections
collect2: ld returned 1 exit status
The functions referenced are assembly code for MPI on AMD which we haven't yet
committed to CVS . There is no problem linking that MPI code anywhere but in
fortezza, such as in libsoftokn3.so, or in the many tools under cmd that link
freebl.a .
This error caused me to investigate the build of libswft.so more closely .
I found that there is no DEF file for this PKCS#11 library. On Unix, this causes
all the symbols to be strong and exported by default .
This is not the right thing to do. We need a DEF file for libfort.so .
Or we could just get rid of the entire lib/fortcrypt .
Reporter | ||
Comment 1•20 years ago
|
||
I tried using the same DEF file as for softokn, except for the "LIBRARY" line,
which is the library name. I added it in the manifest.mn as the MAPFILE .
I then got the following error :
[jp96085@nss-amd-solaris]/home/jp96085/nss/opt/mozilla/security/nss/lib/fortcrypt/swfort/pkcs11
178 % gmake all
rm -f SunOS5.10_i86pc_gcc_64_OPT.OBJ/libswft.so
gcc -m64 -shared -h libswft.so -Wl,-M,SunOS5.10_i86pc_gcc_64_OPT.OBJ/swft.def -R
'$ORIGIN' -o SunOS5.10_i86pc_gcc_64_OPT.OBJ/libswft.so
SunOS5.10_i86pc_gcc_64_OPT.OBJ/forsock.o
SunOS5.10_i86pc_gcc_64_OPT.OBJ/fortpk11.o
SunOS5.10_i86pc_gcc_64_OPT.OBJ/fmutex.o SunOS5.10_i86pc_gcc_64_OPT.OBJ/stub.o
../../../../../../dist/SunOS5.10_i86pc_gcc_64_OPT.OBJ/lib/libswfci.a
../../../../../../dist/SunOS5.10_i86pc_gcc_64_OPT.OBJ/lib/libsoftokn.a
../../../../../../dist/SunOS5.10_i86pc_gcc_64_OPT.OBJ/lib/libfreebl.a
../../../../../../dist/SunOS5.10_i86pc_gcc_64_OPT.OBJ/lib/libsecutil.a
../../../../../../dist/SunOS5.10_i86pc_gcc_64_OPT.OBJ/lib/libplc4.a
../../../../../../dist/SunOS5.10_i86pc_gcc_64_OPT.OBJ/lib/libplds4.a
ld: fatal: symbol `C_GetFunctionList' is multiply-defined:
(file SunOS5.10_i86pc_gcc_64_OPT.OBJ/fortpk11.o type=FUNC; file
../../../../../../dist/SunOS5.10_i86pc_gcc_64_OPT.OBJ/lib/libsoftokn.a(pkcs11.o)
type=FUNC);
ld: fatal: File processing errors. No output written to
SunOS5.10_i86pc_gcc_64_OPT.OBJ/libswft.so
collect2: ld returned 1 exit status
gmake: *** [SunOS5.10_i86pc_gcc_64_OPT.OBJ/libswft.so] Error 1
It seems that we are linking two PKCS#11 implementations into one shared library
- one from fortpk11.o, and another from libsoftokn.a .
I assume we want to export the code for fortpk11.o, but how do we specify it
when there are two implementations ? Were we previously relying on the linker
order to choose the proper symbols for us ?
This seems like a big mess.
Could we perhaps choose the specific object files we need from libsoftokn to
link into libswft and avoid the symbol clashes ?
Priority: -- → P1
Target Milestone: --- → 3.9.5
Comment 2•20 years ago
|
||
I vaguely remember seeing this error string "Text relocation remains"
a long time ago when I was adding some other assembler code to NSS.
A google search on the string "Text relocation remains" reveals
many pages that discuss this problem. There seems to be universal
agreement that the problem involves a mixture of PIC and non-PIC code.
Reporter | ||
Comment 3•20 years ago
|
||
I played with the -fPIC option for gcc for a while to no avail. I made the first
linker problem go away by removing one of the assembly functions from the .s
files which was making call instructions . That function fortunately wasn't
actually called so it was an acceptable solution.
I think we still need to fix the story regarding the DEF file for libswft.so, so
I'm leaving this bug open .
Updated•19 years ago
|
QA Contact: bishakhabanerjee → jason.m.reid
Assignee | ||
Comment 4•19 years ago
|
||
While a .def file is easy to add, we could also just turn off building
libswft.so as well.
bob
Reporter | ||
Comment 5•19 years ago
|
||
Yes, I would be in favor of just getting rid of libswft to solve this problem .
I will mark this bug as depending on 239960 "remove all fortezza support".
I'm not sure whicih release we are targetting for the removal . Setting 3.11 for
now .
Depends on: 239960
Target Milestone: 3.9.5 → 3.11
Comment 6•19 years ago
|
||
My recent checking to nss/lib/manifest.mn for bug 239960 has stopped building
the lib/fortcrypt directory entirely. So I think this bug is now effectively
resolved/fixed. Agreed?
The attached patch here would cleanup some other fortezza residue from
nss/lib/Makefile.
Attachment #193018 -
Flags: review?(julien.pierre.bugs)
Reporter | ||
Comment 7•19 years ago
|
||
Comment on attachment 193018 [details] [diff] [review]
remove fortezza residue
r+, though I think this patch probably belonged in the main "remove fortezza"
bug .
Attachment #193018 -
Flags: review?(julien.pierre.bugs) → review+
Updated•19 years ago
|
Attachment #193018 -
Flags: review+
Assignee | ||
Comment 8•19 years ago
|
||
Comment 9•19 years ago
|
||
what work remains to be done for this bug?
Has the above patch been checked in?
Are there files that need to be "cvs remove"d ?
Comment 10•19 years ago
|
||
(Should this bug be assigned to me? :)
Assignee | ||
Comment 11•19 years ago
|
||
The trunk has fortcrypt removed from it's manifest, which is sufficient to close
this bug.
It wouldn't be a bad idea to cvs remove everything in fortcrypt on down
(fortcrypt has two subdirectories, libci and swfort).
bob
Assignee | ||
Comment 12•19 years ago
|
||
Here are the files to be cvs removed. (I could attach a patch of the 'code' to
be removed, but it would be bigger than it needs to be).
Attachment #197776 -
Flags: superreview?(wtchang)
Attachment #197776 -
Flags: review?(nelson)
Comment 13•19 years ago
|
||
Comment on attachment 197776 [details]
Files to be removed.
r=wtc.
Attachment #197776 -
Flags: superreview?(wtchang) → superreview+
Reporter | ||
Comment 14•19 years ago
|
||
Comment on attachment 197776 [details]
Files to be removed.
Yes, these files should be removed
Attachment #197776 -
Flags: review+
Comment 15•19 years ago
|
||
Comment on attachment 197776 [details]
Files to be removed.
I see this was in lib/fortcrypt. Two reviews for this list is enough. :)
Attachment #197776 -
Flags: review?(nelson)
Comment 16•19 years ago
|
||
resolved/fixed now?
Assignee | ||
Comment 17•19 years ago
|
||
resolved fixed
Status: NEW → RESOLVED
Closed: 19 years ago
Resolution: --- → FIXED
Comment 18•19 years ago
|
||
I found and cvs removed a .cvsignore file in
lib/fortcrypt/swfort/pkcs11. I verified that
the lib/fortcrypt directory is empty now.
Status: RESOLVED → VERIFIED
You need to log in
before you can comment on or make changes to this bug.
Description
•