[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: ia32 compatibility and gcc-3.0



On Mon, Sep 17, 2001 at 11:17:45AM -0700, David Mosberger wrote:
Content-Description: message body text
> >>>>> On Mon, 17 Sep 2001 14:13:19 -0400, Rick Haines <rick@kuroyi.net> said:
> 
>   Rick> Can you send me a url for this?  I did a brief search friday
>   Rick> but didn't find anything.
> 
> No URL, but I attached the instructions that I mailed to Jeff a while
> ago.  Just out of curiosity: how does your mozilla/ia64 effort relate
> to Jeff's?

It works just fine after applying the patches.  There were some failed
hunks as can be expected.  It actually starts up fairly fast.

If you want any more detailed info let me know.

Content-Description: forwarded message
> From: David Mosberger <davidm@hpl.hp.com>
> Subject: Mozilla/ia64 patch & instructions
> To: jlicquia@progeny.com
> cc: davidm@hpl.hp.com
> Reply-To: davidm@hpl.hp.com
> X-URL: http://www.hpl.hp.com/personal/David_Mosberger/
> 
Content-Description: message body text
> Hi Jeff,
> 
> Here is the promised receipe and patches.  I assume you're much more
> familiar with building Mozilla than I am, but here is the .mozconfig
> file I'm using:
> 
> <---------------------------------------------------------------------->
> # sh
> # Build configuration script
> #
> # See http://www.mozilla.org/build/unix.html for build instructions.
> #
> 
> # Options for client.mk.
> mk_add_options MOZ_MAKE_FLAGS=-j2
> 
> # Options for 'configure' (same as command-line options).
> ac_add_options --disable-tests
> ac_add_options --enable-optimize="-pipe -g -O"
> ac_add_options --disable-debug
> ac_add_options --enable-crypto
> ac_add_options --enable-mathml
> ac_add_options --enable-svg
> ac_add_options --enable-ldap
> <---------------------------------------------------------------------->
> 
> I didn't have much luck with the svg extension (it crashes the browser
> immediately) and I don't know how to test the ldap support, but the
> crypto and mathml extensions work fine.  Does Debian normally build
> the mathml extension?  I hope so as it really make life easier for a
> lot of scientists etc... ;-)
> 
> Now, how do you go about building mozilla:
> 
>  (1) Extract the libffi tar ball from the first attachment below.
>      Then you'll need to build and install it so that it can be found
>      with -lffi.  This version of libffi has been extended to suit
>      the needs of Mozilla, but it's a proper superset, so it should be
>      OK if you replace an existing libffi with this version.  (We'll
>      need to work with the libffi maintainer to get these extensions
>      into the official libffi release, but this hasn't happened yet.)
> 
>  (2) Fetch the mozilla source tree and apply the patch in the second
>      attachement below.  I'm using the sources from the CVS tree.
>      IIRC, I didn't have much luck with the 0.9.2 tree (lots of weird
>      unaligned accesses and frequent crashes), but the current CVS
>      tree seems to be good again).  The patch does the following
>      things:
> 
> 	(a) Change a couple of NS_REINTERPRET_CAST() to use a target
> 	    type of PRUptrdiff instead of PRInt32.  Without these
> 	    changes, gcc3.0 is not happy (not sure why, I'm no
> 	    C++ expert).
> 
> 	(b) Add "using namespace std" to a couple of files.  Without
> 	    these, gcc3.0 is not hapy (not sure why, I'm no C++
> 	    expert).
> 
> 	(c) Add ia64 linux support to _linux.cfg, _linux.h, Linux.mk,
> 	    and xpcom/reflect/xptcall/src/md/unix/Makefile.in.
> 
> 	(d) Add -lffi as EXTRA_DSO_LDOPTS to xpcom/build/Makefile.in.
> 	    This should obviously be done only for targets that use
> 	    libffi (IA-64 Linux only at the moment), but I don't
> 	    know how to do this with the Mozilla build environment.
> 
> 	(e) Add a workaround for gcc3.0 to
> 	    xpinstall/src/nsSoftwareUpdate.cpp.  In this file, if
> 	    global variable mProgramDir is initialized to "nsnull",
> 	    then gcc3.0 crashes.  Not initializing the variable avoids
> 	    the compiler crash but it could be that it has other ill
> 	    side-effects (though if there are, I haven't noticed).
> 
>  (3) Apply the patch contained in the third attachment.  This patch
>      adds the following new files:
> 
>       - nsprpub/pr/src/md/unix/os_Linux_ia64.s
> 		This was written by a Netscape engineer but for some
> 		reason was never checked into the official source tree.
> 
>       - xpcom/reflect/xptcall/src/md/unix/xptcstubs_ffi.cpp
> 		This contains my libffi based implementation of
> 		the stubs facility of xptcall.  This file should
> 		be portable assuming you have an extended libffi for the
> 		target platform.
> 
>       - xpcom/reflect/xptcall/src/md/unix/xptcinvoke_ffi.cpp
> 		The contains the libffi based implementation of
> 		the invocation facility of xptcall.  This file
> 		also should be portable with the exception that
> 		the layout of the vtable is compiler/platform
> 		dependent.  Look for "struct vtable" in this file.
> 
>       - xpcom/reflect/xptcall/src/md/unix/xptcstubs_ffi_mangled.h
> 		A generated file that contains the mangled names
> 		of the stubs.  This is needed by xptcstubs_ffi.cpp
> 
>       - xpcom/reflect/xptcall/src/md/unix/mk-mangled.sh
> 		A script that can be used to generate
> 		xptcstubs_ffi_mangled.h.  It would be nice to invoke
> 		this automatically during the build process, but again
> 		I don't know how to do this.
> 
>       - xpcom/reflect/xptcall/src/md/unix/dummy.cpp
> 		A helper file needed to generate xptcstubs_ffi_mangled.h.
> 
>      Note: the patch includes a version of xptcstubs_ffi_mangled.h
>      which is suitable for use with gcc3.0.  The name mangling rules
>      changed between gcc2.xx and gcc3.0 so if you want to use a different
>      compiler, you'd have to re-generate this header file.  The way to do
>      this is to compile dummy.cpp into dummy.o (using the same options as
>      for xptcstubs_ffi.cpp) and then run:
> 
> 		$ mk-mangled.sh dummy.o > xptcstubs_ffi_manged.h
> 
>      I think it would be a good idea if this file was always
>      re-generated automatically during a build for a target that is
>      based on libffi, but perhaps that's too difficult.
> 
> Once you have all this, you should be able to build mozilla with gcc3.0.
> I recommend turning on -O as without -O, things are really slow.  There
> is one file that gets miscompiled with -O, however, so that one must
> be compiled without optimization.  The file is:
> 
> 	content/xbl/src/nsXBLPrototypeBinding.cpp
> 
> What I did was to compile this file into an assembly file with
> optimization turned off.  After that, Mozilla automatically generates
> the .o from the .s file, so once the .s exists, the build can run
> automatically.
> 
> I couldn't get mozilla to work with -O2.
> 
> Once you have a working mozilla, you may notice that is starts up very
> slowly (like 40 seconds between starting mozilla and getting the first
> window).  If so, you need to update your ld.so.  The best thing to do
> would be to get libc from the current CVS tree as it has all the
> necessary fixes.
> 
> Like I said, this isn't very pretty (though the result is! ;-).  It
> would be nice if we could get the gcc3.0 bugs fixed quickly, as that
> would remove a major build headache.  Unfortunately, I can't do much
> about nsXBLPrototypeBinding.cpp because my C++ knowledge is too
> limited to generate a good bug report.  I know the function that gets
> miscompiled, but not much more.
> 
> Please let me know if you have any questions.  Also, if you prefer I
> could make a tar ball of the source tree I'm using, though I hope that
> won't be necessary.
> 
> Good luck,
> 
> 	--david
> 


Content-Description: mozilla.diff
> Index: content/base/src/nsDocumentEncoder.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/content/base/src/nsDocumentEncoder.cpp,v
> retrieving revision 1.51
> diff -u -r1.51 nsDocumentEncoder.cpp
> --- content/base/src/nsDocumentEncoder.cpp	2001/07/13 13:38:04	1.51
> +++ content/base/src/nsDocumentEncoder.cpp	2001/07/28 02:02:14
> @@ -666,9 +666,9 @@
>        nsCOMPtr<nsIDOMNode> childAsNode;
>        PRInt32 startOffset = 0, endOffset = -1;
>        if (startNode == content)
> -        startOffset = NS_REINTERPRET_CAST(PRInt32, mStartOffsets[mStartRootIndex - aDepth]);
> +        startOffset = NS_REINTERPRET_CAST(PRUptrdiff, mStartOffsets[mStartRootIndex - aDepth]);
>        if (endNode == content)
> -        endOffset = NS_REINTERPRET_CAST(PRInt32, mEndOffsets[mEndRootIndex - aDepth]);
> +        endOffset = NS_REINTERPRET_CAST(PRUptrdiff, mEndOffsets[mEndRootIndex - aDepth]);
>        // generated content will cause offset values of -1 to be returned.  
>        PRInt32 j, childCount=0;
>        rv = content->ChildCount(childCount);
> Index: extensions/transformiix/source/base/DefaultStringComparator.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/base/DefaultStringComparator.cpp,v
> retrieving revision 1.3
> diff -u -r1.3 DefaultStringComparator.cpp
> --- extensions/transformiix/source/base/DefaultStringComparator.cpp	2001/07/03 00:35:09	1.3
> +++ extensions/transformiix/source/base/DefaultStringComparator.cpp	2001/07/28 02:02:14
> @@ -22,6 +22,8 @@
>   *
>   */
>  
> +using namespace std;
> +
>  #include "StringComparator.h"
>  
>  /**
> Index: extensions/transformiix/source/base/Double.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/base/Double.cpp,v
> retrieving revision 1.8
> diff -u -r1.8 Double.cpp
> --- extensions/transformiix/source/base/Double.cpp	2001/07/11 09:42:56	1.8
> +++ extensions/transformiix/source/base/Double.cpp	2001/07/28 02:02:14
> @@ -33,6 +33,8 @@
>   *
>   */
>  
> +using namespace std;
> +
>  #include "primitives.h"
>  #include  <math.h>
>  #ifdef WIN32
> Index: extensions/transformiix/source/base/Integer.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/base/Integer.cpp,v
> retrieving revision 1.4
> diff -u -r1.4 Integer.cpp
> --- extensions/transformiix/source/base/Integer.cpp	2001/07/03 00:37:57	1.4
> +++ extensions/transformiix/source/base/Integer.cpp	2001/07/28 02:02:14
> @@ -23,6 +23,8 @@
>   *
>   */
>  
> +using namespace std;
> +
>  #include "primitives.h"
>  #include "baseutils.h"
>  
> Index: extensions/transformiix/source/base/NamedMap.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/base/NamedMap.cpp,v
> retrieving revision 1.10
> diff -u -r1.10 NamedMap.cpp
> --- extensions/transformiix/source/base/NamedMap.cpp	2001/07/03 00:39:07	1.10
> +++ extensions/transformiix/source/base/NamedMap.cpp	2001/07/28 02:02:14
> @@ -31,6 +31,8 @@
>   * A Named Map for TxObjects
>  **/
>  
> +using namespace std;
> +
>  #include "NamedMap.h"
>  
>    //-------------/
> Index: extensions/transformiix/source/base/SimpleErrorObserver.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/base/SimpleErrorObserver.cpp,v
> retrieving revision 1.4
> diff -u -r1.4 SimpleErrorObserver.cpp
> --- extensions/transformiix/source/base/SimpleErrorObserver.cpp	2001/07/03 00:43:06	1.4
> +++ extensions/transformiix/source/base/SimpleErrorObserver.cpp	2001/07/28 02:02:14
> @@ -23,6 +23,8 @@
>   *
>   */
>  
> +using namespace std;
> +
>  #include "ErrorObserver.h"
>  
>  /**
> Index: extensions/transformiix/source/base/StringComparator.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/base/StringComparator.cpp,v
> retrieving revision 1.2
> diff -u -r1.2 StringComparator.cpp
> --- extensions/transformiix/source/base/StringComparator.cpp	2001/07/03 00:43:25	1.2
> +++ extensions/transformiix/source/base/StringComparator.cpp	2001/07/28 02:02:14
> @@ -22,6 +22,8 @@
>   *
>   */
>  
> +using namespace std;
> +
>  #include "StringComparator.h"
>  
>  
> Index: extensions/transformiix/source/base/StringList.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/base/StringList.cpp,v
> retrieving revision 1.11
> diff -u -r1.11 StringList.cpp
> --- extensions/transformiix/source/base/StringList.cpp	2001/07/03 00:43:51	1.11
> +++ extensions/transformiix/source/base/StringList.cpp	2001/07/28 02:02:14
> @@ -29,6 +29,8 @@
>   * StringList
>  **/
>  
> +using namespace std;
> +
>  #ifdef TX_EXE
>  #include <iostream.h>
>  #endif
> Index: extensions/transformiix/source/base/Tokenizer.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/base/Tokenizer.cpp,v
> retrieving revision 1.4
> diff -u -r1.4 Tokenizer.cpp
> --- extensions/transformiix/source/base/Tokenizer.cpp	2001/07/03 00:44:38	1.4
> +++ extensions/transformiix/source/base/Tokenizer.cpp	2001/07/28 02:02:14
> @@ -53,6 +53,8 @@
>   * A simple String tokenizer
>  **/
>  
> +using namespace std;
> +
>  #include "Tokenizer.h"
>  
>  /**
> Index: extensions/transformiix/source/net/URIUtils.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/net/URIUtils.cpp,v
> retrieving revision 1.17
> diff -u -r1.17 URIUtils.cpp
> --- extensions/transformiix/source/net/URIUtils.cpp	2001/07/03 00:45:28	1.17
> +++ extensions/transformiix/source/net/URIUtils.cpp	2001/07/28 02:02:14
> @@ -31,6 +31,8 @@
>   *
>   */
>  
> +using namespace std;
> +
>  #include "URIUtils.h"
>  
>  #ifndef TX_EXE
> Index: extensions/transformiix/source/xml/XMLDOMUtils.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/XMLDOMUtils.cpp,v
> retrieving revision 1.19
> diff -u -r1.19 XMLDOMUtils.cpp
> --- extensions/transformiix/source/xml/XMLDOMUtils.cpp	2001/07/03 00:46:06	1.19
> +++ extensions/transformiix/source/xml/XMLDOMUtils.cpp	2001/07/28 02:02:14
> @@ -27,6 +27,8 @@
>   * XMLDOMUtils
>  **/
>  
> +using namespace std;
> +
>  #include "XMLDOMUtils.h"
>  
>  /**
> Index: extensions/transformiix/source/xml/XMLUtils.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/XMLUtils.cpp,v
> retrieving revision 1.6
> diff -u -r1.6 XMLUtils.cpp
> --- extensions/transformiix/source/xml/XMLUtils.cpp	2001/07/03 00:46:57	1.6
> +++ extensions/transformiix/source/xml/XMLUtils.cpp	2001/07/28 02:02:14
> @@ -29,6 +29,8 @@
>   * An XML utility class
>  **/
>  
> +using namespace std;
> +
>  #include "XMLUtils.h"
>  
>    //------------------------------/
> Index: extensions/transformiix/source/xml/dom/mozImpl/MozillaAttr.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/dom/mozImpl/MozillaAttr.cpp,v
> retrieving revision 1.7
> diff -u -r1.7 MozillaAttr.cpp
> --- extensions/transformiix/source/xml/dom/mozImpl/MozillaAttr.cpp	2001/04/03 12:22:05	1.7
> +++ extensions/transformiix/source/xml/dom/mozImpl/MozillaAttr.cpp	2001/07/28 02:02:14
> @@ -26,6 +26,8 @@
>     interface into a TransforMIIX Attr interface.
>  */
>  
> +using namespace std;
> +
>  #include "mozilladom.h"
>  
>  /**
> Index: extensions/transformiix/source/xml/dom/mozImpl/MozillaCDATASection.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/dom/mozImpl/MozillaCDATASection.cpp,v
> retrieving revision 1.3
> diff -u -r1.3 MozillaCDATASection.cpp
> --- extensions/transformiix/source/xml/dom/mozImpl/MozillaCDATASection.cpp	2001/04/03 12:22:45	1.3
> +++ extensions/transformiix/source/xml/dom/mozImpl/MozillaCDATASection.cpp	2001/07/28 02:02:14
> @@ -26,6 +26,8 @@
>     interface into a TransforMIIX CDATASection interface.
>  */
>  
> +using namespace std;
> +
>  #include "mozilladom.h"
>  
>  /**
> Index: extensions/transformiix/source/xml/dom/mozImpl/MozillaCharacterData.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/dom/mozImpl/MozillaCharacterData.cpp,v
> retrieving revision 1.5
> diff -u -r1.5 MozillaCharacterData.cpp
> --- extensions/transformiix/source/xml/dom/mozImpl/MozillaCharacterData.cpp	2001/06/26 14:08:31	1.5
> +++ extensions/transformiix/source/xml/dom/mozImpl/MozillaCharacterData.cpp	2001/07/28 02:02:14
> @@ -26,6 +26,8 @@
>     nsIDOMCharacterData interface into a TransforMIIX CharacterData interface.
>  */
>  
> +using namespace std;
> +
>  #include "mozilladom.h"
>  
>  /**
> Index: extensions/transformiix/source/xml/dom/mozImpl/MozillaComment.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/dom/mozImpl/MozillaComment.cpp,v
> retrieving revision 1.3
> diff -u -r1.3 MozillaComment.cpp
> --- extensions/transformiix/source/xml/dom/mozImpl/MozillaComment.cpp	2001/04/03 12:22:52	1.3
> +++ extensions/transformiix/source/xml/dom/mozImpl/MozillaComment.cpp	2001/07/28 02:02:14
> @@ -26,6 +26,8 @@
>     interface into a TransforMIIX Comment interface.
>  */
>  
> +using namespace std;
> +
>  #include "mozilladom.h"
>  
>  /**
> Index: extensions/transformiix/source/xml/dom/mozImpl/MozillaDOMImplementation.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/dom/mozImpl/MozillaDOMImplementation.cpp,v
> retrieving revision 1.4
> diff -u -r1.4 MozillaDOMImplementation.cpp
> --- extensions/transformiix/source/xml/dom/mozImpl/MozillaDOMImplementation.cpp	2001/04/03 12:22:26	1.4
> +++ extensions/transformiix/source/xml/dom/mozImpl/MozillaDOMImplementation.cpp	2001/07/28 02:02:14
> @@ -27,6 +27,8 @@
>     interface.
>  */
>  
> +using namespace std;
> +
>  #include "mozilladom.h"
>  
>  /**
> Index: extensions/transformiix/source/xml/dom/mozImpl/MozillaDocument.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/dom/mozImpl/MozillaDocument.cpp,v
> retrieving revision 1.16
> diff -u -r1.16 MozillaDocument.cpp
> --- extensions/transformiix/source/xml/dom/mozImpl/MozillaDocument.cpp	2001/07/03 00:49:46	1.16
> +++ extensions/transformiix/source/xml/dom/mozImpl/MozillaDocument.cpp	2001/07/28 02:02:14
> @@ -26,6 +26,8 @@
>     interface into a TransforMIIX Document interface.
>  */
>  
> +using namespace std;
> +
>  #include "mozilladom.h"
>  #include "nsLayoutCID.h"
>  #include "nsIURL.h"
> Index: extensions/transformiix/source/xml/dom/mozImpl/MozillaDocumentFragment.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/dom/mozImpl/MozillaDocumentFragment.cpp,v
> retrieving revision 1.4
> diff -u -r1.4 MozillaDocumentFragment.cpp
> --- extensions/transformiix/source/xml/dom/mozImpl/MozillaDocumentFragment.cpp	2001/04/03 12:22:20	1.4
> +++ extensions/transformiix/source/xml/dom/mozImpl/MozillaDocumentFragment.cpp	2001/07/28 02:02:14
> @@ -27,6 +27,8 @@
>     interface.
>  */
>  
> +using namespace std;
> +
>  #include "mozilladom.h"
>  
>  /**
> Index: extensions/transformiix/source/xml/dom/mozImpl/MozillaDocumentType.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/dom/mozImpl/MozillaDocumentType.cpp,v
> retrieving revision 1.4
> diff -u -r1.4 MozillaDocumentType.cpp
> --- extensions/transformiix/source/xml/dom/mozImpl/MozillaDocumentType.cpp	2001/04/03 12:22:23	1.4
> +++ extensions/transformiix/source/xml/dom/mozImpl/MozillaDocumentType.cpp	2001/07/28 02:02:14
> @@ -26,6 +26,8 @@
>     interface into a TransforMIIX DocumentType interface.
>  */
>  
> +using namespace std;
> +
>  #include "mozilladom.h"
>  
>  /**
> Index: extensions/transformiix/source/xml/dom/mozImpl/MozillaElement.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/dom/mozImpl/MozillaElement.cpp,v
> retrieving revision 1.8
> diff -u -r1.8 MozillaElement.cpp
> --- extensions/transformiix/source/xml/dom/mozImpl/MozillaElement.cpp	2001/04/30 14:04:07	1.8
> +++ extensions/transformiix/source/xml/dom/mozImpl/MozillaElement.cpp	2001/07/28 02:02:14
> @@ -26,6 +26,8 @@
>     interface into a TransforMIIX Element interface.
>  */
>  
> +using namespace std;
> +
>  #include "mozilladom.h"
>  
>  /**
> Index: extensions/transformiix/source/xml/dom/mozImpl/MozillaEntity.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/dom/mozImpl/MozillaEntity.cpp,v
> retrieving revision 1.4
> diff -u -r1.4 MozillaEntity.cpp
> --- extensions/transformiix/source/xml/dom/mozImpl/MozillaEntity.cpp	2001/04/03 12:22:30	1.4
> +++ extensions/transformiix/source/xml/dom/mozImpl/MozillaEntity.cpp	2001/07/28 02:02:14
> @@ -26,6 +26,8 @@
>     interface into a TransforMIIX Entity interface.
>  */
>  
> +using namespace std;
> +
>  #include "mozilladom.h"
>  
>  /**
> Index: extensions/transformiix/source/xml/dom/mozImpl/MozillaEntityReference.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/dom/mozImpl/MozillaEntityReference.cpp,v
> retrieving revision 1.4
> diff -u -r1.4 MozillaEntityReference.cpp
> --- extensions/transformiix/source/xml/dom/mozImpl/MozillaEntityReference.cpp	2001/04/03 12:22:34	1.4
> +++ extensions/transformiix/source/xml/dom/mozImpl/MozillaEntityReference.cpp	2001/07/28 02:02:14
> @@ -27,6 +27,8 @@
>     interface.
>  */
>  
> +using namespace std;
> +
>  #include "mozilladom.h"
>  
>  /**
> Index: extensions/transformiix/source/xml/dom/mozImpl/MozillaNamedNodeMap.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/dom/mozImpl/MozillaNamedNodeMap.cpp,v
> retrieving revision 1.8
> diff -u -r1.8 MozillaNamedNodeMap.cpp
> --- extensions/transformiix/source/xml/dom/mozImpl/MozillaNamedNodeMap.cpp	2001/06/26 14:08:39	1.8
> +++ extensions/transformiix/source/xml/dom/mozImpl/MozillaNamedNodeMap.cpp	2001/07/28 02:02:14
> @@ -26,6 +26,8 @@
>     nsIDOMNamedNodeMap interface into a TransforMIIX NamedNodeMap interface.
>  */
>  
> +using namespace std;
> +
>  #include "mozilladom.h"
>  
>  /**
> Index: extensions/transformiix/source/xml/dom/mozImpl/MozillaNode.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/dom/mozImpl/MozillaNode.cpp,v
> retrieving revision 1.13
> diff -u -r1.13 MozillaNode.cpp
> --- extensions/transformiix/source/xml/dom/mozImpl/MozillaNode.cpp	2001/04/30 14:04:08	1.13
> +++ extensions/transformiix/source/xml/dom/mozImpl/MozillaNode.cpp	2001/07/28 02:02:14
> @@ -26,6 +26,8 @@
>     interface into a TransforMIIX Node interface.
>  */
>  
> +using namespace std;
> +
>  #include "mozilladom.h"
>  #include "ArrayList.h"
>  #include "URIUtils.h"
> Index: extensions/transformiix/source/xml/dom/mozImpl/MozillaNodeList.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/dom/mozImpl/MozillaNodeList.cpp,v
> retrieving revision 1.4
> diff -u -r1.4 MozillaNodeList.cpp
> --- extensions/transformiix/source/xml/dom/mozImpl/MozillaNodeList.cpp	2001/06/26 14:08:42	1.4
> +++ extensions/transformiix/source/xml/dom/mozImpl/MozillaNodeList.cpp	2001/07/28 02:02:14
> @@ -26,6 +26,8 @@
>     interface into a TransforMIIX NodeList interface.
>  */
>  
> +using namespace std;
> +
>  #include "mozilladom.h"
>  
>  /**
> Index: extensions/transformiix/source/xml/dom/mozImpl/MozillaNotation.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/dom/mozImpl/MozillaNotation.cpp,v
> retrieving revision 1.4
> diff -u -r1.4 MozillaNotation.cpp
> --- extensions/transformiix/source/xml/dom/mozImpl/MozillaNotation.cpp	2001/04/03 12:22:38	1.4
> +++ extensions/transformiix/source/xml/dom/mozImpl/MozillaNotation.cpp	2001/07/28 02:02:14
> @@ -26,6 +26,8 @@
>     interface into a TransforMIIX Notation interface.
>  */
>  
> +using namespace std;
> +
>  #include "mozilladom.h"
>  
>  /**
> Index: extensions/transformiix/source/xml/dom/mozImpl/MozillaObjectWrapper.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/dom/mozImpl/MozillaObjectWrapper.cpp,v
> retrieving revision 1.2
> diff -u -r1.2 MozillaObjectWrapper.cpp
> --- extensions/transformiix/source/xml/dom/mozImpl/MozillaObjectWrapper.cpp	2001/01/12 20:06:20	1.2
> +++ extensions/transformiix/source/xml/dom/mozImpl/MozillaObjectWrapper.cpp	2001/07/28 02:02:14
> @@ -27,6 +27,8 @@
>     releasing the Mozilla objects.
>  */
>  
> +using namespace std;
> +
>  #include "mozilladom.h"
>  
>  MOZ_DECL_CTOR_COUNTER(MozillaObjectWrapper)
> Index: extensions/transformiix/source/xml/dom/mozImpl/MozillaProcInstruction.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/dom/mozImpl/MozillaProcInstruction.cpp,v
> retrieving revision 1.4
> diff -u -r1.4 MozillaProcInstruction.cpp
> --- extensions/transformiix/source/xml/dom/mozImpl/MozillaProcInstruction.cpp	2001/04/03 12:22:41	1.4
> +++ extensions/transformiix/source/xml/dom/mozImpl/MozillaProcInstruction.cpp	2001/07/28 02:02:14
> @@ -27,6 +27,8 @@
>     ProcessingInstruction interface.
>  */
>  
> +using namespace std;
> +
>  #include "mozilladom.h"
>  
>  /**
> Index: extensions/transformiix/source/xml/dom/mozImpl/MozillaText.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/dom/mozImpl/MozillaText.cpp,v
> retrieving revision 1.4
> diff -u -r1.4 MozillaText.cpp
> --- extensions/transformiix/source/xml/dom/mozImpl/MozillaText.cpp	2001/06/26 14:08:51	1.4
> +++ extensions/transformiix/source/xml/dom/mozImpl/MozillaText.cpp	2001/07/28 02:02:14
> @@ -26,6 +26,8 @@
>     interface into a TransforMIIX Text interface.
>  */
>  
> +using namespace std;
> +
>  #include "mozilladom.h"
>  
>  /**
> Index: extensions/transformiix/source/xml/parser/XMLParser.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/parser/XMLParser.cpp,v
> retrieving revision 1.19
> diff -u -r1.19 XMLParser.cpp
> --- extensions/transformiix/source/xml/parser/XMLParser.cpp	2001/07/03 00:46:31	1.19
> +++ extensions/transformiix/source/xml/parser/XMLParser.cpp	2001/07/28 02:02:14
> @@ -36,6 +36,8 @@
>   *
>   */
>  
> +using namespace std;
> +
>  #include "XMLParser.h"
>  #ifndef TX_EXE
>  #include "nsSyncLoader.h"
> Index: extensions/transformiix/source/xml/util/DOMHelper.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xml/util/DOMHelper.cpp,v
> retrieving revision 1.15
> diff -u -r1.15 DOMHelper.cpp
> --- extensions/transformiix/source/xml/util/DOMHelper.cpp	2001/07/03 00:35:15	1.15
> +++ extensions/transformiix/source/xml/util/DOMHelper.cpp	2001/07/28 02:02:14
> @@ -25,6 +25,8 @@
>   * A class used to overcome DOM 1.0 deficiencies
>  **/
>  
> +using namespace std;
> +
>  #include "DOMHelper.h"
>  #include "primitives.h"
>  
> Index: extensions/transformiix/source/xpath/Expr.h
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xpath/Expr.h,v
> retrieving revision 1.16
> diff -u -r1.16 Expr.h
> --- extensions/transformiix/source/xpath/Expr.h	2001/07/03 00:36:19	1.16
> +++ extensions/transformiix/source/xpath/Expr.h	2001/07/28 02:02:14
> @@ -34,6 +34,7 @@
>  #ifndef TRANSFRMX_EXPR_H
>  #define TRANSFRMX_EXPR_H
>  
> +using namespace std;
>  
>  #include "TxString.h"
>  #include "ErrorObserver.h"
> Index: extensions/transformiix/source/xpath/ExprLexer.h
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xpath/ExprLexer.h,v
> retrieving revision 1.10
> diff -u -r1.10 ExprLexer.h
> --- extensions/transformiix/source/xpath/ExprLexer.h	2001/07/03 00:36:38	1.10
> +++ extensions/transformiix/source/xpath/ExprLexer.h	2001/07/28 02:02:14
> @@ -31,6 +31,8 @@
>  #ifndef MITREXSL_EXPRLEXER_H
>  #define MITREXSL_EXPRLEXER_H
>  
> +using namespace std;
> +
>  #include "TxString.h"
>  #include "baseutils.h"
>  
> Index: extensions/transformiix/source/xpath/ExprParser.h
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xpath/ExprParser.h,v
> retrieving revision 1.7
> diff -u -r1.7 ExprParser.h
> --- extensions/transformiix/source/xpath/ExprParser.h	2001/07/03 00:36:57	1.7
> +++ extensions/transformiix/source/xpath/ExprParser.h	2001/07/28 02:02:15
> @@ -23,6 +23,8 @@
>   * 
>   */
>  
> +using namespace std;
> +
>  /**
>   * ExprParser
>   * This class is used to parse XSL Expressions
> Index: extensions/transformiix/source/xpath/ExprResult.h
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xpath/ExprResult.h,v
> retrieving revision 1.12
> diff -u -r1.12 ExprResult.h
> --- extensions/transformiix/source/xpath/ExprResult.h	2001/07/03 00:37:04	1.12
> +++ extensions/transformiix/source/xpath/ExprResult.h	2001/07/28 02:02:15
> @@ -28,6 +28,8 @@
>  #ifndef TRANSFRMX_EXPRRESULT_H
>  #define TRANSFRMX_EXPRRESULT_H
>  
> +using namespace std;
> +
>  #include "TxObject.h"
>  #include "primitives.h"
>  
> Index: extensions/transformiix/source/xpath/FunctionLib.h
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xpath/FunctionLib.h,v
> retrieving revision 1.12
> diff -u -r1.12 FunctionLib.h
> --- extensions/transformiix/source/xpath/FunctionLib.h	2001/07/03 00:37:34	1.12
> +++ extensions/transformiix/source/xpath/FunctionLib.h	2001/07/28 02:02:15
> @@ -32,6 +32,7 @@
>  #ifndef TRANSFRMX_FUNCTIONLIB_H
>  #define TRANSFRMX_FUNCTIONLIB_H
>  
> +using namespace std;
>  
>  #include "TxString.h"
>  #include "primitives.h"
> Index: extensions/transformiix/source/xpath/NodeSet.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xpath/NodeSet.cpp,v
> retrieving revision 1.11
> diff -u -r1.11 NodeSet.cpp
> --- extensions/transformiix/source/xpath/NodeSet.cpp	2001/07/03 00:39:41	1.11
> +++ extensions/transformiix/source/xpath/NodeSet.cpp	2001/07/28 02:02:15
> @@ -29,6 +29,8 @@
>   *
>   */
>  
> +using namespace std;
> +
>  #include "NodeSet.h"
>  #include "XMLDOMUtils.h"
>  #ifdef TX_EXE
> Index: extensions/transformiix/source/xpath/XPathProcessor.h
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xpath/XPathProcessor.h,v
> retrieving revision 1.2
> diff -u -r1.2 XPathProcessor.h
> --- extensions/transformiix/source/xpath/XPathProcessor.h	2001/05/15 20:34:45	1.2
> +++ extensions/transformiix/source/xpath/XPathProcessor.h	2001/07/28 02:02:15
> @@ -26,6 +26,8 @@
>  #ifndef XPathProcessor_h__
>  #define XPathProcessor_h__
>  
> +using namespace std;
> +
>  #include "nsIXPathNodeSelector.h"
>  
>  /* e4172588-1dd1-11b2-bf09-ec309437245a */
> Index: extensions/transformiix/source/xpath/nsNodeSet.h
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xpath/nsNodeSet.h,v
> retrieving revision 1.4
> diff -u -r1.4 nsNodeSet.h
> --- extensions/transformiix/source/xpath/nsNodeSet.h	2001/05/21 03:11:25	1.4
> +++ extensions/transformiix/source/xpath/nsNodeSet.h	2001/07/28 02:02:15
> @@ -26,6 +26,8 @@
>  #ifndef TRANSFRMX_NS_NODESET_H
>  #define TRANSFRMX_NS_NODESET_H
>  
> +using namespace std;
> +
>  #include "NodeSet.h"
>  #include "nsIDOMNodeList.h"
>  #include "nsSupportsArray.h"
> Index: extensions/transformiix/source/xslt/Names.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xslt/Names.cpp,v
> retrieving revision 1.12
> diff -u -r1.12 Names.cpp
> --- extensions/transformiix/source/xslt/Names.cpp	2001/07/03 00:39:21	1.12
> +++ extensions/transformiix/source/xslt/Names.cpp	2001/07/28 02:02:15
> @@ -34,6 +34,8 @@
>   * XSL names used throughout the XSLProcessor.
>   * Probably should be wrapped in a Namespace
>  **/
> +using namespace std;
> +
>  #include "Names.h"
>  
>  //-- Global Strings
> Index: extensions/transformiix/source/xslt/Numbering.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xslt/Numbering.cpp,v
> retrieving revision 1.4
> diff -u -r1.4 Numbering.cpp
> --- extensions/transformiix/source/xslt/Numbering.cpp	2001/07/03 00:41:34	1.4
> +++ extensions/transformiix/source/xslt/Numbering.cpp	2001/07/28 02:02:15
> @@ -27,6 +27,8 @@
>   * Numbering methods
>  **/
>  
> +using namespace std;
> +
>  #include "Numbering.h"
>  #include "Names.h"
>  
> Index: extensions/transformiix/source/xslt/OutputFormat.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xslt/OutputFormat.cpp,v
> retrieving revision 1.2
> diff -u -r1.2 OutputFormat.cpp
> --- extensions/transformiix/source/xslt/OutputFormat.cpp	2001/07/03 00:41:53	1.2
> +++ extensions/transformiix/source/xslt/OutputFormat.cpp	2001/07/28 02:02:15
> @@ -21,6 +21,7 @@
>   *
>   */
>  
> +using namespace std;
>  
>  #include "OutputFormat.h"
>  
> Index: extensions/transformiix/source/xslt/ProcessorState.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xslt/ProcessorState.cpp,v
> retrieving revision 1.35
> diff -u -r1.35 ProcessorState.cpp
> --- extensions/transformiix/source/xslt/ProcessorState.cpp	2001/07/03 00:42:38	1.35
> +++ extensions/transformiix/source/xslt/ProcessorState.cpp	2001/07/28 02:02:15
> @@ -32,6 +32,8 @@
>   * Much of this code was ported from XSL:P
>  **/
>  
> +using namespace std;
> +
>  #include "ProcessorState.h"
>  #include "XSLTFunctions.h"
>  #include "FunctionLib.h"
> Index: extensions/transformiix/source/xslt/VariableBinding.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xslt/VariableBinding.cpp,v
> retrieving revision 1.2
> diff -u -r1.2 VariableBinding.cpp
> --- extensions/transformiix/source/xslt/VariableBinding.cpp	2001/07/03 00:45:39	1.2
> +++ extensions/transformiix/source/xslt/VariableBinding.cpp	2001/07/28 02:02:15
> @@ -22,6 +22,7 @@
>   *    -- original author.
>   *
>   */
> +using namespace std;
>  
>  #include "VariableBinding.h"
>  
> Index: extensions/transformiix/source/xslt/util/NodeSorter.h
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xslt/util/NodeSorter.h,v
> retrieving revision 1.4
> diff -u -r1.4 NodeSorter.h
> --- extensions/transformiix/source/xslt/util/NodeSorter.h	2001/07/03 00:41:01	1.4
> +++ extensions/transformiix/source/xslt/util/NodeSorter.h	2001/07/28 02:02:15
> @@ -26,6 +26,8 @@
>  #ifndef TRANSFRMX_NODESORTER_H
>  #define TRANSFRMX_NODESORTER_H
>  
> +using namespace std;
> +
>  #include "TxString.h"
>  #include "dom.h"
>  #include "NodeSet.h"
> Index: extensions/transformiix/source/xslt/util/NodeStack.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/extensions/transformiix/source/xslt/util/NodeStack.cpp,v
> retrieving revision 1.7
> diff -u -r1.7 NodeStack.cpp
> --- extensions/transformiix/source/xslt/util/NodeStack.cpp	2001/07/03 00:41:08	1.7
> +++ extensions/transformiix/source/xslt/util/NodeStack.cpp	2001/07/28 02:02:15
> @@ -26,6 +26,8 @@
>   *
>   */
>  
> +using namespace std;
> +
>  #include "NodeStack.h"
>  #ifdef TX_EXE
>  #include <iostream.h>
> Index: js/src/xpconnect/src/xpcstring.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/js/src/xpconnect/src/xpcstring.cpp,v
> retrieving revision 1.5
> diff -u -r1.5 xpcstring.cpp
> --- js/src/xpconnect/src/xpcstring.cpp	2001/05/08 17:31:19	1.5
> +++ js/src/xpconnect/src/xpcstring.cpp	2001/07/28 02:02:16
> @@ -238,7 +238,7 @@
>      handle = readable.GetSharedBufferHandle();
>  
>      JSString *str;
> -    if (!handle || NS_REINTERPRET_CAST(int, handle) == 1)
> +    if (!handle || NS_REINTERPRET_CAST(PRUptrdiff, handle) == 1)
>      {
>          // blech, have to copy.
>          PRUint32 length = readable.Length();
> Index: nsprpub/pr/include/md/_linux.cfg
> ===================================================================
> RCS file: /cvsroot/mozilla/nsprpub/pr/include/md/_linux.cfg,v
> retrieving revision 3.8.2.1
> diff -u -r3.8.2.1 _linux.cfg
> --- nsprpub/pr/include/md/_linux.cfg	2000/07/29 01:01:57	3.8.2.1
> +++ nsprpub/pr/include/md/_linux.cfg	2001/07/28 02:02:16
> @@ -120,6 +120,52 @@
>  #define PR_BYTES_PER_WORD_LOG2  3
>  #define PR_BYTES_PER_DWORD_LOG2 3
>  
> +#elif defined(__ia64__)
> +
> +#define IS_LITTLE_ENDIAN 1
> +#undef  IS_BIG_ENDIAN
> +#define IS_64
> +
> +#define PR_BYTES_PER_BYTE   1
> +#define PR_BYTES_PER_SHORT  2
> +#define PR_BYTES_PER_INT    4
> +#define PR_BYTES_PER_INT64  8
> +#define PR_BYTES_PER_LONG   8
> +#define PR_BYTES_PER_FLOAT  4
> +#define PR_BYTES_PER_DOUBLE 8
> +#define PR_BYTES_PER_WORD   8
> +#define PR_BYTES_PER_DWORD  8
> +
> +#define PR_BITS_PER_BYTE    8
> +#define PR_BITS_PER_SHORT   16
> +#define PR_BITS_PER_INT     32
> +#define PR_BITS_PER_INT64   64
> +#define PR_BITS_PER_LONG    64
> +#define PR_BITS_PER_FLOAT   32
> +#define PR_BITS_PER_DOUBLE  64
> +#define PR_BITS_PER_WORD    64
> +
> +#define PR_BITS_PER_BYTE_LOG2   3
> +#define PR_BITS_PER_SHORT_LOG2  4
> +#define PR_BITS_PER_INT_LOG2    5
> +#define PR_BITS_PER_INT64_LOG2  6
> +#define PR_BITS_PER_LONG_LOG2   6
> +#define PR_BITS_PER_FLOAT_LOG2  5
> +#define PR_BITS_PER_DOUBLE_LOG2 6
> +#define PR_BITS_PER_WORD_LOG2   6
> +
> +#define PR_ALIGN_OF_SHORT   2
> +#define PR_ALIGN_OF_INT     4
> +#define PR_ALIGN_OF_LONG    8
> +#define PR_ALIGN_OF_INT64   8
> +#define PR_ALIGN_OF_FLOAT   4
> +#define PR_ALIGN_OF_DOUBLE  8
> +#define PR_ALIGN_OF_POINTER 8
> +#define PR_ALIGN_OF_WORD    8
> +
> +#define PR_BYTES_PER_WORD_LOG2  3
> +#define PR_BYTES_PER_DWORD_LOG2 3
> +
>  #elif defined(__mc68000__)
>  
>  #undef  IS_LITTLE_ENDIAN
> Index: nsprpub/pr/include/md/_linux.h
> ===================================================================
> RCS file: /cvsroot/mozilla/nsprpub/pr/include/md/_linux.h,v
> retrieving revision 3.24.2.2
> diff -u -r3.24.2.2 _linux.h
> --- nsprpub/pr/include/md/_linux.h	2000/05/02 01:47:17	3.24.2.2
> +++ nsprpub/pr/include/md/_linux.h	2001/07/28 02:02:16
> @@ -31,6 +31,8 @@
>  #define _PR_SI_ARCHITECTURE "ppc"
>  #elif defined(__alpha)
>  #define _PR_SI_ARCHITECTURE "alpha"
> +#elif defined(__ia64__)
> +#define _PR_SI_ARCHITECTURE "ia64"
>  #elif defined(__mc68000__)
>  #define _PR_SI_ARCHITECTURE "m68k"
>  #elif defined(__sparc__)
> @@ -78,7 +80,7 @@
>  #endif
>  #undef _PR_USE_POLL
>  #define _PR_STAT_HAS_ONLY_ST_ATIME
> -#if defined(__alpha)
> +#if defined(__alpha) || defined(__ia64__)
>  #define _PR_HAVE_LARGE_OFF_T
>  #else
>  #define _PR_NO_LARGE_FILES
> @@ -141,6 +143,16 @@
>  
>  /* XXX not sure if this is correct, or maybe it should be 17? */
>  #define PR_NUM_GCREGS 9
> +
> +#elif defined(__ia64)
> +
> +#define _MD_GET_SP(_t)		((long *)((_t)->md.context[0].__jmpbuf)[0])
> +#define _MD_SET_FP(_t, val)
> +#define _MD_GET_SP_PTR(_t)	&(_MD_GET_SP(_t))
> +#define _MD_GET_FP_PTR(_t)	((void *) 0)
> +#define _MD_SP_TYPE			long int
> +
> +#define PR_NUM_GCREGS		_JBLEN
>  
>  #elif defined(__mc68000__)
>  /* m68k based Linux */
> Index: rdf/base/src/nsInMemoryDataSource.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/rdf/base/src/nsInMemoryDataSource.cpp,v
> retrieving revision 1.57
> diff -u -r1.57 nsInMemoryDataSource.cpp
> --- rdf/base/src/nsInMemoryDataSource.cpp	2001/04/04 04:59:35	1.57
> +++ rdf/base/src/nsInMemoryDataSource.cpp	2001/07/28 02:02:16
> @@ -192,7 +192,7 @@
>  static inline PLHashNumber PR_CALLBACK
>  rdf_HashPointer(const void* key)
>  {
> -    return NS_REINTERPRET_CAST(PLHashNumber, key) >> 2;
> +    return NS_REINTERPRET_CAST(PRUptrdiff, key) >> 2;
>  }
>  
>  ////////////////////////////////////////////////////////////////////////
> Index: security/coreconf/Linux.mk
> ===================================================================
> RCS file: /cvsroot/mozilla/security/coreconf/Linux.mk,v
> retrieving revision 1.6
> diff -u -r1.6 Linux.mk
> --- security/coreconf/Linux.mk	2001/01/10 00:04:37	1.6
> +++ security/coreconf/Linux.mk	2001/07/28 02:02:16
> @@ -50,6 +50,10 @@
>  
>  DEFAULT_COMPILER = gcc
>  
> +ifeq ($(OS_TEST),ia64)
> +	OS_REL_CFLAGS	= -D_XOPEN_SOURCE
> +	CPU_ARCH	= ia64
> +else
>  ifeq ($(OS_TEST),ppc)
>  	OS_REL_CFLAGS	= -DLINUX1_2 -D_XOPEN_SOURCE
>  	CPU_ARCH	= ppc
> @@ -68,6 +72,7 @@
>  else
>  	OS_REL_CFLAGS	= -DLINUX1_2 -Di386 -D_XOPEN_SOURCE
>  	CPU_ARCH	= x86
> +endif
>  endif
>  endif
>  endif
> Index: string/public/nsPromiseConcatenation.h
> ===================================================================
> RCS file: /cvsroot/mozilla/string/public/nsPromiseConcatenation.h,v
> retrieving revision 1.2
> diff -u -r1.2 nsPromiseConcatenation.h
> --- string/public/nsPromiseConcatenation.h	2001/04/02 19:31:48	1.2
> +++ string/public/nsPromiseConcatenation.h	2001/07/28 02:02:17
> @@ -65,20 +65,20 @@
>        int
>        GetCurrentStringFromFragment( const nsReadableFragment<char_type>& aFragment ) const
>          {
> -          return (NS_REINTERPRET_CAST(PRUint32, aFragment.mFragmentIdentifier) & mFragmentIdentifierMask) ? kRightString : kLeftString;
> +          return (NS_REINTERPRET_CAST(PRUptrdiff, aFragment.mFragmentIdentifier) & mFragmentIdentifierMask) ? kRightString : kLeftString;
>          }
>  
>        int
>        SetLeftStringInFragment( nsReadableFragment<char_type>& aFragment ) const
>          {
> -          aFragment.mFragmentIdentifier = NS_REINTERPRET_CAST(void*, NS_REINTERPRET_CAST(PRUint32, aFragment.mFragmentIdentifier) & ~mFragmentIdentifierMask);
> +          aFragment.mFragmentIdentifier = NS_REINTERPRET_CAST(void*, NS_REINTERPRET_CAST(PRUptrdiff, aFragment.mFragmentIdentifier) & ~mFragmentIdentifierMask);
>            return kLeftString;
>          }
>  
>        int
>        SetRightStringInFragment( nsReadableFragment<char_type>& aFragment ) const
>          {
> -          aFragment.mFragmentIdentifier = NS_REINTERPRET_CAST(void*, NS_REINTERPRET_CAST(PRUint32, aFragment.mFragmentIdentifier) | mFragmentIdentifierMask);
> +          aFragment.mFragmentIdentifier = NS_REINTERPRET_CAST(void*, NS_REINTERPRET_CAST(PRUptrdiff, aFragment.mFragmentIdentifier) | mFragmentIdentifierMask);
>            return kRightString;
>          }
>  
> @@ -142,20 +142,20 @@
>        int
>        GetCurrentStringFromFragment( const nsReadableFragment<char_type>& aFragment ) const
>          {
> -          return (NS_REINTERPRET_CAST(PRUint32, aFragment.mFragmentIdentifier) & mFragmentIdentifierMask) ? kRightString : kLeftString;
> +          return (NS_REINTERPRET_CAST(PRUptrdiff, aFragment.mFragmentIdentifier) & mFragmentIdentifierMask) ? kRightString : kLeftString;
>          }
>  
>        int
>        SetLeftStringInFragment( nsReadableFragment<char_type>& aFragment ) const
>          {
> -          aFragment.mFragmentIdentifier = NS_REINTERPRET_CAST(void*, NS_REINTERPRET_CAST(PRUint32, aFragment.mFragmentIdentifier) & ~mFragmentIdentifierMask);
> +          aFragment.mFragmentIdentifier = NS_REINTERPRET_CAST(void*, NS_REINTERPRET_CAST(PRUptrdiff, aFragment.mFragmentIdentifier) & ~mFragmentIdentifierMask);
>            return kLeftString;
>          }
>  
>        int
>        SetRightStringInFragment( nsReadableFragment<char_type>& aFragment ) const
>          {
> -          aFragment.mFragmentIdentifier = NS_REINTERPRET_CAST(void*, NS_REINTERPRET_CAST(PRUint32, aFragment.mFragmentIdentifier) | mFragmentIdentifierMask);
> +          aFragment.mFragmentIdentifier = NS_REINTERPRET_CAST(void*, NS_REINTERPRET_CAST(PRUptrdiff, aFragment.mFragmentIdentifier) | mFragmentIdentifierMask);
>            return kRightString;
>          }
>  
> Index: xpcom/build/Makefile.in
> ===================================================================
> RCS file: /cvsroot/mozilla/xpcom/build/Makefile.in,v
> retrieving revision 1.29
> diff -u -r1.29 Makefile.in
> --- xpcom/build/Makefile.in	2001/07/11 13:45:34	1.29
> +++ xpcom/build/Makefile.in	2001/07/28 02:02:17
> @@ -63,6 +63,8 @@
>  		-I$(srcdir)/../proxy/src \
>  		$(NULL)
>  
> +EXTRA_DSO_LDOPTS += -lffi	# XXX fix me
> +
>  ifdef MOZ_DEMANGLE_SYMBOLS
>  EXTRA_DSO_LDOPTS += -liberty
>  endif
> Index: xpcom/ds/nsStatistics.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/xpcom/ds/nsStatistics.cpp,v
> retrieving revision 1.5
> diff -u -r1.5 nsStatistics.cpp
> --- xpcom/ds/nsStatistics.cpp	2001/06/19 22:34:32	1.5
> +++ xpcom/ds/nsStatistics.cpp	2001/07/28 02:02:17
> @@ -72,7 +72,7 @@
>                                                NS_REINTERPRET_CAST(const void*, aValue));
>  
>      if (hep && *hep) {
> -        PRInt32 count = NS_REINTERPRET_CAST(PRUint32, (*hep)->value);
> +        PRInt32 count = NS_REINTERPRET_CAST(PRUptrdiff, (*hep)->value);
>          (*hep)->value = NS_REINTERPRET_CAST(void*, ++count);
>      }
>      else {
> @@ -92,7 +92,7 @@
>              mTopic, mCount, mMinimum, mMaximum, mean, stddev);
>  
>      for (PRInt32 i = mMinimum; i <= mMaximum; ++i) {
> -        PRUint32 count = NS_REINTERPRET_CAST(PRUint32, PL_HashTableLookup(mDistribution, NS_REINTERPRET_CAST(const void*, i)));
> +        PRUint32 count = NS_REINTERPRET_CAST(PRUptrdiff, PL_HashTableLookup(mDistribution, NS_REINTERPRET_CAST(const void*, i)));
>          if (! count)
>              continue;
>  
> Index: xpcom/proxy/tests/nsITestProxy.idl
> ===================================================================
> RCS file: /cvsroot/mozilla/xpcom/proxy/tests/nsITestProxy.idl,v
> retrieving revision 1.1
> diff -u -r1.1 nsITestProxy.idl
> --- xpcom/proxy/tests/nsITestProxy.idl	1999/06/10 20:24:15	1.1
> +++ xpcom/proxy/tests/nsITestProxy.idl	2001/07/28 02:02:17
> @@ -6,7 +6,7 @@
>  [uuid(1979e980-1cfd-11d3-915e-0000863011c4)]
>  interface nsITestProxy : nsISupports 
>  {
> -    long Test(in long p1, in long p2);
> +    long Test(in long long p1, in long p2);
>      void Test2();
>      void Test3(in nsISupports p1, out nsISupports p2);
>  };
> Index: xpcom/reflect/xptcall/src/md/unix/Makefile.in
> ===================================================================
> RCS file: /cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in,v
> retrieving revision 1.52
> diff -u -r1.52 Makefile.in
> --- xpcom/reflect/xptcall/src/md/unix/Makefile.in	2001/06/18 22:10:25	1.52
> +++ xpcom/reflect/xptcall/src/md/unix/Makefile.in	2001/07/28 02:02:17
> @@ -40,6 +40,15 @@
>  include $(topsrcdir)/config/config.mk
>  
>  ######################################################################
> +# ffi-based implementations
> +######################################################################
> +#
> +# Linux/ia64
> +#
> +#ifeq (ia64,$(findstring ia64,$(OS_TEST)))
> +CPPSRCS		:= xptcinvoke_ffi.cpp xptcstubs_ffi.cpp
> +#endif
> +######################################################################
>  # i386 and beyond
>  ######################################################################
>  #
> @@ -292,3 +301,7 @@
>  	@rm -f $$HOME/xptcstubsdef_asm.vms
>  endif
>  
> +xptcstubs_ffi.o: xptcstubs_ffi_mangled.h
> +
> +xptcstubs_ffi_mangled.h: dummy.o
> +	./mk-mangled.sh dummy.o > $@
> Index: xpinstall/src/nsSoftwareUpdate.cpp
> ===================================================================
> RCS file: /cvsroot/mozilla/xpinstall/src/nsSoftwareUpdate.cpp,v
> retrieving revision 1.82
> diff -u -r1.82 nsSoftwareUpdate.cpp
> --- xpinstall/src/nsSoftwareUpdate.cpp	2001/05/23 01:21:04	1.82
> +++ xpinstall/src/nsSoftwareUpdate.cpp	2001/07/28 02:02:17
> @@ -91,7 +91,11 @@
>  static NS_DEFINE_CID(kIProcessCID, NS_PROCESS_CID); 
>  
>  nsSoftwareUpdate* nsSoftwareUpdate::mInstance = nsnull;
> +#if __GNUC__ == 3
> +nsCOMPtr<nsIFile> nsSoftwareUpdate::mProgramDir;
> +#else
>  nsCOMPtr<nsIFile> nsSoftwareUpdate::mProgramDir = nsnull;
> +#endif
>  char*             nsSoftwareUpdate::mLogName = nsnull;
>  PRBool            nsSoftwareUpdate::mNeedCleanup = PR_FALSE;
>  

Content-Description: mozilla-newstuff.diff
> --- /dev/null	Sat Mar 24 01:35:12 2001
> +++ nsprpub/pr/src/md/unix/os_Linux_ia64.s	Fri May 11 20:05:57 2001
> @@ -0,0 +1,80 @@
> +// -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
> +// 
> +// The contents of this file are subject to the Mozilla Public
> +// License Version 1.1 (the "License"); you may not use this file
> +// except in compliance with the License. You may obtain a copy of
> +// the License at http://www.mozilla.org/MPL/
> +// 
> +// Software distributed under the License is distributed on an "AS
> +// IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
> +// implied. See the License for the specific language governing
> +// rights and limitations under the License.
> +// 
> +// The Original Code is the Netscape security libraries.
> +// 
> +// The Initial Developer of the Original Code is Netscape
> +// Communications Corporation.  Portions created by Netscape are 
> +// Copyright (C) 2000 Netscape Communications Corporation.  All
> +// Rights Reserved.
> +// 
> +// Contributor(s):
> +// 
> +// Alternatively, the contents of this file may be used under the
> +// terms of the GNU General Public License Version 2 or later (the
> +// "GPL"), in which case the provisions of the GPL are applicable 
> +// instead of those above.  If you wish to allow use of your 
> +// version of this file only under the terms of the GPL and not to
> +// allow others to use your version of this file under the MPL,
> +// indicate your decision by deleting the provisions above and
> +// replace them with the notice and other provisions required by
> +// the GPL.  If you do not delete the provisions above, a recipient
> +// may use your version of this file under either the MPL or the
> +// GPL.
> +//
> +
> +.text
> +        .align 16
> +        .global _PR_ia64_AtomicIncrement
> +        .proc _PR_ia64_AtomicIncrement
> +_PR_ia64_AtomicIncrement:
> +        fetchadd4.acq r8 = [r32], 1
> +        ;;
> +        adds r8 = 1, r8
> +        br.ret.sptk.many b0
> +        .endp _PR_ia64_AtomicIncrement
> +//
> +        .align 16
> +        .global _PR_ia64_AtomicDecrement
> +        .proc _PR_ia64_AtomicDecrement
> +_PR_ia64_AtomicDecrement:
> +        fetchadd4.rel r8 = [r32], -1
> +        ;;
> +        adds r8 = -1, r8
> +        br.ret.sptk.many b0
> +        .endp _PR_ia64_AtomicDecrement
> +//
> +        .align 16
> +        .global _PR_ia64_AtomicAdd
> +        .proc _PR_ia64_AtomicAdd
> +_PR_ia64_AtomicAdd:
> +        ld4 r15 = [r32]
> +        ;;
> +.L3:
> +        mov r14 = r15
> +        mov ar.ccv = r15
> +        add r8 = r15, r33
> +        ;;
> +        cmpxchg4.acq r15 = [r32], r8, ar.ccv
> +        ;;
> +        cmp4.ne p6, p7 =  r15, r14
> +        (p6) br.cond.dptk .L3
> +        br.ret.sptk.many b0
> +        .endp _PR_ia64_AtomicAdd
> +//
> +        .align 16
> +        .global _PR_ia64_AtomicSet
> +        .proc _PR_ia64_AtomicSet
> +_PR_ia64_AtomicSet:
> +        xchg4 r8 = [r32], r33
> +        br.ret.sptk.many b0
> +        .endp _PR_ia64_AtomicSet
> --- /dev/null	Sat Mar 24 01:35:12 2001
> +++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_ffi.cpp	Thu Jun  7 23:21:18 2001
> @@ -0,0 +1,175 @@
> +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
> + *
> + * The contents of this file are subject to the Netscape Public
> + * License Version 1.1 (the "License"); you may not use this file
> + * except in compliance with the License. You may obtain a copy of
> + * the License at http://www.mozilla.org/NPL/
> + *
> + * Software distributed under the License is distributed on an "AS
> + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
> + * implied. See the License for the specific language governing
> + * rights and limitations under the License.
> + *
> + * The Original Code is mozilla.org code.
> + *
> + * The Initial Developer of the Original Code is Netscape
> + * Communications Corporation.  Portions created by Netscape are
> + * Copyright (C) 1999 Netscape Communications Corporation. All
> + * Rights Reserved.
> + *
> + * This file is Copyright (C) 2001 Hewlett-Packard Co.  All Rights
> + * Reserved.
> + *
> + * Contributor(s):
> + */
> +
> +/* Implement shared vtbl methods.  This implementation should be
> +   completely portable except for the mangled name of the stub
> +   routines.  */
> +
> +/* contributed by David Mosberger <davidm@hpl.hp.com> */
> +
> +#include <alloca.h>
> +#include <ffi.h>
> +
> +#include "xptcprivate.h"
> +
> +#include "xptcstubs_ffi_mangled.h"
> +
> +#define MANGLED_STUB_NAME(n)	MANGLED_STUB_NAME##n
> +
> +static ffi_type *stub_common_arg_types[1] = { &ffi_type_pointer };
> +static ffi_cif stub_common_cif;
> +
> +static void
> +get_incoming_args (PRUint32 n, void *raw_args, const nsXPTMethodInfo* info,
> +                   nsXPTCMiniVariant *p)
> +{
> +    ffi_type **arg_types, *t = 0;
> +    ffi_status status;
> +    ffi_cif cif;
> +    void **args;
> +    PRUintn i;
> +
> +    /* create the cif (could be cached): */
> +    arg_types = (ffi_type **) alloca ((n + 1) * sizeof (arg_types[0]));
> +    arg_types[0] = &ffi_type_pointer;	/* implicit "this" argument */
> +    for (i = 0; i < n; ++i) {
> +        const nsXPTParamInfo& param = info->GetParam(i);
> +        const nsXPTType& type = param.GetType();
> +
> +        if (param.IsOut() || !type.IsArithmetic()) {
> +            arg_types[i + 1] = &ffi_type_pointer;
> +            continue;
> +        }
> +        switch (type) {
> +              case nsXPTType::T_I8 :	t = &ffi_type_sint8;  break;
> +              case nsXPTType::T_I16:	t = &ffi_type_sint16; break;
> +              case nsXPTType::T_I32:	t = &ffi_type_sint32; break;
> +              case nsXPTType::T_I64:	t = &ffi_type_sint64; break;
> +              case nsXPTType::T_U8 :	t = &ffi_type_uint8;  break;
> +              case nsXPTType::T_U16:	t = &ffi_type_uint16; break;
> +              case nsXPTType::T_U32:	t = &ffi_type_uint32; break;
> +              case nsXPTType::T_U64:	t = &ffi_type_uint64; break;
> +              case nsXPTType::T_FLOAT:	t = &ffi_type_float;  break;
> +              case nsXPTType::T_DOUBLE:	t = &ffi_type_double; break;
> +              case nsXPTType::T_BOOL:	t = &ffi_type_sint32; break;
> +              case nsXPTType::T_CHAR:	t = &ffi_type_schar;  break;
> +              case nsXPTType::T_WCHAR:	t = &ffi_type_uint32; break;
> +
> +              default:
> +                NS_ASSERTION(0, "bad type");
> +                break;
> +        }
> +        arg_types[i + 1] = t;
> +    }
> +    status = ffi_prep_cif(&cif, FFI_DEFAULT_ABI, n + 1, &ffi_type_uint32,
> +                          arg_types);
> +    NS_ASSERTION(status == FFI_OK, "status == FFI_OK");
> +
> +    /* extract the arguments: */
> +    args = (void **) alloca((n + 1) * sizeof (args[0]));
> +    ffi_prep_incoming_args(&cif, raw_args, args);
> +
> +    /* fill in the parameter vector: */
> +
> +    for (i = 0; i < n; ++i) {
> +#       define CVT(nst,field,type)                                           \
> +	  case FFI_TYPE_##nst: p[i].val.field = *(type *) args[i + 1]; break;
> +        switch (arg_types[i + 1]->type) {
> +          CVT(SINT8,   i8,  PRInt8);
> +          CVT(SINT16,  i16, PRInt16);
> +          CVT(SINT32,  i32, PRInt32);
> +          CVT(SINT64,  i64, PRInt64);
> +          CVT(UINT8,   u8,  PRUint8);
> +          CVT(UINT16,  u16, PRUint16);
> +          CVT(UINT32,  u32, PRUint32);
> +          CVT(UINT64,  u64, PRUint64);
> +          CVT(FLOAT,   u32, PRUint32);
> +          CVT(DOUBLE,  u64, PRUint64);
> +          CVT(POINTER, p,   void *);
> +        default:
> +          NS_ASSERTION(0, "unexpected ffi type");
> +          break;
> +        }
> +    }
> +}
> +
> +static void xptc_dispatch (ffi_cif *, void *, void **, void *, void *)
> +     __asm__("xptc_dispatch") __attribute__((unused));
> +
> +static void
> +xptc_dispatch (ffi_cif *common_cif, void *retp, void **common_args,
> +               void *user_data, void *raw_args)
> +{
> +    uint32 method_index = (long) user_data;
> +    nsIInterfaceInfo* iface_info = NULL;
> +    const nsXPTMethodInfo* info;
> +    nsXPTCMiniVariant *params;
> +    nsXPTCStubBase *self;
> +    PRUint8 param_count;
> +
> +    self = *(nsXPTCStubBase **) common_args[0];
> +
> +    NS_ASSERTION(self, "no self");
> +
> +    self->GetInterfaceInfo (&iface_info);
> +    NS_ASSERTION(iface_info,"no interface info");
> +
> +    iface_info->GetMethodInfo (PRUint16(method_index), &info);
> +    NS_ASSERTION(info,"no interface info");
> +
> +    param_count = info->GetParamCount ();
> +    params = (nsXPTCMiniVariant *) alloca (param_count * sizeof (params[0]));
> +    get_incoming_args (param_count, raw_args, info, params);
> +
> +    *(nsresult *) retp = self->CallMethod ((PRUint16)method_index, info,
> +                                           params);
> +
> +    NS_RELEASE(iface_info);
> +}
> +
> +static class init {
> +  public:
> +    init (void) {
> +        ffi_prep_cif(&stub_common_cif, FFI_DEFAULT_ABI, 1, &ffi_type_pointer,
> +                     stub_common_arg_types);
> +    }
> +} initializer;
> +
> +#define _STUB(name,arg)                                         \
> +  FFI_STATIC_CLOSURE(name, stub_common_cif, xptc_dispatch, arg);
> +
> +/*
> + * nsresult nsXPTCStubBase::Stub##n()
> + */
> +#define STUB_ENTRY(n)	_STUB(MANGLED_STUB_NAME(n), n)
> +
> +#define SENTINEL_ENTRY(n)                               \
> +nsresult nsXPTCStubBase::Sentinel##n()                  \
> +{                                                       \
> +    NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called");  \
> +    return NS_ERROR_NOT_IMPLEMENTED;                    \
> +}
> +
> +#include "xptcstubsdef.inc"
> --- /dev/null	Sat Mar 24 01:35:12 2001
> +++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_ffi.cpp	Wed May 23 19:06:54 2001
> @@ -0,0 +1,107 @@
> +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
> + *
> + * The contents of this file are subject to the Netscape Public
> + * License Version 1.1 (the "License"); you may not use this file
> + * except in compliance with the License. You may obtain a copy of
> + * the License at http://www.mozilla.org/NPL/
> + *
> + * Software distributed under the License is distributed on an "AS
> + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
> + * implied. See the License for the specific language governing
> + * rights and limitations under the License.
> + *
> + * The Original Code is mozilla.org code.
> + *
> + * The Initial Developer of the Original Code is Netscape
> + * Communications Corporation.  Portions created by Netscape are
> + * Copyright (C) 1999 Netscape Communications Corporation. All
> + * Rights Reserved.
> + *
> + * This file is Copyright (C) 2001 Hewlett-Packard Co.  All Rights
> + * Reserved.
> + *
> + * Contributor(s):
> + */
> +
> +/* Platform specific code to invoke XPCOM methods on native objects */
> +
> +/* contributed by David Mosberger <davidm@hpl.hp.com> */
> +
> +#include <alloca.h>
> +#include <ffi.h>
> +
> +#include "xptcprivate.h"
> +
> +static void
> +convert_args (PRUint32 n, nsXPTCVariant *params,
> +              ffi_type **arg_types, void **args)
> +{
> +    ffi_type *t;
> +    PRUint64 i;
> +    void *v;
> +#   define CVT(nst,ffit,field)						\
> +	case nsXPTType::nst:						\
> +		t = &ffit; v = &params[i].val.field; break;
> +
> +    for (i = 0; i < n; ++i) {
> +        if (params[i].IsPtrData()) {
> +            arg_types[i] = &ffi_type_pointer;
> +            args[i] = &params[i].ptr;
> +            continue;
> +        }
> +        switch (params[i].type) {
> +            CVT(T_I8,		ffi_type_sint8,  i8);
> +            CVT(T_I16,		ffi_type_sint16, i16);
> +            CVT(T_I32,		ffi_type_sint32, i32);
> +            CVT(T_I64,		ffi_type_sint64, i64);
> +            CVT(T_U8,		ffi_type_uint8,  u8);
> +            CVT(T_U16,		ffi_type_uint16, u16);
> +            CVT(T_U32,		ffi_type_uint32, u32);
> +            CVT(T_U64,		ffi_type_uint64, u64);
> +            CVT(T_FLOAT,	ffi_type_float,  f);
> +            CVT(T_DOUBLE,	ffi_type_double, u64);
> +            CVT(T_BOOL,		ffi_type_sint32, b);
> +            CVT(T_CHAR,		ffi_type_schar,  c);
> +            CVT(T_WCHAR,	ffi_type_uint32, wc);
> +            default:
> +              // all the others are plain pointer types
> +              t = &ffi_type_pointer;
> +              v = &params[i].val.p;
> +              break;
> +        }
> +        arg_types[i] = t;
> +        args[i] = v;
> +    }
> +}
> +
> +XPTC_PUBLIC_API(nsresult)
> +XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
> +                   PRUint32 paramCount, nsXPTCVariant* params)
> +{
> +    struct vtable {
> +#if __GNUC__ < 3
> +        long offset;		/* offset to beginning of object */
> +        unsigned long rtti;	/* address of run-time type info */
> +#endif
> +        void (*methods[1]) ();	/* method table (variable length) */
> +    } *vtable = *(struct vtable **) that;
> +    ffi_type **arg_types;
> +    void **args;
> +    ffi_status status;
> +    ffi_cif cif;
> +    nsresult result;
> +
> +    arg_types = (ffi_type **) alloca((paramCount + 1) * sizeof (arg_types[0]));
> +    args = (void **) alloca((paramCount + 1) * sizeof (args[0]));
> +
> +    arg_types[0] = &ffi_type_pointer;
> +    args[0] = &that;
> +    convert_args(paramCount, params, arg_types + 1, args + 1);
> +    status = ffi_prep_cif(&cif, FFI_DEFAULT_ABI, paramCount + 1,
> +                          &ffi_type_uint32, arg_types);
> +    if (status != FFI_OK)
> +        return NS_ERROR_INVALID_ARG;
> +
> +    ffi_call (&cif, vtable->methods[methodIndex], &result, args);
> +    return result;
> +}
> --- /dev/null	Sat Mar 24 01:35:12 2001
> +++ xpcom/reflect/xptcall/src/md/unix/mk-mangled.sh	Sun May 27 12:07:25 2001
> @@ -0,0 +1,8 @@
> +#!/bin/sh
> +file=$1
> +nm $file | grep XPTCStubBase | grep 'Stub[0-9]' | rev | cut -f1 -d' ' | rev | (
> +    while read name; do
> +	n=`expr $name : '.*Stub\([0-9][0-9]*\)'`
> +	echo "#define MANGLED_STUB_NAME${n}	${name}"
> +    done
> +)
> --- /dev/null	Sat Mar 24 01:35:12 2001
> +++ xpcom/reflect/xptcall/src/md/unix/dummy.cpp	Wed May 23 16:25:48 2001
> @@ -0,0 +1,6 @@
> +#include "xptcprivate.h"
> +
> +#define STUB_ENTRY(n)	nsresult nsXPTCStubBase::Stub##n() { return 0; }
> +#define SENTINEL_ENTRY(n)
> +
> +#include "xptcstubsdef.inc"
> --- /dev/null	Sat Mar 24 01:35:12 2001
> +++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_ffi_mangled.h	Mon Jun 18 16:21:54 2001
> @@ -0,0 +1,247 @@
> +#define MANGLED_STUB_NAME3	_ZN14nsXPTCStubBase5Stub3Ev
> +#define MANGLED_STUB_NAME4	_ZN14nsXPTCStubBase5Stub4Ev
> +#define MANGLED_STUB_NAME5	_ZN14nsXPTCStubBase5Stub5Ev
> +#define MANGLED_STUB_NAME6	_ZN14nsXPTCStubBase5Stub6Ev
> +#define MANGLED_STUB_NAME7	_ZN14nsXPTCStubBase5Stub7Ev
> +#define MANGLED_STUB_NAME8	_ZN14nsXPTCStubBase5Stub8Ev
> +#define MANGLED_STUB_NAME9	_ZN14nsXPTCStubBase5Stub9Ev
> +#define MANGLED_STUB_NAME10	_ZN14nsXPTCStubBase6Stub10Ev
> +#define MANGLED_STUB_NAME11	_ZN14nsXPTCStubBase6Stub11Ev
> +#define MANGLED_STUB_NAME12	_ZN14nsXPTCStubBase6Stub12Ev
> +#define MANGLED_STUB_NAME13	_ZN14nsXPTCStubBase6Stub13Ev
> +#define MANGLED_STUB_NAME14	_ZN14nsXPTCStubBase6Stub14Ev
> +#define MANGLED_STUB_NAME15	_ZN14nsXPTCStubBase6Stub15Ev
> +#define MANGLED_STUB_NAME16	_ZN14nsXPTCStubBase6Stub16Ev
> +#define MANGLED_STUB_NAME17	_ZN14nsXPTCStubBase6Stub17Ev
> +#define MANGLED_STUB_NAME18	_ZN14nsXPTCStubBase6Stub18Ev
> +#define MANGLED_STUB_NAME19	_ZN14nsXPTCStubBase6Stub19Ev
> +#define MANGLED_STUB_NAME20	_ZN14nsXPTCStubBase6Stub20Ev
> +#define MANGLED_STUB_NAME21	_ZN14nsXPTCStubBase6Stub21Ev
> +#define MANGLED_STUB_NAME22	_ZN14nsXPTCStubBase6Stub22Ev
> +#define MANGLED_STUB_NAME23	_ZN14nsXPTCStubBase6Stub23Ev
> +#define MANGLED_STUB_NAME24	_ZN14nsXPTCStubBase6Stub24Ev
> +#define MANGLED_STUB_NAME25	_ZN14nsXPTCStubBase6Stub25Ev
> +#define MANGLED_STUB_NAME26	_ZN14nsXPTCStubBase6Stub26Ev
> +#define MANGLED_STUB_NAME27	_ZN14nsXPTCStubBase6Stub27Ev
> +#define MANGLED_STUB_NAME28	_ZN14nsXPTCStubBase6Stub28Ev
> +#define MANGLED_STUB_NAME29	_ZN14nsXPTCStubBase6Stub29Ev
> +#define MANGLED_STUB_NAME30	_ZN14nsXPTCStubBase6Stub30Ev
> +#define MANGLED_STUB_NAME31	_ZN14nsXPTCStubBase6Stub31Ev
> +#define MANGLED_STUB_NAME32	_ZN14nsXPTCStubBase6Stub32Ev
> +#define MANGLED_STUB_NAME33	_ZN14nsXPTCStubBase6Stub33Ev
> +#define MANGLED_STUB_NAME34	_ZN14nsXPTCStubBase6Stub34Ev
> +#define MANGLED_STUB_NAME35	_ZN14nsXPTCStubBase6Stub35Ev
> +#define MANGLED_STUB_NAME36	_ZN14nsXPTCStubBase6Stub36Ev
> +#define MANGLED_STUB_NAME37	_ZN14nsXPTCStubBase6Stub37Ev
> +#define MANGLED_STUB_NAME38	_ZN14nsXPTCStubBase6Stub38Ev
> +#define MANGLED_STUB_NAME39	_ZN14nsXPTCStubBase6Stub39Ev
> +#define MANGLED_STUB_NAME40	_ZN14nsXPTCStubBase6Stub40Ev
> +#define MANGLED_STUB_NAME41	_ZN14nsXPTCStubBase6Stub41Ev
> +#define MANGLED_STUB_NAME42	_ZN14nsXPTCStubBase6Stub42Ev
> +#define MANGLED_STUB_NAME43	_ZN14nsXPTCStubBase6Stub43Ev
> +#define MANGLED_STUB_NAME44	_ZN14nsXPTCStubBase6Stub44Ev
> +#define MANGLED_STUB_NAME45	_ZN14nsXPTCStubBase6Stub45Ev
> +#define MANGLED_STUB_NAME46	_ZN14nsXPTCStubBase6Stub46Ev
> +#define MANGLED_STUB_NAME47	_ZN14nsXPTCStubBase6Stub47Ev
> +#define MANGLED_STUB_NAME48	_ZN14nsXPTCStubBase6Stub48Ev
> +#define MANGLED_STUB_NAME49	_ZN14nsXPTCStubBase6Stub49Ev
> +#define MANGLED_STUB_NAME50	_ZN14nsXPTCStubBase6Stub50Ev
> +#define MANGLED_STUB_NAME51	_ZN14nsXPTCStubBase6Stub51Ev
> +#define MANGLED_STUB_NAME52	_ZN14nsXPTCStubBase6Stub52Ev
> +#define MANGLED_STUB_NAME53	_ZN14nsXPTCStubBase6Stub53Ev
> +#define MANGLED_STUB_NAME54	_ZN14nsXPTCStubBase6Stub54Ev
> +#define MANGLED_STUB_NAME55	_ZN14nsXPTCStubBase6Stub55Ev
> +#define MANGLED_STUB_NAME56	_ZN14nsXPTCStubBase6Stub56Ev
> +#define MANGLED_STUB_NAME57	_ZN14nsXPTCStubBase6Stub57Ev
> +#define MANGLED_STUB_NAME58	_ZN14nsXPTCStubBase6Stub58Ev
> +#define MANGLED_STUB_NAME59	_ZN14nsXPTCStubBase6Stub59Ev
> +#define MANGLED_STUB_NAME60	_ZN14nsXPTCStubBase6Stub60Ev
> +#define MANGLED_STUB_NAME61	_ZN14nsXPTCStubBase6Stub61Ev
> +#define MANGLED_STUB_NAME62	_ZN14nsXPTCStubBase6Stub62Ev
> +#define MANGLED_STUB_NAME63	_ZN14nsXPTCStubBase6Stub63Ev
> +#define MANGLED_STUB_NAME64	_ZN14nsXPTCStubBase6Stub64Ev
> +#define MANGLED_STUB_NAME65	_ZN14nsXPTCStubBase6Stub65Ev
> +#define MANGLED_STUB_NAME66	_ZN14nsXPTCStubBase6Stub66Ev
> +#define MANGLED_STUB_NAME67	_ZN14nsXPTCStubBase6Stub67Ev
> +#define MANGLED_STUB_NAME68	_ZN14nsXPTCStubBase6Stub68Ev
> +#define MANGLED_STUB_NAME69	_ZN14nsXPTCStubBase6Stub69Ev
> +#define MANGLED_STUB_NAME70	_ZN14nsXPTCStubBase6Stub70Ev
> +#define MANGLED_STUB_NAME71	_ZN14nsXPTCStubBase6Stub71Ev
> +#define MANGLED_STUB_NAME72	_ZN14nsXPTCStubBase6Stub72Ev
> +#define MANGLED_STUB_NAME73	_ZN14nsXPTCStubBase6Stub73Ev
> +#define MANGLED_STUB_NAME74	_ZN14nsXPTCStubBase6Stub74Ev
> +#define MANGLED_STUB_NAME75	_ZN14nsXPTCStubBase6Stub75Ev
> +#define MANGLED_STUB_NAME76	_ZN14nsXPTCStubBase6Stub76Ev
> +#define MANGLED_STUB_NAME77	_ZN14nsXPTCStubBase6Stub77Ev
> +#define MANGLED_STUB_NAME78	_ZN14nsXPTCStubBase6Stub78Ev
> +#define MANGLED_STUB_NAME79	_ZN14nsXPTCStubBase6Stub79Ev
> +#define MANGLED_STUB_NAME80	_ZN14nsXPTCStubBase6Stub80Ev
> +#define MANGLED_STUB_NAME81	_ZN14nsXPTCStubBase6Stub81Ev
> +#define MANGLED_STUB_NAME82	_ZN14nsXPTCStubBase6Stub82Ev
> +#define MANGLED_STUB_NAME83	_ZN14nsXPTCStubBase6Stub83Ev
> +#define MANGLED_STUB_NAME84	_ZN14nsXPTCStubBase6Stub84Ev
> +#define MANGLED_STUB_NAME85	_ZN14nsXPTCStubBase6Stub85Ev
> +#define MANGLED_STUB_NAME86	_ZN14nsXPTCStubBase6Stub86Ev
> +#define MANGLED_STUB_NAME87	_ZN14nsXPTCStubBase6Stub87Ev
> +#define MANGLED_STUB_NAME88	_ZN14nsXPTCStubBase6Stub88Ev
> +#define MANGLED_STUB_NAME89	_ZN14nsXPTCStubBase6Stub89Ev
> +#define MANGLED_STUB_NAME90	_ZN14nsXPTCStubBase6Stub90Ev
> +#define MANGLED_STUB_NAME91	_ZN14nsXPTCStubBase6Stub91Ev
> +#define MANGLED_STUB_NAME92	_ZN14nsXPTCStubBase6Stub92Ev
> +#define MANGLED_STUB_NAME93	_ZN14nsXPTCStubBase6Stub93Ev
> +#define MANGLED_STUB_NAME94	_ZN14nsXPTCStubBase6Stub94Ev
> +#define MANGLED_STUB_NAME95	_ZN14nsXPTCStubBase6Stub95Ev
> +#define MANGLED_STUB_NAME96	_ZN14nsXPTCStubBase6Stub96Ev
> +#define MANGLED_STUB_NAME97	_ZN14nsXPTCStubBase6Stub97Ev
> +#define MANGLED_STUB_NAME98	_ZN14nsXPTCStubBase6Stub98Ev
> +#define MANGLED_STUB_NAME99	_ZN14nsXPTCStubBase6Stub99Ev
> +#define MANGLED_STUB_NAME100	_ZN14nsXPTCStubBase7Stub100Ev
> +#define MANGLED_STUB_NAME101	_ZN14nsXPTCStubBase7Stub101Ev
> +#define MANGLED_STUB_NAME102	_ZN14nsXPTCStubBase7Stub102Ev
> +#define MANGLED_STUB_NAME103	_ZN14nsXPTCStubBase7Stub103Ev
> +#define MANGLED_STUB_NAME104	_ZN14nsXPTCStubBase7Stub104Ev
> +#define MANGLED_STUB_NAME105	_ZN14nsXPTCStubBase7Stub105Ev
> +#define MANGLED_STUB_NAME106	_ZN14nsXPTCStubBase7Stub106Ev
> +#define MANGLED_STUB_NAME107	_ZN14nsXPTCStubBase7Stub107Ev
> +#define MANGLED_STUB_NAME108	_ZN14nsXPTCStubBase7Stub108Ev
> +#define MANGLED_STUB_NAME109	_ZN14nsXPTCStubBase7Stub109Ev
> +#define MANGLED_STUB_NAME110	_ZN14nsXPTCStubBase7Stub110Ev
> +#define MANGLED_STUB_NAME111	_ZN14nsXPTCStubBase7Stub111Ev
> +#define MANGLED_STUB_NAME112	_ZN14nsXPTCStubBase7Stub112Ev
> +#define MANGLED_STUB_NAME113	_ZN14nsXPTCStubBase7Stub113Ev
> +#define MANGLED_STUB_NAME114	_ZN14nsXPTCStubBase7Stub114Ev
> +#define MANGLED_STUB_NAME115	_ZN14nsXPTCStubBase7Stub115Ev
> +#define MANGLED_STUB_NAME116	_ZN14nsXPTCStubBase7Stub116Ev
> +#define MANGLED_STUB_NAME117	_ZN14nsXPTCStubBase7Stub117Ev
> +#define MANGLED_STUB_NAME118	_ZN14nsXPTCStubBase7Stub118Ev
> +#define MANGLED_STUB_NAME119	_ZN14nsXPTCStubBase7Stub119Ev
> +#define MANGLED_STUB_NAME120	_ZN14nsXPTCStubBase7Stub120Ev
> +#define MANGLED_STUB_NAME121	_ZN14nsXPTCStubBase7Stub121Ev
> +#define MANGLED_STUB_NAME122	_ZN14nsXPTCStubBase7Stub122Ev
> +#define MANGLED_STUB_NAME123	_ZN14nsXPTCStubBase7Stub123Ev
> +#define MANGLED_STUB_NAME124	_ZN14nsXPTCStubBase7Stub124Ev
> +#define MANGLED_STUB_NAME125	_ZN14nsXPTCStubBase7Stub125Ev
> +#define MANGLED_STUB_NAME126	_ZN14nsXPTCStubBase7Stub126Ev
> +#define MANGLED_STUB_NAME127	_ZN14nsXPTCStubBase7Stub127Ev
> +#define MANGLED_STUB_NAME128	_ZN14nsXPTCStubBase7Stub128Ev
> +#define MANGLED_STUB_NAME129	_ZN14nsXPTCStubBase7Stub129Ev
> +#define MANGLED_STUB_NAME130	_ZN14nsXPTCStubBase7Stub130Ev
> +#define MANGLED_STUB_NAME131	_ZN14nsXPTCStubBase7Stub131Ev
> +#define MANGLED_STUB_NAME132	_ZN14nsXPTCStubBase7Stub132Ev
> +#define MANGLED_STUB_NAME133	_ZN14nsXPTCStubBase7Stub133Ev
> +#define MANGLED_STUB_NAME134	_ZN14nsXPTCStubBase7Stub134Ev
> +#define MANGLED_STUB_NAME135	_ZN14nsXPTCStubBase7Stub135Ev
> +#define MANGLED_STUB_NAME136	_ZN14nsXPTCStubBase7Stub136Ev
> +#define MANGLED_STUB_NAME137	_ZN14nsXPTCStubBase7Stub137Ev
> +#define MANGLED_STUB_NAME138	_ZN14nsXPTCStubBase7Stub138Ev
> +#define MANGLED_STUB_NAME139	_ZN14nsXPTCStubBase7Stub139Ev
> +#define MANGLED_STUB_NAME140	_ZN14nsXPTCStubBase7Stub140Ev
> +#define MANGLED_STUB_NAME141	_ZN14nsXPTCStubBase7Stub141Ev
> +#define MANGLED_STUB_NAME142	_ZN14nsXPTCStubBase7Stub142Ev
> +#define MANGLED_STUB_NAME143	_ZN14nsXPTCStubBase7Stub143Ev
> +#define MANGLED_STUB_NAME144	_ZN14nsXPTCStubBase7Stub144Ev
> +#define MANGLED_STUB_NAME145	_ZN14nsXPTCStubBase7Stub145Ev
> +#define MANGLED_STUB_NAME146	_ZN14nsXPTCStubBase7Stub146Ev
> +#define MANGLED_STUB_NAME147	_ZN14nsXPTCStubBase7Stub147Ev
> +#define MANGLED_STUB_NAME148	_ZN14nsXPTCStubBase7Stub148Ev
> +#define MANGLED_STUB_NAME149	_ZN14nsXPTCStubBase7Stub149Ev
> +#define MANGLED_STUB_NAME150	_ZN14nsXPTCStubBase7Stub150Ev
> +#define MANGLED_STUB_NAME151	_ZN14nsXPTCStubBase7Stub151Ev
> +#define MANGLED_STUB_NAME152	_ZN14nsXPTCStubBase7Stub152Ev
> +#define MANGLED_STUB_NAME153	_ZN14nsXPTCStubBase7Stub153Ev
> +#define MANGLED_STUB_NAME154	_ZN14nsXPTCStubBase7Stub154Ev
> +#define MANGLED_STUB_NAME155	_ZN14nsXPTCStubBase7Stub155Ev
> +#define MANGLED_STUB_NAME156	_ZN14nsXPTCStubBase7Stub156Ev
> +#define MANGLED_STUB_NAME157	_ZN14nsXPTCStubBase7Stub157Ev
> +#define MANGLED_STUB_NAME158	_ZN14nsXPTCStubBase7Stub158Ev
> +#define MANGLED_STUB_NAME159	_ZN14nsXPTCStubBase7Stub159Ev
> +#define MANGLED_STUB_NAME160	_ZN14nsXPTCStubBase7Stub160Ev
> +#define MANGLED_STUB_NAME161	_ZN14nsXPTCStubBase7Stub161Ev
> +#define MANGLED_STUB_NAME162	_ZN14nsXPTCStubBase7Stub162Ev
> +#define MANGLED_STUB_NAME163	_ZN14nsXPTCStubBase7Stub163Ev
> +#define MANGLED_STUB_NAME164	_ZN14nsXPTCStubBase7Stub164Ev
> +#define MANGLED_STUB_NAME165	_ZN14nsXPTCStubBase7Stub165Ev
> +#define MANGLED_STUB_NAME166	_ZN14nsXPTCStubBase7Stub166Ev
> +#define MANGLED_STUB_NAME167	_ZN14nsXPTCStubBase7Stub167Ev
> +#define MANGLED_STUB_NAME168	_ZN14nsXPTCStubBase7Stub168Ev
> +#define MANGLED_STUB_NAME169	_ZN14nsXPTCStubBase7Stub169Ev
> +#define MANGLED_STUB_NAME170	_ZN14nsXPTCStubBase7Stub170Ev
> +#define MANGLED_STUB_NAME171	_ZN14nsXPTCStubBase7Stub171Ev
> +#define MANGLED_STUB_NAME172	_ZN14nsXPTCStubBase7Stub172Ev
> +#define MANGLED_STUB_NAME173	_ZN14nsXPTCStubBase7Stub173Ev
> +#define MANGLED_STUB_NAME174	_ZN14nsXPTCStubBase7Stub174Ev
> +#define MANGLED_STUB_NAME175	_ZN14nsXPTCStubBase7Stub175Ev
> +#define MANGLED_STUB_NAME176	_ZN14nsXPTCStubBase7Stub176Ev
> +#define MANGLED_STUB_NAME177	_ZN14nsXPTCStubBase7Stub177Ev
> +#define MANGLED_STUB_NAME178	_ZN14nsXPTCStubBase7Stub178Ev
> +#define MANGLED_STUB_NAME179	_ZN14nsXPTCStubBase7Stub179Ev
> +#define MANGLED_STUB_NAME180	_ZN14nsXPTCStubBase7Stub180Ev
> +#define MANGLED_STUB_NAME181	_ZN14nsXPTCStubBase7Stub181Ev
> +#define MANGLED_STUB_NAME182	_ZN14nsXPTCStubBase7Stub182Ev
> +#define MANGLED_STUB_NAME183	_ZN14nsXPTCStubBase7Stub183Ev
> +#define MANGLED_STUB_NAME184	_ZN14nsXPTCStubBase7Stub184Ev
> +#define MANGLED_STUB_NAME185	_ZN14nsXPTCStubBase7Stub185Ev
> +#define MANGLED_STUB_NAME186	_ZN14nsXPTCStubBase7Stub186Ev
> +#define MANGLED_STUB_NAME187	_ZN14nsXPTCStubBase7Stub187Ev
> +#define MANGLED_STUB_NAME188	_ZN14nsXPTCStubBase7Stub188Ev
> +#define MANGLED_STUB_NAME189	_ZN14nsXPTCStubBase7Stub189Ev
> +#define MANGLED_STUB_NAME190	_ZN14nsXPTCStubBase7Stub190Ev
> +#define MANGLED_STUB_NAME191	_ZN14nsXPTCStubBase7Stub191Ev
> +#define MANGLED_STUB_NAME192	_ZN14nsXPTCStubBase7Stub192Ev
> +#define MANGLED_STUB_NAME193	_ZN14nsXPTCStubBase7Stub193Ev
> +#define MANGLED_STUB_NAME194	_ZN14nsXPTCStubBase7Stub194Ev
> +#define MANGLED_STUB_NAME195	_ZN14nsXPTCStubBase7Stub195Ev
> +#define MANGLED_STUB_NAME196	_ZN14nsXPTCStubBase7Stub196Ev
> +#define MANGLED_STUB_NAME197	_ZN14nsXPTCStubBase7Stub197Ev
> +#define MANGLED_STUB_NAME198	_ZN14nsXPTCStubBase7Stub198Ev
> +#define MANGLED_STUB_NAME199	_ZN14nsXPTCStubBase7Stub199Ev
> +#define MANGLED_STUB_NAME200	_ZN14nsXPTCStubBase7Stub200Ev
> +#define MANGLED_STUB_NAME201	_ZN14nsXPTCStubBase7Stub201Ev
> +#define MANGLED_STUB_NAME202	_ZN14nsXPTCStubBase7Stub202Ev
> +#define MANGLED_STUB_NAME203	_ZN14nsXPTCStubBase7Stub203Ev
> +#define MANGLED_STUB_NAME204	_ZN14nsXPTCStubBase7Stub204Ev
> +#define MANGLED_STUB_NAME205	_ZN14nsXPTCStubBase7Stub205Ev
> +#define MANGLED_STUB_NAME206	_ZN14nsXPTCStubBase7Stub206Ev
> +#define MANGLED_STUB_NAME207	_ZN14nsXPTCStubBase7Stub207Ev
> +#define MANGLED_STUB_NAME208	_ZN14nsXPTCStubBase7Stub208Ev
> +#define MANGLED_STUB_NAME209	_ZN14nsXPTCStubBase7Stub209Ev
> +#define MANGLED_STUB_NAME210	_ZN14nsXPTCStubBase7Stub210Ev
> +#define MANGLED_STUB_NAME211	_ZN14nsXPTCStubBase7Stub211Ev
> +#define MANGLED_STUB_NAME212	_ZN14nsXPTCStubBase7Stub212Ev
> +#define MANGLED_STUB_NAME213	_ZN14nsXPTCStubBase7Stub213Ev
> +#define MANGLED_STUB_NAME214	_ZN14nsXPTCStubBase7Stub214Ev
> +#define MANGLED_STUB_NAME215	_ZN14nsXPTCStubBase7Stub215Ev
> +#define MANGLED_STUB_NAME216	_ZN14nsXPTCStubBase7Stub216Ev
> +#define MANGLED_STUB_NAME217	_ZN14nsXPTCStubBase7Stub217Ev
> +#define MANGLED_STUB_NAME218	_ZN14nsXPTCStubBase7Stub218Ev
> +#define MANGLED_STUB_NAME219	_ZN14nsXPTCStubBase7Stub219Ev
> +#define MANGLED_STUB_NAME220	_ZN14nsXPTCStubBase7Stub220Ev
> +#define MANGLED_STUB_NAME221	_ZN14nsXPTCStubBase7Stub221Ev
> +#define MANGLED_STUB_NAME222	_ZN14nsXPTCStubBase7Stub222Ev
> +#define MANGLED_STUB_NAME223	_ZN14nsXPTCStubBase7Stub223Ev
> +#define MANGLED_STUB_NAME224	_ZN14nsXPTCStubBase7Stub224Ev
> +#define MANGLED_STUB_NAME225	_ZN14nsXPTCStubBase7Stub225Ev
> +#define MANGLED_STUB_NAME226	_ZN14nsXPTCStubBase7Stub226Ev
> +#define MANGLED_STUB_NAME227	_ZN14nsXPTCStubBase7Stub227Ev
> +#define MANGLED_STUB_NAME228	_ZN14nsXPTCStubBase7Stub228Ev
> +#define MANGLED_STUB_NAME229	_ZN14nsXPTCStubBase7Stub229Ev
> +#define MANGLED_STUB_NAME230	_ZN14nsXPTCStubBase7Stub230Ev
> +#define MANGLED_STUB_NAME231	_ZN14nsXPTCStubBase7Stub231Ev
> +#define MANGLED_STUB_NAME232	_ZN14nsXPTCStubBase7Stub232Ev
> +#define MANGLED_STUB_NAME233	_ZN14nsXPTCStubBase7Stub233Ev
> +#define MANGLED_STUB_NAME234	_ZN14nsXPTCStubBase7Stub234Ev
> +#define MANGLED_STUB_NAME235	_ZN14nsXPTCStubBase7Stub235Ev
> +#define MANGLED_STUB_NAME236	_ZN14nsXPTCStubBase7Stub236Ev
> +#define MANGLED_STUB_NAME237	_ZN14nsXPTCStubBase7Stub237Ev
> +#define MANGLED_STUB_NAME238	_ZN14nsXPTCStubBase7Stub238Ev
> +#define MANGLED_STUB_NAME239	_ZN14nsXPTCStubBase7Stub239Ev
> +#define MANGLED_STUB_NAME240	_ZN14nsXPTCStubBase7Stub240Ev
> +#define MANGLED_STUB_NAME241	_ZN14nsXPTCStubBase7Stub241Ev
> +#define MANGLED_STUB_NAME242	_ZN14nsXPTCStubBase7Stub242Ev
> +#define MANGLED_STUB_NAME243	_ZN14nsXPTCStubBase7Stub243Ev
> +#define MANGLED_STUB_NAME244	_ZN14nsXPTCStubBase7Stub244Ev
> +#define MANGLED_STUB_NAME245	_ZN14nsXPTCStubBase7Stub245Ev
> +#define MANGLED_STUB_NAME246	_ZN14nsXPTCStubBase7Stub246Ev
> +#define MANGLED_STUB_NAME247	_ZN14nsXPTCStubBase7Stub247Ev
> +#define MANGLED_STUB_NAME248	_ZN14nsXPTCStubBase7Stub248Ev
> +#define MANGLED_STUB_NAME249	_ZN14nsXPTCStubBase7Stub249Ev



-- 
Rick (rick@kuroyi.net)
http://dxr3.sourceforge.net
http://rsub.sourceforge.net

I think the slogan of the fansubbers puts
it best: "Cheaper than crack, and lots more fun."



Reply to: