Closed
Bug 457283
Opened 17 years ago
Closed 17 years ago
version 1.1.12 - relocation error: libgklayout.so - AppendUCS4ToUTF16
Categories
(Core :: XPCOM, defect)
Tracking
()
RESOLVED
DUPLICATE
of bug 316859
People
(Reporter: bsenf, Unassigned)
Details
User-Agent: Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.17) Gecko/20080926 SeaMonkey/1.1.12
Build Identifier: Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.17) Gecko/20080926 SeaMonkey/1.1.12
After long time of building new SM 1.1.12 without error (and do it again)
I can not start seamonkey ...:
ld.so.1: seamonkey-bin: fatal: relocation error: file seamonkey-1.1.12/dist/bin/components/libgklayout.so: symbol
__1cRAppendUCS4ToUTF166FkIrnSnsAString_internal__v_: referenced symbol not found
Here I found the function "AppendUCS4ToUTF16" (hidden)
Checking the source from previous version I found that this function
is new here (1.1.12)
I found also, that AppendUCS4ToUTF16 is used within:
xpcom/string/src/nsReadableUtils.cpp
xpcom/string/public/nsReadableUtils.h
layout/style/nsCSSScanner.cpp
parser/htmlparser/src/nsHTMLTokens.cpp
nsReadableUtils.cpp AppendUCS4ToUTF16(PRUint32 aSource, nsAString& aDest)
nsReadableUtils.h AppendUCS4ToUTF16(const PRUint32 aSource, nsAString& aDest);
As you can see this are for C++ compiler different (at least for our CC/CXX from SUN Studio 12).
% nm -A nsReadableUtils.o | grep UCS4
__1cRAppendUCS4ToUTF166FIrnSnsAString_internal__v_
% nm -D libgklayout.so | grep UCS4
__1cRAppendUCS4ToUTF166FkIrnSnsAString_internal__v_
You can also see that only one letter "k" in the middle of the symbol is different - uggs.
So the (linker) solution is very easy (my suggestion):
1) Change source and header to a common syntax => CONST as first parameter.
Now I have only to remove some few objects files and start compiling pipeline
again and the program seamonkey starts now.
Mfg
Reproducible: Always
Steps to Reproduce:
1.
2.
3.
Updated•17 years ago
|
Assignee: build-config → nobody
Component: Build Config → XPCOM
Product: SeaMonkey → Core
QA Contact: build-config → xpcom
Comment 1•17 years ago
|
||
since const PRUint32 is not our standard coding style, please remove the const from the .h file. If that works, please submit it as a patch.
Status: UNCONFIRMED → NEW
Ever confirmed: true
This is a duplicate of bug 316859. It is only triggered by the Sun Studio compiler, because Studio creates two different "mangled" symbols - one from the function prototype and one from the function definition itself. Only one of the symbols survives the compile and link of the libgklayout.so, and that one ends up being a different symbol than nsReadableUtils.o is looking for - this leads to the unresolved symbol at runtime linking.
gcc does not trigger this bug, because it doesn't seem to differentiate between the "const" and "non-const" arguments and thus it creates only a single mangled symbol which is resolved properly with no issues at runtime linking.
This bug was already identified in 11/2005 and fixed in the MOZILLA_1_8_BRANCH as well as the GECKO181_20080827_RELBRANCH_REAL under bug 316859. The only reason it missed making it into the SEAMONKEY_1_1_2_RELEASE was a combination of bug backports, bad timing, and a little miscommunication. The fix was actually implemented by adding the "const" to the function definition, not by dropping the "const" from the prototype.
There was extensive discussion of this bug - as well as how it snuck back into the Seamonkey release - today (9/28) in #seamonkey. A hand-patched version of the release was given the okay to be used for the official Solaris contrib builds. See the README for the Solaris 10 GTK2 build for the "Special Note for this Build".
Updated•17 years ago
|
Status: NEW → RESOLVED
Closed: 17 years ago
Resolution: --- → DUPLICATE
You need to log in
before you can comment on or make changes to this bug.
Description
•