import seamonkey-1.0.7

Web-browser, advanced e-mail and newsgroup client, IRC chat client,
and HTML editing made simple -- all your Internet needs in one
application.

Based mostly on a port from James Wright <jamesw at bsdhosting.co.za> with
input from several - thanks! Tested on i386/amd64/sparc64/macppc.
This commit is contained in:
kurt 2006-12-22 23:32:27 +00:00
parent 87c1358d8b
commit 91ba45c396
58 changed files with 7179 additions and 0 deletions

160
www/seamonkey/Makefile Normal file
View File

@ -0,0 +1,160 @@
# $OpenBSD: Makefile,v 1.1.1.1 2006/12/22 23:32:27 kurt Exp $
ONLY_FOR_ARCHS= alpha amd64 i386 powerpc sparc sparc64
COMMENT-main= "integrated mozilla application suite"
COMMENT-devel= "devel files for Gecko"
VER= 1.0.7
DISTNAME= seamonkey-${VER}.source
PKGNAME= seamonkey-${VER}
PKGNAME-main= seamonkey-${VER}
PKGNAME-devel= seamonkey-devel-${VER}
SO_VERSION= 9.3
# NOTE: Must bump minor version if any shlib's are removed from the
# components dir to avoid pkg_add -r issues.
.for _lib in accessibility appcomps auth autoconfig browsercomps \
browserdirprovider caps chrome commandlines composer cookie docshell \
editor embedcomponents fileview gfx_gtk gfxps gfxpsshar gkgfx \
gklayout gkplugin gtkembedmoz gtkxtbin htmlpars i18n imglib2 inspector \
jar50 jsd jsj mork mozfind mozjs necko necko2 nsappshell nss3 \
nssckbi oji permissions pipboot pipnss pippki pref rdf \
remoteservice searchservice smime3 softokn3 ssl3 system-pref \
toolkitcomps transformiix txmgr uconv ucvmath universalchardet \
webbrwsr websrvcs widget_gtk2 xmlextras xpcom xpcom_compat \
xpcom_compat_c xpcom_core xpconnect xpinstall xpistub xul \
addrbook bayesflt impComm4xMail impText import localmail \
mailnews mailview mime mimeemitter mozldap msgbaseutil msgcompose \
msgdb msgimap msgmdn msgnews msgsmime myspell nsprefm p3p \
profile spellchecker sroaming typeaheadfind vcard wallet walletviewers \
xremoteservice xulutil ldap50 prldap50 \
fort swft
SHARED_LIBS+= ${_lib} ${SO_VERSION}
.endfor
CATEGORIES= www mail net
HOMEPAGE= http://www.mozilla.org/projects/seamonkey/
MULTI_PACKAGES= -main -devel
# mozilla public license
PERMIT_PACKAGE_CDROM= Yes
PERMIT_PACKAGE_FTP= Yes
PERMIT_DISTFILES_CDROM= Yes
PERMIT_DISTFILES_FTP= Yes
MASTER_SITES= http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/${VER}/
MODULES= devel/gettext
BUILD_DEPENDS= :zip->=2.3:archivers/zip
RUN_DEPENDS-main= :esound-*:audio/esound
LIB_DEPENDS-main= \
gdk-x11-2.0,gdk_pixbuf-2.0,gtk-x11-2.0::x11/gtk+2 \
nspr4.>=17,plc4.>=17,plds4.>=17:nspr->=4.6.4p1:devel/nspr
WANTLIB-main= X11 Xext Xft Xinerama Xrender Xt atk-1.0 c cairo fontconfig \
freetype glib-2.0 glitz gmodule-2.0 gobject-2.0 iconv \
intl jpeg m pango-1.0 pangocairo-1.0 pangoft2-1.0 png \
pthread stdc++ z
RUN_DEPENDS-devel= :${PKGNAME-main}:www/seamonkey,-main
LIB_DEPENDS-devel= \
IDL-2::devel/libIDL \
gdk-x11-2.0,gdk_pixbuf-2.0,gtk-x11-2.0::x11/gtk+2 \
nspr4.>=17,plc4.>=17,plds4.>=17:nspr->=4.6.4p1:devel/nspr
WANTLIB-devel= X11 Xext Xrender Xt atk-1.0 c cairo fontconfig freetype \
glib-2.0 glitz gmodule-2.0 gobject-2.0 iconv intl m \
pango-1.0 pangocairo-1.0 pangoft2-1.0 png pthread z
VMEM_WARNING= Yes
USE_X11= Yes
USE_GMAKE= Yes
NO_REGRESS= Yes
MODGNU_CONFIG_GUESS_DIRS= ${WRKSRC}/build/autoconf \
${WRKSRC}/directory/c-sdk/config/autoconf
AUTOCONF_VERSION= 2.13
CONFIGURE_STYLE= autoconf no-autoheader
CONFIGURE_ARGS= --with-system-jpeg=${LOCALBASE} \
--with-system-png=${LOCALBASE} \
--with-system-zlib=/usr/lib \
--with-pthreads \
--with-system-nspr \
--enable-xft \
--enable-optimize=-Os \
--enable-default-toolkit=gtk2 \
--disable-debug \
--disable-tests \
--disable-pedantic \
--disable-installer \
--disable-updater \
--disable-gnomeui \
--disable-gnomevfs \
--enable-xinerama \
--enable-svg \
--enable-svg-renderer=cairo \
--enable-system-cairo \
--disable-javaxpcom \
--enable-canvas
# from browser/config/mozconfig
CONFIGURE_ARGS+=--enable-application=suite
MAKE_ENV= MOZ_CO_PROJECT=suite \
LD_LIBRARY_PATH="${WRKSRC}/dist/bin" \
BUILD_OFFICIAL=1 \
MOZILLA_OFFICIAL=1 \
SO_VERSION="${SO_VERSION}"
CONFIGURE_ENV= ${MAKE_ENV} \
PKG_CONFIG_PATH="${LOCALBASE}/lib/pkgconfig:${X11BASE}/lib/pkgconfig"
WRKDIST= ${WRKDIR}/mozilla
MOB= ${WRKSRC}/dist
MOZ= ${PREFIX}/seamonkey
post-extract:
@cp ${FILESDIR}/xptc* ${WRKSRC}/xpcom/reflect/xptcall/src/md/unix/
pre-configure:
@cd ${WRKSRC}/directory/c-sdk && ${SETENV} ${AUTOCONF_ENV} ${AUTOCONF}
@perl -pi -e 's|_LOCALBASE_|${LOCALBASE}|g; s|_X11BASE_|${X11BASE}|g' \
${WRKSRC}/xpfe/bootstrap/mozilla.in
@perl -pi -e 's|_SO_VERSION_|${SO_VERSION}|g' \
${WRKSRC}/xpcom/components/nsNativeComponentLoader.cpp
@echo "`date "+%Y%d%m%H%M%S"`" > ${WRKSRC}/config/build_number
do-install:
.for dir in include idl lib
${INSTALL_DATA_DIR} ${MOZ}/${dir}
@cd ${MOB} && ${TAR} -chf - ${dir} | \
${TAR} -xf - -C ${MOZ}
.endfor
@cd ${MOB}/public && ${TAR} -chf - nss | \
${TAR} -xf - -C ${MOZ}/include
.for dir in chrome components defaults greprefs searchplugins res
${INSTALL_DATA_DIR} ${MOZ}/${dir}
@cd ${MOB}/bin && ${TAR} -chf - ${dir} | \
${TAR} -xf - -C ${MOZ}
.endfor
@cd ${MOB}/bin && ${TAR} -chf - *.so.?.? | \
${TAR} -xf - -C ${MOZ}
@chmod 444 ${MOZ}/*.so.?.? ${MOZ}/components/*.so.?.? ${MOZ}/components/*.js
${INSTALL_DATA} ${WRKSRC}/LICENSE ${MOZ}
${INSTALL_SCRIPT} ${MOB}/bin/seamonkey ${MOB}/bin/seamonkey-config ${PREFIX}/bin/
${INSTALL_SCRIPT} ${MOB}/bin/run-mozilla.sh ${MOZ}
${INSTALL_PROGRAM} ${MOB}/bin/regxpcom ${MOB}/bin/seamonkey-bin ${MOB}/bin/mozilla-xremote-client ${MOB}/bin/TestGtkEmbed \
${MOB}/bin/mangle ${MOB}/bin/nsinstall ${MOB}/bin/shlibsign ${MOB}/bin/xpcshell ${MOB}/bin/xpicleanup ${MOB}/bin/xpidl \
${MOB}/bin/xpt_dump ${MOB}/bin/xpt_link ${MOZ}
${INSTALL_DATA_DIR} ${PREFIX}/share/applications
${INSTALL_DATA_DIR} ${PREFIX}/share/pixmaps
${INSTALL_DATA_DIR} ${PREFIX}/lib/pkgconfig
${INSTALL_DATA} ${WRKBUILD}/build/unix/*.pc ${PREFIX}/lib/pkgconfig
@sed -e 's,!!PREFIX!!,${TRUEPREFIX},g' \
< ${FILESDIR}/README.OpenBSD > ${MOZ}/README.OpenBSD
.include <bsd.port.mk>

4
www/seamonkey/distinfo Normal file
View File

@ -0,0 +1,4 @@
MD5 (seamonkey-1.0.7.source.tar.gz) = 947d01cb1f45ed34be3b612368f94418
RMD160 (seamonkey-1.0.7.source.tar.gz) = 3998ab4ee254c0097e7480163254a25029e39997
SHA1 (seamonkey-1.0.7.source.tar.gz) = 336839a764d030b2384dd662a29f16a18c374241
SIZE (seamonkey-1.0.7.source.tar.gz) = 46504734

View File

@ -0,0 +1,30 @@
$OpenBSD: README.OpenBSD,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
Loading of external images has been turned off by default on
OpenBSD. To turn it back on goto Edit -> Preferences -> Mail &
Newsgroups -> Message Display and enable "Allow messsages to
load and display remote images and other content". However,
it is recommended that you leave it off to avoid unwanted
internet connections and possible future exploits against
Mail & News.
To disable anti-aliasing (xft) set GDK_USE_XFT=0 in the environment.
Plugins
Seamonkey looks for plugins in ~/.mozilla/plugins,
!!PREFIX!!/lib/mozilla-plugins, and !!PREFIX!!/seamonkey/plugins.
The user environment variable MOZ_PLUGIN_PATH is not used on OpenBSD.
Using Java Applets
To make Applets work, you must symlink (not copy) the file
libjavaplugin_oji.so into one of the directories listed above.
This might be done like the following:
$ cd ~/.mozilla/plugins
$ ln -s !!PREFIX!!/jdk-1.5.0/jre/plugin/i386/ns7/libjavaplugin_oji.so .
$
Information on building Java (on some platforms) can be found in
http://www.openbsd.org/faq/faq13.html#javaflash

View File

@ -0,0 +1,116 @@
# -*- Mode: Asm -*-
#
# 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):
# Franz.Sirl-kernel@lauterbach.com (Franz Sirl)
# beard@netscape.com (Patrick Beard)
# waterson@netscape.com (Chris Waterson)
#
.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
.set r15,15; .set r16,16; .set r17,17; .set r18,18; .set r19,19
.set r20,20; .set r21,21; .set r22,22; .set r23,23; .set r24,24
.set r25,25; .set r26,26; .set r27,27; .set r28,28; .set r29,29
.set r30,30; .set r31,31
.set f0,0; .set f1,1; .set f2,2; .set f3,3; .set f4,4
.set f5,5; .set f6,6; .set f7,7; .set f8,8; .set f9,9
.set f10,10; .set f11,11; .set f12,12; .set f13,13; .set f14,14
.set f15,15; .set f16,16; .set f17,17; .set f18,18; .set f19,19
.set f20,20; .set f21,21; .set f22,22; .set f23,23; .set f24,24
.set f25,25; .set f26,26; .set f27,27; .set f28,28; .set f29,29
.set f30,30; .set f31,31
.section ".text"
.align 2
.globl XPTC_InvokeByIndex
.type XPTC_InvokeByIndex,@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
stw r30,16(sp)
stw r31,20(sp)
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
neg r0,r0
stwux r9,sp,r0 # reserve stack space 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 )
bl invoke_copy_to_stack@local # (args, paramCount, params, gpregs, fpregs)
lfd f1,32(r30) # load FP registers with method parameters
lfd f2,40(r30)
lfd f3,48(r30)
lfd f4,56(r30)
lfd f5,64(r30)
lfd f6,72(r30)
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 )
#if 0
#if !((__GNUC__ == 3 && __GNUC_MINOR__ < 2) || __GXX_ABI_VERSION >= 100) # G++ pre-V3 ABI
addi r4,r4,2 # skip first two vtable entries
#endif
#endif
subi r4,r4,2 # skip first two vtable entries
slwi r4,r4,2 # convert to offset ( *= 4 )
lwzx r0,r5,r4 # r0 <= methodpointer ( == vtable + offset )
lwz r4,4(r30) # load GP regs with method parameters
lwz r5,8(r30)
lwz r6,12(r30)
lwz r7,16(r30)
lwz r8,20(r30)
lwz r9,24(r30)
lwz r10,28(r30)
mtlr r0 # copy methodpointer to LR
blrl # call method
lwz r30,16(r31) # restore r30 & r31
lwz r31,20(r31)
lwz r11,0(sp) # clean up the stack
lwz r0,4(r11)
mtlr r0
mr sp,r11
blr

View File

@ -0,0 +1,104 @@
/* -*- Mode: asm; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 2001 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
* Stuart Parmenter <pavlov@netscape.com>
* Chris Seawood <cls@seawood.org>
*/
/*
Platform specific code to invoke XPCOM methods on native objects
for sparcv9 Solaris.
See the SPARC Compliance Definition (SCD) Chapter 3
for more information about what is going on here, including
the use of BIAS (0x7ff).
The SCD is available from http://www.sparc.com/.
*/
.global XPTC_InvokeByIndex
.type XPTC_InvokeByIndex, #function
/*
XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
PRUint32 paramCount, nsXPTCVariant* params);
*/
XPTC_InvokeByIndex:
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 %d2
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
! add %l0,16,%l0 ! there are 2 extra entries in the vTable (16bytes)
ldx [%i0],%l1 ! *that --> address of vtable
ldx [%l0 + %l1],%l0 ! that->vtable[index * 8 + 16] --> 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 XPTC_InvokeByIndex, .-XPTC_InvokeByIndex

