diff -ur mozjs-60.1.0/build/moz.configure/init.configure mozjs-60.1.0-x32/build/moz.configure/init.configure --- mozjs-60.1.0/build/moz.configure/init.configure 2018-06-19 00:23:55.000000000 +0200 +++ mozjs-60.1.0-x32/build/moz.configure/init.configure 2019-03-31 10:40:40.743730317 +0200 @@ -630,6 +630,8 @@ endianness = 'little' elif cpu in ('x86_64', 'ia64'): canonical_cpu = cpu + if os.endswith('gnux32'): + canonical_cpu = 'x32' endianness = 'little' elif cpu in ('s390', 's390x'): canonical_cpu = cpu --- firefox-60.7.0/mfbt/RandomNum.cpp.orig 2019-05-24 22:04:38.196451155 +0200 +++ firefox-60.7.0/mfbt/RandomNum.cpp 2019-05-24 22:10:43.717804289 +0200 @@ -58,7 +58,9 @@ // Older glibc versions don't define SYS_getrandom, so we define it here if // it's not available. See bug 995069. -# if defined(__x86_64__) +# if defined(__x86_64__) && defined(__ILP32__) +# define GETRANDOM_NR (__X32_SYSCALL_BIT + 318) +# elif defined(__x86_64__) # define GETRANDOM_NR 318 # elif defined(__i386__) # define GETRANDOM_NR 355 diff -ur mozjs-60.1.0/python/mozbuild/mozbuild/configure/constants.py mozjs-60.1.0-x32/python/mozbuild/mozbuild/configure/constants.py --- mozjs-60.1.0/python/mozbuild/mozbuild/configure/constants.py 2018-06-19 00:24:03.000000000 +0200 +++ mozjs-60.1.0-x32/python/mozbuild/mozbuild/configure/constants.py 2019-03-31 10:39:21.792681467 +0200 @@ -57,6 +57,7 @@ 'sparc64': 64, 'x86': 32, 'x86_64': 64, + 'x32': 32, } CPU = EnumString.subclass(*CPU_bitness.keys()) @@ -73,8 +74,9 @@ # The order of those checks matter CPU_preprocessor_checks = OrderedDict(( + ('x32', '__x86_64__ && __ILP32__'), ('x86', '__i386__ || _M_IX86'), - ('x86_64', '__x86_64__ || _M_X64'), + ('x86_64', '(__x86_64__ && __LP64__) || _M_X64'), ('arm', '__arm__ || _M_ARM'), ('aarch64', '__aarch64__ || _M_ARM64'), ('ia64', '__ia64__'), --- firefox-68.7.0/js/src/vm/BigIntType.cpp~ 2020-04-03 21:29:59.000000000 +0200 +++ firefox-68.7.0/js/src/vm/BigIntType.cpp 2020-05-01 11:22:53.296439915 +0200 @@ -263,7 +263,7 @@ BigInt::Digit BigInt::digitDiv(Digit high, Digit low, Digit divisor, Digit* remainder) { MOZ_ASSERT(high < divisor, "division must not overflow"); -#if defined(__x86_64__) +#if defined(__x86_64__) && !defined(__ILP32__) Digit quotient; Digit rem; __asm__("divq %[divisor]" --- firefox-78.2.0/js/src/gc/GC.cpp.orig 2020-08-17 20:33:37.000000000 +0200 +++ firefox-78.2.0/js/src/gc/GC.cpp 2020-10-07 21:30:17.245896073 +0200 @@ -291,8 +291,10 @@ "CellFlagBitsReservedForGC should support LifoAlloc"); static_assert(CellAlignBytes >= MinFirstWordAlignment, "CellFlagBitsReservedForGC should support gc::Cell"); +#ifndef JS_CODEGEN_NONE static_assert(js::jit::CodeAlignment >= MinFirstWordAlignment, "CellFlagBitsReservedForGC should support JIT code"); +#endif static_assert(js::gc::JSClassAlignBytes >= MinFirstWordAlignment, "CellFlagBitsReservedForGC should support JSClass pointers");