diff options
author | tnn <tnn@pkgsrc.org> | 2010-03-16 10:59:09 +0000 |
---|---|---|
committer | tnn <tnn@pkgsrc.org> | 2010-03-16 10:59:09 +0000 |
commit | 17f177763039c0a8cca075920481b1fd6175c1bb (patch) | |
tree | d4494d4fe261b2bfd3909daf05ea86175c71c737 /www/seamonkey | |
parent | 096d8b1dbcbe2d78f27656f465b349c547d9be0a (diff) | |
download | pkgsrc-17f177763039c0a8cca075920481b1fd6175c1bb.tar.gz |
clone comm-1.9.1 patch set from devel/xulrunner into mail/thunderbird and
www/seamonkey so devel/xulrunner can move forward to 1.9.2.
Diffstat (limited to 'www/seamonkey')
67 files changed, 3017 insertions, 10 deletions
diff --git a/www/seamonkey/Makefile b/www/seamonkey/Makefile index 81613895f37..84a17ce08ff 100644 --- a/www/seamonkey/Makefile +++ b/www/seamonkey/Makefile @@ -1,9 +1,10 @@ -# $NetBSD: Makefile,v 1.33 2010/02/17 20:22:45 tnn Exp $ +# $NetBSD: Makefile,v 1.34 2010/03/16 10:59:09 tnn Exp $ # DISTNAME= seamonkey-${SM_VER}.source PKGNAME= seamonkey-${SM_VER} SM_VER= 2.0.3 +PKGREVISION= 1 CATEGORIES= www MASTER_SITES= ${MASTER_SITE_MOZILLA:=seamonkey/releases/${SM_VER}/source/} EXTRACT_SUFX= .tar.bz2 @@ -23,14 +24,6 @@ CONFIGURE_ARGS+= --enable-static ALL_ENV+= MOZILLA_PKG_NAME=seamonkey -MOZILLA_PATCHES= ${.CURDIR}/../../devel/xulrunner/patches/patch-* -pre-patch: - @${STEP_MSG} "Applying common mozilla patches from devel/xulrunner" -.for i in ${MOZILLA_PATCHES} - ${RUN} ${CAT} ${i} | ${PATCH} -s -p0 -d ${WRKSRC}/${MOZILLA_DIR} || \ - { ${ERROR_MSG} "Patch ${i} failed"; ${_PKGSRC_PATCH_FAIL}; } -.endfor - pre-configure: cd ${WRKSRC}/directory/c-sdk && ${SETENV} ${CONFIGURE_ENV} autoconf cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} autoconf diff --git a/www/seamonkey/distinfo b/www/seamonkey/distinfo index 4b12f973c22..d5fcd729c0b 100644 --- a/www/seamonkey/distinfo +++ b/www/seamonkey/distinfo @@ -1,9 +1,74 @@ -$NetBSD: distinfo,v 1.46 2010/02/17 20:22:45 tnn Exp $ +$NetBSD: distinfo,v 1.47 2010/03/16 10:59:09 tnn Exp $ SHA1 (seamonkey-2.0.3.source.tar.bz2) = 517bd1dd2ebb5bd856c8543f3f7f282681c241ce RMD160 (seamonkey-2.0.3.source.tar.bz2) = d19385263c2dfc5de63be389ae342041c7d34dfd Size (seamonkey-2.0.3.source.tar.bz2) = 60922373 bytes +SHA1 (patch-aa) = 0d46562e73fce3fc1bf590ac93a28b2202a8e214 SHA1 (patch-aa-toplevel) = 458051a1b3318b49124192c6e97cb9ed0d92dead +SHA1 (patch-ab) = c7a6961362b131f0a39f65355562b115fae3be85 +SHA1 (patch-ac) = e181323e153ee061b7f3644b599294a4c4a3e3e8 +SHA1 (patch-ad) = f49147e2fa28400986b659ec50918e3835db0105 +SHA1 (patch-ae) = cf4cb737fc29ef7ac6ffe1b3bc504743441e4828 +SHA1 (patch-af) = 16cae98e043dedeb6331212fd15ce914196fe8c7 +SHA1 (patch-ag) = 7f8c3ac1bec475dd2b6fd6e10e5304ab9c112a67 +SHA1 (patch-ah) = 10c80ec60801295b037b4a45fbad8937922da235 +SHA1 (patch-ai) = 4d701ece9a2aaa0b640c189745fa7e731617fb7c +SHA1 (patch-aj) = 89d390f7eeeb52256265955610b3cad4b62c5aa7 +SHA1 (patch-ak) = dca377e3cb733a48c3aa071a74bba8d2535ee161 +SHA1 (patch-al) = 893eb0c096f61b52a6299eff1e5ab520014fbda4 +SHA1 (patch-am) = 81bcda476a7b54050ed1ae87bd47cf9de8f19919 +SHA1 (patch-an) = e30362e1a07c6c8e96dc81d134517685c3f19ca9 +SHA1 (patch-ao) = 6307d82a2eb65131908b0d4d05da7433b6cf38d1 +SHA1 (patch-ap) = 78d9944ba37b3d90d0ab9e91fc831949e54ef2ad +SHA1 (patch-aq) = ac5cd0e83f0c166fae6b033ad960d7820bb7add6 +SHA1 (patch-ar) = dab688f86340bccb80db5531f4e36cb8f50254e4 +SHA1 (patch-as) = 7e283a79231909ab5fb60740b5e36c8c0744e025 +SHA1 (patch-at) = 569a874251a1920fa916d448c108910348cd75dc +SHA1 (patch-au) = d381e6c0d6a791c2d72754f847df0e2210265fd8 +SHA1 (patch-av) = 2cb2e3d5b94f7b83117eb752d4410638daa6ae73 +SHA1 (patch-aw) = 55d2769dfb6d0c65bd2072c1a7c82cfef0fd5404 +SHA1 (patch-ax) = 1dbdcd2e9a791a686fd42452ccf486d14cdf2a57 +SHA1 (patch-ay) = 5aaeb992cab024fb2b6035ddee239a8534b23aee +SHA1 (patch-az) = 0e04c1c740ad3f1462a6cda4a3832378acefb600 +SHA1 (patch-ba) = fd28f3b24848e7221078ef692eef7ccae8625987 +SHA1 (patch-bb) = 70d1d1fed2f611fa0185ca5736dae26c8cbc2f12 +SHA1 (patch-ma) = 9b9bc5e5ced5831aa14e1549ed2ddf0b9c2ce986 SHA1 (patch-ma-toplevel) = 460326a0551fecd13ca188cff907c89cce359c31 +SHA1 (patch-mb) = 8bdd47c4e57ae63c971766286ce8626d3341c92e +SHA1 (patch-md) = 932c2b0237c9690da06533f0abfeabddf32d8f3e +SHA1 (patch-me) = 66c15af6d7b07a4fec7ecd06cb9c9278b35a123e +SHA1 (patch-mf) = bc693a247f306f414f54bf515eeb8f36841a46b8 +SHA1 (patch-mg) = f33a92539ebe171b7bbbd83a54ad9ac2fdca249a +SHA1 (patch-mi) = c49e917409c0542e69f57fe5571a16b6c2e4aa9a +SHA1 (patch-mj) = 9b28802eb665a7a77e879ec44e9da52e2e79ec8b +SHA1 (patch-mk) = 3c25934e0c7b9277d96a5635b961e1fb6682ab7b +SHA1 (patch-ml) = ef7d87fff48f298f4c1ed037439eaf8c7c574f68 +SHA1 (patch-mm) = 04d9105ab0fb520690b58230e90bf6217b439df7 +SHA1 (patch-mn) = beb92ccc59f909f0d4f5f5bb62ad834b55fc94ce +SHA1 (patch-mp) = 3da5e645d4e0c704ad8147c33f66bb13ec7c1bc6 +SHA1 (patch-na) = b7c0feed9546ca1168c696bf7ea6bbc8ea4564c4 +SHA1 (patch-nd) = 007b8d1310990253e86dab579397b02ced42cb71 +SHA1 (patch-pa) = ee713ec24b453aaf3f1964e8100b26ecae3bf6a4 +SHA1 (patch-pb) = fede79d8fec147b4f79edbdf571474365a6dba25 +SHA1 (patch-pc) = 5a74b0476c0be0bf4e0c22fbe78b6dbe63beae08 +SHA1 (patch-pd) = b2e18e7b09123576d07ae052b2f2599217d6f3ce +SHA1 (patch-pe) = 218275a25df933ed548395f4338a5cb2f045d4a6 +SHA1 (patch-pf) = 88c39f735087fa285f3f75bfdaa6dc571da67eb9 +SHA1 (patch-pg) = 5268f7e7b22f89f55db44537c32bf5ac73630168 +SHA1 (patch-ra) = 70d5130250a4ac6825112e64006b233f4b802e9c +SHA1 (patch-rc) = 7e6a38bd3eabe500bcf3c47be7f4bd5768f24c39 +SHA1 (patch-xa) = 0acaf27d8687c7cb5a46fc3773097a3dea4c75d9 +SHA1 (patch-xb) = 07a90e393dbb38a98e8d9954387757d21d3e65cf +SHA1 (patch-xc) = 98c8b4193dde73f28747c8ac870071f1debbe9f0 +SHA1 (patch-xd) = 927a73f9ba1f516a10e83dbe5f00744acc6a88df +SHA1 (patch-xe) = 945bce0dc7347392b992b9698597d8584557d51e +SHA1 (patch-xf) = 34d671d4e615a694e3add3303eaae5e23c7df3ac +SHA1 (patch-xg) = 4fdf27307cfb3bf3cb33440da75704b149fc2aaa +SHA1 (patch-xh) = a5a2923069d5819e979a445d0ea35cde74699bd7 +SHA1 (patch-xi) = db8359452da08413ac6672010f2f05766571464c +SHA1 (patch-xj) = 452d87313b29510fb02e804545c17193e2c822bf +SHA1 (patch-xk) = b50b34041b75b1590f021592b1e26893ae458a01 +SHA1 (patch-xl) = 1425f9e5fd0dc49f3204730d1d88b9600d6475e4 +SHA1 (patch-xm) = 270e762936fe686cc55b820d52e15421b27c7c2c SHA1 (patch-za) = ae79f952b5a66655ecaf9671b98ebc91406ba085 SHA1 (patch-zc) = 2f73cb72bd6c10830e7a2b8ad3b1f769c6afdb3c diff --git a/www/seamonkey/patches/patch-aa b/www/seamonkey/patches/patch-aa new file mode 100644 index 00000000000..2755f8124e1 --- /dev/null +++ b/www/seamonkey/patches/patch-aa @@ -0,0 +1,67 @@ +$NetBSD: patch-aa,v 1.3 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/configure.in.orig 2009-10-16 17:13:35.000000000 +0200 ++++ mozilla/configure.in +@@ -1799,7 +1799,7 @@ case "$target" in + fi + ;; + +-*-freebsd*) ++*-freebsd* | *-dragonfly*) + if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then + DLL_SUFFIX=".so.1.0" + DSO_LDOPTS="-shared" +@@ -1813,6 +1813,9 @@ case "$target" in + # MKSHLIB_FORCE_ALL='-Wl,-Bforcearchive' + # MKSHLIB_UNFORCE_ALL='' + # fi ++ if test "$LIBRUNPATH"; then ++ DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS" ++ fi + ;; + + *-hpux*) +@@ -3043,6 +3046,9 @@ dnl ==================================== + case $target in + *-hpux11.*) + ;; ++*-dragonfly*) ++ AC_CHECK_LIB(c, gethostbyname_r) ++ ;; + *) + AC_CHECK_LIB(c_r, gethostbyname_r) + ;; +@@ -4158,6 +4164,14 @@ else + fi + fi + ++if test -n "${LIBXUL_SDK_DIR}"; then ++ AC_MSG_WARN([pkgsrc: LIBXUL_SDK_DIR is set; assuming we want nss and nspr from xulrunner.]) ++ NSPR_CFLAGS="-I${prefix}/include/xulrunner/unstable `pkg-config --cflags mozilla-nspr`" ++ NSPR_LIBS="`pkg-config --libs mozilla-nspr`" ++ NSS_CFLAGS="`pkg-config --cflags mozilla-nss`" ++ NSS_LIBS="`pkg-config --libs mozilla-nss`" ++fi ++ + if test -z "$SKIP_LIBRARY_CHECKS"; then + dnl system JPEG support + dnl ======================================================== +@@ -8375,7 +8389,8 @@ rm -f confdefs.h.save + mv confdefs.h confdefs.h.save + egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h + AC_OUTPUT_MAKE_DEFS() +-MOZ_DEFINES=$DEFS ++# nbsed broken. PR bin/42261 ++MOZ_DEFINES="$DEFS`awk 'BEGIN {while(x<1000){printf " ";x++}}'`" + AC_SUBST(MOZ_DEFINES) + rm -f confdefs.h + mv confdefs.h.save confdefs.h +@@ -8466,6 +8481,8 @@ if test -z "$MOZ_NATIVE_NSPR"; then + AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output]) + if test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE"; then + NSPR_LIBS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --libdir=$LIBXUL_DIST/lib --libs` ++ AC_MSG_WARN([pkgsrc: adding run path to NSPR_LIBS for bundled NSPR.]) ++ NSPR_LIBS="-Wl,-R${prefix}/lib/\${MOZILLA_PKG_NAME} ${NSPR_LIBS}" + $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $NSPR_LIBS'" config/autoconf.mk + NSPR_CFLAGS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --includedir=$LIBXUL_DIST/include/nspr --cflags` + $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $NSPR_CFLAGS'" config/autoconf.mk diff --git a/www/seamonkey/patches/patch-ab b/www/seamonkey/patches/patch-ab new file mode 100644 index 00000000000..806aebe8155 --- /dev/null +++ b/www/seamonkey/patches/patch-ab @@ -0,0 +1,26 @@ +$NetBSD: patch-ab,v 1.10 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/nsprpub/pr/include/md/_netbsd.h.orig 2009-06-29 18:15:06.000000000 +0200 ++++ mozilla/nsprpub/pr/include/md/_netbsd.h +@@ -94,6 +94,12 @@ + #define _PR_INET6_PROBE + #endif + ++#if __NetBSD_Version__ >= 106370000 ++/* NetBSD 1.6ZK */ ++#define _PR_HAVE_GETPROTO_R ++#define _PR_HAVE_GETPROTO_R_INT ++#endif ++ + #define USE_SETJMP + + #ifndef _PR_PTHREADS +@@ -107,6 +113,8 @@ + #define JB_SP_INDEX 2 + #elif defined(__mips__) + #define JB_SP_INDEX 4 ++#elif defined(__amd64__) ++#define JB_SP_INDEX 6 + #elif defined(__alpha__) + #define JB_SP_INDEX 34 + #elif defined(__arm32__) diff --git a/www/seamonkey/patches/patch-ac b/www/seamonkey/patches/patch-ac new file mode 100644 index 00000000000..32200c1dba0 --- /dev/null +++ b/www/seamonkey/patches/patch-ac @@ -0,0 +1,83 @@ +$NetBSD: patch-ac,v 1.6 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/nsprpub/configure.in.orig 2009-06-29 18:15:05.000000000 +0200 ++++ mozilla/nsprpub/configure.in +@@ -71,7 +71,7 @@ OBJDIR_NAME=. + OBJDIR_SUFFIX=OBJ + NSINSTALL='$(MOD_DEPTH)/config/$(OBJDIR_NAME)/nsinstall' + NOSUCHFILE=/no-such-file +-LIBNSPR='-L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)' ++LIBNSPR='-Wl,-R${prefix}/lib/${MOZILLA_PKG_NAME} -L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)' + LIBPLC='-L$(dist_libdir) -lplc$(MOD_MAJOR_VERSION)' + CYGWIN_WRAPPER= + MACOS_SDK_DIR= +@@ -1160,6 +1160,34 @@ tools are selected during the Xcode/Deve + DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)' + MDCPUCFG_H=_freebsd.cfg + PR_MD_CSRCS=freebsd.c ++ if test "$LIBRUNPATH"; then ++ DSO_LDOPTS="$DSO_LDOPTS -Wl,-R$LIBRUNPATH" ++ fi ++ ;; ++ ++*-dragonfly*) ++ if test -z "$USE_NSPR_THREADS"; then ++ USE_PTHREADS=1 ++ fi ++ AC_DEFINE(XP_UNIX) ++ AC_DEFINE(FREEBSD) ++ AC_DEFINE(HAVE_BSD_FLOCK) ++ AC_DEFINE(HAVE_SOCKLEN_T) ++ CFLAGS="$CFLAGS $(DSO_CFLAGS) -ansi -Wall" ++ MOZ_OBJFORMAT=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` ++ if test "$MOZ_OBJFORMAT" = "elf"; then ++ DLL_SUFFIX=so ++ else ++ DLL_SUFFIX=so.1.0 ++ fi ++ MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@' ++ DSO_CFLAGS=-fPIC ++ DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)' ++ MDCPUCFG_H=_freebsd.cfg ++ PR_MD_CSRCS=freebsd.c ++ if test "$LIBRUNPATH"; then ++ DSO_LDOPTS="$DSO_LDOPTS -Wl,-R$LIBRUNPATH" ++ fi + ;; + + *-hpux*) +@@ -1731,6 +1759,7 @@ mips-nec-sysv*) + AC_DEFINE(XP_UNIX) + AC_DEFINE(NETBSD) + AC_DEFINE(HAVE_BSD_FLOCK) ++ AC_DEFINE(HAVE_SOCKLEN_T) + if test -z "$USE_NSPR_THREADS"; then + USE_PTHREADS=1 + fi +@@ -2511,7 +2540,7 @@ if test -n "$USE_PTHREADS"; then + if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then + ac_cv_have_dash_pthread=yes + case "$target_os" in +- freebsd*) ++ freebsd* | dragonfly*) + # Freebsd doesn't use -pthread for compiles, it uses them for linking + ;; + *) +@@ -2549,7 +2578,7 @@ if test -n "$USE_PTHREADS"; then + _PTHREAD_LDFLAGS= + fi + ;; +- *-freebsd*) ++ *-freebsd* | *-dragonfly*) + AC_DEFINE(_REENTRANT) + AC_DEFINE(_THREAD_SAFE) + dnl -pthread links in -lc_r, so don't specify it explicitly. +@@ -2630,7 +2659,7 @@ case "$target" in + AC_DEFINE(_PR_NEED_PTHREAD_INIT) + fi + ;; +-*-freebsd*) ++*-freebsd* | *-dragonfly*) + if test -n "$USE_NSPR_THREADS"; then + AC_DEFINE(_PR_LOCAL_THREADS_ONLY) + fi diff --git a/www/seamonkey/patches/patch-ad b/www/seamonkey/patches/patch-ad new file mode 100644 index 00000000000..0b0f5a75bc3 --- /dev/null +++ b/www/seamonkey/patches/patch-ad @@ -0,0 +1,13 @@ +$NetBSD: patch-ad,v 1.3 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/xpcom/io/nsLocalFileUnix.h.orig 2009-06-29 18:15:32.000000000 +0200 ++++ mozilla/xpcom/io/nsLocalFileUnix.h +@@ -75,7 +75,7 @@ + #endif + + // so we can statfs on freebsd +-#if defined(__FreeBSD__) ++#if defined(__FreeBSD__) || ((defined(__DragonFly__) || defined(__NetBSD__)) && !defined(HAVE_STATVFS)) + #define HAVE_SYS_STATFS_H + #define STATFS statfs + #include <sys/param.h> diff --git a/www/seamonkey/patches/patch-ae b/www/seamonkey/patches/patch-ae new file mode 100644 index 00000000000..2fbd43f2187 --- /dev/null +++ b/www/seamonkey/patches/patch-ae @@ -0,0 +1,43 @@ +$NetBSD: patch-ae,v 1.3 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/nsprpub/pr/src/misc/prnetdb.c.orig 2009-06-29 18:15:07.000000000 +0200 ++++ mozilla/nsprpub/pr/src/misc/prnetdb.c +@@ -114,6 +114,11 @@ PRLock *_pr_dnsLock = NULL; + #define _PR_HAVE_5_ARG_GETPROTO_R + #endif + ++#if __DragonFly_version >= 200202 ++#define _PR_HAVE_GETPROTO_R ++#define _PR_HAVE_5_ARG_GETPROTO_R ++#endif ++ + /* BeOS has glibc but not the glibc-style getprotobyxxx_r functions. */ + #if (defined(__GLIBC__) && __GLIBC__ >= 2 && !defined(XP_BEOS)) + #define _PR_HAVE_GETPROTO_R +@@ -331,7 +336,7 @@ _pr_QueryNetIfs(void) + } + + #elif (defined(DARWIN) && defined(HAVE_GETIFADDRS)) || defined(FREEBSD) \ +- || defined(NETBSD) || defined(OPENBSD) ++ || defined(NETBSD) || defined(OPENBSD) || defined(DRAGONFLY) + + /* + * Use the BSD getifaddrs function. +@@ -2039,7 +2044,17 @@ PR_IMPLEMENT(PRAddrInfo *) PR_GetAddrInf + */ + hints.ai_socktype = SOCK_STREAM; + ++/* NetBSD >= 2.99.9 has a thread-safe resolver */ ++#if defined(__NetBSD_Version__) && __NetBSD_Version__ < 299000900 ++ LOCK_DNS(); ++#endif ++ + rv = GETADDRINFO(hostname, NULL, &hints, &res); ++ ++#if defined(__NetBSD_Version__) && __NetBSD_Version__ < 299000900 ++ UNLOCK_DNS(); ++#endif ++ + if (rv == 0) + return (PRAddrInfo *) res; + diff --git a/www/seamonkey/patches/patch-af b/www/seamonkey/patches/patch-af new file mode 100644 index 00000000000..c9835febe17 --- /dev/null +++ b/www/seamonkey/patches/patch-af @@ -0,0 +1,32 @@ +$NetBSD: patch-af,v 1.4 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/config/mkdepend/imakemdep.h.orig 2009-06-29 18:14:41.000000000 +0200 ++++ mozilla/config/mkdepend/imakemdep.h +@@ -235,7 +235,7 @@ in this Software without prior written a + #ifdef _CRAY + #define DEFAULT_CPP "/lib/pcpp" + #endif +-#if defined(__386BSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) ++#if defined(__386BSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) + #define DEFAULT_CPP "/usr/libexec/cpp" + #endif + #ifdef MACH +@@ -273,7 +273,7 @@ char *cpp_argv[ARGUMENTS] = { + #ifdef unix + "-Uunix", /* remove unix symbol so that filename unix.c okay */ + #endif +-#if defined(__386BSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(MACH) ++#if defined(__386BSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(MACH) || defined(__DragonFly__) + # ifdef __i386__ + "-D__i386__", + # endif +@@ -713,6 +713,9 @@ struct symtab predefs[] = { + #ifdef __sgi + {"__sgi", "1"}, + #endif ++#ifdef __DragonFly__ ++ {"__DragonFly__", "1"}, ++#endif + #ifdef __FreeBSD__ + {"__FreeBSD__", "1"}, + #endif diff --git a/www/seamonkey/patches/patch-ag b/www/seamonkey/patches/patch-ag new file mode 100644 index 00000000000..ed3730f9082 --- /dev/null +++ b/www/seamonkey/patches/patch-ag @@ -0,0 +1,31 @@ +$NetBSD: patch-ag,v 1.3 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/nsprpub/pr/include/md/_freebsd.h.orig 2009-06-29 18:15:06.000000000 +0200 ++++ mozilla/nsprpub/pr/include/md/_freebsd.h +@@ -79,7 +79,7 @@ + #define _PR_NO_LARGE_FILES + + #if defined(_PR_PTHREADS) +-#if __FreeBSD_version >= 400008 ++#if defined(__DragonFly__) || __FreeBSD_version >= 400008 + /* + * libc_r before this version of FreeBSD doesn't have poll(). + * Although libc has poll(), it is not thread-safe so we can't +@@ -88,7 +88,7 @@ + #define _PR_POLL_AVAILABLE + #endif + #else +-#if __FreeBSD_version >= 300000 ++#if defined(__DragonFly__) || __FreeBSD_version >= 300000 + #define _PR_POLL_AVAILABLE + #define _PR_USE_POLL + #endif +@@ -97,7 +97,7 @@ + #define _PR_HAVE_SYSV_SEMAPHORES + #define PR_HAVE_SYSV_NAMED_SHARED_MEMORY + +-#if __FreeBSD_version >= 400014 ++#if defined(__DragonFly__) || __FreeBSD_version >= 400014 + #define _PR_INET6 + #define _PR_HAVE_INET_NTOP + #define _PR_HAVE_GETHOSTBYNAME2 diff --git a/www/seamonkey/patches/patch-ah b/www/seamonkey/patches/patch-ah new file mode 100644 index 00000000000..596628e11a1 --- /dev/null +++ b/www/seamonkey/patches/patch-ah @@ -0,0 +1,18 @@ +$NetBSD: patch-ah,v 1.3 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptc_platforms_unixish_x86.h.orig 2009-06-29 18:15:33.000000000 +0200 ++++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptc_platforms_unixish_x86.h +@@ -77,6 +77,13 @@ + #define THUNK_BASED_THIS_ADJUST + #endif + ++#elif defined(__DragonFly__) ++# if defined(__FreeBSD_cc_version) ++# define CFRONT_STYLE_THIS_ADJUST ++# else ++# define THUNK_BASED_THIS_ADJUST ++# endif ++ + #elif defined(__FreeBSD__) + /* System versions of gcc on FreeBSD don't use thunks. On 3.x, the system + * compiler is gcc 2.7.2.3, which doesn't use thunks by default. On 4.x and diff --git a/www/seamonkey/patches/patch-ai b/www/seamonkey/patches/patch-ai new file mode 100644 index 00000000000..32093f8b624 --- /dev/null +++ b/www/seamonkey/patches/patch-ai @@ -0,0 +1,13 @@ +$NetBSD: patch-ai,v 1.4 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/dbm/src/mktemp.c.orig 2009-06-29 18:14:43.000000000 +0200 ++++ mozilla/dbm/src/mktemp.c +@@ -90,7 +90,7 @@ mktemp(char *path) + static int + _gettemp(char *path, register int *doopen, int extraFlags) + { +-#if !defined(_WINDOWS) || defined(_WIN32) ++#if (!defined(_WINDOWS) || defined(_WIN32)) && !defined(errno) + extern int errno; + #endif + register char *start, *trv; diff --git a/www/seamonkey/patches/patch-aj b/www/seamonkey/patches/patch-aj new file mode 100644 index 00000000000..0c2cf457a3c --- /dev/null +++ b/www/seamonkey/patches/patch-aj @@ -0,0 +1,20 @@ +$NetBSD: patch-aj,v 1.3 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/profile/dirserviceprovider/src/nsProfileLock.cpp.orig 2009-06-29 18:15:11.000000000 +0200 ++++ mozilla/profile/dirserviceprovider/src/nsProfileLock.cpp +@@ -391,6 +391,7 @@ nsresult nsProfileLock::LockWithSymlink( + act.sa_flags = 0; + sigfillset(&act.sa_mask); + ++#ifndef DEBUG + #define CATCH_SIGNAL(signame) \ + PR_BEGIN_MACRO \ + if (sigaction(signame, NULL, &oldact) == 0 && \ +@@ -409,6 +410,7 @@ PR_BEGIN_MACRO + CATCH_SIGNAL(SIGTERM); + + #undef CATCH_SIGNAL ++#endif + } + } + } diff --git a/www/seamonkey/patches/patch-ak b/www/seamonkey/patches/patch-ak new file mode 100644 index 00000000000..a976311d611 --- /dev/null +++ b/www/seamonkey/patches/patch-ak @@ -0,0 +1,19 @@ +$NetBSD: patch-ak,v 1.3 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/toolkit/components/places/src/nsMorkHistoryImporter.cpp.orig 2009-06-29 18:15:22.000000000 +0200 ++++ mozilla/toolkit/components/places/src/nsMorkHistoryImporter.cpp +@@ -148,9 +148,12 @@ AddToHistoryCB(const nsCSubstring &aRowI + } + + PRTime date; +- if (PR_sscanf(values[kLastVisitColumn].get(), "%lld", &date) != 1) { ++ long long ld; ++ if (PR_sscanf(values[kLastVisitColumn].get(), "%lld", &ld) != 1) { + date = -1; +- } ++ } else { ++ date = ld; ++ } + + PRBool isTyped = values[kTypedColumn].EqualsLiteral("1"); + PRInt32 transition = isTyped ? diff --git a/www/seamonkey/patches/patch-al b/www/seamonkey/patches/patch-al new file mode 100644 index 00000000000..7890d57da4b --- /dev/null +++ b/www/seamonkey/patches/patch-al @@ -0,0 +1,27 @@ +$NetBSD: patch-al,v 1.3 2010/03/16 10:59:10 tnn Exp $ + +# Reported upstream as https://bugzilla.mozilla.org/show_bug.cgi?id=471179 + +--- mozilla/nsprpub/pr/src/misc/prsystem.c.orig 2009-06-29 18:15:07.000000000 +0200 ++++ mozilla/nsprpub/pr/src/misc/prsystem.c +@@ -284,6 +284,20 @@ PR_IMPLEMENT(PRUint64) PR_GetPhysicalMem + long pageCount = sysconf(_SC_PHYS_PAGES); + bytes = (PRUint64) pageSize * pageCount; + ++#elif defined(NETBSD) ++ ++ int mib[2]; ++ int rc; ++ uint64_t memSize; ++ size_t len = sizeof(memSize); ++ ++ mib[0] = CTL_HW; ++ mib[1] = HW_PHYSMEM64; ++ rc = sysctl( mib, 2, &memSize, &len, NULL, 0 ); ++ if ( -1 != rc ) { ++ bytes = memSize; ++ } ++ + #elif defined(HPUX) + + struct pst_static info; diff --git a/www/seamonkey/patches/patch-am b/www/seamonkey/patches/patch-am new file mode 100644 index 00000000000..13d88dd8a7d --- /dev/null +++ b/www/seamonkey/patches/patch-am @@ -0,0 +1,17 @@ +$NetBSD: patch-am,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +SHA1_Update conflicts with openssl which may be dynamically loaded +at runtime via libcups or libgssapi so causing a crash due to using +the wrong binding. So rename here to avoid conflict. + +--- mozilla/security/nss/lib/freebl/blapi.h.orig 2009-06-29 18:15:13.000000000 +0200 ++++ mozilla/security/nss/lib/freebl/blapi.h +@@ -925,6 +925,8 @@ extern void SHA1_DestroyContext(SHA1Cont + */ + extern void SHA1_Begin(SHA1Context *cx); + ++#define SHA1_Update NSS_SHA1_Update ++ + /* + ** Update the SHA-1 hash function with more data. + ** "cx" the context diff --git a/www/seamonkey/patches/patch-an b/www/seamonkey/patches/patch-an new file mode 100644 index 00000000000..bb16d013a17 --- /dev/null +++ b/www/seamonkey/patches/patch-an @@ -0,0 +1,48 @@ +$NetBSD: patch-an,v 1.3 2010/03/16 10:59:10 tnn Exp $ + +SHA1_Update conflicts with openssl which may be dynamically loaded +at runtime via libcups or libgssapi so causing a crash due to using +the wrong binding. So rename here to avoid conflict. + +--- mozilla/security/nss/lib/freebl/sha-fast-amd64-sun.s.orig 2009-06-29 18:15:14.000000000 +0200 ++++ mozilla/security/nss/lib/freebl/sha-fast-amd64-sun.s +@@ -1712,9 +1712,9 @@ shaCompress: + .LFE7: + .size shaCompress, .-shaCompress + .align 16 +-.globl SHA1_Update +- .type SHA1_Update, @function +-SHA1_Update: ++.globl NSS_SHA1_Update ++ .type NSS_SHA1_Update, @function ++NSS_SHA1_Update: + .LFB5: + pushq %rbp + .LCFI5: +@@ -1800,7 +1800,7 @@ SHA1_Update: + call shaCompress + jmp .L245 + .LFE5: +- .size SHA1_Update, .-SHA1_Update ++ .size NSS_SHA1_Update, .-NSS_SHA1_Update + .section .rodata + .align 32 + .type bulk_pad.0, @object +@@ -1902,7 +1902,7 @@ SHA1_End: + subl %r8d, %edx + andl $63, %edx + incl %edx +- call SHA1_Update@PLT ++ call NSS_SHA1_Update@PLT + movq %rbx, %rdi + movq %r12, %rsi + shrq $32, %rdi +@@ -2018,7 +2018,7 @@ SHA1_HashBuf: + movl %r12d, %edx + movq %r13, %rsi + movq %rbx, %rdi +- call SHA1_Update@PLT ++ call NSS_SHA1_Update@PLT + leaq -292(%rbp), %rdx + movq %r14, %rsi + movq %rbx, %rdi diff --git a/www/seamonkey/patches/patch-ao b/www/seamonkey/patches/patch-ao new file mode 100644 index 00000000000..a3d5ce5d67c --- /dev/null +++ b/www/seamonkey/patches/patch-ao @@ -0,0 +1,24 @@ +$NetBSD: patch-ao,v 1.3 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/toolkit/mozapps/installer/packager.mk.orig 2009-06-29 18:15:27.000000000 +0200 ++++ mozilla/toolkit/mozapps/installer/packager.mk +@@ -449,8 +449,8 @@ endif + (cd $(DIST)/$(MOZ_PKG_DIR) && tar $(TAR_CREATE_FLAGS) - .) | \ + (cd $(DESTDIR)$(installdir) && tar -xf -) + $(NSINSTALL) -D $(DESTDIR)$(bindir) +- $(RM) -f $(DESTDIR)$(bindir)/$(MOZ_APP_NAME) +- ln -s $(installdir)/$(MOZ_APP_NAME) $(DESTDIR)$(bindir) ++ $(RM) -f $(DESTDIR)$(bindir)/$(MOZILLA_PKG_NAME) ++ ln -s $(installdir)/$(MOZ_APP_NAME) $(DESTDIR)$(bindir)/$(MOZILLA_PKG_NAME) + ifdef INSTALL_SDK # Here comes the hard part + # include directory is stable (dist/sdk/include) and unstable (dist/include) + $(NSINSTALL) -D $(DESTDIR)$(includedir)/stable +@@ -458,7 +458,7 @@ ifdef INSTALL_SDK # Here comes the hard + (cd $(DIST)/sdk/include && tar $(TAR_CREATE_FLAGS) - .) | \ + (cd $(DESTDIR)$(includedir)/stable && tar -xf -) + # The dist/include has module subdirectories that we need to flatten +- find $(DIST)/include -xtype f -exec $(SYSINSTALL) $(IFLAGS1) {} $(DESTDIR)$(includedir)/unstable \; ++ find $(DIST)/include -type f -exec $(SYSINSTALL) $(IFLAGS1) {} $(DESTDIR)$(includedir)/unstable \; + # IDL directory is stable (dist/sdk/idl) and unstable (dist/idl) + $(NSINSTALL) -D $(DESTDIR)$(idldir)/stable + $(NSINSTALL) -D $(DESTDIR)$(idldir)/unstable diff --git a/www/seamonkey/patches/patch-ap b/www/seamonkey/patches/patch-ap new file mode 100644 index 00000000000..e5879f6d969 --- /dev/null +++ b/www/seamonkey/patches/patch-ap @@ -0,0 +1,13 @@ +$NetBSD: patch-ap,v 1.7 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/media/liboggz/include/oggz/oggz_off_t_generated.h.orig 2009-08-24 17:52:50.000000000 +0200 ++++ mozilla/media/liboggz/include/oggz/oggz_off_t_generated.h +@@ -59,7 +59,7 @@ + + #include <sys/types.h> + +-#if defined(__APPLE__) || defined(SOLARIS) || defined(OS2) ++#if defined(__APPLE__) || defined(SOLARIS) || defined(OS2) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__FreeBSD__) + typedef off_t oggz_off_t; + #else + typedef loff_t oggz_off_t; diff --git a/www/seamonkey/patches/patch-aq b/www/seamonkey/patches/patch-aq new file mode 100644 index 00000000000..fbb12cf1bea --- /dev/null +++ b/www/seamonkey/patches/patch-aq @@ -0,0 +1,16 @@ +$NetBSD: patch-aq,v 1.4 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/media/liboggplay/src/liboggplay/std_semaphore.h.orig 2009-10-16 17:14:09.000000000 +0200 ++++ mozilla/media/liboggplay/src/liboggplay/std_semaphore.h +@@ -74,9 +74,9 @@ + * @retval non-zero on error + */ + +-#if defined(linux) || defined(SOLARIS) || defined(AIX) || defined(__FreeBSD__) ++#if defined(linux) || defined(SOLARIS) || defined(AIX) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) + #include <semaphore.h> +-#if defined(__FreeBSD__) ++#if defined(__FreeBSD__) || defined(__NetBSD__) + #define SEM_CREATE(p,s) sem_init(&(p), 0, s) + #else + #define SEM_CREATE(p,s) sem_init(&(p), 1, s) diff --git a/www/seamonkey/patches/patch-ar b/www/seamonkey/patches/patch-ar new file mode 100644 index 00000000000..f93b5f3693b --- /dev/null +++ b/www/seamonkey/patches/patch-ar @@ -0,0 +1,39 @@ +$NetBSD: patch-ar,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +Enable the sunaudio module to build on NetBSD. + +--- mozilla/media/libsydneyaudio/src/sydney_audio_sunaudio.c.orig 2009-06-29 18:15:03.000000000 +0200 ++++ mozilla/media/libsydneyaudio/src/sydney_audio_sunaudio.c +@@ -38,9 +38,14 @@ + #include <sys/types.h> + #include <sys/stat.h> + #include <fcntl.h> ++#if defined(__NetBSD__) ++#include <sys/ioctl.h> ++#include <sys/audioio.h> ++#else + #include <stropts.h> + #include <sys/audio.h> + #include <sys/mixer.h> ++#endif + #include <errno.h> + #include <stdio.h> + #include <pthread.h> +@@ -197,7 +202,7 @@ sa_stream_open(sa_stream_t *s) + s->default_rate = audio_info.play.sample_rate; + s->default_precision = audio_info.play.precision; + +- AUDIO_INITINFO(&audio_info) ++ AUDIO_INITINFO(&audio_info); + + audio_info.play.sample_rate = s->rate; + audio_info.play.channels = s->n_channels; +@@ -210,7 +215,7 @@ sa_stream_open(sa_stream_t *s) + if (err== -1) + return SA_ERROR_NOT_SUPPORTED; + +- AUDIO_INITINFO(&audio_info) ++ AUDIO_INITINFO(&audio_info); + err=ioctl(fd,AUDIO_GETINFO,&audio_info); + if (err== -1) + { diff --git a/www/seamonkey/patches/patch-as b/www/seamonkey/patches/patch-as new file mode 100644 index 00000000000..0f41a75558e --- /dev/null +++ b/www/seamonkey/patches/patch-as @@ -0,0 +1,33 @@ +$NetBSD: patch-as,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +Treat DragonFly like FreeBSD. + +--- mozilla/js/src/configure.in.orig 2009-06-29 18:14:51.000000000 +0200 ++++ mozilla/js/src/configure.in +@@ -1693,7 +1693,7 @@ case "$target" in + fi + ;; + +-*-freebsd*) ++*-freebsd*|*-dragonfly*) + if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then + DLL_SUFFIX=".so.1.0" + DSO_LDOPTS="-shared" +@@ -2504,7 +2504,7 @@ darwin*) + solaris*) + AC_DEFINE(AVMPLUS_UNIX) + ;; +-freebsd*|kfreebsd*) ++freebsd*|kfreebsd*|netbsd*|dragonfly*) + AC_DEFINE(AVMPLUS_UNIX) + ;; + *cygwin*|*mingw*|*mks*|*msvc*|*wince) +@@ -4185,7 +4185,7 @@ if test "$MOZ_MEMORY"; then + darwin*) + AC_DEFINE(MOZ_MEMORY_DARWIN) + ;; +- *freebsd*) ++ *freebsd*|dragonfly*) + AC_DEFINE(MOZ_MEMORY_BSD) + ;; + *linux*) diff --git a/www/seamonkey/patches/patch-at b/www/seamonkey/patches/patch-at new file mode 100644 index 00000000000..675edf0329d --- /dev/null +++ b/www/seamonkey/patches/patch-at @@ -0,0 +1,25 @@ +$NetBSD: patch-at,v 1.5 2010/03/16 10:59:10 tnn Exp $ + +Treat DragonFly like FreeBSD. +Avoid silly redefinitions of standard types on NetBSD. + +--- mozilla/gfx/qcms/qcmstypes.h.orig 2009-08-24 17:52:41.000000000 +0200 ++++ mozilla/gfx/qcms/qcmstypes.h +@@ -10,6 +10,8 @@ + #if defined (__SVR4) && defined (__sun) + /* int_types.h gets included somehow, so avoid redefining the types differently */ + #include <sys/int_types.h> ++#elif defined(__NetBSD__) ++#include <stdint.h> + #else + typedef PRInt8 int8_t; + typedef PRUint8 uint8_t; +@@ -23,7 +25,7 @@ typedef PRUint64 uint64_t; + #ifdef __OS2__ + /* OS/2's stdlib typdefs uintptr_t. So we'll just include that so we don't collide */ + #include <stdlib.h> +-#elif defined(__FreeBSD__) ++#elif defined(__FreeBSD__) || defined(__DragonFly__) + /* FreeBSD typedefs uintptr_t in /usr/include/sys/types.h */ + #else + typedef PRUptrdiff uintptr_t; diff --git a/www/seamonkey/patches/patch-au b/www/seamonkey/patches/patch-au new file mode 100644 index 00000000000..b7a37d19e27 --- /dev/null +++ b/www/seamonkey/patches/patch-au @@ -0,0 +1,26 @@ +$NetBSD: patch-au,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +SOUND_VERSION just isn't a reliable way to detect features supported by +particular OSS implementation. + +--- mozilla/media/libsydneyaudio/src/sydney_audio_oss.c.orig 2009-06-29 18:15:03.000000000 +0200 ++++ mozilla/media/libsydneyaudio/src/sydney_audio_oss.c +@@ -51,9 +51,9 @@ + // support only versions newer than 3.6.1 + #define SUPP_OSS_VERSION OSS_VERSION(3,6,1) + +-#if (SOUND_VERSION < SUPP_OSS_VERSION) +-#error Unsupported OSS Version +-#else ++//#if (SOUND_VERSION < SUPP_OSS_VERSION) ++//#error Unsupported OSS Version ++//#else + + typedef struct sa_buf sa_buf; + struct sa_buf { +@@ -716,4 +716,4 @@ UNSUPPORTED(int sa_stream_drain(sa_strea + + const char *sa_strerror(int code) { return NULL; } + +-#endif ++//#endif diff --git a/www/seamonkey/patches/patch-av b/www/seamonkey/patches/patch-av new file mode 100644 index 00000000000..0a843a87334 --- /dev/null +++ b/www/seamonkey/patches/patch-av @@ -0,0 +1,40 @@ +$NetBSD: patch-av,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/xulrunner/app/nsXULRunnerApp.cpp.orig 2008-03-22 05:25:35.000000000 +0100 ++++ mozilla/xulrunner/app/nsXULRunnerApp.cpp +@@ -37,6 +37,27 @@ + + #include <stdio.h> + #include <stdlib.h> ++#include <sys/resource.h> ++/* ++ * On netbsd-4, ulimit -n is 64 by default; too few for us. ++ */ ++static void netbsd_fixrlimit(void) { ++ struct rlimit rlp; ++ if (getrlimit(RLIMIT_NOFILE, &rlp) == -1) { ++ fprintf(stderr, "warning: getrlimit failed\n"); ++ return; ++ } ++ if (rlp.rlim_cur >= 512) ++ return; ++ if (rlp.rlim_max < 512) { ++ fprintf(stderr, "warning: hard limit of 'ulimit -n' too low\n"); ++ rlp.rlim_cur = rlp.rlim_max; ++ } ++ else ++ rlp.rlim_cur = 512; ++ if (setrlimit(RLIMIT_NOFILE, &rlp) == -1) ++ fprintf(stderr, "warning: setrlimit failed\n"); ++} + #ifdef XP_WIN + #include <windows.h> + #endif +@@ -283,6 +304,7 @@ private: + + int main(int argc, char* argv[]) + { ++ netbsd_fixrlimit(); + if (argc > 1 && (IsArg(argv[1], "h") || + IsArg(argv[1], "help") || + IsArg(argv[1], "?"))) diff --git a/www/seamonkey/patches/patch-aw b/www/seamonkey/patches/patch-aw new file mode 100644 index 00000000000..60e6a6825c0 --- /dev/null +++ b/www/seamonkey/patches/patch-aw @@ -0,0 +1,40 @@ +$NetBSD: patch-aw,v 1.3 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/xulrunner/stub/nsXULStub.cpp.orig 2009-08-24 17:53:30.000000000 +0200 ++++ mozilla/xulrunner/stub/nsXULStub.cpp +@@ -44,6 +44,27 @@ + #include "nsILocalFile.h" + + #include <stdarg.h> ++#include <sys/resource.h> ++/* ++ * On netbsd-4, ulimit -n is 64 by default; too few for us. ++ */ ++static void netbsd_fixrlimit(void) { ++ struct rlimit rlp; ++ if (getrlimit(RLIMIT_NOFILE, &rlp) == -1) { ++ fprintf(stderr, "warning: getrlimit failed\n"); ++ return; ++ } ++ if (rlp.rlim_cur >= 512) ++ return; ++ if (rlp.rlim_max < 512) { ++ fprintf(stderr, "warning: hard limit of 'ulimit -n' too low\n"); ++ rlp.rlim_cur = rlp.rlim_max; ++ } ++ else ++ rlp.rlim_cur = 512; ++ if (setrlimit(RLIMIT_NOFILE, &rlp) == -1) ++ fprintf(stderr, "warning: setrlimit failed\n"); ++} + + #ifdef XP_WIN + #include <windows.h> +@@ -205,6 +226,7 @@ main(int argc, char **argv) + char tmpPath[MAXPATHLEN]; + char greDir[MAXPATHLEN]; + PRBool greFound = PR_FALSE; ++ netbsd_fixrlimit(); + + #if defined(XP_MACOSX) + CFBundleRef appBundle = CFBundleGetMainBundle(); diff --git a/www/seamonkey/patches/patch-ax b/www/seamonkey/patches/patch-ax new file mode 100644 index 00000000000..7efbfbd9b5a --- /dev/null +++ b/www/seamonkey/patches/patch-ax @@ -0,0 +1,13 @@ +$NetBSD: patch-ax,v 1.6 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/xpcom/base/nsStackWalk.cpp.orig 2009-08-24 17:53:27.000000000 +0200 ++++ mozilla/xpcom/base/nsStackWalk.cpp +@@ -1124,7 +1124,7 @@ NS_FormatCodeAddressDetails(void *aPC, c + #define __USE_GNU + #endif + +-#if defined(HAVE_LIBDL) || defined(XP_MACOSX) ++#if defined(HAVE_LIBDL) || defined(XP_MACOSX) || defined(__NetBSD__) + #include <dlfcn.h> + #endif + diff --git a/www/seamonkey/patches/patch-ay b/www/seamonkey/patches/patch-ay new file mode 100644 index 00000000000..b6dd5340890 --- /dev/null +++ b/www/seamonkey/patches/patch-ay @@ -0,0 +1,40 @@ +$NetBSD: patch-ay,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/browser/app/nsBrowserApp.cpp.orig 2009-06-29 18:14:40.000000000 +0200 ++++ mozilla/browser/app/nsBrowserApp.cpp +@@ -44,6 +44,27 @@ + + #include <stdio.h> + #include <stdarg.h> ++#include <sys/resource.h> ++/* ++ * On netbsd-4, ulimit -n is 64 by default; too few for us. ++ */ ++static void netbsd_fixrlimit(void) { ++ struct rlimit rlp; ++ if (getrlimit(RLIMIT_NOFILE, &rlp) == -1) { ++ fprintf(stderr, "warning: getrlimit failed\n"); ++ return; ++ } ++ if (rlp.rlim_cur >= 512) ++ return; ++ if (rlp.rlim_max < 512) { ++ fprintf(stderr, "warning: hard limit of 'ulimit -n' too low\n"); ++ rlp.rlim_cur = rlp.rlim_max; ++ } ++ else ++ rlp.rlim_cur = 512; ++ if (setrlimit(RLIMIT_NOFILE, &rlp) == -1) ++ fprintf(stderr, "warning: setrlimit failed\n"); ++} + + #include "plstr.h" + #include "prprf.h" +@@ -106,6 +127,7 @@ public: + + int main(int argc, char* argv[]) + { ++ netbsd_fixrlimit(); + ScopedLogging log; + + nsCOMPtr<nsILocalFile> appini; diff --git a/www/seamonkey/patches/patch-az b/www/seamonkey/patches/patch-az new file mode 100644 index 00000000000..4e2298a5b1c --- /dev/null +++ b/www/seamonkey/patches/patch-az @@ -0,0 +1,19 @@ +$NetBSD: patch-az,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/nsprpub/pr/src/pthreads/ptthread.c.orig 2009-11-02 22:43:08.000000000 +0100 ++++ mozilla/nsprpub/pr/src/pthreads/ptthread.c +@@ -1089,12 +1089,12 @@ PR_IMPLEMENT(void) PR_ProcessExit(PRIntn + _exit(status); + } + +-PR_IMPLEMENT(PRUint32) PR_GetThreadID(PRThread *thred) ++PR_IMPLEMENT(pthread_t) PR_GetThreadID(PRThread *thred) + { + #if defined(_PR_DCETHREADS) + return (PRUint32)&thred->id; /* this is really a sham! */ + #else +- return (PRUint32)thred->id; /* and I don't know what they will do with it */ ++ return thred->id; /* and I don't know what they will do with it */ + #endif + } + diff --git a/www/seamonkey/patches/patch-ba b/www/seamonkey/patches/patch-ba new file mode 100644 index 00000000000..596068da22b --- /dev/null +++ b/www/seamonkey/patches/patch-ba @@ -0,0 +1,24 @@ +$NetBSD: patch-ba,v 1.5 2010/03/16 10:59:10 tnn Exp $ + +pthread_t may be 64-bit, avoid casting it. + +--- mozilla/nsprpub/pr/include/private/pprthred.h.orig 2009-11-02 22:43:08.000000000 +0100 ++++ mozilla/nsprpub/pr/include/private/pprthred.h +@@ -51,6 +51,8 @@ + #include <os2.h> + #endif + ++#include <pthread.h> ++ + PR_BEGIN_EXTERN_C + + /*--------------------------------------------------------------------------- +@@ -91,7 +93,7 @@ NSPR_API(void) PR_DetachThread(void); + ** Get the id of the named thread. Each thread is assigned a unique id + ** when it is created or attached. + */ +-NSPR_API(PRUint32) PR_GetThreadID(PRThread *thread); ++NSPR_API(pthread_t) PR_GetThreadID(PRThread *thread); + + /* + ** Set the procedure that is called when a thread is dumped. The procedure diff --git a/www/seamonkey/patches/patch-bb b/www/seamonkey/patches/patch-bb new file mode 100644 index 00000000000..06b5770b2a7 --- /dev/null +++ b/www/seamonkey/patches/patch-bb @@ -0,0 +1,19 @@ +$NetBSD: patch-bb,v 1.3 2010/03/16 10:59:10 tnn Exp $ + +Fix build using Sun Studio C++. + +--- mozilla/memory/jemalloc/jemalloc.h.orig 2009-12-02 04:29:06.000000000 +0000 ++++ mozilla/memory/jemalloc/jemalloc.h 2010-01-09 23:24:34.000000000 +0000 +@@ -1,3 +1,4 @@ ++#ifndef __cplusplus + #ifndef MOZ_MEMORY_WINDOWS + # include <stdbool.h> + #else +@@ -6,6 +7,7 @@ + # define bool BOOL + # endif + #endif ++#endif + + extern const char *_malloc_options; + diff --git a/www/seamonkey/patches/patch-ma b/www/seamonkey/patches/patch-ma new file mode 100644 index 00000000000..58c9f5c8fbe --- /dev/null +++ b/www/seamonkey/patches/patch-ma @@ -0,0 +1,23 @@ +$NetBSD: patch-ma,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/config/autoconf.mk.in.orig 2009-06-29 18:14:41.000000000 +0200 ++++ mozilla/config/autoconf.mk.in +@@ -57,14 +57,14 @@ MOZ_PKG_SPECIAL = @MOZ_PKG_SPECIAL@ + prefix = @prefix@ + exec_prefix = @exec_prefix@ + bindir = @bindir@ +-includedir = @includedir@/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) ++includedir = @includedir@/$(MOZILLA_PKG_NAME) + libdir = @libdir@ + datadir = @datadir@ + mandir = @mandir@ +-idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) ++idldir = @datadir@/idl/$(MOZILLA_PKG_NAME) + +-installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) +-sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION) ++installdir = $(libdir)/$(MOZILLA_PKG_NAME) ++sdkdir = $(libdir)/$(MOZILLA_PKG_NAME)-sdk + + DIST = $(DEPTH)/dist + LIBXUL_SDK = @LIBXUL_SDK@ diff --git a/www/seamonkey/patches/patch-mb b/www/seamonkey/patches/patch-mb new file mode 100644 index 00000000000..923f91f43dc --- /dev/null +++ b/www/seamonkey/patches/patch-mb @@ -0,0 +1,72 @@ +$NetBSD: patch-mb,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig 2009-06-29 18:15:32.000000000 +0200 ++++ mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in +@@ -64,14 +64,21 @@ include $(topsrcdir)/config/config.mk + # + # Lots of Unixish x86 flavors + # +-ifneq (,$(filter FreeBSD NetBSD OpenBSD BSD_OS Darwin,$(OS_ARCH))) ++ifneq (,$(filter DragonFly FreeBSD NetBSD OpenBSD BSD_OS Darwin,$(OS_ARCH))) ++ifeq (x86_64,$(OS_TEST)) ++CPPSRCS := xptcinvoke_x86_64_linux.cpp xptcstubs_x86_64_linux.cpp ++else + ifeq (86,$(findstring 86,$(OS_TEST))) + CPPSRCS := xptcinvoke_unixish_x86.cpp xptcstubs_unixish_x86.cpp ++endif ++ifeq (amd64,$(OS_TEST)) ++CPPSRCS := xptcinvoke_x86_64_linux.cpp xptcstubs_x86_64_linux.cpp ++endif ++endif + ifeq (Darwin,$(OS_ARCH)) + DEFINES += -DKEEP_STACK_16_BYTE_ALIGNED + endif + endif +-endif + # + # New code for Linux, et. al., with gcc + # Migrate other platforms here after testing +@@ -185,7 +192,7 @@ endif + # NetBSD/ARM + # + ifeq ($(OS_ARCH),NetBSD) +-ifneq (,$(filter arm% sa110,$(OS_TEST))) ++ifneq (,$(filter arm%,$(TARGET_CPU))) + CPPSRCS := xptcinvoke_arm_netbsd.cpp xptcstubs_arm_netbsd.cpp + endif + endif +@@ -240,7 +247,7 @@ endif + # NetBSD/m68k + # + ifeq ($(OS_ARCH),NetBSD) +-ifneq (,$(filter amiga atari hp300 mac68k mvme68k next68k sun3 sun3x x68k,$(OS_TEST))) ++ifneq (,$(filter m68k,$(TARGET_CPU))) + CPPSRCS := xptcinvoke_netbsd_m68k.cpp xptcstubs_netbsd_m68k.cpp + endif + endif +@@ -325,9 +332,10 @@ endif + # + # NetBSD/PPC + # +-ifneq (,$(filter NetBSDmacppc NetBSDbebox NetBSDofppc NetBSDprep NetBSDamigappc,$(OS_ARCH)$(OS_TEST))) ++ifeq ($(OS_ARCH)$(OS_TEST),NetBSDpowerpc) + CPPSRCS := xptcinvoke_ppc_netbsd.cpp xptcstubs_ppc_netbsd.cpp + ASFILES := xptcinvoke_asm_ppc_netbsd.s xptcstubs_asm_ppc_netbsd.s ++AS := $(CC) -c -x assembler-with-cpp + endif + + # +@@ -399,6 +407,13 @@ CPPSRCS := xptcinvoke_sparc64_openbsd.c + ASFILES := xptcinvoke_asm_sparc64_openbsd.s xptcstubs_asm_sparc64_openbsd.s + endif + # ++# NetBSD/SPARC64 ++# ++ifeq ($(OS_ARCH)$(OS_TEST),NetBSDsparc64) ++CPPSRCS := xptcinvoke_sparc64_netbsd.cpp xptcstubs_sparc64_netbsd.cpp ++ASFILES := xptcinvoke_asm_sparc64_netbsd.s xptcstubs_asm_sparc64_netbsd.s ++endif ++# + # Solaris/SPARC + # + ifeq ($(OS_ARCH),SunOS) diff --git a/www/seamonkey/patches/patch-md b/www/seamonkey/patches/patch-md new file mode 100644 index 00000000000..fde81187490 --- /dev/null +++ b/www/seamonkey/patches/patch-md @@ -0,0 +1,17 @@ +$NetBSD: patch-md,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +???. from www/firefox/patch-ax. + +--- mozilla/security/coreconf/SunOS5.mk.orig 2009-06-29 18:15:11.000000000 +0200 ++++ mozilla/security/coreconf/SunOS5.mk +@@ -156,6 +156,10 @@ endif + endif + DSO_LDOPTS += -z combreloc -z defs -z ignore + ++ifdef LIBRUNPATH ++DSO_LDOPTS += -R$(LIBRUNPATH) ++endif ++ + # -KPIC generates position independent code for use in shared libraries. + # (Similarly for -fPIC in case of gcc.) + ifdef NS_USE_GCC diff --git a/www/seamonkey/patches/patch-me b/www/seamonkey/patches/patch-me new file mode 100644 index 00000000000..89364abcec6 --- /dev/null +++ b/www/seamonkey/patches/patch-me @@ -0,0 +1,15 @@ +$NetBSD: patch-me,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +Add DragonFly support. + +--- mozilla/security/nss/lib/freebl/Makefile.orig 2009-06-29 18:15:13.000000000 +0200 ++++ mozilla/security/nss/lib/freebl/Makefile +@@ -212,7 +212,7 @@ endif + # to bind the blapi function references in FREEBLVector vector + # (ldvector.c) to the blapi functions defined in the freebl + # shared libraries. +-ifeq (,$(filter-out BSD_OS FreeBSD Linux NetBSD OpenBSD, $(OS_TARGET))) ++ifeq (,$(filter-out BSD_OS DragonFly FreeBSD Linux NetBSD OpenBSD, $(OS_TARGET))) + MKSHLIB += -Wl,-Bsymbolic + endif + diff --git a/www/seamonkey/patches/patch-mf b/www/seamonkey/patches/patch-mf new file mode 100644 index 00000000000..de1b3d5d34a --- /dev/null +++ b/www/seamonkey/patches/patch-mf @@ -0,0 +1,21 @@ +$NetBSD: patch-mf,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +Add DragonFly support. +Make sure nss libraries have a run path defined. + +--- mozilla/security/coreconf/config.mk.orig 2009-10-16 17:14:17.000000000 +0200 ++++ mozilla/security/coreconf/config.mk +@@ -63,7 +63,7 @@ endif + ####################################################################### + + TARGET_OSES = FreeBSD BSD_OS NetBSD OpenUNIX OS2 QNX Darwin BeOS OpenBSD \ +- AIX RISCOS WINNT WIN95 WINCE ++ AIX RISCOS WINNT WIN95 WINCE DragonFly + + ifeq (,$(filter-out $(TARGET_OSES),$(OS_TARGET))) + include $(CORE_DEPTH)/coreconf/$(OS_TARGET).mk +@@ -212,3 +212,4 @@ endif + DEFINES += -DUSE_UTIL_DIRECTLY + USE_UTIL_DIRECTLY = 1 + ++EXTRA_SHARED_LIBS += -Wl,-R${PREFIX}/lib/${MOZILLA_PKG_NAME} diff --git a/www/seamonkey/patches/patch-mg b/www/seamonkey/patches/patch-mg new file mode 100644 index 00000000000..24e34ea1453 --- /dev/null +++ b/www/seamonkey/patches/patch-mg @@ -0,0 +1,90 @@ +$NetBSD: patch-mg,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +Add DragonFly support. + +--- mozilla/security/coreconf/DragonFly.mk.orig 2009-06-30 22:20:24.000000000 +0200 ++++ mozilla/security/coreconf/DragonFly.mk +@@ -0,0 +1,83 @@ ++# ++# 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) 1994-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. ++# ++# Config stuff for DragonFly ++# ++ ++include $(CORE_DEPTH)/coreconf/UNIX.mk ++ ++DEFAULT_COMPILER = gcc ++CC = gcc ++CCC = g++ ++RANLIB = ranlib ++ ++ifeq ($(OS_TEST),alpha) ++CPU_ARCH = alpha ++else ++CPU_ARCH = x86 ++endif ++ ++OS_CFLAGS = $(DSO_CFLAGS) -ansi -Wall -DFREEBSD -DHAVE_STRERROR -DHAVE_BSD_FLOCK ++ ++DSO_CFLAGS = -fPIC ++DSO_LDOPTS = -shared -Wl,-soname -Wl,$(notdir $@) ++ ++# ++# The default implementation strategy for FreeBSD is pthreads. ++# ++ifndef CLASSIC_NSPR ++USE_PTHREADS = 1 ++DEFINES += -D_THREAD_SAFE -D_REENTRANT ++OS_LIBS += -pthread ++DSO_LDOPTS += -pthread ++endif ++ ++ARCH = freebsd ++ ++MOZ_OBJFORMAT := $(shell test -x /usr/bin/objformat && /usr/bin/objformat || echo aout) ++ ++DLL_SUFFIX = so ++ ++ifdef LIBRUNPATH ++DSO_LDOPTS += -Wl,-R$(LIBRUNPATH) ++endif ++ ++MKSHLIB = $(CC) $(DSO_LDOPTS) ++ifdef MAPFILE ++# Add LD options to restrict exported symbols to those in the map file ++endif ++# Change PROCESS to put the mapfile in the correct format for this platform ++PROCESS_MAP_FILE = cp $(LIBRARY_NAME).def $@ ++ ++G++INCLUDES = -I/usr/include/g++ ++ ++INCLUDES += -I/usr/X11R6/include diff --git a/www/seamonkey/patches/patch-mi b/www/seamonkey/patches/patch-mi new file mode 100644 index 00000000000..2435d31b270 --- /dev/null +++ b/www/seamonkey/patches/patch-mi @@ -0,0 +1,15 @@ +$NetBSD: patch-mi,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +Add DragonFly support. + +--- mozilla/config/config.mk.orig 2009-06-29 18:14:41.000000000 +0200 ++++ mozilla/config/config.mk +@@ -133,7 +133,7 @@ endif + # but save the version to allow multiple versions of the same base + # platform to be built in the same tree. + # +-ifneq (,$(filter FreeBSD HP-UX IRIX Linux NetBSD OpenBSD OSF1 SunOS,$(OS_ARCH))) ++ifneq (,$(filter DragonFly FreeBSD HP-UX IRIX Linux NetBSD OpenBSD OSF1 SunOS,$(OS_ARCH))) + OS_RELEASE := $(basename $(OS_RELEASE)) + + # Allow the user to ignore the OS_VERSION, which is usually irrelevant. diff --git a/www/seamonkey/patches/patch-mj b/www/seamonkey/patches/patch-mj new file mode 100644 index 00000000000..a5cc6511e86 --- /dev/null +++ b/www/seamonkey/patches/patch-mj @@ -0,0 +1,15 @@ +$NetBSD: patch-mj,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +Add DragonFly support. + +--- mozilla/security/coreconf/arch.mk.orig 2009-06-29 18:15:11.000000000 +0200 ++++ mozilla/security/coreconf/arch.mk +@@ -146,7 +146,7 @@ endif + # IRIX 6.5-ALPHA-1289139620. + # + +-ifeq (,$(filter-out Linux FreeBSD IRIX,$(OS_ARCH))) ++ifeq (,$(filter-out Linux DragonFly FreeBSD IRIX,$(OS_ARCH))) + OS_RELEASE := $(shell echo $(OS_RELEASE) | sed 's/-.*//') + endif + diff --git a/www/seamonkey/patches/patch-mk b/www/seamonkey/patches/patch-mk new file mode 100644 index 00000000000..b537247517b --- /dev/null +++ b/www/seamonkey/patches/patch-mk @@ -0,0 +1,19 @@ +$NetBSD: patch-mk,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +Treat DragonFly like FreeBSD. + +--- mozilla/config/rules.mk.orig 2009-06-29 18:14:41.000000000 +0200 ++++ mozilla/config/rules.mk +@@ -592,6 +592,12 @@ EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic + endif + endif + ++ifeq ($(OS_ARCH),DragonFly) ++ifdef IS_COMPONENT ++EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic ++endif ++endif ++ + ifeq ($(OS_ARCH),NetBSD) + ifneq (,$(filter arc cobalt hpcmips mipsco newsmips pmax sgimips,$(OS_TEST))) + ifeq ($(MODULE),layout) diff --git a/www/seamonkey/patches/patch-ml b/www/seamonkey/patches/patch-ml new file mode 100644 index 00000000000..470d2d13598 --- /dev/null +++ b/www/seamonkey/patches/patch-ml @@ -0,0 +1,16 @@ +$NetBSD: patch-ml,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +Treat DragonFly like FreeBSD. + +--- mozilla/js/src/Makefile.in.orig 2009-06-29 18:14:51.000000000 +0200 ++++ mozilla/js/src/Makefile.in +@@ -429,6 +429,9 @@ endif # WINNT + ifeq ($(OS_ARCH),FreeBSD) + EXTRA_LIBS += -pthread + endif ++ifeq ($(OS_ARCH),DragonFly) ++EXTRA_LIBS += -pthread ++endif + ifeq ($(OS_ARCH),IRIX) + ifdef USE_N32 + DASH_R += -n32 diff --git a/www/seamonkey/patches/patch-mm b/www/seamonkey/patches/patch-mm new file mode 100644 index 00000000000..c031dfa0ce2 --- /dev/null +++ b/www/seamonkey/patches/patch-mm @@ -0,0 +1,23 @@ +$NetBSD: patch-mm,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +Don't link with -lCstd on Solaris when using GCC. From Tim Zingelman. +part of PR pkg/39085 + +--- mozilla/toolkit/library/Makefile.in.orig 2009-12-02 05:28:58.000000000 +0100 ++++ mozilla/toolkit/library/Makefile.in +@@ -252,7 +252,14 @@ EXTRA_DSO_LDOPTS += -lbe -ltracker + endif + + ifeq ($(OS_ARCH),SunOS) +-EXTRA_DSO_LDOPTS += -lelf -ldemangle -lCstd ++EXTRA_DSO_LDOPTS += -lelf -ldemangle ++ifndef GNU_CC ++EXTRA_DSO_LDOPTS += -lCstd ++endif ++endif ++ ++ifeq ($(OS_ARCH),NetBSD) ++EXTRA_DSO_LDOPTS += -lossaudio + endif + + ifeq ($(OS_ARCH),WINNT) diff --git a/www/seamonkey/patches/patch-mn b/www/seamonkey/patches/patch-mn new file mode 100644 index 00000000000..65cb97767c5 --- /dev/null +++ b/www/seamonkey/patches/patch-mn @@ -0,0 +1,15 @@ +$NetBSD: patch-mn,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +Make sure we link correctly with sqlite3 from pkgsrc. + +--- mozilla/security/nss/lib/softoken/config.mk.orig 2009-10-16 17:14:19.000000000 +0200 ++++ mozilla/security/nss/lib/softoken/config.mk +@@ -83,7 +83,7 @@ EXTRA_SHARED_LIBS += \ + -L$(DIST)/lib \ + -L$(NSSUTIL_LIB_DIR) \ + -lnssutil3 \ +- -lsqlite3 \ ++ `pkg-config --libs sqlite3` \ + -L$(NSPR_LIB_DIR) \ + -lplc4 \ + -lplds4 \ diff --git a/www/seamonkey/patches/patch-mp b/www/seamonkey/patches/patch-mp new file mode 100644 index 00000000000..bcfa14ef7e2 --- /dev/null +++ b/www/seamonkey/patches/patch-mp @@ -0,0 +1,29 @@ +$NetBSD: patch-mp,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/media/libsydneyaudio/src/Makefile.in.orig 2009-12-02 05:28:49.000000000 +0100 ++++ mozilla/media/libsydneyaudio/src/Makefile.in +@@ -77,6 +77,24 @@ CSRCS = \ + $(NULL) + endif + ++ifeq ($(OS_ARCH),DragonFly) ++CSRCS = \ ++ sydney_audio_oss.c \ ++ $(NULL) ++endif ++ ++ifeq ($(OS_ARCH),FreeBSD) ++CSRCS = \ ++ sydney_audio_oss.c \ ++ $(NULL) ++endif ++ ++ifeq ($(OS_ARCH),NetBSD) ++CSRCS = \ ++ sydney_audio_oss.c \ ++ $(NULL) ++endif ++ + ifeq ($(OS_ARCH),WINNT) + OS_LIBS += winmm.lib + endif diff --git a/www/seamonkey/patches/patch-na b/www/seamonkey/patches/patch-na new file mode 100644 index 00000000000..c17401d28de --- /dev/null +++ b/www/seamonkey/patches/patch-na @@ -0,0 +1,122 @@ +$NetBSD: patch-na,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +# reported upstream as: +# https://bugzilla.mozilla.org/show_bug.cgi?id=512802 + +--- mozilla/js/src/jsscript.cpp.orig 2009-08-24 01:32:14.000000000 +0200 ++++ mozilla/js/src/jsscript.cpp 2009-08-24 01:36:20.000000000 +0200 +@@ -1370,19 +1370,49 @@ js_NewScript(JSContext *cx, uint32 lengt + size_t size, vectorSize; + JSScript *script; + uint8 *cursor; ++#ifdef _LP64 ++#define LP64_ALIGN(V) if ((V) & 7) (V) = (((V)|7) + 1) ++#define LP64_ALIGNP(P) if ((uintptr_t)(P) & 7) (P) = (uint8*)(((uintptr_t)(P)|7) + 1) ++#else ++#define LP64_ALIGN(V) ++#define LP64_ALIGNP(V) ++#endif + +- size = sizeof(JSScript) + +- sizeof(JSAtom *) * natoms + +- length * sizeof(jsbytecode) + +- nsrcnotes * sizeof(jssrcnote); +- if (nobjects != 0) +- size += sizeof(JSObjectArray) + nobjects * sizeof(JSObject *); +- if (nupvars != 0) +- size += sizeof(JSUpvarArray) + nupvars * sizeof(uint32); +- if (nregexps != 0) +- size += sizeof(JSObjectArray) + nregexps * sizeof(JSObject *); +- if (ntrynotes != 0) +- size += sizeof(JSTryNoteArray) + ntrynotes * sizeof(JSTryNote); ++ size = sizeof(JSScript); ++ if (nobjects != 0) { ++ LP64_ALIGN(size); ++ size += sizeof(JSObjectArray); ++ } ++ if (nupvars != 0) { ++ LP64_ALIGN(size); ++ size += sizeof(JSUpvarArray); ++ } ++ if (nregexps != 0) { ++ LP64_ALIGN(size); ++ size += sizeof(JSObjectArray); ++ } ++ if (ntrynotes != 0) { ++ LP64_ALIGN(size); ++ size += sizeof(JSTryNoteArray); ++ } ++ if (natoms != 0) { ++ LP64_ALIGN(size); ++ size += sizeof(JSAtom *) * natoms; ++ } ++ if (nobjects != 0) { ++ LP64_ALIGN(size); ++ size += nobjects * sizeof(JSObject *); ++ } ++ if (nupvars != 0) { ++ size += nupvars * sizeof(uint32); ++ } ++ if (nregexps != 0) { ++ LP64_ALIGN(size); ++ size += nregexps * sizeof(JSObject *); ++ } ++ size += length * sizeof(jsbytecode) + ++ nsrcnotes * sizeof(jssrcnote) + ++ ntrynotes * sizeof(JSTryNote); + + script = (JSScript *) JS_malloc(cx, size); + if (!script) +@@ -1393,23 +1423,28 @@ js_NewScript(JSContext *cx, uint32 lengt + + cursor = (uint8 *)script + sizeof(JSScript); + if (nobjects != 0) { ++ LP64_ALIGNP(cursor); + script->objectsOffset = (uint8)(cursor - (uint8 *)script); + cursor += sizeof(JSObjectArray); + } + if (nupvars != 0) { ++ LP64_ALIGNP(cursor); + script->upvarsOffset = (uint8)(cursor - (uint8 *)script); + cursor += sizeof(JSUpvarArray); + } + if (nregexps != 0) { ++ LP64_ALIGNP(cursor); + script->regexpsOffset = (uint8)(cursor - (uint8 *)script); + cursor += sizeof(JSObjectArray); + } + if (ntrynotes != 0) { ++ LP64_ALIGNP(cursor); + script->trynotesOffset = (uint8)(cursor - (uint8 *)script); + cursor += sizeof(JSTryNoteArray); + } + + if (natoms != 0) { ++ LP64_ALIGNP(cursor); + script->atomMap.length = natoms; + script->atomMap.vector = (JSAtom **)cursor; + vectorSize = natoms * sizeof(script->atomMap.vector[0]); +@@ -1423,6 +1458,7 @@ js_NewScript(JSContext *cx, uint32 lengt + } + + if (nobjects != 0) { ++ LP64_ALIGNP(cursor); + JS_SCRIPT_OBJECTS(script)->length = nobjects; + JS_SCRIPT_OBJECTS(script)->vector = (JSObject **)cursor; + vectorSize = nobjects * sizeof(JS_SCRIPT_OBJECTS(script)->vector[0]); +@@ -1431,6 +1467,7 @@ js_NewScript(JSContext *cx, uint32 lengt + } + + if (nupvars != 0) { ++ LP64_ALIGNP(cursor); + JS_SCRIPT_UPVARS(script)->length = nupvars; + JS_SCRIPT_UPVARS(script)->vector = (uint32 *)cursor; + vectorSize = nupvars * sizeof(JS_SCRIPT_UPVARS(script)->vector[0]); +@@ -1439,6 +1476,7 @@ js_NewScript(JSContext *cx, uint32 lengt + } + + if (nregexps != 0) { ++ LP64_ALIGNP(cursor); + JS_SCRIPT_REGEXPS(script)->length = nregexps; + JS_SCRIPT_REGEXPS(script)->vector = (JSObject **)cursor; + vectorSize = nregexps * sizeof(JS_SCRIPT_REGEXPS(script)->vector[0]); diff --git a/www/seamonkey/patches/patch-nd b/www/seamonkey/patches/patch-nd new file mode 100644 index 00000000000..0f39fdf193a --- /dev/null +++ b/www/seamonkey/patches/patch-nd @@ -0,0 +1,37 @@ +$NetBSD: patch-nd,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +# reported upstream as +# https://bugzilla.mozilla.org/show_bug.cgi?id=514002 + +--- mozilla/gfx/qcms/iccread.c.orig 2009-07-30 17:30:16.000000000 +0200 ++++ mozilla/gfx/qcms/iccread.c 2009-09-01 21:29:29.000000000 +0200 +@@ -23,6 +23,7 @@ + #include <math.h> + #include <assert.h> + #include <stdlib.h> ++#include <string.h> + #include "qcmsint.h" + + //XXX: use a better typename +@@ -84,7 +85,9 @@ static uint32_t read_u32(struct mem_sour + invalid_source(mem, "Invalid offset"); + return 0; + } else { +- return be32_to_cpu(*(__be32*)(mem->buf + offset)); ++ uint32_t v; ++ memcpy(&v, mem->buf + offset, 4); ++ return be32_to_cpu(v); + } + } + +@@ -94,7 +97,9 @@ static uint16_t read_u16(struct mem_sour + invalid_source(mem, "Invalid offset"); + return 0; + } else { +- return be16_to_cpu(*(__be16*)(mem->buf + offset)); ++ uint16_t v; ++ memcpy(&v, mem->buf + offset, 2); ++ return be16_to_cpu(v); + } + } + diff --git a/www/seamonkey/patches/patch-pa b/www/seamonkey/patches/patch-pa new file mode 100644 index 00000000000..4520459181c --- /dev/null +++ b/www/seamonkey/patches/patch-pa @@ -0,0 +1,12 @@ +$NetBSD: patch-pa,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/xulrunner/installer/mozilla-js.pc.in.orig 2009-06-29 18:15:36.000000000 +0200 ++++ mozilla/xulrunner/installer/mozilla-js.pc.in +@@ -6,5 +6,5 @@ Name: JavaScript + Description: The Mozilla JavaScript Library + Version: %MOZILLA_VERSION% + Requires: %NSPR_NAME% >= %NSPR_VERSION% +-Libs: -L${sdkdir}/lib -lmozjs +-Cflags: -I${includedir}/stable -DXP_UNIX -DJS_THREADSAFE ++Libs: -Wl,-R${prefix}/lib/xulrunner -L${prefix}/lib/xulrunner -lmozjs ++Cflags: -I${includedir}/stable -I${includedir}/unstable -DXP_UNIX -DJS_THREADSAFE diff --git a/www/seamonkey/patches/patch-pb b/www/seamonkey/patches/patch-pb new file mode 100644 index 00000000000..e5e5f3d107a --- /dev/null +++ b/www/seamonkey/patches/patch-pb @@ -0,0 +1,11 @@ +$NetBSD: patch-pb,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/xulrunner/installer/libxul.pc.in.orig 2009-06-29 18:15:36.000000000 +0200 ++++ mozilla/xulrunner/installer/libxul.pc.in +@@ -12,5 +12,5 @@ Name: libxul + Description: The Mozilla Runtime and Embedding Engine + Version: %MOZILLA_VERSION% + Requires: %NSPR_NAME% >= %NSPR_VERSION% +-Libs: -L${sdkdir}/lib -lxpcomglue_s -lxul -lxpcom ++Libs: -Wl,-R${prefix}/lib/xulrunner -L${prefix}/lib/xulrunner -lxpcomglue_s -lxul -lxpcom + Cflags: -I${includedir}/${includetype} %WCHAR_CFLAGS% diff --git a/www/seamonkey/patches/patch-pc b/www/seamonkey/patches/patch-pc new file mode 100644 index 00000000000..955b5095ff2 --- /dev/null +++ b/www/seamonkey/patches/patch-pc @@ -0,0 +1,11 @@ +$NetBSD: patch-pc,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/xulrunner/installer/libxul-embedding.pc.in.orig 2009-06-29 18:15:36.000000000 +0200 ++++ mozilla/xulrunner/installer/libxul-embedding.pc.in +@@ -11,5 +11,5 @@ includetype=stable + Name: libxul-embedding + Description: Static library for version-independent embedding of the Mozilla runtime + Version: %MOZILLA_VERSION% +-Libs: -L${sdkdir}/lib -lxpcomglue ++Libs: -Wl,-R${prefix}/lib/xulrunner -L${prefix}/lib/xulrunner -lxpcomglue + Cflags: -DXPCOM_GLUE -I${includedir}/${includetype} %WCHAR_CFLAGS% diff --git a/www/seamonkey/patches/patch-pd b/www/seamonkey/patches/patch-pd new file mode 100644 index 00000000000..dc3231e9e9c --- /dev/null +++ b/www/seamonkey/patches/patch-pd @@ -0,0 +1,11 @@ +$NetBSD: patch-pd,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/xulrunner/installer/mozilla-nss.pc.in.orig 2009-10-16 17:14:30.000000000 +0200 ++++ mozilla/xulrunner/installer/mozilla-nss.pc.in +@@ -6,5 +6,5 @@ Name: NSS + Description: Mozilla Network Security Services + Version: %MOZILLA_VERSION% + Requires: %NSPR_NAME% >= %NSPR_VERSION% +-Libs: -L${sdkdir}/lib -lsmime3 -lssl3 -lnss3 -lnssutil3 ++Libs: -Wl,-R${prefix}/lib/xulrunner -L${prefix}/lib/xulrunner -lsmime3 -lssl3 -lnss3 -lnssutil3 + Cflags: -I${includedir}/stable diff --git a/www/seamonkey/patches/patch-pe b/www/seamonkey/patches/patch-pe new file mode 100644 index 00000000000..dc72fa52bd6 --- /dev/null +++ b/www/seamonkey/patches/patch-pe @@ -0,0 +1,11 @@ +$NetBSD: patch-pe,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/xulrunner/installer/libxul-unstable.pc.in.orig 2009-06-29 18:15:36.000000000 +0200 ++++ mozilla/xulrunner/installer/libxul-unstable.pc.in +@@ -8,5 +8,5 @@ Name: libxul + Description: The Mozilla Runtime and Embedding Engine (unstable API) + Version: %MOZILLA_VERSION% + Requires: %NSPR_NAME% >= %NSPR_VERSION% +-Libs: -L${sdkdir}/lib -lxpcomglue_s -lxul -lxpcom ++Libs: -Wl,-R${prefix}/lib/xulrunner -L${prefix}/lib/xulrunner -lxpcomglue_s -lxul -lxpcom + Cflags: -I${includedir}/${includetype} %WCHAR_CFLAGS% diff --git a/www/seamonkey/patches/patch-pf b/www/seamonkey/patches/patch-pf new file mode 100644 index 00000000000..46216305beb --- /dev/null +++ b/www/seamonkey/patches/patch-pf @@ -0,0 +1,11 @@ +$NetBSD: patch-pf,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/xulrunner/installer/libxul-embedding-unstable.pc.in.orig 2009-06-29 18:15:36.000000000 +0200 ++++ mozilla/xulrunner/installer/libxul-embedding-unstable.pc.in +@@ -7,5 +7,5 @@ includetype=unstable + Name: libxul-embedding-unstable + Description: Static library for version-independent embedding of the Mozilla runtime (unstable API) + Version: %MOZILLA_VERSION% +-Libs: -L${sdkdir}/lib -lxpcomglue ++Libs: -Wl,-R${prefix}/lib/xulrunner -L${prefix}/lib/xulrunner -lxpcomglue + Cflags: -DXPCOM_GLUE -I${includedir}/${includetype} %WCHAR_CFLAGS% diff --git a/www/seamonkey/patches/patch-pg b/www/seamonkey/patches/patch-pg new file mode 100644 index 00000000000..849e71901be --- /dev/null +++ b/www/seamonkey/patches/patch-pg @@ -0,0 +1,14 @@ +$NetBSD: patch-pg,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/xulrunner/installer/mozilla-nspr.pc.in.orig 2009-06-29 18:15:36.000000000 +0200 ++++ mozilla/xulrunner/installer/mozilla-nspr.pc.in +@@ -5,7 +5,5 @@ includedir=%includedir% + Name: NSPR + Description: The Netscape Portable Runtime + Version: %NSPR_VERSION% +-Libs: %FULL_NSPR_LIBS% +-Cflags: %FULL_NSPR_CFLAGS% +- +- ++Libs: -Wl,-R${prefix}/lib/xulrunner -L${prefix}/lib/xulrunner -lplds4 -lplc4 -lnspr4 -pthread ++Cflags: -I${includedir}/stable diff --git a/www/seamonkey/patches/patch-ra b/www/seamonkey/patches/patch-ra new file mode 100644 index 00000000000..33c68bf0aab --- /dev/null +++ b/www/seamonkey/patches/patch-ra @@ -0,0 +1,9 @@ +$NetBSD: patch-ra,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/browser/branding/unofficial/locales/browserconfig.properties.orig 2009-08-24 17:52:36.000000000 +0200 ++++ mozilla/browser/branding/unofficial/locales/browserconfig.properties +@@ -1,3 +1,3 @@ + # Do NOT localize or otherwise change these values +-browser.startup.homepage=http://www.mozilla.org/projects/shiretoko/ ++browser.startup.homepage=http://www.google.com/firefox + diff --git a/www/seamonkey/patches/patch-rc b/www/seamonkey/patches/patch-rc new file mode 100644 index 00000000000..6594e57a239 --- /dev/null +++ b/www/seamonkey/patches/patch-rc @@ -0,0 +1,12 @@ +$NetBSD: patch-rc,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +--- mozilla/browser/branding/unofficial/locales/en-US/brand.dtd.orig 2009-08-24 17:52:36.000000000 +0200 ++++ mozilla/browser/branding/unofficial/locales/en-US/brand.dtd +@@ -1,5 +1,5 @@ +-<!ENTITY brandShortName "Shiretoko"> +-<!ENTITY brandFullName "Shiretoko"> ++<!ENTITY brandShortName "Browser"> ++<!ENTITY brandFullName "Browser"> + <!ENTITY vendorShortName "mozilla.org"> + <!ENTITY logoCopyright " "> + diff --git a/www/seamonkey/patches/patch-xa b/www/seamonkey/patches/patch-xa new file mode 100644 index 00000000000..ad0fba8d2bb --- /dev/null +++ b/www/seamonkey/patches/patch-xa @@ -0,0 +1,119 @@ +$NetBSD: patch-xa,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +NetBSD/sparc64 xptcall support code. From pkgsrc/www/firefox3/files/ + +--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc64_netbsd.s.orig 2009-07-09 10:12:51.000000000 +0200 ++++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc64_netbsd.s +@@ -0,0 +1,112 @@ ++/* -*- 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) 1998 Netscape Communications Corporation. All ++ * Rights Reserved. ++ * ++ * Contributor(s): ++ */ ++ ++/* Platform specific code to invoke XPCOM methods on native objects */ ++ .global NS_InvokeByIndex_P ++ .type NS_InvokeByIndex_P, #function ++/* ++ NS_InvokeByIndex_P(nsISupports* that, PRUint32 methodIndex, ++ PRUint32 paramCount, nsXPTCVariant* params); ++ ++*/ ++/* ++ * Note: To simplify stack handling we allocate an extra stack ++ * frame here. In principle invoke_copy_to_stack() could ++ * save the parameters our caller's frame and we could ++ * reclaim the stackframe and do a tail call to the ++ * function. However, this gets complicated.... ++ * ++ * The vtable consist of be: ++ * ++ * struct { ++ * short __delta; ++ * short __index; ++ * union { ++ * P __pfn; ++ * short __delta2; ++ * } __pfn_or_delta2; ++ * }; ++ * ++ * See gcc/cp/cp-tree.h ++ */ ++ ++NS_InvokeByIndex_P: ++ save %sp,-(128 + 64),%sp ! room for the register window and ++ ! struct pointer, rounded up to 0 % 64 ++ sll %i2,4,%l0 ! assume the worst case ++ ! paramCount * 2 * 8 bytes ++ cmp %l0, 0 ! are there any args? If not, ++ be .invoke ! no need to copy args to stack ++ nop ++ ++ sub %sp,%l0,%sp ! create the additional stack space ++ add %sp,0x7ff+136,%o0 ! step past the register window, the ++ ! struct result pointer and the 'this' slot ++ mov %i2,%o1 ! paramCount ++ call invoke_copy_to_stack ++ mov %i3,%o2 ! params ++ ++! ++! load arguments from stack into the outgoing registers ++! BIAS is 0x7ff (2047) ++! ++ ++! load the %o1..5 64bit (extended word) output registers registers ++ ldx [%sp + 0x7ff + 136],%o1 ! %i1 ++ ldx [%sp + 0x7ff + 144],%o2 ! %i2 ++ ldx [%sp + 0x7ff + 152],%o3 ! %i3 ++ ldx [%sp + 0x7ff + 160],%o4 ! %i4 ++ ldx [%sp + 0x7ff + 168],%o5 ! %i5 ++ ++! load the even number double registers starting with %f2 ++ ldd [%sp + 0x7ff + 136],%f2 ++ ldd [%sp + 0x7ff + 144],%f4 ++ ldd [%sp + 0x7ff + 152],%f6 ++ ldd [%sp + 0x7ff + 160],%f8 ++ ldd [%sp + 0x7ff + 168],%f10 ++ ldd [%sp + 0x7ff + 176],%f12 ++ ldd [%sp + 0x7ff + 184],%f14 ++ ldd [%sp + 0x7ff + 192],%f16 ++ ldd [%sp + 0x7ff + 200],%f18 ++ ldd [%sp + 0x7ff + 208],%f20 ++ ldd [%sp + 0x7ff + 216],%f22 ++ ldd [%sp + 0x7ff + 224],%f24 ++ ldd [%sp + 0x7ff + 232],%f26 ++ ldd [%sp + 0x7ff + 240],%f28 ++ ldd [%sp + 0x7ff + 248],%f30 ++ ++! ++! calculate the target address from the vtable ++! ++.invoke: ++ sll %i1,3,%l0 ! index *= 8 ++ ldx [%i0],%l1 ! *this --> address of vtable ++ ldx [%l0 + %l1],%l0 ! this->vtable[index] --> address ++ ++ jmpl %l0,%o7 ! call the routine ++ mov %i0,%o0 ! move 'this' pointer to out register ++ ++ mov %o0,%i0 ! propagate return value ++ ret ++ restore ++ ++ .size NS_InvokeByIndex_P, .-NS_InvokeByIndex_P diff --git a/www/seamonkey/patches/patch-xb b/www/seamonkey/patches/patch-xb new file mode 100644 index 00000000000..a73d13ac46d --- /dev/null +++ b/www/seamonkey/patches/patch-xb @@ -0,0 +1,91 @@ +$NetBSD: patch-xb,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +NetBSD/sparc64 xptcall support code. From pkgsrc/www/firefox3/files/ + +--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc64_netbsd.cpp.orig 2009-07-09 10:12:51.000000000 +0200 ++++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc64_netbsd.cpp +@@ -0,0 +1,84 @@ ++/* -*- 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) 1998 Netscape Communications Corporation. All ++ * Rights Reserved. ++ * ++ * Contributor(s): ++ */ ++ ++/* Platform specific code to invoke XPCOM methods on native objects */ ++ ++#include "xptcprivate.h" ++ ++#if !defined(__sparc64__) && !defined(_LP64) ++#error "This code is for Sparc64 only" ++#endif ++ ++extern "C" PRUint32 ++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s) ++{ ++ /* ++ We need to copy the parameters for this function to locals and use them ++ from there since the parameters occupy the same stack space as the stack ++ we're trying to populate. ++ */ ++ PRUint64 *l_d = d; ++ nsXPTCVariant *l_s = s; ++ PRUint64 l_paramCount = paramCount; ++ PRUint64 regCount = 0; // return the number of registers to load from the stack ++ ++ for(PRUint64 i = 0; i < l_paramCount; i++, l_d++, l_s++) ++ { ++ if (regCount < 5) regCount++; ++ ++ if (l_s->IsPtrData()) ++ { ++ *l_d = (PRUint64)l_s->ptr; ++ continue; ++ } ++ switch (l_s->type) ++ { ++ case nsXPTType::T_I8 : *((PRInt64*)l_d) = l_s->val.i8; break; ++ case nsXPTType::T_I16 : *((PRInt64*)l_d) = l_s->val.i16; break; ++ case nsXPTType::T_I32 : *((PRInt64*)l_d) = l_s->val.i32; break; ++ case nsXPTType::T_I64 : *((PRInt64*)l_d) = l_s->val.i64; break; ++ ++ case nsXPTType::T_U8 : *((PRUint64*)l_d) = l_s->val.u8; break; ++ case nsXPTType::T_U16 : *((PRUint64*)l_d) = l_s->val.u16; break; ++ case nsXPTType::T_U32 : *((PRUint64*)l_d) = l_s->val.u32; break; ++ case nsXPTType::T_U64 : *((PRUint64*)l_d) = l_s->val.u64; break; ++ ++ /* in the case of floats, we want to put the bits in to the ++ 64bit space right justified... floats in the paramter array on ++ sparcv9 use odd numbered registers.. %f1, %f3, so we have to skip ++ the space that would be occupied by %f0, %f2, etc. ++ */ ++ case nsXPTType::T_FLOAT : *(((float*)l_d) + 1) = l_s->val.f; break; ++ case nsXPTType::T_DOUBLE: *((double*)l_d) = l_s->val.d; break; ++ case nsXPTType::T_BOOL : *((PRInt64*)l_d) = l_s->val.b; break; ++ case nsXPTType::T_CHAR : *((PRUint64*)l_d) = l_s->val.c; break; ++ case nsXPTType::T_WCHAR : *((PRInt64*)l_d) = l_s->val.wc; break; ++ ++ default: ++ // all the others are plain pointer types ++ *((void**)l_d) = l_s->val.p; ++ break; ++ } ++ } ++ ++ return regCount; ++} diff --git a/www/seamonkey/patches/patch-xc b/www/seamonkey/patches/patch-xc new file mode 100644 index 00000000000..6fb84e8fd1c --- /dev/null +++ b/www/seamonkey/patches/patch-xc @@ -0,0 +1,73 @@ +$NetBSD: patch-xc,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +NetBSD/sparc64 xptcall support code. From pkgsrc/www/firefox3/files/ + +--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_sparc64_netbsd.s.orig 2009-07-09 10:12:51.000000000 +0200 ++++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_sparc64_netbsd.s +@@ -0,0 +1,66 @@ ++/* -*- 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. ++ * ++ * Contributor(s): ++ */ ++ ++ .global SharedStub ++ ++/* ++ in the frame for the function that called SharedStub are the ++ rest of the parameters we need ++ ++*/ ++ ++SharedStub: ++! we don't create a new frame yet, but work within the frame of the calling ++! function to give ourselves the other parameters we want ++ ++ mov %o0, %o1 ! shuffle the index up to 2nd place ++ mov %i0, %o0 ! the original 'this' ++ add %fp, 0x7ff + 136, %o2 ! previous stack top adjusted to the first argument slot (beyond 'this') ++ ++! save off the original incoming parameters that arrived in ++! registers, the ABI guarantees the space for us to do this ++ stx %i1, [%fp + 0x7ff + 136] ++ stx %i2, [%fp + 0x7ff + 144] ++ stx %i3, [%fp + 0x7ff + 152] ++ stx %i4, [%fp + 0x7ff + 160] ++ stx %i5, [%fp + 0x7ff + 168] ++! now we can build our own stack frame ++ save %sp,-(128 + 64),%sp ! room for the register window and ++ ! struct pointer, rounded up to 0 % 64 ++! our function now appears to have been called ++! as SharedStub(nsISupports* that, PRUint32 index, PRUint32* args) ++! so we can just copy these through ++ ++ mov %i0, %o0 ++ mov %i1, %o1 ++ mov %i2, %o2 ++ call PrepareAndDispatch ++ nop ++ mov %o0,%i0 ! propagate return value ++ b .LL1 ++ nop ++.LL1: ++ ret ++ restore ++ ++ .size SharedStub, .-SharedStub ++ .type SharedStub, #function diff --git a/www/seamonkey/patches/patch-xd b/www/seamonkey/patches/patch-xd new file mode 100644 index 00000000000..2bc449681c8 --- /dev/null +++ b/www/seamonkey/patches/patch-xd @@ -0,0 +1,126 @@ +$NetBSD: patch-xd,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +NetBSD/sparc64 xptcall support code. From pkgsrc/www/firefox3/files/ + +--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc64_netbsd.cpp.orig 2009-07-09 10:12:51.000000000 +0200 ++++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc64_netbsd.cpp +@@ -0,0 +1,119 @@ ++/* -*- 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. ++ * ++ * Contributor(s): ++ */ ++ ++/* Implement shared vtbl methods. */ ++ ++#include "xptcprivate.h" ++#include "xptiprivate.h" ++ ++#if defined(sparc) || defined(__sparc__) ++ ++extern "C" nsresult ++PrepareAndDispatch(nsXPTCStubBase* self, PRUint64 methodIndex, PRUint64* args) ++{ ++ ++#define PARAM_BUFFER_COUNT 16 ++ ++ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT]; ++ nsXPTCMiniVariant* dispatchParams = NULL; ++ const nsXPTMethodInfo* info; ++ PRUint8 paramCount; ++ PRUint8 i; ++ nsresult result = NS_ERROR_FAILURE; ++ ++ NS_ASSERTION(self,"no self"); ++ ++ self->mEntry->GetMethodInfo(PRUint16(methodIndex), &info); ++ NS_ASSERTION(info,"no interface info"); ++ ++ paramCount = info->GetParamCount(); ++ ++ // setup variant array pointer ++ if(paramCount > PARAM_BUFFER_COUNT) ++ dispatchParams = new nsXPTCMiniVariant[paramCount]; ++ else ++ dispatchParams = paramBuffer; ++ NS_ASSERTION(dispatchParams,"no place for params"); ++ if (!dispatchParams) ++ return NS_ERROR_OUT_OF_MEMORY; ++ ++ PRUint64* ap = args; ++ for(i = 0; i < paramCount; i++, ap++) ++ { ++ const nsXPTParamInfo& param = info->GetParam(i); ++ const nsXPTType& type = param.GetType(); ++ nsXPTCMiniVariant* dp = &dispatchParams[i]; ++ ++ if(param.IsOut() || !type.IsArithmetic()) ++ { ++ dp->val.p = (void*) *ap; ++ continue; ++ } ++ // else ++ switch(type) ++ { ++ case nsXPTType::T_BOOL : dp->val.b = *((PRInt64*) ap); break; ++ case nsXPTType::T_CHAR : dp->val.c = *((PRUint64*) ap); break; ++ case nsXPTType::T_WCHAR : dp->val.wc = *((PRInt64*) ap); break; ++ case nsXPTType::T_I8 : dp->val.i8 = *((PRInt64*) ap); break; ++ case nsXPTType::T_I16 : dp->val.i16 = *((PRInt64*) ap); break; ++ case nsXPTType::T_I32 : dp->val.i32 = *((PRInt64*) ap); break; ++ case nsXPTType::T_I64 : dp->val.i64 = *((PRInt64*) ap); break; ++ case nsXPTType::T_U8 : dp->val.u8 = *((PRUint64*) ap); break; ++ case nsXPTType::T_U16 : dp->val.u16 = *((PRUint64*)ap); break; ++ case nsXPTType::T_U32 : dp->val.u32 = *((PRUint64*)ap); break; ++ case nsXPTType::T_U64 : dp->val.u64 = *((PRUint64*) ap); break; ++ case nsXPTType::T_FLOAT : dp->val.f = ((float*) ap)[1]; break; ++ case nsXPTType::T_DOUBLE : dp->val.d = *((double*) ap); break; ++ default: ++ NS_ASSERTION(0, "bad type"); ++ break; ++ } ++ } ++ ++ result = self->mOuter->CallMethod((PRUint16)methodIndex, info, dispatchParams); ++ ++ if(dispatchParams != paramBuffer) ++ delete [] dispatchParams; ++ ++ return result; ++} ++ ++extern "C" int SharedStub(int, int*); ++ ++#define STUB_ENTRY(n) \ ++nsresult nsXPTCStubBase::Stub##n() \ ++{ \ ++ int dummy; /* defeat tail-call optimization */ \ ++ return SharedStub(n, &dummy); \ ++} ++ ++#define SENTINEL_ENTRY(n) \ ++nsresult nsXPTCStubBase::Sentinel##n() \ ++{ \ ++ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \ ++ return NS_ERROR_NOT_IMPLEMENTED; \ ++} ++ ++#include "xptcstubsdef.inc" ++ ++#endif /* sparc || __sparc__ */ diff --git a/www/seamonkey/patches/patch-xe b/www/seamonkey/patches/patch-xe new file mode 100644 index 00000000000..39086d2f9f9 --- /dev/null +++ b/www/seamonkey/patches/patch-xe @@ -0,0 +1,77 @@ +$NetBSD: patch-xe,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +NetBSD/m68k xptcall support code. From pkgsrc/www/firefox/patch-ad. + +--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_netbsd_m68k.cpp.orig 2009-06-29 18:15:33.000000000 +0200 ++++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_netbsd_m68k.cpp +@@ -132,6 +132,15 @@ extern "C" { + } + } + ++/* ++ * SYMBOL PREFIX must be "_" for aout symbols and "" for ELF ++ */ ++#ifndef __ELF__ ++#define SYMBOLPREFIX "_" ++#else ++#define SYMBOLPREFIX ++#endif ++ + XPTC_PUBLIC_API(nsresult) + XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex, + PRUint32 paramCount, nsXPTCVariant* params) +@@ -139,30 +148,30 @@ XPTC_InvokeByIndex(nsISupports* that, PR + PRUint32 result; + + __asm__ __volatile__( +- "movl %4, sp@-\n\t" +- "movl %3, sp@-\n\t" +- "jbsr _invoke_count_words\n\t" /* count words */ +- "addql #8, sp\n\t" +- "lsll #2, d0\n\t" /* *= 4 */ +- "movl sp, a2\n\t" /* save original sp */ +- "subl d0, sp\n\t" /* make room for params */ +- "movl sp, a0\n\t" +- "movl %4, sp@-\n\t" +- "movl %3, sp@-\n\t" +- "movl a0, sp@-\n\t" +- "jbsr _invoke_copy_to_stack\n\t" /* copy params */ +- "addl #12, sp\n\t" +- "movl %1, a0\n\t" +- "movl a0@, a1\n\t" +- "movl %2, d0\n\t" /* function index */ +- "movl a0, d1\n\t" +- "movw a1@(8,d0:l:8), a0\n\t" +- "addl a0, d1\n\t" +- "movl a1@(12,d0:l:8), a1\n\t" +- "movl d1, sp@-\n\t" +- "jbsr a1@\n\t" +- "movl a2, sp\n\t" /* restore original sp */ +- "movl d0, %0\n\t" ++ "movl %4, %%sp@-\n\t" ++ "movl %3, %%sp@-\n\t" ++ "jbsr "SYMBOLPREFIX"invoke_count_words\n\t" /* count words */ ++ "addql #8, %%sp\n\t" ++ "lsll #2, %%d0\n\t" /* *= 4 */ ++ "movl %%sp, %%a2\n\t" /* save original sp */ ++ "subl %%d0, %%sp\n\t" /* make room for params */ ++ "movl %%sp, %%a0\n\t" ++ "movl %4, %%sp@-\n\t" ++ "movl %3, %%sp@-\n\t" ++ "movl %%a0, %%sp@-\n\t" ++ "jbsr "SYMBOLPREFIX"invoke_copy_to_stack\n\t" /* copy params */ ++ "addl #12, %%sp\n\t" ++ "movl %1, %%a0\n\t" ++ "movl %%a0@, %%a1\n\t" ++ "movl %2, %%d0\n\t" /* function index */ ++ "movl %%a0, %%d1\n\t" ++ "movw %%a1@(8,%%d0:l:8), %%a0\n\t" ++ "addl %%a0, %%d1\n\t" ++ "movl %%a1@(12,%%d0:l:8), %%a1\n\t" ++ "movl %%d1, %%sp@-\n\t" ++ "jbsr %%a1@\n\t" ++ "movl %%a2, %%sp\n\t" /* restore original sp */ ++ "movl %%d0, %0\n\t" + : "=g" (result) /* %0 */ + : "g" (that), /* %1 */ + "g" (methodIndex), /* %2 */ diff --git a/www/seamonkey/patches/patch-xf b/www/seamonkey/patches/patch-xf new file mode 100644 index 00000000000..03e0859ab64 --- /dev/null +++ b/www/seamonkey/patches/patch-xf @@ -0,0 +1,43 @@ +$NetBSD: patch-xf,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +NetBSD/m68k xptcall support code. From pkgsrc/www/firefox/patch-ae. + +--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_netbsd_m68k.cpp.orig 2009-06-29 18:15:33.000000000 +0200 ++++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_netbsd_m68k.cpp +@@ -123,17 +123,27 @@ extern "C" { + } + } + ++/* ++ * Beware: use % instead of %% for register identifiers in a preprocessor macro ++ * SYMBOL PREFIX must be "_" for aout and "" for ELF ++ */ ++#ifndef __ELF__ ++#define SYMBOLPREFIX "_" ++#else ++#define SYMBOLPREFIX ++#endif ++ + #define STUB_ENTRY(n) \ + __asm__( \ +- ".global _Stub"#n"__14nsXPTCStubBase\n\t" \ +-"_Stub"#n"__14nsXPTCStubBase:\n\t" \ +- "link a6,#0 \n\t" \ +- "lea a6@(12), a0 \n\t" /* pointer to args */ \ +- "movl a0, sp@- \n\t" \ +- "movl #"#n", sp@- \n\t" /* method index */ \ +- "movl a6@(8), sp@- \n\t" /* this */ \ +- "jbsr _PrepareAndDispatch \n\t" \ +- "unlk a6 \n\t" \ ++ ".global "SYMBOLPREFIX"Stub"#n"__14nsXPTCStubBase\n\t" \ ++SYMBOLPREFIX"Stub"#n"__14nsXPTCStubBase:\n\t" \ ++ "link %a6,#0 \n\t" \ ++ "lea %a6@(12), %a0 \n\t" /* pointer to args */ \ ++ "movl %a0, %sp@- \n\t" \ ++ "movl #"#n", %sp@- \n\t" /* method index */ \ ++ "movl %a6@(8), %sp@- \n\t" /* this */ \ ++ "jbsr "SYMBOLPREFIX"PrepareAndDispatch\n\t" \ ++ "unlk %a6 \n\t" \ + "rts \n\t" \ + ); + diff --git a/www/seamonkey/patches/patch-xg b/www/seamonkey/patches/patch-xg new file mode 100644 index 00000000000..aa78e6bc7e7 --- /dev/null +++ b/www/seamonkey/patches/patch-xg @@ -0,0 +1,33 @@ +$NetBSD: patch-xg,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +NetBSD/arm xptcall support code. From pkgsrc/www/firefox/patch-bm. + +--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm_netbsd.cpp.orig 2009-06-29 18:15:33.000000000 +0200 ++++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm_netbsd.cpp +@@ -118,18 +118,23 @@ PrepareAndDispatch(nsXPTCStubBase* self, + * so they are contiguous with values passed on the stack, and then calls + * PrepareAndDispatch() to do the dirty work. + */ ++#ifndef __ELF__ ++#define SYMBOLPREFIX "_" ++#else ++#define SYMBOLPREFIX ++#endif + + #define STUB_ENTRY(n) \ + __asm__( \ +- ".global _Stub"#n"__14nsXPTCStubBase\n\t" \ +-"_Stub"#n"__14nsXPTCStubBase:\n\t" \ ++ ".global "SYMBOLPREFIX"Stub"#n"__14nsXPTCStubBase\n\t" \ ++SYMBOLPREFIX"Stub"#n"__14nsXPTCStubBase:\n\t" \ + "stmfd sp!, {r1, r2, r3} \n\t" \ + "mov ip, sp \n\t" \ + "stmfd sp!, {fp, ip, lr, pc} \n\t" \ + "sub fp, ip, #4 \n\t" \ + "mov r1, #"#n" \n\t" /* = methodIndex */ \ + "add r2, sp, #16 \n\t" \ +- "bl _PrepareAndDispatch__FP14nsXPTCStubBaseUiPUi \n\t" \ ++ "bl "SYMBOLPREFIX"PrepareAndDispatch__FP14nsXPTCStubBaseUiPUi \n\t" \ + "ldmea fp, {fp, sp, lr} \n\t" \ + "add sp, sp, #12 \n\t" \ + "mov pc, lr \n\t" \ diff --git a/www/seamonkey/patches/patch-xh b/www/seamonkey/patches/patch-xh new file mode 100644 index 00000000000..55413b5a883 --- /dev/null +++ b/www/seamonkey/patches/patch-xh @@ -0,0 +1,181 @@ +$NetBSD: patch-xh,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +NetBSD/amd64 xptcall support code. Originally from pkgsrc/www/mozilla. + +--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_unixish_amd64.cpp.orig 2009-06-30 22:20:24.000000000 +0200 ++++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_unixish_amd64.cpp +@@ -0,0 +1,174 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++// Platform specific code to invoke XPCOM methods on native objects ++ ++#include "xptcprivate.h" ++ ++// 6 integral parameters are passed in registers ++const PRUint32 GPR_COUNT = 6; ++ ++// 8 floating point parameters are passed in SSE registers ++const PRUint32 FPR_COUNT = 8; ++ ++// Remember that these 'words' are 64-bit long ++static inline void ++invoke_count_words(PRUint32 paramCount, nsXPTCVariant * s, ++ PRUint32 & nr_gpr, PRUint32 & nr_fpr, PRUint32 & nr_stack) ++{ ++ nr_gpr = 1; // skip one GP register for 'that' ++ nr_fpr = 0; ++ nr_stack = 0; ++ ++ /* Compute number of eightbytes of class MEMORY. */ ++ for (uint32 i = 0; i < paramCount; i++, s++) { ++ if (!s->IsPtrData() ++ && (s->type == nsXPTType::T_FLOAT || s->type == nsXPTType::T_DOUBLE)) { ++ if (nr_fpr < FPR_COUNT) ++ nr_fpr++; ++ else ++ nr_stack++; ++ } ++ else { ++ if (nr_gpr < GPR_COUNT) ++ nr_gpr++; ++ else ++ nr_stack++; ++ } ++ } ++} ++ ++static void ++invoke_copy_to_stack(PRUint64 * d, PRUint32 paramCount, nsXPTCVariant * s, ++ PRUint64 * gpregs, double * fpregs) ++{ ++ PRUint32 nr_gpr = 1; // skip one GP register for 'that' ++ PRUint32 nr_fpr = 0; ++ PRUint64 value; ++ ++ for (uint32 i = 0; i < paramCount; i++, s++) { ++ if (s->IsPtrData()) ++ value = (PRUint64) s->ptr; ++ else { ++ switch (s->type) { ++ case nsXPTType::T_FLOAT: break; ++ case nsXPTType::T_DOUBLE: break; ++ case nsXPTType::T_I8: value = s->val.i8; break; ++ case nsXPTType::T_I16: value = s->val.i16; break; ++ case nsXPTType::T_I32: value = s->val.i32; break; ++ case nsXPTType::T_I64: value = s->val.i64; break; ++ case nsXPTType::T_U8: value = s->val.u8; break; ++ case nsXPTType::T_U16: value = s->val.u16; break; ++ case nsXPTType::T_U32: value = s->val.u32; break; ++ case nsXPTType::T_U64: value = s->val.u64; break; ++ case nsXPTType::T_BOOL: value = s->val.b; break; ++ case nsXPTType::T_CHAR: value = s->val.c; break; ++ case nsXPTType::T_WCHAR: value = s->val.wc; break; ++ default: value = (PRUint64) s->val.p; break; ++ } ++ } ++ ++ if (!s->IsPtrData() && s->type == nsXPTType::T_DOUBLE) { ++ if (nr_fpr < FPR_COUNT) ++ fpregs[nr_fpr++] = s->val.d; ++ else { ++ *((double *)d) = s->val.d; ++ d++; ++ } ++ } ++ else if (!s->IsPtrData() && s->type == nsXPTType::T_FLOAT) { ++ if (nr_fpr < FPR_COUNT) ++ // The value in %xmm register is already prepared to ++ // be retrieved as a float. Therefore, we pass the ++ // value verbatim, as a double without conversion. ++ fpregs[nr_fpr++] = s->val.d; ++ else { ++ *((float *)d) = s->val.f; ++ d++; ++ } ++ } ++ else { ++ if (nr_gpr < GPR_COUNT) ++ gpregs[nr_gpr++] = value; ++ else ++ *d++ = value; ++ } ++ } ++} ++ ++extern "C" ++XPTC_PUBLIC_API(nsresult) ++XPTC_InvokeByIndex(nsISupports * that, PRUint32 methodIndex, ++ PRUint32 paramCount, nsXPTCVariant * params) ++{ ++ PRUint32 nr_gpr, nr_fpr, nr_stack; ++ invoke_count_words(paramCount, params, nr_gpr, nr_fpr, nr_stack); ++ ++ // Stack, if used, must be 16-bytes aligned ++ if (nr_stack) ++ nr_stack = (nr_stack + 1) & ~1; ++ ++ // Load parameters to stack, if necessary ++ PRUint64 *stack = (PRUint64 *) __builtin_alloca(nr_stack * 8); ++ PRUint64 gpregs[GPR_COUNT]; ++ double fpregs[FPR_COUNT]; ++ invoke_copy_to_stack(stack, paramCount, params, gpregs, fpregs); ++ ++ // Load FPR registers from fpregs[] ++ register double d0 asm("xmm0"); ++ register double d1 asm("xmm1"); ++ register double d2 asm("xmm2"); ++ register double d3 asm("xmm3"); ++ register double d4 asm("xmm4"); ++ register double d5 asm("xmm5"); ++ register double d6 asm("xmm6"); ++ register double d7 asm("xmm7"); ++ ++ switch (nr_fpr) { ++#define ARG_FPR(N) \ ++ case N+1: d##N = fpregs[N]; ++ ARG_FPR(7); ++ ARG_FPR(6); ++ ARG_FPR(5); ++ ARG_FPR(4); ++ ARG_FPR(3); ++ ARG_FPR(2); ++ ARG_FPR(1); ++ ARG_FPR(0); ++ case 0:; ++#undef ARG_FPR ++ } ++ ++ // Load GPR registers from gpregs[] ++ register PRUint64 a0 asm("rdi"); ++ register PRUint64 a1 asm("rsi"); ++ register PRUint64 a2 asm("rdx"); ++ register PRUint64 a3 asm("rcx"); ++ register PRUint64 a4 asm("r8"); ++ register PRUint64 a5 asm("r9"); ++ ++ switch (nr_gpr) { ++#define ARG_GPR(N) \ ++ case N+1: a##N = gpregs[N]; ++ ARG_GPR(5); ++ ARG_GPR(4); ++ ARG_GPR(3); ++ ARG_GPR(2); ++ ARG_GPR(1); ++ case 1: a0 = (PRUint64) that; ++ case 0:; ++#undef ARG_GPR ++ } ++ ++ // Ensure that assignments to SSE registers won't be optimized away ++ asm("" :: ++ "x" (d0), "x" (d1), "x" (d2), "x" (d3), ++ "x" (d4), "x" (d5), "x" (d6), "x" (d7)); ++ ++ // Get pointer to method ++ PRUint64 methodAddress = *((PRUint64 *)that); ++ methodAddress += 8 * methodIndex; ++ methodAddress = *((PRUint64 *)methodAddress); ++ ++ typedef PRUint32 (*Method)(PRUint64, PRUint64, PRUint64, PRUint64, PRUint64, PRUint64); ++ PRUint32 result = ((Method)methodAddress)(a0, a1, a2, a3, a4, a5); ++ return result; ++} diff --git a/www/seamonkey/patches/patch-xi b/www/seamonkey/patches/patch-xi new file mode 100644 index 00000000000..5d8c6c1c404 --- /dev/null +++ b/www/seamonkey/patches/patch-xi @@ -0,0 +1,213 @@ +$NetBSD: patch-xi,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +NetBSD/amd64 xptcall support code. Originally from pkgsrc/www/mozilla. + +--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_unixish_amd64.cpp.orig 2009-06-30 22:20:24.000000000 +0200 ++++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_unixish_amd64.cpp +@@ -0,0 +1,206 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++ ++// Implement shared vtbl methods. ++ ++#include "xptcprivate.h" ++ ++// The Linux/x86-64 ABI passes the first 6 integral parameters and the ++// first 8 floating point parameters in registers (rdi, rsi, rdx, rcx, ++// r8, r9 and xmm0-xmm7), no stack space is allocated for these by the ++// caller. The rest of the parameters are passed in the callers stack ++// area. ++ ++const PRUint32 PARAM_BUFFER_COUNT = 16; ++const PRUint32 GPR_COUNT = 6; ++const PRUint32 FPR_COUNT = 8; ++ ++// PrepareAndDispatch() is called by SharedStub() and calls the actual method. ++// ++// - 'args[]' contains the arguments passed on stack ++// - 'gpregs[]' contains the arguments passed in integer registers ++// - 'fpregs[]' contains the arguments passed in floating point registers ++// ++// The parameters are mapped into an array of type 'nsXPTCMiniVariant' ++// and then the method gets called. ++ ++extern "C" nsresult ++PrepareAndDispatch(nsXPTCStubBase * self, PRUint32 methodIndex, ++ PRUint64 * args, PRUint64 * gpregs, double *fpregs) ++{ ++ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT]; ++ nsXPTCMiniVariant* dispatchParams = NULL; ++ nsIInterfaceInfo* iface_info = NULL; ++ const nsXPTMethodInfo* info; ++ PRUint32 paramCount; ++ PRUint32 i; ++ nsresult result = NS_ERROR_FAILURE; ++ ++ NS_ASSERTION(self,"no self"); ++ ++ self->GetInterfaceInfo(&iface_info); ++ NS_ASSERTION(iface_info,"no interface info"); ++ if (! iface_info) ++ return NS_ERROR_UNEXPECTED; ++ ++ iface_info->GetMethodInfo(PRUint16(methodIndex), &info); ++ NS_ASSERTION(info,"no method info"); ++ if (! info) ++ return NS_ERROR_UNEXPECTED; ++ ++ paramCount = info->GetParamCount(); ++ ++ // setup variant array pointer ++ if(paramCount > PARAM_BUFFER_COUNT) ++ dispatchParams = new nsXPTCMiniVariant[paramCount]; ++ else ++ dispatchParams = paramBuffer; ++ ++ NS_ASSERTION(dispatchParams,"no place for params"); ++ if (! dispatchParams) ++ return NS_ERROR_OUT_OF_MEMORY; ++ ++ PRUint64* ap = args; ++ PRUint32 nr_gpr = 1; // skip one GPR register for 'that' ++ PRUint32 nr_fpr = 0; ++ PRUint64 value; ++ ++ for(i = 0; i < paramCount; i++) { ++ const nsXPTParamInfo& param = info->GetParam(i); ++ const nsXPTType& type = param.GetType(); ++ nsXPTCMiniVariant* dp = &dispatchParams[i]; ++ ++ if (!param.IsOut() && type == nsXPTType::T_DOUBLE) { ++ if (nr_fpr < FPR_COUNT) ++ dp->val.d = fpregs[nr_fpr++]; ++ else ++ dp->val.d = *(double*) ap++; ++ continue; ++ } ++ else if (!param.IsOut() && type == nsXPTType::T_FLOAT) { ++ if (nr_fpr < FPR_COUNT) ++ // The value in %xmm register is already prepared to ++ // be retrieved as a float. Therefore, we pass the ++ // value verbatim, as a double without conversion. ++ dp->val.d = *(double*) ap++; ++ else ++ dp->val.f = *(float*) ap++; ++ continue; ++ } ++ else { ++ if (nr_gpr < GPR_COUNT) ++ value = gpregs[nr_gpr++]; ++ else ++ value = *ap++; ++ } ++ ++ if (param.IsOut() || !type.IsArithmetic()) { ++ dp->val.p = (void*) value; ++ continue; ++ } ++ ++ switch (type) { ++ case nsXPTType::T_I8: dp->val.i8 = (PRInt8) value; break; ++ case nsXPTType::T_I16: dp->val.i16 = (PRInt16) value; break; ++ case nsXPTType::T_I32: dp->val.i32 = (PRInt32) value; break; ++ case nsXPTType::T_I64: dp->val.i64 = (PRInt64) value; break; ++ case nsXPTType::T_U8: dp->val.u8 = (PRUint8) value; break; ++ case nsXPTType::T_U16: dp->val.u16 = (PRUint16) value; break; ++ case nsXPTType::T_U32: dp->val.u32 = (PRUint32) value; break; ++ case nsXPTType::T_U64: dp->val.u64 = (PRUint64) value; break; ++ case nsXPTType::T_BOOL: dp->val.b = (PRBool) value; break; ++ case nsXPTType::T_CHAR: dp->val.c = (char) value; break; ++ case nsXPTType::T_WCHAR: dp->val.wc = (wchar_t) value; break; ++ ++ default: ++ NS_ASSERTION(0, "bad type"); ++ break; ++ } ++ } ++ ++ result = self->CallMethod((PRUint16) methodIndex, info, dispatchParams); ++ ++ NS_RELEASE(iface_info); ++ ++ if (dispatchParams != paramBuffer) ++ delete [] dispatchParams; ++ ++ return result; ++} ++ ++#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */ ++// Linux/x86-64 uses gcc >= 3.1 ++#define STUB_ENTRY(n) \ ++asm(".section \".text\"\n\t" \ ++ ".align 2\n\t" \ ++ ".if " #n " < 10\n\t" \ ++ ".globl _ZN14nsXPTCStubBase5Stub" #n "Ev\n\t" \ ++ ".type _ZN14nsXPTCStubBase5Stub" #n "Ev,@function\n" \ ++ "_ZN14nsXPTCStubBase5Stub" #n "Ev:\n\t" \ ++ ".elseif " #n " < 100\n\t" \ ++ ".globl _ZN14nsXPTCStubBase6Stub" #n "Ev\n\t" \ ++ ".type _ZN14nsXPTCStubBase6Stub" #n "Ev,@function\n" \ ++ "_ZN14nsXPTCStubBase6Stub" #n "Ev:\n\t" \ ++ ".elseif " #n " < 1000\n\t" \ ++ ".globl _ZN14nsXPTCStubBase7Stub" #n "Ev\n\t" \ ++ ".type _ZN14nsXPTCStubBase7Stub" #n "Ev,@function\n" \ ++ "_ZN14nsXPTCStubBase7Stub" #n "Ev:\n\t" \ ++ ".else\n\t" \ ++ ".err \"stub number " #n " >= 1000 not yet supported\"\n\t" \ ++ ".endif\n\t" \ ++ "movl $" #n ", %eax\n\t" \ ++ "jmp SharedStub\n\t" \ ++ ".if " #n " < 10\n\t" \ ++ ".size _ZN14nsXPTCStubBase5Stub" #n "Ev,.-_ZN14nsXPTCStubBase5Stub" #n "Ev\n\t" \ ++ ".elseif " #n " < 100\n\t" \ ++ ".size _ZN14nsXPTCStubBase6Stub" #n "Ev,.-_ZN14nsXPTCStubBase6Stub" #n "Ev\n\t" \ ++ ".else\n\t" \ ++ ".size _ZN14nsXPTCStubBase7Stub" #n "Ev,.-_ZN14nsXPTCStubBase7Stub" #n "Ev\n\t" \ ++ ".endif"); ++ ++// static nsresult SharedStub(PRUint32 methodIndex) ++asm(".section \".text\"\n\t" ++ ".align 2\n\t" ++ ".type SharedStub,@function\n\t" ++ "SharedStub:\n\t" ++ // make room for gpregs (48), fpregs (64) ++ "pushq %rbp\n\t" ++ "movq %rsp,%rbp\n\t" ++ "subq $112,%rsp\n\t" ++ // save GP registers ++ "movq %rdi,-112(%rbp)\n\t" ++ "movq %rsi,-104(%rbp)\n\t" ++ "movq %rdx, -96(%rbp)\n\t" ++ "movq %rcx, -88(%rbp)\n\t" ++ "movq %r8 , -80(%rbp)\n\t" ++ "movq %r9 , -72(%rbp)\n\t" ++ "leaq -112(%rbp),%rcx\n\t" ++ // save FP registers ++ "movsd %xmm0,-64(%rbp)\n\t" ++ "movsd %xmm1,-56(%rbp)\n\t" ++ "movsd %xmm2,-48(%rbp)\n\t" ++ "movsd %xmm3,-40(%rbp)\n\t" ++ "movsd %xmm4,-32(%rbp)\n\t" ++ "movsd %xmm5,-24(%rbp)\n\t" ++ "movsd %xmm6,-16(%rbp)\n\t" ++ "movsd %xmm7, -8(%rbp)\n\t" ++ "leaq -64(%rbp),%r8\n\t" ++ // rdi has the 'self' pointer already ++ "movl %eax,%esi\n\t" ++ "leaq 16(%rbp),%rdx\n\t" ++ "call PrepareAndDispatch\n\t" ++ "leave\n\t" ++ "ret\n\t" ++ ".size SharedStub,.-SharedStub"); ++ ++#define SENTINEL_ENTRY(n) \ ++nsresult nsXPTCStubBase::Sentinel##n() \ ++{ \ ++ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \ ++ return NS_ERROR_NOT_IMPLEMENTED; \ ++} ++ ++#include "xptcstubsdef.inc" ++ ++#else ++#error "can't find a compiler to use" ++#endif /* __GNUC__ */ diff --git a/www/seamonkey/patches/patch-xj b/www/seamonkey/patches/patch-xj new file mode 100644 index 00000000000..9987abd195a --- /dev/null +++ b/www/seamonkey/patches/patch-xj @@ -0,0 +1,129 @@ +$NetBSD: patch-xj,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +NetBSD ppc xptcall support code. Originally from pkgsrc/www/mozilla. + +--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc_netbsd.cpp.orig 2009-06-29 18:15:33.000000000 +0200 ++++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc_netbsd.cpp +@@ -41,6 +41,7 @@ + // Implement shared vtbl methods. + + #include "xptcprivate.h" ++#include "xptiprivate.h" + + // The Linux/PPC ABI (aka PPC/SYSV ABI) passes the first 8 integral + // parameters and the first 8 floating point parameters in registers +@@ -71,7 +72,6 @@ PrepareAndDispatch(nsXPTCStubBase* self, + { + nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT]; + nsXPTCMiniVariant* dispatchParams = NULL; +- nsIInterfaceInfo* iface_info = NULL; + const nsXPTMethodInfo* info; + PRUint32 paramCount; + PRUint32 i; +@@ -79,12 +79,7 @@ PrepareAndDispatch(nsXPTCStubBase* self, + + NS_ASSERTION(self,"no self"); + +- self->GetInterfaceInfo(&iface_info); +- NS_ASSERTION(iface_info,"no interface info"); +- if (! iface_info) +- return NS_ERROR_UNEXPECTED; +- +- iface_info->GetMethodInfo(PRUint16(methodIndex), &info); ++ self->mEntry->GetMethodInfo(PRUint16(methodIndex), &info); + NS_ASSERTION(info,"no method info"); + if (! info) + return NS_ERROR_UNEXPECTED; +@@ -119,8 +114,10 @@ PrepareAndDispatch(nsXPTCStubBase* self, + if ((PRUint32) ap & 4) ap++; // doubles are 8-byte aligned on stack + dp->val.d = *(double*) ap; + ap += 2; ++#if __GXX_ABI_VERSION < 100 + if (gpr < GPR_COUNT) + gpr += 2; ++#endif + } + continue; + } +@@ -130,8 +127,10 @@ PrepareAndDispatch(nsXPTCStubBase* self, + else { + dp->val.f = *(float*) ap; + ap += 1; ++#if __GXX_ABI_VERSION < 100 + if (gpr < GPR_COUNT) + gpr += 1; ++#endif + } + continue; + } +@@ -179,9 +178,9 @@ PrepareAndDispatch(nsXPTCStubBase* self, + } + } + +- result = self->CallMethod((PRUint16) methodIndex, info, dispatchParams); +- +- NS_RELEASE(iface_info); ++ result = self->mOuter->CallMethod((PRUint16) methodIndex, ++ info, ++ dispatchParams); + + if (dispatchParams != paramBuffer) + delete [] dispatchParams; +@@ -195,7 +194,9 @@ PrepareAndDispatch(nsXPTCStubBase* self, + // however, it's quick, dirty, and'll break when the ABI changes on + // us, which is what we want ;-). + +-#define STUB_ENTRY(n) \ ++#if __GXX_ABI_VERSION < 100 ++// gcc-2 version ++# define STUB_ENTRY(n) \ + __asm__ ( \ + ".section \".text\" \n\t" \ + ".align 2 \n\t" \ +@@ -206,6 +207,46 @@ __asm__ ( + "li 11,"#n" \n\t" \ + "b SharedStub@local \n" \ + ); ++#else ++// gcc-3 version ++// ++// As G++3 ABI contains the length of the functionname in the mangled ++// name, it is difficult to get a generic assembler mechanism like ++// in the G++ 2.95 case. ++// Create names would be like: ++// _ZN14nsXPTCStubBase5Stub1Ev ++// _ZN14nsXPTCStubBase6Stub12Ev ++// _ZN14nsXPTCStubBase7Stub123Ev ++// _ZN14nsXPTCStubBase8Stub1234Ev ++// etc. ++// Use assembler directives to get the names right... ++ ++# define STUB_ENTRY(n) \ ++__asm__ ( \ ++ ".align 2 \n\t" \ ++ ".if "#n" < 10 \n\t" \ ++ ".globl _ZN14nsXPTCStubBase5Stub"#n"Ev \n\t" \ ++ ".type _ZN14nsXPTCStubBase5Stub"#n"Ev,@function \n\n" \ ++"_ZN14nsXPTCStubBase5Stub"#n"Ev: \n\t" \ ++ \ ++ ".elseif "#n" < 100 \n\t" \ ++ ".globl _ZN14nsXPTCStubBase6Stub"#n"Ev \n\t" \ ++ ".type _ZN14nsXPTCStubBase6Stub"#n"Ev,@function \n\n" \ ++"_ZN14nsXPTCStubBase6Stub"#n"Ev: \n\t" \ ++ \ ++ ".elseif "#n" < 1000 \n\t" \ ++ ".globl _ZN14nsXPTCStubBase7Stub"#n"Ev \n\t" \ ++ ".type _ZN14nsXPTCStubBase7Stub"#n"Ev,@function \n\n" \ ++"_ZN14nsXPTCStubBase7Stub"#n"Ev: \n\t" \ ++ \ ++ ".else \n\t" \ ++ ".err \"stub number "#n" >= 1000 not yet supported\"\n" \ ++ ".endif \n\t" \ ++ \ ++ "li 11,"#n" \n\t" \ ++ "b SharedStub@local \n" \ ++); ++#endif + + #define SENTINEL_ENTRY(n) \ + nsresult nsXPTCStubBase::Sentinel##n() \ diff --git a/www/seamonkey/patches/patch-xk b/www/seamonkey/patches/patch-xk new file mode 100644 index 00000000000..c4a424727c8 --- /dev/null +++ b/www/seamonkey/patches/patch-xk @@ -0,0 +1,156 @@ +$NetBSD: patch-xk,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +NetBSD ppc xptcall support code. Originally from pkgsrc/www/mozilla. + +--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc_netbsd.s.orig 2009-06-29 18:15:33.000000000 +0200 ++++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc_netbsd.s +@@ -1,43 +1,43 @@ +-# -*- Mode: Asm -*- +-# +-# ***** BEGIN LICENSE BLOCK ***** +-# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +-# +-# 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 mozilla.org code. +-# +-# The Initial Developer of the Original Code is +-# Netscape Communications Corporation. +-# Portions created by the Initial Developer are Copyright (C) 1999 +-# the Initial Developer. All Rights Reserved. +-# +-# Contributor(s): +-# Franz.Sirl-kernel@lauterbach.com (Franz Sirl) +-# beard@netscape.com (Patrick Beard) +-# waterson@netscape.com (Chris Waterson) +-# +-# Alternatively, the contents of this file may be used under the terms of +-# either the GNU General Public License Version 2 or later (the "GPL"), or +-# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +-# in which case the provisions of the GPL or the LGPL are applicable instead +-# of those above. If you wish to allow use of your version of this file only +-# under the terms of either the GPL or the LGPL, and not to allow others to +-# use your version of this file under the terms of the MPL, indicate your +-# decision by deleting the provisions above and replace them with the notice +-# and other provisions required by the GPL or the LGPL. If you do not delete +-# the provisions above, a recipient may use your version of this file under +-# the terms of any one of the MPL, the GPL or the LGPL. +-# +-# ***** END LICENSE BLOCK ***** ++// -*- Mode: Asm -*- ++// ++// ***** BEGIN LICENSE BLOCK ***** ++// Version: MPL 1.1/GPL 2.0/LGPL 2.1 ++// ++// 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 mozilla.org code. ++// ++// The Initial Developer of the Original Code is ++// Netscape Communications Corporation. ++// Portions created by the Initial Developer are Copyright (C) 1999 ++// the Initial Developer. All Rights Reserved. ++// ++// Contributor(s): ++// Franz.Sirl-kernel@lauterbach.com (Franz Sirl) ++// beard@netscape.com (Patrick Beard) ++// waterson@netscape.com (Chris Waterson) ++// ++// Alternatively, the contents of this file may be used under the terms of ++// either the GNU General Public License Version 2 or later (the "GPL"), or ++// the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ++// in which case the provisions of the GPL or the LGPL are applicable instead ++// of those above. If you wish to allow use of your version of this file only ++// under the terms of either the GPL or the LGPL, and not to allow others to ++// use your version of this file under the terms of the MPL, indicate your ++// decision by deleting the provisions above and replace them with the notice ++// and other provisions required by the GPL or the LGPL. If you do not delete ++// the provisions above, a recipient may use your version of this file under ++// the terms of any one of the MPL, the GPL or the LGPL. ++// ++// ***** END LICENSE BLOCK ***** + + .set r0,0; .set sp,1; .set RTOC,2; .set r3,3; .set r4,4 + .set r5,5; .set r6,6; .set r7,7; .set r8,8; .set r9,9 +@@ -60,23 +60,23 @@ + .type SharedStub,@function + + SharedStub: +- stwu sp,-112(sp) # room for +- # linkage (8), +- # gprData (32), +- # fprData (64), +- # stack alignment(8) ++ stwu sp,-112(sp) // room for ++ // linkage (8), ++ // gprData (32), ++ // fprData (64), ++ // stack alignment(8) + mflr r0 +- stw r0,116(sp) # save LR backchain ++ stw r0,116(sp) // save LR backchain + +- stw r4,12(sp) # save GP registers +- stw r5,16(sp) # (n.b. that we don't save r3 +- stw r6,20(sp) # because PrepareAndDispatch() is savvy) ++ stw r4,12(sp) // save GP registers ++ stw r5,16(sp) // (n.b. that we don't save r3 ++ stw r6,20(sp) // because PrepareAndDispatch() is savvy) + stw r7,24(sp) + stw r8,28(sp) + stw r9,32(sp) + stw r10,36(sp) + +- stfd f1,40(sp) # save FP registers ++ stfd f1,40(sp) // save FP registers + stfd f2,48(sp) + stfd f3,56(sp) + stfd f4,64(sp) +@@ -85,21 +85,21 @@ SharedStub: + stfd f7,88(sp) + stfd f8,96(sp) + +- # r3 has the 'self' pointer already ++ // r3 has the 'self' pointer already + +- mr r4,r11 # r4 <= methodIndex selector, passed +- # via r11 in the nsXPTCStubBase::StubXX() call ++ mr r4,r11 // r4 <= methodIndex selector, passed ++ // via r11 in the nsXPTCStubBase::StubXX() call + +- addi r5,sp,120 # r5 <= pointer to callers args area, +- # beyond r3-r10/f1-f8 mapped range ++ addi r5,sp,120 // r5 <= pointer to callers args area, ++ // beyond r3-r10/f1-f8 mapped range + +- addi r6,sp,8 # r6 <= gprData +- addi r7,sp,40 # r7 <= fprData ++ addi r6,sp,8 // r6 <= gprData ++ addi r7,sp,40 // r7 <= fprData + +- bl PrepareAndDispatch@local # Go! ++ bl PrepareAndDispatch@local // Go! + +- lwz r0,116(sp) # restore LR ++ lwz r0,116(sp) // restore LR + mtlr r0 +- la sp,112(sp) # clean up the stack ++ la sp,112(sp) // clean up the stack + blr + diff --git a/www/seamonkey/patches/patch-xl b/www/seamonkey/patches/patch-xl new file mode 100644 index 00000000000..d107cfcd21a --- /dev/null +++ b/www/seamonkey/patches/patch-xl @@ -0,0 +1,200 @@ +$NetBSD: patch-xl,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +NetBSD ppc xptcall support code. Originally from pkgsrc/www/mozilla. + +--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ppc_netbsd.s.orig 2009-06-29 18:15:33.000000000 +0200 ++++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ppc_netbsd.s +@@ -1,43 +1,43 @@ +-# -*- Mode: Asm -*- +-# +-# ***** BEGIN LICENSE BLOCK ***** +-# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +-# +-# 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 mozilla.org code. +-# +-# The Initial Developer of the Original Code is +-# Netscape Communications Corporation. +-# Portions created by the Initial Developer are Copyright (C) 1999 +-# the Initial Developer. All Rights Reserved. +-# +-# Contributor(s): +-# Franz.Sirl-kernel@lauterbach.com (Franz Sirl) +-# beard@netscape.com (Patrick Beard) +-# waterson@netscape.com (Chris Waterson) +-# +-# Alternatively, the contents of this file may be used under the terms of +-# either the GNU General Public License Version 2 or later (the "GPL"), or +-# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +-# in which case the provisions of the GPL or the LGPL are applicable instead +-# of those above. If you wish to allow use of your version of this file only +-# under the terms of either the GPL or the LGPL, and not to allow others to +-# use your version of this file under the terms of the MPL, indicate your +-# decision by deleting the provisions above and replace them with the notice +-# and other provisions required by the GPL or the LGPL. If you do not delete +-# the provisions above, a recipient may use your version of this file under +-# the terms of any one of the MPL, the GPL or the LGPL. +-# +-# ***** END LICENSE BLOCK ***** ++// -*- Mode: Asm -*- ++// ++// ***** BEGIN LICENSE BLOCK ***** ++// Version: MPL 1.1/GPL 2.0/LGPL 2.1 ++// ++// 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 mozilla.org code. ++// ++// The Initial Developer of the Original Code is ++// Netscape Communications Corporation. ++// Portions created by the Initial Developer are Copyright (C) 1999 ++// the Initial Developer. All Rights Reserved. ++// ++// Contributor(s): ++// Franz.Sirl-kernel@lauterbach.com (Franz Sirl) ++// beard@netscape.com (Patrick Beard) ++// waterson@netscape.com (Chris Waterson) ++// ++// Alternatively, the contents of this file may be used under the terms of ++// either the GNU General Public License Version 2 or later (the "GPL"), or ++// the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ++// in which case the provisions of the GPL or the LGPL are applicable instead ++// of those above. If you wish to allow use of your version of this file only ++// under the terms of either the GPL or the LGPL, and not to allow others to ++// use your version of this file under the terms of the MPL, indicate your ++// decision by deleting the provisions above and replace them with the notice ++// and other provisions required by the GPL or the LGPL. If you do not delete ++// the provisions above, a recipient may use your version of this file under ++// the terms of any one of the MPL, the GPL or the LGPL. ++// ++// ***** END LICENSE BLOCK ***** + .set r0,0; .set sp,1; .set RTOC,2; .set r3,3; .set r4,4 + .set r5,5; .set r6,6; .set r7,7; .set r8,8; .set r9,9 + .set r10,10; .set r11,11; .set r12,12; .set r13,13; .set r14,14 +@@ -55,41 +55,41 @@ + + .section ".text" + .align 2 +- .globl XPTC_InvokeByIndex +- .type XPTC_InvokeByIndex,@function ++ .globl NS_InvokeByIndex_P ++ .type NS_InvokeByIndex_P,@function + +-# +-# XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex, +-# PRUint32 paramCount, nsXPTCVariant* params) +-# +- +-XPTC_InvokeByIndex: +- stwu sp,-32(sp) # setup standard stack frame +- mflr r0 # save LR +- stw r3,8(sp) # r3 <= that +- stw r4,12(sp) # r4 <= methodIndex ++// ++// NS_InvokeByIndex_P(nsISupports* that, PRUint32 methodIndex, ++// PRUint32 paramCount, nsXPTCVariant* params) ++// ++ ++NS_InvokeByIndex_P: ++ stwu sp,-32(sp) // setup standard stack frame ++ mflr r0 // save LR ++ stw r3,8(sp) // r3 <= that ++ stw r4,12(sp) // r4 <= methodIndex + stw r30,16(sp) + stw r31,20(sp) + +- stw r0,36(sp) # store LR backchain ++ stw r0,36(sp) // store LR backchain + mr r31,sp + +- rlwinm r10,r5,3,0,27 # r10 = (ParamCount * 2 * 4) & ~0x0f +- addi r0,r10,96 # reserve stack for GPR and FPR register save area r0 = r10 + 96 +- lwz r9,0(sp) # r9 = backchain ++ rlwinm r10,r5,3,0,27 // r10 = (ParamCount * 2 * 4) & ~0x0f ++ addi r0,r10,96 // reserve stack for GPR and FPR register save area r0 = r10 + 96 ++ lwz r9,0(sp) // r9 = backchain + neg r0,r0 +- stwux r9,sp,r0 # reserve stack sapce and save SP backchain ++ stwux r9,sp,r0 // reserve stack sapce and save SP backchain + +- addi r3,sp,8 # r3 <= args +- mr r4,r5 # r4 <= paramCount +- mr r5,r6 # r5 <= params +- add r6,r3,r10 # r6 <= gpregs ( == args + r10 ) +- mr r30,r6 # store in r30 for use later... +- addi r7,r6,32 # r7 <= fpregs ( == gpregs + 32 ) ++ addi r3,sp,8 // r3 <= args ++ mr r4,r5 // r4 <= paramCount ++ mr r5,r6 // r5 <= params ++ add r6,r3,r10 // r6 <= gpregs ( == args + r10 ) ++ mr r30,r6 // store in r30 for use later... ++ addi r7,r6,32 // r7 <= fpregs ( == gpregs + 32 ) + +- bl invoke_copy_to_stack@local # (args, paramCount, params, gpregs, fpregs) ++ bl invoke_copy_to_stack@local // (args, paramCount, params, gpregs, fpregs) + +- lfd f1,32(r30) # load FP registers with method parameters ++ lfd f1,32(r30) // load FP registers with method parameters + lfd f2,40(r30) + lfd f3,48(r30) + lfd f4,56(r30) +@@ -98,18 +98,13 @@ XPTC_InvokeByIndex: + lfd f7,80(r30) + lfd f8,88(r30) + +- lwz r3,8(r31) # r3 <= that +- lwz r4,12(r31) # r4 <= methodIndex +- lwz r5,0(r3) # r5 <= vtable ( == *that ) +- slwi r4,r4,3 # convert to offset ( *= 8 ) +- addi r4,r4,8 # skip first two vtable entries +- add r4,r4,r5 +- lhz r0,0(r4) # virtual base offset +- extsh r0,r0 +- add r3,r3,r0 +- lwz r0,4(r4) # r0 <= methodpointer ( == vtable + offset ) ++ lwz r3,8(r31) // r3 <= that ++ lwz r4,12(r31) // r4 <= methodIndex ++ lwz r5,0(r3) // r5 <= vtable ( == *that ) ++ slwi r4,r4,2 // convert to offset ( *= 4 ) ++ lwzx r0,r4,r5 // r0 <= methodpointer ( == vtable + offset ) + +- lwz r4,4(r30) # load GP regs with method parameters ++ lwz r4,4(r30) // load GP regs with method parameters + lwz r5,8(r30) + lwz r6,12(r30) + lwz r7,16(r30) +@@ -117,13 +112,13 @@ XPTC_InvokeByIndex: + lwz r9,24(r30) + lwz r10,28(r30) + +- mtlr r0 # copy methodpointer to LR +- blrl # call method ++ mtlr r0 // copy methodpointer to LR ++ blrl // call method + +- lwz r30,16(r31) # restore r30 & r31 ++ lwz r30,16(r31) // restore r30 & r31 + lwz r31,20(r31) + +- lwz r11,0(sp) # clean up the stack ++ lwz r11,0(sp) // clean up the stack + lwz r0,4(r11) + mtlr r0 + mr sp,r11 diff --git a/www/seamonkey/patches/patch-xm b/www/seamonkey/patches/patch-xm new file mode 100644 index 00000000000..60d4dbe2af4 --- /dev/null +++ b/www/seamonkey/patches/patch-xm @@ -0,0 +1,49 @@ +$NetBSD: patch-xm,v 1.1 2010/03/16 10:59:10 tnn Exp $ + +NetBSD/ppc xptcall support code. Originally from pkgsrc/www/mozilla. + +--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_ppc_netbsd.cpp.orig 2009-06-29 18:15:33.000000000 +0200 ++++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_ppc_netbsd.cpp +@@ -40,9 +40,9 @@ + + // Platform specific code to invoke XPCOM methods on native objects + +-// The purpose of XPTC_InvokeByIndex() is to map a platform ++// The purpose of NS_InvokeByIndex_P() is to map a platform + // indepenpent call to the platform ABI. To do that, +-// XPTC_InvokeByIndex() has to determine the method to call via vtable ++// NS_InvokeByIndex_P() has to determine the method to call via vtable + // access. The parameters for the method are read from the + // nsXPTCVariant* and prepared for the native ABI. For the Linux/PPC + // ABI this means that the first 8 integral and floating point +@@ -104,8 +104,10 @@ invoke_copy_to_stack(PRUint32* d, + if ((PRUint32) d & 4) d++; // doubles are 8-byte aligned on stack + *((double*) d) = s->val.d; + d += 2; ++#if __GXX_ABI_VERSION < 100 + if (gpr < GPR_COUNT) + gpr += 2; ++#endif + } + } + else if (!s->IsPtrData() && s->type == nsXPTType::T_FLOAT) { +@@ -114,8 +116,10 @@ invoke_copy_to_stack(PRUint32* d, + else { + *((float*) d) = s->val.f; + d += 1; ++#if __GXX_ABI_VERSION < 100 + if (gpr < GPR_COUNT) + gpr += 1; ++#endif + } + } + else if (!s->IsPtrData() && (s->type == nsXPTType::T_I64 +@@ -142,6 +146,6 @@ invoke_copy_to_stack(PRUint32* d, + } + + extern "C" +-XPTC_PUBLIC_API(nsresult) +-XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex, ++EXPORT_XPCOM_API(nsresult) ++NS_InvokeByIndex_P(nsISupports* that, PRUint32 methodIndex, + PRUint32 paramCount, nsXPTCVariant* params); |