View File

@ -0,0 +1,184 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* 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 NPL, 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 NPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* Platform specific code to invoke XPCOM methods on native objects */
/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
#include "xptcprivate.h"
/* Prototype specifies unmangled function name and disables unused warning */
static void
invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
__asm__("invoke_copy_to_stack") __attribute__((unused));
static void
invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
{
const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
for(PRUint32 i = 0; i < paramCount; i++, d++, s++)
{
if(s->IsPtrData())
{
*d = (PRUint64)s->ptr;
continue;
}
switch(s->type)
{
case nsXPTType::T_I8 : *d = (PRUint64)s->val.i8; break;
case nsXPTType::T_I16 : *d = (PRUint64)s->val.i16; break;
case nsXPTType::T_I32 : *d = (PRUint64)s->val.i32; break;
case nsXPTType::T_I64 : *d = (PRUint64)s->val.i64; break;
case nsXPTType::T_U8 : *d = (PRUint64)s->val.u8; break;
case nsXPTType::T_U16 : *d = (PRUint64)s->val.u16; break;
case nsXPTType::T_U32 : *d = (PRUint64)s->val.u32; break;
case nsXPTType::T_U64 : *d = (PRUint64)s->val.u64; break;
case nsXPTType::T_FLOAT :
if(i < NUM_ARG_REGS)
{
// convert floats to doubles if they are to be passed
// via registers so we can just deal with doubles later
union { PRUint64 u64; double d; } t;
t.d = (double)s->val.f;
*d = t.u64;
}
else
// otherwise copy to stack normally
*d = (PRUint64)s->val.u32;
break;
case nsXPTType::T_DOUBLE : *d = (PRUint64)s->val.u64; break;
case nsXPTType::T_BOOL : *d = (PRUint64)s->val.b; break;
case nsXPTType::T_CHAR : *d = (PRUint64)s->val.c; break;
case nsXPTType::T_WCHAR : *d = (PRUint64)s->val.wc; break;
default:
// all the others are plain pointer types
*d = (PRUint64)s->val.p;
break;
}
}
}
/*
* XPTC_PUBLIC_API(nsresult)
* XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
* PRUint32 paramCount, nsXPTCVariant* params, void* vt)
*/
__asm__(
"#### XPTC_InvokeByIndex ####\n"
".text\n\t"
".align 5\n\t"
".globl XPTC_InvokeByIndex\n\t"
".ent XPTC_InvokeByIndex\n"
"XPTC_InvokeByIndex:\n\t"
".frame $15,32,$26,0\n\t"
".mask 0x4008000,-32\n\t"
"ldgp $29,0($27)\n"
"$XPTC_InvokeByIndex..ng:\n\t"
"subq $30,32,$30\n\t"
"stq $26,0($30)\n\t"
"stq $15,8($30)\n\t"
"bis $30,$30,$15\n\t"
".prologue 1\n\t"
/*
* Allocate enough stack space to hold the greater of 6 or "paramCount"+1
* parameters. (+1 for "this" pointer) Room for at least 6 parameters
* is required for storage of those passed via registers.
*/
"bis $31,5,$2\n\t" /* count = MAX(5, "paramCount") */
"cmplt $2,$18,$1\n\t"
"cmovne $1,$18,$2\n\t"
"s8addq $2,16,$1\n\t" /* room for count+1 params (8 bytes each) */
"bic $1,15,$1\n\t" /* stack space is rounded up to 0 % 16 */
"subq $30,$1,$30\n\t"
"stq $16,0($30)\n\t" /* save "that" (as "this" pointer) */
"stq $17,16($15)\n\t" /* save "methodIndex" */
"addq $30,8,$16\n\t" /* pass stack pointer */
"bis $18,$18,$17\n\t" /* pass "paramCount" */
"bis $19,$19,$18\n\t" /* pass "params" */
"bsr $26,$invoke_copy_to_stack..ng\n\t" /* call invoke_copy_to_stack */
/*
* Copy the first 6 parameters to registers and remove from stack frame.
* Both the integer and floating point registers are set for each parameter
* except the first which is the "this" pointer. (integer only)
* The floating point registers are all set as doubles since the
* invoke_copy_to_stack function should have converted the floats.
*/
"ldq $16,0($30)\n\t" /* integer registers */
"ldq $17,8($30)\n\t"
"ldq $18,16($30)\n\t"
"ldq $19,24($30)\n\t"
"ldq $20,32($30)\n\t"
"ldq $21,40($30)\n\t"
"ldt $f17,8($30)\n\t" /* floating point registers */
"ldt $f18,16($30)\n\t"
"ldt $f19,24($30)\n\t"
"ldt $f20,32($30)\n\t"
"ldt $f21,40($30)\n\t"
"addq $30,48,$30\n\t" /* remove params from stack */
/*
* Call the virtual function with the constructed stack frame.
*/
"bis $16,$16,$1\n\t" /* load "this" */
"ldq $2,16($15)\n\t" /* load "methodIndex" */
"ldq $1,0($1)\n\t" /* load vtable */
#if 0
"s8addq $2,16,$2\n\t" /* vtable index = "methodIndex" * 8 + 16 */
#else
"mulq $2, 8, $2\n\t"
"addq $2, 0, $2\n\t" /* vtable index = "methodIndex" * 16 + 24 */
#endif
"addq $1,$2,$1\n\t"
"ldq $27,0($1)\n\t" /* load address of function */
"jsr $26,($27),0\n\t" /* call virtual function */
"ldgp $29,0($26)\n\t"
"bis $15,$15,$30\n\t"
"ldq $26,0($30)\n\t"
"ldq $15,8($30)\n\t"
"addq $30,32,$30\n\t"
"ret $31,($26),1\n\t"
".end XPTC_InvokeByIndex"
);

View File

@ -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;
}

View File

@ -0,0 +1,141 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 the Initial Developer are Copyright (C) 1998
* 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 NPL, 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 NPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
// Platform specific code to invoke XPCOM methods on native objects
// The purpose of XPTC_InvokeByIndex() 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
// access. The parameters for the method are read from the
// nsXPTCVariant* and prepared for th native ABI. For the Linux/PPC
// ABI this means that the first 8 integral and floating point
// parameters are passed in registers.
#include "xptcprivate.h"
// 8 integral parameters are passed in registers
#define GPR_COUNT 8
// 8 floating point parameters are passed in registers, floats are
// promoted to doubles when passed in registers
#define FPR_COUNT 8
extern "C" PRUint32
invoke_count_words(PRUint32 paramCount, nsXPTCVariant* s)
{
return PRUint32(((paramCount * 2) + 3) & ~3);
}
extern "C" void
invoke_copy_to_stack(PRUint32* d,
PRUint32 paramCount,
nsXPTCVariant* s,
PRUint32* gpregs,
double* fpregs)
{
PRUint32 gpr = 1; // skip one GP reg for 'that'
PRUint32 fpr = 0;
PRUint32 tempu32;
PRUint64 tempu64;
for(uint32 i = 0; i < paramCount; i++, s++) {
if(s->IsPtrData())
tempu32 = (PRUint32) s->ptr;
else {
switch(s->type) {
case nsXPTType::T_FLOAT: break;
case nsXPTType::T_DOUBLE: break;
case nsXPTType::T_I8: tempu32 = s->val.i8; break;
case nsXPTType::T_I16: tempu32 = s->val.i16; break;
case nsXPTType::T_I32: tempu32 = s->val.i32; break;
case nsXPTType::T_I64: tempu64 = s->val.i64; break;
case nsXPTType::T_U8: tempu32 = s->val.u8; break;
case nsXPTType::T_U16: tempu32 = s->val.u16; break;
case nsXPTType::T_U32: tempu32 = s->val.u32; break;
case nsXPTType::T_U64: tempu64 = s->val.u64; break;
case nsXPTType::T_BOOL: tempu32 = s->val.b; break;
case nsXPTType::T_CHAR: tempu32 = s->val.c; break;
case nsXPTType::T_WCHAR: tempu32 = s->val.wc; break;
default: tempu32 = (PRUint32) s->val.p; break;
}
}
if (!s->IsPtrData() && s->type == nsXPTType::T_DOUBLE) {
if (fpr < FPR_COUNT)
fpregs[fpr++] = s->val.d;
else {
if ((PRUint32) d & 4) d++; // doubles are 8-byte aligned on stack
*((double*) d) = s->val.d;
d += 2;
}
}
else if (!s->IsPtrData() && s->type == nsXPTType::T_FLOAT) {
if (fpr < FPR_COUNT)
fpregs[fpr++] = s->val.f; // if passed in registers, floats are promoted to doubles
else
*((float*) d++) = s->val.f;
}
else if (!s->IsPtrData() && (s->type == nsXPTType::T_I64
|| s->type == nsXPTType::T_U64)) {
if ((gpr + 1) < GPR_COUNT) {
if (gpr & 1) gpr++; // longlongs are aligned in odd/even register pairs, eg. r5/r6
*((PRUint64*) &gpregs[gpr]) = tempu64;
gpr += 2;
}
else {
if ((PRUint32) d & 4) d++; // longlongs are 8-byte aligned on stack
*((PRUint64*) d) = tempu64;
d += 2;
}
}
else {
if (gpr < GPR_COUNT)
gpregs[gpr++] = tempu32;
else
*d++ = tempu32;
}
}
}
extern "C"
XPTC_PUBLIC_API(nsresult)
XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
PRUint32 paramCount, nsXPTCVariant* params);

View File

@ -0,0 +1,87 @@
/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 2001 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
* Stuart Parmenter <pavlov@netscape.com>
* Chris Seawood <cls@seawood.org>
*/
/* Platform specific code to invoke XPCOM methods on native objects */
#include "xptcprivate.h"
#if !defined(__sparc) && !defined(__sparc__)
#error "This code is for Sparc only"
#endif
extern "C" PRUint64
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;
}

View File

@ -0,0 +1,89 @@
# -*- Mode: Asm -*-
#
# 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):
# Franz.Sirl-kernel@lauterbach.com (Franz Sirl)
# beard@netscape.com (Patrick Beard)
# waterson@netscape.com (Chris Waterson)
#
.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
.set r15,15; .set r16,16; .set r17,17; .set r18,18; .set r19,19
.set r20,20; .set r21,21; .set r22,22; .set r23,23; .set r24,24
.set r25,25; .set r26,26; .set r27,27; .set r28,28; .set r29,29
.set r30,30; .set r31,31
.set f0,0; .set f1,1; .set f2,2; .set f3,3; .set f4,4
.set f5,5; .set f6,6; .set f7,7; .set f8,8; .set f9,9
.set f10,10; .set f11,11; .set f12,12; .set f13,13; .set f14,14
.set f15,15; .set f16,16; .set f17,17; .set f18,18; .set f19,19
.set f20,20; .set f21,21; .set f22,22; .set f23,23; .set f24,24
.set f25,25; .set f26,26; .set f27,27; .set f28,28; .set f29,29
.set f30,30; .set f31,31
.section ".text"
.align 2
.globl SharedStub
.type SharedStub,@function
SharedStub:
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 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 f2,48(sp)
stfd f3,56(sp)
stfd f4,64(sp)
stfd f5,72(sp)
stfd f6,80(sp)
stfd f7,88(sp)
stfd f8,96(sp)
# r3 has the 'self' pointer already
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 r6,sp,8 # r6 <= gprData
addi r7,sp,40 # r7 <= fprData
bl PrepareAndDispatch@local # Go!
lwz r0,116(sp) # restore LR
mtlr r0
la sp,112(sp) # clean up the stack
blr

View File

