Bug#880692: mozjs52: Please add support for sh4

John Paul Adrian Glaubitz glaubitz at physik.fu-berlin.de
Fri Nov 3 21:35:07 UTC 2017


Source: mozjs52
Version: 52.3.1-7
Severity: normal
User: debian-superh at lists.debian.org
Usertags: sh4

Hi!

The attached patch adds support for the sh4 architecture.

The patch is based on my upstream patches which were merged in
Firefox 53 [1].

On top of that, it is necessary to build mozjs52 on sh4 with
PIE disabled as we have currently PIE disabled in gcc on sh4
due to some applications crashing with it enabled:

--- debian/rules.orig   2017-10-20 19:12:58.000000000 +0200
+++ debian/rules        2017-11-03 22:32:18.630130502 +0100
@@ -29,6 +29,12 @@
 CONFIGURE_FLAGS += --disable-ion
 endif
 
+ifeq ($(DEB_HOST_ARCH),sh4)
+CONFIGURE_FLAGS += --disable-pie
+else
+CONFIGURE_FLAGS += --enable-pie
+endif
+
 ifeq ($(DEB_HOST_ARCH_ENDIAN),little)
 ICU_DATA_FILE = icudt58l.dat
 else
@@ -75,7 +81,6 @@
                --enable-shared-js \
                --enable-gcgenerational \
                --disable-optimize \
-               --enable-pie \
                $(CONFIGURE_FLAGS)
 
 override_dh_install:

Thanks for consdideration!

Adrian

> [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1329194

--
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - glaubitz at debian.org
`. `'   Freie Universitaet Berlin - glaubitz at physik.fu-berlin.de
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913
-------------- next part --------------
Description: Add support for sh4
 Based on upstreamed patches in Firefox.
 See: https://bugzilla.mozilla.org/show_bug.cgi?id=1329194
 .
Author: John Paul Adrian Glaubitz <glaubitz at physik.fu-berlin.de>
Last-Update: 2017-11-03

--- mozjs52-52.3.1.orig/build/moz.configure/init.configure
+++ mozjs52-52.3.1/build/moz.configure/init.configure
@@ -380,6 +380,9 @@ def split_triplet(triplet):
     elif cpu.startswith('aarch64'):
         canonical_cpu = 'aarch64'
         endianness = 'little'
+    elif cpu == 'sh4':
+        canonical_cpu = 'sh4'
+        endianness = 'little'
     else:
         die('Unknown CPU type: %s' % cpu)
 
--- mozjs52-52.3.1.orig/js/src/jit/AtomicOperations.h
+++ mozjs52-52.3.1/js/src/jit/AtomicOperations.h
@@ -328,6 +328,8 @@ AtomicOperations::isLockfree(int32_t siz
 # include "jit/mips-shared/AtomicOperations-mips-shared.h"
 #elif defined(__ppc__) || defined(__PPC__)
 # include "jit/none/AtomicOperations-ppc.h"
+#elif defined(__sh__)
+# include "jit/none/AtomicOperations-ppc.h"
 #elif defined(__sparc__)
 # include "jit/none/AtomicOperations-sparc.h"
 #elif defined(JS_CODEGEN_NONE)
--- mozjs52-52.3.1.orig/mfbt/tests/TestPoisonArea.cpp
+++ mozjs52-52.3.1/mfbt/tests/TestPoisonArea.cpp
@@ -154,6 +154,9 @@
 #elif defined __s390__
 #define RETURN_INSTR 0x07fe0000 /* br %r14 */
 
+#elif defined __sh__
+#define RETURN_INSTR 0x0b000b00 /* rts; rts */
+
 #elif defined __aarch64__
 #define RETURN_INSTR 0xd65f03c0 /* ret */
 
--- mozjs52-52.3.1.orig/python/mozbuild/mozbuild/configure/constants.py
+++ mozjs52-52.3.1/python/mozbuild/mozbuild/configure/constants.py
@@ -50,6 +50,7 @@ CPU_bitness = {
     'ppc64': 64,
     's390': 32,
     's390x': 64,
+    'sh4': 32,
     'sparc': 32,
     'sparc64': 64,
     'x86': 32,
@@ -85,6 +86,7 @@ CPU_preprocessor_checks = OrderedDict((
     ('sparc', '__sparc__'),
     ('mips64', '__mips64'),
     ('mips32', '__mips__'),
+    ('sh4', '__sh__'),
 ))
 
 assert sorted(CPU_preprocessor_checks.keys()) == sorted(CPU.POSSIBLE_VALUES)
--- mozjs52-52.3.1.orig/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py
+++ mozjs52-52.3.1/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py
@@ -1037,6 +1037,9 @@ class LinuxCrossCompileToolchainTest(Bas
         'mips-unknown-linux-gnu': big_endian + {
             '__mips__': 1,
         },
+        'sh4-unknown-linux-gnu': little_endian + {
+            '__sh__': 1,
+        },
     }
 
     PLATFORMS['powerpc64le-unknown-linux-gnu'] = \


More information about the pkg-gnome-maintainers mailing list