diff options
Diffstat (limited to 'mail/thunderbird3/files')
31 files changed, 0 insertions, 2498 deletions
diff --git a/mail/thunderbird3/files/Extensions.rdf b/mail/thunderbird3/files/Extensions.rdf deleted file mode 100644 index 79d0e46db2b3..000000000000 --- a/mail/thunderbird3/files/Extensions.rdf +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> -<RDF:RDF xmlns:em="http://www.mozilla.org/2004/em-rdf#" - xmlns:NC="http://home.netscape.com/NC-rdf#" - xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> - <RDF:Seq RDF:about="urn:mozilla:theme:root"> - <RDF:li RDF:resource="urn:mozilla:theme:{972ce4c6-7e08-4474-a285-3208198ce6fd}"/> - </RDF:Seq> - <RDF:Seq RDF:about="urn:mozilla:extension:root"> - </RDF:Seq> - <RDF:Description RDF:about="rdf:#$eyU.+1" - em:id="{3550f703-e582-4d05-9a08-453d09bdfdc6}" - em:minVersion="0.7" - em:maxVersion="0.7" /> - <RDF:Description RDF:about="urn:mozilla:theme:{972ce4c6-7e08-4474-a285-3208198ce6fd}" - em:version="2.0" - em:name="Thunderbird (default)" - em:description="The default theme" - em:creator="Arvid Axelsson" - em:internalName="classic/1.0" - em:locked="true" - em:contributor="Mozilla Contributors"> - <em:targetApplication RDF:resource="rdf:#$eyU.+1"/> - </RDF:Description> -</RDF:RDF> diff --git a/mail/thunderbird3/files/mozconfig.in b/mail/thunderbird3/files/mozconfig.in deleted file mode 100644 index b40d330133ff..000000000000 --- a/mail/thunderbird3/files/mozconfig.in +++ /dev/null @@ -1,71 +0,0 @@ -# .mozconfig.in -*-shell-script-*- -# $FreeBSD$ -###################################################################### -# standard opts from README -export MOZ_THUNDERBIRD=1 -mk_add_options MOZ_MOZ_THUNDERBIRD=1 -ac_add_options --enable-crypto -ac_add_options --disable-mathml -ac_add_options --disable-installer -ac_add_options --disable-activex -ac_add_options --disable-activex-scripting -ac_add_options --disable-oji -ac_add_options --disable-necko-disk-cache -ac_add_options --disable-tests -ac_add_options --disable-profilesharing -ac_add_options --enable-extensions=wallet,spellcheck,xmlextras -ac_add_options --enable-necko-protocols=http,file,jar,viewsource,res,data -ac_add_options --enable-image-decoders=png,gif,jpeg,bmp -ac_add_options --enable-default-toolkit=gtk2 -###################################################################### -# FBSD specific -export CPPFLAGS="@CPPFLAGS@" -export CFLAGS="@CFLAGS@" -export LIBS="@LIBS@" -export LDFLAGS="@LDFLAGS@" -export CONFIG_SH=/bin/sh -export XP_UNIX=1 -mk_add_options XP_UNIX=1 -export PERL="@PERL@" -mk_add_options PERL=$PERL -# Configure options for installation -ac_add_options --prefix=@PREFIX@ -###################################################################### -# Use ports for these libraries -ac_add_options --with-system-jpeg=@LOCALBASE@ -ac_add_options --with-system-zlib -ac_add_options --with-system-png=@LOCALBASE@ -ac_add_options --with-system-mng=@LOCALBASE@ -###################################################################### -# set compile/link features -ac_add_options --with-pthreads -###################################################################### -# conditional from port Makefile -#if test -n "$WITH_REORDER"; then -# ac_add_options --enable-reorder -#else -# ac_add_options --disable-reorder -#fi # test -n "$WITH_REORDER" -if test -n "$WITH_DEBUG"; then - ac_add_options --enable-debug - ac_add_options --disable-strip -else - ac_add_options --disable-debug - ac_add_options --enable-optimize=${WITH_OPTIMIZE} - ac_add_options --enable-strip - export BUILD_OFFICIAL=1 - export MOZILLA_OFFICIAL=1 - mk_add_options BUILD_OFFICIAL=1 - mk_add_options MOZILLA_OFFICIAL=1 -fi # test -n "$WITH_DEBUG" -if test -n "$WITH_LOGGING"; then - ac_add_options --enable-logging -else - ac_add_options --disable-logging -fi # test -n "$WITH_LOGGING" -if test -z "$WITHOUT_XFT"; then - ac_add_options --enable-xft -else - ac_add_options --disable-xft -fi # test -z "$WITHOUT_XFT" -###################################################################### diff --git a/mail/thunderbird3/files/patch-245066,226669 b/mail/thunderbird3/files/patch-245066,226669 deleted file mode 100644 index 00254916f224..000000000000 --- a/mail/thunderbird3/files/patch-245066,226669 +++ /dev/null @@ -1,228 +0,0 @@ -Index: mozilla/mailnews/local/src/nsPop3Protocol.cpp -=================================================================== -RCS file: /cvsroot/mozilla/mailnews/local/src/nsPop3Protocol.cpp,v -retrieving revision 1.214.2.1 -retrieving revision 1.214.2.1.2.1 -diff -u -r1.214.2.1 -r1.214.2.1.2.1 ---- mailnews/local/src/nsPop3Protocol.cpp 27 May 2004 14:54:03 -0000 1.214.2.1 -+++ mailnews/local/src/nsPop3Protocol.cpp 27 Aug 2004 13:15:42 -0000 1.214.2.1.2.1 -@@ -61,7 +61,6 @@ - #include "nsISignatureVerifier.h" - - #define EXTRA_SAFETY_SPACE 3096 --#define kLargeNumberOfMessages 50000 - - static PRLogModuleInfo *POP3LOGMODULE = nsnull; - -@@ -1791,11 +1790,11 @@ - - - m_pop3ConData->msg_info = (Pop3MsgInfo *) -- PR_CALLOC(sizeof(Pop3MsgInfo) * -- (m_pop3ConData->number_of_messages < kLargeNumberOfMessages ? m_pop3ConData->number_of_messages : kLargeNumberOfMessages)); -+ PR_CALLOC(sizeof(Pop3MsgInfo) * m_pop3ConData->number_of_messages); - if (!m_pop3ConData->msg_info) - return(MK_OUT_OF_MEMORY); - m_pop3ConData->next_state_after_response = POP3_GET_LIST; -+ m_listpos = 0; - return SendData(m_url, "LIST"CRLF); - } - -@@ -1837,6 +1836,9 @@ - */ - if(!PL_strcmp(line, ".")) - { -+ // limit the list if fewer entries than given in STAT response -+ if(m_listpos < m_pop3ConData->number_of_messages) -+ m_pop3ConData->number_of_messages = m_listpos; - m_pop3ConData->next_state = POP3_SEND_UIDL_LIST; - m_pop3ConData->pause_for_read = PR_FALSE; - PR_Free(line); -@@ -1848,24 +1850,15 @@ - if (token) - { - msg_num = atol(token); -+ m_listpos++; - -- if(msg_num <= m_pop3ConData->number_of_messages && msg_num > 0) -+ if(m_listpos <= m_pop3ConData->number_of_messages && m_listpos > 0) - { - token = nsCRT::strtok(newStr, " ", &newStr); - if (token) -- m_pop3ConData->msg_info[msg_num-1].size = atol(token); -- -- if (msg_num >= kLargeNumberOfMessages && msg_num < m_pop3ConData->number_of_messages) - { -- m_pop3ConData->msg_info = (Pop3MsgInfo *) //allocate space for next entry -- PR_REALLOC(m_pop3ConData->msg_info, sizeof(Pop3MsgInfo) * (msg_num + 1)); -- if (!m_pop3ConData->msg_info) -- { -- m_pop3ConData->number_of_messages = msg_num; //so that we don't try to free not allocated entries! -- return(MK_OUT_OF_MEMORY); -- } -- m_pop3ConData->msg_info[msg_num].size = 0; //initialize -- m_pop3ConData->msg_info[msg_num].uidl = nsnull; -+ m_pop3ConData->msg_info[m_listpos-1].size = atol(token); -+ m_pop3ConData->msg_info[m_listpos-1].msgnum = msg_num; - } - } - } -@@ -2101,6 +2094,7 @@ - { - m_pop3ConData->next_state_after_response = POP3_GET_XTND_XLST_MSGID; - m_pop3ConData->pause_for_read = PR_TRUE; -+ m_listpos = 0; - return SendData(m_url, "XTND XLST Message-Id" CRLF); - } - else -@@ -2166,6 +2160,9 @@ - */ - if(!PL_strcmp(line, ".")) - { -+ // limit the list if fewer entries than given in STAT response -+ if(m_listpos < m_pop3ConData->number_of_messages) -+ m_pop3ConData->number_of_messages = m_listpos; - m_pop3ConData->next_state = POP3_GET_MSG; - m_pop3ConData->pause_for_read = PR_FALSE; - PR_Free(line); -@@ -2177,7 +2174,9 @@ - if (token) - { - msg_num = atol(token); -- if(msg_num <= m_pop3ConData->number_of_messages && msg_num > 0) -+ m_listpos++; -+ -+ if(m_listpos <= m_pop3ConData->number_of_messages && m_listpos > 0) - { - /* char *eatMessageIdToken = nsCRT::strtok(newStr, " ", &newStr); */ - char *uidl = nsCRT::strtok(newStr, " ", &newStr);/* not really a uidl but a unique token -km */ -@@ -2189,8 +2188,17 @@ - there, I have no idea; must be a server bug. Or something. */ - uidl = ""; - -- m_pop3ConData->msg_info[msg_num-1].uidl = PL_strdup(uidl); -- if (!m_pop3ConData->msg_info[msg_num-1].uidl) -+ // seeking right entry, but try the one that should it be first -+ PRInt32 i; -+ if(m_pop3ConData->msg_info[m_listpos - 1].msgnum == msg_num) -+ i = m_listpos - 1; -+ else -+ for(i = 0; m_pop3ConData->msg_info[i].msgnum != msg_num && -+ i <= m_pop3ConData->number_of_messages; i++) -+ ; -+ -+ m_pop3ConData->msg_info[i].uidl = PL_strdup(uidl); -+ if (!m_pop3ConData->msg_info[i].uidl) - { - PR_Free(line); - return MK_OUT_OF_MEMORY; -@@ -2209,6 +2217,7 @@ - { - m_pop3ConData->next_state_after_response = POP3_GET_UIDL_LIST; - m_pop3ConData->pause_for_read = PR_TRUE; -+ m_listpos = 0; - return SendData(m_url,"UIDL" CRLF); - } - else -@@ -2264,6 +2273,9 @@ - */ - if(!PL_strcmp(line, ".")) - { -+ // limit the list if fewer entries than given in STAT response -+ if(m_listpos < m_pop3ConData->number_of_messages) -+ m_pop3ConData->number_of_messages = m_listpos; - m_pop3ConData->next_state = POP3_GET_MSG; - m_pop3ConData->pause_for_read = PR_FALSE; - PR_Free(line); -@@ -2275,7 +2287,9 @@ - if (token) - { - msg_num = atol(token); -- if(msg_num <= m_pop3ConData->number_of_messages && msg_num > 0) -+ m_listpos++; -+ -+ if(m_listpos <= m_pop3ConData->number_of_messages && m_listpos > 0) - { - char *uidl = nsCRT::strtok(newStr, " ", &newStr); - -@@ -2286,8 +2300,17 @@ - there, I have no idea; must be a server bug. Or something. */ - uidl = ""; - -- m_pop3ConData->msg_info[msg_num-1].uidl = PL_strdup(uidl); -- if (!m_pop3ConData->msg_info[msg_num-1].uidl) -+ // seeking right entry, but try the one that should it be first -+ PRInt32 i; -+ if(m_pop3ConData->msg_info[m_listpos - 1].msgnum == msg_num) -+ i = m_listpos - 1; -+ else -+ for(i = 0; m_pop3ConData->msg_info[i].msgnum != msg_num && -+ i <= m_pop3ConData->number_of_messages; i++) -+ ; -+ -+ m_pop3ConData->msg_info[i].uidl = PL_strdup(uidl); -+ if (!m_pop3ConData->msg_info[i].uidl) - { - PR_Free(line); - return MK_OUT_OF_MEMORY; -@@ -2603,7 +2626,7 @@ - PRInt32 nsPop3Protocol::SendTop() - { - char * cmd = PR_smprintf( "TOP %ld 20" CRLF, -- m_pop3ConData->last_accessed_msg+1); -+ m_pop3ConData->msg_info[m_pop3ConData->last_accessed_msg].msgnum); - PRInt32 status = -1; - if (cmd) - { -@@ -2624,7 +2647,7 @@ - */ - PRInt32 nsPop3Protocol::SendXsender() - { -- char * cmd = PR_smprintf("XSENDER %ld" CRLF, m_pop3ConData->last_accessed_msg+1); -+ char * cmd = PR_smprintf("XSENDER %ld" CRLF, m_pop3ConData->msg_info[m_pop3ConData->last_accessed_msg].msgnum); - PRInt32 status = -1; - if (cmd) - { -@@ -2662,7 +2685,7 @@ - nsPop3Protocol::SendRetr() - { - -- char * cmd = PR_smprintf("RETR %ld" CRLF, m_pop3ConData->last_accessed_msg+1); -+ char * cmd = PR_smprintf("RETR %ld" CRLF, m_pop3ConData->msg_info[m_pop3ConData->last_accessed_msg].msgnum); - PRInt32 status = -1; - if (cmd) - { -@@ -3071,8 +3094,8 @@ - { - /* increment the last accessed message since we have now read it - */ -+ char * cmd = PR_smprintf("DELE %ld" CRLF, m_pop3ConData->msg_info[m_pop3ConData->last_accessed_msg].msgnum); - m_pop3ConData->last_accessed_msg++; -- char * cmd = PR_smprintf("DELE %ld" CRLF, m_pop3ConData->last_accessed_msg); - PRInt32 status = -1; - if (cmd) - { -Index: mozilla/mailnews/local/src/nsPop3Protocol.h -=================================================================== -RCS file: /cvsroot/mozilla/mailnews/local/src/nsPop3Protocol.h,v -retrieving revision 1.63 -retrieving revision 1.63.10.1 -diff -u -r1.63 -r1.63.10.1 ---- mailnews/local/src/nsPop3Protocol.h 8 Mar 2004 19:50:30 -0000 1.63 -+++ mailnews/local/src/nsPop3Protocol.h 27 Aug 2004 13:15:42 -0000 1.63.10.1 -@@ -191,6 +191,7 @@ - } Pop3UidlHost; - - typedef struct Pop3MsgInfo { -+ PRInt32 msgnum; - PRInt32 size; - char* uidl; - } Pop3MsgInfo; -@@ -350,6 +351,7 @@ - void BackupAuthFlags(); - void RestoreAuthFlags(); - PRInt32 m_origAuthFlags; -+ PRInt32 m_listpos; - - ////////////////////////////////////////////////////////////////////////////////////////// - // Begin Pop3 protocol state handlers diff --git a/mail/thunderbird3/files/patch-250862 b/mail/thunderbird3/files/patch-250862 deleted file mode 100644 index 05423dc84195..000000000000 --- a/mail/thunderbird3/files/patch-250862 +++ /dev/null @@ -1,22 +0,0 @@ -Index: mozilla/xpfe/communicator/resources/content/contentAreaDD.js -=================================================================== -RCS file: /cvsroot/mozilla/xpfe/communicator/resources/content/contentAreaDD.js,v -retrieving revision 1.32 -retrieving revision 1.32.88.1 -diff -u -r1.32 -r1.32.88.1 ---- xpfe/communicator/resources/content/contentAreaDD.js 10 Jul 2002 01:23:50 -0000 1.32 -+++ xpfe/communicator/resources/content/contentAreaDD.js 27 Aug 2004 01:13:39 -0000 1.32.88.1 -@@ -53,8 +53,11 @@ - { - var url = transferUtils.retrieveURLFromData(aXferData.data, aXferData.flavour.contentType); - -- // valid urls don't contain spaces ' '; if we have a space it isn't a valid url so bail out -- if (!url || !url.length || url.indexOf(" ", 0) != -1) -+ // valid urls don't contain spaces ' '; if we have a space it -+ // isn't a valid url, or if it's a javascript: or data: url, -+ // bail out -+ if (!url || !url.length || url.indexOf(" ", 0) != -1 || -+ /^\s*(javascript|data):/.test(url)) - return; - - switch (document.firstChild.getAttribute('windowtype')) { diff --git a/mail/thunderbird3/files/patch-255067 b/mail/thunderbird3/files/patch-255067 deleted file mode 100644 index cddf17ca8328..000000000000 --- a/mail/thunderbird3/files/patch-255067 +++ /dev/null @@ -1,60 +0,0 @@ -Index: mozilla/gfx/src/shared/gfxImageFrame.cpp -=================================================================== -RCS file: /cvsroot/mozilla/gfx/src/shared/gfxImageFrame.cpp,v -retrieving revision 1.26 -retrieving revision 1.26.12.1 -diff -u -r1.26 -r1.26.12.1 ---- gfx/src/shared/gfxImageFrame.cpp 16 Jan 2004 23:28:48 -0000 1.26 -+++ gfx/src/shared/gfxImageFrame.cpp 27 Aug 2004 11:02:58 -0000 1.26.12.1 -@@ -72,6 +72,13 @@ - return NS_ERROR_FAILURE; - } - -+ /* reject over-wide or over-tall images */ -+ const PRInt32 k64KLimit = 0x0000FFFF; -+ if ( aWidth > k64KLimit || aHeight > k64KLimit ){ -+ NS_ERROR("image too big"); -+ return NS_ERROR_FAILURE; -+ } -+ - nsresult rv; - - mOffset.MoveTo(aX, aY); -Index: mozilla/gfx/src/windows/nsImageWin.cpp -=================================================================== -RCS file: /cvsroot/mozilla/gfx/src/windows/nsImageWin.cpp,v -retrieving revision 3.130.2.1 -retrieving revision 3.130.2.1.6.1 -diff -u -r3.130.2.1 -r3.130.2.1.6.1 ---- gfx/src/windows/nsImageWin.cpp 11 May 2004 21:53:49 -0000 3.130.2.1 -+++ gfx/src/windows/nsImageWin.cpp 27 Aug 2004 11:02:58 -0000 3.130.2.1.6.1 -@@ -131,6 +131,10 @@ - return NS_ERROR_UNEXPECTED; - } - -+ // limit images to 64k pixels on a side (~55 feet on a 100dpi monitor) -+ const PRInt32 k64KLimit = 0x0000FFFF; -+ if (aWidth > k64KLimit || aHeight > k64KLimit) -+ return NS_ERROR_FAILURE; - - if (mNumPaletteColors >= 0){ - // If we have a palette -Index: mozilla/modules/libpr0n/decoders/bmp/nsBMPDecoder.cpp -=================================================================== -RCS file: /cvsroot/mozilla/modules/libpr0n/decoders/bmp/nsBMPDecoder.cpp,v -retrieving revision 1.24.2.1 -retrieving revision 1.24.2.1.6.1 -diff -u -r1.24.2.1 -r1.24.2.1.6.1 ---- modules/libpr0n/decoders/bmp/nsBMPDecoder.cpp 13 May 2004 22:27:35 -0000 1.24.2.1 -+++ modules/libpr0n/decoders/bmp/nsBMPDecoder.cpp 27 Aug 2004 11:02:58 -0000 1.24.2.1.6.1 -@@ -274,7 +274,9 @@ - CalcBitShift(); - } - // BMPs with negative width are invalid -- if (mBIH.width < 0) -+ // Reject extremely wide images to keep the math sane -+ const PRInt32 k64KWidth = 0x0000FFFF; -+ if (mBIH.width < 0 || mBIH.width > k64KWidth) - return NS_ERROR_FAILURE; - - PRUint32 real_height = (mBIH.height > 0) ? mBIH.height : -mBIH.height; diff --git a/mail/thunderbird3/files/patch-256316 b/mail/thunderbird3/files/patch-256316 deleted file mode 100644 index 147d15e5303d..000000000000 --- a/mail/thunderbird3/files/patch-256316 +++ /dev/null @@ -1,18 +0,0 @@ -Index: mozilla/netwerk/dns/src/nsIDNService.cpp -=================================================================== -RCS file: /cvsroot/mozilla/netwerk/dns/src/nsIDNService.cpp,v -retrieving revision 1.18 -retrieving revision 1.18.10.1 -diff -u -r1.18 -r1.18.10.1 ---- netwerk/dns/src/nsIDNService.cpp 3 Apr 2004 07:32:18 -0000 1.18 -+++ netwerk/dns/src/nsIDNService.cpp 27 Aug 2004 11:23:21 -0000 1.18.10.1 -@@ -242,6 +242,9 @@ - - NS_IMETHODIMP nsIDNService::Normalize(const nsACString & input, nsACString & output) - { -+ // protect against bogus input -+ NS_ENSURE_TRUE(IsUTF8(input), NS_ERROR_UNEXPECTED); -+ - nsAutoString outUTF16; - nsresult rv = stringPrep(NS_ConvertUTF8toUTF16(input), outUTF16); - if (NS_SUCCEEDED(rv)) diff --git a/mail/thunderbird3/files/patch-257314 b/mail/thunderbird3/files/patch-257314 deleted file mode 100644 index 8bcc707b9dd9..000000000000 --- a/mail/thunderbird3/files/patch-257314 +++ /dev/null @@ -1,31 +0,0 @@ -Index: nsVCardObj.cpp -=================================================================== -RCS file: /cvsroot/mozilla/mailnews/addrbook/src/nsVCardObj.cpp,v -retrieving revision 1.2 -retrieving revision 1.2.24.1 -diff -u -r1.2 -r1.2.24.1 ---- mailnews/addrbook/src/nsVCardObj.cpp 14 Sep 2003 21:45:58 -0000 1.2 -+++ mailnews/addrbook/src/nsVCardObj.cpp 31 Aug 2004 07:44:25 -0000 1.2.24.1 -@@ -1344,16 +1344,13 @@ - - static void writeGroup(OFile *fp, VObject *o) - { -- char buf1[256]; -- char buf2[256]; -- PL_strcpy(buf1,NAME_OF(o)); -- while ((o=isAPropertyOf(o,VCGroupingProp)) != 0) { -- PL_strcpy(buf2,STRINGZ_VALUE_OF(o)); -- PL_strcat(buf2,"."); -- PL_strcat(buf2,buf1); -- PL_strcpy(buf1,buf2); -+ nsCAutoString buf(NAME_OF(o)); -+ -+ while ((o=isAPropertyOf(o,VCGroupingProp)) != 0) { -+ buf.Insert(NS_LITERAL_CSTRING("."), 0); -+ buf.Insert(STRINGZ_VALUE_OF(o), 0); - } -- appendsOFile(fp,buf1); -+ appendsOFile(fp, buf.get()); - } - - static int inList(const char **list, const char *s) diff --git a/mail/thunderbird3/files/patch-258005 b/mail/thunderbird3/files/patch-258005 deleted file mode 100644 index fc20d4b596cf..000000000000 --- a/mail/thunderbird3/files/patch-258005 +++ /dev/null @@ -1,278 +0,0 @@ -Index: nsMsgCompUtils.cpp -=================================================================== -RCS file: /cvsroot/mozilla/mailnews/compose/src/nsMsgCompUtils.cpp,v -retrieving revision 1.161 -retrieving revision 1.161.10.1 -diff -u -r1.161 -r1.161.10.1 ---- mailnews/compose/src/nsMsgCompUtils.cpp 12 Mar 2004 07:23:38 -0000 1.161 -+++ mailnews/compose/src/nsMsgCompUtils.cpp 8 Sep 2004 19:27:53 -0000 1.161.10.1 -@@ -821,16 +821,7 @@ - nsresult rv; - nsCOMPtr<nsIPref> prefs(do_GetService(kPrefCID, &rv)); - -- PRInt32 buffer_size = 2048 + (real_name ? 2*PL_strlen(real_name) : 0) + (base_url ? 2*PL_strlen(base_url) : 0) + -- (type_param ? PL_strlen(type_param) : 0) + (encoding ? PL_strlen(encoding) : 0) + -- (description ? PL_strlen(description) : 0) + (x_mac_type ? PL_strlen(x_mac_type) : 0) + -- (x_mac_creator ? PL_strlen(x_mac_creator) : 0) + (attachmentCharset ? PL_strlen(attachmentCharset) : 0) + -- (bodyCharset ? PL_strlen(bodyCharset) : 0) + (content_id ? PL_strlen(content_id) : 0); -- char *buffer = (char *) PR_Malloc (buffer_size); -- char *buffer_tail = buffer; -- -- if (! buffer) -- return 0; /* NS_ERROR_OUT_OF_MEMORY */ -+ nsCString buf(""); - - NS_ASSERTION (encoding, "null encoding"); - -@@ -874,14 +865,13 @@ - } - } - -- PUSH_STRING ("Content-Type: "); -- PUSH_STRING (type); -- -+ buf.Append("Content-Type: "); -+ buf.Append(type); - if (type_param && *type_param) - { - if (*type_param != ';') -- PUSH_STRING("; "); -- PUSH_STRING(type_param); -+ buf.Append("; "); -+ buf.Append(type_param); - } - - if (mime_type_needs_charset (type)) -@@ -918,8 +908,8 @@ - (PL_strcasecmp(encoding, ENCODING_BASE64) != 0)) && - (*charset_label)) - { -- PUSH_STRING ("; charset="); -- PUSH_STRING (charset_label); -+ buf.Append("; charset="); -+ buf.Append(charset_label); - } - } - -@@ -930,7 +920,7 @@ - if(type && !PL_strcasecmp(type, "text/plain")) - { - if(UseFormatFlowed(bodyCharset)) -- PUSH_STRING ("; format=flowed"); -+ buf.Append("; format=flowed"); - // else - // { - // Don't add a markup. Could use -@@ -942,59 +932,59 @@ - } - - if (x_mac_type && *x_mac_type) { -- PUSH_STRING ("; x-mac-type=\""); -- PUSH_STRING (x_mac_type); -- PUSH_STRING ("\""); -+ buf.Append("; x-mac-type=\""); -+ buf.Append(x_mac_type); -+ buf.Append("\""); - } - - if (x_mac_creator && *x_mac_creator) { -- PUSH_STRING ("; x-mac-creator=\""); -- PUSH_STRING (x_mac_creator); -- PUSH_STRING ("\""); -+ buf.Append("; x-mac-creator=\""); -+ buf.Append(x_mac_creator); -+ buf.Append("\""); - } - - #ifdef EMIT_NAME_IN_CONTENT_TYPE - if (encodedRealName && *encodedRealName) { - if (parmFolding == 0 || parmFolding == 1) { -- PUSH_STRING (";\r\n name=\""); -- PUSH_STRING (encodedRealName); -- PUSH_STRING ("\""); -+ buf.Append(";\r\n name=\""); -+ buf.Append(encodedRealName); -+ buf.Append("\""); - } - else // if (parmFolding == 2) - { - char *rfc2231Parm = RFC2231ParmFolding("name", charset.get(), - nsMsgI18NGetAcceptLanguage(), encodedRealName); - if (rfc2231Parm) { -- PUSH_STRING(";\r\n "); -- PUSH_STRING(rfc2231Parm); -+ buf.Append(";\r\n "); -+ buf.Append(rfc2231Parm); - PR_Free(rfc2231Parm); - } - } - } - #endif /* EMIT_NAME_IN_CONTENT_TYPE */ -+ buf.Append(CRLF); - -- PUSH_NEWLINE (); -+ buf.Append("Content-Transfer-Encoding: "); -+ buf.Append(encoding); - -- PUSH_STRING ("Content-Transfer-Encoding: "); -- PUSH_STRING (encoding); -- PUSH_NEWLINE (); -+ buf.Append(CRLF); - - if (description && *description) { - char *s = mime_fix_header (description); - if (s) { -- PUSH_STRING ("Content-Description: "); -- PUSH_STRING (s); -- PUSH_NEWLINE (); -+ buf.Append("Content-Description: "); -+ buf.Append(s); -+ buf.Append(CRLF); - PR_Free(s); - } - } - - if ( (content_id) && (*content_id) ) - { -- PUSH_STRING ("Content-ID: <"); -- PUSH_STRING (content_id); -- PUSH_STRING (">"); -- PUSH_NEWLINE (); -+ buf.Append("Content-ID: <"); -+ buf.Append(content_id); -+ buf.Append(">"); -+ buf.Append(CRLF); - } - - if (encodedRealName && *encodedRealName) { -@@ -1004,15 +994,15 @@ - rv = prefs->GetIntPref("mail.content_disposition_type", &pref_content_disposition); - NS_ASSERTION(NS_SUCCEEDED(rv), "failed to get mail.content_disposition_type"); - -- PUSH_STRING ("Content-Disposition: "); -+ buf.Append("Content-Disposition: "); - - if (pref_content_disposition == 1) -- PUSH_STRING ("attachment"); -+ buf.Append("attachment"); - else - if (pref_content_disposition == 2 && - (!PL_strcasecmp(type, TEXT_PLAIN) || - (period && !PL_strcasecmp(period, ".txt")))) -- PUSH_STRING("attachment"); -+ buf.Append("attachment"); - - /* If this document is an anonymous binary file or a vcard, - then always show it as an attachment, never inline. */ -@@ -1020,23 +1010,23 @@ - if (!PL_strcasecmp(type, APPLICATION_OCTET_STREAM) || - !PL_strcasecmp(type, TEXT_VCARD) || - !PL_strcasecmp(type, APPLICATION_DIRECTORY)) /* text/x-vcard synonym */ -- PUSH_STRING ("attachment"); -+ buf.Append("attachment"); - else -- PUSH_STRING ("inline"); -+ buf.Append("inline"); - - if (parmFolding == 0 || parmFolding == 1) { -- PUSH_STRING (";\r\n filename=\""); -- PUSH_STRING (encodedRealName); -- PUSH_STRING ("\"" CRLF); -+ buf.Append(";\r\n filename=\""); -+ buf.Append(encodedRealName); -+ buf.Append("\"" CRLF); - } - else // if (parmFolding == 2) - { - char *rfc2231Parm = RFC2231ParmFolding("filename", charset.get(), - nsMsgI18NGetAcceptLanguage(), encodedRealName); - if (rfc2231Parm) { -- PUSH_STRING(";\r\n "); -- PUSH_STRING(rfc2231Parm); -- PUSH_NEWLINE (); -+ buf.Append(";\r\n "); -+ buf.Append(rfc2231Parm); -+ buf.Append(CRLF); - PR_Free(rfc2231Parm); - } - } -@@ -1045,7 +1035,7 @@ - if (type && - (!PL_strcasecmp (type, MESSAGE_RFC822) || - !PL_strcasecmp (type, MESSAGE_NEWS))) -- PUSH_STRING ("Content-Disposition: inline" CRLF); -+ buf.Append("Content-Disposition: inline" CRLF); - - #ifdef GENERATE_CONTENT_BASE - /* If this is an HTML document, and we know the URL it originally -@@ -1079,9 +1069,9 @@ - prefs->GetBoolPref("mail.use_content_location_on_send", &useContentLocation); - - if (useContentLocation) -- PUSH_STRING ("Content-Location: \""); -+ buf.Append("Content-Location: \""); - else -- PUSH_STRING ("Content-Base: \""); -+ buf.Append("Content-Base: \""); - /* rhp - Pref for Content-Location usage */ - - /* rhp: this is to work with the Content-Location stuff */ -@@ -1089,34 +1079,34 @@ - - while (*s != 0 && *s != '#') - { -- const char *ot = buffer_tail; -- -+ PRUint32 ot=buf.Length(); -+ char tmp[]="\x00\x00"; - /* URLs must be wrapped at 40 characters or less. */ - if (col >= 38) { -- PUSH_STRING(CRLF "\t"); -+ buf.Append(CRLF "\t"); - col = 0; - } - - if (*s == ' ') -- PUSH_STRING("%20"); -+ buf.Append("%20"); - else if (*s == '\t') -- PUSH_STRING("%09"); -+ buf.Append("%09"); - else if (*s == '\n') -- PUSH_STRING("%0A"); -+ buf.Append("%0A"); - else if (*s == '\r') -- PUSH_STRING("%0D"); -+ buf.Append("%0D"); - else { -- *buffer_tail++ = *s; -- *buffer_tail = '\0'; -+ tmp[0]=*s; -+ buf.Append(tmp); - } - s++; -- col += (buffer_tail - ot); -+ col += (buf.Length() - ot); - } -- PUSH_STRING ("\"" CRLF); -+ buf.Append("\"" CRLF); - - /* rhp: this is to try to get around this fun problem with Content-Location */ - if (!useContentLocation) { -- PUSH_STRING ("Content-Location: \""); -+ buf.Append("Content-Location: \""); - s = base_url; - col = 0; - useContentLocation = PR_TRUE; -@@ -1130,10 +1120,9 @@ - #endif /* GENERATE_CONTENT_BASE */ - - /* realloc it smaller... */ -- buffer = (char*) PR_REALLOC (buffer, buffer_tail - buffer + 1); - - PR_FREEIF(encodedRealName); -- return buffer; -+ return PL_strdup(buf.get()); - } - - static PRBool isValidHost( const char* host ) diff --git a/mail/thunderbird3/files/patch-Double.cpp b/mail/thunderbird3/files/patch-Double.cpp deleted file mode 100644 index 5cd13e4ff4fe..000000000000 --- a/mail/thunderbird3/files/patch-Double.cpp +++ /dev/null @@ -1,59 +0,0 @@ ---- extensions/transformiix/source/base/Double.cpp.orig Thu Jan 30 09:26:46 2003 -+++ extensions/transformiix/source/base/Double.cpp Sun Nov 16 01:46:42 2003 -@@ -51,10 +51,10 @@ - //A trick to handle IEEE floating point exceptions on FreeBSD - E.D. - #ifdef __FreeBSD__ - #include <ieeefp.h> --#ifdef __alpha__ --fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP; --#else -+#if defined(__i386__) - fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML; -+#else -+fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP; - #endif - fp_except_t oldmask = fpsetmask(~allmask); - #endif -@@ -75,22 +75,31 @@ - #define TX_DOUBLE_HI32_EXPMASK 0x7ff00000 - #define TX_DOUBLE_HI32_MANTMASK 0x000fffff - -+union ui32dun { -+ PRUint32 i[2]; -+ double d; -+}; -+ - //-- Initialize Double related constants - #ifdef IS_BIG_ENDIAN --const PRUint32 nanMask[2] = {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 union ui32dun nanMask = -+ {{TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK, 0xffffffff}}; -+const union ui32dun infMask = -+ {{TX_DOUBLE_HI32_EXPMASK, 0}}; -+const union ui32dun negInfMask = -+ {{TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0}}; - #else --const PRUint32 nanMask[2] = {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 union ui32dun nanMask = -+ {{0xffffffff, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK}}; -+const union ui32dun infMask = -+ {{0, TX_DOUBLE_HI32_EXPMASK}}; -+const union ui32dun negInfMask = -+ {{0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT}}; - #endif - --const double Double::NaN = *((double*)nanMask); --const double Double::POSITIVE_INFINITY = *((double*)infMask); --const double Double::NEGATIVE_INFINITY = *((double*)negInfMask); -+const double Double::NaN = nanMask.d; -+const double Double::POSITIVE_INFINITY = infMask.d; -+const double Double::NEGATIVE_INFINITY = negInfMask.d; - - /* - * Determines whether the given double represents positive or negative diff --git a/mail/thunderbird3/files/patch-build_unix_run-mozilla.sh b/mail/thunderbird3/files/patch-build_unix_run-mozilla.sh deleted file mode 100644 index 28bbd1a1154e..000000000000 --- a/mail/thunderbird3/files/patch-build_unix_run-mozilla.sh +++ /dev/null @@ -1,11 +0,0 @@ ---- build/unix/run-mozilla.sh.orig Mon Dec 15 18:27:28 2003 -+++ build/unix/run-mozilla.sh Fri Feb 27 11:54:10 2004 -@@ -355,7 +355,7 @@ - fi - ## - ## Set LD_LIBRARY_PATH --LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"} -+LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:%%PREFIX%%/lib/browser_plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"} - if [ -n "$LD_LIBRARYN32_PATH" ] - then - LD_LIBRARYN32_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN32_PATH+":$LD_LIBRARYN32_PATH"} diff --git a/mail/thunderbird3/files/patch-config-mkdepend-imakemdep.h b/mail/thunderbird3/files/patch-config-mkdepend-imakemdep.h deleted file mode 100644 index b688e664475d..000000000000 --- a/mail/thunderbird3/files/patch-config-mkdepend-imakemdep.h +++ /dev/null @@ -1,10 +0,0 @@ ---- config/mkdepend/imakemdep.h Fri Sep 4 21:22:25 1998 -+++ config/mkdepend/imakemdep.h Thu Oct 16 22:43:25 2003 -@@ -278,4 +278,7 @@ - "-D__i386__", - # endif -+# if defined(__amd64__) || defined(__x86_64__) -+ "-D__amd64__ -D__x86_64__", -+# endif - # ifdef __GNUC__ - "-traditional", diff --git a/mail/thunderbird3/files/patch-config-rules.mk b/mail/thunderbird3/files/patch-config-rules.mk deleted file mode 100644 index ecc3c8194dcc..000000000000 --- a/mail/thunderbird3/files/patch-config-rules.mk +++ /dev/null @@ -1,14 +0,0 @@ ---- config/rules.mk.orig Tue Aug 26 13:28:47 2003 -+++ config/rules.mk Sun Feb 1 15:11:41 2004 -@@ -444,7 +444,11 @@ - - ifeq ($(OS_ARCH),FreeBSD) - ifdef IS_COMPONENT -+ifneq (,$(filter alpha ia64,$(OS_TEST))) -+EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic -lc -+else - EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic -+endif - endif - endif - diff --git a/mail/thunderbird3/files/patch-configure b/mail/thunderbird3/files/patch-configure deleted file mode 100644 index 9e60372adb33..000000000000 --- a/mail/thunderbird3/files/patch-configure +++ /dev/null @@ -1,38 +0,0 @@ ---- configure.orig Fri Feb 13 01:06:29 2004 -+++ configure Fri Feb 13 01:07:17 2004 -@@ -9181,7 +9181,7 @@ - echo $ac_n "(cached) $ac_c" 1>&6 - else - ac_save_LIBS="$LIBS" --LIBS="-liconv $LIBS" -+LIBS="-L$LOCALBASE/lib -liconv $LIBS" - cat > conftest.$ac_ext <<EOF - #line 9187 "configure" - #include "confdefs.h" -@@ -9212,7 +9212,7 @@ - fi - if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 -- _ICONV_LIBS="$_ICONV_LIBS -liconv" -+ _ICONV_LIBS="$_ICONV_LIBS -L$LOCALBASE/lib -liconv" - else - echo "$ac_t""no" 1>&6 - echo $ac_n "checking for libiconv in -liconv""... $ac_c" 1>&6 -@@ -9222,7 +9222,7 @@ - echo $ac_n "(cached) $ac_c" 1>&6 - else - ac_save_LIBS="$LIBS" --LIBS="-liconv $LIBS" -+LIBS="-L$LOCALBASE/lib -liconv $LIBS" - cat > conftest.$ac_ext <<EOF - #line 9228 "configure" - #include "confdefs.h" -@@ -9253,7 +9253,7 @@ - fi - if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 -- _ICONV_LIBS="$_ICONV_LIBS -liconv" -+ _ICONV_LIBS="$_ICONV_LIBS -L$LOCALBASE/lib -liconv" - else - echo "$ac_t""no" 1>&6 - fi diff --git a/mail/thunderbird3/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp b/mail/thunderbird3/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp deleted file mode 100644 index 41c462d74f62..000000000000 --- a/mail/thunderbird3/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp +++ /dev/null @@ -1,46 +0,0 @@ ---- extensions/typeaheadfind/src/nsTypeAheadFind.cpp.orig Wed Nov 19 01:20:47 2003 -+++ extensions/typeaheadfind/src/nsTypeAheadFind.cpp Tue Feb 10 02:52:26 2004 -@@ -323,11 +323,11 @@ - prefBranch->GetBoolPref("accessibility.typeaheadfind.startlinksonly", - &mStartLinksOnlyPref); - -- PRBool isSoundEnabled = PR_TRUE; -+ mIsSoundEnabled = PR_TRUE; - prefBranch->GetBoolPref("accessibility.typeaheadfind.enablesound", -- &isSoundEnabled); -+ &mIsSoundEnabled); - nsXPIDLCString soundStr; -- if (isSoundEnabled) { -+ if (mIsSoundEnabled && mIsSoundEnabled) { - prefBranch->GetCharPref("accessibility.typeaheadfind.soundURL", - getter_Copies(soundStr)); - } -@@ -758,7 +758,7 @@ - } - else { - // No find string to backspace in! -- if (mIsBackspaceProtectOn) { -+ if (mIsBackspaceProtectOn && mIsSoundEnabled) { - // This flag should be on only if the last key was a backspace. - // It keeps us from accidentally hitting backspace too many times and - // going back in history when we really just wanted to clear -@@ -1012,7 +1012,9 @@ - - // Error sound (don't fire when backspace is pressed, they're - // trying to correct the mistake!) -- PlayNotFoundSound(); -+ if (mIsSoundEnabled) { -+ PlayNotFoundSound(); -+ } - - // Remove bad character from buffer, so we can continue typing from - // last matched character -@@ -1059,7 +1061,7 @@ - void - nsTypeAheadFind::PlayNotFoundSound() - { -- if (mNotFoundSoundURL.IsEmpty()) // no sound -+ if (mNotFoundSoundURL.IsEmpty() || !mIsSoundEnabled) // no sound - return; - if (!mSoundInterface) { - mSoundInterface = do_CreateInstance("@mozilla.org/sound;1"); diff --git a/mail/thunderbird3/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h b/mail/thunderbird3/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h deleted file mode 100644 index 07ad43b4334d..000000000000 --- a/mail/thunderbird3/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h +++ /dev/null @@ -1,12 +0,0 @@ ---- extensions/typeaheadfind/src/nsTypeAheadFind.h.orig Fri May 23 22:00:33 2003 -+++ extensions/typeaheadfind/src/nsTypeAheadFind.h Mon Feb 9 22:21:43 2004 -@@ -194,6 +194,9 @@ - - nsCString mNotFoundSoundURL; - -+ // Move the sound enabled boolean out for all methods to access. -+ PRBool mIsSoundEnabled; -+ - // PRBool's are used instead of PRPackedBool's where the address of the - // boolean variable is getting passed into a method. For example: - // GetBoolPref("accessibility.typeaheadfind.linksonly", &mLinksOnlyPref); diff --git a/mail/thunderbird3/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/mail/thunderbird3/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp deleted file mode 100644 index bc141062f7c6..000000000000 --- a/mail/thunderbird3/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp +++ /dev/null @@ -1,12 +0,0 @@ ---- gfx/src/gtk/nsFontMetricsXft.cpp.orig Wed Mar 17 02:08:01 2004 -+++ gfx/src/gtk/nsFontMetricsXft.cpp Wed Mar 17 02:08:15 2004 -@@ -65,7 +65,8 @@ - - #include <gdk/gdkx.h> - #include <freetype/tttables.h> --#include <freetype/freetype.h> -+#include <ft2build.h> -+#include FT_FREETYPE_H - - #define FORCE_PR_LOG - #include "prlog.h" diff --git a/mail/thunderbird3/files/patch-nspr-unix.c b/mail/thunderbird3/files/patch-nspr-unix.c deleted file mode 100644 index 6bb4ed08fb40..000000000000 --- a/mail/thunderbird3/files/patch-nspr-unix.c +++ /dev/null @@ -1,21 +0,0 @@ ---- nsprpub/pr/src/md/unix/unix.c.orig Sat May 31 18:06:04 2003 -+++ nsprpub/pr/src/md/unix/unix.c Sat May 31 18:04:43 2003 -@@ -65,7 +65,8 @@ - * PRInt32* pointer to a _PRSockLen_t* pointer. - */ - #if defined(HAVE_SOCKLEN_T) \ -- || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2) -+ || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2) \ -+ || defined(FREEBSD) - #define _PRSockLen_t socklen_t - #elif defined(IRIX) || defined(HPUX) || defined(OSF1) || defined(SOLARIS) \ - || defined(AIX4_1) || defined(LINUX) || defined(SONY) \ -@@ -73,7 +74,7 @@ - || defined(SUNOS4) || defined(NCR) || defined(DARWIN) \ - || defined(NEXTSTEP) || defined(QNX) - #define _PRSockLen_t int --#elif (defined(AIX) && !defined(AIX4_1)) || defined(FREEBSD) \ -+#elif (defined(AIX) && !defined(AIX4_1)) \ - || defined(NETBSD) || defined(OPENBSD) || defined(UNIXWARE) \ - || defined(DGUX) || defined(VMS) || defined(NTO) - #define _PRSockLen_t size_t diff --git a/mail/thunderbird3/files/patch-nsprpub-pr-include-md-_freebsd.cfg b/mail/thunderbird3/files/patch-nsprpub-pr-include-md-_freebsd.cfg deleted file mode 100644 index 3ac9a34fbc70..000000000000 --- a/mail/thunderbird3/files/patch-nsprpub-pr-include-md-_freebsd.cfg +++ /dev/null @@ -1,161 +0,0 @@ ---- nsprpub/pr/include/md/_freebsd.cfg.orig Wed Jan 2 18:38:25 2002 -+++ nsprpub/pr/include/md/_freebsd.cfg Sun Feb 1 15:09:53 2004 -@@ -91,7 +91,7 @@ - #define PR_ALIGN_OF_DOUBLE 4 - #define PR_ALIGN_OF_POINTER 4 - --#elif defined(__alpha) -+#elif defined(__alpha__) - - #define IS_LITTLE_ENDIAN 1 - #undef IS_BIG_ENDIAN -@@ -138,6 +138,149 @@ - #define PR_ALIGN_OF_DOUBLE 8 - #define PR_ALIGN_OF_POINTER 8 - -+#elif defined(__sparc64__) -+#undef IS_LITTLE_ENDIAN -+#define IS_BIG_ENDIAN 1 -+#define PR_ALIGN_OF_INT64 8 -+#define PR_ALIGN_OF_DOUBLE 8 -+#define IS_64 -+ -+#define PR_BYTES_PER_BYTE 1 -+#define PR_BYTES_PER_SHORT 2 -+#define PR_BYTES_PER_INT 4 -+#define PR_BYTES_PER_INT64 8 -+#define PR_BYTES_PER_LONG 8 -+#define PR_BYTES_PER_FLOAT 4 -+#define PR_BYTES_PER_DOUBLE 8 -+#define PR_BYTES_PER_WORD 8 -+#define PR_BYTES_PER_DWORD 8 -+#define PR_BYTES_PER_WORD_LOG2 3 -+#define PR_BYTES_PER_DWORD_LOG2 3 -+ -+#define PR_BITS_PER_BYTE 8 -+#define PR_BITS_PER_SHORT 16 -+#define PR_BITS_PER_INT 32 -+#define PR_BITS_PER_INT64 64 -+#define PR_BITS_PER_LONG 64 -+#define PR_BITS_PER_FLOAT 32 -+#define PR_BITS_PER_DOUBLE 64 -+#define PR_BITS_PER_WORD 64 -+ -+#define PR_BITS_PER_BYTE_LOG2 3 -+#define PR_BITS_PER_SHORT_LOG2 4 -+#define PR_BITS_PER_INT_LOG2 5 -+#define PR_BITS_PER_INT64_LOG2 6 -+#define PR_BITS_PER_LONG_LOG2 6 -+#define PR_BITS_PER_FLOAT_LOG2 5 -+#define PR_BITS_PER_DOUBLE_LOG2 6 -+#define PR_BITS_PER_WORD_LOG2 6 -+ -+#define PR_ALIGN_OF_SHORT 2 -+#define PR_ALIGN_OF_INT 4 -+#define PR_ALIGN_OF_LONG 8 -+#define PR_ALIGN_OF_FLOAT 4 -+#define PR_ALIGN_OF_POINTER 8 -+ -+#define HAVE_LONG_LONG -+#define HAVE_ALIGNED_DOUBLES -+#define HAVE_ALIGNED_LONGLONGS -+ -+#elif defined(__ia64__) -+#define IS_LITTLE_ENDIAN 1 -+#undef IS_BIG_ENDIAN -+#define HAVE_LONG_LONG -+#define HAVE_ALIGNED_DOUBLES -+#define HAVE_ALIGNED_LONGLONGS -+#define IS_64 -+ -+#define PR_BYTES_PER_BYTE 1 -+#define PR_BYTES_PER_SHORT 2 -+#define PR_BYTES_PER_INT 4 -+#define PR_BYTES_PER_INT64 8 -+#define PR_BYTES_PER_LONG 8 -+#define PR_BYTES_PER_FLOAT 4 -+#define PR_BYTES_PER_DOUBLE 8 -+#define PR_BYTES_PER_WORD 8 -+#define PR_BYTES_PER_DWORD 8 -+ -+#define PR_BITS_PER_BYTE 8 -+#define PR_BITS_PER_SHORT 16 -+#define PR_BITS_PER_INT 32 -+#define PR_BITS_PER_INT64 64 -+#define PR_BITS_PER_LONG 64 -+#define PR_BITS_PER_FLOAT 32 -+#define PR_BITS_PER_DOUBLE 64 -+#define PR_BITS_PER_WORD 64 -+ -+#define PR_BITS_PER_BYTE_LOG2 3 -+#define PR_BITS_PER_SHORT_LOG2 4 -+#define PR_BITS_PER_INT_LOG2 5 -+#define PR_BITS_PER_INT64_LOG2 6 -+#define PR_BITS_PER_LONG_LOG2 6 -+#define PR_BITS_PER_FLOAT_LOG2 5 -+#define PR_BITS_PER_DOUBLE_LOG2 6 -+#define PR_BITS_PER_WORD_LOG2 6 -+ -+#define PR_ALIGN_OF_SHORT 2 -+#define PR_ALIGN_OF_INT 4 -+#define PR_ALIGN_OF_LONG 8 -+#define PR_ALIGN_OF_INT64 8 -+#define PR_ALIGN_OF_FLOAT 4 -+#define PR_ALIGN_OF_DOUBLE 8 -+#define PR_ALIGN_OF_POINTER 8 -+#define PR_ALIGN_OF_WORD 8 -+ -+#define PR_BYTES_PER_WORD_LOG2 3 -+#define PR_BYTES_PER_DWORD_LOG2 3 -+ -+#elif defined(__amd64__) -+#define IS_LITTLE_ENDIAN 1 -+#undef IS_BIG_ENDIAN -+#define IS_64 -+ -+#define PR_BYTES_PER_BYTE 1 -+#define PR_BYTES_PER_SHORT 2 -+#define PR_BYTES_PER_INT 4 -+#define PR_BYTES_PER_INT64 8 -+#define PR_BYTES_PER_LONG 8 -+#define PR_BYTES_PER_FLOAT 4 -+#define PR_BYTES_PER_DOUBLE 8 -+#define PR_BYTES_PER_WORD 8 -+#define PR_BYTES_PER_DWORD 8 -+ -+#define PR_BITS_PER_BYTE 8 -+#define PR_BITS_PER_SHORT 16 -+#define PR_BITS_PER_INT 32 -+#define PR_BITS_PER_INT64 64 -+#define PR_BITS_PER_LONG 64 -+#define PR_BITS_PER_FLOAT 32 -+#define PR_BITS_PER_DOUBLE 64 -+#define PR_BITS_PER_WORD 64 -+ -+#define PR_BITS_PER_BYTE_LOG2 3 -+#define PR_BITS_PER_SHORT_LOG2 4 -+#define PR_BITS_PER_INT_LOG2 5 -+#define PR_BITS_PER_INT64_LOG2 6 -+#define PR_BITS_PER_LONG_LOG2 6 -+#define PR_BITS_PER_FLOAT_LOG2 5 -+#define PR_BITS_PER_DOUBLE_LOG2 6 -+#define PR_BITS_PER_WORD_LOG2 6 -+ -+#define PR_ALIGN_OF_SHORT 2 -+#define PR_ALIGN_OF_INT 4 -+#define PR_ALIGN_OF_LONG 8 -+#define PR_ALIGN_OF_INT64 8 -+#define PR_ALIGN_OF_FLOAT 4 -+#define PR_ALIGN_OF_DOUBLE 8 -+#define PR_ALIGN_OF_POINTER 8 -+#define PR_ALIGN_OF_WORD 8 -+ -+#define PR_BYTES_PER_WORD_LOG2 3 -+#define PR_BYTES_PER_DWORD_LOG2 3 -+ -+#define HAVE_LONG_LONG -+#define HAVE_ALIGNED_DOUBLES -+#define HAVE_ALIGNED_LONGLONGS - #else - - #error "Unknown CPU architecture" diff --git a/mail/thunderbird3/files/patch-nsprpub-pr-include-md-_freebsd.h b/mail/thunderbird3/files/patch-nsprpub-pr-include-md-_freebsd.h deleted file mode 100644 index 38f21b2ddd6d..000000000000 --- a/mail/thunderbird3/files/patch-nsprpub-pr-include-md-_freebsd.h +++ /dev/null @@ -1,13 +0,0 @@ ---- nsprpub/pr/include/md/_freebsd.h.orig Sat Nov 15 23:36:13 2003 -+++ nsprpub/pr/include/md/_freebsd.h Mon Feb 9 22:24:39 2004 -@@ -50,6 +50,10 @@ - #define _PR_SI_ARCHITECTURE "alpha" - #elif defined(__sparc__) - #define _PR_SI_ARCHITECTURE "sparc" -+#elif defined(__ia64__) -+#define _PR_SI_ARCHITECTURE "ia64" -+#elif defined(__amd64__) -+#define _PR_SI_ARCHITECTURE "amd64" - #else - #error "Unknown CPU architecture" - #endif diff --git a/mail/thunderbird3/files/patch-nsprpub-pr-include-md-_pth.h b/mail/thunderbird3/files/patch-nsprpub-pr-include-md-_pth.h deleted file mode 100644 index 1f8159c70b1f..000000000000 --- a/mail/thunderbird3/files/patch-nsprpub-pr-include-md-_pth.h +++ /dev/null @@ -1,11 +0,0 @@ ---- nsprpub/pr/include/md/_pth.h.orig Mon Jul 26 07:23:42 2004 -+++ nsprpub/pr/include/md/_pth.h Mon Jul 26 07:18:37 2004 -@@ -90,7 +90,7 @@ - #define _PT_PTHREAD_MUTEXATTR_INIT pthread_mutexattr_init - #define _PT_PTHREAD_MUTEXATTR_DESTROY pthread_mutexattr_destroy - #define _PT_PTHREAD_MUTEX_INIT(m, a) pthread_mutex_init(&(m), &(a)) --#define _PT_PTHREAD_MUTEX_IS_LOCKED(m) (EBUSY == pthread_mutex_trylock(&(m))) -+#define _PT_PTHREAD_MUTEX_IS_LOCKED(m) (0 != pthread_mutex_trylock(&(m))) - #if defined(DARWIN) - #define _PT_PTHREAD_CONDATTR_INIT(x) 0 - #else diff --git a/mail/thunderbird3/files/patch-nsprpub-pr-src-io-prprf.c b/mail/thunderbird3/files/patch-nsprpub-pr-src-io-prprf.c deleted file mode 100644 index 74a85ce8b5e2..000000000000 --- a/mail/thunderbird3/files/patch-nsprpub-pr-src-io-prprf.c +++ /dev/null @@ -1,14 +0,0 @@ ---- nsprpub/pr/src/io/prprf.c.orig Mon Mar 8 22:18:19 2004 -+++ nsprpub/pr/src/io/prprf.c Mon May 3 13:00:27 2004 -@@ -51,7 +51,10 @@ - ** Note: on some platforms va_list is defined as an array, - ** and requires array notation. - */ --#if (defined(LINUX) && defined(__x86_64__)) -+#if defined(__amd64__) -+#include <stdarg.h> -+#define VARARGS_ASSIGN(foo, bar) va_copy((foo), (bar)) -+#elif (defined(LINUX) && defined(__x86_64__)) - #define VARARGS_ASSIGN(foo, bar) __va_copy((foo), (bar)) - #elif (defined(LINUX) && defined(__powerpc__)) || \ - (defined(LINUX) && defined(__s390__)) || \ diff --git a/mail/thunderbird3/files/patch-nsprpub-pr-src-pthreads-ptio.c b/mail/thunderbird3/files/patch-nsprpub-pr-src-pthreads-ptio.c deleted file mode 100644 index 08346f235416..000000000000 --- a/mail/thunderbird3/files/patch-nsprpub-pr-src-pthreads-ptio.c +++ /dev/null @@ -1,29 +0,0 @@ ---- nsprpub/pr/src/pthreads/ptio.c.orig Mon Jul 14 17:59:47 2003 -+++ nsprpub/pr/src/pthreads/ptio.c Fri Aug 29 15:39:46 2003 -@@ -189,7 +189,7 @@ - #endif - #endif - --#ifdef DARWIN -+#if defined(DARWIN) || defined(FREEBSD) - static PRBool _pr_ipv6_v6only_on_by_default; - /* The IPV6_V6ONLY socket option is not defined on Mac OS X 10.1. */ - #ifndef IPV6_V6ONLY -@@ -1154,7 +1154,7 @@ - _pr_stderr = pt_SetMethods(2, PR_DESC_FILE, PR_FALSE, PR_TRUE); - PR_ASSERT(_pr_stdin && _pr_stdout && _pr_stderr); - --#ifdef DARWIN -+#if defined(DARWIN) || defined(FREEBSD) - /* In Mac OS X v10.3 Panther Beta the IPV6_V6ONLY socket option - * is turned on by default, contrary to what RFC 3493, Section - * 5.3 says. So we have to turn it off. Find out whether we -@@ -3462,7 +3462,7 @@ - if (osfd == -1) pt_MapError(_PR_MD_MAP_SOCKET_ERROR, errno); - else - { --#ifdef DARWIN -+#if defined(DARWIN) || defined(FREEBSD) - if ((domain == AF_INET6) && _pr_ipv6_v6only_on_by_default) - { - int on = 0; diff --git a/mail/thunderbird3/files/patch-security-coreconf-FreeBSD.mk b/mail/thunderbird3/files/patch-security-coreconf-FreeBSD.mk deleted file mode 100644 index 4f6bccff7cec..000000000000 --- a/mail/thunderbird3/files/patch-security-coreconf-FreeBSD.mk +++ /dev/null @@ -1,12 +0,0 @@ ---- security/coreconf/FreeBSD.mk Thu Oct 16 23:03:47 2003 -+++ security/coreconf/FreeBSD.mk Thu Oct 16 22:53:11 2003 -@@ -44,5 +44,9 @@ - CPU_ARCH = alpha - else -+ifeq ($(OS_TEST),amd64) -+CPU_ARCH = amd64 -+else - CPU_ARCH = x86 -+endif - endif - diff --git a/mail/thunderbird3/files/patch-toolkit_mozapps_extensions_src_nsExtensionManager.js.in b/mail/thunderbird3/files/patch-toolkit_mozapps_extensions_src_nsExtensionManager.js.in deleted file mode 100644 index feffd2c6344f..000000000000 --- a/mail/thunderbird3/files/patch-toolkit_mozapps_extensions_src_nsExtensionManager.js.in +++ /dev/null @@ -1,17 +0,0 @@ ---- toolkit/mozapps/extensions/src/nsExtensionManager.js.in.orig Tue Jul 27 15:35:12 2004 -+++ toolkit/mozapps/extensions/src/nsExtensionManager.js.in Tue Jul 27 15:36:02 2004 -@@ -1568,9 +1568,14 @@ - - _checkForGlobalInstalls: function (aPath, aItemType) - { -+ var fPrefix = "file://"; - // First see if the path supplied is a file path - var file = Components.classes["@mozilla.org/file/local;1"] - .createInstance(Components.interfaces.nsILocalFile); -+ if (aPath.substr(0, fPrefix.length) == fPrefix) { -+ // Strip out the file:// prefix if it exists -+ aPath = aPath.substr(fPrefix.length, aPath.length); -+ } - try { - file.initWithPath(aPath); - } diff --git a/mail/thunderbird3/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc b/mail/thunderbird3/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc deleted file mode 100644 index ac8cab896d48..000000000000 --- a/mail/thunderbird3/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc +++ /dev/null @@ -1,11 +0,0 @@ ---- xpcom/reflect/xptcall/public/xptcstubsdecl.inc.orig Tue Mar 16 03:07:25 2004 -+++ xpcom/reflect/xptcall/public/xptcstubsdecl.inc Mon May 3 13:05:12 2004 -@@ -8,7 +8,7 @@ - * 1 is AddRef - * 2 is Release - */ --#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__)) -+#if !defined(__ia64) - NS_IMETHOD Stub3(); - NS_IMETHOD Stub4(); - NS_IMETHOD Stub5(); diff --git a/mail/thunderbird3/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in b/mail/thunderbird3/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in deleted file mode 100644 index fcde57b85b3a..000000000000 --- a/mail/thunderbird3/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in +++ /dev/null @@ -1,54 +0,0 @@ ---- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Thu Aug 14 21:00:23 2003 -+++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Sun Feb 1 15:06:40 2004 -@@ -49,6 +49,9 @@ - ifeq (86,$(findstring 86,$(OS_TEST))) - CPPSRCS := xptcinvoke_unixish_x86.cpp xptcstubs_unixish_x86.cpp - endif -+ifeq (amd64,$(OS_TEST)) -+CPPSRCS := xptcinvoke_amd64_freebsd.cpp xptcstubs_amd64_freebsd.cpp -+endif - endif - # - # New code for Linux, et. al., with gcc -@@ -60,7 +63,7 @@ - endif - endif - # IA64 Linux --ifneq (,$(filter Linux,$(OS_ARCH))) -+ifneq (,$(filter Linux FreeBSD,$(OS_ARCH))) - ifneq (,$(findstring ia64,$(OS_TEST))) - CPPSRCS := xptcinvoke_ipf64.cpp xptcstubs_ipf64.cpp - ASFILES := xptcstubs_asm_ipf64.s xptcinvoke_asm_ipf64.s -@@ -106,9 +109,15 @@ - ASFILES := xptcinvoke_asm_osf1_alpha.s xptcstubs_asm_osf1_alpha.s - endif - # -+# FreeBSD/Alpha -+# -+ifeq ($(OS_ARCH)$(OS_TEST),FreeBSDalpha) -+CPPSRCS := xptcinvoke_freebsd_alpha.cpp xptcstubs_freebsd_alpha.cpp -+endif -+# - # Linux/Alpha - # --ifneq (,$(filter Linuxalpha FreeBSDalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST))) -+ifneq (,$(filter Linuxalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST))) - CPPSRCS := xptcinvoke_linux_alpha.cpp xptcstubs_linux_alpha.cpp - endif - # -@@ -294,6 +303,15 @@ - ifeq ($(OS_ARCH)$(OS_TEST),NetBSDsparc) - CPPSRCS := xptcinvoke_sparc_netbsd.cpp xptcstubs_sparc_netbsd.cpp - ASFILES := xptcinvoke_asm_sparc_netbsd.s xptcstubs_asm_sparc_netbsd.s -+endif -+# -+# FreeBSD/SPARC64 -+# -+ifeq ($(OS_ARCH),FreeBSD) -+ifneq (,$(findstring sparc,$(OS_TEST))) -+CPPSRCS := xptcinvoke_sparc64_freebsd.cpp xptcstubs_sparc64_freebsd.cpp -+ASFILES := xptcinvoke_asm_sparc64_freebsd.s xptcstubs_asm_sparcv9_solaris.s -+endif - endif - # - # Solaris/SPARC diff --git a/mail/thunderbird3/files/patch-xpinstall-src-nsSoftwareUpdate.cpp b/mail/thunderbird3/files/patch-xpinstall-src-nsSoftwareUpdate.cpp deleted file mode 100644 index ddbe8f4abe91..000000000000 --- a/mail/thunderbird3/files/patch-xpinstall-src-nsSoftwareUpdate.cpp +++ /dev/null @@ -1,11 +0,0 @@ ---- xpinstall/src/nsSoftwareUpdate.cpp.orig Sat May 22 01:02:23 2004 -+++ xpinstall/src/nsSoftwareUpdate.cpp Thu Jul 29 22:48:34 2004 -@@ -512,7 +512,7 @@ - nsSoftwareUpdate::GetInstance) - NS_GENERIC_FACTORY_CONSTRUCTOR(nsInstallTrigger) - NS_GENERIC_FACTORY_CONSTRUCTOR(nsInstallVersion) --NS_GENERIC_FACTORY_CONSTRUCTOR(nsXPInstallManager); -+NS_GENERIC_FACTORY_CONSTRUCTOR(nsXPInstallManager) - NS_GENERIC_FACTORY_CONSTRUCTOR(nsSoftwareUpdateNameSet) - - //---------------------------------------------------------------------- diff --git a/mail/thunderbird3/files/patch-xptcall-alpha b/mail/thunderbird3/files/patch-xptcall-alpha deleted file mode 100644 index 29631a98e61e..000000000000 --- a/mail/thunderbird3/files/patch-xptcall-alpha +++ /dev/null @@ -1,459 +0,0 @@ ---- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp.orig Tue May 27 01:37:25 2003 -+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp Tue May 27 01:37:00 2003 -@@ -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" -+ ); -+ ---- xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp.orig Tue May 27 01:37:30 2003 -+++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp Tue May 27 01:37:04 2003 -@@ -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" -+ diff --git a/mail/thunderbird3/files/patch-xptcall-amd64 b/mail/thunderbird3/files/patch-xptcall-amd64 deleted file mode 100644 index 3227cad02182..000000000000 --- a/mail/thunderbird3/files/patch-xptcall-amd64 +++ /dev/null @@ -1,386 +0,0 @@ ---- /dev/null Wed Dec 31 16:00:00 1969 -+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_amd64_freebsd.cpp Thu Oct 16 22:59:43 2003 -@@ -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; -+} ---- /dev/null Wed Dec 31 16:00:00 1969 -+++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_amd64_freebsd.cpp Thu Oct 16 23:01:08 2003 -@@ -0,0 +1,206 @@ -+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -+ -+// Implement shared vtbl methods. -+ -+#include "xptcprivate.h" -+ -+// The Linux/x86-64 ABI passes the first 6 integral parameters and the -+// first 8 floating point parameters in registers (rdi, rsi, rdx, rcx, -+// r8, r9 and xmm0-xmm7), no stack space is allocated for these by the -+// caller. The rest of the parameters are passed in the callers stack -+// area. -+ -+const PRUint32 PARAM_BUFFER_COUNT = 16; -+const PRUint32 GPR_COUNT = 6; -+const PRUint32 FPR_COUNT = 8; -+ -+// PrepareAndDispatch() is called by SharedStub() and calls the actual method. -+// -+// - 'args[]' contains the arguments passed on stack -+// - 'gpregs[]' contains the arguments passed in integer registers -+// - 'fpregs[]' contains the arguments passed in floating point registers -+// -+// The parameters are mapped into an array of type 'nsXPTCMiniVariant' -+// and then the method gets called. -+ -+extern "C" nsresult -+PrepareAndDispatch(nsXPTCStubBase * self, PRUint32 methodIndex, -+ PRUint64 * args, PRUint64 * gpregs, double *fpregs) -+{ -+ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT]; -+ nsXPTCMiniVariant* dispatchParams = NULL; -+ nsIInterfaceInfo* iface_info = NULL; -+ const nsXPTMethodInfo* info; -+ PRUint32 paramCount; -+ PRUint32 i; -+ nsresult result = NS_ERROR_FAILURE; -+ -+ NS_ASSERTION(self,"no self"); -+ -+ self->GetInterfaceInfo(&iface_info); -+ NS_ASSERTION(iface_info,"no interface info"); -+ if (! iface_info) -+ return NS_ERROR_UNEXPECTED; -+ -+ iface_info->GetMethodInfo(PRUint16(methodIndex), &info); -+ NS_ASSERTION(info,"no method info"); -+ if (! info) -+ return NS_ERROR_UNEXPECTED; -+ -+ paramCount = info->GetParamCount(); -+ -+ // setup variant array pointer -+ if(paramCount > PARAM_BUFFER_COUNT) -+ dispatchParams = new nsXPTCMiniVariant[paramCount]; -+ else -+ dispatchParams = paramBuffer; -+ -+ NS_ASSERTION(dispatchParams,"no place for params"); -+ if (! dispatchParams) -+ return NS_ERROR_OUT_OF_MEMORY; -+ -+ PRUint64* ap = args; -+ PRUint32 nr_gpr = 1; // skip one GPR register for 'that' -+ PRUint32 nr_fpr = 0; -+ PRUint64 value; -+ -+ for(i = 0; i < paramCount; i++) { -+ const nsXPTParamInfo& param = info->GetParam(i); -+ const nsXPTType& type = param.GetType(); -+ nsXPTCMiniVariant* dp = &dispatchParams[i]; -+ -+ if (!param.IsOut() && type == nsXPTType::T_DOUBLE) { -+ if (nr_fpr < FPR_COUNT) -+ dp->val.d = fpregs[nr_fpr++]; -+ else -+ dp->val.d = *(double*) ap++; -+ continue; -+ } -+ else if (!param.IsOut() && type == nsXPTType::T_FLOAT) { -+ if (nr_fpr < FPR_COUNT) -+ // The value in %xmm register is already prepared to -+ // be retrieved as a float. Therefore, we pass the -+ // value verbatim, as a double without conversion. -+ dp->val.d = *(double*) ap++; -+ else -+ dp->val.f = *(float*) ap++; -+ continue; -+ } -+ else { -+ if (nr_gpr < GPR_COUNT) -+ value = gpregs[nr_gpr++]; -+ else -+ value = *ap++; -+ } -+ -+ if (param.IsOut() || !type.IsArithmetic()) { -+ dp->val.p = (void*) value; -+ continue; -+ } -+ -+ switch (type) { -+ case nsXPTType::T_I8: dp->val.i8 = (PRInt8) value; break; -+ case nsXPTType::T_I16: dp->val.i16 = (PRInt16) value; break; -+ case nsXPTType::T_I32: dp->val.i32 = (PRInt32) value; break; -+ case nsXPTType::T_I64: dp->val.i64 = (PRInt64) value; break; -+ case nsXPTType::T_U8: dp->val.u8 = (PRUint8) value; break; -+ case nsXPTType::T_U16: dp->val.u16 = (PRUint16) value; break; -+ case nsXPTType::T_U32: dp->val.u32 = (PRUint32) value; break; -+ case nsXPTType::T_U64: dp->val.u64 = (PRUint64) value; break; -+ case nsXPTType::T_BOOL: dp->val.b = (PRBool) value; break; -+ case nsXPTType::T_CHAR: dp->val.c = (char) value; break; -+ case nsXPTType::T_WCHAR: dp->val.wc = (wchar_t) value; break; -+ -+ default: -+ NS_ASSERTION(0, "bad type"); -+ break; -+ } -+ } -+ -+ result = self->CallMethod((PRUint16) methodIndex, info, dispatchParams); -+ -+ NS_RELEASE(iface_info); -+ -+ if (dispatchParams != paramBuffer) -+ delete [] dispatchParams; -+ -+ return result; -+} -+ -+#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */ -+// Linux/x86-64 uses gcc >= 3.1 -+#define STUB_ENTRY(n) \ -+asm(".section \".text\"\n\t" \ -+ ".align 2\n\t" \ -+ ".if " #n " < 10\n\t" \ -+ ".globl _ZN14nsXPTCStubBase5Stub" #n "Ev\n\t" \ -+ ".type _ZN14nsXPTCStubBase5Stub" #n "Ev,@function\n" \ -+ "_ZN14nsXPTCStubBase5Stub" #n "Ev:\n\t" \ -+ ".elseif " #n " < 100\n\t" \ -+ ".globl _ZN14nsXPTCStubBase6Stub" #n "Ev\n\t" \ -+ ".type _ZN14nsXPTCStubBase6Stub" #n "Ev,@function\n" \ -+ "_ZN14nsXPTCStubBase6Stub" #n "Ev:\n\t" \ -+ ".elseif " #n " < 1000\n\t" \ -+ ".globl _ZN14nsXPTCStubBase7Stub" #n "Ev\n\t" \ -+ ".type _ZN14nsXPTCStubBase7Stub" #n "Ev,@function\n" \ -+ "_ZN14nsXPTCStubBase7Stub" #n "Ev:\n\t" \ -+ ".else\n\t" \ -+ ".err \"stub number " #n " >= 1000 not yet supported\"\n\t" \ -+ ".endif\n\t" \ -+ "movl $" #n ", %eax\n\t" \ -+ "jmp SharedStub\n\t" \ -+ ".if " #n " < 10\n\t" \ -+ ".size _ZN14nsXPTCStubBase5Stub" #n "Ev,.-_ZN14nsXPTCStubBase5Stub" #n "Ev\n\t" \ -+ ".elseif " #n " < 100\n\t" \ -+ ".size _ZN14nsXPTCStubBase6Stub" #n "Ev,.-_ZN14nsXPTCStubBase6Stub" #n "Ev\n\t" \ -+ ".else\n\t" \ -+ ".size _ZN14nsXPTCStubBase7Stub" #n "Ev,.-_ZN14nsXPTCStubBase7Stub" #n "Ev\n\t" \ -+ ".endif"); -+ -+// static nsresult SharedStub(PRUint32 methodIndex) -+asm(".section \".text\"\n\t" -+ ".align 2\n\t" -+ ".type SharedStub,@function\n\t" -+ "SharedStub:\n\t" -+ // make room for gpregs (48), fpregs (64) -+ "pushq %rbp\n\t" -+ "movq %rsp,%rbp\n\t" -+ "subq $112,%rsp\n\t" -+ // save GP registers -+ "movq %rdi,-112(%rbp)\n\t" -+ "movq %rsi,-104(%rbp)\n\t" -+ "movq %rdx, -96(%rbp)\n\t" -+ "movq %rcx, -88(%rbp)\n\t" -+ "movq %r8 , -80(%rbp)\n\t" -+ "movq %r9 , -72(%rbp)\n\t" -+ "leaq -112(%rbp),%rcx\n\t" -+ // save FP registers -+ "movsd %xmm0,-64(%rbp)\n\t" -+ "movsd %xmm1,-56(%rbp)\n\t" -+ "movsd %xmm2,-48(%rbp)\n\t" -+ "movsd %xmm3,-40(%rbp)\n\t" -+ "movsd %xmm4,-32(%rbp)\n\t" -+ "movsd %xmm5,-24(%rbp)\n\t" -+ "movsd %xmm6,-16(%rbp)\n\t" -+ "movsd %xmm7, -8(%rbp)\n\t" -+ "leaq -64(%rbp),%r8\n\t" -+ // rdi has the 'self' pointer already -+ "movl %eax,%esi\n\t" -+ "leaq 16(%rbp),%rdx\n\t" -+ "call PrepareAndDispatch\n\t" -+ "leave\n\t" -+ "ret\n\t" -+ ".size SharedStub,.-SharedStub"); -+ -+#define SENTINEL_ENTRY(n) \ -+nsresult nsXPTCStubBase::Sentinel##n() \ -+{ \ -+ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \ -+ return NS_ERROR_NOT_IMPLEMENTED; \ -+} -+ -+#include "xptcstubsdef.inc" -+ -+#else -+#error "can't find a compiler to use" -+#endif /* __GNUC__ */ diff --git a/mail/thunderbird3/files/patch-xptcall-ia64 b/mail/thunderbird3/files/patch-xptcall-ia64 deleted file mode 100644 index 9cd07f7ddbb2..000000000000 --- a/mail/thunderbird3/files/patch-xptcall-ia64 +++ /dev/null @@ -1,38 +0,0 @@ ---- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ipf64.s.orig Sun Jul 20 00:05:32 2003 -+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ipf64.s Sun Jul 20 00:06:37 2003 -@@ -8,6 +8,7 @@ - // Section has executable code - .section .text, "ax","progbits" - // procedure named 'XPTC_InvokeByIndex' -+ .global XPTC_InvokeByIndex - .proc XPTC_InvokeByIndex - // manual bundling - .explicit -@@ -24,7 +25,7 @@ - - // XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex, - // PRUint32 paramCount, nsXPTCVariant* params); --XPTC_InvokeByIndex:: -+XPTC_InvokeByIndex: - .prologue - .save ar.pfs, r37 - // allocate 4 input args, 6 local args, and 8 output args ---- xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ipf64.s.orig Sun Jul 20 00:02:02 2003 -+++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ipf64.s Sun Jul 20 00:02:40 2003 -@@ -6,6 +6,7 @@ - // Section has executable code - .section .text, "ax","progbits" - // procedure named 'SharedStub' -+ .global SharedStub - .proc SharedStub - // manual bundling - .explicit -@@ -14,7 +15,7 @@ - // .exclass PrepareAndDispatch, @fullyvisible - .type PrepareAndDispatch,@function - --SharedStub:: -+SharedStub: - // 9 arguments, first 8 are the input arguments of previous - // function call. The last one is methodIndex, and is passed in memory - .prologue diff --git a/mail/thunderbird3/files/patch-xptcall-sparc64 b/mail/thunderbird3/files/patch-xptcall-sparc64 deleted file mode 100644 index 9599a8a71336..000000000000 --- a/mail/thunderbird3/files/patch-xptcall-sparc64 +++ /dev/null @@ -1,327 +0,0 @@ ---- /dev/null Mon May 26 13:22:00 2003 -+++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc64_freebsd.cpp Mon May 26 04:12:55 2003 -@@ -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_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_DOUBLE : dp->val.d = *((double*) ap); break; -+ case nsXPTType::T_U64 : dp->val.u64 = *((PRUint64*) 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_FLOAT : dp->val.f = ((float*) ap)[1]; break; -+ 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; -+ 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__ */ ---- /dev/null Mon May 26 13:22:00 2003 -+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc64_freebsd.s Mon May 26 04:06:09 2003 -@@ -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 ---- /dev/null Mon May 26 14:00:00 2003 -+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc64_freebsd.cpp Mon May 26 14:00:49 2003 -@@ -0,0 +1,91 @@ -+/* -*- 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 -+ -+/* Prototype specifies unmangled function name */ -+extern "C" PRUint64 -+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s); -+ -+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; -+} |