Hello community, here is the log from the commit of package MozillaFirefox.2771 for openSUSE:12.3:Update checked in at 2014-05-02 14:52:29 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:12.3:Update/MozillaFirefox.2771 (Old) and /work/SRC/openSUSE:12.3:Update/.MozillaFirefox.2771.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "MozillaFirefox.2771" Changes: -------- New Changes file: --- /dev/null 2014-04-28 00:21:37.460033756 +0200 +++ /work/SRC/openSUSE:12.3:Update/.MozillaFirefox.2771.new/MozillaFirefox.changes 2014-05-02 14:52:30.000000000 +0200 @@ -0,0 +1,3518 @@ +------------------------------------------------------------------- +Sat Apr 26 12:18:07 UTC 2014 - wr@rosenauer.org + +- update to Firefox 29.0 (bnc#875378) + * MFSA 2014-34/CVE-2014-1518/CVE-2014-1519 + Miscellaneous memory safety hazards + * MFSA 2014-36/CVE-2014-1522 (bmo#995289) + Web Audio memory corruption issues + * MFSA 2014-37/CVE-2014-1523 (bmo#969226) + Out of bounds read while decoding JPG images + * MFSA 2014-38/CVE-2014-1524 (bmo#989183) + Buffer overflow when using non-XBL object as XBL + * MFSA 2014-39/CVE-2014-1525 (bmo#989210) + Use-after-free in the Text Track Manager for HTML video + * MFSA 2014-41/CVE-2014-1528 (bmo#963962) + Out-of-bounds write in Cairo + * MFSA 2014-42/CVE-2014-1529 (bmo#987003) + Privilege escalation through Web Notification API + * MFSA 2014-43/CVE-2014-1530 (bmo#895557) + Cross-site scripting (XSS) using history navigations + * MFSA 2014-44/CVE-2014-1531 (bmo#987140) + Use-after-free in imgLoader while resizing images + * MFSA 2014-45/CVE-2014-1492 (bmo#903885) + Incorrect IDNA domain name matching for wildcard certificates + (fixed by NSS 3.16) + * MFSA 2014-46/CVE-2014-1532 (bmo#966006) + Use-after-free in nsHostResolver + * MFSA 2014-47/CVE-2014-1526 (bmo#988106) + Debugger can bypass XrayWrappers with JavaScript +- rebased patches +- removed obsolete patches + * firefox-browser-css.patch + * mozilla-aarch64-599882cfb998.diff + * mozilla-aarch64-bmo-963028.patch + * mozilla-aarch64-bmo-963029.patch + * mozilla-aarch64-bmo-963030.patch + * mozilla-aarch64-bmo-963031.patch +- requires NSS 3.16 +- added mozilla-icu-strncat.patch to fix post build checks + +------------------------------------------------------------------- +Mon Apr 7 15:34:31 UTC 2014 - dmueller@suse.com + +- add mozilla-aarch64-599882cfb998.patch, + mozilla-aarch64-bmo-810631.patch, + mozilla-aarch64-bmo-962488.patch, + mozilla-aarch64-bmo-963030.patch, + mozilla-aarch64-bmo-963027.patch, + mozilla-aarch64-bmo-963028.patch, + mozilla-aarch64-bmo-963029.patch, + mozilla-aarch64-bmo-963023.patch, + mozilla-aarch64-bmo-963024.patch, + mozilla-aarch64-bmo-963031.patch: AArch64 porting + +------------------------------------------------------------------- +Mon Mar 24 16:18:44 UTC 2014 - dvaleev@suse.com + +- Add patch for bmo#973977 + * mozilla-ppc64-xpcom.patch + +------------------------------------------------------------------- +Mon Mar 24 14:29:12 UTC 2014 - dvaleev@suse.com + +- Refresh mozilla-ppc64le-xpcom.patch patch + +------------------------------------------------------------------- +Fri Mar 21 19:01:42 UTC 2014 - dvaleev@suse.com + +- Adapt mozilla-ppc64le-xpcom.patch to Mozilla > 24.0 build system + +------------------------------------------------------------------- +Sun Mar 16 13:39:15 UTC 2014 - wr@rosenauer.org + +- update to Firefox 28.0 (bnc#868603) + * MFSA 2014-15/CVE-2014-1493/CVE-2014-1494 + Miscellaneous memory safety hazards + * MFSA 2014-17/CVE-2014-1497 (bmo#966311) + Out of bounds read during WAV file decoding + * MFSA 2014-18/CVE-2014-1498 (bmo#935618) + crypto.generateCRMFRequest does not validate type of key + * MFSA 2014-19/CVE-2014-1499 (bmo#961512) + Spoofing attack on WebRTC permission prompt + * MFSA 2014-20/CVE-2014-1500 (bmo#956524) + onbeforeunload and Javascript navigation DOS + * MFSA 2014-22/CVE-2014-1502 (bmo#972622) + WebGL content injection from one domain to rendering in another + * MFSA 2014-23/CVE-2014-1504 (bmo#911547) + Content Security Policy for data: documents not preserved by + session restore + * MFSA 2014-26/CVE-2014-1508 (bmo#963198) + Information disclosure through polygon rendering in MathML + * MFSA 2014-27/CVE-2014-1509 (bmo#966021) + Memory corruption in Cairo during PDF font rendering + * MFSA 2014-28/CVE-2014-1505 (bmo#941887) + SVG filters information disclosure through feDisplacementMap + * MFSA 2014-29/CVE-2014-1510/CVE-2014-1511 (bmo#982906, bmo#982909) + Privilege escalation using WebIDL-implemented APIs + * MFSA 2014-30/CVE-2014-1512 (bmo#982957) + Use-after-free in TypeObject + * MFSA 2014-31/CVE-2014-1513 (bmo#982974) + Out-of-bounds read/write through neutering ArrayBuffer objects + * MFSA 2014-32/CVE-2014-1514 (bmo#983344) + Out-of-bounds write through TypedArrayObject after neutering +- requires NSPR 4.10.3 and NSS 3.15.5 +- new build dependency (and recommends): + * libpulse +- update of PowerPC 64 patches (bmo#976648) (pcerny@suse.com) +- rebased patches + +------------------------------------------------------------------- +Mon Feb 17 11:59:28 UTC 2014 - wr@rosenauer.org + +- update to Firefox 27.0.1 + * Fixed stability issues with Greasemonkey and other JS that used + ClearTimeoutOrInterval + * JS math correctness issue (bmo#941381) +- incorporate Google API key for geolocation (bnc#864170) +- updated list of "other" locales in RPM requirements + +------------------------------------------------------------------- +Tue Jan 28 15:45:41 UTC 2014 - wr@rosenauer.org + +- update to Firefox 27.0 (bnc#861847) + * MFSA 2014-01/CVE-2014-1477/CVE-2014-1478 + Miscellaneous memory safety hazards (rv:27.0 / rv:24.3) + * MFSA 2014-02/CVE-2014-1479 (bmo#911864) + Clone protected content with XBL scopes + * MFSA 2014-03/CVE-2014-1480 (bmo#916726) + UI selection timeout missing on download prompts + * MFSA 2014-04/CVE-2014-1482 (bmo#943803) + Incorrect use of discarded images by RasterImage + * MFSA 2014-05/CVE-2014-1483 (bmo#950427) + Information disclosure with *FromPoint on iframes + * MFSA 2014-06/CVE-2014-1484 (bmo#953993) + Profile path leaks to Android system log + * MFSA 2014-07/CVE-2014-1485 (bmo#910139) + XSLT stylesheets treated as styles in Content Security Policy + * MFSA 2014-08/CVE-2014-1486 (bmo#942164) + Use-after-free with imgRequestProxy and image proccessing + * MFSA 2014-09/CVE-2014-1487 (bmo#947592) + Cross-origin information leak through web workers + * MFSA 2014-10/CVE-2014-1489 (bmo#959531) + Firefox default start page UI content invokable by script + * MFSA 2014-11/CVE-2014-1488 (bmo#950604) + Crash when using web workers with asm.js + * MFSA 2014-12/CVE-2014-1490/CVE-2014-1491 + (bmo#934545, bmo#930874, bmo#930857) + NSS ticket handling issues + * MFSA 2014-13/CVE-2014-1481(bmo#936056) + Inconsistent JavaScript handling of access to Window objects +- requires NSS 3.15.4 or higher +- rebased/reworked patches +- removed obsolete mozilla-bug929439.patch + +------------------------------------------------------------------- +Thu Dec 12 21:19:54 UTC 2013 - uweigand@de.ibm.com + +- Add support for powerpc64le-linux. + * mozilla-ppc64le.patch: general support + * mozilla-libffi-ppc64le.patch: libffi backport + * mozilla-xpcom-ppc64le.patch: port xpcom +- Add build fix from mainline. + * mozilla-bug929439.patch + +------------------------------------------------------------------- +Sun Dec 8 20:26:23 UTC 2013 - wr@rosenauer.org + +- update to Firefox 26.0 (bnc#854367, bnc#854370) + * rebased patches + * requires NSPR 4.10.2 and NSS 3.15.3.1 + * MFSA 2013-104/CVE-2013-5609/CVE-2013-5610 + Miscellaneous memory safety hazards + * MFSA 2013-105/CVE-2013-5611 (bmo#771294) + Application Installation doorhanger persists on navigation + * MFSA 2013-106/CVE-2013-5612 (bmo#871161) + Character encoding cross-origin XSS attack + * MFSA 2013-107/CVE-2013-5614 (bmo#886262) + Sandbox restrictions not applied to nested object elements + * MFSA 2013-108/CVE-2013-5616 (bmo#938341) + Use-after-free in event listeners + * MFSA 2013-109/CVE-2013-5618 (bmo#926361) + Use-after-free during Table Editing + * MFSA 2013-110/CVE-2013-5619 (bmo#917841) + Potential overflow in JavaScript binary search algorithms + * MFSA 2013-111/CVE-2013-6671 (bmo#930281) + Segmentation violation when replacing ordered list elements + * MFSA 2013-112/CVE-2013-6672 (bmo#894736) + Linux clipboard information disclosure though selection paste + * MFSA 2013-113/CVE-2013-6673 (bmo#970380) + Trust settings for built-in roots ignored during EV certificate + validation + * MFSA 2013-114/CVE-2013-5613 (bmo#930381, bmo#932449) + Use-after-free in synthetic mouse movement + * MFSA 2013-115/CVE-2013-5615 (bmo#929261) + GetElementIC typed array stubs can be generated outside observed + typesets + * MFSA 2013-116/CVE-2013-6629/CVE-2013-6630 (bmo#891693) ++++ 3321 more lines (skipped) ++++ between /dev/null ++++ and /work/SRC/openSUSE:12.3:Update/.MozillaFirefox.2771.new/MozillaFirefox.changes New: ---- MozillaFirefox-rpmlintrc MozillaFirefox.changes MozillaFirefox.desktop MozillaFirefox.spec _constraints add-plugins.sh.in compare-locales.tar.xz create-tar.sh find-external-requires.sh firefox-29.0-source.tar.xz firefox-branded-icons.patch firefox-kde-114.patch firefox-kde.patch firefox-mimeinfo.xml firefox-multilocale-chrome.patch firefox-no-default-ualocale.patch firefox.1 firefox.js kde.js l10n-29.0.tar.xz mozilla-aarch64-bmo-810631.patch mozilla-aarch64-bmo-962488.patch mozilla-aarch64-bmo-963023.patch mozilla-aarch64-bmo-963024.patch mozilla-aarch64-bmo-963027.patch mozilla-arm-disable-edsp.patch mozilla-get-app-id mozilla-icu-strncat.patch mozilla-kde.patch mozilla-language.patch mozilla-libproxy-compat.patch mozilla-nongnome-proxies.patch mozilla-ntlm-full-path.patch mozilla-ppc.patch mozilla-ppc64-xpcom.patch mozilla-ppc64le-build.patch mozilla-ppc64le-javascript.patch mozilla-ppc64le-libffi.patch mozilla-ppc64le-mfbt.patch mozilla-ppc64le-webrtc.patch mozilla-ppc64le-xpcom.patch mozilla-prefer_plugin_pref.patch mozilla-preferences.patch mozilla-repo.patch mozilla-shared-nss-db.patch mozilla-sle11.patch mozilla.sh.in source-stamp.txt toolkit-download-folder.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ MozillaFirefox.spec ++++++ ++++ 656 lines (skipped) ++++++ MozillaFirefox-rpmlintrc ++++++ addFilter("no-jar-manifest") ++++++ MozillaFirefox.desktop ++++++ [Desktop Entry] Encoding=UTF-8 Name=Firefox GenericName=Web Browser Comment=Web Browser TryExec=firefox Exec=firefox %u Icon=firefox Terminal=false StartupNotify=true MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;application/x-xpinstall;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp; Type=Application ++++++ add-plugins.sh.in ++++++ #! /bin/sh # Copyright (c) 2008 Wolfgang Rosenauer. All rights reserved. # # check if we are started as root # only one of UID and USER must be set correctly if test "$UID" != 0 -a "$USER" != root; then echo "You must be root to start $0." exit 1 fi PREFIX="%PROGDIR" # dictionaries MYSPELL=/usr/share/myspell MOZ_SPELL=$PREFIX/dictionaries if [ -d $MOZ_SPELL ] ; then if [ -d $MYSPELL ] ; then for dict in $MYSPELL/??[-_]??.aff ; do # check is it is really the file or it is a string which contain '??_??' if ! [ -e $dict ] ; then continue fi # the dict file name dict_file=`echo ${dict##*/}` # the dict file has a valid name lang=`echo ${dict_file:0:2}` country=`echo ${dict_file:3:2}` # check for .dic file if [ ! -r $MYSPELL/${lang}[-_]${country}.dic ] ; then continue fi # create links if [ ! -r $MOZ_SPELL/${lang}[-_]${country}.aff ] ; then ln -sf $MYSPELL/${lang}[-_]${country}.aff \ $MOZ_SPELL/${lang}-${country}.aff fi if [ ! -r $MOZ_SPELL/${lang}[-_]${country}.dic ] ; then ln -sf $MYSPELL/${lang}[-_]${country}.dic \ $MOZ_SPELL/${lang}-${country}.dic fi done echo "-> added myspell dictionaries" fi # remove broken links for dict in $MOZ_SPELL/*.{aff,dic} ; do if ! [ -r $dict ] ; then rm -f $dict fi done fi ++++++ create-tar.sh ++++++ #!/bin/bash CHANNEL="release" BRANCH="releases/mozilla-$CHANNEL" RELEASE_TAG="FIREFOX_29_0_RELEASE" VERSION="29.0" # mozilla if [ -d mozilla ]; then pushd mozilla _repourl=$(hg paths) case "$_repourl" in *$BRANCH*) echo "updating previous tree" hg pull popd ;; * ) echo "removing obsolete tree" popd rm -rf mozilla ;; esac fi if [ ! -d mozilla ]; then echo "cloning new $BRANCH..." hg clone http://hg.mozilla.org/$BRANCH mozilla fi pushd mozilla hg update --check [ "$RELEASE_TAG" == "default" ] || hg update -r $RELEASE_TAG # get repo and source stamp echo -n "REV=" > ../source-stamp.txt hg -R . parent --template="{node|short}\n" >> ../source-stamp.txt echo -n "REPO=" >> ../source-stamp.txt hg showconfig paths.default 2>/dev/null | head -n1 | sed -e "s/^ssh:/http:/" >> ../source-stamp.txt popd echo "creating archive..." tar cJf firefox-$VERSION-source.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg --exclude=CVS mozilla # l10n echo "fetching locales..." test ! -d l10n && mkdir l10n for locale in $(awk '{ print $1; }' mozilla/browser/locales/shipped-locales); do case $locale in ja-JP-mac|en-US) ;; *) echo "fetching $locale ..." hg clone http://hg.mozilla.org/releases/l10n/mozilla-$CHANNEL/$locale l10n/$locale [ "$RELEASE_TAG" == "default" ] || hg -R l10n/$locale up -C -r $RELEASE_TAG ;; esac done echo "creating l10n archive..." tar cJf l10n-$VERSION.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg l10n # compare-locales echo "creating compare-locales" hg clone http://hg.mozilla.org/build/compare-locales tar cJf compare-locales.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg compare-locales ++++++ find-external-requires.sh ++++++ #!/bin/sh # Finds requirements provided outside of the current file set filelist=$( sed "s/[]['\"*?{}]/\\\\\&/g" ) provides=$( echo "$filelist" | /usr/lib/rpm/find-provides ) echo "$filelist" \ | /usr/lib/rpm/find-requires \ | grep -F -v "$provides" \ | sort -u ++++++ firefox-branded-icons.patch ++++++ # HG changeset patch # Parent 5defe7bd2f041c227fe4a65f8a90e6cc42a9a339 diff --git a/browser/app/Makefile.in b/browser/app/Makefile.in --- a/browser/app/Makefile.in +++ b/browser/app/Makefile.in @@ -133,16 +133,21 @@ GARBAGE += $(addprefix $(FINAL_TARGET)/d endif ifdef MOZ_WIDGET_GTK libs:: $(INSTALL) $(IFLAGS1) $(DIST)/branding/mozicon128.png $(FINAL_TARGET)/icons $(INSTALL) $(IFLAGS1) $(DIST)/branding/default16.png $(FINAL_TARGET)/chrome/icons/default $(INSTALL) $(IFLAGS1) $(DIST)/branding/default32.png $(FINAL_TARGET)/chrome/icons/default $(INSTALL) $(IFLAGS1) $(DIST)/branding/default48.png $(FINAL_TARGET)/chrome/icons/default +ifdef MOZ_OFFICIAL_BRANDING + $(INSTALL) $(IFLAGS1) $(DIST)/branding/default22.png $(FINAL_TARGET)/chrome/icons/default + $(INSTALL) $(IFLAGS1) $(DIST)/branding/default24.png $(FINAL_TARGET)/chrome/icons/default + $(INSTALL) $(IFLAGS1) $(DIST)/branding/default256.png $(FINAL_TARGET)/chrome/icons/default +endif endif libs:: $(srcdir)/profile/prefs.js $(INSTALL) $(IFLAGS1) $^ $(FINAL_TARGET)/defaults/profile ifndef LIBXUL_SDK # channel-prefs.js is handled separate from other prefs due to bug 756325 libs:: $(srcdir)/profile/channel-prefs.js diff --git a/browser/branding/official/Makefile.in b/browser/branding/official/Makefile.in --- a/browser/branding/official/Makefile.in +++ b/browser/branding/official/Makefile.in @@ -42,18 +42,21 @@ BRANDING_FILES := \ document.icns \ dsstore \ $(NULL) endif ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2) BRANDING_FILES := \ default16.png \ + default22.png \ + default24.png \ default32.png \ default48.png \ + default256.png \ mozicon128.png \ $(NULL) endif ifeq ($(OS_ARCH),OS2) BRANDING_FILES := \ firefox-os2.ico \ document-os2.ico \ diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in @@ -571,18 +571,21 @@ @BINPATH@/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf @BINPATH@/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png @BINPATH@/chrome/toolkit@JAREXT@ @BINPATH@/chrome/toolkit.manifest @BINPATH@/chrome/recording.manifest @BINPATH@/chrome/recording/* #ifdef MOZ_GTK @BINPATH@/browser/chrome/icons/default/default16.png +@BINPATH@/browser/chrome/icons/default/default22.png +@BINPATH@/browser/chrome/icons/default/default24.png @BINPATH@/browser/chrome/icons/default/default32.png @BINPATH@/browser/chrome/icons/default/default48.png +@BINPATH@/browser/chrome/icons/default/default256.png #endif ; shell icons #ifdef XP_UNIX #ifndef XP_MACOSX ; shell icons @BINPATH@/browser/icons/*.png #ifdef MOZ_UPDATER ++++++ firefox-kde-114.patch ++++++ # HG changeset patch # User Wolfgang Rosenauer <wr@rosenauer.org> # Parent ba2d9b1374e15e7c339a44452169d0afac2ca82e With openSUSE 11.4 the desktop file name changed from MozillaFirefox to firefox diff --git a/browser/components/preferences/advanced.js b/browser/components/preferences/advanced.js --- a/browser/components/preferences/advanced.js +++ b/browser/components/preferences/advanced.js @@ -751,17 +751,17 @@ var gAdvancedPane = { if (kde_session == 1) { var shellObj = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); shellObj.initWithPath("/usr/bin/kwriteconfig"); var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(shellObj); var args = ["--file", "kdeglobals", "--group", "General", "--key", - "BrowserApplication", "MozillaFirefox"]; + "BrowserApplication", "firefox"]; process.run(false, args, args.length); } let selectedIndex = shellSvc.isDefaultBrowser(false, true) ? 1 : 0; document.getElementById("setDefaultPane").selectedIndex = selectedIndex; } #endif }; ++++++ firefox-kde.patch ++++++ ++++ 1829 lines (skipped) ++++++ firefox-multilocale-chrome.patch ++++++ # HG changeset patch # Parent 4b6055d24a2bbc4a37490214df4acf08269f14ff # User Wolfgang Rosenauer <wr@rosenauer.org> Add searchplugins to chrome packaging for proper localization diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -368,16 +368,20 @@ pref("browser.helperApps.deleteTempFileO #endif // search engines URL pref("browser.search.searchEnginesURL", "https://addons.mozilla.org/%LOCALE%/firefox/search-engines/"); // pointer to the default engine name pref("browser.search.defaultenginename", "chrome://browser-region/locale/region.properties"); +// Tell the search service to load search plugins from the locale JAR +pref("browser.search.loadFromJars", true); +pref("browser.search.jarURIs", "chrome://browser/locale/searchplugins/"); + // disable logging for the search service by default pref("browser.search.log", false); // Ordering of Search Engines in the Engine list. pref("browser.search.order.1", "chrome://browser-region/locale/region.properties"); pref("browser.search.order.2", "chrome://browser-region/locale/region.properties"); pref("browser.search.order.3", "chrome://browser-region/locale/region.properties"); diff --git a/browser/locales/Makefile.in b/browser/locales/Makefile.in --- a/browser/locales/Makefile.in +++ b/browser/locales/Makefile.in @@ -66,21 +66,23 @@ STUB_HOOK = $(NSINSTALL) -D '$(_ABS_DIST cp ../installer/windows/l10ngen/stub.exe '$(_ABS_DIST)/$(PKG_INST_PATH)$(PKG_STUB_BASENAME).exe'; \ chmod 0755 '$(_ABS_DIST)/$(PKG_INST_PATH)$(PKG_STUB_BASENAME).exe'; \ $(NULL) endif ifeq ($(MOZ_WIDGET_TOOLKIT) $(DIST_SUBDIR),windows metro) SEARCHPLUGINS_NAMES = $(shell cat $(call MERGE_FILE,/searchplugins/metrolist.txt)) else -SEARCHPLUGINS_NAMES = $(shell cat $(call MERGE_FILE,/searchplugins/list.txt)) +SEARCHPLUGINS_NAMES = $(shell cat \ + $(firstword $(wildcard $(LOCALE_SRCDIR)/searchplugins/list.txt) \ + @srcdir@/en-US/searchplugins/list.txt ) ) endif SEARCHPLUGINS_PATH := $(FINAL_TARGET)/searchplugins SEARCHPLUGINS := $(addsuffix .xml,$(SEARCHPLUGINS_NAMES)) -PP_TARGETS += SEARCHPLUGINS +#PP_TARGETS += SEARCHPLUGINS # Required for l10n.mk - defines a list of app sub dirs that should # be included in langpack xpis. ifdef MOZ_METRO # metro build, include both app folders DIST_SUBDIRS = browser metro else DIST_SUBDIRS = $(DIST_SUBDIR) @@ -118,16 +120,39 @@ libs:: $(addprefix generic/profile/,$(PR libs:: $(call MERGE_FILES,$(addprefix profile/chrome/,$(PROFILE_CHROME))) $(SYSINSTALL) $(IFLAGS1) $^ $(FINAL_TARGET)/defaults/profile/chrome # metro build calls back here for search engine plugins searchplugins: $(addprefix $(FINAL_TARGET)/searchplugins/,$(SEARCHPLUGINS)) .PHONY: searchplugins +tmp-search.jar.mn:: + printf "$(AB_CD).jar:" > $@ + printf "$(foreach plugin,$(SEARCHPLUGINS), \n locale/browser/searchplugins/$(plugin) ($(plugin)))" >> $@ + @echo >> $@ + +searchplugins-jar:: $(SEARCHPLUGINS) + for SEARCHPLUGIN in $^; do \ + $(call py_action,preprocessor,$(DEFINES) $(ACDEFINES) \ + $$SEARCHPLUGIN > $$SEARCHPLUGIN-new) ; \ + mv $$SEARCHPLUGIN-new $$SEARCHPLUGIN ; \ + done + +searchplugins-jar:: tmp-search.jar.mn + $(call py_action,jar_maker,\ + $(QUIET) -j $(FINAL_TARGET)/chrome \ + -s $(topsrcdir)/$(relativesrcdir)/en-US/searchplugins \ + -s $(LOCALE_SRCDIR)/searchplugins \ + $(MAKE_JARS_FLAGS) tmp-search.jar.mn) + +libs:: searchplugins-jar + +GARBAGE += tmp-search.jar.mn + libs-%: $(NSINSTALL) -D $(DIST)/install @$(MAKE) -C ../../toolkit/locales libs-$* @$(MAKE) -C ../../services/sync/locales AB_CD=$* XPI_NAME=locale-$* ifdef MOZ_WEBAPP_RUNTIME @$(MAKE) -C ../../webapprt/locales AB_CD=$* XPI_NAME=locale-$* endif @$(MAKE) -C ../../extensions/spellcheck/locales AB_CD=$* XPI_NAME=locale-$* diff --git a/browser/locales/en-US/searchplugins/google.xml b/browser/locales/en-US/searchplugins/google.xml --- a/browser/locales/en-US/searchplugins/google.xml +++ b/browser/locales/en-US/searchplugins/google.xml @@ -9,25 +9,17 @@ <Image width="16" height="16">data:image/x-icon;base64,AAABAAIAEBAAAAAAAAB9AQAAJgAAACAgAAAAAAAA8gIAAKMBAACJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAFESURBVDjLpZNJSwNBEIXnt4lE4kHxovgT9BDwJHqPy0HEEOJBiAuCRg+KUdC4QS4KrpC4gCBGE3NQ48JsnZ6eZ3UOM6gjaePhQU93v6+qq2q0pqgeJj2S8EdJT1hr0OxBtKCD5iEd8QxDYpvhvOBAuMDKURX9C9aPu4GA1GEVkzvMg10UBfYveWAWgYAP00V01fa+R9M2bA51wJvhIn3qR+ybt3D3JNQBE5sMjCIOLFpoHzOwdsLRO22qA6R6kiZiWwxUvy/PUQZIhYZ1vFM9cvcOOsYNdcBgysISdSJBnZjJMlR0Fw8vAp0xoz5gao/h+NZBy4i/10XGwrPA+hmvDyhVRG2Avu/LwcrkFADZa16L1h330w1RNgc3DiJzCpPYRm1bpveXX11clQR28xwblHpk1vq1iP/5mcoS0CoXDZiL0vsJ+dzfl+3T/VYAAAAASUVORK5CYIKJUE5HDQoaCgAAAA1JSERSAAAAIAAAACAIBgAAAHN6evQAAAK5SURBVFjDxVfrSxRRFJ9/Jta/oyWjF5XQm6D6EkHRgygIIgjUTcueVgqVWSRRkppEUQYWWB8ye1iGWilWlo/Ude489s7M6Zw7D9dlt53dmd29cFiWvXvO77x+51xpaaUsoSxBaUWZQ4ECy5xji2xKZDyCMlMEw6lCNiOSgwZKJK1SkcKeSealfP64t0mBjl4Ow39MkDUL0p2RSROOtqhZdeUEYM1pBl39XCg/fEeFtWcY7G9W4csvUxjlBkCsQ4Nt9QyWVfvT6RsAKXw3aoDGATZeYIt+W1kjw7cJG0RctWDTRebbKd8A6h5pwsDb70ba3w/eUr3wt/cmwgfw6Yft4TNMQaY7o1P2ncm4FT4ANQH/jQBJ2xv7kqIXEADDql8eS3+n8bku7oxNm+EDIM/dU92upb3T/NJGeaNbDx/AsbsLRUY5Xn92caWXY5d8RV6gWllxSg4fAEnTC90DQW13BLlgXR2D3dcUeDVkwOthA1bXspxILWcm3HdThcfvufB26LcJpkOEAz9NKI/lzqpSEC7feol5EWnpSeSlIxCALUkApmULdjUqxQVAQnl3D/X/yQda4QBEq2TYc12By091MQ17Bg3R88nHKlQbVmHvj89awNBLYrwT9zXY2aBAxTkGFdiSxP/Jp6FLDw+AS7GfsdJTJ2EqSO5khD43nGfBARy/ZxOQgZHe7GPM1jzUvChUtmnBAXQPcKGMJp3fdFGq6NByEhiAO4b/YptFfQJwNyQ/bZkVQGcf90Ja25ndIyrKBOa/f8wIpwi3X1G8UcxNu7ozUS7tiH0jBswwS3RIaF1w6LYKU/ML2+8sGnjygQswtKrVIy/Qd9qQP6LnO64q4fPAKpxyZIymHo1jWk6p1ag2BsdNwQMHcC+M5kHFJX+YlPxpVlbCx2mZ5DzPI04k4kUwHHdskU3pH76iftG8yWlkAAAAAElFTkSuQmCC</Image> <Url type="application/x-suggestions+json" method="GET" template="https://www.google.com/complete/search?client=firefox&q={searchTerms}"/> <Url type="text/html" method="GET" template="https://www.google.com/search"> <Param name="q" value="{searchTerms}"/> <Param name="ie" value="utf-8"/> <Param name="oe" value="utf-8"/> <Param name="aq" value="t"/> <Param name="rls" value="{moz:distributionID}:{moz:locale}:{moz:official}"/> -#if MOZ_UPDATE_CHANNEL == beta - <MozParam name="client" condition="defaultEngine" trueValue="firefox-beta" falseValue="firefox"/> -#elif MOZ_UPDATE_CHANNEL == aurora - <MozParam name="client" condition="defaultEngine" trueValue="firefox-aurora" falseValue="firefox"/> -#elif MOZ_UPDATE_CHANNEL == nightly - <MozParam name="client" condition="defaultEngine" trueValue="firefox-nightly" falseValue="firefox"/> -#else <MozParam name="client" condition="defaultEngine" trueValue="firefox-a" falseValue="firefox"/> -#endif <MozParam name="channel" condition="purpose" purpose="contextmenu" value="rcs"/> <MozParam name="channel" condition="purpose" purpose="keyword" value="fflb"/> <MozParam name="channel" condition="purpose" purpose="searchbar" value="sb"/> <MozParam name="channel" condition="purpose" purpose="homepage" value="np"/> <MozParam name="source" condition="purpose" purpose="homepage" value="hp"/> </Url> <SearchForm>https://www.google.com/</SearchForm> </SearchPlugin> diff --git a/browser/locales/jar.mn b/browser/locales/jar.mn --- a/browser/locales/jar.mn +++ b/browser/locales/jar.mn @@ -123,14 +123,15 @@ locale/browser/syncQuota.properties (%chrome/browser/syncQuota.properties) #endif % locale browser-region @AB_CD@ %locale/browser-region/ locale/browser-region/region.properties (%chrome/browser-region/region.properties) # the following files are browser-specific overrides locale/browser/netError.dtd (%chrome/overrides/netError.dtd) locale/browser/appstrings.properties (%chrome/overrides/appstrings.properties) locale/browser/downloads/settingsChange.dtd (%chrome/overrides/settingsChange.dtd) + locale/browser/searchplugins/list.txt (%searchplugins/list.txt) % override chrome://global/locale/netError.dtd chrome://browser/locale/netError.dtd % override chrome://global/locale/appstrings.properties chrome://browser/locale/appstrings.properties % override chrome://mozapps/locale/downloads/settingsChange.dtd chrome://browser/locale/downloads/settingsChange.dtd % locale pdf.js @AB_CD@ %locale/pdfviewer/ locale/pdfviewer/viewer.properties (%pdfviewer/viewer.properties) locale/pdfviewer/chrome.properties (%pdfviewer/chrome.properties) ++++++ firefox-no-default-ualocale.patch ++++++ # HG changeset patch # User Wolfgang Rosenauer <wr@rosenauer.org> # Parent 5ffbb37bbfc52f549620ff67ce45f218a825cf4e Do not overwrite the locale dynamic pref from xulrunner's all.js with a wrong default value diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -253,17 +253,17 @@ pref("browser.uitour.pinnedTabUrl", "htt pref("browser.uitour.url", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/tour/"); pref("browser.uitour.whitelist.add.260", "www.mozilla.org,support.mozilla.org"); pref("browser.customizemode.tip0.shown", false); pref("browser.customizemode.tip0.learnMoreUrl", "https://support.mozilla.org/1/firefox/%VERSION%/%OS%/%LOCALE%/customize"); pref("keyword.enabled", true); -pref("general.useragent.locale", "@AB_CD@"); +pref("general.useragent.locale", "chrome://global/locale/intl.properties"); pref("general.skins.selectedSkin", "classic/1.0"); pref("general.smoothScroll", true); #ifdef UNIX_BUT_NOT_MAC pref("general.autoScroll", false); #else pref("general.autoScroll", true); #endif ++++++ firefox.1 ++++++ .TH FIREFOX 1 "January 04, 2006" firefox "Linux User's Manual" .SH NAME firefox \- a Web browser for X11 derived from the Mozilla browser .SH SYNOPSIS .B firefox [\fIOPTIONS\fR] [\fIURL\fR] .SH DESCRIPTION \fBMozilla Firefox\fR is an open-source web browser, designed for standards compliance, performance and portability. .SH USAGE \fBfirefox\fR is a simple shell script that will set up the environment for the actual executable. .SH OPTIONS A summary of the options supported by \fBfirefox\fR is included below. .SS "GTK options" \fB\-\-gdk-debug=\fR\fIFLAGS\fR Gdk debugging flags to set .TP \fB\-\-gdk-no-debug=\fR\fIFLAGS\fR Gdk debugging flags to unset .TP \fB\-\-gtk-debug=\fR\fIFLAGS\fR Gtk+ debugging flags to set .TP \fB\-\-gtk-no-debug=\fR\fIFLAGS\fR Gtk+ debugging flags to unset .TP \fB\-\-gtk-module=\fR\fIMODULE\fR Load an additional Gtk module .SS "X11 options" .TP .BI \-\-display= DISPLAY X display to use .TP .B \--sync Make X calls synchronous .TP .B \-\-no-xshm Don't use X shared memory extension .TP .BI \-\-xim-preedit= STYLE .TP .BI \-\-xim-status= STYLE .TP .B \-\-g-fatal-warnings Make all warnings fatal .SS "Firefox options" .TP .B \-h, \-help Show summary of options. .TP \fB\-height\fR \fIvalue\fR Set height of startup window to \fIvalue\fR. .TP \fB\-width\fR \fIvalue\fR Set width of startup window to \fIvalue\fR. .TP .B \-v, \-version Print \fB/usr/bin/firefox-bin\fR version. .TP \fB\-CreateProfile\fR \fIprofile\fR Create \fIprofile\fR. .TP \fB\-P\fR \fIprofile\fR Start with \fIprofile\fR. .TP .B \-ProfileManager Start with profile manager. .TP \fB\-UILocale\fR \fIlang-region\fR Start with \fIlang-region\fR resources. .TP \fB\-contentLocale\fR \fIlang-region\fR Start with \fIlang-region\fR resources. .TP \fB\-remote\fR \fIcommand\fR Execute \fIcommand\fR in an already running Firefox process. For more info, see: \fIhttp://www.mozilla.org/unix/remote.html\fR .TP .B \-no-remote Don't try to control an already running instance. .TP .B \-jsconsole Start with Javascript Console .TP \fB\-chrome\fR \fIurl\fR Load the specified chrome. .TP \fB\-new-window\fR \fIurl\fR Open URL in a new window if Firefox is already running. .TP \fB\-new-tab\fR \fIurl\fR Open URL in a new tab if Firefox is already running. .TP \fB\-preferences\fR Open Firefox preferences menu. .TP .B \-safe-mode Disables extensions and themes for this session. .TP .SH FILES \fI/usr/bin/firefox\fR - shell script wrapping \fBfirefox\fR .br \fI/usr/lib/firefox/firefox\fR - \fBfirefox\fR executable .SH VERSION 3.0 .SH BUGS To report a bug, please visit \fIhttp://bugzilla.mozilla.org/\fR .SH "SEE ALSO" .BR mozilla(1) .SH AUTHORS .TP .B The Mozilla Organization .I http://www.mozilla.org/about.html ++++++ firefox.js ++++++ pref("browser.preferences.instantApply", true); ++++++ kde.js ++++++ pref("browser.preferences.instantApply", false); ++++++ mozilla-aarch64-bmo-810631.patch ++++++ ++++ 100372 lines (skipped) ++++++ mozilla-aarch64-bmo-962488.patch ++++++ # HG changeset patch # User Marcin Juszkiewicz <mjuszkiewicz@redhat.com> # Date 1393440196 18000 # Node ID 6a46f53ad944b44385398822d7bcf7621a785d91 # Parent 0aa56e2a5f816a30da48701f73d03060ee9692b2 Bug 962488 - Update double-conversion for proper AArch64 support. r=froydnj Fix imported from upstream repository: https://code.google.com/p/double-conversion/source/detail?r=4e24bb31bcc76d6d... diff --git a/mfbt/double-conversion/fix-aarch64-macro.patch b/mfbt/double-conversion/fix-aarch64-macro.patch new file mode 100644 --- /dev/null +++ b/mfbt/double-conversion/fix-aarch64-macro.patch @@ -0,0 +1,23 @@ +Backport from upstream. + +https://code.google.com/p/double-conversion/source/detail?r=4e24bb31bcc76d6d... + +--- + mfbt/double-conversion/utils.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/mfbt/double-conversion/utils.h ++++ b/mfbt/double-conversion/utils.h +@@ -58,11 +58,11 @@ + defined(__mips__) || \ + defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \ + defined(__sparc__) || defined(__sparc) || defined(__s390__) || \ + defined(__SH4__) || defined(__alpha__) || \ + defined(_MIPS_ARCH_MIPS32R2) || \ +- defined(_AARCH64EL_) ++ defined(__AARCH64EL__) + #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 + #elif defined(_M_IX86) || defined(__i386__) || defined(__i386) + #if defined(_WIN32) + // Windows uses a 64bit wide floating point stack. + #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 diff --git a/mfbt/double-conversion/update.sh b/mfbt/double-conversion/update.sh --- a/mfbt/double-conversion/update.sh +++ b/mfbt/double-conversion/update.sh @@ -15,9 +15,12 @@ cp $1/src/*.h ./ # Source cp $1/src/*.cc ./ patch -p3 < add-mfbt-api-markers.patch patch -p3 < use-StandardInteger.patch patch -p3 < use-mozilla-assertions.patch patch -p3 < use-static_assert.patch -patch -p3 < ToPrecision-exponential.patch \ No newline at end of file +patch -p3 < ToPrecision-exponential.patch + +# Merged upstream, part of 2.0.1 version +patch -p3 < fix-aarch64-macro.patch diff --git a/mfbt/double-conversion/utils.h b/mfbt/double-conversion/utils.h --- a/mfbt/double-conversion/utils.h +++ b/mfbt/double-conversion/utils.h @@ -55,17 +55,17 @@ #if defined(_M_X64) || defined(__x86_64__) || \ defined(__ARMEL__) || defined(__avr32__) || \ defined(__hppa__) || defined(__ia64__) || \ defined(__mips__) || \ defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \ defined(__sparc__) || defined(__sparc) || defined(__s390__) || \ defined(__SH4__) || defined(__alpha__) || \ defined(_MIPS_ARCH_MIPS32R2) || \ - defined(_AARCH64EL_) + defined(__AARCH64EL__) #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 #elif defined(_M_IX86) || defined(__i386__) || defined(__i386) #if defined(_WIN32) // Windows uses a 64bit wide floating point stack. #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 #else #undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS #endif // _WIN32 ++++++ mozilla-aarch64-bmo-963023.patch ++++++ # HG changeset patch # User Marcin Juszkiewicz <mjuszkiewicz@redhat.com> # Date 1392217668 18000 # Node ID 4e9b713f435ade266a68a8d7ba08aad65c3fa6c5 # Parent 282b6e88f9d4c2367a72836f6f9efeab2aadaa58 Bug 963023 - AArch64 support for libevent. r=froydnj diff --git a/ipc/chromium/src/third_party/libevent-use-non-deprecated-syscalls.patch b/ipc/chromium/src/third_party/libevent-use-non-deprecated-syscalls.patch new file mode 100644 --- /dev/null +++ b/ipc/chromium/src/third_party/libevent-use-non-deprecated-syscalls.patch @@ -0,0 +1,43 @@ +--- + ipc/chromium/src/third_party/libevent/epoll_sub.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +--- mozilla-central.orig/ipc/chromium/src/third_party/libevent/epoll_sub.c ++++ mozilla-central/ipc/chromium/src/third_party/libevent/epoll_sub.c +@@ -29,15 +29,24 @@ + #include <sys/param.h> + #include <sys/types.h> + #include <sys/syscall.h> + #include <sys/epoll.h> + #include <unistd.h> ++#include <errno.h> + + int + epoll_create(int size) + { ++#if !defined(__NR_epoll_create) && defined(__NR_epoll_create1) ++ if (size <= 0) { ++ errno = EINVAL; ++ return -1; ++ } ++ return (syscall(__NR_epoll_create1, 0)); ++#else + return (syscall(__NR_epoll_create, size)); ++#endif + } + + int + epoll_ctl(int epfd, int op, int fd, struct epoll_event *event) + { +@@ -46,7 +55,11 @@ epoll_ctl(int epfd, int op, int fd, stru + } + + int + epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout) + { ++#if !defined(__NR_epoll_wait) && defined(__NR_epoll_pwait) ++ return (syscall(__NR_epoll_pwait, epfd, events, maxevents, timeout, NULL, 0)); ++#else + return (syscall(__NR_epoll_wait, epfd, events, maxevents, timeout)); ++#endif + } diff --git a/ipc/chromium/src/third_party/libevent/README.mozilla b/ipc/chromium/src/third_party/libevent/README.mozilla --- a/ipc/chromium/src/third_party/libevent/README.mozilla +++ b/ipc/chromium/src/third_party/libevent/README.mozilla @@ -8,8 +8,10 @@ android/event2/event-config.h These files are taken from libevent-2.0.21-stable built on the development environment indicated by the first path component. You have to run "./configure" and "make" to get all of the pre-processing done. The file can then be found in "include/event2/". 2. This is ugly, prepare yourself. OS X has a weird problem with how the "TAILQ_END(head)" is used, causing a linking error. Just replace all use of the "TAILQ_END(head)" macro with "NULL". 3. Apply "add mac-arc4random-buf.patch", which removes some bad OS X compatibility code. This will allow libevent to compile on all supported versions of OS X. 4. Apply "openbsd-no-arc4random_addrandom.patch", which fixes the build on OpenBSD (which doesnt provide arc4random_addrandom anymore, see #931354) + +5. Apply "libevent-use-non-deprecated-syscalls.patch", which fixes the build on AArch64 architecture (which does not provide deprecated syscalls) diff --git a/ipc/chromium/src/third_party/libevent/epoll_sub.c b/ipc/chromium/src/third_party/libevent/epoll_sub.c --- a/ipc/chromium/src/third_party/libevent/epoll_sub.c +++ b/ipc/chromium/src/third_party/libevent/epoll_sub.c @@ -26,27 +26,40 @@ */ #include <stdint.h> #include <sys/param.h> #include <sys/types.h> #include <sys/syscall.h> #include <sys/epoll.h> #include <unistd.h> +#include <errno.h> int epoll_create(int size) { +#if !defined(__NR_epoll_create) && defined(__NR_epoll_create1) + if (size <= 0) { + errno = EINVAL; + return -1; + } + return (syscall(__NR_epoll_create1, 0)); +#else return (syscall(__NR_epoll_create, size)); +#endif } int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event) { return (syscall(__NR_epoll_ctl, epfd, op, fd, event)); } int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout) { +#if !defined(__NR_epoll_wait) && defined(__NR_epoll_pwait) + return (syscall(__NR_epoll_pwait, epfd, events, maxevents, timeout, NULL, 0)); +#else return (syscall(__NR_epoll_wait, epfd, events, maxevents, timeout)); +#endif } ++++++ mozilla-aarch64-bmo-963024.patch ++++++ # HG changeset patch # User Marcin Juszkiewicz <mjuszkiewicz@redhat.com> # Date 1393440196 18000 # Node ID d56b5c1a557348d4ac14a4d1ea7a5b5d240e3647 # Parent 6a46f53ad944b44385398822d7bcf7621a785d91 Bug 963024 - AArch64 support for XPCOM. r=froydnj diff --git a/xpcom/reflect/xptcall/src/md/unix/moz.build b/xpcom/reflect/xptcall/src/md/unix/moz.build --- a/xpcom/reflect/xptcall/src/md/unix/moz.build +++ b/xpcom/reflect/xptcall/src/md/unix/moz.build @@ -144,16 +144,23 @@ if CONFIG['OS_ARCH'] == 'NetBSD': if CONFIG['OS_TEST'] in ('amiga', 'atari', 'hp300', 'mac68k', 'mvme68k', 'next68k', 'sun3', 'sun3x', 'x68k'): SOURCES += [ 'xptcinvoke_netbsd_m68k.cpp', 'xptcstubs_netbsd_m68k.cpp' ] if CONFIG['OS_ARCH'] == 'Linux': + if CONFIG['OS_TEST'] == 'aarch64': + SOURCES += [ + 'xptcinvoke_aarch64.cpp', + 'xptcinvoke_asm_aarch64.s', + 'xptcstubs_aarch64.cpp', + 'xptcstubs_asm_aarch64.s', + ] if CONFIG['OS_TEST'] == 'm68k': SOURCES += [ 'xptcinvoke_linux_m68k.cpp', 'xptcstubs_linux_m68k.cpp', ] if CONFIG['OS_TEST'].find('mips') != -1: if CONFIG['OS_TEST'].find('mips64') != -1: SOURCES += [ diff --git a/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_aarch64.cpp b/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_aarch64.cpp new file mode 100644 --- /dev/null +++ b/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_aarch64.cpp @@ -0,0 +1,136 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/* Platform specific code to invoke XPCOM methods on native objects */ + +#include "xptcprivate.h" + +#if !defined(__aarch64__) +#error "This code is for Linux AArch64 only." +#endif + + +/* "Procedure Call Standard for the ARM 64-bit Architecture" document, sections + * "5.4 Parameter Passing" and "6.1.2 Procedure Calling" contain all the + * needed information. + * + * http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042d/IHI0042D_aapcs.pdf + */ + +#ifndef __AARCH64EL__ +#error "Only little endian compatibility was tested" +#endif + +/* + * Allocation of integer function arguments initially to registers r1-r7 + * and then to stack. Handling of 'that' argument which goes to register r0 + * is handled separately and does not belong here. + * + * 'ireg_args' - pointer to the current position in the buffer, + * corresponding to the register arguments + * 'stack_args' - pointer to the current position in the buffer, + * corresponding to the arguments on stack + * 'end' - pointer to the end of the registers argument + * buffer. + */ +static inline void alloc_word(uint64_t* &ireg_args, + uint64_t* &stack_args, + uint64_t* end, + uint64_t data) +{ + if (ireg_args < end) { + *ireg_args = data; + ireg_args++; + } else { + *stack_args = data; + stack_args++; + } +} + +static inline void alloc_double(double* &freg_args, + uint64_t* &stack_args, + double* end, + double data) +{ + if (freg_args < end) { + *freg_args = data; + freg_args++; + } else { + memcpy(stack_args, &data, sizeof(data)); + stack_args++; + } +} + +static inline void alloc_float(double* &freg_args, + uint64_t* &stack_args, + double* end, + float data) +{ + if (freg_args < end) { + memcpy(freg_args, &data, sizeof(data)); + freg_args++; + } else { + memcpy(stack_args, &data, sizeof(data)); + stack_args++; + } +} + + +extern "C" void +invoke_copy_to_stack(uint64_t* stk, uint64_t *end, + uint32_t paramCount, nsXPTCVariant* s) +{ + uint64_t *ireg_args = stk; + uint64_t *ireg_end = ireg_args + 8; + double *freg_args = (double *)ireg_end; + double *freg_end = freg_args + 8; + uint64_t *stack_args = (uint64_t *)freg_end; + + // leave room for 'that' argument in x0 + ++ireg_args; + + for (uint32_t i = 0; i < paramCount; i++, s++) { + if (s->IsPtrData()) { + alloc_word(ireg_args, stack_args, ireg_end, (uint64_t)s->ptr); + continue; + } + // According to the ABI, integral types that are smaller than 8 bytes + // are to be passed in 8-byte registers or 8-byte stack slots. + switch (s->type) { + case nsXPTType::T_FLOAT: + alloc_float(freg_args, stack_args, freg_end, s->val.f); + break; + case nsXPTType::T_DOUBLE: + alloc_double(freg_args, stack_args, freg_end, s->val.d); + break; + case nsXPTType::T_I8: alloc_word(ireg_args, stk, end, s->val.i8); break; + case nsXPTType::T_I16: alloc_word(ireg_args, stk, end, s->val.i16); break; + case nsXPTType::T_I32: alloc_word(ireg_args, stk, end, s->val.i32); break; + case nsXPTType::T_I64: alloc_word(ireg_args, stk, end, s->val.i64); break; + case nsXPTType::T_U8: alloc_word(ireg_args, stk, end, s->val.u8); break; + case nsXPTType::T_U16: alloc_word(ireg_args, stk, end, s->val.u16); break; + case nsXPTType::T_U32: alloc_word(ireg_args, stk, end, s->val.u32); break; + case nsXPTType::T_U64: alloc_word(ireg_args, stk, end, s->val.u64); break; + case nsXPTType::T_BOOL: alloc_word(ireg_args, stk, end, s->val.b); break; + case nsXPTType::T_CHAR: alloc_word(ireg_args, stk, end, s->val.c); break; + case nsXPTType::T_WCHAR: alloc_word(ireg_args, stk, end, s->val.wc); break; + default: + // all the others are plain pointer types + alloc_word(ireg_args, stack_args, ireg_end, + reinterpret_cast<uint64_t>(s->val.p)); + break; + } + } +} + +extern "C" nsresult _NS_InvokeByIndex(nsISupports* that, uint32_t methodIndex, + uint32_t paramCount, nsXPTCVariant* params); + +EXPORT_XPCOM_API(nsresult) +NS_InvokeByIndex(nsISupports* that, uint32_t methodIndex, + uint32_t paramCount, nsXPTCVariant* params) +{ + return _NS_InvokeByIndex(that, methodIndex, paramCount, params); +} diff --git a/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_aarch64.s b/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_aarch64.s new file mode 100644 --- /dev/null +++ b/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_aarch64.s @@ -0,0 +1,67 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + + .section ".text" + .globl _NS_InvokeByIndex + .type _NS_InvokeByIndex,@function + +/* + * _NS_InvokeByIndex(nsISupports* that, uint32_t methodIndex, + * uint32_t paramCount, nsXPTCVariant* params) + */ + +_NS_InvokeByIndex: + # set up frame + stp x29, x30, [sp,#-32]! + mov x29, sp + stp x19, x20, [sp,#16] + + # save methodIndex across function calls + mov w20, w1 + + # end of stack area passed to invoke_copy_to_stack + mov x1, sp + + # assume 8 bytes of stack for each argument with 16-byte alignment + add w19, w2, #1 + and w19, w19, #0xfffffffe + sub sp, sp, w19, uxth #3 + + # temporary place to store args passed in r0-r7,v0-v7 + sub sp, sp, #128 + + # save 'that' on stack + str x0, [sp] + + # start of stack area passed to invoke_copy_to_stack + mov x0, sp + bl invoke_copy_to_stack + + # load arguments passed in r0-r7 + ldp x6, x7, [sp, #48] + ldp x4, x5, [sp, #32] + ldp x2, x3, [sp, #16] + ldp x0, x1, [sp],#64 + + # load arguments passed in v0-v7 + ldp d6, d7, [sp, #48] + ldp d4, d5, [sp, #32] + ldp d2, d3, [sp, #16] + ldp d0, d1, [sp],#64 + + # call the method + ldr x16, [x0] + add x16, x16, w20, uxth #3 + ldr x16, [x16] + blr x16 + + add sp, sp, w19, uxth #3 + ldp x19, x20, [sp,#16] + ldp x29, x30, [sp],#32 + ret + + .size _NS_InvokeByIndex, . - _NS_InvokeByIndex + + diff --git a/xpcom/reflect/xptcall/src/md/unix/xptcstubs_aarch64.cpp b/xpcom/reflect/xptcall/src/md/unix/xptcstubs_aarch64.cpp new file mode 100644 --- /dev/null +++ b/xpcom/reflect/xptcall/src/md/unix/xptcstubs_aarch64.cpp @@ -0,0 +1,219 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "xptcprivate.h" +#include "xptiprivate.h" + +#ifndef __AARCH64EL__ +#error "Only little endian compatibility was tested" +#endif + +/* + * This is for AArch64 ABI + * + * When we're called, the "gp" registers are stored in gprData and + * the "fp" registers are stored in fprData. Each array has 8 regs + * but first reg in gprData is a placeholder for 'self'. + */ +extern "C" nsresult +PrepareAndDispatch(nsXPTCStubBase* self, uint32_t methodIndex, uint64_t* args, + uint64_t *gprData, double *fprData) +{ +#define PARAM_BUFFER_COUNT 16 +#define PARAM_GPR_COUNT 8 +#define PARAM_FPR_COUNT 8 + + nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT]; + nsXPTCMiniVariant* dispatchParams = NULL; + const nsXPTMethodInfo* info; + nsresult result = NS_ERROR_FAILURE; + + NS_ASSERTION(self,"no self"); + + self->mEntry->GetMethodInfo(uint16_t(methodIndex), &info); + NS_ASSERTION(info,"no method info"); + + uint32_t 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"); + + uint64_t* ap = args; + uint32_t next_gpr = 1; // skip first arg which is 'self' + uint32_t next_fpr = 0; + for (uint32_t i = 0; i < paramCount; i++) { + const nsXPTParamInfo& param = info->GetParam(i); + const nsXPTType& type = param.GetType(); + nsXPTCMiniVariant* dp = &dispatchParams[i]; + + if (param.IsOut() || !type.IsArithmetic()) { + if (next_gpr < PARAM_GPR_COUNT) { + dp->val.p = (void*)gprData[next_gpr++]; + } else { + dp->val.p = (void*)*ap++; + } + continue; + } + + switch (type) { + case nsXPTType::T_I8: + if (next_gpr < PARAM_GPR_COUNT) { + dp->val.i8 = (int8_t)gprData[next_gpr++]; + } else { + dp->val.i8 = (int8_t)*ap++; + } + break; + + case nsXPTType::T_I16: + if (next_gpr < PARAM_GPR_COUNT) { + dp->val.i16 = (int16_t)gprData[next_gpr++]; + } else { + dp->val.i16 = (int16_t)*ap++; + } + break; + + case nsXPTType::T_I32: + if (next_gpr < PARAM_GPR_COUNT) { + dp->val.i32 = (int32_t)gprData[next_gpr++]; + } else { + dp->val.i32 = (int32_t)*ap++; + } + break; + + case nsXPTType::T_I64: + if (next_gpr < PARAM_GPR_COUNT) { + dp->val.i64 = (int64_t)gprData[next_gpr++]; + } else { + dp->val.i64 = (int64_t)*ap++; + } + break; + + case nsXPTType::T_U8: + if (next_gpr < PARAM_GPR_COUNT) { + dp->val.u8 = (uint8_t)gprData[next_gpr++]; + } else { + dp->val.u8 = (uint8_t)*ap++; + } + break; + + case nsXPTType::T_U16: + if (next_gpr < PARAM_GPR_COUNT) { + dp->val.u16 = (uint16_t)gprData[next_gpr++]; + } else { + dp->val.u16 = (uint16_t)*ap++; + } + break; + + case nsXPTType::T_U32: + if (next_gpr < PARAM_GPR_COUNT) { + dp->val.u32 = (uint32_t)gprData[next_gpr++]; + } else { + dp->val.u32 = (uint32_t)*ap++; + } + break; + + case nsXPTType::T_U64: + if (next_gpr < PARAM_GPR_COUNT) { + dp->val.u64 = (uint64_t)gprData[next_gpr++]; + } else { + dp->val.u64 = (uint64_t)*ap++; + } + break; + + case nsXPTType::T_FLOAT: + if (next_fpr < PARAM_FPR_COUNT) { + memcpy(&dp->val.f, &fprData[next_fpr++], sizeof(dp->val.f)); + } else { + memcpy(&dp->val.f, ap++, sizeof(dp->val.f)); + } + break; + + case nsXPTType::T_DOUBLE: + if (next_fpr < PARAM_FPR_COUNT) { + memcpy(&dp->val.d, &fprData[next_fpr++], sizeof(dp->val.d)); + } else { + memcpy(&dp->val.d, ap++, sizeof(dp->val.d)); + } + break; + + case nsXPTType::T_BOOL: + if (next_gpr < PARAM_GPR_COUNT) { + dp->val.b = (bool)gprData[next_gpr++]; + } else { + dp->val.b = (bool)*ap++; + } + break; + + case nsXPTType::T_CHAR: + if (next_gpr < PARAM_GPR_COUNT) { + dp->val.c = (char)gprData[next_gpr++]; + } else { + dp->val.c = (char)*ap++; + } + break; + + case nsXPTType::T_WCHAR: + if (next_gpr < PARAM_GPR_COUNT) { + dp->val.wc = (wchar_t)gprData[next_gpr++]; + } else { + dp->val.wc = (wchar_t)*ap++; + } + break; + + default: + NS_ASSERTION(0, "bad type"); + break; + } + } + + result = self->mOuter->CallMethod((uint16_t)methodIndex, info, dispatchParams); + + if (dispatchParams != paramBuffer) { + delete [] dispatchParams; + } + + return result; +} + +// Load w17 with the constant 'n' and branch to SharedStub(). +# define STUB_ENTRY(n) \ + __asm__ ( \ + ".section \".text\" \n\t" \ + ".align 2\n\t" \ + ".if "#n" < 10 \n\t" \ + ".globl _ZN14nsXPTCStubBase5Stub"#n"Ev \n\t" \ + ".hidden _ZN14nsXPTCStubBase5Stub"#n"Ev \n\t" \ + ".type _ZN14nsXPTCStubBase5Stub"#n"Ev,@function \n\n" \ + "_ZN14nsXPTCStubBase5Stub"#n"Ev: \n\t" \ + ".elseif "#n" < 100 \n\t" \ + ".globl _ZN14nsXPTCStubBase6Stub"#n"Ev \n\t" \ + ".hidden _ZN14nsXPTCStubBase6Stub"#n"Ev \n\t" \ + ".type _ZN14nsXPTCStubBase6Stub"#n"Ev,@function \n\n" \ + "_ZN14nsXPTCStubBase6Stub"#n"Ev: \n\t" \ + ".elseif "#n" < 1000 \n\t" \ + ".globl _ZN14nsXPTCStubBase7Stub"#n"Ev \n\t" \ + ".hidden _ZN14nsXPTCStubBase7Stub"#n"Ev \n\t" \ + ".type _ZN14nsXPTCStubBase7Stub"#n"Ev,@function \n\n" \ + "_ZN14nsXPTCStubBase7Stub"#n"Ev: \n\t" \ + ".else \n\t" \ + ".err \"stub number "#n" >= 1000 not yet supported\"\n" \ + ".endif \n\t" \ + "mov w17,#"#n" \n\t" \ + "b SharedStub \n" \ +); + +#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/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_aarch64.s b/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_aarch64.s new file mode 100644 --- /dev/null +++ b/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_aarch64.s @@ -0,0 +1,39 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + .set NGPREGS,8 + .set NFPREGS,8 + + .section ".text" + .globl SharedStub + .hidden SharedStub + .type SharedStub,@function +SharedStub: + stp x29, x30, [sp,#-16]! + mov x29, sp + + sub sp, sp, #8*(NGPREGS+NFPREGS) + stp x0, x1, [sp, #64+(0*8)] + stp x2, x3, [sp, #64+(2*8)] + stp x4, x5, [sp, #64+(4*8)] + stp x6, x7, [sp, #64+(6*8)] + stp d0, d1, [sp, #(0*8)] + stp d2, d3, [sp, #(2*8)] + stp d4, d5, [sp, #(4*8)] + stp d6, d7, [sp, #(6*8)] + + # methodIndex passed from stub + mov w1, w17 + + add x2, sp, #16+(8*(NGPREGS+NFPREGS)) + add x3, sp, #8*NFPREGS + add x4, sp, #0 + + bl PrepareAndDispatch + + add sp, sp, #8*(NGPREGS+NFPREGS) + ldp x29, x30, [sp],#16 + ret + + .size SharedStub, . - SharedStub ++++++ mozilla-aarch64-bmo-963027.patch ++++++ # HG changeset patch # User Marcin Juszkiewicz <mjuszkiewicz@redhat.com> # Date 1392218661 18000 # Node ID 38fca44b6b86e2f12535900e2084f0378217570f # Parent 8858624d813a6200b059590c146cf774fc16ff38 Bug 963027 - AArch64 support for WebRTC. r=derf Index: mozilla/media/webrtc/trunk/webrtc/typedefs.h =================================================================== --- mozilla.orig/media/webrtc/trunk/webrtc/typedefs.h +++ mozilla/media/webrtc/trunk/webrtc/typedefs.h @@ -113,6 +113,16 @@ #define WEBRTC_ARCH_32_BITS 1 #define WEBRTC_ARCH_BIG_ENDIAN #define WEBRTC_BIG_ENDIAN +#elif defined(__aarch64__) +#define WEBRTC_ARCH_AARCH64 1 +#define WEBRTC_ARCH_64_BITS 1 +#if defined(__AARCH64EL__) +#define WEBRTC_ARCH_LITTLE_ENDIAN +#define WEBRTC_LITTLE_ENDIAN +#elif defined(__AARCH64EB__) +#define WEBRTC_ARCH_BIG_ENDIAN +#define WEBRTC_BIG_ENDIAN +#endif #elif defined(__alpha__) #define WEBRTC_ARCH_ALPHA 1 #define WEBRTC_ARCH_64_BITS 1 ++++++ mozilla-arm-disable-edsp.patch ++++++ # HG changeset patch # User Adrian Schröter <adrian@suse.de> # Parent b945e0c3b145b6b2245f42bab52f911c2d1f6759 disable ESDP support (no BNC or BMO reference yet :-() diff --git a/mozglue/build/arm.h b/mozglue/build/arm.h --- a/mozglue/build/arm.h +++ b/mozglue/build/arm.h @@ -116,17 +116,17 @@ namespace mozilla { extern bool MFBT_DATA neon_enabled; #endif #endif } #if defined(MOZILLA_PRESUME_EDSP) # define MOZILLA_MAY_SUPPORT_EDSP 1 inline bool supports_edsp() { return true; } -#elif defined(MOZILLA_MAY_SUPPORT_EDSP) \ +#elif 0 \ && defined(MOZILLA_ARM_HAVE_CPUID_DETECTION) inline bool supports_edsp() { return arm_private::edsp_enabled; } #else inline bool supports_edsp() { return false; } #endif #if defined(MOZILLA_PRESUME_ARMV6) # define MOZILLA_MAY_SUPPORT_ARMV6 1 ++++++ mozilla-get-app-id ++++++ #!/usr/bin/perl -w use XML::Simple; my $file = shift || die "Usage: $0 [install.rdf|somefile.xpi]\n"; my $xml; if ($file =~ /\.xpi$/) { use Archive::Zip qw/:ERROR_CODES :CONSTANTS/; my $zip = Archive::Zip->new(); if ( $zip->read($file) != AZ_OK ) { die "zip file read error\n"; } my $data = $zip->contents("install.rdf"); die "missing install.rdf in $file\n" unless $data; $xml = XMLin($data) || die "$!\n"; } elsif ($file =~ /install.rdf/) { $xml = XMLin($file) || die "$!\n"; } else { die "unsupported file format\n"; } my $desc; for my $tag (qw/RDF:Description Description/) { if (exists $xml->{$tag}) { if (ref $xml->{$tag} eq 'ARRAY') { $desc = $xml->{$tag}; } else { $desc = [ $xml->{$tag} ]; } } } my $uuid; my $id; for my $x (@$desc) { if ($x->{"em:id"} =~ /{[[:xdigit:]]+-/) { print STDERR "Warning: multiple uuids!\n" if defined $uuid; $uuid = $x->{"em:id"}; } elsif ($x->{"em:id"} =~ /@/) { print STDERR "Warning: multiple ids!\n" if defined $id; $id = $x->{"em:id"}; } } if (defined $id) { print "$id\n"; } elsif (defined $uuid) { print "$uuid\n"; } else { exit 1; } ++++++ mozilla-icu-strncat.patch ++++++ # HG changeset patch # Parent 29be2a4daa0f512d22bde85b97b5460839026571 # User Wolfgang Rosenauer <wr@rosenauer.org> From: Jan Engelhardt <jengelh@inai.de> Reference: http://bugs.icu-project.org/trac/ticket/7808 diff --git a/intl/icu/source/tools/pkgdata/pkgdata.cpp b/intl/icu/source/tools/pkgdata/pkgdata.cpp --- a/intl/icu/source/tools/pkgdata/pkgdata.cpp +++ b/intl/icu/source/tools/pkgdata/pkgdata.cpp @@ -1975,22 +1975,22 @@ static void loadLists(UPKGOptions *o, UE FILE *p = NULL; size_t n; static char buf[512] = ""; char cmdBuf[1024]; UErrorCode status = U_ZERO_ERROR; const char cmd[] = "icu-config --incpkgdatafile"; /* #1 try the same path where pkgdata was called from. */ - findDirname(progname, cmdBuf, 1024, &status); + findDirname(progname, cmdBuf, sizeof(cmdBuf), &status); if(U_SUCCESS(status)) { if (cmdBuf[0] != 0) { - uprv_strncat(cmdBuf, U_FILE_SEP_STRING, 1024); + uprv_strncat(cmdBuf, U_FILE_SEP_STRING, sizeof(cmdBuf)-1-strlen(cmdBuf)); } - uprv_strncat(cmdBuf, cmd, 1024); + uprv_strncat(cmdBuf, cmd, sizeof(cmdBuf)-1-strlen(cmdBuf)); if(verbose) { fprintf(stdout, "# Calling icu-config: %s\n", cmdBuf); } p = popen(cmdBuf, "r"); } if(p == NULL || (n = fread(buf, 1, 511, p)) <= 0) { ++++++ mozilla-kde.patch ++++++ ++++ 3710 lines (skipped) ++++++ mozilla-language.patch ++++++ # HG changeset patch # User Wolfgang Rosenauer <wr@rosenauer.org> # Parent df748bfc0eaca6dedf086cfd7167392416bfae27 Bug 583793 - Firefox interface language set to LANG, ignores LANGUAGE diff --git a/intl/locale/src/nsLocaleService.cpp b/intl/locale/src/nsLocaleService.cpp --- a/intl/locale/src/nsLocaleService.cpp +++ b/intl/locale/src/nsLocaleService.cpp @@ -127,16 +127,17 @@ nsLocaleService::nsLocaleService(void) nsRefPtr<nsLocale> resultLocale(new nsLocale()); NS_ENSURE_TRUE_VOID(resultLocale); #ifdef MOZ_WIDGET_QT const char* lang = QLocale::system().name().toUtf8(); #else // Get system configuration const char* lang = getenv("LANG"); + const char* language = getenv("LANGUAGE"); #endif nsAutoString xpLocale, platformLocale; nsAutoString category, category_platform; int i; for( i = 0; i < LocaleListLength; i++ ) { nsresult result; @@ -155,16 +156,21 @@ nsLocaleService::nsLocaleService(void) } else { CopyASCIItoUTF16(lang, platformLocale); result = nsPosixLocale::GetXPLocale(lang, xpLocale); } } if (NS_FAILED(result)) { return; } + // LANGUAGE is overriding LC_MESSAGES + if (i == LC_MESSAGES && language && *language) { + CopyASCIItoUTF16(language, platformLocale); + result = nsPosixLocale::GetXPLocale(language, xpLocale); + } resultLocale->AddCategory(category, xpLocale); resultLocale->AddCategory(category_platform, platformLocale); } mSystemLocale = do_QueryInterface(resultLocale); mApplicationLocale = do_QueryInterface(resultLocale); #endif // XP_UNIX #ifdef XP_OS2 ++++++ mozilla-libproxy-compat.patch ++++++ # HG changeset patch # Parent 99164862ccce7947259465dcf9edbf6375d56413 # User Wolfgang Rosenauer <wr@rosenauer.org> No bug - libproxy API change picked up in bmo#769764 but fails in openSUSE 11.2 and earlier. Still cast to char* to make "all" happy Note: Remove that patch when openSUSE 11.2 runs out of any support! diff --git a/toolkit/system/unixproxy/nsLibProxySettings.cpp b/toolkit/system/unixproxy/nsLibProxySettings.cpp --- a/toolkit/system/unixproxy/nsLibProxySettings.cpp +++ b/toolkit/system/unixproxy/nsLibProxySettings.cpp @@ -67,17 +67,17 @@ nsUnixSystemProxySettings::GetProxyForUR if (!mProxyFactory) { mProxyFactory = px_proxy_factory_new(); } NS_ENSURE_TRUE(mProxyFactory, NS_ERROR_NOT_AVAILABLE); char **proxyArray = nullptr; proxyArray = px_proxy_factory_get_proxies(mProxyFactory, - PromiseFlatCString(aSpec).get()); + (char *) (PromiseFlatCString(aSpec).get())); NS_ENSURE_TRUE(proxyArray, NS_ERROR_NOT_AVAILABLE); // Translate libproxy's output to PAC string as expected // libproxy returns an array of proxies in the format: // <procotol>://[username:password@]proxy:port // or // direct:// // ++++++ mozilla-nongnome-proxies.patch ++++++ From: Wolfgang Rosenauer Subject: Do not use gconf for proxy settings if not running within Gnome Index: toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp =================================================================== RCS file: /cvsroot/mozilla/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp,v retrieving revision 1.1 diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp --- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp +++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp @@ -53,23 +53,27 @@ nsUnixSystemProxySettings::GetMainThread // dbus prevents us from being threadsafe, but this routine should not block anyhow *aMainThreadOnly = true; return NS_OK; } nsresult nsUnixSystemProxySettings::Init() { - mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID); - if (mGSettings) { - mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"), - getter_AddRefs(mProxySettings)); - } - if (!mProxySettings) { - mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID); + // only use GSettings if that is a GNOME session + const char* sessionType = PR_GetEnv("DESKTOP_SESSION"); + if (sessionType && !strcmp(sessionType, "gnome")) { + mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID); + if (mGSettings) { + mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"), + getter_AddRefs(mProxySettings)); + } + if (!mProxySettings) { + mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID); + } } return NS_OK; } bool nsUnixSystemProxySettings::IsProxyMode(const char* aMode) { ++++++ mozilla-ntlm-full-path.patch ++++++ # HG changeset patch # User Petr Cerny <pcerny@novell.com> # Parent 7308e4a7c1f769f4bbbc90870b849cadd99495a6 Bug 634334 - call to the ntlm_auth helper fails diff --git a/extensions/auth/nsAuthSambaNTLM.cpp b/extensions/auth/nsAuthSambaNTLM.cpp --- a/extensions/auth/nsAuthSambaNTLM.cpp +++ b/extensions/auth/nsAuthSambaNTLM.cpp @@ -168,17 +168,17 @@ static uint8_t* ExtractMessage(const nsA nsresult nsAuthSambaNTLM::SpawnNTLMAuthHelper() { const char* username = PR_GetEnv("USER"); if (!username) return NS_ERROR_FAILURE; const char* const args[] = { - "ntlm_auth", + "/usr/bin/ntlm_auth", "--helper-protocol", "ntlmssp-client-1", "--use-cached-creds", "--username", username, nullptr }; bool isOK = SpawnIOChild(const_cast<char* const*>(args), &mChildPID, &mFromChildFD, &mToChildFD); if (!isOK) ++++++ mozilla-ppc.patch ++++++ # HG changeset patch # Parent 21d0e194954e451f0f1935d0ed68ee9eae432ddf # User Wolfgang Rosenauer <wr@rosenauer.org> Bug 746112 - RegExp hang on ppc64 in execute. diff --git a/js/src/yarr/YarrInterpreter.h b/js/src/yarr/YarrInterpreter.h --- a/js/src/yarr/YarrInterpreter.h +++ b/js/src/yarr/YarrInterpreter.h @@ -162,17 +162,17 @@ struct ByteTerm { , m_invert(invert) { atom.characterClass = characterClass; atom.quantityType = QuantifierFixedCount; atom.quantityCount = 1; inputPosition = inputPos; } - ByteTerm(Type type, unsigned subpatternId, ByteDisjunction* parenthesesInfo, bool capture, int inputPos) + ByteTerm(Type type, unsigned subpatternId, ByteDisjunction* parenthesesInfo, bool capture, int inputPos) __attribute__((noinline)) : type(type) , m_capture(capture) , m_invert(false) { atom.subpatternId = subpatternId; atom.parenthesesDisjunction = parenthesesInfo; atom.quantityType = QuantifierFixedCount; atom.quantityCount = 1; @@ -183,17 +183,17 @@ struct ByteTerm { : type(type) , m_capture(false) , m_invert(invert) { atom.quantityType = QuantifierFixedCount; atom.quantityCount = 1; } - ByteTerm(Type type, unsigned subpatternId, bool capture, bool invert, int inputPos) + ByteTerm(Type type, unsigned subpatternId, bool capture, bool invert, int inputPos) __attribute__((noinline)) : type(type) , m_capture(capture) , m_invert(invert) { atom.subpatternId = subpatternId; atom.quantityType = QuantifierFixedCount; atom.quantityCount = 1; inputPosition = inputPos; diff --git a/js/src/yarr/YarrPattern.h b/js/src/yarr/YarrPattern.h --- a/js/src/yarr/YarrPattern.h +++ b/js/src/yarr/YarrPattern.h @@ -180,17 +180,17 @@ struct PatternTerm { , m_capture(false) , m_invert(invert) { characterClass = charClass; quantityType = QuantifierFixedCount; quantityCount = 1; } - PatternTerm(Type type, unsigned subpatternId, PatternDisjunction* disjunction, bool capture = false, bool invert = false) + PatternTerm(Type type, unsigned subpatternId, PatternDisjunction* disjunction, bool capture = false, bool invert = false) __attribute__((noinline)) : type(type) , m_capture(capture) , m_invert(invert) { parentheses.disjunction = disjunction; parentheses.subpatternId = subpatternId; parentheses.isCopy = false; parentheses.isTerminal = false; diff --git a/memory/mozjemalloc/jemalloc.c b/memory/mozjemalloc/jemalloc.c --- a/memory/mozjemalloc/jemalloc.c +++ b/memory/mozjemalloc/jemalloc.c @@ -1099,17 +1099,17 @@ struct arena_s { static unsigned ncpus; #endif /* * When MALLOC_STATIC_SIZES is defined most of the parameters * controlling the malloc behavior are defined as compile-time constants * for best performance and cannot be altered at runtime. */ -#if !defined(__ia64__) && !defined(__sparc__) && !defined(__mips__) +#if !defined(__ia64__) && !defined(__sparc__) && !defined(__mips__) && !(defined(__powerpc__)) #define MALLOC_STATIC_SIZES 1 #endif #ifdef MALLOC_STATIC_SIZES /* * VM page size. It must divide the runtime CPU page size or the code * will abort. ++++++ mozilla-ppc64-xpcom.patch ++++++ Index: mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc64_linux.S =================================================================== --- mozilla.orig/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc64_linux.S +++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc64_linux.S @@ -41,6 +41,11 @@ SharedStub: .section ".text" .align 2 .globl SharedStub + # Make the symbol hidden so that the branch from the stub does + # not go via a PLT. This is not only better for performance, + # but may be necessary to avoid linker errors since there is + # no place to restore the TOC register in a sibling call. + .hidden SharedStub .section ".opd","aw" .align 3 ++++++ mozilla-ppc64le-build.patch ++++++ ++++ 2232 lines (skipped) ++++++ mozilla-ppc64le-javascript.patch ++++++ # HG changeset patch # Parent e6f9fc7c1611990ed9fdafd3ff19c79fd356a1d6 # User Ulrich Weigand <uweigand@de.ibm.com> Bug 976648 - powerpc64le-linux support - JavaScript build/config diff --git a/js/src/assembler/wtf/Platform.h b/js/src/assembler/wtf/Platform.h --- a/js/src/assembler/wtf/Platform.h +++ b/js/src/assembler/wtf/Platform.h @@ -160,26 +160,32 @@ /* WTF_CPU_PPC - PowerPC 32-bit */ #if defined(__ppc__) \ || defined(__PPC__) \ || defined(__powerpc__) \ || defined(__powerpc) \ || defined(__POWERPC__) \ || defined(_M_PPC) \ || defined(__PPC) +#if !defined(__ppc64__) && !defined(__PPC64__) #define WTF_CPU_PPC 1 +#endif +#if !defined(__LITTLE_ENDIAN__) #define WTF_CPU_BIG_ENDIAN 1 #endif +#endif /* WTF_CPU_PPC64 - PowerPC 64-bit */ #if defined(__ppc64__) \ || defined(__PPC64__) #define WTF_CPU_PPC64 1 +#if !defined(__LITTLE_ENDIAN__) #define WTF_CPU_BIG_ENDIAN 1 #endif +#endif /* WTF_CPU_SH4 - SuperH SH-4 */ #if defined(__SH4__) #define WTF_CPU_SH4 1 #endif /* WTF_CPU_SPARC32 - SPARC 32-bit */ #if defined(__sparc) && !defined(__arch64__) || defined(__sparcv8) diff --git a/js/src/configure.in b/js/src/configure.in --- a/js/src/configure.in +++ b/js/src/configure.in @@ -923,17 +923,17 @@ esac # Only set CPU_ARCH if we recognize the value of OS_TEST case "$OS_TEST" in *86 | i86pc) CPU_ARCH=x86 ;; -powerpc64 | ppc64) +powerpc64 | ppc64 | powerpc64le | ppc64le) CPU_ARCH=ppc64 ;; powerpc | ppc | rs6000) CPU_ARCH=ppc ;; Alpha | alpha | ALPHA) diff --git a/js/src/jscpucfg.h b/js/src/jscpucfg.h --- a/js/src/jscpucfg.h +++ b/js/src/jscpucfg.h @@ -22,17 +22,17 @@ # ifdef __WATCOMC__ # define HAVE_VA_LIST_AS_ARRAY 1 # endif # define IS_LITTLE_ENDIAN 1 # undef IS_BIG_ENDIAN -#elif defined(__APPLE__) +#elif defined(__APPLE__) || defined(__powerpc__) || defined(__ppc__) # if __LITTLE_ENDIAN__ # define IS_LITTLE_ENDIAN 1 # undef IS_BIG_ENDIAN # elif __BIG_ENDIAN__ # undef IS_LITTLE_ENDIAN # define IS_BIG_ENDIAN 1 # endif @@ -84,18 +84,17 @@ # if defined(_STACK_GROWS_UPWARD) # define JS_STACK_GROWTH_DIRECTION (1) # elif defined(_STACK_GROWS_DOWNWARD) # define JS_STACK_GROWTH_DIRECTION (-1) # endif # endif #elif defined(__sparc) || defined(__sparc__) || \ - defined(_POWER) || defined(__powerpc__) || \ - defined(__ppc__) || defined(__hppa) || \ + defined(_POWER) || defined(__hppa) || \ defined(_MIPSEB) || defined(_BIG_ENDIAN) /* IA64 running HP-UX will have _BIG_ENDIAN defined. * IA64 running Linux will have endian.h and be handled above. */ # undef IS_LITTLE_ENDIAN # define IS_BIG_ENDIAN 1 #else /* !defined(__sparc) && !defined(__sparc__) && ... */ ++++++ mozilla-ppc64le-libffi.patch ++++++ ++++ 3206 lines (skipped) ++++++ mozilla-ppc64le-mfbt.patch ++++++ # HG changeset patch # Parent 46508a61b834f02575c116a508aa37b66d50bd20 # User Ulrich Weigand <uweigand@de.ibm.com> Bug 976648 - powerpc64le-linux support - mfbt endian config diff --git a/mfbt/Endian.h b/mfbt/Endian.h --- a/mfbt/Endian.h +++ b/mfbt/Endian.h @@ -86,17 +86,17 @@ # error "CPU type is unknown" # endif #elif defined(_WIN32) # if defined(_M_IX86) # define MOZ_LITTLE_ENDIAN 1 # else # error "CPU type is unknown" # endif -#elif defined(__APPLE__) +#elif defined(__APPLE__) || defined(__powerpc__) || defined(__ppc__) # if __LITTLE_ENDIAN__ # define MOZ_LITTLE_ENDIAN 1 # elif __BIG_ENDIAN__ # define MOZ_BIG_ENDIAN 1 # endif #elif defined(__GNUC__) && \ defined(__BYTE_ORDER__) && \ defined(__ORDER_LITTLE_ENDIAN__) && \ @@ -114,18 +114,17 @@ # endif /* * We can't include useful headers like <endian.h> or <sys/isa_defs.h> * here because they're not present on all platforms. Instead we have * this big conditional that ideally will catch all the interesting * cases. */ #elif defined(__sparc) || defined(__sparc__) || \ - defined(_POWER) || defined(__powerpc__) || \ - defined(__ppc__) || defined(__hppa) || \ + defined(_POWER) || defined(__hppa) || \ defined(_MIPSEB) || defined(__ARMEB__) || \ defined(__s390__) || defined(__AARCH64EB__) || \ (defined(__sh__) && defined(__LITTLE_ENDIAN__)) || \ (defined(__ia64) && defined(__BIG_ENDIAN__)) # define MOZ_BIG_ENDIAN 1 #elif defined(__i386) || defined(__i386__) || \ defined(__x86_64) || defined(__x86_64__) || \ defined(_MIPSEL) || defined(__ARMEL__) || \ ++++++ mozilla-ppc64le-webrtc.patch ++++++ # HG changeset patch # Parent acbe154db4c912f3ac853c0671cd3d5e52b1e716 # User Ulrich Weigand <uweigand@de.ibm.com> Bug 976648 - powerpc64le-linux support - WebRTC endian config diff --git a/media/webrtc/trunk/webrtc/typedefs.h b/media/webrtc/trunk/webrtc/typedefs.h --- a/media/webrtc/trunk/webrtc/typedefs.h +++ b/media/webrtc/trunk/webrtc/typedefs.h @@ -47,23 +47,33 @@ //#define WEBRTC_ARCH_ARM_FAMILY //#define WEBRTC_ARCH_ARMEL #define WEBRTC_ARCH_32_BITS #define WEBRTC_ARCH_LITTLE_ENDIAN #define WEBRTC_LITTLE_ENDIAN #elif defined(__powerpc64__) #define WEBRTC_ARCH_PPC64 1 #define WEBRTC_ARCH_64_BITS 1 +#ifdef __LITTLE_ENDIAN__ +#define WEBRTC_ARCH_LITTLE_ENDIAN +#define WEBRTC_LITTLE_ENDIAN +#else #define WEBRTC_ARCH_BIG_ENDIAN #define WEBRTC_BIG_ENDIAN +#endif #elif defined(__ppc__) || defined(__powerpc__) #define WEBRTC_ARCH_PPC 1 #define WEBRTC_ARCH_32_BITS 1 +#ifdef __LITTLE_ENDIAN__ +#define WEBRTC_ARCH_LITTLE_ENDIAN +#define WEBRTC_LITTLE_ENDIAN +#else #define WEBRTC_ARCH_BIG_ENDIAN #define WEBRTC_BIG_ENDIAN +#endif #elif defined(__sparc64__) #define WEBRTC_ARCH_SPARC 1 #define WEBRTC_ARCH_64_BITS 1 #define WEBRTC_ARCH_BIG_ENDIAN #define WEBRTC_BIG_ENDIAN #elif defined(__sparc__) #define WEBRTC_ARCH_SPARC 1 #define WEBRTC_ARCH_32_BITS 1 ++++++ mozilla-ppc64le-xpcom.patch ++++++ # HG changeset patch # Parent 571f8d1f1501d31bd7c0d0affdc7cdc8b21203a0 # User Ulrich Weigand <uweigand@de.ibm.com> Bug 976648 - powerpc64le-linux support - xptcall port Index: mozilla/xpcom/reflect/xptcall/src/md/unix/moz.build =================================================================== --- mozilla.orig/xpcom/reflect/xptcall/src/md/unix/moz.build +++ mozilla/xpcom/reflect/xptcall/src/md/unix/moz.build @@ -224,12 +224,12 @@ if CONFIG['OS_TEST'] == 'powerpc': 'xptcstubs_ppc_linux.cpp', ] -if CONFIG['OS_TEST'] == 'powerpc64': +if CONFIG['OS_TEST'] in ('powerpc64', 'powerpc64le'): if CONFIG['OS_ARCH'] in ('Linux', 'FreeBSD'): SOURCES += [ - 'xptcinvoke_asm_ppc64_linux.s', + 'xptcinvoke_asm_ppc64_linux.S', 'xptcinvoke_ppc64_linux.cpp', - 'xptcstubs_asm_ppc64_linux.s', + 'xptcstubs_asm_ppc64_linux.S', 'xptcstubs_ppc64_linux.cpp', ] diff --git a/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ppc64_linux.s b/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ppc64_linux.S rename from xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ppc64_linux.s rename to xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ppc64_linux.S --- a/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ppc64_linux.s +++ b/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ppc64_linux.S @@ -17,12 +17,38 @@ .set f25,25; .set f26,26; .set f27,27; .set f28,28; .set f29,29 .set f30,30; .set f31,31 +# The ABI defines a fixed stack frame area of 4 doublewords (ELFv2) +# or 6 doublewords (ELFv1); the last of these doublewords is used +# as TOC pointer save area. The fixed area is followed by a parameter +# save area of 8 doublewords (used for vararg routines), followed +# by space for parameters passed on the stack. +# +# We set STACK_TOC to the offset of the TOC pointer save area, and +# STACK_PARAMS to the offset of the first on-stack parameter. + +#if _CALL_ELF == 2 +#define STACK_TOC 24 +#define STACK_PARAMS 96 +#else +#define STACK_TOC 40 +#define STACK_PARAMS 112 +#endif # # NS_InvokeByIndex(nsISupports* that, uint32_t methodIndex, # uint32_t paramCount, nsXPTCVariant* params) # +#if _CALL_ELF == 2 + .section ".text" + .type NS_InvokeByIndex,@function + .globl NS_InvokeByIndex + .align 2 +NS_InvokeByIndex: +0: addis 2,12,(.TOC.-0b)@ha + addi 2,2,(.TOC.-0b)@l + .localentry NS_InvokeByIndex,.-NS_InvokeByIndex +#else .section ".toc","aw" .section ".text" .align 2 @@ -34,6 +60,7 @@ NS_InvokeByIndex: .previous .type NS_InvokeByIndex,@function .NS_InvokeByIndex: +#endif mflr 0 std 0,16(r1) @@ -50,13 +77,12 @@ NS_InvokeByIndex: # we don't actually need stack space for those. We must ensure # that the stack remains 16-byte aligned. # - # | ..128-byte stack frame.. | | 7 GP | 13 FP | 3 NV | - # | |(params)........| regs | regs | regs | - # (r1)...........(+112)....(+128) - # (-23*8).(-16*8).(-3*8)..(r31) + # | (fixed area + | | 7 GP | 13 FP | 3 NV | + # | param. save) |(params)........| regs | regs | regs | + # (r1)......(+STACK_PARAMS)... (-23*8).(-16*8).(-3*8)..(r31) # +stack frame, -unused stack params, +regs storage, +1 for alignment - addi r7,r5,((112/8)-7+7+13+3+1) + addi r7,r5,((STACK_PARAMS/8)-7+7+13+3+1) rldicr r7,r7,3,59 # multiply by 8 and mask with ~15 neg r7,r7 stdux r1,r1,r7 @@ -67,12 +93,13 @@ NS_InvokeByIndex: # uint64_t* d)) # r5, r6 are passed through intact (paramCount, params) - # r7 (d) has to be r1+112 -- where parameters are passed on the stack. + # r7 (d) has to be r1+STACK_PARAMS + # -- where parameters are passed on the stack. # r3, r4 are above that, easier to address from r31 than from r1 subi r3,r31,(23*8) # r3 --> GPRS subi r4,r31,(16*8) # r4 --> FPRS - addi r7,r1,112 # r7 --> params + addi r7,r1,STACK_PARAMS # r7 --> params bl invoke_copy_to_stack nop @@ -83,14 +110,18 @@ NS_InvokeByIndex: sldi r30,r30,3 # Find function descriptor add r9,r9,r30 - ld r9,0(r9) + ld r12,0(r9) - ld r0,0(r9) # Actual address from fd. - std r2,40(r1) # Save r2 (TOC pointer) + std r2,STACK_TOC(r1) # Save r2 (TOC pointer) +#if _CALL_ELF == 2 + mtctr r12 +#else + ld r0,0(r12) # Actual address from fd. mtctr 0 - ld r11,16(r9) # Environment pointer from fd. - ld r2,8(r9) # TOC pointer from fd. + ld r11,16(r12) # Environment pointer from fd. + ld r2,8(r12) # TOC pointer from fd. +#endif # Load FP and GP registers as required ld r4, -(23*8)(r31) @@ -117,7 +148,7 @@ NS_InvokeByIndex: bctrl # Do it - ld r2,40(r1) # Load our own TOC pointer + ld r2,STACK_TOC(r1) # Load our own TOC pointer ld r1,0(r1) # Revert stack frame ld 0,16(r1) # Reload lr ld 29,-24(r1) # Restore NVGPRS @@ -126,7 +157,11 @@ NS_InvokeByIndex: mtlr 0 blr +#if _CALL_ELF == 2 + .size NS_InvokeByIndex,.-NS_InvokeByIndex +#else .size NS_InvokeByIndex,.-.NS_InvokeByIndex +#endif # Magic indicating no need for an executable stack .section .note.GNU-stack, "", @progbits ; .previous Index: mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_ppc64_linux.cpp =================================================================== --- mozilla.orig/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_ppc64_linux.cpp +++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_ppc64_linux.cpp @@ -74,7 +74,9 @@ invoke_copy_to_stack(uint64_t* gpregs, fpregs[i] = s->val.f; // if passed in registers, floats are promoted to doubles } else { float *p = (float *)d; +#ifndef __LITTLE_ENDIAN__ p++; +#endif *p = s->val.f; } } diff --git a/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc64_linux.s b/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc64_linux.S rename from xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc64_linux.s rename to xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc64_linux.S --- a/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc64_linux.s +++ b/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc64_linux.S @@ -17,6 +17,27 @@ .set f25,25; .set f26,26; .set f27,27; .set f28,28; .set f29,29 .set f30,30; .set f31,31 +#if _CALL_ELF == 2 +#define STACK_PARAMS 96 +#else +#define STACK_PARAMS 112 +#endif + +#if _CALL_ELF == 2 + .section ".text" + .type SharedStub,@function + .globl SharedStub + # Make the symbol hidden so that the branch from the stub does + # not go via a PLT. This is not only better for performance, + # but may be necessary to avoid linker errors since there is + # no place to restore the TOC register in a sibling call. + .hidden SharedStub + .align 2 +SharedStub: +0: addis 2,12,(.TOC.-0b)@ha + addi 2,2,(.TOC.-0b)@l + .localentry SharedStub,.-SharedStub +#else .section ".text" .align 2 .globl SharedStub @@ -29,6 +50,7 @@ SharedStub: .type SharedStub,@function .SharedStub: +#endif mflr r0 std r4, -56(r1) # Save all GPRS @@ -55,7 +77,7 @@ SharedStub: subi r6,r1,56 # r6 --> gprData subi r7,r1,160 # r7 --> fprData - addi r5,r1,112 # r5 --> extra stack args + addi r5,r1,STACK_PARAMS # r5 --> extra stack args std r0, 16(r1) @@ -75,7 +97,11 @@ SharedStub: mtlr r0 blr +#if _CALL_ELF == 2 + .size SharedStub,.-SharedStub +#else .size SharedStub,.-.SharedStub +#endif # Magic indicating no need for an executable stack .section .note.GNU-stack, "", @progbits ; .previous Index: mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc64_linux.cpp =================================================================== --- mozilla.orig/xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc64_linux.cpp +++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc64_linux.cpp @@ -83,7 +83,9 @@ PrepareAndDispatch(nsXPTCStubBase* self, dp->val.f = (float) fprData[i]; // in registers floats are passed as doubles else { float *p = (float *)ap; +#ifndef __LITTLE_ENDIAN__ p++; +#endif dp->val.f = *p; } } else { /* integer type or pointer */ @@ -153,6 +155,43 @@ PrepareAndDispatch(nsXPTCStubBase* self, // etc. // Use assembler directives to get the names right... +#if _CALL_ELF == 2 +# 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\n" \ +"_ZN14nsXPTCStubBase5Stub"#n"Ev: \n\t" \ + "0: addis 2,12,.TOC.-0b@ha \n\t" \ + "addi 2,2,.TOC.-0b@l \n\t" \ + ".localentry _ZN14nsXPTCStubBase5Stub"#n"Ev,.-_ZN14nsXPTCStubBase5Stub"#n"Ev \n\t" \ + \ + ".elseif "#n" < 100 \n\t" \ + ".globl _ZN14nsXPTCStubBase6Stub"#n"Ev \n\t" \ + ".type _ZN14nsXPTCStubBase6Stub"#n"Ev,@function \n\n" \ +"_ZN14nsXPTCStubBase6Stub"#n"Ev: \n\t" \ + "0: addis 2,12,.TOC.-0b@ha \n\t" \ + "addi 2,2,.TOC.-0b@l \n\t" \ + ".localentry _ZN14nsXPTCStubBase6Stub"#n"Ev,.-_ZN14nsXPTCStubBase6Stub"#n"Ev \n\t" \ + \ + ".elseif "#n" < 1000 \n\t" \ + ".globl _ZN14nsXPTCStubBase7Stub"#n"Ev \n\t" \ + ".type _ZN14nsXPTCStubBase7Stub"#n"Ev,@function \n\n" \ +"_ZN14nsXPTCStubBase7Stub"#n"Ev: \n\t" \ + "0: addis 2,12,.TOC.-0b@ha \n\t" \ + "addi 2,2,.TOC.-0b@l \n\t" \ + ".localentry _ZN14nsXPTCStubBase7Stub"#n"Ev,.-_ZN14nsXPTCStubBase7Stub"#n"Ev \n\t" \ + \ + ".else \n\t" \ + ".err \"stub number "#n" >= 1000 not yet supported\"\n" \ + ".endif \n\t" \ + \ + "li 11,"#n" \n\t" \ + "b SharedStub \n" \ +); +#else # define STUB_ENTRY(n) \ __asm__ ( \ ".section \".toc\",\"aw\" \n\t" \ @@ -195,6 +234,7 @@ __asm__ ( "li 11,"#n" \n\t" \ "b SharedStub \n" \ ); +#endif #define SENTINEL_ENTRY(n) \ nsresult nsXPTCStubBase::Sentinel##n() \ ++++++ mozilla-prefer_plugin_pref.patch ++++++ From: Ubuntu Subject: introduce a pref to prefer certain plugins for mime-types diff --git a/dom/plugins/base/nsPluginHost.cpp b/dom/plugins/base/nsPluginHost.cpp --- a/dom/plugins/base/nsPluginHost.cpp +++ b/dom/plugins/base/nsPluginHost.cpp @@ -1334,17 +1334,51 @@ nsPluginHost::FindPluginForType(const ch if (!aMimeType) { return nullptr; } LoadPlugins(); InfallibleTArray<nsPluginTag*> matchingPlugins; + char *preferredPluginPath = nullptr; + nsAutoCString mimetypePrefString ("modules.plugins.mimetype."); + mimetypePrefString.Append(aMimeType); + const char *mimetypePrefChar = mimetypePrefString.get(); + nsAdoptingCString pluginPath = Preferences::GetCString(mimetypePrefChar); + preferredPluginPath = (char*) pluginPath.get(); + nsPluginTag *plugin = mPlugins; + + if(preferredPluginPath) { + while (plugin) { + if (!aCheckEnabled || plugin->IsEnabled()) { + if (0 == PL_strcasecmp(plugin->mFileName.get(), preferredPluginPath) || + 0 == PL_strcasecmp(plugin->mFullPath.get(), preferredPluginPath)) { + matchingPlugins.AppendElement(plugin); + } + } + plugin = plugin->mNext; + } + + // now lets search for substrings + plugin = mPlugins; + while (plugin) { + if (!aCheckEnabled || plugin->IsEnabled()) { + if (nullptr != PL_strstr(plugin->mFileName.get(), preferredPluginPath) || + nullptr != PL_strstr(plugin->mFullPath.get(), preferredPluginPath)) { + matchingPlugins.AppendElement(plugin); + } + } + plugin = plugin->mNext; + } + + return FindPreferredPlugin(matchingPlugins); + } + while (plugin) { if (!aCheckEnabled || plugin->IsActive()) { int32_t mimeCount = plugin->mMimeTypes.Length(); for (int32_t i = 0; i < mimeCount; i++) { if (0 == PL_strcasecmp(plugin->mMimeTypes[i].get(), aMimeType)) { matchingPlugins.AppendElement(plugin); break; } ++++++ mozilla-preferences.patch ++++++ From: Wolfgang Rosenauer <wr@rosenauer.org> Subject: use system locale if available This setting used to live in the branding-openSUSE package but this is causing too much confusion and therefore is currently the only setting we switch in the unbranded package unconditionally. # HG changeset patch # Parent bf7f0353aa8e00b1deaa05b7cb84bb7ea4c9ce8f diff --git a/modules/libpref/src/init/all.js b/modules/libpref/src/init/all.js --- a/modules/libpref/src/init/all.js +++ b/modules/libpref/src/init/all.js @@ -1554,17 +1554,17 @@ pref("intl.charsetmenu.browser.more5", pref("intl.charsetmenu.mailedit", "chrome://global/locale/intl.properties"); pref("intl.charsetmenu.browser.cache", ""); pref("intl.charsetmenu.mailview.cache", ""); pref("intl.charsetmenu.composer.cache", ""); pref("intl.charsetmenu.browser.cache.size", 5); pref("intl.charset.detector", "chrome://global/locale/intl.properties"); pref("intl.charset.fallback.override", ""); pref("intl.ellipsis", "chrome://global-platform/locale/intl.properties"); -pref("intl.locale.matchOS", false); +pref("intl.locale.matchOS", true); // fallback charset list for Unicode conversion (converting from Unicode) // currently used for mail send only to handle symbol characters (e.g Euro, trademark, smartquotes) // for ISO-8859-1 pref("intl.fallbackCharsetList.ISO-8859-1", "windows-1252"); pref("font.language.group", "chrome://global/locale/intl.properties"); // these locales have right-to-left UI pref("intl.uidirection.ar", "rtl"); ++++++ mozilla-repo.patch ++++++ # HG changeset patch # Parent 9b45fd4b00c45014b17358158cdb51805c8ca327 diff --git a/toolkit/mozapps/installer/package-name.mk b/toolkit/mozapps/installer/package-name.mk --- a/toolkit/mozapps/installer/package-name.mk +++ b/toolkit/mozapps/installer/package-name.mk @@ -138,23 +138,23 @@ else BUILDID = $(shell $(PYTHON) $(MOZILLA_DIR)/config/printconfigsetting.py $(DIST)/bin/platform.ini Build BuildID) endif ifndef INCLUDED_RCS_MK USE_RCS_MK := 1 include $(topsrcdir)/config/makefiles/makeutils.mk endif -MOZ_SOURCE_STAMP = $(firstword $(shell hg -R $(MOZILLA_DIR) parent --template="{node|short}\n" 2>/dev/null)) +#MOZ_SOURCE_STAMP = $(firstword $(shell hg -R $(MOZILLA_DIR) parent --template="{node|short}\n" 2>/dev/null)) ########################################################################### # bug: 746277 - preserve existing functionality. # MOZILLA_DIR="": cd $(SPACE); hg # succeeds if ~/.hg exists ########################################################################### -MOZ_SOURCE_REPO = $(call getSourceRepo,$(MOZILLA_DIR)$(NULL) $(NULL)) +#MOZ_SOURCE_REPO = $(call getSourceRepo,$(MOZILLA_DIR)$(NULL) $(NULL)) MOZ_SOURCESTAMP_FILE = $(DIST)/$(PKG_PATH)/$(MOZ_INFO_BASENAME).txt MOZ_BUILDINFO_FILE = $(DIST)/$(PKG_PATH)/$(MOZ_INFO_BASENAME).json # JavaScript Shell PKG_JSSHELL = $(DIST)/jsshell-$(MOZ_PKG_PLATFORM).zip endif # PACKAGE_NAME_MK_INCLUDED diff --git a/toolkit/xre/Makefile.in b/toolkit/xre/Makefile.in --- a/toolkit/xre/Makefile.in +++ b/toolkit/xre/Makefile.in @@ -39,17 +39,17 @@ TOOLKIT_EM_VERSION=$(shell $(PERL) $(top # Valid if null: {warn,error}IfEmpty DEFINES += -DTOOLKIT_EM_VERSION='"$(TOOLKIT_EM_VERSION)"' MOZ_SOURCE_STAMP ?= $(firstword $(shell hg -R $(topsrcdir) parent --template='{node|short}\n' 2>/dev/null)) ifdef MOZ_SOURCE_STAMP INIARGS = --sourcestamp=$(MOZ_SOURCE_STAMP) - source_repo := $(call getSourceRepo) + source_repo ?= $(call getSourceRepo) # extra sanity check for old versions of hg, no showconfig support ifneq (,$(filter http%,$(source_repo))) INIARGS += --sourcerepo=$(source_repo) endif endif # MOZ_SOURCE_STAMP ++++++ mozilla-shared-nss-db.patch ++++++ From: Hans Petter Jansson <hpj@copyleft.no> Wolfgang Rosenauer <wr@rosenauer.org> Subject: use libnsssharedhelper if available at compile time (can be disabled by exporting MOZ_XRE_NO_NSSHELPER=1) References: diff --git a/configure.in b/configure.in --- a/configure.in +++ b/configure.in @@ -8113,16 +8113,31 @@ if test "$MOZ_ENABLE_SKIA"; then MOZ_ENABLE_SKIA_GPU=1 AC_DEFINE(USE_SKIA_GPU) AC_SUBST(MOZ_ENABLE_SKIA_GPU) fi fi AC_SUBST(MOZ_ENABLE_SKIA) dnl ======================================================== +dnl Check for nss-shared-helper +dnl ======================================================== + + PKG_CHECK_MODULES(NSSHELPER, nss-shared-helper, + [MOZ_ENABLE_NSSHELPER=1], + [MOZ_ENABLE_NSSHELPER=]) + +if test "$MOZ_ENABLE_NSSHELPER"; then + AC_DEFINE(MOZ_ENABLE_NSSHELPER) +fi +AC_SUBST(MOZ_ENABLE_NSSHELPER) +AC_SUBST(NSSHELPER_CFLAGS) +AC_SUBST(NSSHELPER_LIBS) + +dnl ======================================================== dnl disable xul dnl ======================================================== MOZ_ARG_DISABLE_BOOL(xul, [ --disable-xul Disable XUL], MOZ_XUL= ) if test "$MOZ_XUL"; then AC_DEFINE(MOZ_XUL) else diff --git a/security/manager/ssl/src/Makefile.in b/security/manager/ssl/src/Makefile.in new file mode 100644 --- /dev/null +++ b/security/manager/ssl/src/Makefile.in @@ -0,0 +1,8 @@ +#! gmake +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +LOCAL_INCLUDES += $(NSSHELPER_CFLAGS) +EXTRA_DSO_LDOPTS += $(NSSHELPER_LIBS) diff --git a/security/manager/ssl/src/nsNSSComponent.cpp b/security/manager/ssl/src/nsNSSComponent.cpp --- a/security/manager/ssl/src/nsNSSComponent.cpp +++ b/security/manager/ssl/src/nsNSSComponent.cpp @@ -3,16 +3,23 @@ * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifdef MOZ_LOGGING #define FORCE_PR_LOG 1 #endif +#ifdef MOZ_ENABLE_NSSHELPER +#pragma GCC visibility push(default) +#include <nss-shared-helper.h> +#pragma GCC visibility pop +#include "prenv.h" +#endif + #include "nsNSSComponent.h" #include "ExtendedValidation.h" #include "NSSCertDBTrustDomain.h" #include "mozilla/Telemetry.h" #include "nsCertVerificationThread.h" #include "nsAppDirectoryServiceDefs.h" #include "nsComponentManagerUtils.h" @@ -1117,17 +1124,31 @@ nsNSSComponent::InitializeNSS() if (NS_FAILED(rv)) { nsPSMInitPanic::SetPanic(); return NS_ERROR_NOT_AVAILABLE; } SECStatus init_rv = SECFailure; if (!profileStr.IsEmpty()) { // First try to initialize the NSS DB in read/write mode. - SECStatus init_rv = ::mozilla::psm::InitializeNSS(profileStr.get(), false); +#ifdef MOZ_ENABLE_NSSHELPER + if (PR_GetEnv("MOZ_XRE_NO_NSSHELPER")) { + init_rv = ::mozilla::psm::InitializeNSS(profileStr.get(), false); + } else { + uint32_t flags = NSS_INIT_NOROOTINIT | NSS_INIT_OPTIMIZESPACE; + init_rv = ::nsshelp_open_db ("Firefox", profileStr.get(), flags); + + if (init_rv != SECSuccess) { + PR_LOG(gPIPNSSLog, PR_LOG_DEBUG, ("can not init NSS using nsshelp_open_db in %s\n", profileStr.get())); + init_rv = ::mozilla::psm::InitializeNSS(profileStr.get(), false); + } + } +#else + init_rv = ::mozilla::psm::InitializeNSS(profileStr.get(), false); +#endif // If that fails, attempt read-only mode. if (init_rv != SECSuccess) { PR_LOG(gPIPNSSLog, PR_LOG_DEBUG, ("could not init NSS r/w in %s\n", profileStr.get())); init_rv = ::mozilla::psm::InitializeNSS(profileStr.get(), true); } if (init_rv != SECSuccess) { PR_LOG(gPIPNSSLog, PR_LOG_DEBUG, ("could not init in r/o either\n")); } diff --git a/toolkit/library/Makefile.in b/toolkit/library/Makefile.in --- a/toolkit/library/Makefile.in +++ b/toolkit/library/Makefile.in @@ -223,17 +223,17 @@ endif ifneq (,$(filter OS2 WINNT,$(OS_ARCH))) SDK_LIBRARY = $(IMPORT_LIBRARY) else SDK_LIBRARY = $(SHARED_LIBRARY) endif EXTRA_DSO_LDOPTS += $(LIBS_DIR) -EXTRA_DSO_LDOPTS += $(NSPR_LIBS) $(MOZALLOC_LIB) +EXTRA_DSO_LDOPTS += $(NSPR_LIBS) $(MOZALLOC_LIB) $(NSSHELPER_LIBS) ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa) CXXFLAGS += $(TK_CFLAGS) OS_LIBS += \ -framework SystemConfiguration \ -framework QTKit \ -framework IOKit \ -F$(MACOS_PRIVATE_FRAMEWORKS_DIR) -framework CoreUI \ ++++++ mozilla-sle11.patch ++++++ Subject: Patches needed to build on SLE11/11.1 References: https://bugzilla.mozilla.org/show_bug.cgi?id=513422 diff --git a/mozglue/build/SSE.cpp b/mozglue/build/SSE.cpp --- a/mozglue/build/SSE.cpp +++ b/mozglue/build/SSE.cpp @@ -12,26 +12,77 @@ namespace { // SSE.h has parallel #ifs which declare MOZILLA_SSE_HAVE_CPUID_DETECTION. // We can't declare these functions in the header file, however, because // <intrin.h> conflicts with <windows.h> on MSVC 2005, and some files want to // include both SSE.h and <windows.h>. #ifdef HAVE_CPUID_H // cpuid.h is available on gcc 4.3 and higher on i386 and x86_64 -#include <cpuid.h> +//#include <cpuid.h> enum CPUIDRegister { eax = 0, ebx = 1, ecx = 2, edx = 3 }; +#ifdef __i386__ +#define _my_cpuid(level, a, b, c, d) \ + __asm__ ("xchg{l}\t{%%}ebx, %1\n\t" \ + "cpuid\n\t" \ + "xchg{l}\t{%%}ebx, %1\n\t" \ + : "=a" (a), "=r" (b), "=c" (c), "=d" (d) \ + : "0" (level)) +#else +#define _my_cpuid(level, a, b, c, d) \ + __asm__ ("cpuid\n\t" \ + : "=a" (a), "=b" (b), "=c" (c), "=d" (d) \ + : "0" (level)) +#endif + +static __inline unsigned int +my_cpuid_max (unsigned int __ext, unsigned int *__sig) +{ + unsigned int __eax, __ebx, __ecx, __edx; + +#ifdef __i386__ + __asm__ ("pushf{l|d}\n\t" + "pushf{l|d}\n\t" + "pop{l}\t%0\n\t" + "mov{l}\t{%0, %1|%1, %0}\n\t" + "xor{l}\t{%2, %0|%0, %2}\n\t" + "push{l}\t%0\n\t" + "popf{l|d}\n\t" + "pushf{l|d}\n\t" + "pop{l}\t%0\n\t" + "popf{l|d}\n\t" + : "=&r" (__eax), "=&r" (__ebx) + : "i" (0x00200000)); + + if (!((__eax ^ __ebx) & 0x00200000)) + return 0; +#endif + + /* Host supports cpuid. Return highest supported cpuid input value. */ + _my_cpuid (__ext, __eax, __ebx, __ecx, __edx); + + if (__sig) + *__sig = __ebx; + + return __eax; +} + static bool has_cpuid_bit(unsigned int level, CPUIDRegister reg, unsigned int bit) { unsigned int regs[4]; - return __get_cpuid(level, ®s[0], ®s[1], ®s[2], ®s[3]) && - (regs[reg] & bit); + + unsigned int __ext = level & 0x80000000; + if (my_cpuid_max(__ext, 0) < level) + return false; + + _my_cpuid(level, regs[0], regs[1], regs[2], regs[3]); + return !!(unsigned(regs[reg]) & bit); } #elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_AMD64)) // MSVC 2005 or newer on x86-32 or x86-64 #include <intrin.h> enum CPUIDRegister { eax = 0, ebx = 1, ecx = 2, edx = 3 }; ++++++ mozilla.sh.in ++++++ #!/bin/sh # # ***** BEGIN LICENSE BLOCK ***** # Version: MPL 1.1/GPL 2.0/LGPL 2.1 # # 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 the Initial Developer are Copyright (C) 1998 # the Initial Developer. All Rights Reserved. # # Contributor(s): # Wolfgang Rosenauer <wolfgang.rosenauer@suse.de> # <wr@rosenauer.org> # # 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 MPL, 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 MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** ## ## Usage: ## ## $ mozilla [args] ## ## This script is meant to run a mozilla program from the mozilla ## rpm installation. ## ## The script will setup all the environment voodoo needed to make ## mozilla work. cmdname=`basename $0` ## ## Variables ## MOZ_DIST_BIN="%PREFIX" MOZ_DIST_LIB="%PROGDIR" MOZ_APPNAME="%APPNAME" MOZ_PROGRAM="$MOZ_DIST_LIB/$MOZ_APPNAME" MOZ_APP_LAUNCHER="$MOZ_DIST_LIB/$MOZ_APPNAME.sh" if [ "$0" = "$MOZ_APP_LAUNCHER" ]; then [ -h "/usr/bin/$MOZ_APPNAME" ] && \ _link=$(readlink -f "/usr/bin/$MOZ_APPNAME") if [ "$_link" = "$MOZ_APP_LAUNCHER" ]; then export MOZ_APP_LAUNCHER="/usr/bin/$MOZ_APPNAME" fi else export MOZ_APP_LAUNCHER="/usr/bin/$MOZ_APPNAME" fi mozilla_lib=`file $MOZ_PROGRAM` LIB=lib echo $mozilla_lib | grep -q -E 'ELF.64-bit.*(x86-64|S/390|PowerPC)' && LIB=lib64 BROWSER_PLUGIN_DIR=/usr/$LIB/browser-plugins if [ ! -d $BROWSER_PLUGIN_DIR ]; then BROWSER_PLUGIN_DIR=/opt/netscape/plugins fi MOZILLA_FIVE_HOME="$MOZ_DIST_LIB" export MOZILLA_FIVE_HOME LD_LIBRARY_PATH=$MOZ_DIST_LIB${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} export LD_LIBRARY_PATH # needed for SUN Java under Xorg >= 7.2 export LIBXCB_ALLOW_SLOPPY_LOCK=1 ## if [ -z "$MOZ_PLUGIN_PATH" ]; then export MOZ_PLUGIN_PATH=$BROWSER_PLUGIN_DIR else # make sure that BROWSER_PLUGIN_DIR is in MOZ_PLUGIN_PATH echo "$MOZ_PLUGIN_PATH" | grep "$BROWSER_PLUGIN_DIR" 2>&1 >/dev/null _retval=$? if [ ${_retval} -ne 0 ]; then export MOZ_PLUGIN_PATH=$MOZ_PLUGIN_PATH:$BROWSER_PLUGIN_DIR fi fi # disable Gnome crash dialog (doesn't make sense anyway) export GNOME_DISABLE_CRASH_DIALOG=1 moz_debug=0 script_args="" pass_arg_count=0 while [ $# -gt $pass_arg_count ] do case "$1" in -d | --debugger) moz_debugger=$2; if [ "${moz_debugger}" != "" ]; then shift 2 moz_debug=1 else echo "-d requires an argument" exit 1 fi ;; *) # Move the unrecognized argument to the end of the list. arg="$1" shift set -- "$@" "$arg" pass_arg_count=`expr $pass_arg_count + 1` ;; esac done if [ $moz_debug -eq 1 ]; then tmpfile=`mktemp /tmp/mozargs.XXXXXX` || { echo "Cannot create temporary file" >&2; exit 1; } trap " [ -f \"$tmpfile\" ] && /bin/rm -f -- \"$tmpfile\"" 0 1 2 3 13 15 echo -e "set args ${1+"$@"}\nrun" > $tmpfile echo "$moz_debugger $MOZ_PROGRAM -x $tmpfile" exec $moz_debugger "$MOZ_PROGRAM" -x $tmpfile else exec $MOZ_PROGRAM "$@" fi ++++++ source-stamp.txt ++++++ REV=f60bc49e6bd5 REPO=http://hg.mozilla.org/releases/mozilla-release ++++++ toolkit-download-folder.patch ++++++ From: Wolfgang Rosenauer Subject: Don't use localized Downloads unless XDG is set up References: https://bugzilla.novell.com/show_bug.cgi?id=501724 diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js --- a/browser/components/preferences/main.js +++ b/browser/components/preferences/main.js @@ -290,17 +290,17 @@ var gMainPane = { // and was available as an option in the 1.5 drop down. On XP this // was in My Documents, on OSX it was in User Docs. In 2.0, we did // away with the drop down option, although the special label was // still supported for the folder if it existed. Because it was // not exposed it was rarely used. // With 3.0, a new desktop folder - 'Downloads' was introduced for // platforms and versions that don't support a default system downloads // folder. See nsDownloadManager for details. - downloadFolder.label = bundlePreferences.getString("downloadsFolderName"); + downloadFolder.label = "Downloads"; iconUrlSpec = fph.getURLSpecFromFile(this._indexToFolder(1)); } else { // 'Desktop' downloadFolder.label = bundlePreferences.getString("desktopFolderName"); iconUrlSpec = fph.getURLSpecFromFile(this._getDownloadsFolder("Desktop")); } downloadFolder.image = "moz-icon://" + iconUrlSpec + "?size=16"; diff --git a/toolkit/components/downloads/nsDownloadManager.cpp b/toolkit/components/downloads/nsDownloadManager.cpp --- a/toolkit/components/downloads/nsDownloadManager.cpp +++ b/toolkit/components/downloads/nsDownloadManager.cpp @@ -1365,18 +1365,20 @@ nsDownloadManager::GetDefaultDownloadsDi // Vista: // Downloads // XP/2K: // My Documents/Downloads // Linux: // XDG user dir spec, with a fallback to Home/Downloads nsXPIDLString folderName; - mBundle->GetStringFromName(MOZ_UTF16("downloadsFolder"), - getter_Copies(folderName)); + // We don't want localized "Downloads" unless XDG is used + //mBundle->GetStringFromName(NS_LITERAL_STRING("downloadsFolder").get(), + // getter_Copies(folderName)); + folderName.AssignLiteral("Downloads"); #if defined (XP_MACOSX) rv = dirService->Get(NS_OSX_DEFAULT_DOWNLOAD_DIR, NS_GET_IID(nsIFile), getter_AddRefs(downloadDir)); NS_ENSURE_SUCCESS(rv, rv); #elif defined(XP_WIN) rv = dirService->Get(NS_WIN_DEFAULT_DOWNLOAD_DIR, -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org