@ -0,0 +1,269 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* 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 NPL, 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 NPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* Implement shared vtbl methods. */
/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
#include <sys/types.h>
#include <machine/cpu.h>
#include "xptcprivate.h"
/* Prototype specifies unmangled function name and disables unused warning */
static nsresult
PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
__asm__("PrepareAndDispatch") __attribute__((unused));
static nsresult
PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
{
const PRUint8 PARAM_BUFFER_COUNT = 16;
const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
nsXPTCMiniVariant* dispatchParams = NULL;
nsIInterfaceInfo* iface_info = NULL;
const nsXPTMethodInfo* info;
PRUint8 paramCount;
PRUint8 i;
nsresult result = NS_ERROR_FAILURE;
NS_ASSERTION(self,"no self");
self->GetInterfaceInfo(&iface_info);
NS_ASSERTION(iface_info,"no interface info");
iface_info->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");
// args[0] to args[NUM_ARG_REGS] hold floating point register values
PRUint64* ap = args + NUM_ARG_REGS;
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_I8 : dp->val.i8 = (PRInt8) *ap; break;
case nsXPTType::T_I16 : dp->val.i16 = (PRInt16) *ap; break;
case nsXPTType::T_I32 : dp->val.i32 = (PRInt32) *ap; break;
case nsXPTType::T_I64 : dp->val.i64 = (PRInt64) *ap; break;
case nsXPTType::T_U8 : dp->val.u8 = (PRUint8) *ap; break;
case nsXPTType::T_U16 : dp->val.u16 = (PRUint16) *ap; break;
case nsXPTType::T_U32 : dp->val.u32 = (PRUint32) *ap; break;
case nsXPTType::T_U64 : dp->val.u64 = (PRUint64) *ap; break;
case nsXPTType::T_FLOAT :
if(i < NUM_ARG_REGS)
{
// floats passed via registers are stored as doubles
// in the first NUM_ARG_REGS entries in args
dp->val.u64 = (PRUint64) args[i];
dp->val.f = (float) dp->val.d; // convert double to float
}
else
dp->val.u32 = (PRUint32) *ap;
break;
case nsXPTType::T_DOUBLE :
// doubles passed via registers are also stored
// in the first NUM_ARG_REGS entries in args
dp->val.u64 = (i < NUM_ARG_REGS) ? args[i] : *ap;
break;
case nsXPTType::T_BOOL : dp->val.b = (PRBool) *ap; break;
case nsXPTType::T_CHAR : dp->val.c = (char) *ap; break;
case nsXPTType::T_WCHAR : dp->val.wc = (PRUnichar) *ap; 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;
}
/*
* SharedStub()
* Collects arguments and calls PrepareAndDispatch. The "methodIndex" is
* passed to this function via $1 to preserve the argument registers.
*/
__asm__(
"#### SharedStub ####\n"
".text\n\t"
".align 5\n\t"
".ent SharedStub\n"
"SharedStub:\n\t"
".frame $30,96,$26,0\n\t"
".mask 0x4000000,-96\n\t"
"ldgp $29,0($27)\n"
"$SharedStub..ng:\n\t"
"subq $30,96,$30\n\t"
"stq $26,0($30)\n\t"
".prologue 1\n\t"
/*
* Store arguments passed via registers to the stack.
* Floating point registers are stored as doubles and converted
* to floats in PrepareAndDispatch if necessary.
*/
"stt $f17,16($30)\n\t" /* floating point registers */
"stt $f18,24($30)\n\t"
"stt $f19,32($30)\n\t"
"stt $f20,40($30)\n\t"
"stt $f21,48($30)\n\t"
"stq $17,56($30)\n\t" /* integer registers */
"stq $18,64($30)\n\t"
"stq $19,72($30)\n\t"
"stq $20,80($30)\n\t"
"stq $21,88($30)\n\t"
/*
* Call PrepareAndDispatch function.
*/
"bis $1,$1,$17\n\t" /* pass "methodIndex" */
"addq $30,16,$18\n\t" /* pass "args" */
"bsr $26,$PrepareAndDispatch..ng\n\t"
"ldq $26,0($30)\n\t"
"addq $30,96,$30\n\t"
"ret $31,($26),1\n\t"
".end SharedStub"
);
#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
/*
* nsresult nsXPTCStubBase::Stub##n()
* Sets register $1 to "methodIndex" and jumps to SharedStub.
*/
#define STUB_ENTRY(n) \
__asm__( \
"#### Stub"#n" ####\n" \
".text\n\t" \
".align 5\n\t" \
".globl _ZN14nsXPTCStubBase5Stub"#n"Ev\n\t" \
".ent _ZN14nsXPTCStubBase5Stub"#n"Ev\n" \
"_ZN14nsXPTCStubBase5Stub"#n"Ev:\n\t" \
".frame $30,0,$26,0\n\t" \
"ldgp $29,0($27)\n" \
"$_ZN14nsXPTCStubBase5Stub"#n"Ev..ng:\n\t" \
".prologue 1\n\t" \
"lda $1,"#n"\n\t" \
"br $31,$SharedStub..ng\n\t" \
".end _ZN14nsXPTCStubBase5Stub"#n"Ev" \
); \
__asm__( \
"#### Stub"#n" ####\n" \
".text\n\t" \
".align 5\n\t" \
".globl _ZN14nsXPTCStubBase6Stub"#n"Ev\n\t" \
".ent _ZN14nsXPTCStubBase6Stub"#n"Ev\n" \
"_ZN14nsXPTCStubBase6Stub"#n"Ev:\n\t" \
".frame $30,0,$26,0\n\t" \
"ldgp $29,0($27)\n" \
"$_ZN14nsXPTCStubBase6Stub"#n"Ev..ng:\n\t" \
".prologue 1\n\t" \
"lda $1,"#n"\n\t" \
"br $31,$SharedStub..ng\n\t" \
".end _ZN14nsXPTCStubBase6Stub"#n"Ev" \
); \
__asm__( \
"#### Stub"#n" ####\n" \
".text\n\t" \
".align 5\n\t" \
".globl _ZN14nsXPTCStubBase7Stub"#n"Ev\n\t" \
".ent _ZN14nsXPTCStubBase7Stub"#n"Ev\n" \
"_ZN14nsXPTCStubBase7Stub"#n"Ev:\n\t" \
".frame $30,0,$26,0\n\t" \
"ldgp $29,0($27)\n" \
"$_ZN14nsXPTCStubBase7Stub"#n"Ev..ng:\n\t" \
".prologue 1\n\t" \
"lda $1,"#n"\n\t" \
"br $31,$SharedStub..ng\n\t" \
".end _ZN14nsXPTCStubBase7Stub"#n"Ev" \
);
#else
/*
* nsresult nsXPTCStubBase::Stub##n()
* Sets register $1 to "methodIndex" and jumps to SharedStub.
*/
#define STUB_ENTRY(n) \
nsresult nsXPTCStubBase::Stub##n() \
{ \
nsresult result; \
__asm__ __volatile__( \
"ldah $29,0($27)\n\t" \
"lda $29,0($29)\n\t" \
"lda $1, "#n"\n\t" \
"br $31, $SharedStub..ng\n\t" \
"mov $0, %0\n\t" \
: "=r" (result) \
); \
return result; \
}
#endif
#define SENTINEL_ENTRY(n) \
nsresult nsXPTCStubBase::Sentinel##n() \
{ \
NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
return NS_ERROR_NOT_IMPLEMENTED; \
}
#include "xptcstubsdef.inc"

View File

@ -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__ */

View File

@ -0,0 +1,253 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
*
* 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 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 NPL, 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 NPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
// Implement shared vtbl methods.
#include "xptcprivate.h"
// The Linux/PPC ABI (aka PPC/SYSV ABI) passes the first 8 integral
// parameters and the first 8 floating point parameters in registers
// (r3-r10 and f1-f8), no stack space is allocated for these by the
// caller. The rest of the parameters are passed in the callers stack
// area. The stack pointer has to retain 16-byte alignment, longlongs
// and doubles are aligned on 8-byte boundaries.
#define PARAM_BUFFER_COUNT 16
#define GPR_COUNT 8
#define FPR_COUNT 8
// PrepareAndDispatch() is called by SharedStub() and calls the actual method.
//
// - 'args[]' contains the arguments passed on stack
// - 'gprData[]' contains the arguments passed in integer registers
// - 'fprData[]' 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,
PRUint32* args,
PRUint32 *gprData,
double *fprData)
{
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;
PRUint32* ap = args;
PRUint32 gpr = 1; // skip one GPR register
PRUint32 fpr = 0;
PRUint32 tempu32;
PRUint64 tempu64;
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 (fpr < FPR_COUNT)
dp->val.d = fprData[fpr++];
else {
if ((PRUint32) ap & 4) ap++; // doubles are 8-byte aligned on stack
dp->val.d = *(double*) ap;
ap += 2;
}
continue;
}
else if (!param.IsOut() && type == nsXPTType::T_FLOAT) {
if (fpr < FPR_COUNT)
dp->val.f = (float) fprData[fpr++]; // in registers floats are passed as doubles
else
dp->val.f = *(float*) ap++;
continue;
}
else if (!param.IsOut() && (type == nsXPTType::T_I64
|| type == nsXPTType::T_U64)) {
if (gpr & 1) gpr++; // longlongs are aligned in odd/even register pairs, eg. r5/r6
if ((gpr + 1) < GPR_COUNT) {
tempu64 = *(PRUint64*) &gprData[gpr];
gpr += 2;
}
else {
if ((PRUint32) ap & 4) ap++; // longlongs are 8-byte aligned on stack
tempu64 = *(PRUint64*) ap;
ap += 2;
}
}
else {
if (gpr < GPR_COUNT)
tempu32 = gprData[gpr++];
else
tempu32 = *ap++;
}
if(param.IsOut() || !type.IsArithmetic()) {
dp->val.p = (void*) tempu32;
continue;
}
switch(type) {
case nsXPTType::T_I8: dp->val.i8 = (PRInt8) tempu32; break;
case nsXPTType::T_I16: dp->val.i16 = (PRInt16) tempu32; break;
case nsXPTType::T_I32: dp->val.i32 = (PRInt32) tempu32; break;
case nsXPTType::T_I64: dp->val.i64 = (PRInt64) tempu64; break;
case nsXPTType::T_U8: dp->val.u8 = (PRUint8) tempu32; break;
case nsXPTType::T_U16: dp->val.u16 = (PRUint16) tempu32; break;
case nsXPTType::T_U32: dp->val.u32 = (PRUint32) tempu32; break;
case nsXPTType::T_U64: dp->val.u64 = (PRUint64) tempu64; break;
case nsXPTType::T_BOOL: dp->val.b = (PRBool) tempu32; break;
case nsXPTType::T_CHAR: dp->val.c = (char) tempu32; break;
case nsXPTType::T_WCHAR: dp->val.wc = (wchar_t) tempu32; 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;
}
// Load r11 with the constant 'n' and branch to SharedStub().
//
// XXX Yes, it's ugly that we're relying on gcc's name-mangling here;
// however, it's quick, dirty, and'll break when the ABI changes on
// us, which is what we want ;-).
#if __GXX_ABI_VERSION < 100
// gcc-2 version
# define STUB_ENTRY(n) \
__asm__ ( \
".section \".text\" \n\t" \
".align 2 \n\t" \
".globl Stub"#n"__14nsXPTCStubBase \n\t" \
".type Stub"#n"__14nsXPTCStubBase,@function \n\n" \
\
"Stub"#n"__14nsXPTCStubBase: \n\t" \
"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() \
{ \
NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
return NS_ERROR_NOT_IMPLEMENTED; \
}
#include "xptcstubsdef.inc"

View File

@ -0,0 +1,123 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 2001 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
* Stuart Parmenter <pavlov@netscape.com>
*/
/* Implement shared vtbl methods. */
#include "xptcprivate.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;
nsIInterfaceInfo* iface_info = NULL;
const nsXPTMethodInfo* info;
PRUint8 paramCount;
PRUint8 i;
nsresult result = NS_ERROR_FAILURE;
NS_ASSERTION(self,"no self");
self->GetInterfaceInfo(&iface_info);
NS_ASSERTION(iface_info,"no interface info");
iface_info->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");
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->CallMethod((PRUint16)methodIndex, info, dispatchParams);
NS_RELEASE(iface_info);
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__ */

View File

@ -0,0 +1,18 @@
$OpenBSD: patch-build_autoconf_altoptions_m4,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- build/autoconf/altoptions.m4.orig Sun Apr 18 16:17:09 2004
+++ build/autoconf/altoptions.m4 Sat Sep 10 09:47:31 2005
@@ -143,14 +143,3 @@ echo "
[$3]
fi
])
-
-dnl MOZ_READ_MYCONFIG() - Read in 'myconfig.sh' file
-AC_DEFUN(MOZ_READ_MOZCONFIG,
-[AC_REQUIRE([AC_INIT_BINSH])dnl
-# Read in '.mozconfig' script to set the initial options.
-# See the mozconfig2configure script for more details.
-_AUTOCONF_TOOLS_DIR=`dirname [$]0`/[$1]/build/autoconf
-. $_AUTOCONF_TOOLS_DIR/mozconfig2configure])
-
-dnl This gets inserted at the top of the configure script
-MOZ_READ_MOZCONFIG(MOZ_TOPSRCDIR)

View File

@ -0,0 +1,29 @@
$OpenBSD: patch-config_autoconf_mk_in,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- config/autoconf.mk.in.orig Fri Apr 21 23:50:30 2006
+++ config/autoconf.mk.in Thu Dec 21 23:22:21 2006
@@ -56,13 +56,13 @@ MOZ_PKG_SPECIAL = @MOZ_PKG_SPECIAL@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
-includedir = @includedir@/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+includedir = $(prefix)/seamonkey/include
libdir = @libdir@
datadir = @datadir@
mandir = @mandir@
-idldir = @datadir@/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+idldir = $(prefix)/seamonkey/idl
-mozappdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+mozappdir = $(prefix)/seamonkey
mredir = $(libdir)/mre/mre-$(MOZ_APP_VERSION)
mrelibdir = $(mredir)/lib
@@ -242,7 +242,7 @@ OS_LDFLAGS = @LDFLAGS@
OS_COMPILE_CFLAGS = $(OS_CPPFLAGS) @COMPILE_CFLAGS@
OS_COMPILE_CXXFLAGS = $(OS_CPPFLAGS) @COMPILE_CXXFLAGS@
-OS_INCLUDES = $(NSPR_CFLAGS) $(JPEG_CFLAGS) $(PNG_CFLAGS) $(ZLIB_CFLAGS)
+OS_INCLUDES = $(NSPR_CFLAGS) $(FT2_CFLAGS) $(LIBIDL_CFLAGS) $(JPEG_CFLAGS) $(PNG_CFLAGS) $(ZLIB_CFLAGS)
OS_LIBS = @LIBS@
ACDEFINES = @MOZ_DEFINES@

View File

