Date: Tue, 27 Nov 2001 11:07:15 -0500 (EST) From: Andrew Gallatin <gallatin@cs.duke.edu> To: gnome@freebsd.org Cc: freebsd-alpha@freebsd.org Subject: native mozilla not building on alpha Message-ID: <15363.47667.320500.37327@grasshopper.cs.duke.edu>
next in thread | raw e-mail | index | archive | help
Hi, I've fixed a few bugs which get mozilla most of the way through the compile on alpha, but it crashes with a segv in the final stages of the build. I've appended a patch. This patch adds 3 files which do the following: files/patch-nsprpub::pr::include::md::_freebsd.cfg: - Add IS_64, like other 64-bit platforms have. files/patch-xpfe::bootstrap::nsAppRunner.cpp: - Use ieeefp.h rather than floatingpoint.h so that fpsetmask() proto gets used on alpha files/patch-extensions::transformiix::source::base::Double.cpp - Use ieeefp.h rather than floatingpoint.h so that fpsetmask() proto gets used on alpha - FP_X_DNML does not exist on alpha; do not use it. Hoever, things still don't work. The build dies like this: gmake[1]: Leaving directory `/home/gallatin/ports/www/mozilla/work/mozilla/mailnews' gmake[1]: Entering directory `/home/gallatin/ports/www/mozilla/work/mozilla/l10n' gmake[2]: Entering directory `/home/gallatin/ports/www/mozilla/work/mozilla/l10n/langpacks' gmake[2]: Leaving directory `/home/gallatin/ports/www/mozilla/work/mozilla/l10n/langpacks' gmake[1]: Leaving directory `/home/gallatin/ports/www/mozilla/work/mozilla/l10n' gmake[1]: Entering directory `/home/gallatin/ports/www/mozilla/work/mozilla/xpfe/bootstrap' ../../config/nsinstall -R -m 755 mozilla-bin ../../dist/bin ../../config/nsinstall -R mozilla ../../dist/bin ../../config/nsinstall -R splash.xpm ../../dist/bin gmake[1]: Leaving directory `/home/gallatin/ports/www/mozilla/work/mozilla/xpfe/bootstrap' Type Manifest File: /home/gallatin/ports/www/mozilla/work/mozilla/dist/bin/components/xpti.dat nsNativeComponentLoader: autoregistering begins. *** Registering UcharUtil components (all right -- a generic module!) *** Registering nsUConvModule components (all right -- a generic module!) *** Registering nsUCvJAModule components (all right -- a generic module!) RegSelf Shift_JIS to Unicode converter complete RegSelf EUC-JP to Unicode converter complete RegSelf ISO-2022-JP to Unicode converter complete RegSelf Unicode to Shift_JIS converter complete <...> *** Chrome Registration of skin: Checking for contents.rdf at jar:resource:/chrome/venkman.jar!/skin/modern/venkman/ *** Chrome Registration of locale: Checking for contents.rdf at jar:resource:/chrome/venkman.jar!/locale/en-US/venkman/ *** Chrome Registration of package: Checking for contents.rdf at jar:resource:/chrome/messenger.jar!/content/messenger/ *** Chrome Registration of package: Checking for contents.rdf at jar:resource:/chrome/messenger.jar!/content/messenger-region/ *** Chrome Registration of locale: Checking for contents.rdf at jar:resource:/chrome/en-US.jar!/locale/en-US/messenger/ *** Chrome Registration of locale: Checking for contents.rdf at jar:resource:/chrome/US.jar!/locale/US/messenger-region/Segmentation fault - core dumped *** Error code 139 Stop in /home/gallatin/ports/www/mozilla. *** Error code 1 Stop in /home/gallatin/ports/www/mozilla. *** Error code 1 Stop in /home/gallatin/ports/www/mozilla. <DING!>thunder/gallatin:mozilla> echo $cwd /usr/ports/www/mozilla Examining the core file, I see that XPTC_InvokeByIndex is calling a null function (eg, it's jumping to 0 and dying with a SEGV). <10:11am>thunder/gallatin:bin>gdb regxpcom regxpcom.core GNU gdb 4.18 Copyright 1998 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "alpha-unknown-freebsd"... Core was generated by `regxpcom'. Program terminated with signal 11, Segmentation fault. Reading symbols from /home/gallatin/ports/www/mozilla/work/mozilla/dist/bin/./libxpcom.so...done. <...> Reading symbols from /home/gallatin/ports/www/mozilla/work/mozilla/dist/bin/components/libabsyncsvc.so...done. Reading symbols from /usr/libexec/ld-elf.so.1...done. #0 0x0 in ?? () (gdb) bt #0 0x0 in ?? () (gdb) info frame Stack level 0, frame at 0x0: pc = 0x0; saved pc 0x1601c2c94 Arglist at 0xffffffffffffffd0, args: Locals at unknown address, Previous frame's sp is 0x0 (gdb) l * 0x1601c2c94 0x1601c2c94 is in invoke_copy_to_stack(unsigned long *, unsigned int, nsXPTCVariant *) (xptcinvoke_linux_alpha.cpp:94). < actually, this is a lie, its really in XPTC_InvokeByIndex >: (gdb) disassemble 0x1601c2c94 Dump of assembler code for function XPTC_InvokeByIndex: 0x1601c2c00 <XPTC_InvokeByIndex>: ldah gp,10(t12) <..> The saved PC matches up to where it tries to call a null virtual function (Line 169 of xptcinvoke_linux_alpha). If I run the mozzila script in work/mozilla/dist/bin with -g, and set breaks in XPTC_InvokeByIndex, I see that this happens the second time that XPTC_InvokeByIndex is called. The stack looks like this the first time it's called (when it does not crash): (gdb) where #0 0x1602fac00 in XPTC_InvokeByIndex () at xptcinvoke_linux_alpha.cpp:94 #1 0x160dee618 in XPCWrappedNative::CallMethod (ccx=@0x11ffa680, mode=301966648) at xpcwrappednative.cpp:2009 #2 0x160dfdc90 in XPC_WN_GetterSetter (cx=0x120214400, obj=0x11ffa680, argc=0, argv=0x12022a080, vp=0x11ffa7f0) at xpcwrappednativejsops.cpp:1298 #3 0x1601005cc in js_Invoke (cx=0x120214400, argc=301967568, flags=301967544) at jsinterp.c:832 #4 0x1601009e0 in js_InternalInvoke (cx=0x120214400, obj=0x12017d8d0, fval=4833409232, flags=538433744, argc=0, argv=0x0, rval=0x0) at jsinterp.c:924 #5 0x16011d594 in js_GetProperty (cx=0x120214400, obj=0x12017d8d0, id=4834069696, vp=0x11ffaac8) at jsobj.c:2440 #6 0x16010a898 in js_Interpret (cx=0x120214400, result=0x160e50494) at jsinterp.c:2623 #7 0x160100d14 in js_Execute (cx=0x120214400, chain=0x12017d730, script=0x1, down=0x0, special=0, result=0x11ffa870) at jsinterp.c:1012 #8 0x1600d25cc in JS_ExecuteScript (cx=0x120214400, obj=0x9, script=0x1, rval=0x120219780) at jsapi.c:3273 #9 0x160e51d60 in mozJSComponentLoader::GlobalForLocation (this=0x12016c800, aLocation=0x5425ec15 <Error reading address 0x5425ec15: Bad address>, component=0xffffffff80000001) at mozJSComponentLoader.cpp:1177 #10 0x160e50494 in mozJSComponentLoader::ModuleForLocation (this=0x12016c800, registryLocation=0x12016a380 "rel:nsProxyAutoConfig.js", component=0x12016c900) at mozJSComponentLoader.cpp:988 #11 0x160e4eed0 in mozJSComponentLoader::AttemptRegistration (this=0x12016c800, component=0x12016c900, deferred=0) at mozJSComponentLoader.cpp:828 #12 0x160e4e9b8 in mozJSComponentLoader::AutoRegisterComponent (this=0x12016c800, when=9, component=0x12016c900, registered=0x11ffb284) at mozJSComponentLoader.cpp:769 #13 0x160e4de94 in mozJSComponentLoader::RegisterComponentsInDir (this=0x12016c800, when=0, dir=0xffffffff80000000) at mozJSComponentLoader.cpp:588 #14 0x160e4da18 in mozJSComponentLoader::AutoRegisterComponents (this=0x120219780, when=9, aDirectory=0x1) at mozJSComponentLoader.cpp:544 #15 0x160299ef0 in nsComponentManagerImpl::AutoRegisterImpl (this=0x120060200, when=538019104, inDirSpec=0x1) at nsComponentManager.cpp:2933 #16 0x1602988f8 in nsComponentManagerImpl::AutoRegister (this=0x120060200, when=0, inDirSpec=0x0) at nsComponentManager.cpp:2834 #17 0x16029c570 in nsComponentManager::AutoRegister (when=0, directory=0x0) at nsComponentManager.cpp:3579 #18 0x120016924 in NS_SetupRegistry_1 (needAutoreg=539072384) at nsSetupRegistry.cpp:56 #19 0x12000fc5c in main1 (argc=536976136, argv=0x0, nativeApp=0x0) at nsAppRunner.cpp:1145 #20 0x120012498 in main (argc=1, argv=0x11ffb5e8) at nsAppRunner.cpp:1630 (gdb) c And like this when it does crash: (gdb) where #0 0x1602fac00 in XPTC_InvokeByIndex () at xptcinvoke_linux_alpha.cpp:94 #1 0x160dee618 in XPCWrappedNative::CallMethod (ccx=@0x11ffa910, mode=301967304) at xpcwrappednative.cpp:2009 #2 0x160dfd9e4 in XPC_WN_CallMethod (cx=0x120214400, obj=0x12017f9b0, argc=0, argv=0x11ffa910, vp=0x11ffaa80) at xpcwrappednativejsops.cpp:1266 #3 0x1601005cc in js_Invoke (cx=0x120214400, argc=0, flags=0) at jsinterp.c:832 #4 0x1601009e0 in js_InternalInvoke (cx=0x120214400, obj=0x12017f9b0, fval=4833409488, flags=0, argc=0, argv=0x0, rval=0x0) at jsinterp.c:924 #5 0x16012149c in js_TryMethod (cx=0x120214400, obj=0x12017f9b0, atom=0x120190f40, argc=0, argv=0x0, rval=0x11fface0) at jsobj.c:3371 #6 0x16011f438 in js_DefaultValue (cx=0x120214400, obj=0x12017f9b0, hint=JSTYPE_STRING, vp=0x11ffad00) at jsobj.c:2890 #7 0x1601490dc in js_ValueToString (cx=0x120214400, v=4833409456) at jsstr.c:2568 #8 0x1600f63c4 in js_ReportUncaughtException (cx=0x120214400) at jsexn.c:817 #9 0x1600d25ec in JS_ExecuteScript (cx=0x120214400, obj=0xc, script=0x1, rval=0x120245a80) at jsapi.c:3276 #10 0x160e51d60 in mozJSComponentLoader::GlobalForLocation (this=0x12016c800, aLocation=0x5425ec15 <Error reading address 0x5425ec15: Bad address>, component=0xffffffff80000001) at mozJSComponentLoader.cpp:1177 #11 0x160e50494 in mozJSComponentLoader::ModuleForLocation (this=0x12016c800, registryLocation=0x12016a380 "rel:nsProxyAutoConfig.js", component=0x12016c900) at mozJSComponentLoader.cpp:988 #12 0x160e4eed0 in mozJSComponentLoader::AttemptRegistration (this=0x12016c800, component=0x12016c900, deferred=0) at mozJSComponentLoader.cpp:828 #13 0x160e4e9b8 in mozJSComponentLoader::AutoRegisterComponent (this=0x12016c800, when=12, component=0x12016c900, registered=0x11ffb284) at mozJSComponentLoader.cpp:769 #14 0x160e4de94 in mozJSComponentLoader::RegisterComponentsInDir (this=0x12016c800, when=0, dir=0xffffffff80000000) at mozJSComponentLoader.cpp:588 #15 0x160e4da18 in mozJSComponentLoader::AutoRegisterComponents (this=0x120245a80, when=12, aDirectory=0x1) at mozJSComponentLoader.cpp:544 #16 0x160299ef0 in nsComponentManagerImpl::AutoRegisterImpl (this=0x120060200, when=538019104, inDirSpec=0x1) at nsComponentManager.cpp:2933 #17 0x1602988f8 in nsComponentManagerImpl::AutoRegister (this=0x120060200, when=0, inDirSpec=0x0) at nsComponentManager.cpp:2834 #18 0x16029c570 in nsComponentManager::AutoRegister (when=0, directory=0x0) at nsComponentManager.cpp:3579 #19 0x120016924 in NS_SetupRegistry_1 (needAutoreg=539253376) at nsSetupRegistry.cpp:56 #20 0x12000fc5c in main1 (argc=536976136, argv=0x0, nativeApp=0x0) at nsAppRunner.cpp:1145 #21 0x120012498 in main (argc=1, argv=0x11ffb5e8) at nsAppRunner.cpp:1630 I don't know didly squat about the convoluted glue that XPTC_Invoke seems to be doing. Any suggestions on how I can find where the bogus (0x0) PC is coming from? It seems to have something to do with reporting an uncaught Javascript exception. Is Javascript itself 64-bit safe? It generates loads of worrisome messages: Building deps for jsparse.c cc -o jsparse.o -c -DOSTYPE=\"FreeBSD4\" -DOSARCH=\"FreeBSD\" -DOJI -DEXPORT_JS_API -DJS_USE_SAFE_ARENA -I../../dist/include/js -I../../dist/include -I/home/gallatin/ports/www/mozilla/work/mozilla/dist/include/nspr -I/usr/local/include -I/usr/local/include -I. -I/usr/X11R6/include -fPIC -I/usr/X11R6/include -I/usr/X11R6/include -Wall -W -Wno-unused -Wpointer-arith -Wcast-align -Wno-long-long -O -pipe -mcpu=ev56 -pipe -DDEBUG -DDEBUG_gallatin -DTRACING -g -I/usr/X11R6/include -I/usr/X11R6/include -include ../../config-defs.h -DMOZILLA_CLIENT jsparse.c jsparse.c: In function `HasFinalReturn': jsparse.c:446: warning: cast increases required alignment of target type jsparse.c:463: warning: cast increases required alignment of target type jsparse.c: In function `FunctionDef': jsparse.c:794: warning: cast to pointer from integer of different size jsparse.c: In function `Statement': <...> Thanks, Drew --- /dev/null Tue Nov 27 08:10:33 2001 +++ files/patch-nsprpub::pr::include::md::_freebsd.cfg Mon Nov 26 17:17:31 2001 @@ -0,0 +1,13 @@ +--- nsprpub/pr/include/md/_freebsd.cfg.orig Mon Nov 26 17:07:20 2001 ++++ nsprpub/pr/include/md/_freebsd.cfg Mon Nov 26 17:15:01 2001 +@@ -93,8 +93,8 @@ + + #elif defined(__alpha) + +-#define IS_LITTLE_ENDIAN 1 +-#undef IS_BIG_ENDIAN ++#define IS_64 ++ + #define HAVE_LONG_LONG + #define HAVE_ALIGNED_DOUBLES + #define HAVE_ALIGNED_LONGLONGS --- /dev/null Tue Nov 27 08:10:33 2001 +++ files/patch-xpfe::bootstrap::nsAppRunner.cpp Mon Nov 26 17:00:02 2001 @@ -0,0 +1,11 @@ +--- xpfe/bootstrap/nsAppRunner.cpp.orig Mon Nov 26 16:53:29 2001 ++++ xpfe/bootstrap/nsAppRunner.cpp Mon Nov 26 16:54:12 2001 +@@ -1060,7 +1060,7 @@ + + #if defined(FREEBSD) + // pick up fpsetmask prototype. +-#include <floatingpoint.h> ++#include <ieeefp.h> + #endif + + // Note: nativeApp is an owning reference that this function has responsibility --- /dev/null Tue Nov 27 08:10:33 2001 +++ files/patch-extensions::transformiix::source::base::Double.cpp Mon Nov 26 16:58:32 2001 @@ -0,0 +1,23 @@ +--- extensions/transformiix/source/base/Double.cpp.orig Mon Nov 26 16:55:21 2001 ++++ extensions/transformiix/source/base/Double.cpp Mon Nov 26 16:56:08 2001 +@@ -41,7 +41,7 @@ + #endif + //A trick to handle IEEE floating point exceptions on FreeBSD - E.D. + #ifdef __FreeBSD__ +-#include <floatingpoint.h> ++#include <ieeefp.h> + #endif + #ifndef TX_EXE + #include "prdtoa.h" +@@ -56,7 +56,11 @@ + + //A trick to handle IEEE floating point exceptions on FreeBSD - E.D. + #ifdef __FreeBSD__ ++#ifdef __alpha__ ++fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP; ++#else + fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML; ++#endif + fp_except_t oldmask = fpsetmask(~allmask); + #endif + To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-alpha" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?15363.47667.320500.37327>