Browse Source

pre fixes

Frank-Rainer Grahl 3 years ago
parent
commit
36b8eb18ff

+ 100 - 0
bug1240930-253/frg-mozilla/1360650-1only-59a1.patch

@@ -0,0 +1,100 @@
+# HG changeset patch
+# User Ting-Yu Chou <janus926@gmail.com>
+# Date 1513614362 18000
+#      Mon Dec 18 11:26:02 2017 -0500
+# Node ID 8e4a0ea53ed3473647e335a2bc9d9ce8457ece30
+# Parent  f2ace5ae53088c9f3fa48eaf8533ec3a50e2418a
+Bug 1360650 part 1 - Archive pdb files of the binaries for llvm-symbolizer. r=ted
+
+diff --git a/config/rules.mk b/config/rules.mk
+--- a/config/rules.mk
++++ b/config/rules.mk
+@@ -791,32 +791,42 @@ ifdef ASFILES
+ $(ASOBJS):
+ 	$(REPORT_BUILD_VERBOSE)
+ 	$(AS) $(ASOUTOPTION)$@ $(ASFLAGS) $($(notdir $<)_FLAGS) $(AS_DASH_C_FLAG) $(_VPATH_SRCS)
+ endif
+ 
+ define syms_template
+ syms:: $(2)
+ $(2): $(1)
++ifdef MOZ_CRASHREPORTER
+ 	$$(call py_action,dumpsymbols,$$(abspath $$<) $$(abspath $$@))
++endif
+ endef
+ 
+ ifndef MOZ_PROFILE_GENERATE
+ ifneq (,$(filter $(DIST)/bin%,$(FINAL_TARGET)))
+ DUMP_SYMS_TARGETS := $(SHARED_LIBRARY) $(PROGRAM) $(SIMPLE_PROGRAMS)
+ endif
+ endif
+ 
+ ifdef MOZ_AUTOMATION
+ ifeq (,$(filter 1,$(MOZ_AUTOMATION_BUILD_SYMBOLS)))
+ DUMP_SYMS_TARGETS :=
+ endif
+ endif
+ 
++ifdef MOZ_CRASHREPORTER
+ $(foreach file,$(DUMP_SYMS_TARGETS),$(eval $(call syms_template,$(file),$(file)_syms.track)))
++else ifneq (,$(and $(LLVM_SYMBOLIZER),$(filter WINNT,$(OS_ARCH)),$(MOZ_AUTOMATION)))
++$(foreach file,$(DUMP_SYMS_TARGETS),$(eval $(call syms_template,$(file),$(addsuffix .pdb,$(basename $(file))))))
++PDB_FILES = $(addsuffix .pdb,$(basename $(DUMP_SYMS_TARGETS)))
++PDB_DEST ?= $(FINAL_TARGET)
++PDB_TARGET = target
++INSTALL_TARGETS += PDB
++endif
+ 
+ cargo_host_flag := --target=$(RUST_HOST_TARGET)
+ cargo_target_flag := --target=$(RUST_TARGET)
+ 
+ # Permit users to pass flags to cargo from their mozconfigs (e.g. --color=always).
+ cargo_build_flags = $(CARGOFLAGS)
+ ifndef MOZ_DEBUG_RUST
+ cargo_build_flags += --release
+diff --git a/toolkit/mozapps/installer/packager.py b/toolkit/mozapps/installer/packager.py
+--- a/toolkit/mozapps/installer/packager.py
++++ b/toolkit/mozapps/installer/packager.py
+@@ -18,16 +18,17 @@ from mozpack.files import (
+     FileFinder,
+     File,
+ )
+ from mozpack.copier import (
+     FileCopier,
+     Jarrer,
+ )
+ from mozpack.errors import errors
++from mozpack.files import ExecutableFile
+ from mozpack.mozjar import JAR_BROTLI
+ import mozpack.path as mozpath
+ import buildconfig
+ from argparse import ArgumentParser
+ from createprecomplete import generate_precomplete
+ import os
+ from StringIO import StringIO
+ import subprocess
+@@ -308,16 +309,24 @@ def main():
+                 libbase = mozpath.join(respath, '%s%s') \
+                     % (buildconfig.substs['DLL_PREFIX'], lib)
+                 libname = '%s%s' % (libbase, buildconfig.substs['DLL_SUFFIX'])
+                 if copier.contains(libname):
+                     copier.add(libbase + '.chk',
+                                LibSignFile(os.path.join(args.destination,
+                                                         libname)))
+ 
++    # Include pdb files for llvm-symbolizer to resolve symbols.
++    if buildconfig.substs.get('LLVM_SYMBOLIZER') and mozinfo.isWin:
++        for p, f in copier:
++            if isinstance(f, ExecutableFile):
++                pdbname = os.path.splitext(f.inputs()[0])[0] + '.pdb'
++                if os.path.exists(pdbname):
++                    copier.add(os.path.basename(pdbname), File(pdbname))
++
+     # Setup preloading
+     if args.jarlog and os.path.exists(args.jarlog):
+         from mozpack.mozjar import JarLog
+         log = JarLog(args.jarlog)
+         for p, f in copier:
+             if not isinstance(f, Jarrer):
+                 continue
+             key = JarLog.canonicalize(os.path.join(args.destination, p))

+ 46 - 0
bug1240930-253/frg-mozilla/1373878-1-58a1.patch