@ -0,0 +1,13 @@
$OpenBSD: patch-config_mkdepend_imakemdep_h,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- config/mkdepend/imakemdep.h.orig Tue Apr 20 23:38:14 2004
+++ config/mkdepend/imakemdep.h Sat Sep 10 09:47:31 2005
@@ -440,6 +440,9 @@ char *cpp_argv[ARGUMENTS] = {
# ifdef __i386__
"-D__i386__",
# endif
+# if defined(__amd64__) || defined(__x86_64__)
+ "-D__amd64__ -D__x86_64__",
+# endif
# ifdef __GNUC__
"-traditional",
# endif

View File

@ -0,0 +1,71 @@
$OpenBSD: patch-config_rules_mk,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- config/rules.mk.orig Tue Oct 11 01:16:39 2005
+++ config/rules.mk Thu Nov 3 10:44:13 2005
@@ -667,7 +667,7 @@ ifdef SHARED_LIBRARY
ifdef IS_COMPONENT
ifdef GRE_MODULE
ifndef DISABLE_DIST_GRE
- $(INSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(GRE_DIST)/components
+ $(INSTALL) $(IFLAGS1) $(SHARED_LIBRARY) $(GRE_DIST)/components
$(ELF_DYNSTR_GC) $(GRE_DIST)/components/$(SHARED_LIBRARY)
ifdef BEOS_ADDON_WORKAROUND
( cd $(GRE_DIST)/components && $(CC) -nostart -o $(SHARED_LIBRARY).stub $(SHARED_LIBRARY) )
@@ -675,7 +675,7 @@ endif
endif
endif # GRE_MODULE
ifndef _SKIP_OLD_GRE_INSTALL
- $(INSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(FINAL_TARGET)/components
+ $(INSTALL) $(IFLAGS1) $(SHARED_LIBRARY) $(FINAL_TARGET)/components
$(ELF_DYNSTR_GC) $(FINAL_TARGET)/components/$(SHARED_LIBRARY)
ifdef BEOS_ADDON_WORKAROUND
( cd $(FINAL_TARGET)/components && $(CC) -nostart -o $(SHARED_LIBRARY).stub $(SHARED_LIBRARY) )
@@ -684,7 +684,7 @@ endif # ! _SKIP_OLD_GRE_INSTALL
else # ! IS_COMPONENT
ifdef GRE_MODULE
ifndef DISABLE_DIST_GRE
- $(INSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(GRE_DIST)
+ $(INSTALL) $(IFLAGS1) $(SHARED_LIBRARY) $(GRE_DIST)
ifdef BEOS_ADDON_WORKAROUND
( cd $(GRE_DIST) && $(CC) -nostart -o $(SHARED_LIBRARY).stub $(SHARED_LIBRARY) )
endif
@@ -694,10 +694,10 @@ endif # GRE_MODULE
ifneq (,$(filter OS2 WINNT WINCE,$(OS_ARCH)))
$(INSTALL) $(IFLAGS2) $(IMPORT_LIBRARY) $(DIST)/lib
else
- $(INSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(DIST)/lib
+ $(INSTALL) $(IFLAGS1) $(SHARED_LIBRARY) $(DIST)/lib
endif
ifndef _SKIP_OLD_GRE_INSTALL
- $(INSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(FINAL_TARGET)
+ $(INSTALL) $(IFLAGS1) $(SHARED_LIBRARY) $(FINAL_TARGET)
ifdef BEOS_ADDON_WORKAROUND
( cd $(FINAL_TARGET) && $(CC) -nostart -o $(SHARED_LIBRARY).stub $(SHARED_LIBRARY) )
endif
@@ -765,15 +765,15 @@ ifndef NO_INSTALL
ifdef SHARED_LIBRARY
ifdef IS_COMPONENT
ifdef MRE_DIST
- $(SYSINSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(IMPORT_LIBRARY) $(DESTDIR)$(mredir)/components
+ $(SYSINSTALL) $(IFLAGS1) $(SHARED_LIBRARY) $(IMPORT_LIBRARY) $(DESTDIR)$(mredir)/components
else
- $(SYSINSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(IMPORT_LIBRARY) $(DESTDIR)$(mozappdir)/components
+ $(SYSINSTALL) $(IFLAGS1) $(SHARED_LIBRARY) $(IMPORT_LIBRARY) $(DESTDIR)$(mozappdir)/components
endif
else
ifdef MRE_DIST
- $(SYSINSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(IMPORT_LIBRARY) $(DESTDIR)$(mredir)
+ $(SYSINSTALL) $(IFLAGS1) $(SHARED_LIBRARY) $(IMPORT_LIBRARY) $(DESTDIR)$(mredir)
else
- $(SYSINSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(IMPORT_LIBRARY) $(DESTDIR)$(mozappdir)
+ $(SYSINSTALL) $(IFLAGS1) $(SHARED_LIBRARY) $(IMPORT_LIBRARY) $(DESTDIR)$(mozappdir)
endif
endif
endif # SHARED_LIBRARY
@@ -1043,7 +1043,6 @@ endif # NO_LD_ARCHIVE_FLAGS
else # os2 vacpp
$(MKSHLIB) -O:$@ -DLL -INC:_dllentry $(LDFLAGS) $(OBJS) $(LOBJS) $(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE)
endif # !os2 vacpp
- chmod +x $@
ifndef NO_COMPONENT_LINK_MAP
ifndef MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS
ifndef MOZ_DEBUG

View File

@ -0,0 +1,43 @@
$OpenBSD: patch-configure_in,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- configure.in.orig Wed Dec 13 16:57:25 2006
+++ configure.in Wed Dec 13 17:30:17 2006
@@ -1291,9 +1291,9 @@ dnl Get mozilla version from central mil
MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
dnl Get version of various core apps from the version files.
-FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
-THUNDERBIRD_VERSION=`cat $topsrcdir/mail/config/version.txt`
-SEAMONKEY_VERSION=`cat $topsrcdir/xpfe/bootstrap/version.txt`
+FIREFOX_VERSION=`cat ./browser/config/version.txt`
+THUNDERBIRD_VERSION=`cat ./mail/config/version.txt`
+SEAMONKEY_VERSION=`cat ./xpfe/bootstrap/version.txt`
AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
@@ -1863,7 +1863,7 @@ case "$target" in
;;
*-openbsd*)
- DLL_SUFFIX=".so.1.0"
+ DLL_SUFFIX=".so.${SO_VERSION}"
DSO_CFLAGS=''
DSO_PIC_CFLAGS='-fPIC'
DSO_LDOPTS='-shared -fPIC'
@@ -3647,7 +3647,7 @@ _SAVE_LIBS=$LIBS
CFLAGS="$ZLIB_CFLAGS $CFLAGS"
LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
- CFLAGS="-I${PNG_DIR}/include $CFLAGS"
+ CFLAGS="-I${PNG_DIR}/include/libpng $CFLAGS"
LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
fi
if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
@@ -3677,7 +3677,7 @@ LDFLAGS=$_SAVE_LDFLAGS
LIBS=$_SAVE_LIBS
if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
- PNG_CFLAGS="-I${PNG_DIR}/include"
+ PNG_CFLAGS="-I${PNG_DIR}/include/libpng"
PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
fi

View File

@ -0,0 +1,16 @@
$OpenBSD: patch-directory_c-sdk_build_mk,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- directory/c-sdk/build.mk.orig Tue Jun 14 23:27:32 2005
+++ directory/c-sdk/build.mk Sat Sep 10 09:08:27 2005
@@ -411,10 +411,10 @@ else
LINK_LIB = $(RM) $@; $(AR) $(AR_FLAGS) $(OBJS); $(RANLIB) $@
LINK_LIB2 = $(RM) $@; $(AR) $@ $(OBJS2); $(RANLIB) $@
ifdef SONAMEFLAG_PREFIX
-LINK_DLL = $(LD) $(DSO_LDOPTS) $(ALDFLAGS) $(DLL_LDFLAGS) $(DLL_EXPORT_FLAGS) \
+LINK_DLL = $(CC) $(DSO_LDOPTS) $(ALDFLAGS) $(DLL_LDFLAGS) $(DLL_EXPORT_FLAGS) \
-o $@ $(SONAMEFLAG_PREFIX)$(notdir $@) $(OBJS)
else # SONAMEFLAG_PREFIX
-LINK_DLL = $(LD) $(DSO_LDOPTS) $(ALDFLAGS) $(DLL_LDFLAGS) $(DLL_EXPORT_FLAGS) \
+LINK_DLL = $(CC) $(DSO_LDOPTS) $(ALDFLAGS) $(DLL_LDFLAGS) $(DLL_EXPORT_FLAGS) \
-o $@ $(OBJS)
endif # SONAMEFLAG_PREFIX
endif #!os2

View File

@ -0,0 +1,37 @@
$OpenBSD: patch-directory_c-sdk_config_OpenBSD_mk,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- directory/c-sdk/config/OpenBSD.mk.orig Tue Mar 26 22:51:50 2002
+++ directory/c-sdk/config/OpenBSD.mk Thu Apr 7 22:33:31 2005
@@ -37,8 +37,8 @@
include $(MOD_DEPTH)/config/UNIX.mk
-CC = gcc
-CCC = g++
+CC = ${CC}
+CCC = ${CXX}
RANLIB = ranlib
OS_REL_CFLAGS =
@@ -59,20 +59,9 @@ endif
ARCH = openbsd
-DLL_SUFFIX = so.1.0
+DLL_SUFFIX = so.${SO_VERSION}
DSO_CFLAGS = -fPIC
-DSO_LDOPTS = -Bshareable
-ifeq ($(OS_TEST),alpha)
DSO_LDOPTS = -shared
-endif
-ifeq ($(OS_TEST),mips)
-DSO_LDOPTS = -shared
-endif
-ifeq ($(OS_TEST),pmax)
-DSO_LDOPTS = -shared
-endif
-MKSHLIB = $(LD) $(DSO_LDOPTS)
-
-G++INCLUDES = -I/usr/include/g++
+MKSHLIB = $(CC) $(DSO_LDOPTS)

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-directory_c-sdk_config_rules_mk,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- directory/c-sdk/config/rules.mk.orig 2004-02-15 11:03:01.000000000 +0100
+++ directory/c-sdk/config/rules.mk 2004-02-15 11:18:42.000000000 +0100
@@ -225,7 +225,7 @@ ifdef RELEASE_HEADERS
$(NSINSTALL) -t -m 0644 $(RELEASE_HEADERS) $(DESTDIR)$(includedir)
endif
ifdef RELEASE_LIBS
- $(NSINSTALL) -t -m 0755 $(RELEASE_LIBS) $(DESTDIR)$(libdir)
+ $(NSINSTALL) -t -m 0444 $(RELEASE_LIBS) $(DESTDIR)$(libdir)
endif
+$(LOOP_OVER_DIRS)

View File

@ -0,0 +1,27 @@
$OpenBSD: patch-directory_c-sdk_configure_in,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- directory/c-sdk/configure.in.orig Wed Feb 22 18:58:25 2006
+++ directory/c-sdk/configure.in Wed Dec 13 16:57:25 2006
@@ -1573,19 +1573,16 @@ mips-sony-newsos*)
AC_DEFINE(XP_UNIX)
AC_DEFINE(OPENBSD)
AC_DEFINE(HAVE_BSD_FLOCK)
+ AC_DEFINE(HAVE_SOCKLEN_T)
CFLAGS="$CFLAGS -ansi -Wall"
CXXFLAGS="$CXXFLAGS -ansi -Wall"
- DLL_SUFFIX=so.1.0
+ DLL_SUFFIX="so.${SO_VERSION}"
DSO_CFLAGS=-fPIC
MDCPUCFG_H=_openbsd.cfg
PR_MD_CSRCS=openbsd.c
USE_NSPR_THREADS=1
- case "$OS_TEST" in
- alpha|mips|pmax)
- DSO_LDOPTS=-shared ;;
- *)
- DSO_LDOPTS=-Bshareable ;;
- esac
+ DSO_LDOPTS='-shared -fPIC'
+ MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
;;
*-openvms*)

View File

@ -0,0 +1,29 @@
$OpenBSD: patch-extensions_transformiix_source_base_Double_cpp,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- extensions/transformiix/source/base/Double.cpp.orig Thu Jun 17 02:12:42 2004
+++ extensions/transformiix/source/base/Double.cpp Sat Sep 10 09:47:31 2005
@@ -115,17 +115,19 @@ typedef union txdpun {
#define TX_DOUBLE_HI32_EXPMASK 0x7ff00000
#define TX_DOUBLE_HI32_MANTMASK 0x000fffff
+#define STRICT_ALIGN __attribute__ ((aligned (8)))
+
//-- Initialize Double related constants
#ifdef IS_BIG_ENDIAN
-const PRUint32 nanMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK,
+const PRUint32 nanMask[2] STRICT_ALIGN = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK,
0xffffffff};
-const PRUint32 infMask[2] = {TX_DOUBLE_HI32_EXPMASK, 0};
-const PRUint32 negInfMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0};
+const PRUint32 infMask[2] STRICT_ALIGN = {TX_DOUBLE_HI32_EXPMASK, 0};
+const PRUint32 negInfMask[2] STRICT_ALIGN = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0};
#else
-const PRUint32 nanMask[2] = {0xffffffff,
+const PRUint32 nanMask[2] STRICT_ALIGN = {0xffffffff,
TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK};
-const PRUint32 infMask[2] = {0, TX_DOUBLE_HI32_EXPMASK};
-const PRUint32 negInfMask[2] = {0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT};
+const PRUint32 infMask[2] STRICT_ALIGN = {0, TX_DOUBLE_HI32_EXPMASK};
+const PRUint32 negInfMask[2] STRICT_ALIGN = {0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT};
#endif
const double Double::NaN = *((double*)nanMask);

View File

@ -0,0 +1,27 @@
$OpenBSD: patch-gfx_src_ps_nsFontMetricsPS_cpp,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- gfx/src/ps/nsFontMetricsPS.cpp.orig Fri Oct 6 19:26:54 2006
+++ gfx/src/ps/nsFontMetricsPS.cpp Wed Nov 8 10:28:51 2006
@@ -1044,8 +1044,10 @@ nsFontPSXft::Init(nsXftEntry* aEntry,
nsFontPSXft::~nsFontPSXft()
{
- if (mEntry->mFace)
+ if (mEntry->mFace) {
FT_Done_Face(mEntry->mFace);
+ mEntry->mFace = nsnull;
+ }
if (FT_Done_FreeType(mFreeTypeLibrary))
return;
@@ -2336,8 +2338,10 @@ nsXftType1Generator::Init(nsXftEntry* aE
nsXftType1Generator::~nsXftType1Generator()
{
- if (mEntry->mFace)
+ if (mEntry->mFace) {
FT_Done_Face(mEntry->mFace);
+ mEntry->mFace = nsnull;
+ }
if (FT_Done_FreeType(mFreeTypeLibrary))
return;

View File

@ -0,0 +1,11 @@
--- js/src/xpconnect/shell/Makefile.in.orig Tue Apr 5 08:35:51 2005
+++ js/src/xpconnect/shell/Makefile.in Wed Dec 13 17:56:25 2006
@@ -56,6 +56,8 @@ REQUIRES = xpconnect \
CPPSRCS = xpcshell.cpp
LIBS = \
+ -Wl,-rpath-link,/usr/local/lib/ \
+ -Wl,-rpath-link,$(X11BASE)/lib/ \
$(MOZ_JS_LIBS) \
$(XPCOM_LIBS) \
$(NSPR_LIBS) \

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-mailnews_mailnews_js,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- mailnews/mailnews.js.orig Tue Dec 19 13:48:12 2006
+++ mailnews/mailnews.js Tue Dec 19 13:48:22 2006
@@ -626,7 +626,7 @@ pref("mailnews.fakeaccount.show", false)
pref("mailnews.fakeaccount.server", "");
// message display properties
-pref("mailnews.message_display.disable_remote_image", false);
+pref("mailnews.message_display.disable_remote_image", true);
pref("mailnews.message_display.allow.plugins", false);
// default msg compose font prefs

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-mailnews_mime_src_mimemsg_cpp,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- mailnews/mime/src/mimemsg.cpp.orig Wed Dec 13 17:59:47 2006
+++ mailnews/mime/src/mimemsg.cpp Wed Dec 13 17:59:59 2006
@@ -522,7 +522,7 @@ MimeMessage_close_headers (MimeObject *o
{
PRUint32 flags = 0;
char dummy = 0;
- if (sscanf(xmoz, " %lx %c", &flags, &dummy) == 1 &&
+ if (sscanf(xmoz, " %x %c", &flags, &dummy) == 1 &&
flags & MSG_FLAG_PARTIAL)
{
obj->options->html_closure = obj;

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-modules_libpref_src_init_all_js,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- modules/libpref/src/init/all.js.orig Sat Aug 19 00:12:03 2006
+++ modules/libpref/src/init/all.js Fri Sep 15 07:41:32 2006
@@ -2051,7 +2051,7 @@ pref("font.scale.outline.min", 6);
// TrueType
pref("font.FreeType2.enable", false);
-pref("font.freetype2.shared-library", "libfreetype.so.6");
+pref("font.freetype2.shared-library", "libfreetype.so");
// if libfreetype was built without hinting compiled in
// it is best to leave hinting off
pref("font.FreeType2.autohinted", false);

View File

@ -0,0 +1,24 @@
$OpenBSD: patch-modules_plugin_base_public_nptypes_h,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- modules/plugin/base/public/nptypes.h.orig Thu May 19 23:49:42 2005
+++ modules/plugin/base/public/nptypes.h Sat Sep 10 09:27:13 2005
@@ -67,10 +67,8 @@
/*
* BSD/OS ships no header that defines uint32_t, nor bool (for C)
- * OpenBSD ships no header that defines uint32_t and using its bool macro is
- * unsafe.
*/
- #if defined(bsdi) || defined(OPENBSD)
+ #if defined(bsdi)
typedef u_int32_t uint32_t;
#if !defined(__cplusplus)
@@ -78,7 +76,7 @@
#endif
#else
/*
- * FreeBSD defines uint32_t and bool.
+ * FreeBSD, and OpenBSD defines uint32_t and bool.
*/
#include <inttypes.h>
#include <stdbool.h>

View File

@ -0,0 +1,40 @@
$OpenBSD: patch-security_coreconf_OpenBSD_mk,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- security/coreconf/OpenBSD.mk.orig Sun Apr 25 11:02:17 2004
+++ security/coreconf/OpenBSD.mk Mon Nov 6 16:39:58 2006
@@ -37,12 +37,12 @@
include $(CORE_DEPTH)/coreconf/UNIX.mk
-DEFAULT_COMPILER = gcc
-CC = gcc
-CCC = g++
+DEFAULT_COMPILER = ${CC}
+#CC = ${CC}
+CCC = ${CXX}
RANLIB = ranlib
-CPU_ARCH := $(shell uname -p)
+CPU_ARCH := $(shell arch -s)
ifeq ($(CPU_ARCH),i386)
OS_REL_CFLAGS = -Di386
CPU_ARCH = x86
@@ -55,7 +55,7 @@ OS_LIBS += -pthread
DSO_LDOPTS += -pthread
endif
-DLL_SUFFIX = so.1.0
+DLL_SUFFIX = so.${SO_VERSION}
OS_CFLAGS = $(DSO_CFLAGS) $(OS_REL_CFLAGS) -ansi -Wall -pipe -DOPENBSD
@@ -64,8 +64,9 @@ OS_LIBS =
ARCH = openbsd
DSO_CFLAGS = -fPIC -DPIC
-DSO_LDOPTS = -shared -Wl,-soname,lib$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX)
+DSO_LDOPTS = -shared -fPIC -Wl,-soname,lib$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX)
DSO_LDFLAGS =
MKSHLIB = $(CC) $(DSO_LDOPTS)
+NSPR_LIBS = $(shell pkg-config --libs nspr)

View File

@ -0,0 +1,11 @@
$OpenBSD: patch-security_coreconf_rules_mk,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- security/coreconf/rules.mk.orig Fri Apr 15 02:36:28 2005
+++ security/coreconf/rules.mk Sat Sep 10 09:47:32 2005
@@ -352,7 +352,6 @@ ifdef XP_OS2_VACPP
else
$(MKSHLIB) -o $@ $(OBJS) $(SUB_SHLOBJS) $(LD_LIBS) $(EXTRA_LIBS) $(EXTRA_SHARED_LIBS)
endif
- chmod +x $@
ifeq ($(OS_TARGET),Darwin)
ifdef MAPFILE
nmedit -s $(MAPFILE) $@

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-security_manager_Makefile_in,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- security/manager/Makefile.in.orig Mon Nov 6 14:42:50 2006
+++ security/manager/Makefile.in Mon Nov 6 14:41:57 2006
@@ -79,7 +79,7 @@ endif
# NSS makefiles are not safe for parallel execution.
DEFAULT_GMAKE_FLAGS = MAKE="$(MAKE) -j1" -j1
DEFAULT_GMAKE_FLAGS += CC="$(CC)"
-DEFAULT_GMAKE_FLAGS += MOZILLA_INCLUDES="-I$(MOZ_BUILD_ROOT)/dist/include/nspr -I$(MOZ_BUILD_ROOT)/dist/include/dbm"
+DEFAULT_GMAKE_FLAGS += MOZILLA_INCLUDES="$(NSPR_CFLAGS) -I$(MOZ_BUILD_ROOT)/dist/include/dbm"
DEFAULT_GMAKE_FLAGS += SOURCE_MD_DIR=$(MOZ_BUILD_ROOT)/dist
DEFAULT_GMAKE_FLAGS += DIST=$(MOZ_BUILD_ROOT)/dist
DEFAULT_GMAKE_FLAGS += MOZILLA_CLIENT=1

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-security_nss_Makefile,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- security/nss/Makefile.orig Mon Nov 6 14:33:02 2006
+++ security/nss/Makefile Mon Nov 6 14:33:51 2006
@@ -78,7 +78,7 @@ include $(CORE_DEPTH)/coreconf/rules.mk
# (7) Execute "local" rules. (OPTIONAL). #
#######################################################################
-nss_build_all: build_coreconf build_nspr build_dbm all
+nss_build_all: build_coreconf build_dbm all
build_coreconf:
cd $(CORE_DEPTH)/coreconf ; $(MAKE)

View File

@ -0,0 +1,13 @@
$OpenBSD: patch-security_nss_cmd_pkiutil_platlibs_mk,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- security/nss/cmd/pkiutil/platlibs.mk.orig Mon Nov 6 18:34:15 2006
+++ security/nss/cmd/pkiutil/platlibs.mk Mon Nov 6 18:34:40 2006
@@ -50,8 +50,6 @@ EXTRA_SHARED_LIBS += \
-L$(DIST)/lib/ \
-lnsspki3 \
-lnss3 \
- -lplc4 \
- -lplds4 \
- -lnspr4 \
+ $(NSPR_LIBS) \
$(NULL)

View File

@ -0,0 +1,26 @@
$OpenBSD: patch-security_nss_cmd_platlibs_mk,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- security/nss/cmd/platlibs.mk.orig Mon Nov 6 17:57:12 2006
+++ security/nss/cmd/platlibs.mk Mon Nov 6 21:13:35 2006
@@ -136,10 +136,7 @@ EXTRA_SHARED_LIBS += \
$(NULL)
else
EXTRA_SHARED_LIBS += \
- -L$(DIST)/lib \
- -lplc4 \
- -lplds4 \
- -lnspr4 \
+ $(NSPR_LIBS) \
$(NULL)
endif
endif
@@ -222,9 +219,7 @@ EXTRA_SHARED_LIBS += \
-lssl3 \
-lsmime3 \
-lnss3 \
- -lplc4 \
- -lplds4 \
- -lnspr4 \
+ $(NSPR_LIBS) \
$(NULL)
JAR_LIBS = $(DIST)/lib/$(LIB_PREFIX)jar.$(LIB_SUFFIX) \

View File

@ -0,0 +1,14 @@
$OpenBSD: patch-security_nss_lib_ckfw_builtins_Makefile,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- security/nss/lib/ckfw/builtins/Makefile.orig Mon Nov 6 20:15:16 2006
+++ security/nss/lib/ckfw/builtins/Makefile Mon Nov 6 20:15:58 2006
@@ -68,8 +68,8 @@ endif
else
EXTRA_LIBS += \
- $(DIST)/lib/$(LIB_PREFIX)plc4.$(LIB_SUFFIX) \
- $(DIST)/lib/$(LIB_PREFIX)plds4.$(LIB_SUFFIX) \
+ $(LOCALBASE)/lib/$(LIB_PREFIX)plc4.$(LIB_SUFFIX) \
+ $(LOCALBASE)/lib/$(LIB_PREFIX)plds4.$(LIB_SUFFIX) \
$(NULL)
endif

View File

@ -0,0 +1,14 @@
$OpenBSD: patch-security_nss_lib_fortcrypt_swfort_pkcs11_Makefile,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- security/nss/lib/fortcrypt/swfort/pkcs11/Makefile.orig Tue Nov 7 08:42:33 2006
+++ security/nss/lib/fortcrypt/swfort/pkcs11/Makefile Tue Nov 7 08:44:01 2006
@@ -98,8 +98,8 @@ EXTRA_LIBS += \
$(DIST)/lib/$(LIB_PREFIX)softokn.$(LIB_SUFFIX) \
$(CRYPTO_LIB) \
$(DIST)/lib/$(LIB_PREFIX)secutil.$(LIB_SUFFIX) \
- $(DIST)/lib/$(LIB_PREFIX)plc4.$(LIB_SUFFIX) \
- $(DIST)/lib/$(LIB_PREFIX)plds4.$(LIB_SUFFIX) \
+ $(LOCALBASE)/lib/$(LIB_PREFIX)plc4.$(LIB_SUFFIX) \
+ $(LOCALBASE)/lib/$(LIB_PREFIX)plds4.$(LIB_SUFFIX) \
$(NULL)
endif

View File

@ -0,0 +1,14 @@
$OpenBSD: patch-security_nss_lib_nss_config_mk,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- security/nss/lib/nss/config.mk.orig Mon Nov 6 15:46:02 2006
+++ security/nss/lib/nss/config.mk Mon Nov 6 15:46:24 2006
@@ -74,9 +74,7 @@ else
EXTRA_SHARED_LIBS += \
-L$(DIST)/lib/ \
-lsoftokn3 \
- -lplc4 \
- -lplds4 \
- -lnspr4 \
+ $(NSPR_LIBS) \
$(NULL)
endif

View File

@ -0,0 +1,14 @@
$OpenBSD: patch-security_nss_lib_smime_config_mk,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- security/nss/lib/smime/config.mk.orig Mon Nov 6 15:45:25 2006
+++ security/nss/lib/smime/config.mk Mon Nov 6 15:45:49 2006
@@ -68,9 +68,7 @@ else
EXTRA_SHARED_LIBS += \
-L$(DIST)/lib/ \
-lnss3 \
- -lplc4 \
- -lplds4 \
- -lnspr4 \
+ $(NSPR_LIBS) \
$(NULL)
ifeq ($(OS_ARCH), Darwin)

View File

@ -0,0 +1,15 @@
$OpenBSD: patch-security_nss_lib_softoken_config_mk,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- security/nss/lib/softoken/config.mk.orig Mon Nov 6 15:41:50 2006
+++ security/nss/lib/softoken/config.mk Mon Nov 6 15:45:13 2006
@@ -80,10 +80,7 @@ else
# $(PROGRAM) has NO explicit dependencies on $(EXTRA_SHARED_LIBS)
# $(EXTRA_SHARED_LIBS) come before $(OS_LIBS), except on AIX.
EXTRA_SHARED_LIBS += \
- -L$(DIST)/lib/ \
- -lplc4 \
- -lplds4 \
- -lnspr4 \
+ $(NSPR_LIBS) \
$(NULL)
endif

View File

@ -0,0 +1,14 @@
$OpenBSD: patch-security_nss_lib_ssl_config_mk,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- security/nss/lib/ssl/config.mk.orig Mon Nov 6 15:44:07 2006
+++ security/nss/lib/ssl/config.mk Mon Nov 6 15:44:53 2006
@@ -73,9 +73,7 @@ else
EXTRA_SHARED_LIBS += \
-L$(DIST)/lib/ \
-lnss3 \
- -lplc4 \
- -lplds4 \
- -lnspr4 \
+ $(NSPR_LIBS) \
$(NULL)
ifeq ($(OS_ARCH), BeOS)

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-widget_src_gtk2_nsSound_cpp,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- widget/src/gtk2/nsSound.cpp.orig Thu Aug 17 04:41:52 2006
+++ widget/src/gtk2/nsSound.cpp Fri Sep 15 07:41:32 2006
@@ -114,7 +114,7 @@ nsSound::Init()
EsdOpenSoundType EsdOpenSound;
- elib = PR_LoadLibrary("libesd.so.0");
+ elib = PR_LoadLibrary("libesd.so");
if (!elib) return NS_ERROR_FAILURE;
EsdOpenSound = (EsdOpenSoundType) PR_FindSymbol(elib, "esd_open_sound");

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-widget_src_gtk_nsSound_cpp,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- widget/src/gtk/nsSound.cpp.orig Wed Nov 3 10:13:04 2004
+++ widget/src/gtk/nsSound.cpp Sat Sep 10 09:47:32 2005
@@ -106,7 +106,7 @@ nsSound::Init()
EsdOpenSoundType EsdOpenSound;
- elib = PR_LoadLibrary("libesd.so.0");
+ elib = PR_LoadLibrary("libesd.so");
if (!elib) return NS_ERROR_FAILURE;
EsdOpenSound = (EsdOpenSoundType) PR_FindSymbol(elib, "esd_open_sound");

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-xpcom_components_nsNativeComponentLoader_cpp,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- xpcom/components/nsNativeComponentLoader.cpp.orig Thu Jul 14 20:42:57 2005
+++ xpcom/components/nsNativeComponentLoader.cpp Sat Sep 10 19:45:17 2005
@@ -668,7 +668,7 @@ nsNativeComponentLoader::AutoRegisterCom
".shlb", /* Mac ? */
".dso", /* Unix ? */
".dylib", /* Unix: Mach */
- ".so.1.0", /* Unix: BSD */
+ ".so._SO_VERSION_", /* Unix: BSD */
".sl", /* Unix: HP-UX */
#if defined(VMS)
".exe", /* Open VMS */

View File

@ -0,0 +1,13 @@
$OpenBSD: patch-xpcom_glue_standalone_Makefile_in,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- xpcom/glue/standalone/Makefile.in.orig Thu Jan 5 20:35:20 2006
+++ xpcom/glue/standalone/Makefile.in Wed May 3 13:26:43 2006
@@ -62,6 +62,9 @@ endif
ifneq (,$(filter AIX DragonFly FreeBSD Linux NetBSD OpenBSD SunOS,$(OS_ARCH)))
LINKSRC = nsGlueLinkingDlopen.cpp
endif
+ifeq (OpenBSD,$(OS_ARCH))
+LINKSRC = nsGlueLinkingDlopen.cpp
+endif
ifeq (OS2,$(OS_ARCH))
LINKSRC = nsGlueLinkingOS2.cpp
endif

View File

@ -0,0 +1,65 @@
$OpenBSD: patch-xpcom_reflect_xptcall_src_md_unix_Makefile_in,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Sun Dec 3 22:24:17 2006
+++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Thu Dec 21 23:21:55 2006
@@ -68,6 +68,12 @@ CPPSRCS := xptcinvoke_unixish_x86.cpp x
endif
endif
#
+# OpenBSD/amd64
+#
+ifeq ($(OS_ARCH)$(OS_TEST),OpenBSDamd64)
+CPPSRCS := xptcinvoke_openbsd_amd64.cpp xptcstubs_openbsd_amd64.cpp
+endif
+#
# New code for Linux, et. al., with gcc
# Migrate other platforms here after testing
#
@@ -129,6 +135,12 @@ CPPSRCS := xptcinvoke_osf1_alpha.cpp xp
ASFILES := xptcinvoke_asm_osf1_alpha.s xptcstubs_asm_osf1_alpha.s
endif
#
+# OpenBSD/Alpha
+#
+ifeq ($(OS_ARCH)$(OS_TEST),OpenBSDalpha)
+CPPSRCS := xptcinvoke_openbsd_alpha.cpp xptcstubs_openbsd_alpha.cpp
+endif
+#
# Linux/Alpha
#
ifneq (,$(filter Linuxalpha FreeBSDalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
@@ -278,6 +290,14 @@ ASFILES := xptcinvoke_asm_ppc_netbsd.s
endif
#
+# OpenBSD/PPC
+#
+ifneq (,$(filter OpenBSDmacppc,$(OS_ARCH)$(OS_TEST)))
+CPPSRCS := xptcinvoke_ppc_openbsd.cpp xptcstubs_ppc_openbsd.cpp
+ASFILES := xptcinvoke_asm_ppc_openbsd.s xptcstubs_asm_ppc_openbsd.s
+endif
+
+#
# Darwin/PPC
#
ifeq ($(OS_ARCH),Darwin)
@@ -349,6 +369,20 @@ endif
endif
endif
+endif
+#
+# OpenBSD/SPARC
+#
+ifeq ($(OS_ARCH)$(OS_TEST),OpenBSDsparc)
+CPPSRCS := xptcinvoke_sparc_netbsd.cpp xptcstubs_sparc_netbsd.cpp
+ASFILES := xptcinvoke_asm_sparc_netbsd.s xptcstubs_asm_sparc_netbsd.s
+endif
+#
+# OpenBSD/SPARC64
+#
+ifeq ($(OS_ARCH)$(OS_TEST),OpenBSDsparc64)
+CPPSRCS := xptcinvoke_sparc64_openbsd.cpp xptcstubs_sparc64_openbsd.cpp
+ASFILES := xptcinvoke_asm_sparc64_openbsd.s xptcstubs_asm_sparcv9_solaris.s
endif
######################################################################

View File

@ -0,0 +1,20 @@
$OpenBSD: patch-xpcom_reflect_xptcall_src_md_unix_xptc_platforms_unixish_x86_h,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- xpcom/reflect/xptcall/src/md/unix/xptc_platforms_unixish_x86.h.orig Thu Jan 8 19:17:07 2004
+++ xpcom/reflect/xptcall/src/md/unix/xptc_platforms_unixish_x86.h Fri Nov 12 21:09:52 2004
@@ -107,12 +107,16 @@
#define THUNK_BASED_THIS_ADJUST
#elif defined(__OpenBSD__)
+#if __GNUC__ >= 3
+#define THUNK_BASED_THIS_ADJUST
+#else
/* OpenBSD instroduces GCC 2.95.x in late May 1999 */
#include <sys/param.h>
#if OpenBSD <= 199905
#define THUNK_BASED_THIS_ADJUST
#else
#define CFRONT_STYLE_THIS_ADJUST
+#endif
#endif
#elif defined(__bsdi__)

View File

@ -0,0 +1,109 @@
$OpenBSD: patch-xpfe_bootstrap_mozilla_in,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- xpfe/bootstrap/mozilla.in.orig Fri Dec 30 16:11:28 2005
+++ xpfe/bootstrap/mozilla.in Mon Dec 18 14:52:37 2006
@@ -93,6 +93,7 @@ moz_pis_startstop_scripts()
#set -x
moz_libdir=%MOZAPPDIR%
+MOZ_PLUGIN_PATH=_LOCALBASE_/lib/mozilla-plugins
MRE_HOME=%MREDIR%
# honor MOZILLA_FIVE_HOME if it's there
@@ -104,6 +105,7 @@ else
found=0
progname=$0
curdir=`dirname "$progname"`
+ progbase=`basename "$progname"`
run_moz="$curdir/run-mozilla.sh"
if test -x "$run_moz"; then
dist_bin=$curdir
@@ -144,10 +146,76 @@ script_args=""
debugging=0
MOZILLA_BIN="%MOZILLA-BIN%"
+# The following is to check for a currently running instance.
+# This is taken almost verbatim from the Mozilla RPM package's launch script.
+MOZ_CLIENT_PROGRAM="$dist_bin/mozilla-xremote-client"
+check_running() {
+ "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" 'ping()' 2>/dev/null >/dev/null
+ RETURN_VAL=$?
+ if [ $RETURN_VAL -eq 0 ]; then
+ echo 1
+ return 1
+ else
+ echo 0
+ return 0
+ fi
+}
+
if [ "$OSTYPE" = "beos" ]; then
mimeset -F $MOZILLA_BIN
fi
+ALREADY_RUNNING=`check_running`
+
+################################################################ Parse Arguments
+# If there's a command line argument but it doesn't begin with a -
+# it's probably a url. Try to send it to a running instance.
+_USE_EXIST=0
+_optOne="$1"
+case "${_optOne}" in
+ -*)
+ ;;
+ *)
+ _USE_EXIST=1
+ ;;
+esac
+
+_optLast=
+for i in "$@"; do
+ _optLast="${i}"
+done #last arg
+
+if [ `expr "${_optLast}" : '.*:/.*'` -eq 0 -a \( -f "${_optLast}" -o -d "${_optLast}" \) ]; then
+ # Last argument seems to be a local file/directory
+ # Check, if it is absolutely specified (ie. /home/foo/file vs. ./file)
+ # If it is just "relatively" (./file) specified, make it absolutely
+ [ `expr "${_optLast}" : '/.*'` -eq 0 ] && _optLast="file://`pwd`/${_optLast}"
+fi
+################################################################ Parse Arguments
+
+########################################################################### Main
+if [ $ALREADY_RUNNING -eq 1 ]; then
+ # There's an instance already running. Use it.
+ # Any command line args passed in?
+ if [ $# -gt 0 ]; then
+ # There were "some" command line args.
+ if [ ${_USE_EXIST} -eq 1 ]; then
+ # We should use an existing instance, as _USE_EXIST=$_USE_EXIST=-1
+ _remote_cmd="openURL(${_optLast})"
+ "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" "${_remote_cmd}"
+ unset _remote_cmd
+ exit $?
+ fi
+ else
+ # No command line args. Open new window/tab
+ #exec "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" "xfeDoCommand(openBrowser)"
+ "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" "xfeDoCommand(openBrowser)"
+ exit $?
+ fi
+fi
+# Default action - no running instance or _USE_EXIST (${_USE_EXIST}) ! -eq 1
+########################################################################### Main
+
pass_arg_count=0
while [ $# -gt $pass_arg_count ]
do
@@ -175,7 +243,11 @@ do
esac
done
-export MRE_HOME
+if [ `_X11BASE_/bin/fc-list | wc -l` -eq 0 ]
+then export GDK_USE_XFT=0
+fi
+
+export MOZ_PLUGIN_PATH MRE_HOME
## Start addon scripts
moz_pis_startstop_scripts "start"

View File

@ -0,0 +1,11 @@
$OpenBSD: patch-xpfe_communicator_resources_locale_en-US_brand_dtd,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- xpfe/communicator/resources/locale/en-US/brand.dtd.orig Wed Dec 13 17:07:52 2006
+++ xpfe/communicator/resources/locale/en-US/brand.dtd Wed Dec 13 17:08:07 2006
@@ -1,5 +1,5 @@
#expand <!ENTITY lang.version "__MOZILLA_LOCALE_VERSION__">
-<!ENTITY brandFullName "SeaMonkey">
-<!ENTITY brandShortName "SeaMonkey">
+<!ENTITY brandFullName "SeaMonkey Community Edition">
+<!ENTITY brandShortName "SeaMonkey Community Edition">
<!ENTITY vendorShortName "SeaMonkey">
<!ENTITY sidebarName "Sidebar">

View File

@ -0,0 +1,10 @@
$OpenBSD: patch-xpfe_communicator_resources_locale_en-US_brand_properties,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
--- xpfe/communicator/resources/locale/en-US/brand.properties.orig Wed Dec 13 17:04:49 2006
+++ xpfe/communicator/resources/locale/en-US/brand.properties Wed Dec 13 17:06:36 2006
@@ -1,4 +1,4 @@
-brandFullName=SeaMonkey
-brandShortName=SeaMonkey
+brandFullName=SeaMonkey Community Edition
+brandShortName=SeaMonkey Community Edition
vendorShortName=SeaMonkey
sidebarName=Sidebar

View File

@ -0,0 +1 @@
include, lib nd idl files for programs that use the Gecko layout engine

View File

@ -0,0 +1,4 @@
Web-browser, advanced e-mail and newsgroup client, IRC chat client,
and HTML editing made simple -- all your Internet needs in one
application.

View File

@ -0,0 +1,2 @@
Please see ${PREFIX}/seamonkey/README.OpenBSD for information
about running SeaMonkey on OpenBSD.

View File

@ -0,0 +1,21 @@
@comment $OpenBSD: PFRAG.shared-devel,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
@lib seamonkey/lib/libfort.so.${LIBfort_VERSION}
@lib seamonkey/lib/libgfxpsshar.so.${LIBgfxpsshar_VERSION}
@lib seamonkey/lib/libgkgfx.so.${LIBgkgfx_VERSION}
@lib seamonkey/lib/libgtkembedmoz.so.${LIBgtkembedmoz_VERSION}
@lib seamonkey/lib/libgtkxtbin.so.${LIBgtkxtbin_VERSION}
@lib seamonkey/lib/libjsj.so.${LIBjsj_VERSION}
@lib seamonkey/lib/libldap50.so.${LIBldap50_VERSION}
@lib seamonkey/lib/libmozjs.so.${LIBmozjs_VERSION}
@lib seamonkey/lib/libmsgbaseutil.so.${LIBmsgbaseutil_VERSION}
@lib seamonkey/lib/libnss3.so.${LIBnss3_VERSION}
@lib seamonkey/lib/libnssckbi.so.${LIBnssckbi_VERSION}
@lib seamonkey/lib/libprldap50.so.${LIBprldap50_VERSION}
@lib seamonkey/lib/libsmime3.so.${LIBsmime3_VERSION}
@lib seamonkey/lib/libsoftokn3.so.${LIBsoftokn3_VERSION}
@lib seamonkey/lib/libssl3.so.${LIBssl3_VERSION}
@lib seamonkey/lib/libswft.so.${LIBswft_VERSION}
@lib seamonkey/lib/libxpcom.so.${LIBxpcom_VERSION}
@lib seamonkey/lib/libxpcom_compat.so.${LIBxpcom_compat_VERSION}
@lib seamonkey/lib/libxpcom_core.so.${LIBxpcom_core_VERSION}
@lib seamonkey/lib/libxpistub.so.${LIBxpistub_VERSION}

View File

@ -0,0 +1,96 @@
@comment $OpenBSD: PFRAG.shared-main,v 1.1.1.1 2006/12/22 23:32:29 kurt Exp $
@lib seamonkey/components/libaccessibility.so.${LIBaccessibility_VERSION}
@lib seamonkey/components/libaddrbook.so.${LIBaddrbook_VERSION}
@lib seamonkey/components/libappcomps.so.${LIBappcomps_VERSION}
@lib seamonkey/components/libauth.so.${LIBauth_VERSION}
@lib seamonkey/components/libautoconfig.so.${LIBautoconfig_VERSION}
@lib seamonkey/components/libbayesflt.so.${LIBbayesflt_VERSION}
@lib seamonkey/components/libcaps.so.${LIBcaps_VERSION}
@lib seamonkey/components/libchrome.so.${LIBchrome_VERSION}
@lib seamonkey/components/libcomposer.so.${LIBcomposer_VERSION}
@lib seamonkey/components/libcookie.so.${LIBcookie_VERSION}
@lib seamonkey/components/libdocshell.so.${LIBdocshell_VERSION}
@lib seamonkey/components/libeditor.so.${LIBeditor_VERSION}
@lib seamonkey/components/libembedcomponents.so.${LIBembedcomponents_VERSION}
@lib seamonkey/components/libfileview.so.${LIBfileview_VERSION}
@lib seamonkey/components/libgfx_gtk.so.${LIBgfx_gtk_VERSION}
@lib seamonkey/components/libgfxps.so.${LIBgfxps_VERSION}
@lib seamonkey/components/libgklayout.so.${LIBgklayout_VERSION}
@lib seamonkey/components/libgkplugin.so.${LIBgkplugin_VERSION}
@lib seamonkey/components/libhtmlpars.so.${LIBhtmlpars_VERSION}
@lib seamonkey/components/libi18n.so.${LIBi18n_VERSION}
@lib seamonkey/components/libimglib2.so.${LIBimglib2_VERSION}
@lib seamonkey/components/libimpComm4xMail.so.${LIBimpComm4xMail_VERSION}
@lib seamonkey/components/libimpText.so.${LIBimpText_VERSION}
@lib seamonkey/components/libimport.so.${LIBimport_VERSION}
@lib seamonkey/components/libinspector.so.${LIBinspector_VERSION}
@lib seamonkey/components/libjar50.so.${LIBjar50_VERSION}
@lib seamonkey/components/libjsd.so.${LIBjsd_VERSION}
@lib seamonkey/components/liblocalmail.so.${LIBlocalmail_VERSION}
@lib seamonkey/components/libmailnews.so.${LIBmailnews_VERSION}
@lib seamonkey/components/libmailview.so.${LIBmailview_VERSION}
@lib seamonkey/components/libmime.so.${LIBmime_VERSION}
@lib seamonkey/components/libmimeemitter.so.${LIBmimeemitter_VERSION}
@lib seamonkey/components/libmork.so.${LIBmork_VERSION}
@lib seamonkey/components/libmozfind.so.${LIBmozfind_VERSION}
@lib seamonkey/components/libmozldap.so.${LIBmozldap_VERSION}
@lib seamonkey/components/libmsgcompose.so.${LIBmsgcompose_VERSION}
@lib seamonkey/components/libmsgdb.so.${LIBmsgdb_VERSION}
@lib seamonkey/components/libmsgimap.so.${LIBmsgimap_VERSION}
@lib seamonkey/components/libmsgmdn.so.${LIBmsgmdn_VERSION}
@lib seamonkey/components/libmsgnews.so.${LIBmsgnews_VERSION}
@lib seamonkey/components/libmsgsmime.so.${LIBmsgsmime_VERSION}
@lib seamonkey/components/libmyspell.so.${LIBmyspell_VERSION}
@lib seamonkey/components/libnecko.so.${LIBnecko_VERSION}
@lib seamonkey/components/libnecko2.so.${LIBnecko2_VERSION}
@lib seamonkey/components/libnsappshell.so.${LIBnsappshell_VERSION}
@lib seamonkey/components/libnsprefm.so.${LIBnsprefm_VERSION}
@lib seamonkey/components/liboji.so.${LIBoji_VERSION}
@lib seamonkey/components/libp3p.so.${LIBp3p_VERSION}
@lib seamonkey/components/libpermissions.so.${LIBpermissions_VERSION}
@lib seamonkey/components/libpipboot.so.${LIBpipboot_VERSION}
@lib seamonkey/components/libpipnss.so.${LIBpipnss_VERSION}
@lib seamonkey/components/libpippki.so.${LIBpippki_VERSION}
@lib seamonkey/components/libpref.so.${LIBpref_VERSION}
@lib seamonkey/components/libprofile.so.${LIBprofile_VERSION}
@lib seamonkey/components/librdf.so.${LIBrdf_VERSION}
@lib seamonkey/components/libremoteservice.so.${LIBremoteservice_VERSION}
@lib seamonkey/components/libsearchservice.so.${LIBsearchservice_VERSION}
@lib seamonkey/components/libspellchecker.so.${LIBspellchecker_VERSION}
@lib seamonkey/components/libsroaming.so.${LIBsroaming_VERSION}
@lib seamonkey/components/libsystem-pref.so.${LIBsystem-pref_VERSION}
@lib seamonkey/components/libtransformiix.so.${LIBtransformiix_VERSION}
@lib seamonkey/components/libtxmgr.so.${LIBtxmgr_VERSION}
@lib seamonkey/components/libtypeaheadfind.so.${LIBtypeaheadfind_VERSION}
@lib seamonkey/components/libuconv.so.${LIBuconv_VERSION}
@lib seamonkey/components/libucvmath.so.${LIBucvmath_VERSION}
@lib seamonkey/components/libuniversalchardet.so.${LIBuniversalchardet_VERSION}
@lib seamonkey/components/libvcard.so.${LIBvcard_VERSION}
@lib seamonkey/components/libwallet.so.${LIBwallet_VERSION}
@lib seamonkey/components/libwalletviewers.so.${LIBwalletviewers_VERSION}
@lib seamonkey/components/libwebbrwsr.so.${LIBwebbrwsr_VERSION}
@lib seamonkey/components/libwebsrvcs.so.${LIBwebsrvcs_VERSION}
@lib seamonkey/components/libwidget_gtk2.so.${LIBwidget_gtk2_VERSION}
@lib seamonkey/components/libxmlextras.so.${LIBxmlextras_VERSION}
@lib seamonkey/components/libxpcom_compat_c.so.${LIBxpcom_compat_c_VERSION}
@lib seamonkey/components/libxpconnect.so.${LIBxpconnect_VERSION}
@lib seamonkey/components/libxpinstall.so.${LIBxpinstall_VERSION}
@lib seamonkey/components/libxremoteservice.so.${LIBxremoteservice_VERSION}
@lib seamonkey/libgfxpsshar.so.${LIBgfxpsshar_VERSION}
@lib seamonkey/libgkgfx.so.${LIBgkgfx_VERSION}
@lib seamonkey/libgtkembedmoz.so.${LIBgtkembedmoz_VERSION}
@lib seamonkey/libgtkxtbin.so.${LIBgtkxtbin_VERSION}
@lib seamonkey/libjsj.so.${LIBjsj_VERSION}
@lib seamonkey/libldap50.so.${LIBldap50_VERSION}
@lib seamonkey/libmozjs.so.${LIBmozjs_VERSION}
@lib seamonkey/libmsgbaseutil.so.${LIBmsgbaseutil_VERSION}
@lib seamonkey/libnss3.so.${LIBnss3_VERSION}
@lib seamonkey/libnssckbi.so.${LIBnssckbi_VERSION}
@lib seamonkey/libprldap50.so.${LIBprldap50_VERSION}
@lib seamonkey/libsmime3.so.${LIBsmime3_VERSION}
@lib seamonkey/libsoftokn3.so.${LIBsoftokn3_VERSION}
@lib seamonkey/libssl3.so.${LIBssl3_VERSION}
@lib seamonkey/libxpcom.so.${LIBxpcom_VERSION}
@lib seamonkey/libxpcom_compat.so.${LIBxpcom_compat_VERSION}
@lib seamonkey/libxpcom_core.so.${LIBxpcom_core_VERSION}
@lib seamonkey/libxpistub.so.${LIBxpistub_VERSION}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,490 @@
@comment $OpenBSD: PLIST-main,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
%%SHARED%%
bin/seamonkey
bin/seamonkey-config
seamonkey/
seamonkey/LICENSE
seamonkey/README.OpenBSD
seamonkey/TestGtkEmbed
seamonkey/chrome/
seamonkey/chrome/US.jar
seamonkey/chrome/chatzilla.jar
seamonkey/chrome/chromelist.txt
seamonkey/chrome/classic.jar
seamonkey/chrome/comm.jar
seamonkey/chrome/content-packs.jar
seamonkey/chrome/embed-sample.jar
seamonkey/chrome/en-US.jar
seamonkey/chrome/en-mac.jar
seamonkey/chrome/en-unix.jar
seamonkey/chrome/en-win.jar
seamonkey/chrome/help.jar
seamonkey/chrome/icons/
seamonkey/chrome/icons/default/
seamonkey/chrome/icons/default/abcardWindow.xpm
seamonkey/chrome/icons/default/abcardWindow16.xpm
seamonkey/chrome/icons/default/addressbookWindow.xpm
seamonkey/chrome/icons/default/addressbookWindow16.xpm
seamonkey/chrome/icons/default/bmPropsWindow.xpm
seamonkey/chrome/icons/default/bmPropsWindow16.xpm
seamonkey/chrome/icons/default/bookmark-window.xpm
seamonkey/chrome/icons/default/bookmark-window16.xpm
seamonkey/chrome/icons/default/calendar-window.xpm
seamonkey/chrome/icons/default/calendar-window16.xpm
seamonkey/chrome/icons/default/chatzilla-window.xpm
seamonkey/chrome/icons/default/chatzilla-window16.xpm
seamonkey/chrome/icons/default/default.xpm
seamonkey/chrome/icons/default/default16.xpm
seamonkey/chrome/icons/default/downloadManager.xpm
seamonkey/chrome/icons/default/downloadManager16.xpm
seamonkey/chrome/icons/default/editorWindow.xpm
seamonkey/chrome/icons/default/editorWindow16.xpm
seamonkey/chrome/icons/default/findBookmarkWindow.xpm
seamonkey/chrome/icons/default/findBookmarkWindow16.xpm
seamonkey/chrome/icons/default/findHistoryWindow.xpm
seamonkey/chrome/icons/default/findHistoryWindow16.xpm
seamonkey/chrome/icons/default/history-window.xpm
seamonkey/chrome/icons/default/history-window16.xpm
seamonkey/chrome/icons/default/jsconsoleWindow.xpm
seamonkey/chrome/icons/default/jsconsoleWindow16.xpm
seamonkey/chrome/icons/default/main-window.xpm
seamonkey/chrome/icons/default/main-window16.xpm
seamonkey/chrome/icons/default/messengerWindow.xpm
seamonkey/chrome/icons/default/messengerWindow16.xpm
seamonkey/chrome/icons/default/msgcomposeWindow.xpm
seamonkey/chrome/icons/default/msgcomposeWindow16.xpm
seamonkey/chrome/icons/default/seamonkey.png
seamonkey/chrome/icons/default/venkman-window.xpm
seamonkey/chrome/icons/default/venkman-window16.xpm
seamonkey/chrome/icons/default/winInspectorMain.xpm
seamonkey/chrome/icons/default/winInspectorMain16.xpm
seamonkey/chrome/inspector.jar
seamonkey/chrome/inspector.manifest
seamonkey/chrome/installed-chrome.txt
seamonkey/chrome/messenger.jar
seamonkey/chrome/modern.jar
seamonkey/chrome/pipnss.jar
seamonkey/chrome/pippki.jar
seamonkey/chrome/reporter.jar
seamonkey/chrome/reporter.manifest
seamonkey/chrome/sroaming.jar
seamonkey/chrome/toolkit.jar
seamonkey/chrome/venkman.jar
seamonkey/components/
seamonkey/components/accessibility-atk.xpt
seamonkey/components/accessibility.xpt
seamonkey/components/addrbook.xpt
seamonkey/components/alerts.xpt
seamonkey/components/appshell.xpt
seamonkey/components/appstartup.xpt
seamonkey/components/autocomplete.xpt
seamonkey/components/autoconfig.xpt
seamonkey/components/bookmarks.xpt
seamonkey/components/caps.xpt
seamonkey/components/chardet.xpt
seamonkey/components/chatzilla-service.js
seamonkey/components/chrome.xpt
seamonkey/components/commandhandler.xpt
seamonkey/components/composer.xpt
seamonkey/components/content_base.xpt
seamonkey/components/content_html.xpt
seamonkey/components/content_htmldoc.xpt
seamonkey/components/content_xmldoc.xpt
seamonkey/components/content_xslt.xpt
seamonkey/components/content_xtf.xpt
seamonkey/components/cookie.xpt
seamonkey/components/directory.xpt
seamonkey/components/docshell.xpt
seamonkey/components/dom.xpt
seamonkey/components/dom_base.xpt
seamonkey/components/dom_canvas.xpt
seamonkey/components/dom_core.xpt
seamonkey/components/dom_css.xpt
seamonkey/components/dom_events.xpt
seamonkey/components/dom_html.xpt
seamonkey/components/dom_loadsave.xpt
seamonkey/components/dom_range.xpt
seamonkey/components/dom_stylesheets.xpt
seamonkey/components/dom_svg.xpt
seamonkey/components/dom_traversal.xpt
seamonkey/components/dom_views.xpt
seamonkey/components/dom_xbl.xpt
seamonkey/components/dom_xpath.xpt
seamonkey/components/dom_xul.xpt
seamonkey/components/downloadmanager.xpt
seamonkey/components/editor.xpt
seamonkey/components/embed_base.xpt
seamonkey/components/extensions.xpt
seamonkey/components/exthandler.xpt
seamonkey/components/filepicker.xpt
seamonkey/components/find.xpt
seamonkey/components/gfx.xpt
seamonkey/components/gksvgrenderer.xpt
seamonkey/components/history.xpt
seamonkey/components/htmlparser.xpt
seamonkey/components/imglib2.xpt
seamonkey/components/impComm4xMail.xpt
seamonkey/components/import.xpt
seamonkey/components/inspector-cmdline.js
seamonkey/components/inspector.xpt
seamonkey/components/intl.xpt
seamonkey/components/jar.xpt
seamonkey/components/jsconsole-clhandler.js
seamonkey/components/jsconsole.xpt
seamonkey/components/jsdservice.xpt
seamonkey/components/layout_base.xpt
seamonkey/components/layout_printing.xpt
seamonkey/components/layout_xul.xpt
seamonkey/components/layout_xul_tree.xpt
seamonkey/components/locale.xpt
seamonkey/components/lwbrk.xpt
seamonkey/components/mailnews.xpt
seamonkey/components/mailview.xpt
seamonkey/components/mdn-service.js
seamonkey/components/mime.xpt
seamonkey/components/mimetype.xpt
seamonkey/components/mozbrwsr.xpt
seamonkey/components/mozfind.xpt
seamonkey/components/mozldap.xpt
seamonkey/components/msgbase.xpt
seamonkey/components/msgcompose.xpt
seamonkey/components/msgdb.xpt
seamonkey/components/msgimap.xpt
seamonkey/components/msglocal.xpt
seamonkey/components/msgnews.xpt
seamonkey/components/msgsearch.xpt
seamonkey/components/msgsmime.xpt
seamonkey/components/myspell/
seamonkey/components/myspell/en-US.aff
seamonkey/components/myspell/en-US.dic
seamonkey/components/necko.xpt
seamonkey/components/necko_about.xpt
seamonkey/components/necko_cache.xpt
seamonkey/components/necko_cookie.xpt
seamonkey/components/necko_data.xpt
seamonkey/components/necko_dns.xpt
seamonkey/components/necko_file.xpt
seamonkey/components/necko_ftp.xpt
seamonkey/components/necko_http.xpt
seamonkey/components/necko_res.xpt
seamonkey/components/necko_socket.xpt
seamonkey/components/necko_strconv.xpt
seamonkey/components/necko_viewsource.xpt
seamonkey/components/nsAbLDAPAttributeMap.js
seamonkey/components/nsCloseAllWindows.js
seamonkey/components/nsComposerCmdLineHandler.js
seamonkey/components/nsDictionary.js
seamonkey/components/nsDownloadProgressListener.js
seamonkey/components/nsFilePicker.js
seamonkey/components/nsHelperAppDlg.js
seamonkey/components/nsInterfaceInfoToIDL.js
seamonkey/components/nsKillAll.js
seamonkey/components/nsLDAPPrefsService.js
seamonkey/components/nsProgressDialog.js
seamonkey/components/nsProxyAutoConfig.js
seamonkey/components/nsResetPref.js
seamonkey/components/nsSidebar.js
seamonkey/components/nsUpdateNotifier.js
seamonkey/components/nsXmlRpcClient.js
seamonkey/components/offlineStartup.js
seamonkey/components/oji.xpt
seamonkey/components/p3p.xpt
seamonkey/components/pipboot.xpt
seamonkey/components/pipnss.xpt
seamonkey/components/pippki.xpt
seamonkey/components/plugin.xpt
seamonkey/components/pref.xpt
seamonkey/components/prefetch.xpt
seamonkey/components/prefmigr.xpt
seamonkey/components/profile.xpt
seamonkey/components/progressDlg.xpt
seamonkey/components/proxyObjInst.xpt
seamonkey/components/rdf.xpt
seamonkey/components/related.xpt
seamonkey/components/search.xpt
seamonkey/components/shistory.xpt
seamonkey/components/sidebar.xpt
seamonkey/components/signonviewer.xpt
seamonkey/components/smime-service.js
seamonkey/components/spellchecker.xpt
seamonkey/components/toolkitremote.xpt
seamonkey/components/txmgr.xpt
seamonkey/components/txtsvc.xpt
seamonkey/components/typeaheadfind.xpt
seamonkey/components/uconv.xpt
seamonkey/components/unicharutil.xpt
seamonkey/components/uriloader.xpt
seamonkey/components/venkman-service.js
seamonkey/components/wallet.xpt
seamonkey/components/walleteditor.xpt
seamonkey/components/walletpreview.xpt
seamonkey/components/webBrowser_core.xpt
seamonkey/components/webbrowserpersist.xpt
seamonkey/components/webshell_idls.xpt
seamonkey/components/websrvcs.xpt
seamonkey/components/widget.xpt
seamonkey/components/windowds.xpt
seamonkey/components/windowwatcher.xpt
seamonkey/components/xml-rpc.xpt
seamonkey/components/xmlextras.xpt
seamonkey/components/xpcom_base.xpt
seamonkey/components/xpcom_components.xpt
seamonkey/components/xpcom_ds.xpt
seamonkey/components/xpcom_io.xpt
seamonkey/components/xpcom_obsolete.xpt
seamonkey/components/xpcom_threads.xpt
seamonkey/components/xpcom_xpti.xpt
seamonkey/components/xpconnect.xpt
seamonkey/components/xpinstall.xpt
seamonkey/components/xremoteservice.xpt
seamonkey/components/xulappinfo.js
seamonkey/components/xulappinfo.xpt
seamonkey/components/xuldoc.xpt
seamonkey/components/xultmpl.xpt
seamonkey/defaults/
seamonkey/defaults/autoconfig/
seamonkey/defaults/autoconfig/platform.js
seamonkey/defaults/autoconfig/prefcalls.js
seamonkey/defaults/isp/
seamonkey/defaults/isp/US/
seamonkey/defaults/isp/US/movemail.rdf
seamonkey/defaults/isp/movemail.rdf
seamonkey/defaults/messenger/
seamonkey/defaults/messenger/SpamAssassin.sfd
seamonkey/defaults/messenger/SpamPal.sfd
seamonkey/defaults/messenger/US/
seamonkey/defaults/messenger/US/mailViews.dat
seamonkey/defaults/messenger/mailViews.dat
seamonkey/defaults/pref/
seamonkey/defaults/pref/browser-prefs.js
seamonkey/defaults/pref/composer.js
seamonkey/defaults/pref/inspector.js
seamonkey/defaults/pref/mailnews.js
seamonkey/defaults/pref/mdn.js
seamonkey/defaults/pref/reporter.js
seamonkey/defaults/pref/smime.js
seamonkey/defaults/profile/
seamonkey/defaults/profile/US/
seamonkey/defaults/profile/US/bookmarks.html
seamonkey/defaults/profile/US/chrome/
seamonkey/defaults/profile/US/chrome/userChrome-example.css
seamonkey/defaults/profile/US/chrome/userContent-example.css
seamonkey/defaults/profile/US/localstore.rdf
seamonkey/defaults/profile/US/mimeTypes.rdf
seamonkey/defaults/profile/US/panels.rdf
seamonkey/defaults/profile/US/search.rdf
seamonkey/defaults/profile/bookmarks.html
seamonkey/defaults/profile/chrome/
seamonkey/defaults/profile/chrome/userChrome-example.css
seamonkey/defaults/profile/chrome/userContent-example.css
seamonkey/defaults/profile/localstore.rdf
seamonkey/defaults/profile/mimeTypes.rdf
seamonkey/defaults/profile/panels.rdf
seamonkey/defaults/profile/search.rdf
seamonkey/defaults/wallet/
seamonkey/defaults/wallet/DistinguishedSchema.tbl
seamonkey/defaults/wallet/FieldSchema.tbl
seamonkey/defaults/wallet/PositionalSchema.tbl
seamonkey/defaults/wallet/SchemaConcat.tbl
seamonkey/defaults/wallet/SchemaStrings.tbl
seamonkey/defaults/wallet/StateSchema.tbl
seamonkey/defaults/wallet/VcardSchema.tbl
seamonkey/greprefs/
seamonkey/greprefs/all.js
seamonkey/greprefs/security-prefs.js
seamonkey/greprefs/xpinstall.js
seamonkey/mangle
seamonkey/mozilla-xremote-client
seamonkey/nsinstall
seamonkey/regxpcom
seamonkey/res/
seamonkey/res/EditorOverride.css
seamonkey/res/arrow.gif
seamonkey/res/arrowd.gif
seamonkey/res/bloatcycle.html
seamonkey/res/broken-image.gif
seamonkey/res/charsetData.properties
seamonkey/res/charsetalias.properties
seamonkey/res/cmessage.txt
seamonkey/res/dtd/
seamonkey/res/dtd/mathml.dtd
seamonkey/res/dtd/xhtml11.dtd
seamonkey/res/entityTables/
seamonkey/res/entityTables/html40Latin1.properties
seamonkey/res/entityTables/html40Special.properties
seamonkey/res/entityTables/html40Symbols.properties
seamonkey/res/entityTables/htmlEntityVersions.properties
seamonkey/res/entityTables/mathml20.properties
seamonkey/res/entityTables/transliterate.properties
seamonkey/res/fonts/
seamonkey/res/fonts/fontEncoding.properties
seamonkey/res/fonts/mathfont.properties
seamonkey/res/fonts/mathfontCMEX10.properties
seamonkey/res/fonts/mathfontCMSY10.properties
seamonkey/res/fonts/mathfontMTExtra.properties
seamonkey/res/fonts/mathfontMath1.properties
seamonkey/res/fonts/mathfontMath2.properties
seamonkey/res/fonts/mathfontMath4.properties
seamonkey/res/fonts/mathfontPUA.properties
seamonkey/res/fonts/mathfontSymbol.properties
seamonkey/res/fonts/pangoFontEncoding.properties
seamonkey/res/forms.css
seamonkey/res/grabber.gif
seamonkey/res/hiddenWindow.html
seamonkey/res/html/
seamonkey/res/html.css
seamonkey/res/html/gopher-audio.gif
seamonkey/res/html/gopher-binary.gif
seamonkey/res/html/gopher-find.gif
seamonkey/res/html/gopher-image.gif
seamonkey/res/html/gopher-menu.gif
seamonkey/res/html/gopher-movie.gif
seamonkey/res/html/gopher-sound.gif
seamonkey/res/html/gopher-telnet.gif
seamonkey/res/html/gopher-text.gif
seamonkey/res/html/gopher-unknown.gif
seamonkey/res/langGroups.properties
seamonkey/res/language.properties
seamonkey/res/loading-image.gif
seamonkey/res/mathml.css
seamonkey/res/quirk.css
seamonkey/res/sample.unixpsfonts.properties
seamonkey/res/samples/
seamonkey/res/samples/Anieyes.gif
seamonkey/res/samples/aform.css
seamonkey/res/samples/beeptest.html
seamonkey/res/samples/bform.css
seamonkey/res/samples/bg.jpg
seamonkey/res/samples/cform.css
seamonkey/res/samples/checkboxTest.xul
seamonkey/res/samples/colorpicker.xul
seamonkey/res/samples/demoform.css
seamonkey/res/samples/dexopenchrome.xul
seamonkey/res/samples/dexparamdialog.html
seamonkey/res/samples/dexparamdialog.xul
seamonkey/res/samples/find.html
seamonkey/res/samples/gear1.gif
seamonkey/res/samples/hidetoolicon.css
seamonkey/res/samples/hidetoolicon.xul
seamonkey/res/samples/image_props.html
seamonkey/res/samples/mozform.css
seamonkey/res/samples/printsetup.html
seamonkey/res/samples/raptor.jpg
seamonkey/res/samples/rock_gra.gif
seamonkey/res/samples/sampleimages/
seamonkey/res/samples/sampleimages/bongo.gif
seamonkey/res/samples/sampleimages/down.gif
seamonkey/res/samples/sampleimages/left.gif
seamonkey/res/samples/sampleimages/right.gif
seamonkey/res/samples/sampleimages/up.gif
seamonkey/res/samples/scrollbarTest1.xul
seamonkey/res/samples/scrollbarTest2.xul
seamonkey/res/samples/sliderTest1.xul
seamonkey/res/samples/soundtest.html
seamonkey/res/samples/tab.xul
seamonkey/res/samples/test.wav
seamonkey/res/samples/test0.html
seamonkey/res/samples/test1.html
seamonkey/res/samples/test10.html
seamonkey/res/samples/test11.html
seamonkey/res/samples/test12.html
seamonkey/res/samples/test13.html
seamonkey/res/samples/test14.html
seamonkey/res/samples/test15.html
seamonkey/res/samples/test16.html
seamonkey/res/samples/test2.html
seamonkey/res/samples/test3.html
seamonkey/res/samples/test4.html
seamonkey/res/samples/test5.html
seamonkey/res/samples/test6.html
seamonkey/res/samples/test7.html
seamonkey/res/samples/test8-1.html
seamonkey/res/samples/test8.html
seamonkey/res/samples/test8dom.html
seamonkey/res/samples/test8sca.html
seamonkey/res/samples/test8siz.html
seamonkey/res/samples/test8tab.html
seamonkey/res/samples/test9.html
seamonkey/res/samples/test9a.html
seamonkey/res/samples/test9b.html
seamonkey/res/samples/test_ed.html
seamonkey/res/samples/test_form.html
seamonkey/res/samples/test_gfx.html
seamonkey/res/samples/test_lbox.html
seamonkey/res/samples/test_pr.html
seamonkey/res/samples/test_weight.html
seamonkey/res/samples/toolbarTest1.xul
seamonkey/res/samples/treeTest1.css
seamonkey/res/samples/treeTest1.xul
seamonkey/res/samples/widgets.xul
seamonkey/res/samples/xpmenu.xul
seamonkey/res/samples/xulTest.css
seamonkey/res/svg.css
seamonkey/res/table-add-column-after-active.gif
seamonkey/res/table-add-column-after-hover.gif
seamonkey/res/table-add-column-after.gif
seamonkey/res/table-add-column-before-active.gif
seamonkey/res/table-add-column-before-hover.gif
seamonkey/res/table-add-column-before.gif
seamonkey/res/table-add-row-after-active.gif
seamonkey/res/table-add-row-after-hover.gif
seamonkey/res/table-add-row-after.gif
seamonkey/res/table-add-row-before-active.gif
seamonkey/res/table-add-row-before-hover.gif
seamonkey/res/table-add-row-before.gif
seamonkey/res/table-remove-column-active.gif
seamonkey/res/table-remove-column-hover.gif
seamonkey/res/table-remove-column.gif
seamonkey/res/table-remove-row-active.gif
seamonkey/res/table-remove-row-hover.gif
seamonkey/res/table-remove-row.gif
seamonkey/res/throbber/
seamonkey/res/throbber/anim.gif
seamonkey/res/throbber/anims00.gif
seamonkey/res/throbber/anims01.gif
seamonkey/res/throbber/anims02.gif
seamonkey/res/throbber/anims03.gif
seamonkey/res/throbber/anims04.gif
seamonkey/res/throbber/anims05.gif
seamonkey/res/throbber/anims06.gif
seamonkey/res/throbber/anims07.gif
seamonkey/res/throbber/anims08.gif
seamonkey/res/throbber/anims09.gif
seamonkey/res/throbber/anims10.gif
seamonkey/res/throbber/anims11.gif
seamonkey/res/throbber/anims12.gif
seamonkey/res/throbber/anims13.gif
seamonkey/res/throbber/anims14.gif
seamonkey/res/throbber/anims15.gif
seamonkey/res/throbber/anims16.gif
seamonkey/res/throbber/anims17.gif
seamonkey/res/throbber/anims18.gif
seamonkey/res/throbber/anims19.gif
seamonkey/res/throbber/anims20.gif
seamonkey/res/throbber/anims21.gif
seamonkey/res/throbber/anims22.gif
seamonkey/res/throbber/anims23.gif
seamonkey/res/throbber/anims24.gif
seamonkey/res/throbber/anims25.gif
seamonkey/res/throbber/anims26.gif
seamonkey/res/throbber/anims27.gif
seamonkey/res/throbber/anims28.gif
seamonkey/res/throbber/anims29.gif
seamonkey/res/ua.css
seamonkey/res/unixcharset.properties
seamonkey/res/viewer.properties
seamonkey/res/viewsource.css
seamonkey/run-mozilla.sh
seamonkey/seamonkey-bin
seamonkey/searchplugins/
seamonkey/searchplugins/dmoz.gif
seamonkey/searchplugins/dmoz.src
seamonkey/searchplugins/google.gif
seamonkey/searchplugins/google.src
seamonkey/searchplugins/jeeves.gif
seamonkey/searchplugins/jeeves.src
seamonkey/shlibsign
seamonkey/xpcshell
seamonkey/xpicleanup
seamonkey/xpt_dump
seamonkey/xpt_link