head 1.5; access; symbols pkgsrc-2017Q3:1.4.0.26 pkgsrc-2017Q3-base:1.4 pkgsrc-2017Q2:1.4.0.22 pkgsrc-2017Q2-base:1.4 pkgsrc-2017Q1:1.4.0.20 pkgsrc-2017Q1-base:1.4 pkgsrc-2016Q4:1.4.0.18 pkgsrc-2016Q4-base:1.4 pkgsrc-2016Q3:1.4.0.16 pkgsrc-2016Q3-base:1.4 pkgsrc-2016Q2:1.4.0.14 pkgsrc-2016Q2-base:1.4 pkgsrc-2016Q1:1.4.0.12 pkgsrc-2016Q1-base:1.4 pkgsrc-2015Q4:1.4.0.10 pkgsrc-2015Q4-base:1.4 pkgsrc-2015Q3:1.4.0.8 pkgsrc-2015Q3-base:1.4 pkgsrc-2015Q2:1.4.0.6 pkgsrc-2015Q2-base:1.4 pkgsrc-2015Q1:1.4.0.4 pkgsrc-2015Q1-base:1.4 pkgsrc-2014Q4:1.4.0.2 pkgsrc-2014Q4-base:1.4; locks; strict; comment @// @; 1.5 date 2017.09.30.05.34.12; author ryoon; state dead; branches; next 1.4; commitid FvJcfB7R3sEnib9A; 1.4 date 2014.12.02.12.14.40; author ryoon; state Exp; branches; next 1.3; commitid D8BA638n7Y8tIs0y; 1.3 date 2014.12.01.18.11.14; author ryoon; state Exp; branches; next 1.2; commitid jJPLy0Wr2QzMIm0y; 1.2 date 2014.11.26.14.56.28; author ryoon; state Exp; branches; next 1.1; commitid 4PusHZFlQHTVNHZx; 1.1 date 2014.10.15.13.43.32; author ryoon; state Exp; branches; next ; commitid xThioCjhcLRxKiUx; desc @@ 1.5 log @Update to 56.0 New Launched Firefox Screenshots, a feature that lets users take, save, and share screenshots without leaving the browser Added support for address form autofill (en-US only) Updated Preferences Added search tool so users can find a specific setting quickly Reorganized preferences so users can more easily scan settings Rewrote descriptions so users can better understand choices and how they affect browsing Revised data collection choices so they align with updated Privacy Notice and data collection strategy Media opened in a background tab will not play until the tab is selected Improved Send Tabs feature of Sync for iOS and Android, and Send Tabs can be discovered even by users without a Firefox Account Changed Replaced character encoding converters with a new Encoding Standard-compliant implementation written in Rust Added hardware acceleration for AES-GCM Updated the Safe Browsing protocol to version 4 Reduced update download file size by approximately 20 percent Improved security for verifying update downloads Developer Added Layout Panel to CSS Grid DevTools @ text @$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs__arm__netbsd.cpp,v 1.4 2014/12/02 12:14:40 ryoon Exp $ --- xpcom/reflect/xptcall/md/unix/xptcstubs_arm_netbsd.cpp.orig 2014-11-26 12:30:27.000000000 +0000 +++ xpcom/reflect/xptcall/md/unix/xptcstubs_arm_netbsd.cpp @@@@ -6,15 +6,32 @@@@ /* Implement shared vtbl methods. */ #include "xptcprivate.h" +#include "xptiprivate.h" -nsresult ATTRIBUTE_USED +/* Specify explicitly a symbol for this function, don't try to guess the c++ mangled symbol. */ +static nsresult PrepareAndDispatch(nsXPTCStubBase* self, uint32_t methodIndex, uint32_t* args) asm("_PrepareAndDispatch") +ATTRIBUTE_USED; + +#ifdef __ARM_EABI__ +#define DOUBLEWORD_ALIGN(p) ((uint32_t *)((((uint32_t)(p)) + 7) & 0xfffffff8)) +#else +#define DOUBLEWORD_ALIGN(p) (p) +#endif + +// Apple's iOS toolchain is lame and does not support .cfi directives. +#ifdef __APPLE__ +#define CFI(str) +#else +#define CFI(str) str +#endif + +static nsresult PrepareAndDispatch(nsXPTCStubBase* self, uint32_t methodIndex, uint32_t* args) { #define PARAM_BUFFER_COUNT 16 nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT]; nsXPTCMiniVariant* dispatchParams = nullptr; - nsIInterfaceInfo* iface_info = nullptr; const nsXPTMethodInfo* info; uint8_t paramCount; uint8_t i; @@@@ -22,12 +39,7 @@@@ PrepareAndDispatch(nsXPTCStubBase* self, NS_ASSERTION(self,"no self"); - self->GetInterfaceInfo(&iface_info); - NS_ASSERTION(iface_info,"no interface info"); - - iface_info->GetMethodInfo(uint16_t(methodIndex), &info); - NS_ASSERTION(info,"no interface info"); - + self->mEntry->GetMethodInfo(uint16_t(methodIndex), &info); paramCount = info->GetParamCount(); // setup variant array pointer @@@@ -55,13 +67,16 @@@@ PrepareAndDispatch(nsXPTCStubBase* self, case nsXPTType::T_I8 : dp->val.i8 = *((int8_t*) ap); break; case nsXPTType::T_I16 : dp->val.i16 = *((int16_t*) ap); break; case nsXPTType::T_I32 : dp->val.i32 = *((int32_t*) ap); break; - case nsXPTType::T_I64 : dp->val.i64 = *((int64_t*) ap); ap++; break; + case nsXPTType::T_I64 : ap = DOUBLEWORD_ALIGN(ap); + dp->val.i64 = *((int64_t*) ap); ap++; break; case nsXPTType::T_U8 : dp->val.u8 = *((uint8_t*) ap); break; case nsXPTType::T_U16 : dp->val.u16 = *((uint16_t*)ap); break; case nsXPTType::T_U32 : dp->val.u32 = *((uint32_t*)ap); break; - case nsXPTType::T_U64 : dp->val.u64 = *((uint64_t*)ap); ap++; break; + case nsXPTType::T_U64 : ap = DOUBLEWORD_ALIGN(ap); + dp->val.u64 = *((uint64_t*)ap); ap++; break; case nsXPTType::T_FLOAT : dp->val.f = *((float*) ap); break; - case nsXPTType::T_DOUBLE : dp->val.d = *((double*) ap); ap++; break; + case nsXPTType::T_DOUBLE : ap = DOUBLEWORD_ALIGN(ap); + dp->val.d = *((double*) ap); ap++; break; case nsXPTType::T_BOOL : dp->val.b = *((bool*) ap); break; case nsXPTType::T_CHAR : dp->val.c = *((char*) ap); break; case nsXPTType::T_WCHAR : dp->val.wc = *((wchar_t*) ap); break; @@@@ -71,9 +86,7 @@@@ PrepareAndDispatch(nsXPTCStubBase* self, } } - result = self->CallMethod((uint16_t)methodIndex, info, dispatchParams); - - NS_RELEASE(iface_info); + result = self->mOuter->CallMethod((uint16_t)methodIndex, info, dispatchParams); if(dispatchParams != paramBuffer) delete [] dispatchParams; @@@@ -82,26 +95,114 @@@@ PrepareAndDispatch(nsXPTCStubBase* self, } /* - * These stubs move just move the values passed in registers onto the stack, - * so they are contiguous with values passed on the stack, and then calls - * PrepareAndDispatch() to do the dirty work. + * This is our shared stub. + * + * r0 = Self. + * + * The Rules: + * We pass an (undefined) number of arguments into this function. + * The first 3 C++ arguments are in r1 - r3, the rest are built + * by the calling function on the stack. + * + * We are allowed to corrupt r0 - r3, ip, and lr. + * + * Other Info: + * We pass the stub number in using `ip'. + * + * Implementation: + * - We save r1 to r3 inclusive onto the stack, which will be + * immediately below the caller saved arguments. + * - setup r2 (PrepareAndDispatch's args pointer) to point at + * the base of all these arguments + * - Save LR (for the return address) + * - Set r1 (PrepareAndDispatch's methodindex argument) from ip + * - r0 is passed through (self) + * - Call PrepareAndDispatch + * - When the call returns, we return by loading the PC off the + * stack, and undoing the stack (one instruction)! + * */ +__asm__ ("\n" + ".text\n" + ".align 2\n" + "SharedStub:\n" + CFI(".cfi_startproc\n") + "stmfd sp!, {r1, r2, r3}\n" + CFI(".cfi_def_cfa_offset 12\n") + CFI(".cfi_offset r3, -4\n") + CFI(".cfi_offset r2, -8\n") + CFI(".cfi_offset r1, -12\n") + "mov r2, sp\n" + "str lr, [sp, #-4]!\n" + CFI(".cfi_def_cfa_offset 16\n") + CFI(".cfi_offset lr, -16\n") + "mov r1, ip\n" + "bl _PrepareAndDispatch\n" + "ldr pc, [sp], #16\n" + CFI(".cfi_endproc\n")); + +/* + * Create sets of stubs to call the SharedStub. + * We don't touch the stack here, nor any registers, other than IP. + * IP is defined to be corruptable by a called function, so we are + * safe to use it. + * + * This will work with or without optimisation. + */ + +/* + * Note : 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 : + * _ZN14nsXPTCStubBase5Stub9Ev + * _ZN14nsXPTCStubBase6Stub13Ev + * _ZN14nsXPTCStubBase7Stub144Ev + * Use the assembler directives to get the names right... + */ + +#define STUB_ENTRY(n) \ + __asm__( \ + ".section \".text\"\n" \ +" .align 2\n" \ +" .iflt ("#n" - 10)\n" \ +" .globl _ZN14nsXPTCStubBase5Stub"#n"Ev\n" \ +" .type _ZN14nsXPTCStubBase5Stub"#n"Ev,#function\n" \ +"_ZN14nsXPTCStubBase5Stub"#n"Ev:\n" \ +" .else\n" \ +" .iflt ("#n" - 100)\n" \ +" .globl _ZN14nsXPTCStubBase6Stub"#n"Ev\n" \ +" .type _ZN14nsXPTCStubBase6Stub"#n"Ev,#function\n" \ +"_ZN14nsXPTCStubBase6Stub"#n"Ev:\n" \ +" .else\n" \ +" .iflt ("#n" - 1000)\n" \ +" .globl _ZN14nsXPTCStubBase7Stub"#n"Ev\n" \ +" .type _ZN14nsXPTCStubBase7Stub"#n"Ev,#function\n" \ +"_ZN14nsXPTCStubBase7Stub"#n"Ev:\n" \ +" .else\n" \ +" .err \"stub number "#n"> 1000 not yet supported\"\n" \ +" .endif\n" \ +" .endif\n" \ +" .endif\n" \ +" mov ip, #"#n"\n" \ +" b SharedStub\n\t"); + +#if 0 +/* + * This part is left in as comment : this is how the method definition + * should look like. + */ + +#define STUB_ENTRY(n) \ +nsresult nsXPTCStubBase::Stub##n () \ +{ \ + __asm__ ( \ +" mov ip, #"#n"\n" \ +" b SharedStub\n\t"); \ + return 0; /* avoid warnings */ \ +} +#endif -#define STUB_ENTRY(n) \ -__asm__( \ - ".global _Stub"#n"__14nsXPTCStubBase\n\t" \ -"_Stub"#n"__14nsXPTCStubBase:\n\t" \ - "stmfd sp!, {r1, r2, r3} \n\t" \ - "mov ip, sp \n\t" \ - "stmfd sp!, {fp, ip, lr, pc} \n\t" \ - "sub fp, ip, #4 \n\t" \ - "mov r1, #"#n" \n\t" /* = methodIndex */ \ - "add r2, sp, #16 \n\t" \ - "bl _PrepareAndDispatch__FP14nsXPTCStubBaseUiPUi \n\t" \ - "ldmea fp, {fp, sp, lr} \n\t" \ - "add sp, sp, #12 \n\t" \ - "mov pc, lr \n\t" \ -); #define SENTINEL_ENTRY(n) \ nsresult nsXPTCStubBase::Sentinel##n() \ @ 1.4 log @Fix build under NetBSD/evbearmv7hf-el. Remove two more unwind directives. @ text @d1 1 a1 1 $NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs__arm__netbsd.cpp,v 1.2 2014/11/26 14:56:28 ryoon Exp $ @ 1.3 log @Update to 34.0.5 Changelog: New Default search engine changed to Yahoo! for North America New Default search engine changed to Yandex for Belarusian, Kazakh, and Russian locales New Improved search bar (en-US only) New Firefox Hello real-time communication client New Easily switch themes/personas directly in the Customizing mode New Wikipedia search now uses HTTPS for secure searching (en-US only) New Implementation of HTTP/2 (draft14) and ALPN New Recover from a locked Firefox process in the "Firefox is already running" dialog on Windows Changed Disabled SSLv3 Changed Proprietary window.crypto properties/functions re-enabled (to be removed in Firefox 35) Changed Firefox signed by Apple OS X version 2 signature HTML5 ECMAScript 6 WeakSet Implemented HTML5 JavaScript Template Strings Implemented HTML5 CSS3 Font variants and features control (e.g. kerning) implemented HTML5 WebCrypto: RSA-OAEP, PBKDF2 and AES-KW support HTML5 WebCrypto: wrapKey and unwrapKey implemented HTML5 WebCrypto: Import/export of JWK-formatted keys HTML5 matches() DOM API implemented (formerly mozMatchesSelector()) HTML5 Performance.now() for workers implemented HTML5 WebCrypto: ECDH support Developer WebIDE: Create, edit, and test a new Web application from your browser Developer Highlight all nodes that match a given selector in the Style Editor and the Inspector's Rules panel Developer Improved User Interface of the Profiler Developer console.table function added to web console Fixed CSS transitions start correctly when started at the same time as changes to display, position, overflow, and similar properties Fixed Various security fixes 2014-89 Bad casting from the BasicThebesLayer to BasicContainerLayer 2014-88 Buffer overflow while parsing media content 2014-87 Use-after-free during HTML5 parsing 2014-86 CSP leaks redirect data via violation reports 2014-85 XMLHttpRequest crashes with some input streams 2014-84 XBL bindings accessible via improper CSS declarations 2014-83 Miscellaneous memory safety hazards (rv:34.0 / rv:31.3) @ text @d85 1 a85 1 @@@@ -82,26 +95,116 @@@@ PrepareAndDispatch(nsXPTCStubBase* self, a124 1 + ".save {r1, r2, r3}\n" a130 1 + ".save {lr}\n" @ 1.2 log @Try to build under NetBSD/evbearmv7hf-el. Still broken. @ text @d1 1 a1 1 $NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs__arm__netbsd.cpp,v 1.1 2014/10/15 13:43:32 ryoon Exp $ d3 1 a3 1 --- xpcom/reflect/xptcall/md/unix/xptcstubs_arm_netbsd.cpp.orig 2014-11-13 22:50:21.000000000 +0000 d85 1 a85 1 @@@@ -82,26 +95,118 @@@@ PrepareAndDispatch(nsXPTCStubBase* self, a122 1 + ".fnstart\n" d138 1 a138 2 + CFI(".cfi_endproc\n") + ".fnend"); @ 1.1 log @Add missing patches. @ text @d1 1 a1 1 $NetBSD$ d3 1 a3 1 --- xpcom/reflect/xptcall/md/unix/xptcstubs_arm_netbsd.cpp.orig 2014-10-11 09:06:50.000000000 +0000 d5 113 a117 3 @@@@ -86,18 +86,23 @@@@ PrepareAndDispatch(nsXPTCStubBase* self, * so they are contiguous with values passed on the stack, and then calls * PrepareAndDispatch() to do the dirty work. d119 83 a201 4 +#ifndef __ELF__ +#define SYMBOLPREFIX "_" +#else +#define SYMBOLPREFIX d204 2 a205 2 #define STUB_ENTRY(n) \ __asm__( \ d208 6 a213 8 + ".global "SYMBOLPREFIX"Stub"#n"__14nsXPTCStubBase\n\t" \ +SYMBOLPREFIX"Stub"#n"__14nsXPTCStubBase:\n\t" \ "stmfd sp!, {r1, r2, r3} \n\t" \ "mov ip, sp \n\t" \ "stmfd sp!, {fp, ip, lr, pc} \n\t" \ "sub fp, ip, #4 \n\t" \ "mov r1, #"#n" \n\t" /* = methodIndex */ \ "add r2, sp, #16 \n\t" \ d215 7 a221 4 + "bl "SYMBOLPREFIX"PrepareAndDispatch__FP14nsXPTCStubBaseUiPUi \n\t" \ "ldmea fp, {fp, sp, lr} \n\t" \ "add sp, sp, #12 \n\t" \ "mov pc, lr \n\t" \ @