@@ -0,0 +1,46 @@
+# HG changeset patch
+# User Nathan Froyd <froydnj@mozilla.com>
+# Date 1506950482 14400
+#      Mon Oct 02 09:21:22 2017 -0400
+# Node ID 5e3876cd293defaca3a4a8c9ba71b134fd0f5740
+# Parent  373e346422e11aa0201d7d67499c31a66f7e396d
+Bug 1373878 - part 1 - add --enable-rust-tests configure option; r=rillian
+
+Because Rust tests require panic=unwind crates and therefore recompiling
+all crates we normally use (since most of our crates use panic=abort),
+we've elected to enable Rust tests only if the user asks for it.  Hence,
+this configure option.
+
+The configure option also enables build-time execution of the crates,
+since it's not straightforward to determine at configure time the name
+of the test binary Cargo will produce (Cargo produces test binaries of
+the form ${NAME}-${HEX_FINGERPRINT}, but there's no way to determine
+what ${HEX_FINGERPRINT} is without actually compiling the test binary).
+
+diff --git a/build/moz.configure/rust.configure b/build/moz.configure/rust.configure
+--- a/build/moz.configure/rust.configure
++++ b/build/moz.configure/rust.configure
+@@ -306,16 +306,23 @@ set_config('RUST_TARGET_ENV_NAME', rust_
+ 
+ # This is used for putting source info into symbol files.
+ set_config('RUSTC_COMMIT', depends(rustc_info)(lambda i: i.commit))
+ 
+ # Until we remove all the other Rust checks in old-configure.
+ add_old_configure_assignment('RUSTC', rustc)
+ add_old_configure_assignment('RUST_TARGET', rust_target_triple)
+ 
++# This option is separate from --enable-tests because Rust tests are particularly
++# expensive in terms of compile time (especially for code in libxul).
++option('--enable-rust-tests',
++       help='Enable building of Rust tests, and build-time execution of them')
++
++set_config('MOZ_RUST_TESTS', depends('--enable-rust-tests')(lambda v: bool(v)))
++
+ option(env='WIN64_LINK', nargs=1, help='Path to link.exe that targets win64')
+ option(env='WIN64_LIB', nargs=1, help='Paths to libraries for the win64 linker')
+ 
+ set_config('WIN64_LINK', depends('WIN64_LINK')(lambda x: x))
+ set_config('WIN64_LIB', depends('WIN64_LIB')(lambda x: x))
+ 
+ 
+ @depends(target, rustc_info, c_compiler, 'WIN64_LINK', 'WIN64_LIB')

+ 257 - 0
bug1240930-253/frg-mozilla/1373878-2no345-58a1.patch

@@ -0,0 +1,257 @@
+# HG changeset patch
+# User Nathan Froyd <froydnj@mozilla.com>
+# Date 1506950482 14400
+#      Mon Oct 02 09:21:22 2017 -0400
+# Node ID 2dbb140bb423400ceb523377d2f74bee6a47edea
+# Parent  17f2ec08235e7b064033ad5bc283ee34038c67c3
+Bug 1373878 - part 2 - build system support for Rust tests; r=rillian
+
+diff --git a/build/templates.mozbuild b/build/templates.mozbuild
+--- a/build/templates.mozbuild
++++ b/build/templates.mozbuild
+@@ -155,10 +155,17 @@ def DisableStlWrapping():
+ @template
+ def NoVisibilityFlags():
+     COMPILE_FLAGS['VISIBILITY'] = []
+ 
+ @template
+ def AllowCompilerWarnings():
+     COMPILE_FLAGS['WARNINGS_AS_ERRORS'] = []
+ 
++@template
++def RustTest(name, features=None):
++    RUST_TEST = name
++
++    if features:
++        RUST_TEST_FEATURES = features
++
+ include('gecko_templates.mozbuild')
+ include('test_templates.mozbuild')
+diff --git a/config/rules.mk b/config/rules.mk
+--- a/config/rules.mk
++++ b/config/rules.mk
+@@ -965,16 +965,28 @@ force-cargo-library-build:
+ 
+ force-cargo-library-check:
+ 	$(call CARGO_CHECK,$(target_cargo_env_vars)) --lib $(cargo_target_flag) $(rust_features_flag)
+ else
+ force-cargo-library-check:
+ 	@true
+ endif # RUST_LIBRARY_FILE
+ 
++ifdef RUST_TEST
++
++ifdef RUST_TEST_FEATURES
++rust_features_flag := --features "$(RUST_TEST_FEATURES)"
++endif
++
++force-cargo-test-run:
++	$(call RUN_CARGO,test $(cargo_target_flag) -p $(RUST_TEST) $(rust_features_flag),$(target_cargo_env_vars))
++
++check:: force-cargo-test-run
++endif
++
+ ifdef HOST_RUST_LIBRARY_FILE
+ 
+ ifdef HOST_RUST_LIBRARY_FEATURES
+ host_rust_features_flag := --features "$(HOST_RUST_LIBRARY_FEATURES)"
+ endif
+ 
+ force-cargo-host-library-build:
+ 	$(REPORT_BUILD)
+diff --git a/python/mozbuild/mozbuild/backend/recursivemake.py b/python/mozbuild/mozbuild/backend/recursivemake.py
+--- a/python/mozbuild/mozbuild/backend/recursivemake.py
++++ b/python/mozbuild/mozbuild/backend/recursivemake.py
+@@ -61,16 +61,17 @@ from ..frontend.data import (
+     LocalizedPreprocessedFiles,
+     ObjdirFiles,
+     ObjdirPreprocessedFiles,
+     PerSourceFlag,
+     Program,
+     RustLibrary,
+     HostRustLibrary,
+     RustProgram,
++    RustTest,
+     SharedLibrary,
+     SimpleProgram,
+     Sources,
+     StaticLibrary,
+     TestManifest,
+     VariablePassthru,
+     XPIDLFile,
+ )
+@@ -610,16 +611,19 @@ class RecursiveMakeBackend(CommonBackend
+             self._compile_graph[build_target]
+ 
+         elif isinstance(obj, HostRustProgram):
+             self._process_host_rust_program(obj, backend_file)
+             # Hook the program into the compile graph.
+             build_target = self._build_target_for_obj(obj)
+             self._compile_graph[build_target]
+ 
++        elif isinstance(obj, RustTest):
++            self._process_rust_test(obj, backend_file)
++
+         elif isinstance(obj, Program):
+             self._process_program(obj, backend_file)
+             self._process_linked_libraries(obj, backend_file)
+             self._no_skip['syms'].add(backend_file.relobjdir)
+ 
+         elif isinstance(obj, HostProgram):
+             self._process_host_program(obj.program, backend_file)
+             self._process_linked_libraries(obj, backend_file)
+@@ -1137,16 +1141,22 @@ class RecursiveMakeBackend(CommonBackend
+                                         'RUST_PROGRAMS',
+                                         'RUST_CARGO_PROGRAMS')
+ 
+     def _process_host_rust_program(self, obj, backend_file):
+         self._process_rust_program_base(obj, backend_file,
+                                         'HOST_RUST_PROGRAMS',
+                                         'HOST_RUST_CARGO_PROGRAMS')
+ 
++    def _process_rust_test(self, obj, backend_file):
++        self._no_skip['check'].add(backend_file.relobjdir)
++        backend_file.write_once('CARGO_FILE := $(srcdir)/Cargo.toml\n')
++        backend_file.write_once('RUST_TEST := %s\n' % obj.name)
++        backend_file.write_once('RUST_TEST_FEATURES := %s\n' % ' '.join(obj.features))
++
+     def _process_simple_program(self, obj, backend_file):
+         if obj.is_unit_test:
+             backend_file.write('CPP_UNIT_TESTS += %s\n' % obj.program)
+             assert obj.cxx_link
+         else:
+             backend_file.write('SIMPLE_PROGRAMS += %s\n' % obj.program)
+             if not obj.cxx_link and not self.environment.bin_suffix:
+                 backend_file.write('PROG_IS_C_ONLY_%s := 1\n' % obj.program)
+@@ -1258,17 +1268,17 @@ class RecursiveMakeBackend(CommonBackend
+         backend_file.write_once('LIBRARY_NAME := %s\n' % libdef.basename)
+         backend_file.write('FORCE_STATIC_LIB := 1\n')
+         backend_file.write('REAL_LIBRARY := %s\n' % libdef.lib_name)
+         if libdef.no_expand_lib:
+             backend_file.write('NO_EXPAND_LIBS := 1\n')
+ 
+     def _process_rust_library(self, libdef, backend_file):
+         backend_file.write_once('%s := %s\n' % (libdef.LIB_FILE_VAR, libdef.import_name))
+-        backend_file.write('CARGO_FILE := $(srcdir)/Cargo.toml\n')
++        backend_file.write_once('CARGO_FILE := $(srcdir)/Cargo.toml\n')
+         # Need to normalize the path so Cargo sees the same paths from all
+         # possible invocations of Cargo with this CARGO_TARGET_DIR.  Otherwise,
+         # Cargo's dependency calculations don't work as we expect and we wind
+         # up recompiling lots of things.
+         target_dir = mozpath.join(backend_file.objdir, libdef.target_dir)
+         target_dir = mozpath.normpath(target_dir)
+         backend_file.write('CARGO_TARGET_DIR := %s\n' % target_dir)
+         if libdef.features:
+diff --git a/python/mozbuild/mozbuild/frontend/context.py b/python/mozbuild/mozbuild/frontend/context.py
+--- a/python/mozbuild/mozbuild/frontend/context.py
++++ b/python/mozbuild/mozbuild/frontend/context.py
+@@ -1249,16 +1249,30 @@ VARIABLES = {
+ 
+     'HOST_RUST_LIBRARY_FEATURES': (List, list,
+         """Cargo features to activate for this host library.
+ 
+         This variable should not be used directly; you should be using the
+         HostRustLibrary template instead.
+         """),
+ 
++    'RUST_TEST': (unicode, unicode,
++        """Name of a Rust test to build and run via `cargo test`.
++
++        This variable should not be used directly; you should be using the
++        RustTest template instead.
++        """),
++
++    'RUST_TEST_FEATURES': (List, list,
++        """Cargo features to activate for RUST_TEST.
++
++        This variable should not be used directly; you should be using the
++        RustTest template instead.
++        """),
++
+     'UNIFIED_SOURCES': (ContextDerivedTypedList(SourcePath, StrictOrderingOnAppendList), list,
+         """Source code files that can be compiled together.
+ 
+         This variable contains a list of source code files to compile,
+         that can be concatenated all together and built as a single source
+         file. This can help make the build faster and reduce the debug info
+         size.
+         """),
+diff --git a/python/mozbuild/mozbuild/frontend/data.py b/python/mozbuild/mozbuild/frontend/data.py
+--- a/python/mozbuild/mozbuild/frontend/data.py
++++ b/python/mozbuild/mozbuild/frontend/data.py
+@@ -481,16 +481,28 @@ class RustProgram(BaseRustProgram):
+ 
+ 
+ class HostRustProgram(BaseRustProgram):
+     SUFFIX_VAR = 'HOST_BIN_SUFFIX'
+     KIND = 'host'
+     TARGET_SUBST_VAR = 'RUST_HOST_TARGET'
+ 
+ 
++class RustTest(ContextDerived):
++    __slots__ = (
++        'name',
++        'features',
++    )
++
++    def __init__(self, context, name, features):
++        ContextDerived.__init__(self, context)
++        self.name = name
++        self.features = features
++
++
+ class BaseLibrary(Linkable):
+     """Generic context derived container object for libraries."""
+     __slots__ = (
+         'basename',
+         'lib_name',
+         'import_name',
+         'refs',
+     )
+diff --git a/python/mozbuild/mozbuild/frontend/emitter.py b/python/mozbuild/mozbuild/frontend/emitter.py
+--- a/python/mozbuild/mozbuild/frontend/emitter.py
++++ b/python/mozbuild/mozbuild/frontend/emitter.py
+@@ -62,16 +62,17 @@ from .data import (
+     ObjdirPreprocessedFiles,
+     PerSourceFlag,
+     PreprocessedTestWebIDLFile,
+     PreprocessedWebIDLFile,
+     Program,
+     RustLibrary,
+     HostRustLibrary,
+     RustProgram,
++    RustTest,
+     SharedLibrary,
+     SimpleProgram,
+     Sources,
+     StaticLibrary,
+     TestHarnessFiles,
+     TestWebIDLFile,
+     TestManifest,
+     UnifiedSources,
+@@ -1214,16 +1215,25 @@ class TreeMetadataEmitter(LoggingMixin):
+                                          context);
+ 
+         for c in components:
+             if c.endswith('.manifest'):
+                 yield ChromeManifestEntry(context, 'chrome.manifest',
+                                           Manifest('components',
+                                                    mozpath.basename(c)))
+ 
++        if self.config.substs.get('MOZ_RUST_TESTS', None):
++            rust_test = context.get('RUST_TEST', None)
++            if rust_test:
++                # TODO: more sophisticated checking of the declared name vs.
++                # contents of the Cargo.toml file.
++                features = context.get('RUST_TEST_FEATURES', [])
++
++                yield RustTest(context, rust_test, features)
++
+         for obj in self._process_test_manifests(context):
+             yield obj
+ 
+         for obj in self._process_jar_manifests(context):
+             yield obj
+ 
+         computed_as_flags.resolve_flags('MOZBUILD',
+                                         context.get('ASFLAGS'))

+ 185 - 0
bug1240930-253/frg-mozilla/1388423-57a1.patch

@@ -0,0 +1,185 @@
+# HG changeset patch
+# User Kartikaya Gupta <kgupta@mozilla.com>
+# Date 1502210095 14400
+# Node ID eda635af7fe2f97138a0109dffcd7afbbb2e7ce3
+# Parent  992a20fbff22d0ba0c70d9f056765c0ef8ac2591
+Bug 1388423 - Get full rust backtraces everywhere. r=jmaher
+
+MozReview-Commit-ID: 2Mfrpupz7As
+
+diff --git a/config/rules.mk b/config/rules.mk
+--- a/config/rules.mk
++++ b/config/rules.mk
+@@ -895,17 +895,17 @@ define RUN_CARGO
+ $(if $(findstring n,$(filter-out --%, $(MAKEFLAGS))),,+)env $(environment_cleaner) $(rustflags_override) $(sccache_wrap) \
+ 	CARGO_TARGET_DIR=$(CARGO_TARGET_DIR) \
+ 	RUSTC=$(RUSTC) \
+ 	MOZ_SRC=$(topsrcdir) \
+ 	MOZ_DIST=$(ABS_DIST) \
+ 	LIBCLANG_PATH="$(MOZ_LIBCLANG_PATH)" \
+ 	CLANG_PATH="$(MOZ_CLANG_PATH)" \
+ 	PKG_CONFIG_ALLOW_CROSS=1 \
+-	RUST_BACKTRACE=1 \
++	RUST_BACKTRACE=full \
+ 	MOZ_TOPOBJDIR=$(topobjdir) \
+ 	$(2) \
+ 	$(CARGO) $(1) $(cargo_build_flags)
+ endef
+ 
+ # This function is intended to be called by:
+ #
+ #   $(call CARGO_BUILD,EXTRA_ENV_VAR1=X EXTRA_ENV_VAR2=Y ...)
+diff --git a/python/mozbuild/mozbuild/mach_commands.py b/python/mozbuild/mozbuild/mach_commands.py
+--- a/python/mozbuild/mozbuild/mach_commands.py
++++ b/python/mozbuild/mozbuild/mach_commands.py
+@@ -1385,17 +1385,17 @@ class RunProgram(MachCommandBase):
+ 
+             if not no_profile_option_given and setpref:
+                 print("setpref is only supported if a profile is not specified")
+                 return 1
+ 
+         extra_env = {
+             'MOZ_DEVELOPER_REPO_DIR': self.topsrcdir,
+             'MOZ_DEVELOPER_OBJ_DIR': self.topobjdir,
+-            'RUST_BACKTRACE': '1',
++            'RUST_BACKTRACE': 'full',
+         }
+ 
+         if not enable_crash_reporter:
+             extra_env['MOZ_CRASHREPORTER_DISABLE'] = '1'
+         else:
+             extra_env['MOZ_CRASHREPORTER'] = '1'
+ 
+         if disable_e10s:
+diff --git a/testing/mozharness/mozharness/mozilla/testing/firefox_ui_tests.py b/testing/mozharness/mozharness/mozilla/testing/firefox_ui_tests.py
+--- a/testing/mozharness/mozharness/mozilla/testing/firefox_ui_tests.py
++++ b/testing/mozharness/mozharness/mozilla/testing/firefox_ui_tests.py
+@@ -247,17 +247,17 @@ class FirefoxUITests(TestingMixin, VCSTo
+         tests = [os.path.join(dirs['abs_fxui_dir'], 'tests', test) for test in self.default_tests]
+         cmd.extend(tests)
+ 
+         # Set further environment settings
+         env = env or self.query_env()
+         env.update({'MINIDUMP_SAVE_PATH': dirs['abs_blob_upload_dir']})
+         if self.query_minidump_stackwalk():
+             env.update({'MINIDUMP_STACKWALK': self.minidump_stackwalk_path})
+-        env['RUST_BACKTRACE'] = '1'
++        env['RUST_BACKTRACE'] = 'full'
+ 
+         # If code coverage is enabled, set GCOV_PREFIX and JS_CODE_COVERAGE_OUTPUT_DIR env variables
+         if self.config.get('code_coverage'):
+             env['GCOV_PREFIX'] = self.gcov_dir
+             env['JS_CODE_COVERAGE_OUTPUT_DIR'] = self.jsvm_dir
+ 
+         if self.config['allow_software_gl_layers']:
+             env['MOZ_LAYERS_ALLOW_SOFTWARE_GL'] = '1'
+diff --git a/testing/mozharness/mozharness/mozilla/testing/talos.py b/testing/mozharness/mozharness/mozilla/testing/talos.py
+--- a/testing/mozharness/mozharness/mozilla/testing/talos.py
++++ b/testing/mozharness/mozharness/mozilla/testing/talos.py
+@@ -557,17 +557,17 @@ class Talos(TestingMixin, MercurialScrip
+         self.run_command([python, "--version"])
+         parser = TalosOutputParser(config=self.config, log_obj=self.log_obj,
+                                    error_list=TalosErrorList)
+         env = {}
+         env['MOZ_UPLOAD_DIR'] = self.query_abs_dirs()['abs_blob_upload_dir']
+         if not self.run_local:
+             env['MINIDUMP_STACKWALK'] = self.query_minidump_stackwalk()
+         env['MINIDUMP_SAVE_PATH'] = self.query_abs_dirs()['abs_blob_upload_dir']
+-        env['RUST_BACKTRACE'] = '1'
++        env['RUST_BACKTRACE'] = 'full'
+         if not os.path.isdir(env['MOZ_UPLOAD_DIR']):
+             self.mkdir_p(env['MOZ_UPLOAD_DIR'])
+         env = self.query_env(partial_env=env, log_level=INFO)
+         # adjust PYTHONPATH to be able to use talos as a python package
+         if 'PYTHONPATH' in env:
+             env['PYTHONPATH'] = self.talos_path + os.pathsep + env['PYTHONPATH']
+         else:
+             env['PYTHONPATH'] = self.talos_path
+diff --git a/testing/mozharness/scripts/android_emulator_unittest.py b/testing/mozharness/scripts/android_emulator_unittest.py
+--- a/testing/mozharness/scripts/android_emulator_unittest.py
++++ b/testing/mozharness/scripts/android_emulator_unittest.py
+@@ -717,17 +717,17 @@ class AndroidEmulatorTest(BlobUploadMixi
+             cwd = self._query_tests_dir()
+         except:
+             self.fatal("Don't know how to run --test-suite '%s'!" % self.test_suite)
+         env = self.query_env()
+         if self.query_minidump_stackwalk():
+             env['MINIDUMP_STACKWALK'] = self.minidump_stackwalk_path
+         env['MOZ_UPLOAD_DIR'] = self.query_abs_dirs()['abs_blob_upload_dir']
+         env['MINIDUMP_SAVE_PATH'] = self.query_abs_dirs()['abs_blob_upload_dir']
+-        env['RUST_BACKTRACE'] = '1'
++        env['RUST_BACKTRACE'] = 'full'
+ 
+         self.info("Running on %s the command %s" % (self.emulator["name"], subprocess.list2cmdline(cmd)))
+         self.info("##### %s log begins" % self.test_suite)
+ 
+         # TinderBoxPrintRe does not know about the '-debug' categories
+         aliases = {
+             'reftest-debug': 'reftest',
+             'jsreftest-debug': 'jsreftest',
+diff --git a/testing/mozharness/scripts/desktop_unittest.py b/testing/mozharness/scripts/desktop_unittest.py
+--- a/testing/mozharness/scripts/desktop_unittest.py
++++ b/testing/mozharness/scripts/desktop_unittest.py
+@@ -704,17 +704,17 @@ class DesktopUnittest(TestingMixin, Merc
+                     parser.formatter = ref_formatter.ReftestFormatter()
+ 
+                 if self.query_minidump_stackwalk():
+                     env['MINIDUMP_STACKWALK'] = self.minidump_stackwalk_path
+                 if self.query_nodejs():
+                     env['MOZ_NODE_PATH'] = self.nodejs_path
+                 env['MOZ_UPLOAD_DIR'] = self.query_abs_dirs()['abs_blob_upload_dir']
+                 env['MINIDUMP_SAVE_PATH'] = self.query_abs_dirs()['abs_blob_upload_dir']
+-                env['RUST_BACKTRACE'] = '1'
++                env['RUST_BACKTRACE'] = 'full'
+                 if not os.path.isdir(env['MOZ_UPLOAD_DIR']):
+                     self.mkdir_p(env['MOZ_UPLOAD_DIR'])
+ 
+                 if self.config['allow_software_gl_layers']:
+                     env['MOZ_LAYERS_ALLOW_SOFTWARE_GL'] = '1'
+                 if self.config['enable_webrender']:
+                     env['MOZ_WEBRENDER'] = '1'
+ 
+diff --git a/testing/mozharness/scripts/marionette.py b/testing/mozharness/scripts/marionette.py
+--- a/testing/mozharness/scripts/marionette.py
++++ b/testing/mozharness/scripts/marionette.py
+@@ -311,17 +311,17 @@ class MarionetteTest(TestingMixin, Mercu
+         cmd.extend(self.query_tests_args(try_tests,
+                                          str_format_values=config_fmt_args))
+ 
+         env = {}
+         if self.query_minidump_stackwalk():
+             env['MINIDUMP_STACKWALK'] = self.minidump_stackwalk_path
+         env['MOZ_UPLOAD_DIR'] = self.query_abs_dirs()['abs_blob_upload_dir']
+         env['MINIDUMP_SAVE_PATH'] = self.query_abs_dirs()['abs_blob_upload_dir']
+-        env['RUST_BACKTRACE'] = '1'
++        env['RUST_BACKTRACE'] = 'full'
+ 
+         if self.config['allow_software_gl_layers']:
+             env['MOZ_LAYERS_ALLOW_SOFTWARE_GL'] = '1'
+         if self.config['enable_webrender']:
+             env['MOZ_WEBRENDER'] = '1'
+ 
+         if not os.path.isdir(env['MOZ_UPLOAD_DIR']):
+             self.mkdir_p(env['MOZ_UPLOAD_DIR'])
+diff --git a/testing/mozharness/scripts/web_platform_tests.py b/testing/mozharness/scripts/web_platform_tests.py
+--- a/testing/mozharness/scripts/web_platform_tests.py
++++ b/testing/mozharness/scripts/web_platform_tests.py
+@@ -270,17 +270,17 @@ class WebPlatformTest(TestingMixin, Merc
+         self._install_fonts()
+ 
+         parser = StructuredOutputParser(config=self.config,
+                                         log_obj=self.log_obj,
+                                         log_compact=True,
+                                         error_list=BaseErrorList + HarnessErrorList)
+ 
+         env = {'MINIDUMP_SAVE_PATH': dirs['abs_blob_upload_dir']}
+-        env['RUST_BACKTRACE'] = '1'
++        env['RUST_BACKTRACE'] = 'full'
+ 
+         if self.config['allow_software_gl_layers']:
+             env['MOZ_LAYERS_ALLOW_SOFTWARE_GL'] = '1'
+         if self.config['enable_webrender']:
+             env['MOZ_WEBRENDER'] = '1'
+         if self.config['headless']:
+             env['MOZ_HEADLESS'] = '1'
+             env['MOZ_HEADLESS_WIDTH'] = self.config['headless_width']

+ 130 - 0
bug1240930-253/frg-mozilla/1414064-1-58a1.patch

@@ -0,0 +1,130 @@
+# HG changeset patch
+# User Chris Manchester <cmanchester@mozilla.com>
+# Date 1510094084 28800
+#      Tue Nov 07 14:34:44 2017 -0800
+# Node ID 11bf83133ab4da9ac5beeb8686b74d474cf14c1e
+# Parent  98284ab6ed0394698a521c4e76b577da4ca0f872
+Bug 1414064 - Remove WRAP_LDFLAGS, it is never set in the build system. r=mshal
+
+MozReview-Commit-ID: Da4a4JmaxoL
+
+diff --git a/config/rules.mk b/config/rules.mk
+--- a/config/rules.mk
++++ b/config/rules.mk
+@@ -579,17 +579,17 @@ ifdef MSMANIFEST_TOOL
+ 	fi
+ endif	# MSVC with manifest tool
+ ifdef MOZ_PROFILE_GENERATE
+ # touch it a few seconds into the future to work around FAT's
+ # 2-second granularity
+ 	touch -t `date +%Y%m%d%H%M.%S -d 'now+5seconds'` pgo.relink
+ endif
+ else # !WINNT || GNU_CC
+-	$(call EXPAND_CC_OR_CXX,$@) -o $@ $(COMPUTED_CXX_LDFLAGS) $(PGO_CFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(STATIC_LIBS) $(MOZ_PROGRAM_LDFLAGS) $(SHARED_LIBS) $(EXTRA_LIBS) $(OS_LIBS) $(BIN_FLAGS) $(EXE_DEF_FILE)
++	$(call EXPAND_CC_OR_CXX,$@) -o $@ $(COMPUTED_CXX_LDFLAGS) $(PGO_CFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(STATIC_LIBS) $(MOZ_PROGRAM_LDFLAGS) $(SHARED_LIBS) $(EXTRA_LIBS) $(OS_LIBS) $(BIN_FLAGS) $(EXE_DEF_FILE)
+ 	$(call py_action,check_binary,--target $@)
+ endif # WINNT && !GNU_CC
+ 
+ ifdef ENABLE_STRIP
+ 	$(STRIP) $(STRIP_FLAGS) $@
+ endif
+ ifdef MOZ_POST_PROGRAM_COMMAND
+ 	$(MOZ_POST_PROGRAM_COMMAND) $@
+@@ -638,17 +638,17 @@ ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
+ 	$(EXPAND_LINK) -nologo -out:$@ -pdb:$(LINK_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_PROGRAM_LDFLAGS) $(STATIC_LIBS) $(SHARED_LIBS) $(EXTRA_LIBS) $(OS_LIBS)
+ ifdef MSMANIFEST_TOOL
+ 	@if test -f $@.manifest; then \
+ 		$(MT) -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \
+ 		rm -f $@.manifest; \
+ 	fi
+ endif	# MSVC with manifest tool
+ else
+-	$(call EXPAND_CC_OR_CXX,$@) $(COMPUTED_CXX_LDFLAGS) $(PGO_CFLAGS) -o $@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(STATIC_LIBS) $(MOZ_PROGRAM_LDFLAGS) $(SHARED_LIBS) $(EXTRA_LIBS) $(OS_LIBS) $(BIN_FLAGS)
++	$(call EXPAND_CC_OR_CXX,$@) $(COMPUTED_CXX_LDFLAGS) $(PGO_CFLAGS) -o $@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(STATIC_LIBS) $(MOZ_PROGRAM_LDFLAGS) $(SHARED_LIBS) $(EXTRA_LIBS) $(OS_LIBS) $(BIN_FLAGS)
+ 	$(call py_action,check_binary,--target $@)
+ endif # WINNT && !GNU_CC
+ 
+ ifdef ENABLE_STRIP
+ 	$(STRIP) $(STRIP_FLAGS) $@
+ endif
+ ifdef MOZ_POST_PROGRAM_COMMAND
+ 	$(MOZ_POST_PROGRAM_COMMAND) $@
+@@ -702,17 +702,17 @@ endif
+ # symlinks back to the originals. The symlinks are a no-op for stabs debugging,
+ # so no need to conditionalize on OS version or debugging format.
+ 
+ $(SHARED_LIBRARY): $(OBJS) $(RESFILE) $(RUST_STATIC_LIB_FOR_SHARED_LIB) $(STATIC_LIBS_DEPS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
+ 	$(REPORT_BUILD)
+ ifndef INCREMENTAL_LINKER
+ 	$(RM) $@
+ endif
+-	$(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(SUB_SHLOBJS) $(RESFILE) $(LDFLAGS) $(WRAP_LDFLAGS) $(STATIC_LIBS) $(RUST_STATIC_LIB_FOR_SHARED_LIB) $(SHARED_LIBS) $(EXTRA_DSO_LDOPTS) $(MOZ_GLUE_LDFLAGS) $(EXTRA_LIBS) $(OS_LIBS) $(SHLIB_LDENDFILE)
++	$(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(SUB_SHLOBJS) $(RESFILE) $(LDFLAGS) $(STATIC_LIBS) $(RUST_STATIC_LIB_FOR_SHARED_LIB) $(SHARED_LIBS) $(EXTRA_DSO_LDOPTS) $(MOZ_GLUE_LDFLAGS) $(EXTRA_LIBS) $(OS_LIBS) $(SHLIB_LDENDFILE)
+ 	$(call py_action,check_binary,--target $@)
+ 
+ ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
+ ifdef MSMANIFEST_TOOL
+ ifdef EMBED_MANIFEST_AT
+ 	@if test -f $@.manifest; then \
+ 		if test -f '$(srcdir)/$@.manifest'; then \
+ 			echo 'Embedding manifest from $(srcdir)/$@.manifest and $@.manifest'; \
+diff --git a/js/src/old-configure.in b/js/src/old-configure.in
+--- a/js/src/old-configure.in
++++ b/js/src/old-configure.in
+@@ -1927,17 +1927,16 @@ AC_SUBST(HOST_LDFLAGS)
+ AC_SUBST_LIST(HOST_OPTIMIZE_FLAGS)
+ AC_SUBST(HOST_AR)
+ AC_SUBST(HOST_AR_FLAGS)
+ AC_SUBST(HOST_RANLIB)
+ AC_SUBST(HOST_BIN_SUFFIX)
+ 
+ AC_SUBST(TARGET_XPCOM_ABI)
+ 
+-AC_SUBST(WRAP_LDFLAGS)
+ AC_SUBST_LIST(DSO_CFLAGS)
+ AC_SUBST_LIST(DSO_PIC_CFLAGS)
+ AC_SUBST(DSO_LDOPTS)
+ AC_SUBST(BIN_SUFFIX)
+ AC_SUBST(USE_N32)
+ AC_SUBST(CC_VERSION)
+ AC_SUBST(MOZ_LINKER)
+ AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS)
+diff --git a/old-configure.in b/old-configure.in
+--- a/old-configure.in
++++ b/old-configure.in
+@@ -4231,17 +4231,16 @@ AC_SUBST(HOST_BIN_SUFFIX)
+ 
+ AC_SUBST(TARGET_XPCOM_ABI)
+ AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
+ AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
+ AC_SUBST(HAVE_X86_AVX2)
+ AC_SUBST(HAVE_ALTIVEC)
+ AC_SUBST(GCC_USE_GNU_LD)
+ 
+-AC_SUBST(WRAP_LDFLAGS)
+ AC_SUBST_LIST(DSO_CFLAGS)
+ AC_SUBST_LIST(DSO_PIC_CFLAGS)
+ AC_SUBST(DSO_LDOPTS)
+ AC_SUBST(BIN_SUFFIX)
+ AC_SUBST(USE_N32)
+ AC_SUBST(CC_VERSION)
+ AC_SUBST(NS_ENABLE_TSF)
+ AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS)
+@@ -4429,17 +4428,16 @@ if test -n "$_subconfigure_subdir"; then
+   ac_configure_args="$_subconfigure_config_args"
+   AC_OUTPUT_SUBDIRS_NOW("$_subconfigure_subdir",$cache_file)
+   ac_configure_args="$_save_ac_configure_args"
+   srcdir="$_save_srcdir"
+ fi
+ 
+ if test "$COMPILE_ENVIRONMENT" -a "$MOZ_WIDGET_TOOLKIT"; then
+ 
+-export WRAP_LDFLAGS
+ 
+ dnl ========================================================
+ dnl = Setup a nice relatively clean build environment for
+ dnl = sub-configures.
+ dnl ========================================================
+ CC="$_SUBDIR_CC"
+ CXX="$_SUBDIR_CXX"
+ CFLAGS="$_SUBDIR_CFLAGS"

+ 70 - 0
bug1240930-253/frg-mozilla/1414064-2-58a1.patch

@@ -0,0 +1,70 @@
+# HG changeset patch
+# User Chris Manchester <cmanchester@mozilla.com>
+# Date 1510094084 28800
+#      Tue Nov 07 14:34:44 2017 -0800
+# Node ID 243303b215cc2038d9edce914b422d9ac8d0ea93
+# Parent  3cbb5e1a52d7a3102c9527b5c747a6e2110fc61c
+Bug 1414064 - Remove EXE_DEF_FILE, it is never set in the build system. r=mshal
+
+MozReview-Commit-ID: IcCg4rZjpee
+
+diff --git a/config/rules.mk b/config/rules.mk
+--- a/config/rules.mk
++++ b/config/rules.mk
+@@ -237,17 +237,17 @@ HOST_PROGRAM :=
+ HOST_SIMPLE_PROGRAMS :=
+ endif
+ 
+ ALL_TRASH = \
+ 	$(GARBAGE) $(TARGETS) $(OBJS) $(PROGOBJS) LOGS TAGS a.out \
+ 	$(filter-out $(ASFILES),$(OBJS:.$(OBJ_SUFFIX)=.s)) $(OBJS:.$(OBJ_SUFFIX)=.ii) \
+ 	$(OBJS:.$(OBJ_SUFFIX)=.i) $(OBJS:.$(OBJ_SUFFIX)=.i_o) \
+ 	$(HOST_PROGOBJS) $(HOST_OBJS) $(IMPORT_LIBRARY) \
+-	$(EXE_DEF_FILE) so_locations _gen _stubs $(wildcard *.res) $(wildcard *.RES) \
++	so_locations _gen _stubs $(wildcard *.res) $(wildcard *.RES) \
+ 	$(wildcard *.pdb) $(CODFILE) $(IMPORT_LIBRARY) \
+ 	$(SHARED_LIBRARY:$(DLL_SUFFIX)=.exp) $(wildcard *.ilk) \
+ 	$(PROGRAM:$(BIN_SUFFIX)=.exp) $(SIMPLE_PROGRAMS:$(BIN_SUFFIX)=.exp) \
+ 	$(PROGRAM:$(BIN_SUFFIX)=.lib) $(SIMPLE_PROGRAMS:$(BIN_SUFFIX)=.lib) \
+ 	$(SIMPLE_PROGRAMS:$(BIN_SUFFIX)=.$(OBJ_SUFFIX)) \
+ 	$(wildcard gts_tmp_*) $(LIBRARY:%.a=.%.timestamp)
+ ALL_TRASH_DIRS = \
+ 	$(GARBAGE_DIRS) /no-such-file
+@@ -554,17 +554,17 @@ LINKER_OUT=$(subst /,\,$1)
+ else
+ LINKER_OUT=$1
+ endif
+ 
+ #
+ # PROGRAM = Foo
+ # creates OBJS, links with LIBS to create Foo
+ #
+-$(PROGRAM): $(PROGOBJS) $(STATIC_LIBS_DEPS) $(EXTRA_DEPS) $(EXE_DEF_FILE) $(RESFILE) $(GLOBAL_DEPS)
++$(PROGRAM): $(PROGOBJS) $(STATIC_LIBS_DEPS) $(EXTRA_DEPS) $(RESFILE) $(GLOBAL_DEPS)
+ 	$(REPORT_BUILD)
+ 	@$(RM) $@.manifest
+ ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
+ 	$(EXPAND_LINK) -NOLOGO -OUT:$(call LINKER_OUT,$@) -PDB:$(LINK_PDBFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_PROGRAM_LDFLAGS) $(PROGOBJS) $(RESFILE) $(STATIC_LIBS) $(SHARED_LIBS) $(EXTRA_LIBS) $(OS_LIBS)
+ ifdef MSMANIFEST_TOOL
+ 	@if test -f $@.manifest; then \
+ 		if test -f '$(srcdir)/$@.manifest'; then \
+ 			echo 'Embedding manifest from $(srcdir)/$@.manifest and $@.manifest'; \
+@@ -579,17 +579,17 @@ ifdef MSMANIFEST_TOOL
+ 	fi
+ endif	# MSVC with manifest tool
+ ifdef MOZ_PROFILE_GENERATE
+ # touch it a few seconds into the future to work around FAT's
+ # 2-second granularity
+ 	touch -t `date +%Y%m%d%H%M.%S -d 'now+5seconds'` pgo.relink
+ endif
+ else # !WINNT || GNU_CC
+-	$(call EXPAND_CC_OR_CXX,$@) -o $@ $(COMPUTED_CXX_LDFLAGS) $(PGO_CFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(STATIC_LIBS) $(MOZ_PROGRAM_LDFLAGS) $(SHARED_LIBS) $(EXTRA_LIBS) $(OS_LIBS) $(BIN_FLAGS) $(EXE_DEF_FILE)
++	$(call EXPAND_CC_OR_CXX,$@) -o $@ $(COMPUTED_CXX_LDFLAGS) $(PGO_CFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(STATIC_LIBS) $(MOZ_PROGRAM_LDFLAGS) $(SHARED_LIBS) $(EXTRA_LIBS) $(OS_LIBS) $(BIN_FLAGS)
+ 	$(call py_action,check_binary,--target $@)
+ endif # WINNT && !GNU_CC
+ 
+ ifdef ENABLE_STRIP
+ 	$(STRIP) $(STRIP_FLAGS) $@
+ endif
+ ifdef MOZ_POST_PROGRAM_COMMAND
+ 	$(MOZ_POST_PROGRAM_COMMAND) $@

+ 34 - 0
bug1240930-253/frg-mozilla/1414064-3-58a1.patch

@@ -0,0 +1,34 @@
+# HG changeset patch
+# User Chris Manchester <cmanchester@mozilla.com>
+# Date 1510094084 28800
+#      Tue Nov 07 14:34:44 2017 -0800
+# Node ID 3fcfca0277db249f72b9e49f432be89f188c5519
+# Parent  381ab4b56e6ad2defb1f9122335a5e62120829fe
+Bug 1414064 - Remove SHLIB_LD{START,END}FILE and SUB_SHLOBJS. r=mshal
+
+These are only set by nss' make build system, which we no longer use.
+
+MozReview-Commit-ID: 9XRhpDmlekK
+
+diff --git a/config/rules.mk b/config/rules.mk
+--- a/config/rules.mk
++++ b/config/rules.mk
+@@ -702,17 +702,17 @@ endif
+ # symlinks back to the originals. The symlinks are a no-op for stabs debugging,
+ # so no need to conditionalize on OS version or debugging format.
+ 
+ $(SHARED_LIBRARY): $(OBJS) $(RESFILE) $(RUST_STATIC_LIB_FOR_SHARED_LIB) $(STATIC_LIBS_DEPS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
+ 	$(REPORT_BUILD)
+ ifndef INCREMENTAL_LINKER
+ 	$(RM) $@
+ endif
+-	$(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(SUB_SHLOBJS) $(RESFILE) $(LDFLAGS) $(STATIC_LIBS) $(RUST_STATIC_LIB_FOR_SHARED_LIB) $(SHARED_LIBS) $(EXTRA_DSO_LDOPTS) $(MOZ_GLUE_LDFLAGS) $(EXTRA_LIBS) $(OS_LIBS) $(SHLIB_LDENDFILE)
++	$(EXPAND_MKSHLIB) $(OBJS) $(RESFILE) $(LDFLAGS) $(STATIC_LIBS) $(RUST_STATIC_LIB_FOR_SHARED_LIB) $(SHARED_LIBS) $(EXTRA_DSO_LDOPTS) $(MOZ_GLUE_LDFLAGS) $(EXTRA_LIBS) $(OS_LIBS)
+ 	$(call py_action,check_binary,--target $@)
+ 
+ ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
+ ifdef MSMANIFEST_TOOL
+ ifdef EMBED_MANIFEST_AT
+ 	@if test -f $@.manifest; then \
+ 		if test -f '$(srcdir)/$@.manifest'; then \
+ 			echo 'Embedding manifest from $(srcdir)/$@.manifest and $@.manifest'; \

+ 151 - 0
bug1240930-253/frg-mozilla/1414064-4-58a1.patch

@@ -0,0 +1,151 @@
+# HG changeset patch
+# User Chris Manchester <cmanchester@mozilla.com>
+# Date 1510094084 28800
+#      Tue Nov 07 14:34:44 2017 -0800
+# Node ID a3e9ac417280a142da238af07913e5e3a79dc47b
+# Parent  432516f861a1540d2fc282324ab2410f0e07a4ba
+Bug 1414064 - Remove references to EXTRA_LIBS in the build system. r=mshal
+
+MozReview-Commit-ID: AeD755whvIV
+
+diff --git a/config/makefiles/debugmake.mk b/config/makefiles/debugmake.mk
+--- a/config/makefiles/debugmake.mk
++++ b/config/makefiles/debugmake.mk
+@@ -82,17 +82,16 @@ showbuild:
+ 		COMPILE_CXXFLAGS \
+ 		COMPILE_CMFLAGS \
+ 		COMPILE_CMMFLAGS \
+ 		LDFLAGS \
+ 		OS_LDFLAGS \
+ 		DSO_LDOPTS \
+ 		OS_INCLUDES \
+ 		OS_LIBS \
+-		EXTRA_LIBS \
+ 		BIN_FLAGS \
+ 		INCLUDES \
+ 		DEFINES \
+ 		ACDEFINES \
+ 		BIN_SUFFIX \
+ 		LIB_SUFFIX \
+ 		RUST_LIB_SUFFIX \
+ 		DLL_SUFFIX \
+diff --git a/config/rules.mk b/config/rules.mk
+--- a/config/rules.mk
++++ b/config/rules.mk
+@@ -558,17 +558,17 @@ endif
+ #
+ # PROGRAM = Foo
+ # creates OBJS, links with LIBS to create Foo
+ #
+ $(PROGRAM): $(PROGOBJS) $(STATIC_LIBS_DEPS) $(EXTRA_DEPS) $(RESFILE) $(GLOBAL_DEPS)
+ 	$(REPORT_BUILD)
+ 	@$(RM) $@.manifest
+ ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
+-	$(EXPAND_LINK) -NOLOGO -OUT:$(call LINKER_OUT,$@) -PDB:$(LINK_PDBFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_PROGRAM_LDFLAGS) $(PROGOBJS) $(RESFILE) $(STATIC_LIBS) $(SHARED_LIBS) $(EXTRA_LIBS) $(OS_LIBS)
++	$(EXPAND_LINK) -NOLOGO -OUT:$(call LINKER_OUT,$@) -PDB:$(LINK_PDBFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_PROGRAM_LDFLAGS) $(PROGOBJS) $(RESFILE) $(STATIC_LIBS) $(SHARED_LIBS) $(OS_LIBS)
+ ifdef MSMANIFEST_TOOL
+ 	@if test -f $@.manifest; then \
+ 		if test -f '$(srcdir)/$@.manifest'; then \
+ 			echo 'Embedding manifest from $(srcdir)/$@.manifest and $@.manifest'; \
+ 			$(MT) -NOLOGO -MANIFEST '$(win_srcdir)/$@.manifest' $@.manifest -OUTPUTRESOURCE:$@\;1; \
+ 		else \
+ 			echo 'Embedding manifest from $@.manifest'; \
+ 			$(MT) -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \
+@@ -579,17 +579,17 @@ ifdef MSMANIFEST_TOOL
+ 	fi
+ endif	# MSVC with manifest tool
+ ifdef MOZ_PROFILE_GENERATE
+ # touch it a few seconds into the future to work around FAT's
+ # 2-second granularity
+ 	touch -t `date +%Y%m%d%H%M.%S -d 'now+5seconds'` pgo.relink
+ endif
+ else # !WINNT || GNU_CC
+-	$(call EXPAND_CC_OR_CXX,$@) -o $@ $(COMPUTED_CXX_LDFLAGS) $(PGO_CFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(STATIC_LIBS) $(MOZ_PROGRAM_LDFLAGS) $(SHARED_LIBS) $(EXTRA_LIBS) $(OS_LIBS) $(BIN_FLAGS)
++	$(call EXPAND_CC_OR_CXX,$@) -o $@ $(COMPUTED_CXX_LDFLAGS) $(PGO_CFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(STATIC_LIBS) $(MOZ_PROGRAM_LDFLAGS) $(SHARED_LIBS) $(OS_LIBS) $(BIN_FLAGS)
+ 	$(call py_action,check_binary,--target $@)
+ endif # WINNT && !GNU_CC
+ 
+ ifdef ENABLE_STRIP
+ 	$(STRIP) $(STRIP_FLAGS) $@
+ endif
+ ifdef MOZ_POST_PROGRAM_COMMAND
+ 	$(MOZ_POST_PROGRAM_COMMAND) $@
+@@ -630,25 +630,25 @@ endif
+ # Foo.o (from either Foo.c or Foo.cpp).
+ #
+ # SIMPLE_PROGRAMS = Foo Bar
+ # creates Foo.o Bar.o, links with LIBS to create Foo, Bar.
+ #
+ $(SIMPLE_PROGRAMS): %$(BIN_SUFFIX): %.$(OBJ_SUFFIX) $(STATIC_LIBS_DEPS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
+ 	$(REPORT_BUILD)
+ ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
+-	$(EXPAND_LINK) -nologo -out:$@ -pdb:$(LINK_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_PROGRAM_LDFLAGS) $(STATIC_LIBS) $(SHARED_LIBS) $(EXTRA_LIBS) $(OS_LIBS)
++	$(EXPAND_LINK) -nologo -out:$@ -pdb:$(LINK_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_PROGRAM_LDFLAGS) $(STATIC_LIBS) $(SHARED_LIBS) $(OS_LIBS)
+ ifdef MSMANIFEST_TOOL
+ 	@if test -f $@.manifest; then \
+ 		$(MT) -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \
+ 		rm -f $@.manifest; \
+ 	fi
+ endif	# MSVC with manifest tool
+ else
+-	$(call EXPAND_CC_OR_CXX,$@) $(COMPUTED_CXX_LDFLAGS) $(PGO_CFLAGS) -o $@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(STATIC_LIBS) $(MOZ_PROGRAM_LDFLAGS) $(SHARED_LIBS) $(EXTRA_LIBS) $(OS_LIBS) $(BIN_FLAGS)
++	$(call EXPAND_CC_OR_CXX,$@) $(COMPUTED_CXX_LDFLAGS) $(PGO_CFLAGS) -o $@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(STATIC_LIBS) $(MOZ_PROGRAM_LDFLAGS) $(SHARED_LIBS) $(OS_LIBS) $(BIN_FLAGS)
+ 	$(call py_action,check_binary,--target $@)
+ endif # WINNT && !GNU_CC
+ 
+ ifdef ENABLE_STRIP
+ 	$(STRIP) $(STRIP_FLAGS) $@
+ endif
+ ifdef MOZ_POST_PROGRAM_COMMAND
+ 	$(MOZ_POST_PROGRAM_COMMAND) $@
+@@ -664,27 +664,27 @@ ifneq (,$(HOST_CPPSRCS)$(USE_HOST_CXX))
+ else
+ 	$(EXPAND_LIBS_EXEC) -- $(HOST_CC) $(HOST_OUTOPTION)$@ $(HOST_C_LDFLAGS) $< $(HOST_LIBS) $(HOST_EXTRA_LIBS)
+ endif
+ endif
+ ifndef CROSS_COMPILE
+ 	$(call py_action,check_binary,--host $@)
+ endif
+ 
+-$(filter %.$(LIB_SUFFIX),$(LIBRARY)): $(OBJS) $(STATIC_LIBS_DEPS) $(filter %.$(LIB_SUFFIX),$(EXTRA_LIBS)) $(EXTRA_DEPS) $(GLOBAL_DEPS)
++$(filter %.$(LIB_SUFFIX),$(LIBRARY)): $(OBJS) $(STATIC_LIBS_DEPS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
+ 	$(REPORT_BUILD)
+ # Always remove both library and library descriptor
+ 	$(RM) $(REAL_LIBRARY) $(REAL_LIBRARY).$(LIBS_DESC_SUFFIX)
+-	$(EXPAND_AR) $(AR_FLAGS) $(OBJS) $(STATIC_LIBS) $(filter %.$(LIB_SUFFIX),$(EXTRA_LIBS))
++	$(EXPAND_AR) $(AR_FLAGS) $(OBJS) $(STATIC_LIBS)
+ 
+-$(filter-out %.$(LIB_SUFFIX),$(LIBRARY)): $(filter %.$(LIB_SUFFIX),$(LIBRARY)) $(OBJS) $(STATIC_LIBS_DEPS) $(filter %.$(LIB_SUFFIX),$(EXTRA_LIBS)) $(EXTRA_DEPS) $(GLOBAL_DEPS)
++$(filter-out %.$(LIB_SUFFIX),$(LIBRARY)): $(filter %.$(LIB_SUFFIX),$(LIBRARY)) $(OBJS) $(STATIC_LIBS_DEPS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
+ # When we only build a library descriptor, blow out any existing library
+ 	$(REPORT_BUILD)
+ 	$(if $(filter %.$(LIB_SUFFIX),$(LIBRARY)),,$(RM) $(REAL_LIBRARY))
+-	$(EXPAND_LIBS_GEN) -o $@ $(OBJS) $(STATIC_LIBS) $(filter %.$(LIB_SUFFIX),$(EXTRA_LIBS))
++	$(EXPAND_LIBS_GEN) -o $@ $(OBJS) $(STATIC_LIBS)
+ 
+ ifeq ($(OS_ARCH),WINNT)
+ # Import libraries are created by the rules creating shared libraries.
+ # The rules to copy them to $(DIST)/lib depend on $(IMPORT_LIBRARY),
+ # but make will happily consider the import library before it is refreshed
+ # when rebuilding the corresponding shared library. Defining an empty recipe
+ # for import libraries forces make to wait for the shared library recipe to
+ # have run before considering other targets that depend on the import library.
+@@ -702,17 +702,17 @@ endif
+ # symlinks back to the originals. The symlinks are a no-op for stabs debugging,
+ # so no need to conditionalize on OS version or debugging format.
+ 
+ $(SHARED_LIBRARY): $(OBJS) $(RESFILE) $(RUST_STATIC_LIB_FOR_SHARED_LIB) $(STATIC_LIBS_DEPS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
+ 	$(REPORT_BUILD)
+ ifndef INCREMENTAL_LINKER
+ 	$(RM) $@
+ endif
+-	$(EXPAND_MKSHLIB) $(OBJS) $(RESFILE) $(LDFLAGS) $(STATIC_LIBS) $(RUST_STATIC_LIB_FOR_SHARED_LIB) $(SHARED_LIBS) $(EXTRA_DSO_LDOPTS) $(MOZ_GLUE_LDFLAGS) $(EXTRA_LIBS) $(OS_LIBS)
++	$(EXPAND_MKSHLIB) $(OBJS) $(RESFILE) $(LDFLAGS) $(STATIC_LIBS) $(RUST_STATIC_LIB_FOR_SHARED_LIB) $(SHARED_LIBS) $(EXTRA_DSO_LDOPTS) $(MOZ_GLUE_LDFLAGS) $(OS_LIBS)
+ 	$(call py_action,check_binary,--target $@)
+ 
+ ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
+ ifdef MSMANIFEST_TOOL
+ ifdef EMBED_MANIFEST_AT
+ 	@if test -f $@.manifest; then \
+ 		if test -f '$(srcdir)/$@.manifest'; then \
+ 			echo 'Embedding manifest from $(srcdir)/$@.manifest and $@.manifest'; \

+ 131 - 0
bug1240930-253/frg-mozilla/1414064-5-58a1.patch

@@ -0,0 +1,131 @@
+# HG changeset patch
+# User Chris Manchester <cmanchester@mozilla.com>
+# Date 1510094084 28800
+#      Tue Nov 07 14:34:44 2017 -0800
+# Node ID 4d3264d16f13e6d8f38a6a9d9b6c62d8dfc10b9f
+# Parent  f58743a0e883236da6d9cd641ed8183fa0246093
+Bug 1414064 - Move BIN_FLAGS to MOZ_PROGRAM_LDFLAGS, get rid of BIN_FLAGS. r=mshal
+
+MozReview-Commit-ID: ELTiYvh6iuS
+
+diff --git a/config/rules.mk b/config/rules.mk
+--- a/config/rules.mk
++++ b/config/rules.mk
+@@ -579,17 +579,17 @@ ifdef MSMANIFEST_TOOL
+ 	fi
+ endif	# MSVC with manifest tool
+ ifdef MOZ_PROFILE_GENERATE
+ # touch it a few seconds into the future to work around FAT's
+ # 2-second granularity
+ 	touch -t `date +%Y%m%d%H%M.%S -d 'now+5seconds'` pgo.relink
+ endif
+ else # !WINNT || GNU_CC
+-	$(call EXPAND_CC_OR_CXX,$@) -o $@ $(COMPUTED_CXX_LDFLAGS) $(PGO_CFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(STATIC_LIBS) $(MOZ_PROGRAM_LDFLAGS) $(SHARED_LIBS) $(OS_LIBS) $(BIN_FLAGS)
++	$(call EXPAND_CC_OR_CXX,$@) -o $@ $(COMPUTED_CXX_LDFLAGS) $(PGO_CFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(STATIC_LIBS) $(MOZ_PROGRAM_LDFLAGS) $(SHARED_LIBS) $(OS_LIBS)
+ 	$(call py_action,check_binary,--target $@)
+ endif # WINNT && !GNU_CC
+ 
+ ifdef ENABLE_STRIP
+ 	$(STRIP) $(STRIP_FLAGS) $@
+ endif
+ ifdef MOZ_POST_PROGRAM_COMMAND
+ 	$(MOZ_POST_PROGRAM_COMMAND) $@
+@@ -638,17 +638,17 @@ ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
+ 	$(EXPAND_LINK) -nologo -out:$@ -pdb:$(LINK_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_PROGRAM_LDFLAGS) $(STATIC_LIBS) $(SHARED_LIBS) $(OS_LIBS)
+ ifdef MSMANIFEST_TOOL
+ 	@if test -f $@.manifest; then \
+ 		$(MT) -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \
+ 		rm -f $@.manifest; \
+ 	fi
+ endif	# MSVC with manifest tool
+ else
+-	$(call EXPAND_CC_OR_CXX,$@) $(COMPUTED_CXX_LDFLAGS) $(PGO_CFLAGS) -o $@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(STATIC_LIBS) $(MOZ_PROGRAM_LDFLAGS) $(SHARED_LIBS) $(OS_LIBS) $(BIN_FLAGS)
++	$(call EXPAND_CC_OR_CXX,$@) $(COMPUTED_CXX_LDFLAGS) $(PGO_CFLAGS) -o $@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(STATIC_LIBS) $(MOZ_PROGRAM_LDFLAGS) $(SHARED_LIBS) $(OS_LIBS)
+ 	$(call py_action,check_binary,--target $@)
+ endif # WINNT && !GNU_CC
+ 
+ ifdef ENABLE_STRIP
+ 	$(STRIP) $(STRIP_FLAGS) $@
+ endif
+ ifdef MOZ_POST_PROGRAM_COMMAND
+ 	$(MOZ_POST_PROGRAM_COMMAND) $@
+diff --git a/js/src/old-configure.in b/js/src/old-configure.in
+--- a/js/src/old-configure.in
++++ b/js/src/old-configure.in
+@@ -815,17 +815,17 @@ case "$target" in
+ 
+ *-netbsd*)
+     DSO_CFLAGS=''
+     CFLAGS="$CFLAGS -Dunix"
+     CXXFLAGS="$CXXFLAGS -Dunix"
+     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
+         DSO_PIC_CFLAGS='-fPIC -DPIC'
+         DSO_LDOPTS='-shared'
+-	BIN_FLAGS='-Wl,--export-dynamic'
++        MOZ_PROGRAM_LDFLAGS="$MOZ_PROGRAM_LDFLAGS -Wl,--export-dynamic"
+     else
+     	DSO_PIC_CFLAGS='-fPIC -DPIC'
+     	DSO_LDOPTS='-shared'
+     fi
+     # This will fail on a.out systems prior to 1.5.1_ALPHA.
+     if test "$LIBRUNPATH"; then
+ 	DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
+     fi
+@@ -1839,17 +1839,16 @@ AC_SUBST(AR)
+ AC_SUBST(AR_FLAGS)
+ AC_SUBST(AR_EXTRACT)
+ AC_SUBST_LIST(ASFLAGS)
+ AC_SUBST(RC)
+ AC_SUBST(RCFLAGS)
+ AC_SUBST(WINDRES)
+ AC_SUBST(IMPLIB)
+ AC_SUBST(FILTER)
+-AC_SUBST(BIN_FLAGS)
+ AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS)
+ AC_SUBST(WARNINGS_AS_ERRORS)
+ AC_SUBST(LIBICONV)
+ 
+ AC_SUBST(ENABLE_STRIP)
+ AC_SUBST(PKG_SKIP_STRIP)
+ AC_SUBST(INCREMENTAL_LINKER)
+ 
+diff --git a/old-configure.in b/old-configure.in
+--- a/old-configure.in
++++ b/old-configure.in
+@@ -1003,17 +1003,17 @@ case "$target" in
+ 
+ *-netbsd*)
+     DSO_CFLAGS=''
+     CFLAGS="$CFLAGS -Dunix"
+     CXXFLAGS="$CXXFLAGS -Dunix"
+     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
+         DSO_PIC_CFLAGS='-fPIC -DPIC'
+         DSO_LDOPTS='-shared'
+-        BIN_FLAGS='-Wl,--export-dynamic'
++        MOZ_PROGRAM_LDFLAGS="$MOZ_PROGRAM_LDFLAGS -Wl,--export-dynamic"
+     else
+         DSO_PIC_CFLAGS='-fPIC -DPIC'
+         DSO_LDOPTS='-shared'
+     fi
+     # This will fail on a.out systems prior to 1.5.1_ALPHA.
+     if test "$LIBRUNPATH"; then
+         DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
+     fi
+@@ -3874,17 +3874,16 @@ AC_SUBST(AR_FLAGS)
+ AC_SUBST(AR_EXTRACT)
+ AC_SUBST(AS)
+ AC_SUBST_LIST(ASFLAGS)
+ AC_SUBST(RC)
+ AC_SUBST(RCFLAGS)
+ AC_SUBST(WINDRES)
+ AC_SUBST(IMPLIB)
+ AC_SUBST(FILTER)
+-AC_SUBST(BIN_FLAGS)
+ AC_SUBST(MOZ_AUTH_EXTENSION)
+ AC_SUBST(MOZ_PREF_EXTENSIONS)
+ AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS)
+ AC_SUBST(WARNINGS_AS_ERRORS)
+ AC_SUBST_SET(MOZ_EXTENSIONS)
+ AC_SUBST(MOZ_TOOLKIT_SEARCH)
+ AC_SUBST(MOZ_FEEDS)
+ 

+ 132 - 0
bug1240930-253/frg-mozilla/1414064-6-58a1.patch

@@ -0,0 +1,132 @@
+# HG changeset patch
+# User Chris Manchester <cmanchester@mozilla.com>
+# Date 1510094105 28800
+#      Tue Nov 07 14:35:05 2017 -0800
+# Node ID 0537b09e4117263cbcc80d4d766807f4ba261ec7
+# Parent  608714b63fba002948ef883cef1e0edbccb18816
+Bug 1414064 - Remove LD_VERSION_SCRIPT from the build system. r=mshal
+
+MozReview-Commit-ID: 6KOLZh6aQmc
+
+diff --git a/config/rules.mk b/config/rules.mk
+--- a/config/rules.mk
++++ b/config/rules.mk
+@@ -332,26 +332,16 @@ ifeq ($(OS_ARCH),NetBSD)
+ ifneq (,$(filter arc cobalt hpcmips mipsco newsmips pmax sgimips,$(OS_TEST)))
+ ifneq (,$(filter layout/%,$(relativesrcdir)))
+ OS_CFLAGS += -Wa,-xgot
+ OS_CXXFLAGS += -Wa,-xgot
+ endif
+ endif
+ endif
+ 
+-#
+-# Linux: add -Bsymbolic flag for components
+-#
+-ifeq ($(OS_ARCH),Linux)
+-ifdef LD_VERSION_SCRIPT
+-EXTRA_DSO_LDOPTS += -Wl,--version-script,$(LD_VERSION_SCRIPT)
+-EXTRA_DEPS += $(LD_VERSION_SCRIPT)
+-endif
+-endif
+-
+ ifdef SYMBOLS_FILE
+ ifeq ($(OS_TARGET),WINNT)
+ ifndef GNU_CC
+ EXTRA_DSO_LDOPTS += -DEF:$(call normalizepath,$(SYMBOLS_FILE))
+ else
+ EXTRA_DSO_LDOPTS += $(call normalizepath,$(SYMBOLS_FILE))
+ endif
+ else
+diff --git a/python/mozbuild/mozbuild/backend/recursivemake.py b/python/mozbuild/mozbuild/backend/recursivemake.py
+--- a/python/mozbuild/mozbuild/backend/recursivemake.py
++++ b/python/mozbuild/mozbuild/backend/recursivemake.py
+@@ -102,17 +102,16 @@ MOZBUILD_VARIABLES = [
+     b'HOST_CMMSRCS',
+     b'HOST_CXXFLAGS',
+     b'HOST_EXTRA_LIBS',
+     b'HOST_LIBRARY_NAME',
+     b'HOST_PROGRAM',
+     b'HOST_SIMPLE_PROGRAMS',
+     b'JAR_MANIFEST',
+     b'JAVA_JAR_TARGETS',
+-    b'LD_VERSION_SCRIPT',
+     b'LIBRARY_NAME',
+     b'LIBS',
+     b'MAKE_FRAMEWORK',
+     b'MODULE',
+     b'NO_DIST_INSTALL',
+     b'NO_EXPAND_LIBS',
+     b'NO_INTERFACES_MANIFEST',
+     b'NO_JS_MANIFEST',
+diff --git a/python/mozbuild/mozbuild/frontend/context.py b/python/mozbuild/mozbuild/frontend/context.py
+--- a/python/mozbuild/mozbuild/frontend/context.py
++++ b/python/mozbuild/mozbuild/frontend/context.py
+@@ -1622,22 +1622,16 @@ VARIABLES = {
+         """),
+ 
+     'DEFFILE': (unicode, unicode,
+         """The program .def (module definition) file.
+ 
+         This variable can only be used on Windows.
+         """),
+ 
+-    'LD_VERSION_SCRIPT': (unicode, unicode,
+-        """The linker version script for shared libraries.
+-
+-        This variable can only be used on Linux.
+-        """),
+-
+     'SYMBOLS_FILE': (Path, unicode,
+         """A file containing a list of symbols to export from a shared library.
+ 
+         The given file contains a list of symbols to be exported, and is
+         preprocessed.
+         A special marker "@DATA@" must be added after a symbol name if it
+         points to data instead of code, so that the Windows linker can treat
+         them correctly.
+diff --git a/python/mozbuild/mozbuild/frontend/emitter.py b/python/mozbuild/mozbuild/frontend/emitter.py
+--- a/python/mozbuild/mozbuild/frontend/emitter.py
++++ b/python/mozbuild/mozbuild/frontend/emitter.py
+@@ -741,20 +741,20 @@ class TreeMetadataEmitter(LoggingMixin):
+                         context)
+ 
+             symbols_file = context.get('SYMBOLS_FILE')
+             if symbols_file:
+                 if not shared_lib:
+                     raise SandboxValidationError(
+                         'SYMBOLS_FILE can only be used with a SHARED_LIBRARY.',
+                         context)
+-                if context.get('DEFFILE') or context.get('LD_VERSION_SCRIPT'):
++                if context.get('DEFFILE'):
+                     raise SandboxValidationError(
+-                        'SYMBOLS_FILE cannot be used along DEFFILE or '
+-                        'LD_VERSION_SCRIPT.', context)
++                        'SYMBOLS_FILE cannot be used along DEFFILE.',
++                        context)
+                 if isinstance(symbols_file, SourcePath):
+                     if not os.path.exists(symbols_file.full_path):
+                         raise SandboxValidationError(
+                             'Path specified in SYMBOLS_FILE does not exist: %s '
+                             '(resolved to %s)' % (symbols_file,
+                             symbols_file.full_path), context)
+                     shared_args['symbols_file'] = True
+                 else:
+@@ -970,17 +970,16 @@ class TreeMetadataEmitter(LoggingMixin):
+         passthru = VariablePassthru(context)
+         varlist = [
+             'EXTRA_DSO_LDOPTS',
+             'RCFILE',
+             'RESFILE',
+             'RCINCLUDE',
+             'DEFFILE',
+             'WIN32_EXE_LDFLAGS',
+-            'LD_VERSION_SCRIPT',
+             'USE_EXTENSION_MANIFEST',
+             'NO_JS_MANIFEST',
+             'HAS_MISC_RULE',
+         ]
+         for v in varlist:
+             if v in context and context[v]:
+                 passthru.variables[v] = context[v]
+ 

+ 65 - 0
bug1240930-253/frg-mozilla/1430886-59a1.patch

@@ -0,0 +1,65 @@
+# HG changeset patch
+# User Ralph Giles <giles@mozilla.com>
+# Date 1516206771 28800
+# Node ID 261725e65af9b5d98ff593db3db08632bf019454
+# Parent  3f10158e6cc158091c8c89a35bce079c235009ed
+Bug 1430886 - Disable incremental rust in automation. r=froydnj
+
+Work around excessive command-line length issues by
+disabling incremental rust compilation, which is enabled
+by default outside `cargo --release` starting with Rust 1.24.
+
+Incremental rust builds shouldn't help much in automation,
+where sccache provides the only continuity between build
+environments. In the meantime, they add a lot of object
+files to the link line.
+
+See https://github.com/rust-lang/rust/pull/47507 about addressing
+the underlying issue upstream.
+
+MozReview-Commit-ID: LRwUj3fhiaO
+
+diff --git a/config/rules.mk b/config/rules.mk
+--- a/config/rules.mk
++++ b/config/rules.mk
+@@ -861,16 +861,22 @@ cargo_rustc_flags += -Clto
+ # Versions of rust >= 1.45 need -Cembed-bitcode=yes for all crates when
+ # using -Clto.
+ ifeq (,$(filter 1.37.% 1.38.% 1.39.% 1.40.% 1.41.% 1.42.% 1.43.% 1.44.%,$(RUSTC_VERSION)))
+ RUSTFLAGS += -Cembed-bitcode=yes
+ endif
+ endif
+ endif
+ 
++# Disable incremental Rust compilation in automation builds, where
++# the lack of environmental continuity makes it unhelpful.
++ifdef MOZ_AUTOMATION
++cargo_incremental := CARGO_INCREMENTAL=0
++endif
++
+ rustflags_override = RUSTFLAGS='$(MOZ_RUST_DEFAULT_FLAGS) $(RUSTFLAGS)'
+ 
+ ifdef MOZ_MSVCBITS
+ # If we are building a MozillaBuild shell, we want to clear out the
+ # vcvars.bat environment variables for cargo builds. This is because
+ # a 32-bit MozillaBuild shell on a 64-bit machine will try to use
+ # the 32-bit compiler/linker for everything, while cargo/rustc wants
+ # to use the 64-bit linker for build.rs scripts. This conflict results
+@@ -897,16 +903,17 @@ define RUN_CARGO
+ 	RUSTC=$(RUSTC) \
+ 	MOZ_SRC=$(topsrcdir) \
+ 	MOZ_DIST=$(ABS_DIST) \
+ 	LIBCLANG_PATH="$(MOZ_LIBCLANG_PATH)" \
+ 	CLANG_PATH="$(MOZ_CLANG_PATH)" \
+ 	PKG_CONFIG_ALLOW_CROSS=1 \
+ 	RUST_BACKTRACE=full \
+ 	MOZ_TOPOBJDIR=$(topobjdir) \
++	$(cargo_incremental) \
+ 	$(2) \
+ 	$(CARGO) $(1) $(cargo_build_flags)
+ endef
+ 
+ # This function is intended to be called by:
+ #
+ #   $(call CARGO_BUILD,EXTRA_ENV_VAR1=X EXTRA_ENV_VAR2=Y ...)
+ #

+ 16 - 0
bug1240930-253/frg-mozilla/series-pre

@@ -0,0 +1,16 @@
+# After WIP-9999999-nsrefreshdriveroptimize.patch
+
+1388423-57a1.patch
+1373878-1-58a1.patch
+1373878-2no345-58a1.patch
+1414064-1-58a1.patch
+1414064-2-58a1.patch
+1414064-3-58a1.patch
+1414064-4-58a1.patch
+1414064-5-58a1.patch
+1414064-6-58a1.patch
+1360650-1only-59a1.patch
+1430886-59a1.patch
+
+
+# 1443204-1only-60a1.patch