diff options
author | Splith | 2017-12-01 19:58:35 +0000 |
---|---|---|
committer | Splith | 2017-12-01 20:02:14 +0000 |
commit | 38dc6c94321b279f852987c23ffbc6b94fda06c0 (patch) | |
tree | 5666fb3a80b3a8738c081ab204b62e24f91807b1 | |
download | aur-38dc6c94321b279f852987c23ffbc6b94fda06c0.tar.gz |
Add firefox 56 files
-rw-r--r-- | .SRCINFO | 70 | ||||
-rw-r--r-- | 0001-Bug-1384062-Make-SystemResourceMonitor.stop-more-res.patch | 117 | ||||
-rw-r--r-- | PKGBUILD | 206 | ||||
-rw-r--r-- | firefox-install-dir.patch | 12 | ||||
-rw-r--r-- | firefox-symbolic.svg | 30 | ||||
-rw-r--r-- | firefox56.desktop | 310 | ||||
-rw-r--r-- | glibc-2.26-fix.diff | 258 | ||||
-rw-r--r-- | no-plt.diff | 48 | ||||
-rw-r--r-- | plugin-crash.diff | 50 | ||||
-rwxr-xr-x | upload-symbol-archive | 23 | ||||
-rw-r--r-- | wifi-disentangle.patch | 245 | ||||
-rw-r--r-- | wifi-fix-interface.patch | 26 |
12 files changed, 1395 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..e6dc29955006 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,70 @@ +pkgbase = firefox56 + pkgdesc = Old version of the standalone web browser from mozilla.org + pkgver = 56.0.2 + pkgrel = 1 + url = https://www.mozilla.org/firefox/ + arch = i686 + arch = x86_64 + license = MPL + license = GPL + license = LGPL + makedepends = unzip + makedepends = zip + makedepends = diffutils + makedepends = python2 + makedepends = yasm + makedepends = mesa + makedepends = imake + makedepends = gconf + makedepends = inetutils + makedepends = xorg-server-xvfb + makedepends = autoconf2.13 + makedepends = rust + makedepends = mercurial + makedepends = clang + makedepends = llvm + makedepends = jack + depends = gtk3 + depends = gtk2 + depends = mozilla-common + depends = libxt + depends = startup-notification + depends = mime-types + depends = dbus-glib + depends = ffmpeg + depends = nss + depends = hunspell + depends = sqlite + depends = ttf-font + depends = libpulse + optdepends = networkmanager: Location detection via available WiFi networks + optdepends = libnotify: Notification integration + optdepends = pulseaudio: Audio support + optdepends = speech-dispatcher: Text-to-Speech + provides = firefox + options = !emptydirs + options = !makeflags + options = !strip + source = hg+https://hg.mozilla.org/mozilla-unified#tag=FIREFOX_56_0_2_RELEASE + source = wifi-disentangle.patch + source = wifi-fix-interface.patch + source = 0001-Bug-1384062-Make-SystemResourceMonitor.stop-more-res.patch + source = no-plt.diff + source = plugin-crash.diff + source = glibc-2.26-fix.diff + source = firefox56.desktop + source = firefox-symbolic.svg + source = firefox-install-dir.patch + sha256sums = SKIP + sha256sums = f068b84ad31556095145d8fefc012dd3d1458948533ed3fff6cbc7250b6e73ed + sha256sums = e98a3453d803cc7ddcb81a7dc83f883230dd8591bdf936fc5a868428979ed1f1 + sha256sums = aba767995ffb1a55345e30aaba667f43d469e23bd9b1b68263cf71b8118acc96 + sha256sums = ea8e1b871c0f1dd29cdea1b1a2e7f47bf4713e2ae7b947ec832dba7dfcc67daa + sha256sums = a7e5d2430bb562f6367deb07417dad4368317e8e8be5d1cfa842c3356de3cfc0 + sha256sums = cd7ff441da66a287f8712e60cdc9e216c30355d521051e2eaae28a66d81915e8 + sha256sums = ada313750e6fb14558b37c764409a17c1672a351a46c73b350aa1fe4ea9220ef + sha256sums = a2474b32b9b2d7e0fb53a4c89715507ad1c194bef77713d798fa39d507def9e9 + sha256sums = d86e41d87363656ee62e12543e2f5181aadcff448e406ef3218e91865ae775cd + +pkgname = firefox56 + diff --git a/0001-Bug-1384062-Make-SystemResourceMonitor.stop-more-res.patch b/0001-Bug-1384062-Make-SystemResourceMonitor.stop-more-res.patch new file mode 100644 index 000000000000..58d029bde35a --- /dev/null +++ b/0001-Bug-1384062-Make-SystemResourceMonitor.stop-more-res.patch @@ -0,0 +1,117 @@ +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 +python won't let us know about it. In that case, an exception is thrown, +leaving the SystemResourceMonitor (and its callers) in a weird state. In +practice, this leads BuildMonitor.__exit__ to recall stop, which then +fails. + +So when poll() throws an exception, we pretend there's still something +to read, and we try to read anyways. If there is something to read, +recv() will return it, otherwise, it will throw an exception of its own, +which we catch, pretending we're done. + +Furthermore, when there is nothing to read from the pipe, poll() simply +returns False, and our loop never sets `done` to True, and we then hit +an assert, which doesn't have its place here, so we remove it. + +Finally, the other end of the pipe might have died at any time, making +sending over the pipe fail, so we also protect against that. + +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 +@@ -289,47 +289,61 @@ class SystemResourceMonitor(object): + assert self._running + assert not self._stopped + +- self._pipe.send(('terminate',)) ++ try: ++ self._pipe.send(('terminate',)) ++ except Exception: ++ pass + self._running = False + self._stopped = True + + self.measurements = [] + +- done = False +- + # The child process will send each data sample over the pipe + # as a separate data structure. When it has finished sending + # samples, it sends a special "done" message to indicate it + # is finished. +- while self._pipe.poll(1.0): +- start_time, end_time, io_diff, cpu_diff, cpu_percent, virt_mem, \ +- swap_mem = self._pipe.recv() ++ ++ # multiprocessing.Pipe is not actually a pipe on at least Linux. that ++ # has an effect on the expected outcome of reading from it when the ++ # other end of the pipe dies, leading to possibly hanging on revc() ++ # below. So we must poll(). ++ def poll(): ++ try: ++ return self._pipe.poll(0.1) ++ except Exception: ++ # Poll might throw an exception even though there's still ++ # data to read. That happens when the underlying system call ++ # returns both POLLERR and POLLIN, but python doesn't tell us ++ # about it. So assume there is something to read, and we'll ++ # get an exception when trying to read the data. ++ return True ++ while poll(): ++ try: ++ start_time, end_time, io_diff, cpu_diff, cpu_percent, virt_mem, \ ++ swap_mem = self._pipe.recv() ++ except Exception: ++ # Let's assume we're done here ++ break + + # There should be nothing after the "done" message so + # terminate. + if start_time == 'done': +- done = True + break + + io = self._io_type(*io_diff) + virt = self._virt_type(*virt_mem) + swap = self._swap_type(*swap_mem) + cpu_times = [self._cpu_times_type(*v) for v in cpu_diff] + + self.measurements.append(SystemResourceUsage(start_time, end_time, + cpu_times, cpu_percent, io, virt, swap)) + + # We establish a timeout so we don't hang forever if the child + # process has crashed. + self._process.join(10) + if self._process.is_alive(): + self._process.terminate() + self._process.join(10) +- else: +- # We should have received a "done" message from the +- # child indicating it shut down properly. This only +- # happens if the child shuts down cleanly. +- assert done + + if len(self.measurements): + self.start_time = self.measurements[0].start +-- +2.14.2 + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..eecaaa8e4917 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,206 @@ +# Firefox56 +# Added to AUR by Splith from old PKGBUILD because firefox 57 is everything that is wrong with mozilla +# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> +# Contributor: Ionut Biru <ibiru@archlinux.org> +# Contributor: Jakub Schmidtke <sjakub@gmail.com> + +pkgname=firefox56 +provides=('firefox') +pkgver=56.0.2 +pkgrel=1 +pkgdesc="Old version of the standalone web browser from mozilla.org" +arch=(i686 x86_64) +license=(MPL GPL LGPL) +url="https://www.mozilla.org/firefox/" +depends=(gtk3 gtk2 mozilla-common libxt startup-notification mime-types dbus-glib ffmpeg + nss hunspell sqlite ttf-font libpulse) +makedepends=(unzip zip diffutils python2 yasm mesa imake gconf inetutils xorg-server-xvfb + autoconf2.13 rust mercurial clang llvm jack) +optdepends=('networkmanager: Location detection via available WiFi networks' + 'libnotify: Notification integration' + 'pulseaudio: Audio support' + 'speech-dispatcher: Text-to-Speech') +options=(!emptydirs !makeflags !strip) +_repo=https://hg.mozilla.org/mozilla-unified +source=("hg+$_repo#tag=FIREFOX_${pkgver//./_}_RELEASE" + wifi-disentangle.patch wifi-fix-interface.patch + 0001-Bug-1384062-Make-SystemResourceMonitor.stop-more-res.patch + no-plt.diff plugin-crash.diff glibc-2.26-fix.diff + $pkgname.desktop firefox-symbolic.svg firefox-install-dir.patch) +sha256sums=('SKIP' + 'f068b84ad31556095145d8fefc012dd3d1458948533ed3fff6cbc7250b6e73ed' + 'e98a3453d803cc7ddcb81a7dc83f883230dd8591bdf936fc5a868428979ed1f1' + 'aba767995ffb1a55345e30aaba667f43d469e23bd9b1b68263cf71b8118acc96' + 'ea8e1b871c0f1dd29cdea1b1a2e7f47bf4713e2ae7b947ec832dba7dfcc67daa' + 'a7e5d2430bb562f6367deb07417dad4368317e8e8be5d1cfa842c3356de3cfc0' + 'cd7ff441da66a287f8712e60cdc9e216c30355d521051e2eaae28a66d81915e8' + 'ada313750e6fb14558b37c764409a17c1672a351a46c73b350aa1fe4ea9220ef' + 'a2474b32b9b2d7e0fb53a4c89715507ad1c194bef77713d798fa39d507def9e9' + 'd86e41d87363656ee62e12543e2f5181aadcff448e406ef3218e91865ae775cd') + +# 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 +# get your own set of keys. Feel free to contact foutrelis@archlinux.org for +# more information. +_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM + +# Mozilla API keys (see https://location.services.mozilla.com/api) +# Note: These are for Arch Linux use ONLY. For your own distribution, please +# get your own set of keys. Feel free to contact heftig@archlinux.org for +# more information. +_mozilla_api_key=16674381-f021-49de-8622-3021c5942aff + +prepare() { + mkdir path + ln -s /usr/bin/python2 path/python + + cd mozilla-unified + patch -Np1 -i ../firefox-install-dir.patch + + # https://bugzilla.mozilla.org/show_bug.cgi?id=1314968 + patch -Np1 -i ../wifi-disentangle.patch + patch -Np1 -i ../wifi-fix-interface.patch + + # https://bugzilla.mozilla.org/show_bug.cgi?id=1384062 + patch -Np1 -i ../0001-Bug-1384062-Make-SystemResourceMonitor.stop-more-res.patch + + # https://bugzilla.mozilla.org/show_bug.cgi?id=1382942 + patch -Np1 -i ../no-plt.diff + + # https://bugzilla.mozilla.org/show_bug.cgi?id=1400175 + patch -Np1 -i ../plugin-crash.diff + + # https://bugzilla.mozilla.org/show_bug.cgi?id=1385667 + # https://bugzilla.mozilla.org/show_bug.cgi?id=1394149 + patch -Np1 -i ../glibc-2.26-fix.diff + + echo -n "$_google_api_key" >google-api-key + echo -n "$_mozilla_api_key" >mozilla-api-key + + cat >.mozconfig <<END +ac_add_options --enable-application=browser + +ac_add_options --prefix=/usr +ac_add_options --enable-release +ac_add_options --enable-gold +ac_add_options --enable-pie +ac_add_options --enable-optimize="-O2" + +# Branding +ac_add_options --enable-official-branding +ac_add_options --enable-update-channel=release +ac_add_options --with-distribution-id=org.archlinux +export MOZILLA_OFFICIAL=1 +export MOZ_TELEMETRY_REPORTING=0 +export MOZ_ADDON_SIGNING=1 +export MOZ_REQUIRE_SIGNING=1 + +# Keys +ac_add_options --with-google-api-keyfile=${PWD@Q}/google-api-key +ac_add_options --with-mozilla-api-keyfile=${PWD@Q}/mozilla-api-key + +# System libraries +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 + +# Features +ac_add_options --enable-alsa +ac_add_options --enable-jack +ac_add_options --enable-startup-notification +ac_add_options --enable-crashreporter +ac_add_options --disable-updater +ac_add_options --disable-stylo +END +} + +build() { + cd mozilla-unified + + # _FORTIFY_SOURCE causes configure failures + CPPFLAGS+=" -O2" + + export PATH="$srcdir/path:$PATH" + export MOZ_SOURCE_REPO="$_repo" + + # Do PGO + #xvfb-run -a -n 95 -s "-extension GLX -screen 0 1280x1024x24" \ + # MOZ_PGO=1 ./mach build + ./mach build + ./mach buildsymbols +} + +package() { + cd mozilla-unified + DESTDIR="$pkgdir" ./mach install + find . -name '*crashreporter-symbols-full.zip' -exec cp -fvt "$startdir" {} + + + _vendorjs="$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js" + install -Dm644 /dev/stdin "$_vendorjs" <<END +// Use LANG environment variable to choose locale +pref("intl.locale.matchOS", true); + +// Disable default browser checking. +pref("browser.shell.checkDefaultBrowser", false); + +// Don't disable our bundled extensions in the application directory +pref("extensions.autoDisableScopes", 11); +pref("extensions.shownSelectionUI", true); + +// Opt all of us into e10s, instead of just 50% +pref("browser.tabs.remote.autostart", true); +END + + _distini="$pkgdir/usr/lib/$pkgname/distribution/distribution.ini" + install -Dm644 /dev/stdin "$_distini" <<END +[Global] +id=archlinux +version=1.0 +about=Mozilla Firefox for Arch Linux + +[Preferences] +app.distributor=archlinux +app.distributor.channel=$pkgname +app.partner.archlinux=archlinux +END + + for i in 16 22 24 32 48 256; do + install -Dm644 browser/branding/official/default$i.png \ + "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$pkgname.png" + done + install -Dm644 browser/branding/official/content/icon64.png \ + "$pkgdir/usr/share/icons/hicolor/64x64/apps/$pkgname.png" + install -Dm644 browser/branding/official/mozicon128.png \ + "$pkgdir/usr/share/icons/hicolor/128x128/apps/$pkgname.png" + install -Dm644 browser/branding/official/content/about-logo.png \ + "$pkgdir/usr/share/icons/hicolor/192x192/apps/$pkgname.png" + install -Dm644 browser/branding/official/content/about-logo@2x.png \ + "$pkgdir/usr/share/icons/hicolor/384x384/apps/$pkgname.png" + install -Dm644 ../firefox-symbolic.svg \ + "$pkgdir/usr/share/icons/hicolor/symbolic/apps/$pkgname-symbolic.svg" + + install -Dm644 ../$pkgname.desktop \ + "$pkgdir/usr/share/applications/$pkgname.desktop" + + # Use system-provided dictionaries + rm -r "$pkgdir"/usr/lib/$pkgname/dictionaries + ln -Ts /usr/share/hunspell "$pkgdir/usr/lib/$pkgname/dictionaries" + ln -Ts /usr/share/hyphen "$pkgdir/usr/lib/$pkgname/hyphenation" + + # Install a wrapper to avoid confusion about binary path + install -Dm755 /dev/stdin "$pkgdir/usr/bin/$pkgname" <<END +#!/bin/sh +exec /usr/lib/$pkgname/firefox "\$@" +END + + # Replace duplicate binary with wrapper + # https://bugzilla.mozilla.org/show_bug.cgi?id=658850 + ln -srf "$pkgdir/usr/bin/$pkgname" \ + "$pkgdir/usr/lib/$pkgname/firefox-bin" + + # Use system certificates + ln -srf "$pkgdir/usr/lib/libnssckbi.so" \ + "$pkgdir/usr/lib/$pkgname/libnssckbi.so" +} diff --git a/firefox-install-dir.patch b/firefox-install-dir.patch new file mode 100644 index 000000000000..51fe4ba0a855 --- /dev/null +++ b/firefox-install-dir.patch @@ -0,0 +1,12 @@ +diff -up firefox-29.0/mozilla-release/config/baseconfig.mk.orig firefox-29.0/mozilla-release/config/baseconfig.mk +--- mozilla-release/config/baseconfig.mk.orig 2014-04-22 15:38:52.948165295 +0200 ++++ mozilla-release/config/baseconfig.mk 2014-04-22 15:42:20.387481673 +0200 +@@ -4,7 +4,7 @@ + # whether a normal build is happening or whether the check is running. + includedir := $(includedir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) + idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) +-installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) ++installdir = $(libdir)/$(MOZ_APP_NAME) + sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION) + ifndef TOP_DIST + TOP_DIST = dist diff --git a/firefox-symbolic.svg b/firefox-symbolic.svg new file mode 100644 index 000000000000..7a2c73e455d4 --- /dev/null +++ b/firefox-symbolic.svg @@ -0,0 +1,30 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='firefox-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:osb='http://www.openswatchbook.org/uri/2009/osb' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' version='1.1' inkscape:version='0.91 r13725' width='16' xmlns='http://www.w3.org/2000/svg'> + <metadata id='metadata90'> + <rdf:RDF> + <cc:Work rdf:about=''> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/> + <dc:title>Gnome Symbolic Icon Theme</dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview inkscape:bbox-paths='true' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer9' inkscape:cx='-10.975734' inkscape:cy='233.73843' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#555753' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='true' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='true' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1403' inkscape:window-maximized='1' inkscape:window-width='2560' inkscape:window-x='2560' inkscape:window-y='0' inkscape:zoom='1'> + <inkscape:grid empspacing='2' enabled='true' id='grid4866' originx='-222.00001' originy='-381.99852' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/> + </sodipodi:namedview> + <title id='title9167'>Gnome Symbolic Icon Theme</title> + <defs id='defs7386'> + <linearGradient id='linearGradient7212' osb:paint='solid'> + <stop id='stop7214' offset='0' style='stop-color:#000000;stop-opacity:1;'/> + </linearGradient> + </defs> + <g inkscape:groupmode='layer' id='layer9' inkscape:label='apps' style='display:inline' transform='translate(-463.00021,164.99852)'> + + <path inkscape:connector-curvature='0' d='M 469.05437,-154.9679 Z' id='path17747' style='fill:none;stroke:#000000;stroke-width:0.99851286px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1'/> + <path inkscape:connector-curvature='0' d='M 469.08553,-154.9054 Z' id='path17749' style='fill:none;stroke:#000000;stroke-width:0.99851286px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1'/> + <path inkscape:connector-curvature='0' d='m 473.0627,-162.9375 c -0.41568,-0.0182 -0.62813,0.0274 -0.625,0.0312 0.006,0.008 1.72988,0.32697 2.03125,0.75 0,0 -0.71915,0.007 -1.4375,0.21875 -0.0325,0.01 2.64053,0.33122 3.1875,3.0625 0,0 -0.29354,-0.64386 -0.65625,-0.75 0.23852,0.74134 0.16466,2.17583 -0.0625,2.875 -0.0292,0.0899 -0.0525,-0.38762 -0.5,-0.59375 0.14332,1.04923 -0.006,2.6978 -0.71875,3.15625 -0.0555,0.0357 0.43942,-1.64894 0.0937,-1 -2.06368,3.2325 -4.50486,1.31102 -5.5,0.625 0.79871,0.19996 1.80035,0.0704 2.125,-0.15625 0.49572,-0.34615 0.79916,-0.59107 1.0625,-0.53125 0.26322,0.0601 0.42318,-0.22934 0.21875,-0.46875 -0.20466,-0.23989 -0.70268,-0.55471 -1.375,-0.375 -0.47415,0.12687 -1.04057,0.54268 -1.9375,0 -0.7652,-0.46319 -0.67076,-0.69942 -0.67076,-0.93907 0,-0.23977 0.21387,-0.59107 0.59375,-0.53125 0.0851,0.0134 0.15074,0.009 0.1875,0 0.18483,0.0422 0.35743,0.0964 0.53125,0.1875 0.008,-0.2241 -0.0292,-0.87345 -0.15625,-1.23012 0.0106,0.004 0.0289,0.011 0.0312,0 0.0384,-0.17687 1.05477,-0.18386 1.37388,-0.59643 0.20404,-0.26362 0.14073,-0.79683 0.14073,-0.79683 l -1,0 c -0.52354,0.002 -0.97244,-0.75086 -1.01451,-0.85669 0.11444,-0.62597 0.48612,-0.83952 1.01451,-1.14331 -0.39748,-0.003 -0.18871,0 -1,0 -0.52875,0 -0.84718,0.36158 -1.01451,0.54956 -0.70058,-0.16587 -1.38144,-0.25227 -1.86049,-0.0609 -0.22125,-0.22941 -0.39604,-0.80055 -0.42188,-1.48863 0,0 -1.20486,0.73864 -1.07812,2.55113 -0.002,0.14904 -0.0499,0.21348 -0.0625,0.3125 -0.13061,0.22845 -0.1553,0.40492 -0.125,0.375 -0.0656,0.13627 -0.15391,0.28402 -0.21875,0.46875 -0.0149,0.0362 -0.0495,0.0463 -0.0625,0.0937 -0.009,0.0322 0.002,0.0638 0,0.0937 -0.11512,0.36099 -0.21516,0.98244 -0.3125,1.54262 0,0 0.12424,-0.51425 0.3125,-0.88637 -0.15639,0.54353 -0.26211,1.54974 -0.1875,2.73012 0,0 0.015,-0.20429 0.0625,-0.5 0.0465,0.80102 0.25925,1.72737 0.84375,2.75 1.46152,2.5575 3.89248,3.68885 6.4375,3.46875 0.44516,-0.0296 0.89639,-0.10834 1.34375,-0.21875 5.92923,-1.46449 5.28125,-8.78118 5.28125,-8.78118 l -0.15625,1.09375 c 0,0 -0.24147,-1.99977 -0.53125,-2.75 -0.44412,-1.14957 -0.62372,-1.15791 -0.625,-1.15625 0.29743,0.77226 0.21875,1.1875 0.21875,1.1875 0,0 -0.51279,-1.43939 -1.90625,-1.90625 -0.82515,-0.27632 -1.45932,-0.38807 -1.875,-0.40625 z' id='path159-6' sodipodi:nodetypes='sccccccccccsccccscccccscccccccccccccccccccccccccccs' style='fill:#bebebe;fill-opacity:1;stroke:none'/> + <path inkscape:connector-curvature='0' d='m 470.87695,-164.01953 c -0.83043,0.0139 -1.67042,0.17659 -2.48047,0.5 l -0.46289,0.18359 c 0.66083,0.79767 1.84339,0.43951 1.84339,0.43951 2.50802,-0.52344 5.12427,0.6034 6.44177,2.89252 1.49591,2.59908 0.85463,5.89258 -1.50586,7.74219 -2.36049,1.84961 -5.71108,1.68349 -7.87695,-0.39062 -2.16588,-2.07412 -2.47623,-5.41522 -0.73047,-7.85352 l 0.29101,-0.40625 -0.81445,-0.58203 -0.29101,0.40625 c -2.03104,2.83673 -1.66628,6.74516 0.85351,9.1582 2.5198,2.41305 6.43934,2.60693 9.18555,0.45508 2.74621,-2.15185 3.49621,-6.00355 1.75586,-9.02734 -1.30527,-2.26785 -3.7177,-3.55935 -6.20899,-3.51758 z' id='path22109' sodipodi:nodetypes='ccccsssccccsssc' style='color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate'/> + </g> +</svg> diff --git a/firefox56.desktop b/firefox56.desktop new file mode 100644 index 000000000000..2014e9ecfba9 --- /dev/null +++ b/firefox56.desktop @@ -0,0 +1,310 @@ +[Desktop Entry] +Version=1.0 +Name=Firefox +GenericName=Web Browser +GenericName[ar]=متصفح وِب +GenericName[ast]=Restolador Web +GenericName[bn]=ওয়েব ব্রাউজার +GenericName[ca]=Navegador web +GenericName[cs]=Webový prohlížeč +GenericName[da]=Webbrowser +GenericName[de]=Webbrowser +GenericName[el]=Περιηγητής διαδικτύου +GenericName[es]=Navegador web +GenericName[et]=Veebibrauser +GenericName[fa]=مرورگر اینترنتی +GenericName[fi]=WWW-selain +GenericName[fr]=Navigateur Web +GenericName[gl]=Navegador Web +GenericName[he]=דפדפן אינטרנט +GenericName[hr]=Web preglednik +GenericName[hu]=Webböngésző +GenericName[it]=Browser Web +GenericName[ja]=ウェブ・ブラウザ +GenericName[ko]=웹 브라우저 +GenericName[ku]=Geroka torê +GenericName[lt]=Interneto naršyklė +GenericName[nb]=Nettleser +GenericName[nl]=Webbrowser +GenericName[nn]=Nettlesar +GenericName[no]=Nettleser +GenericName[pl]=Przeglądarka WWW +GenericName[pt]=Navegador Web +GenericName[pt_BR]=Navegador Web +GenericName[ro]=Navigator Internet +GenericName[ru]=Веб-браузер +GenericName[sk]=Internetový prehliadač +GenericName[sl]=Spletni brskalnik +GenericName[sv]=Webbläsare +GenericName[tr]=Web Tarayıcı +GenericName[ug]=توركۆرگۈ +GenericName[uk]=Веб-браузер +GenericName[vi]=Trình duyệt Web +GenericName[zh_CN]=网络浏览器 +GenericName[zh_TW]=網路瀏覽器 +Comment=Browse the Web +Comment[ar]=تصفح الوِب +Comment[ast]=Restola pela Rede +Comment[bn]=ইন্টারনেট ব্রাউজ করুন +Comment[ca]=Navegueu per el web +Comment[cs]=Prohlížení stránek World Wide Webu +Comment[da]=Surf på internettet +Comment[de]=Im Internet surfen +Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web) +Comment[es]=Navegue por la web +Comment[et]=Lehitse veebi +Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید +Comment[fi]=Selaa Internetin WWW-sivuja +Comment[fr]=Naviguer sur le Web +Comment[gl]=Navegar pola rede +Comment[he]=גלישה ברחבי האינטרנט +Comment[hr]=Pretražite web +Comment[hu]=A világháló böngészése +Comment[it]=Esplora il web +Comment[ja]=ウェブを閲覧します +Comment[ko]=웹을 돌아 다닙니다 +Comment[ku]=Li torê bigere +Comment[lt]=Naršykite internete +Comment[nb]=Surf på nettet +Comment[nl]=Verken het internet +Comment[nn]=Surf på nettet +Comment[no]=Surf på nettet +Comment[pl]=Przeglądanie stron WWW +Comment[pt]=Navegue na Internet +Comment[pt_BR]=Navegue na Internet +Comment[ro]=Navigați pe Internet +Comment[ru]=Доступ в Интернет +Comment[sk]=Prehliadanie internetu +Comment[sl]=Brskajte po spletu +Comment[sv]=Surfa på webben +Comment[tr]=İnternet'te Gezinin +Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ +Comment[uk]=Перегляд сторінок Інтернету +Comment[vi]=Để duyệt các trang web +Comment[zh_CN]=浏览互联网 +Comment[zh_TW]=瀏覽網際網路 +Exec=/usr/lib/firefox/firefox %u +Icon=firefox +Terminal=false +Type=Application +MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https; +StartupNotify=true +Categories=Network;WebBrowser; +Keywords=web;browser;internet; +Actions=new-window;new-private-window; + +[Desktop Action new-window] +Name=New Window +Name[ach]=Dirica manyen +Name[af]=Nuwe venster +Name[an]=Nueva finestra +Name[ar]=نافذة جديدة +Name[as]=নতুন উইন্ডো +Name[ast]=Ventana nueva +Name[az]=Yeni Pəncərə +Name[be]=Новае акно +Name[bg]=Нов прозорец +Name[bn_BD]=নতুন উইন্ডো (N) +Name[bn_IN]=নতুন উইন্ডো +Name[br]=Prenestr nevez +Name[brx]=गोदान उइन्ड'(N) +Name[bs]=Novi prozor +Name[ca]=Finestra nova +Name[cak]=K'ak'a' tzuwäch +Name[cs]=Nové okno +Name[cy]=Ffenestr Newydd +Name[da]=Nyt vindue +Name[de]=Neues Fenster +Name[dsb]=Nowe wokno +Name[el]=Νέο παράθυρο +Name[en_GB]=New Window +Name[en_US]=New Window +Name[en_ZA]=New Window +Name[eo]=Nova fenestro +Name[es_AR]=Nueva ventana +Name[es_CL]=Nueva ventana +Name[es_ES]=Nueva ventana +Name[es_MX]=Nueva ventana +Name[et]=Uus aken +Name[eu]=Leiho berria +Name[fa]=پنجره جدید +Name[ff]=Henorde Hesere +Name[fi]=Uusi ikkuna +Name[fr]=Nouvelle fenêtre +Name[fy_NL]=Nij finster +Name[ga_IE]=Fuinneog Nua +Name[gd]=Uinneag ùr +Name[gl]=Nova xanela +Name[gn]=Ovetã pyahu +Name[gu_IN]=નવી વિન્ડો +Name[he]=חלון חדש +Name[hi_IN]=नया विंडो +Name[hr]=Novi prozor +Name[hsb]=Nowe wokno +Name[hu]=Új ablak +Name[hy_AM]=Նոր Պատուհան +Name[id]=Jendela Baru +Name[is]=Nýr gluggi +Name[it]=Nuova finestra +Name[ja]=新しいウィンドウ +Name[ja_JP-mac]=新規ウインドウ +Name[ka]=ახალი ფანჯარა +Name[kk]=Жаңа терезе +Name[km]=បង្អួចថ្មី +Name[kn]=ಹೊಸ ಕಿಟಕಿ +Name[ko]=새 창 +Name[kok]=नवें जनेल +Name[ks]=نئئ وِنڈو +Name[lij]=Neuvo barcon +Name[lo]=ຫນ້າຕ່າງໃຫມ່ +Name[lt]=Naujas langas +Name[ltg]=Jauns lūgs +Name[lv]=Jauns logs +Name[mai]=नव विंडो +Name[mk]=Нов прозорец +Name[ml]=പുതിയ ജാലകം +Name[mr]=नवीन पटल +Name[ms]=Tetingkap Baru +Name[my]=ဝင်းဒိုးအသစ် +Name[nb_NO]=Nytt vindu +Name[ne_NP]=नयाँ सञ्झ्याल +Name[nl]=Nieuw venster +Name[nn_NO]=Nytt vindauge +Name[or]=ନୂତନ ୱିଣ୍ଡୋ +Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ +Name[pl]=Nowe okno +Name[pt_BR]=Nova janela +Name[pt_PT]=Nova janela +Name[rm]=Nova fanestra +Name[ro]=Fereastră nouă +Name[ru]=Новое окно +Name[sat]=नावा विंडो (N) +Name[si]=නව කවුළුවක් +Name[sk]=Nové okno +Name[sl]=Novo okno +Name[son]=Zanfun taaga +Name[sq]=Dritare e Re +Name[sr]=Нови прозор +Name[sv_SE]=Nytt fönster +Name[ta]=புதிய சாளரம் +Name[te]=కొత్త విండో +Name[th]=หน้าต่างใหม่ +Name[tr]=Yeni pencere +Name[tsz]=Eraatarakua jimpani +Name[uk]=Нове вікно +Name[ur]=نیا دریچہ +Name[uz]=Yangi oyna +Name[vi]=Cửa sổ mới +Name[wo]=Palanteer bu bees +Name[xh]=Ifestile entsha +Name[zh_CN]=新建窗口 +Name[zh_TW]=開新視窗 +Exec=/usr/lib/firefox/firefox --new-window %u + +[Desktop Action new-private-window] +Name=New Private Window +Name[ach]=Dirica manyen me mung +Name[af]=Nuwe privaatvenster +Name[an]=Nueva finestra privada +Name[ar]=نافذة خاصة جديدة +Name[as]=নতুন ব্যক্তিগত উইন্ডো +Name[ast]=Ventana privada nueva +Name[az]=Yeni Məxfi Pəncərə +Name[be]=Новае акно адасаблення +Name[bg]=Нов прозорец за поверително сърфиране +Name[bn_BD]=নতুন ব্যক্তিগত উইন্ডো +Name[bn_IN]=নতুন ব্যক্তিগত উইন্ডো +Name[br]=Prenestr merdeiñ prevez nevez +Name[brx]=गोदान प्राइभेट उइन्ड' +Name[bs]=Novi privatni prozor +Name[ca]=Finestra privada nova +Name[cak]=K'ak'a' ichinan tzuwäch +Name[cs]=Nové anonymní okno +Name[cy]=Ffenestr Breifat Newydd +Name[da]=Nyt privat vindue +Name[de]=Neues privates Fenster +Name[dsb]=Nowe priwatne wokno +Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης +Name[en_GB]=New Private Window +Name[en_US]=New Private Window +Name[en_ZA]=New Private Window +Name[eo]=Nova privata fenestro +Name[es_AR]=Nueva ventana privada +Name[es_CL]=Nueva ventana privada +Name[es_ES]=Nueva ventana privada +Name[es_MX]=Nueva ventana privada +Name[et]=Uus privaatne aken +Name[eu]=Leiho pribatu berria +Name[fa]=پنجره ناشناس جدید +Name[ff]=Henorde Suturo Hesere +Name[fi]=Uusi yksityinen ikkuna +Name[fr]=Nouvelle fenêtre de navigation privée +Name[fy_NL]=Nij priveefinster +Name[ga_IE]=Fuinneog Nua Phríobháideach +Name[gd]=Uinneag phrìobhaideach ùr +Name[gl]=Nova xanela privada +Name[gn]=Ovetã ñemi pyahu +Name[gu_IN]=નવી ખાનગી વિન્ડો +Name[he]=חלון פרטי חדש +Name[hi_IN]=नयी निजी विंडो +Name[hr]=Novi privatni prozor +Name[hsb]=Nowe priwatne wokno +Name[hu]=Új privát ablak +Name[hy_AM]=Սկսել Գաղտնի դիտարկում +Name[id]=Jendela Mode Pribadi Baru +Name[is]=Nýr huliðsgluggi +Name[it]=Nuova finestra anonima +Name[ja]=新しいプライベートウィンドウ +Name[ja_JP-mac]=新規プライベートウインドウ +Name[ka]=ახალი პირადი ფანჯარა +Name[kk]=Жаңа жекелік терезе +Name[km]=បង្អួចឯកជនថ្មី +Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ +Name[ko]=새 사생활 보호 모드 +Name[kok]=नवो खाजगी विंडो +Name[ks]=نْو پرایوٹ وینڈو +Name[lij]=Nêuvo barcón privòu +Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່ +Name[lt]=Naujas privataus naršymo langas +Name[ltg]=Jauns privatais lūgs +Name[lv]=Jauns privātais logs +Name[mai]=नया निज विंडो (W) +Name[mk]=Нов приватен прозорец +Name[ml]=പുതിയ സ്വകാര്യ ജാലകം +Name[mr]=नवीन वैयक्तिक पटल +Name[ms]=Tetingkap Persendirian Baharu +Name[my]=New Private Window +Name[nb_NO]=Nytt privat vindu +Name[ne_NP]=नयाँ निजी सञ्झ्याल +Name[nl]=Nieuw privévenster +Name[nn_NO]=Nytt privat vindauge +Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ +Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ +Name[pl]=Nowe okno prywatne +Name[pt_BR]=Nova janela privativa +Name[pt_PT]=Nova janela privada +Name[rm]=Nova fanestra privata +Name[ro]=Fereastră privată nouă +Name[ru]=Новое приватное окно +Name[sat]=नावा निजेराक् विंडो (W ) +Name[si]=නව පුද්ගලික කවුළුව (W) +Name[sk]=Nové okno v režime Súkromné prehliadanie +Name[sl]=Novo zasebno okno +Name[son]=Sutura zanfun taaga +Name[sq]=Dritare e Re Private +Name[sr]=Нови приватан прозор +Name[sv_SE]=Nytt privat fönster +Name[ta]=புதிய தனிப்பட்ட சாளரம் +Name[te]=కొత్త ఆంతరంగిక విండో +Name[th]=หน้าต่างส่วนตัวใหม่ +Name[tr]=Yeni gizli pencere +Name[tsz]=Juchiiti eraatarakua jimpani +Name[uk]=Приватне вікно +Name[ur]=نیا نجی دریچہ +Name[uz]=Yangi maxfiy oyna +Name[vi]=Cửa sổ riêng tư mới +Name[wo]=Panlanteeru biir bu bees +Name[xh]=Ifestile yangasese entsha +Name[zh_CN]=新建隐私浏览窗口 +Name[zh_TW]=新增隱私視窗 +Exec=/usr/lib/firefox/firefox --private-window %u diff --git a/glibc-2.26-fix.diff b/glibc-2.26-fix.diff new file mode 100644 index 000000000000..48733ab899bb --- /dev/null +++ b/glibc-2.26-fix.diff @@ -0,0 +1,258 @@ +From 6a0b7c8ecf0734ba1bcdccf8e0ee97e721fd5420 Mon Sep 17 00:00:00 2001 +Message-Id: <6a0b7c8ecf0734ba1bcdccf8e0ee97e721fd5420.1505113337.git.jan.steffens@gmail.com> +From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= <emilio@crisal.io> +Date: Sat, 19 Aug 2017 20:14:25 +0200 +Subject: [PATCH] Fix use of struct ucontext (squash 2 commits) + +Needed for building with glibc 2.26. + +Bug 1385667: Use ucontext_t consistently in breakpad-client. r=ted +MozReview-Commit-ID: AJhzJdNXP0f + +Bug 1394149: Fix remaining uses of ucontext in breakpad-client. r=ted +MozReview-Commit-ID: 5tP7fXsI7dQ +--- + .../linux/dump_writer_common/ucontext_reader.cc | 30 +++++++++++----------- + .../linux/dump_writer_common/ucontext_reader.h | 10 ++++---- + .../linux/handler/exception_handler.cc | 10 ++++---- + .../linux/handler/exception_handler.h | 2 +- + .../linux/microdump_writer/microdump_writer.cc | 2 +- + .../linux/minidump_writer/minidump_writer.cc | 2 +- + 6 files changed, 28 insertions(+), 28 deletions(-) + +diff --git a/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.cc b/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.cc +index 999960912e459e1b..303c0ebd32b663c4 100644 +--- a/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.cc ++++ b/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.cc +@@ -40,15 +40,15 @@ namespace google_breakpad { + + #if defined(__i386__) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[REG_ESP]; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[REG_EIP]; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc, + const struct _libc_fpstate* fp) { + const greg_t* regs = uc->uc_mcontext.gregs; + +@@ -88,15 +88,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, + + #elif defined(__x86_64) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[REG_RSP]; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[REG_RIP]; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc, + const struct _libc_fpstate* fpregs) { + const greg_t* regs = uc->uc_mcontext.gregs; + +@@ -145,15 +145,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, + + #elif defined(__ARM_EABI__) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.arm_sp; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.arm_pc; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) { ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc) { + out->context_flags = MD_CONTEXT_ARM_FULL; + + out->iregs[0] = uc->uc_mcontext.arm_r0; +@@ -184,41 +184,41 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) { + + #elif defined(__aarch64__) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.sp; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.pc; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc, + const struct fpsimd_context* fpregs) { + out->context_flags = MD_CONTEXT_ARM64_FULL; + + out->cpsr = static_cast<uint32_t>(uc->uc_mcontext.pstate); + for (int i = 0; i < MD_CONTEXT_ARM64_REG_SP; ++i) + out->iregs[i] = uc->uc_mcontext.regs[i]; + out->iregs[MD_CONTEXT_ARM64_REG_SP] = uc->uc_mcontext.sp; + out->iregs[MD_CONTEXT_ARM64_REG_PC] = uc->uc_mcontext.pc; + + out->float_save.fpsr = fpregs->fpsr; + out->float_save.fpcr = fpregs->fpcr; + my_memcpy(&out->float_save.regs, &fpregs->vregs, + MD_FLOATINGSAVEAREA_ARM64_FPR_COUNT * 16); + } + + #elif defined(__mips__) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[MD_CONTEXT_MIPS_REG_SP]; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.pc; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) { ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc) { + #if _MIPS_SIM == _ABI64 + out->context_flags = MD_CONTEXT_MIPS64_FULL; + #elif _MIPS_SIM == _ABIO32 +diff --git a/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.h b/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.h +index c533e28ba7441e83..039752a2dfb6e589 100644 +--- a/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.h ++++ b/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.h +@@ -41,21 +41,21 @@ namespace google_breakpad { + + // Wraps platform-dependent implementations of accessors to ucontext structs. + struct UContextReader { +- static uintptr_t GetStackPointer(const struct ucontext* uc); ++ static uintptr_t GetStackPointer(const ucontext_t* uc); + +- static uintptr_t GetInstructionPointer(const struct ucontext* uc); ++ static uintptr_t GetInstructionPointer(const ucontext_t* uc); + + // Juggle a arch-specific ucontext into a minidump format + // out: the minidump structure + // info: the collection of register structures. + #if defined(__i386__) || defined(__x86_64) +- static void FillCPUContext(RawContextCPU *out, const ucontext *uc, ++ static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc, + const struct _libc_fpstate* fp); + #elif defined(__aarch64__) +- static void FillCPUContext(RawContextCPU *out, const ucontext *uc, ++ static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc, + const struct fpsimd_context* fpregs); + #else +- static void FillCPUContext(RawContextCPU *out, const ucontext *uc); ++ static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc); + #endif + }; + +diff --git a/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.cc b/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.cc +index 71a51a763938e39d..12df9bc96ec45fea 100644 +--- a/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.cc ++++ b/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.cc +@@ -439,44 +439,44 @@ bool ExceptionHandler::HandleSignal(int sig, siginfo_t* info, void* uc) { + // Fill in all the holes in the struct to make Valgrind happy. + memset(&g_crash_context_, 0, sizeof(g_crash_context_)); + memcpy(&g_crash_context_.siginfo, info, sizeof(siginfo_t)); +- memcpy(&g_crash_context_.context, uc, sizeof(struct ucontext)); ++ memcpy(&g_crash_context_.context, uc, sizeof(ucontext_t)); + #if defined(__aarch64__) +- struct ucontext* uc_ptr = (struct ucontext*)uc; ++ ucontext_t* uc_ptr = (ucontext_t*)uc; + struct fpsimd_context* fp_ptr = + (struct fpsimd_context*)&uc_ptr->uc_mcontext.__reserved; + if (fp_ptr->head.magic == FPSIMD_MAGIC) { + memcpy(&g_crash_context_.float_state, fp_ptr, + sizeof(g_crash_context_.float_state)); + } + #elif !defined(__ARM_EABI__) && !defined(__mips__) + // FP state is not part of user ABI on ARM Linux. +- // In case of MIPS Linux FP state is already part of struct ucontext ++ // In case of MIPS Linux FP state is already part of ucontext_t + // and 'float_state' is not a member of CrashContext. +- struct ucontext* uc_ptr = (struct ucontext*)uc; ++ ucontext_t* uc_ptr = (ucontext_t*)uc; + if (uc_ptr->uc_mcontext.fpregs) { + memcpy(&g_crash_context_.float_state, uc_ptr->uc_mcontext.fpregs, + sizeof(g_crash_context_.float_state)); + } + #endif + g_crash_context_.tid = syscall(__NR_gettid); + if (crash_handler_ != NULL) { + if (crash_handler_(&g_crash_context_, sizeof(g_crash_context_), + callback_context_)) { + return true; + } + } + return GenerateDump(&g_crash_context_); + } + + // This is a public interface to HandleSignal that allows the client to + // generate a crash dump. This function may run in a compromised context. + bool ExceptionHandler::SimulateSignalDelivery(int sig) { + siginfo_t siginfo = {}; + // Mimic a trusted signal to allow tracing the process (see + // ExceptionHandler::HandleSignal(). + siginfo.si_code = SI_USER; + siginfo.si_pid = getpid(); +- struct ucontext context; ++ ucontext_t context; + getcontext(&context); + return HandleSignal(sig, &siginfo, &context); + } +diff --git a/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.h b/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.h +index 711586fec7ddae59..be1880170e2826b0 100644 +--- a/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.h ++++ b/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.h +@@ -191,7 +191,7 @@ class ExceptionHandler { + struct CrashContext { + siginfo_t siginfo; + pid_t tid; // the crashing thread. +- struct ucontext context; ++ ucontext_t context; + #if !defined(__ARM_EABI__) && !defined(__mips__) + // #ifdef this out because FP state is not part of user ABI for Linux ARM. + // In case of MIPS Linux FP state is already part of struct +diff --git a/toolkit/crashreporter/breakpad-client/linux/microdump_writer/microdump_writer.cc b/toolkit/crashreporter/breakpad-client/linux/microdump_writer/microdump_writer.cc +index ff20bf36584c876b..a0b90e08fc5f0cff 100644 +--- a/toolkit/crashreporter/breakpad-client/linux/microdump_writer/microdump_writer.cc ++++ b/toolkit/crashreporter/breakpad-client/linux/microdump_writer/microdump_writer.cc +@@ -571,7 +571,7 @@ class MicrodumpWriter { + + void* Alloc(unsigned bytes) { return dumper_->allocator()->Alloc(bytes); } + +- const struct ucontext* const ucontext_; ++ const ucontext_t* const ucontext_; + #if !defined(__ARM_EABI__) && !defined(__mips__) + const google_breakpad::fpstate_t* const float_state_; + #endif +diff --git a/toolkit/crashreporter/breakpad-client/linux/minidump_writer/minidump_writer.cc b/toolkit/crashreporter/breakpad-client/linux/minidump_writer/minidump_writer.cc +index 0650bb95c179464a..6b5304bcd605ca3a 100644 +--- a/toolkit/crashreporter/breakpad-client/linux/minidump_writer/minidump_writer.cc ++++ b/toolkit/crashreporter/breakpad-client/linux/minidump_writer/minidump_writer.cc +@@ -1247,7 +1247,7 @@ class MinidumpWriter { + const int fd_; // File descriptor where the minidum should be written. + const char* path_; // Path to the file where the minidum should be written. + +- const struct ucontext* const ucontext_; // also from the signal handler ++ const ucontext_t* const ucontext_; // also from the signal handler + #if !defined(__ARM_EABI__) && !defined(__mips__) + const google_breakpad::fpstate_t* const float_state_; // ditto + #endif +-- +2.14.1 + diff --git a/no-plt.diff b/no-plt.diff new file mode 100644 index 000000000000..9014f8b791c7 --- /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 000000000000..a9d0ce2e622d --- /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) + diff --git a/upload-symbol-archive b/upload-symbol-archive new file mode 100755 index 000000000000..3a7b45c82277 --- /dev/null +++ b/upload-symbol-archive @@ -0,0 +1,23 @@ +#!/bin/bash -e + +die() { + echo >&2 "$@" + exit 1 +} + +(( $# >= 2 )) || die "Usage: $0 TOKEN-FILE SYMBOL-ARCHIVE..." +token="$1" +shift + +[[ -f $token && -s $token ]] || die "Invalid TOKEN-FILE ${token@Q}" + +for zip; do + [[ $(file -Ebi "$zip") == application/zip* ]] || die "Invalid SYMBOL-ARCHIVE ${zip@Q}" +done + +for zip; do + echo >&2 "Uploading ${zip@Q} ..." + curl -X POST -H "Auth-Token: $(<"$token")" -F "${zip##*/}=@$zip" \ + https://crash-stats.mozilla.com/symbols/upload + echo +done diff --git a/wifi-disentangle.patch b/wifi-disentangle.patch new file mode 100644 index 000000000000..8f474b9c0fec --- /dev/null +++ b/wifi-disentangle.patch @@ -0,0 +1,245 @@ +# HG changeset patch +# Parent 2edd69b245fbc493c3a1cf17c40c63b0280ead12 +Bug 1314968 - Disentangle nsWifiScannerDBus::SendMessage. r?kanru + +Make a copy of the function and specialize it for each message sent. +Avoids the mess of comparing the method name to figure out what to do. + +diff --git a/netwerk/wifi/nsWifiScannerDBus.cpp b/netwerk/wifi/nsWifiScannerDBus.cpp +--- a/netwerk/wifi/nsWifiScannerDBus.cpp ++++ b/netwerk/wifi/nsWifiScannerDBus.cpp +@@ -34,19 +34,47 @@ nsWifiScannerDBus::Scan() + if (!mConnection) { + return NS_ERROR_NOT_AVAILABLE; + } +- return SendMessage("org.freedesktop.NetworkManager", +- "/org/freedesktop/NetworkManager", +- "GetDevices"); ++ return SendGetDevices(); + } + ++// http://dbus.freedesktop.org/doc/api/html/group__DBusConnection.html ++// Refer to function dbus_connection_send_with_reply_and_block. ++static const uint32_t DBUS_DEFAULT_TIMEOUT = -1; ++ + nsresult +-nsWifiScannerDBus::SendMessage(const char* aInterface, +- const char* aPath, +- const char* aFuncCall) +-{ +- RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>( +- dbus_message_new_method_call("org.freedesktop.NetworkManager", +- aPath, aInterface, aFuncCall)); ++nsWifiScannerDBus::SendGetDevices() ++{ ++ RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>( ++ dbus_message_new_method_call("org.freedesktop.NetworkManager", ++ "/org/freedesktop/NetworkManager", ++ "org.freedesktop.NetworkManager", ++ "GetDevices")); ++ if (!msg) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ DBusError err; ++ dbus_error_init(&err); ++ ++ RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>( ++ dbus_connection_send_with_reply_and_block(mConnection, msg, ++ DBUS_DEFAULT_TIMEOUT, &err)); ++ if (dbus_error_is_set(&err)) { ++ dbus_error_free(&err); ++ return NS_ERROR_FAILURE; ++ } ++ ++ return IdentifyDevices(reply); ++} ++ ++nsresult ++nsWifiScannerDBus::SendGetDeviceType(const char* aPath) ++{ ++ RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>( ++ dbus_message_new_method_call("org.freedesktop.NetworkManager", ++ aPath, ++ "org.freedesktop.DBus.Properties", ++ "Get")); + if (!msg) { + return NS_ERROR_FAILURE; + } +@@ -54,58 +82,92 @@ nsWifiScannerDBus::SendMessage(const cha + DBusMessageIter argsIter; + dbus_message_iter_init_append(msg, &argsIter); + +- if (!strcmp(aFuncCall, "Get")) { +- const char* paramInterface = "org.freedesktop.NetworkManager.Device"; +- if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING, +- ¶mInterface)) { +- return NS_ERROR_FAILURE; +- } +- +- const char* paramDeviceType = "DeviceType"; +- if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING, +- ¶mDeviceType)) { +- return NS_ERROR_FAILURE; +- } +- } else if (!strcmp(aFuncCall, "GetAll")) { +- const char* param = ""; +- if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING, ¶m)) { +- return NS_ERROR_FAILURE; +- } +- } ++ const char* paramInterface = "org.freedesktop.NetworkManager.Device"; ++ if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING, ++ ¶mInterface)) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ const char* paramDeviceType = "DeviceType"; ++ if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING, ++ ¶mDeviceType)) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ DBusError err; ++ dbus_error_init(&err); ++ ++ RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>( ++ dbus_connection_send_with_reply_and_block(mConnection, msg, ++ DBUS_DEFAULT_TIMEOUT, &err)); ++ if (dbus_error_is_set(&err)) { ++ dbus_error_free(&err); ++ return NS_ERROR_FAILURE; ++ } ++ ++ return IdentifyDeviceType(reply, aPath); ++} ++ ++nsresult ++nsWifiScannerDBus::SendGetAccessPoints(const char* aPath) ++{ ++ RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>( ++ dbus_message_new_method_call("org.freedesktop.NetworkManager", ++ aPath, ++ "org.freedesktop.NetworkManager.Device.Wireless", ++ "GetAccessPoints")); ++ if (!msg) { ++ return NS_ERROR_FAILURE; ++ } + + DBusError err; + dbus_error_init(&err); + +- // http://dbus.freedesktop.org/doc/api/html/group__DBusConnection.html +- // Refer to function dbus_connection_send_with_reply_and_block. +- const uint32_t DBUS_DEFAULT_TIMEOUT = -1; + RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>( + dbus_connection_send_with_reply_and_block(mConnection, msg, + DBUS_DEFAULT_TIMEOUT, &err)); + if (dbus_error_is_set(&err)) { + dbus_error_free(&err); +- + // In the GetAccessPoints case, if there are no access points, error is set. + // We don't want to error out here. +- if (!strcmp(aFuncCall, "GetAccessPoints")) { +- return NS_OK; +- } +- return NS_ERROR_FAILURE; ++ return NS_OK; + } + +- nsresult rv; +- if (!strcmp(aFuncCall, "GetDevices")) { +- rv = IdentifyDevices(reply); +- } else if (!strcmp(aFuncCall, "Get")) { +- rv = IdentifyDeviceType(reply, aPath); +- } else if (!strcmp(aFuncCall, "GetAccessPoints")) { +- rv = IdentifyAccessPoints(reply); +- } else if (!strcmp(aFuncCall, "GetAll")) { +- rv = IdentifyAPProperties(reply); +- } else { +- rv = NS_ERROR_FAILURE; +- } +- return rv; ++ return IdentifyAccessPoints(reply); ++} ++ ++nsresult ++nsWifiScannerDBus::SendGetAPProperties(const char* aPath) ++{ ++ RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>( ++ dbus_message_new_method_call("org.freedesktop.NetworkManager", ++ aPath, ++ "org.freedesktop.DBus.Properties", ++ "GetAll")); ++ if (!msg) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ DBusMessageIter argsIter; ++ dbus_message_iter_init_append(msg, &argsIter); ++ ++ const char* param = ""; ++ if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING, ¶m)) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ DBusError err; ++ dbus_error_init(&err); ++ ++ RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>( ++ dbus_connection_send_with_reply_and_block(mConnection, msg, ++ DBUS_DEFAULT_TIMEOUT, &err)); ++ if (dbus_error_is_set(&err)) { ++ dbus_error_free(&err); ++ return NS_ERROR_FAILURE; ++ } ++ ++ return IdentifyAPProperties(reply); + } + + nsresult +@@ -126,7 +188,7 @@ nsWifiScannerDBus::IdentifyDevices(DBusM + return NS_ERROR_FAILURE; + } + +- rv = SendMessage("org.freedesktop.DBus.Properties", devicePath, "Get"); ++ rv = SendGetDeviceType(devicePath); + NS_ENSURE_SUCCESS(rv, rv); + } while (dbus_message_iter_next(&iter)); + +@@ -159,8 +221,7 @@ nsWifiScannerDBus::IdentifyDeviceType(DB + const uint32_t NM_DEVICE_TYPE_WIFI = 2; + nsresult rv = NS_OK; + if (deviceType == NM_DEVICE_TYPE_WIFI) { +- rv = SendMessage("org.freedesktop.NetworkManager.Device.Wireless", +- aDevicePath, "GetAccessPoints"); ++ rv = SendGetAccessPoints(aDevicePath); + } + + return rv; +@@ -183,7 +244,7 @@ nsWifiScannerDBus::IdentifyAccessPoints( + return NS_ERROR_FAILURE; + } + +- rv = SendMessage("org.freedesktop.DBus.Properties", path, "GetAll"); ++ rv = SendGetAPProperties(path); + NS_ENSURE_SUCCESS(rv, rv); + } while (dbus_message_iter_next(&iter)); + +diff --git a/netwerk/wifi/nsWifiScannerDBus.h b/netwerk/wifi/nsWifiScannerDBus.h +--- a/netwerk/wifi/nsWifiScannerDBus.h ++++ b/netwerk/wifi/nsWifiScannerDBus.h +@@ -25,9 +25,10 @@ public: + nsresult Scan(); + + private: +- nsresult SendMessage(const char* aInterface, +- const char* aPath, +- const char* aFuncCall); ++ nsresult SendGetDevices(); ++ nsresult SendGetDeviceType(const char* aPath); ++ nsresult SendGetAccessPoints(const char* aPath); ++ nsresult SendGetAPProperties(const char* aPath); + nsresult IdentifyDevices(DBusMessage* aMsg); + nsresult IdentifyDeviceType(DBusMessage* aMsg, const char* aDevicePath); + nsresult IdentifyAccessPoints(DBusMessage* aMsg); diff --git a/wifi-fix-interface.patch b/wifi-fix-interface.patch new file mode 100644 index 000000000000..1980db1837e7 --- /dev/null +++ b/wifi-fix-interface.patch @@ -0,0 +1,26 @@ +# HG changeset patch +# Parent 7a6d836b62779aa61988981c6ca646495574a505 +Bug 1314968 - Explicitly specify the AccessPoint interface name. r?kanru + +The DBus specification allows passing an empty string as the interface to the +org.freedesktop.DBus.Properties.GetAll call to get all properties, throwing away the namespace +(interface) information. + +However, GDBus does not allow this. When NetworkManager moved to using GDBus, Firefox lost the +ability to retrieve access points from NetworkManager. + +Since we're only interested in properties from the org.freedesktop.NetworkManager.AccessPoint +interface, name it explicitly. This works with both the old and the new NetworkManager. + +diff --git a/netwerk/wifi/nsWifiScannerDBus.cpp b/netwerk/wifi/nsWifiScannerDBus.cpp +--- a/netwerk/wifi/nsWifiScannerDBus.cpp ++++ b/netwerk/wifi/nsWifiScannerDBus.cpp +@@ -151,7 +151,7 @@ nsWifiScannerDBus::SendGetAll(const char + DBusMessageIter argsIter; + dbus_message_iter_init_append(msg, &argsIter); + +- const char* param = ""; ++ const char* param = "org.freedesktop.NetworkManager.AccessPoint"; + if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING, ¶m)) { + return NS_ERROR_FAILURE; + } |