Source: mozjs52
Severity: normal
Tags: patch
User: debian-i...@lists.debian.org
Usertags: ia64

Dear Maintainer,

Attached please find patches to let mozjs52 build on ia64, and (mostly) pass 
the test suite.
ia64 currently requires -G0 for linking, but crashes if the current 
*MAINT_APPEND strings are
used.  Also, the memory allocation fails because the address space randomizer 
does not
take into account ia64 memory allocation.


-- System Information:
Debian Release: buster/sid
  APT prefers unreleased
  APT policy: (500, 'unreleased'), (500, 'unstable')
Architecture: ia64

Kernel: Linux 3.14-0.bpo.2-mckinley (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
--- debian/test.sh.orig 2018-04-29 08:55:47.958055376 -0400
+++ debian/test.sh      2018-04-29 08:59:29.181143034 -0400
@@ -28,6 +28,9 @@
                (s390x|ppc64)
                        echo "Ignoring test failure, 
https://bugs.debian.org/878286";
                        ;;
+               (ia64)
+                       echo "Ignoring test failure, 
https://bugs.debian.org/897117";
+                       ;;
                (*)
                        echo "Test failure is considered serious, causing FTBFS"
                        exit 1
--- debian/rules.orig   2018-04-29 09:00:41.632848488 -0400
+++ debian/rules        2018-04-29 09:02:53.504307305 -0400
@@ -17,8 +17,15 @@
 SRCDIR = $(CURDIR)/js/src
 CONFIGURE_FLAGS =
 
-DEB_CFLAGS_MAINT_APPEND += -fno-schedule-insns2 -fno-lifetime-dse 
-fno-delete-null-pointer-checks
-DEB_CXXFLAGS_MAINT_APPEND += -fno-schedule-insns2 -fno-lifetime-dse 
-fno-delete-null-pointer-checks
+# ia64 currently has toolchain issues, so relax the link optimization
+# -fno-schedule-insns2 breaks gcc on ia64, so leave it enabled
+ifneq (,$(findstring $(DEB_BUILD_ARCH),ia64))
+       DEB_CFLAGS_MAINT_APPEND += -G0
+       DEB_CXXFLAGS_MAINT_APPEND += -G0
+else
+       DEB_CFLAGS_MAINT_APPEND += -fno-schedule-insns2 -fno-lifetime-dse 
-fno-delete-null-pointer-checks
+       DEB_CXXFLAGS_MAINT_APPEND += -fno-schedule-insns2 -fno-lifetime-dse 
-fno-delete-null-pointer-checks
+endif
 ifneq (,$(findstring $(DEB_BUILD_ARCH),armel armhf))
         DEB_CFLAGS_MAINT_APPEND += -fno-schedule-insns
         DEB_CXXFLAGS_MAINT_APPEND += -fno-schedule-insns
--- mozjs52-52.3.1/js/src/jit/ProcessExecutableMemory.cpp       2017-08-08 
06:25:50.000000000 -0400
+++ mozjs52.fixed/js/src/jit/ProcessExecutableMemory.cpp        2018-04-27 
09:30:47.390494330 -0400
@@ -290,8 +290,13 @@
     void* randomAddr = ComputeRandomAllocationAddress();
     void* p = MozTaggedAnonymousMmap(randomAddr, bytes, PROT_NONE, MAP_PRIVATE 
| MAP_ANON,
                                      -1, 0, "js-executable-memory");
-    if (p == MAP_FAILED)
-        return nullptr;
+    if (p == MAP_FAILED) {
+        // the comment above appears to be incorrect, so retry without the hint
+        p = MozTaggedAnonymousMmap(NULL, bytes, PROT_NONE, MAP_PRIVATE | 
MAP_ANON,
+                                     -1, 0, "js-executable-memory");
+        if (p == MAP_FAILED) 
+            return nullptr;
+    }
     return p;
 }
 

Reply via email to