<pre style='margin:0'>
Ken (kencu) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/50cdf084768436a421e2c6d05e995d122bc93bca">https://github.com/macports/macports-ports/commit/50cdf084768436a421e2c6d05e995d122bc93bca</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 50cdf084768 mozjs60: Support for 10.4, 10.5, and PowerPC (#12186)
</span>50cdf084768 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 50cdf084768436a421e2c6d05e995d122bc93bca
</span>Author: Evan Miller <emmiller@gmail.com>
AuthorDate: Mon Sep 13 15:28:14 2021 -0400

<span style='display:block; white-space:pre;color:#404040;'>    mozjs60: Support for 10.4, 10.5, and PowerPC (#12186)
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/62350
</span><span style='display:block; white-space:pre;color:#404040;'>    See: https://trac.macports.org/ticket/57032
</span>---
 lang/mozjs60/Portfile                              | 57 ++++++++++++-
 lang/mozjs60/files/patch-config-powerpc.diff       | 19 +++++
 lang/mozjs60/files/patch-js-shell.diff             | 15 ++++
 lang/mozjs60/files/patch-libatomic.diff            | 12 +++
 .../files/patch-malloc_default_purgeable_zone.diff | 19 +++++
 lang/mozjs60/files/patch-no-libc++.diff            | 49 +++++++++++
 lang/mozjs60/files/patch-powerpc.diff              | 95 ++++++++++++++++++++++
 lang/mozjs60/files/patch-pthread_setname_np.diff   | 20 +++++
 8 files changed, 285 insertions(+), 1 deletion(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/mozjs60/Portfile b/lang/mozjs60/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 00f41f72eff..65b31691a2f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/mozjs60/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/mozjs60/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -107,11 +107,66 @@ if {${universal_possible} && [variant_isset universal]} {
</span>         configure.args-append \
             --host=i686-apple-${os.platform}${os.major} \
             --target=i686-apple-${os.platform}${os.major}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    } elseif {${build_arch} eq "x86_64"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } elseif {${build_arch} in "x86_64 ppc ppc64"} {
</span>         configure.args-append \
             --host=${build_arch}-apple-${os.platform}${os.major} \
             --target=${build_arch}-apple-${os.platform}${os.major}
     }
 }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Now for 10.4/10.5...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if { ${os.platform} eq "darwin" && ${os.major} < 10 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-malloc_default_purgeable_zone.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-no-libc++.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-js-shell.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-libatomic.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-powerpc.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-pthread_setname_np.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    post-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Some of the patches disrupt the configure timestamp chain
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        touch ${worksrcpath}/js/src/configure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        touch ${worksrcpath}/js/src/obj/config.status
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if { ${os.major} == 8 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Tiger ships with Make 3.80; need 3.81 or later
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_build-append port:gmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        build.cmd            gmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.cppflags-append -D__DARWIN_UNIX03
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # the old gas assembler doesn't like the included ICU files.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Also there's a run-time failure in u_init(), so just
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # disable ICU until someone wants to sort it out.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append     --without-intl-api
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[string match *gcc* ${configure.compiler}] && ${os.arch} eq "powerpc" } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Make structs size-compatible with Intel (fixes several static_asserts)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.cxxflags-append -mone-byte-bool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # The C API is littered with bools and references to bools, so we need to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # make sure clients (including gjs and policykit) also use the magic flag.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # We do this via pkg-config and js-config; note that with this approach
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # there is some danger that distinct compilation units within the same
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # project may end up with different bool sizes (for example, if a project's
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Makefile only applies the result of `pkg-config --cflags` to source files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # that actually consume <jsapi.h>), so some care is needed when compiling
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # against this library. The benefit of this approach is that projects using
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # pkg-config don't need to remember this flag, and well-designed projects
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # can "contain" one-byte bools and not have to expose them downstream.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        patchfiles-append patch-config-powerpc.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        notes-append "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        In order to run on PowerPC, ${name} has been compiled with the special
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        compiler flag, -mone-byte-bool. Most users are unaffected; however, if you
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        are a software developer compiling against the SpiderMonkey C API (jsapi.h),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        you will need to add this compiler flag to your own projects, or prepare to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        encounter unexpected program behavior. The flag will be added automatically
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        to projects that use pkg-config or js-config."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> livecheck.type      none
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/mozjs60/files/patch-config-powerpc.diff b/lang/mozjs60/files/patch-config-powerpc.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..7d41f469ea3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/mozjs60/files/patch-config-powerpc.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,19 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- js/src/build/js.pc.in.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/build/js.pc.in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -8,4 +8,4 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Version: @MOZILLA_VERSION@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @PKGCONF_REQUIRES_PRIVATE@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Libs: -L${libdir} -l@JS_LIBRARY_NAME@ -lmozglue
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-Cflags: -include ${includedir}/@JS_LIBRARY_NAME@/js/RequiredDefines.h -I${includedir}/@JS_LIBRARY_NAME@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Cflags: -mone-byte-bool -include ${includedir}/@JS_LIBRARY_NAME@/js/RequiredDefines.h -I${includedir}/@JS_LIBRARY_NAME@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- js/src/build/js-config.in.orig  
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/build/js-config.in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -108,7 +108,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if test "$echo_cflags" = "yes"; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    echo "-std=gnu++11 -include $includedir/$JS_LIBRARY_NAME/js/RequiredDefines.h -I$includedir/$JS_LIBRARY_NAME $NSPR_CFLAGS"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    echo "-mone-byte-bool -std=gnu++11 -include $includedir/$JS_LIBRARY_NAME/js/RequiredDefines.h -I$includedir/$JS_LIBRARY_NAME $NSPR_CFLAGS"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if test "$echo_libs" = "yes"; then
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/mozjs60/files/patch-js-shell.diff b/lang/mozjs60/files/patch-js-shell.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..b5169508e14
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/mozjs60/files/patch-js-shell.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,15 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Actually print something useful if the JS engine can't be started for some
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+reason.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- js/src/shell/js.cpp.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/shell/js.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -8185,7 +8185,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   SetOutputFile("JS_STDERR", &rcStderr, &gErrFile);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // Start the engine.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (!JS_Init()) return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  const char *message = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if ((message = JS_InitWithFailureDiagnostic())) { fprintf(stderr, "%s\n", message); return 1; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   auto shutdownEngine = MakeScopeExit([]() { JS_ShutDown(); });
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/mozjs60/files/patch-libatomic.diff b/lang/mozjs60/files/patch-libatomic.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..5048595acb9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/mozjs60/files/patch-libatomic.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- js/src/build/moz.build.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/build/moz.build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -47,6 +47,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     'zlib',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++if CONFIG['MOZ_NEEDS_LIBATOMIC']:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    OS_LIBS += ['atomic']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if CONFIG['OS_ARCH'] not in ('WINNT', 'HP-UX'):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     OS_LIBS += [
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         'm',
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/mozjs60/files/patch-malloc_default_purgeable_zone.diff b/lang/mozjs60/files/patch-malloc_default_purgeable_zone.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..1891fd40e0f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/mozjs60/files/patch-malloc_default_purgeable_zone.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,19 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- memory/build/zone.c.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ memory/build/zone.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -340,7 +340,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // malloc_default_purgeable_zone is called beforehand so that the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // default purgeable zone is created when the default zone is still
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // a scalable_zone.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  malloc_zone_t* purgeable_zone = malloc_default_purgeable_zone();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // There is a problem related to the above with the system nano zone, which
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // is hard to work around from here, and that is instead worked around by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -370,8 +369,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // On OSX >= 10.6, unregistering replaces the purgeable zone with the last
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // registered zone above, i.e the default zone. Registering it again then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // puts it at the end, obviously after the default zone.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    malloc_zone_unregister(purgeable_zone);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    malloc_zone_register(purgeable_zone);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     default_zone = get_default_zone();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   } while (default_zone != &zone);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/mozjs60/files/patch-no-libc++.diff b/lang/mozjs60/files/patch-no-libc++.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..140fbfebae3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/mozjs60/files/patch-no-libc++.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,49 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- build/build-clang/build-clang.py.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ build/build-clang/build-clang.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -503,9 +503,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if is_darwin():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         extra_cflags = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        extra_cxxflags = ["-stdlib=libc++"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        extra_cxxflags = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         extra_cflags2 = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        extra_cxxflags2 = ["-stdlib=libc++"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        extra_cxxflags2 = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         extra_asmflags = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         extra_ldflags = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     elif is_linux():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- build/clang-plugin/moz.build.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ build/clang-plugin/moz.build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -62,8 +62,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # libc++ is required to build plugins against clang on OS X.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if CONFIG['HOST_OS_ARCH'] == 'Darwin':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    CXXFLAGS += ['-stdlib=libc++']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    LDFLAGS += ['-lc++']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    CXXFLAGS += []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    LDFLAGS += []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DIRS += [
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     'tests',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- js/src/old-configure.in.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/old-configure.in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -565,7 +565,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *-darwin*)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     MOZ_OPTIMIZE_FLAGS="-O3 -fno-stack-protector"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     CFLAGS="$CFLAGS -fno-common"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    CXXFLAGS="$CXXFLAGS -fno-common -stdlib=libc++"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    CXXFLAGS="$CXXFLAGS -fno-common"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     DSO_LDOPTS=''
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     STRIP="$STRIP -x -S"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     LDFLAGS="$LDFLAGS -lobjc"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- js/src/old-configure.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/old-configure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -4939,7 +4939,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *-darwin*)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     MOZ_OPTIMIZE_FLAGS="-O3 -fno-stack-protector"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     CFLAGS="$CFLAGS -fno-common"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    CXXFLAGS="$CXXFLAGS -fno-common -stdlib=libc++"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    CXXFLAGS="$CXXFLAGS -fno-common"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     DSO_LDOPTS=''
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     STRIP="$STRIP -x -S"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     LDFLAGS="$LDFLAGS -lobjc"
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/mozjs60/files/patch-powerpc.diff b/lang/mozjs60/files/patch-powerpc.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..d0e45127467
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/mozjs60/files/patch-powerpc.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,95 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Fall back to the generic UNIX signal and exception handlers on PowerPC.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Also fix PPC platform detection.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- js/src/ds/MemoryProtectionExceptionHandler.cpp.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/ds/MemoryProtectionExceptionHandler.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -11,7 +11,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(XP_WIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "util/Windows.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(XP_UNIX) && !defined(XP_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(XP_UNIX) && (defined(__POWERPC__) || !defined(XP_DARWIN))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <signal.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -204,7 +204,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(XP_UNIX) && !defined(XP_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(XP_UNIX) && (defined(__POWERPC__) || !defined(XP_DARWIN))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static struct sigaction sPrevSEGVHandler = {};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- js/src/vm/JSContext.h.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/vm/JSContext.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -586,7 +586,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   void disableProfilerSampling() { suppressProfilerSampling = true; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   void enableProfilerSampling() { suppressProfilerSampling = false; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(XP_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(XP_DARWIN) && !defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   js::wasm::MachExceptionHandler wasmMachExceptionHandler;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- js/src/wasm/WasmSignalHandlers.cpp.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/wasm/WasmSignalHandlers.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -400,7 +400,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // the same as CONTEXT, but on Mac we use a different structure since we call
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // into the emulator code from a Mach exception handler rather than a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // sigaction-style signal handler.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(XP_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(XP_DARWIN) && !defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(__x86_64__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct macos_x64_context {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   x86_thread_state64_t thread;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -488,7 +488,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif  // KNOWS_MACHINE_STATE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(XP_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(XP_DARWIN) && !defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static uint8_t** ContextToPC(EMULATOR_CONTEXT* context) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(__x86_64__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1160,7 +1160,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return EXCEPTION_CONTINUE_SEARCH;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(XP_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(XP_DARWIN) && !defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <mach/exc.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // This definition was generated by mig (the Mach Interface Generator) for the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1717,7 +1717,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (!AddVectoredExceptionHandler(firstHandler, WasmFaultHandler))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(XP_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(XP_DARWIN) && !defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // OSX handles seg faults via the Mach exception handler above, so don't
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // install WasmFaultHandler.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1761,7 +1761,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // Nothing to do if the platform doesn't support it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (!ProcessHasSignalHandlers()) return true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(XP_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(XP_DARWIN) && !defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // On OSX, each JSContext which runs wasm gets its own handler thread.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (!cx->wasmMachExceptionHandler.installed() &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       !cx->wasmMachExceptionHandler.install(cx))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- python/mozbuild/mozbuild/configure/constants.py.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ python/mozbuild/mozbuild/configure/constants.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -80,8 +80,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ('ia64', '__ia64__'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ('s390x', '__s390x__'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ('s390', '__s390__'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    ('ppc64', '__powerpc64__'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    ('ppc', '__powerpc__'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ('ppc64', '__powerpc64__ || __POWERPC64__'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ('ppc', '__powerpc__ || __POWERPC__'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ('Alpha', '__alpha__'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ('hppa', '__hppa__'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ('sparc64', '__sparc__ && __arch64__'),
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/mozjs60/files/patch-pthread_setname_np.diff b/lang/mozjs60/files/patch-pthread_setname_np.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..32f770fa879
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/mozjs60/files/patch-pthread_setname_np.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Fix the build on 10.4/10.5. The configure script already checks for
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+pthread_getname_np, so just use the result of that to decide whether
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+pthread_setname_np is available. (Patching the configure script itself
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+introduces timestamp and patch-maintenance headaches.)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- js/src/threading/posix/Thread.cpp.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ js/src/threading/posix/Thread.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -152,9 +152,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   name = nameBuf;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  int rv;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  int rv = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef XP_DARWIN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_PTHREAD_GETNAME_NP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   rv = pthread_setname_np(name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__OpenBSD__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   pthread_set_name_np(pthread_self(), name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   rv = 0;
</span></pre><pre style='margin:0'>

</pre>