summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorÉtienne Deparis2017-10-18 22:49:56 +0200
committerÉtienne Deparis2017-10-18 22:49:56 +0200
commit9516f0e44cb3e369e6471d5057024e9488515376 (patch)
tree9802d25dbf1a1584e3771b58dd546f7af330388e
parent8df4f6e6d1a17c1fcff2bc7512a7b928194f7659 (diff)
downloadaur-9516f0e44cb3e369e6471d5057024e9488515376.tar.gz
New release
-rw-r--r--.SRCINFO25
-rw-r--r--0001-Bug-1384062-Make-SystemResourceMonitor.stop-more-res.patch (renamed from make_SystemResourceMonitor.stop_more_resilient_to_errors.patch)34
-rw-r--r--PKGBUILD52
-rw-r--r--clip-ft-glyph.diff162
-rw-r--r--harmony-fix.diff16
-rw-r--r--no-crmf.diff15
-rw-r--r--no-plt.diff48
-rw-r--r--plugin-crash.diff50
8 files changed, 147 insertions, 255 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 155d92d1069..e8c39492eb0 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,9 +1,9 @@
# Generated by makepkg 5.0.2
-# Sun Oct 15 14:41:23 UTC 2017
+# Wed Oct 18 20:48:59 UTC 2017
pkgbase = cliqz
pkgdesc = Firefox-based privacy aware web browser, build from sources
- pkgver = 1.15.1
- pkgrel = 2
+ pkgver = 1.16.0
+ pkgrel = 1
url = https://cliqz.com/
arch = i686
arch = x86_64
@@ -33,27 +33,24 @@ pkgbase = cliqz
depends = sqlite
depends = ttf-font
depends = libpulse
- depends = icu
conflicts = cliqz-bin
options = !emptydirs
options = !makeflags
options = !strip
- source = https://github.com/cliqz-oss/browser-f/archive/1.15.1.tar.gz
+ source = https://github.com/cliqz-oss/browser-f/archive/1.16.0.tar.gz
source = wifi-disentangle.patch
source = wifi-fix-interface.patch
- source = clip-ft-glyph.diff
- source = harmony-fix.diff
- source = no-crmf.diff
+ source = no-plt.diff
+ source = plugin-crash.diff
source = glibc-2.26-fix.diff
- source = make_SystemResourceMonitor.stop_more_resilient_to_errors.patch
- sha256sums = 5f0ffe83a7db3608840895dc0fda57ebcc42a6581e3564ffc730f7daa3162803
+ source = 0001-Bug-1384062-Make-SystemResourceMonitor.stop-more-res.patch
+ sha256sums = 720bb3d2e681cfad36e02f4f70980ce8e8d677e0ce4fd8c48af6b60068807716
sha256sums = f068b84ad31556095145d8fefc012dd3d1458948533ed3fff6cbc7250b6e73ed
sha256sums = e98a3453d803cc7ddcb81a7dc83f883230dd8591bdf936fc5a868428979ed1f1
- sha256sums = d5e5580a96ecc4a66ce12dde0737c1ed5cb31017a6ec488ffe372192ed893e1b
- sha256sums = 16bb776e9f3039321db747b2eaece0cda1320f3711fb853a68d67247b0aa065d
- sha256sums = fb85a538044c15471c12cf561d6aa74570f8de7b054a7063ef88ee1bdfc1ccbb
+ sha256sums = ea8e1b871c0f1dd29cdea1b1a2e7f47bf4713e2ae7b947ec832dba7dfcc67daa
+ sha256sums = a7e5d2430bb562f6367deb07417dad4368317e8e8be5d1cfa842c3356de3cfc0
sha256sums = cd7ff441da66a287f8712e60cdc9e216c30355d521051e2eaae28a66d81915e8
- sha256sums = 7760ebe71f4057cbd2f52b715abaf0d944c14c39e2bb2a5322114ad8451e12d9
+ sha256sums = aba767995ffb1a55345e30aaba667f43d469e23bd9b1b68263cf71b8118acc96
pkgname = cliqz
diff --git a/make_SystemResourceMonitor.stop_more_resilient_to_errors.patch b/0001-Bug-1384062-Make-SystemResourceMonitor.stop-more-res.patch
index ff75dcfd0c8..58d029bde35 100644
--- a/make_SystemResourceMonitor.stop_more_resilient_to_errors.patch
+++ b/0001-Bug-1384062-Make-SystemResourceMonitor.stop-more-res.patch
@@ -1,10 +1,9 @@
-
-# HG changeset patch
-# User Mike Hommey <mh+mozilla@glandium.org>
-# Date 1502856976 -32400
-# Node ID 8d9ae8c45dd07496f164364f24c5f43edcf2eb6e
-# Parent fa02d334033f0039ef82b3d7dc194312ba250279
-Bug 1384062 - Make SystemResourceMonitor.stop more resilient to errors. r=ahal,gps
+From 2874ecd82e9671f774bdfda41fe0857fcb916c13 Mon Sep 17 00:00:00 2001
+Message-Id: <2874ecd82e9671f774bdfda41fe0857fcb916c13.1506634385.git.jan.steffens@gmail.com>
+From: Mike Hommey <mh+mozilla@glandium.org>
+Date: Wed, 16 Aug 2017 13:16:16 +0900
+Subject: [PATCH] Bug 1384062 - Make SystemResourceMonitor.stop more resilient
+ to errors. r=ahal,gps
The poll() call in SystemResourceMonitor.stop might fail even though
there is something to read from the pipe, in some corner cases, and
@@ -29,15 +28,17 @@ With all these changes, it feels like the reason to backout bug 1239939
in bug 1272782 should have been dealt with, and we can drop the timeout
again.
+--HG--
+extra : rebase_source : ac72dd5b2602cf3ffddfb429f95e02380f939893
+---
+ .../mozsystemmonitor/resourcemonitor.py | 38 +++++++++++++++-------
+ 1 file changed, 26 insertions(+), 12 deletions(-)
+
diff --git a/testing/mozbase/mozsystemmonitor/mozsystemmonitor/resourcemonitor.py b/testing/mozbase/mozsystemmonitor/mozsystemmonitor/resourcemonitor.py
+index 8f2ac95cbe505540..38f9bc986ac2a120 100644
--- a/testing/mozbase/mozsystemmonitor/mozsystemmonitor/resourcemonitor.py
+++ b/testing/mozbase/mozsystemmonitor/mozsystemmonitor/resourcemonitor.py
-@@ -284,57 +284,71 @@ class SystemResourceMonitor(object):
- """
- if not self._process:
- self._stopped = True
- return
-
+@@ -289,47 +289,61 @@ class SystemResourceMonitor(object):
assert self._running
assert not self._stopped
@@ -111,9 +112,6 @@ diff --git a/testing/mozbase/mozsystemmonitor/mozsystemmonitor/resourcemonitor.p
if len(self.measurements):
self.start_time = self.measurements[0].start
- self.end_time = self.measurements[-1].end
-
- # Methods to record events alongside the monitored data.
-
- def record_event(self, name):
+--
+2.14.2
diff --git a/PKGBUILD b/PKGBUILD
index d0b0ae1902b..e6d08030f39 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,34 +1,32 @@
# Maintainer: Étienne Deparis <etienne@depar.is>
pkgname=cliqz
_pkgname=browser-f
-pkgver=1.15.1
-pkgrel=2
-_cqzbuildid=20170908115024
+pkgver=1.16.0
+pkgrel=1
+_cqzbuildid=20171017104524
pkgdesc="Firefox-based privacy aware web browser, build from sources"
arch=(i686 x86_64)
url="https://cliqz.com/"
license=(MPL2)
depends=(gtk3 gtk2 mozilla-common libxt startup-notification mime-types dbus-glib ffmpeg
- nss hunspell sqlite ttf-font libpulse icu)
+ nss hunspell sqlite ttf-font libpulse)
makedepends=(unzip zip diffutils python2 yasm mesa imake gconf inetutils xorg-server-xvfb
autoconf2.13 rust)
conflicts=(cliqz-bin)
source=("https://github.com/cliqz-oss/browser-f/archive/${pkgver}.tar.gz"
wifi-disentangle.patch
wifi-fix-interface.patch
- clip-ft-glyph.diff
- harmony-fix.diff
- no-crmf.diff
+ no-plt.diff
+ plugin-crash.diff
glibc-2.26-fix.diff
- make_SystemResourceMonitor.stop_more_resilient_to_errors.patch)
-sha256sums=('5f0ffe83a7db3608840895dc0fda57ebcc42a6581e3564ffc730f7daa3162803'
+ 0001-Bug-1384062-Make-SystemResourceMonitor.stop-more-res.patch)
+sha256sums=('720bb3d2e681cfad36e02f4f70980ce8e8d677e0ce4fd8c48af6b60068807716'
'f068b84ad31556095145d8fefc012dd3d1458948533ed3fff6cbc7250b6e73ed'
'e98a3453d803cc7ddcb81a7dc83f883230dd8591bdf936fc5a868428979ed1f1'
- 'd5e5580a96ecc4a66ce12dde0737c1ed5cb31017a6ec488ffe372192ed893e1b'
- '16bb776e9f3039321db747b2eaece0cda1320f3711fb853a68d67247b0aa065d'
- 'fb85a538044c15471c12cf561d6aa74570f8de7b054a7063ef88ee1bdfc1ccbb'
+ 'ea8e1b871c0f1dd29cdea1b1a2e7f47bf4713e2ae7b947ec832dba7dfcc67daa'
+ 'a7e5d2430bb562f6367deb07417dad4368317e8e8be5d1cfa842c3356de3cfc0'
'cd7ff441da66a287f8712e60cdc9e216c30355d521051e2eaae28a66d81915e8'
- '7760ebe71f4057cbd2f52b715abaf0d944c14c39e2bb2a5322114ad8451e12d9')
+ 'aba767995ffb1a55345e30aaba667f43d469e23bd9b1b68263cf71b8118acc96')
options=(!emptydirs !makeflags !strip)
prepare() {
@@ -49,25 +47,23 @@ Name[fr]=Nouvelle fenêtre en mode oubli
Exec=/usr/lib/cliqz/cliqz --private-window %u
END
- # https://bugzilla.mozilla.org/show_bug.cgi?id=1371991
- patch -Np1 -i $srcdir/no-crmf.diff
-
- # https://bugzilla.mozilla.org/show_bug.cgi?id=1385667
- # https://bugzilla.mozilla.org/show_bug.cgi?id=1394149
- patch -Np1 -i $srcdir/glibc-2.26-fix.diff
-
# https://bugzilla.mozilla.org/show_bug.cgi?id=1314968
patch -Np1 -i $srcdir/wifi-disentangle.patch
patch -Np1 -i $srcdir/wifi-fix-interface.patch
- # https://bugzilla.mozilla.org/show_bug.cgi?id=1393467
- patch -Np1 -i $srcdir/clip-ft-glyph.diff
+ # https://bugzilla.mozilla.org/show_bug.cgi?id=1384062
+ patch -Np1 -i $srcdir/0001-Bug-1384062-Make-SystemResourceMonitor.stop-more-res.patch
+
+ # https://bugzilla.mozilla.org/show_bug.cgi?id=1382942
+ patch -Np1 -i $srcdir/no-plt.diff
- # https://bugzilla.mozilla.org/show_bug.cgi?id=1400721
- patch -Np1 -i $srcdir/harmony-fix.diff
+ # https://bugzilla.mozilla.org/show_bug.cgi?id=1400175
+ patch -Np1 -i $srcdir/plugin-crash.diff
+
+ # https://bugzilla.mozilla.org/show_bug.cgi?id=1385667
+ # https://bugzilla.mozilla.org/show_bug.cgi?id=1394149
+ patch -Np1 -i $srcdir/glibc-2.26-fix.diff
- # https://bugzilla.mozilla.org/show_bug.cgi?id=1384062
- patch -Np1 -i $srcdir/make_SystemResourceMonitor.stop_more_resilient_to_errors.patch
# Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
# Note: These are for Arch Linux use ONLY. For your own distribution, please
@@ -90,15 +86,11 @@ ac_add_options --enable-pie
ac_add_options --enable-optimize="-O2"
# System libraries
-ac_add_options --with-system-nspr
-ac_add_options --with-system-nss
-ac_add_options --with-system-icu
ac_add_options --with-system-zlib
ac_add_options --with-system-bz2
ac_add_options --enable-system-hunspell
ac_add_options --enable-system-sqlite
ac_add_options --enable-system-ffi
-ac_add_options --enable-system-pixman
# Features
ac_add_options --enable-startup-notification
diff --git a/clip-ft-glyph.diff b/clip-ft-glyph.diff
deleted file mode 100644
index 4ca70350436..00000000000
--- a/clip-ft-glyph.diff
+++ /dev/null
@@ -1,162 +0,0 @@
-# HG changeset patch
-# User Lee Salzman <lsalzman@mozilla.com>
-# Date 1504120456 14400
-# Wed Aug 30 15:14:16 2017 -0400
-# Node ID 708d52f954b6d7ca2497fcb5b5084c6483300e89
-# Parent 33224536ce20d942576cd4b9ffb350d6dce397bc
-clip FreeType glyph bitmap to mask in Skia
-
-MozReview-Commit-ID: 9NqLj9SkHFo
-
-diff --git a/gfx/skia/skia/src/ports/SkFontHost_FreeType_common.cpp b/gfx/skia/skia/src/ports/SkFontHost_FreeType_common.cpp
---- a/gfx/skia/skia/src/ports/SkFontHost_FreeType_common.cpp
-+++ b/gfx/skia/skia/src/ports/SkFontHost_FreeType_common.cpp
-@@ -390,65 +390,131 @@ void SkScalerContext_FreeType_Base::gene
- const SkMatrix& bitmapTransform)
- {
- const bool doBGR = SkToBool(fRec.fFlags & SkScalerContext::kLCD_BGROrder_Flag);
- const bool doVert = SkToBool(fRec.fFlags & SkScalerContext::kLCD_Vertical_Flag);
-
- switch ( face->glyph->format ) {
- case FT_GLYPH_FORMAT_OUTLINE: {
- FT_Outline* outline = &face->glyph->outline;
-- FT_BBox bbox;
-- FT_Bitmap target;
-
- int dx = 0, dy = 0;
- if (fRec.fFlags & SkScalerContext::kSubpixelPositioning_Flag) {
- dx = SkFixedToFDot6(glyph.getSubXFixed());
- dy = SkFixedToFDot6(glyph.getSubYFixed());
- // negate dy since freetype-y-goes-up and skia-y-goes-down
- dy = -dy;
- }
-- FT_Outline_Get_CBox(outline, &bbox);
-- /*
-- what we really want to do for subpixel is
-- offset(dx, dy)
-- compute_bounds
-- offset(bbox & !63)
-- but that is two calls to offset, so we do the following, which
-- achieves the same thing with only one offset call.
-- */
-- FT_Outline_Translate(outline, dx - ((bbox.xMin + dx) & ~63),
-- dy - ((bbox.yMin + dy) & ~63));
-+
-+ memset(glyph.fImage, 0, glyph.rowBytes() * glyph.fHeight);
-
- if (SkMask::kLCD16_Format == glyph.fMaskFormat) {
-+ FT_Outline_Translate(outline, dx, dy);
- FT_Error err = FT_Render_Glyph(face->glyph, doVert ? FT_RENDER_MODE_LCD_V :
- FT_RENDER_MODE_LCD);
- if (err) {
- SK_TRACEFTR(err, "Could not render glyph.");
-- sk_bzero(glyph.fImage, glyph.computeImageSize());
- return;
- }
-+
- SkMask mask;
- glyph.toMask(&mask);
-+#ifdef SK_SHOW_TEXT_BLIT_COVERAGE
-+ memset(mask.fImage, 0x80, mask.fBounds.height() * mask.fRowBytes);
-+#endif
-+ FT_GlyphSlotRec& ftGlyph = *face->glyph;
-+
-+ if (!SkIRect::Intersects(mask.fBounds,
-+ SkIRect::MakeXYWH( ftGlyph.bitmap_left,
-+ -ftGlyph.bitmap_top,
-+ ftGlyph.bitmap.width,
-+ ftGlyph.bitmap.rows)))
-+ {
-+ return;
-+ }
-+
-+ // If the FT_Bitmap extent is larger, discard bits of the bitmap outside the mask.
-+ // If the SkMask extent is larger, shrink mask to fit bitmap (clearing discarded).
-+ unsigned char* origBuffer = ftGlyph.bitmap.buffer;
-+ // First align the top left (origin).
-+ if (-ftGlyph.bitmap_top < mask.fBounds.fTop) {
-+ int32_t topDiff = mask.fBounds.fTop - (-ftGlyph.bitmap_top);
-+ ftGlyph.bitmap.buffer += ftGlyph.bitmap.pitch * topDiff;
-+ ftGlyph.bitmap.rows -= topDiff;
-+ ftGlyph.bitmap_top = -mask.fBounds.fTop;
-+ }
-+ if (ftGlyph.bitmap_left < mask.fBounds.fLeft) {
-+ int32_t leftDiff = mask.fBounds.fLeft - ftGlyph.bitmap_left;
-+ ftGlyph.bitmap.buffer += leftDiff;
-+ ftGlyph.bitmap.width -= leftDiff;
-+ ftGlyph.bitmap_left = mask.fBounds.fLeft;
-+ }
-+ if (mask.fBounds.fTop < -ftGlyph.bitmap_top) {
-+ mask.fImage += mask.fRowBytes * (-ftGlyph.bitmap_top - mask.fBounds.fTop);
-+ mask.fBounds.fTop = -ftGlyph.bitmap_top;
-+ }
-+ if (mask.fBounds.fLeft < ftGlyph.bitmap_left) {
-+ mask.fImage += sizeof(uint16_t) * (ftGlyph.bitmap_left - mask.fBounds.fLeft);
-+ mask.fBounds.fLeft = ftGlyph.bitmap_left;
-+ }
-+ // Origins aligned, clean up the width and height.
-+ int ftVertScale = (doVert ? 3 : 1);
-+ int ftHoriScale = (doVert ? 1 : 3);
-+ if (mask.fBounds.height() * ftVertScale < SkToInt(ftGlyph.bitmap.rows)) {
-+ ftGlyph.bitmap.rows = mask.fBounds.height() * ftVertScale;
-+ }
-+ if (mask.fBounds.width() * ftHoriScale < SkToInt(ftGlyph.bitmap.width)) {
-+ ftGlyph.bitmap.width = mask.fBounds.width() * ftHoriScale;
-+ }
-+ if (SkToInt(ftGlyph.bitmap.rows) < mask.fBounds.height() * ftVertScale) {
-+ mask.fBounds.fBottom = mask.fBounds.fTop + ftGlyph.bitmap.rows / ftVertScale;
-+ }
-+ if (SkToInt(ftGlyph.bitmap.width) < mask.fBounds.width() * ftHoriScale) {
-+ mask.fBounds.fRight = mask.fBounds.fLeft + ftGlyph.bitmap.width / ftHoriScale;
-+ }
- if (fPreBlend.isApplicable()) {
-- copyFT2LCD16<true>(face->glyph->bitmap, mask, doBGR,
-+ copyFT2LCD16<true>(ftGlyph.bitmap, mask, doBGR,
- fPreBlend.fR, fPreBlend.fG, fPreBlend.fB);
- } else {
-- copyFT2LCD16<false>(face->glyph->bitmap, mask, doBGR,
-+ copyFT2LCD16<false>(ftGlyph.bitmap, mask, doBGR,
- fPreBlend.fR, fPreBlend.fG, fPreBlend.fB);
- }
-+ // Restore the buffer pointer so FreeType can properly free it.
-+ ftGlyph.bitmap.buffer = origBuffer;
- } else {
-+ FT_BBox bbox;
-+ FT_Bitmap target;
-+ FT_Outline_Get_CBox(outline, &bbox);
-+ /*
-+ what we really want to do for subpixel is
-+ offset(dx, dy)
-+ compute_bounds
-+ offset(bbox & !63)
-+ but that is two calls to offset, so we do the following, which
-+ achieves the same thing with only one offset call.
-+ */
-+ FT_Outline_Translate(outline, dx - ((bbox.xMin + dx) & ~63),
-+ dy - ((bbox.yMin + dy) & ~63));
-+
- target.width = glyph.fWidth;
- target.rows = glyph.fHeight;
- target.pitch = glyph.rowBytes();
- target.buffer = reinterpret_cast<uint8_t*>(glyph.fImage);
- target.pixel_mode = compute_pixel_mode( (SkMask::Format)fRec.fMaskFormat);
- target.num_grays = 256;
-
-- memset(glyph.fImage, 0, glyph.rowBytes() * glyph.fHeight);
- FT_Outline_Get_Bitmap(face->glyph->library, outline, &target);
-+#ifdef SK_SHOW_TEXT_BLIT_COVERAGE
-+ for (int y = 0; y < glyph.fHeight; ++y) {
-+ for (int x = 0; x < glyph.fWidth; ++x) {
-+ uint8_t& a = ((uint8_t*)glyph.fImage)[(glyph.rowBytes() * y) + x];
-+ a = SkTMax<uint8_t>(a, 0x20);
-+ }
-+ }
-+#endif
- }
- } break;
-
- case FT_GLYPH_FORMAT_BITMAP: {
- FT_Pixel_Mode pixel_mode = static_cast<FT_Pixel_Mode>(face->glyph->bitmap.pixel_mode);
- SkMask::Format maskFormat = static_cast<SkMask::Format>(glyph.fMaskFormat);
-
- // Assume that the other formats do not exist.
diff --git a/harmony-fix.diff b/harmony-fix.diff
deleted file mode 100644
index 7f62fd480f1..00000000000
--- a/harmony-fix.diff
+++ /dev/null
@@ -1,16 +0,0 @@
-diff --git i/gfx/skia/skia/src/ports/SkFontHost_cairo.cpp w/gfx/skia/skia/src/ports/SkFontHost_cairo.cpp
-index 42da19280fce8235..2c221c32d097b462 100644
---- i/gfx/skia/skia/src/ports/SkFontHost_cairo.cpp
-+++ w/gfx/skia/skia/src/ports/SkFontHost_cairo.cpp
-@@ -666,10 +666,7 @@ void SkScalerContext_CairoFT::generateMetrics(SkGlyph* glyph)
- glyph->fTop = -SkToS16(SkFDot6Floor(bbox.yMax));
- glyph->fLeft = SkToS16(SkFDot6Floor(bbox.xMin));
-
-- if (isLCD(fRec) &&
-- gSetLcdFilter &&
-- (fLcdFilter == FT_LCD_FILTER_DEFAULT ||
-- fLcdFilter == FT_LCD_FILTER_LIGHT)) {
-+ if (isLCD(fRec)) {
- if (fRec.fFlags & kLCD_Vertical_Flag) {
- glyph->fTop -= 1;
- glyph->fHeight += 2;
diff --git a/no-crmf.diff b/no-crmf.diff
deleted file mode 100644
index 242304eb418..00000000000
--- a/no-crmf.diff
+++ /dev/null
@@ -1,15 +0,0 @@
-diff --git i/old-configure.in w/old-configure.in
-index 0a06e470d2085922..d41c8e9d5dd2dbfb 100644
---- i/old-configure.in
-+++ w/old-configure.in
-@@ -2020,9 +2020,7 @@ if test -n "$_USE_SYSTEM_NSS"; then
- AM_PATH_NSS(3.31, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
- fi
-
--if test -n "$MOZ_SYSTEM_NSS"; then
-- NSS_LIBS="$NSS_LIBS -lcrmf"
--else
-+if test -z "$MOZ_SYSTEM_NSS"; then
- NSS_CFLAGS="-I${DIST}/include/nss"
- case "${OS_ARCH}" in
- # Only few platforms have been tested with GYP
diff --git a/no-plt.diff b/no-plt.diff
new file mode 100644
index 00000000000..9014f8b791c
--- /dev/null
+++ b/no-plt.diff
@@ -0,0 +1,48 @@
+diff --git i/security/nss/lib/freebl/mpi/mpi_x86.s w/security/nss/lib/freebl/mpi/mpi_x86.s
+index 8f7e2130c3264754..b3ca1ce5b41b3771 100644
+--- i/security/nss/lib/freebl/mpi/mpi_x86.s
++++ w/security/nss/lib/freebl/mpi/mpi_x86.s
+@@ -22,22 +22,41 @@ is_sse: .long -1
+ #
+ .ifndef NO_PIC
+ .macro GET var,reg
+- movl \var@GOTOFF(%ebx),\reg
++ call thunk.ax
++ addl $_GLOBAL_OFFSET_TABLE_, %eax
++ movl \var@GOTOFF(%eax),\reg
+ .endm
+ .macro PUT reg,var
+- movl \reg,\var@GOTOFF(%ebx)
++ call thunk.dx
++ addl $_GLOBAL_OFFSET_TABLE_, %edx
++ movl \reg,\var@GOTOFF(%edx)
+ .endm
+ .else
+ .macro GET var,reg
+ movl \var,\reg
+ .endm
+ .macro PUT reg,var
+ movl \reg,\var
+ .endm
+ .endif
+
+ .text
+
++.ifndef NO_PIC
++.globl thunk.ax
++.hidden thunk.ax
++.type thunk.ax, @function
++thunk.ax:
++ movl (%esp),%eax
++ ret
++
++.globl thunk.dx
++.hidden thunk.dx
++.type thunk.dx, @function
++thunk.dx:
++ movl (%esp),%edx
++ ret
++.endif
+
+ # ebp - 36: caller's esi
+ # ebp - 32: caller's edi
diff --git a/plugin-crash.diff b/plugin-crash.diff
new file mode 100644
index 00000000000..a9d0ce2e622
--- /dev/null
+++ b/plugin-crash.diff
@@ -0,0 +1,50 @@
+
+# HG changeset patch
+# User Jan Steffens <jan.steffens@gmail.com>
+# Date 1505475854 -7200
+# Node ID 3cd2263687293a229277037090add3bea2531057
+# Parent 70f5f23a429f3d621e44307c191fa84c77fb2f61
+Bug 1400175 - Stub gdk_screen_get_monitor_workarea in mozgtk2; r?karlt
+
+MozReview-Commit-ID: 72K6U17JuoK
+
+diff --git a/widget/gtk/mozgtk/mozgtk.c b/widget/gtk/mozgtk/mozgtk.c
+--- a/widget/gtk/mozgtk/mozgtk.c
++++ b/widget/gtk/mozgtk/mozgtk.c
+@@ -56,17 +56,16 @@
+ STUB(gdk_screen_get_default)
+ STUB(gdk_screen_get_display)
+ STUB(gdk_screen_get_font_options)
+ STUB(gdk_screen_get_height)
+ STUB(gdk_screen_get_height_mm)
+ STUB(gdk_screen_get_n_monitors)
+ STUB(gdk_screen_get_monitor_at_window)
+ STUB(gdk_screen_get_monitor_geometry)
+-STUB(gdk_screen_get_monitor_workarea)
+ STUB(gdk_screen_get_monitor_height_mm)
+ STUB(gdk_screen_get_number)
+ STUB(gdk_screen_get_resolution)
+ STUB(gdk_screen_get_rgba_visual)
+ STUB(gdk_screen_get_root_window)
+ STUB(gdk_screen_get_system_visual)
+ STUB(gdk_screen_get_width)
+ STUB(gdk_screen_height)
+@@ -514,16 +513,17 @@
+ #ifdef GTK3_SYMBOLS
+ STUB(gdk_device_get_source)
+ STUB(gdk_device_manager_get_client_pointer)
+ STUB(gdk_disable_multidevice)
+ STUB(gdk_device_manager_list_devices)
+ STUB(gdk_display_get_device_manager)
+ STUB(gdk_error_trap_pop_ignored)
+ STUB(gdk_event_get_source_device)
++STUB(gdk_screen_get_monitor_workarea)
+ STUB(gdk_window_get_type)
+ STUB(gdk_window_get_window_type)
+ STUB(gdk_x11_window_get_xid)
+ STUB(gdk_x11_display_get_type)
+ STUB(gdk_wayland_display_get_type)
+ STUB(gtk_box_new)
+ STUB(gtk_cairo_should_draw_window)
+ STUB(gtk_cairo_transform_to_window)
+