diff --git a/sdk_container/src/third_party/coreos-overlay/dev-lang/spidermonkey/files/spidermonkey-1.8.5-fix-arm64-va-48.patch b/sdk_container/src/third_party/coreos-overlay/dev-lang/spidermonkey/files/spidermonkey-1.8.5-fix-arm64-va-48.patch new file mode 100644 index 0000000000..6248f3ac52 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/dev-lang/spidermonkey/files/spidermonkey-1.8.5-fix-arm64-va-48.patch @@ -0,0 +1,21 @@ + +Fix for CONFIG_ARM64_VA_BITS_48=y +https://bugzilla.redhat.com/show_bug.cgi?id=1242326 + +--- a/js/src/jsval.h.old ++++ b/js/src/jsval.h +@@ -236,8 +236,14 @@ + + #elif JS_BITS_PER_WORD == 64 + ++#if defined(__aarch64__) ++#define JSVAL_PAYLOAD_MASK 0x0000FFFFFFFFFFFFLL ++#define JSVAL_TAG_MASK 0xFFFF000000000000LL ++#else + #define JSVAL_PAYLOAD_MASK 0x00007FFFFFFFFFFFLL + #define JSVAL_TAG_MASK 0xFFFF800000000000LL ++#endif ++ + #define JSVAL_TYPE_TO_TAG(type) ((JSValueTag)(JSVAL_TAG_MAX_DOUBLE | (type))) + #define JSVAL_TYPE_TO_SHIFTED_TAG(type) (((uint64)JSVAL_TYPE_TO_TAG(type)) << JSVAL_TAG_SHIFT) + diff --git a/sdk_container/src/third_party/coreos-overlay/dev-lang/spidermonkey/files/spidermonkey-1.8.5-really-fix-arm64-va-48.patch b/sdk_container/src/third_party/coreos-overlay/dev-lang/spidermonkey/files/spidermonkey-1.8.5-really-fix-arm64-va-48.patch deleted file mode 100644 index 5733ddf046..0000000000 --- a/sdk_container/src/third_party/coreos-overlay/dev-lang/spidermonkey/files/spidermonkey-1.8.5-really-fix-arm64-va-48.patch +++ /dev/null @@ -1,120 +0,0 @@ -diff -urN js.orig/src/jsval.h js/src/jsval.h ---- js.orig/src/jsval.h 2016-04-08 08:44:39.417713832 +0000 -+++ js/src/jsval.h 2016-04-11 06:26:40.807919594 +0000 -@@ -66,7 +66,7 @@ - #endif - - #if JS_BITS_PER_WORD == 64 --# define JSVAL_TAG_SHIFT 47 -+# define JSVAL_TAG_SHIFT 48 - #endif - - /* -@@ -135,7 +135,8 @@ - /* Remember to propagate changes to the C defines below. */ - JS_ENUM_HEADER(JSValueTag, uint32) - { -- JSVAL_TAG_MAX_DOUBLE = 0x1FFF0, -+ JSVAL_TAG_DUMMY = 0xFFFFFFFF, /* Make sure the enums cannot fit 16-bits. */ -+ JSVAL_TAG_MAX_DOUBLE = 0xFFF8, - JSVAL_TAG_INT32 = JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_INT32, - JSVAL_TAG_UNDEFINED = JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_UNDEFINED, - JSVAL_TAG_STRING = JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_STRING, -@@ -196,7 +197,7 @@ - #elif JS_BITS_PER_WORD == 64 - - typedef uint32 JSValueTag; --#define JSVAL_TAG_MAX_DOUBLE ((uint32)(0x1FFF0)) -+#define JSVAL_TAG_MAX_DOUBLE ((uint32)(0xFFF8)) - #define JSVAL_TAG_INT32 (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_INT32) - #define JSVAL_TAG_UNDEFINED (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_UNDEFINED) - #define JSVAL_TAG_STRING (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_STRING) -@@ -236,8 +237,8 @@ - - #elif JS_BITS_PER_WORD == 64 - --#define JSVAL_PAYLOAD_MASK 0x00007FFFFFFFFFFFLL --#define JSVAL_TAG_MASK 0xFFFF800000000000LL -+#define JSVAL_PAYLOAD_MASK 0x0000FFFFFFFFFFFFLL -+#define JSVAL_TAG_MASK 0xFFFF000000000000LL - #define JSVAL_TYPE_TO_TAG(type) ((JSValueTag)(JSVAL_TAG_MAX_DOUBLE | (type))) - #define JSVAL_TYPE_TO_SHIFTED_TAG(type) (((uint64)JSVAL_TYPE_TO_TAG(type)) << JSVAL_TAG_SHIFT) - -@@ -297,8 +298,8 @@ - #if (!defined(_WIN64) && defined(__cplusplus)) - /* MSVC does not pack these correctly :-( */ - struct { -- uint64 payload47 : 47; -- JSValueTag tag : 17; -+ uint64 payload48 : 48; -+ JSValueTag tag : 16; - } debugView; - #endif - struct { -@@ -339,8 +340,8 @@ - { - uint64 asBits; - struct { -- JSValueTag tag : 17; -- uint64 payload47 : 47; -+ JSValueTag tag : 16; -+ uint64 payload48 : 48; - } debugView; - struct { - union { -diff -urN js.orig/src/jsvalue.h js/src/jsvalue.h ---- js.orig/src/jsvalue.h 2016-04-08 08:44:39.417713832 +0000 -+++ js/src/jsvalue.h 2016-04-11 06:10:21.219479884 +0000 -@@ -255,7 +255,7 @@ - { - uint64 lbits = lhs.asBits, rbits = rhs.asBits; - return (lbits <= JSVAL_TAG_MAX_DOUBLE && rbits <= JSVAL_TAG_MAX_DOUBLE) || -- (((lbits ^ rbits) & 0xFFFF800000000000LL) == 0); -+ (((lbits ^ rbits) & 0xFFFF000000000000LL) == 0); - } - - static JS_ALWAYS_INLINE jsval_layout -@@ -277,7 +277,7 @@ - static JS_ALWAYS_INLINE JSValueType - JSVAL_EXTRACT_NON_DOUBLE_TYPE_IMPL(jsval_layout l) - { -- uint64 type = (l.asBits >> JSVAL_TAG_SHIFT) & 0xF; -+ uint64 type = (l.asBits >> JSVAL_TAG_SHIFT) & 0x7; - JS_ASSERT(type > JSVAL_TYPE_DOUBLE); - return (JSValueType)type; - } ---- js.orig/src/methodjit/MethodJIT.cpp 2016-10-12 13:08:07.307916254 -0400 -+++ js/src/methodjit/MethodJIT.cpp 2016-10-12 13:08:59.647918787 -0400 -@@ -186,8 +186,8 @@ - JS_STATIC_ASSERT(offsetof(VMFrame, savedRBX) == 0x58); - JS_STATIC_ASSERT(offsetof(VMFrame, regs.fp) == 0x38); - --JS_STATIC_ASSERT(JSVAL_TAG_MASK == 0xFFFF800000000000LL); --JS_STATIC_ASSERT(JSVAL_PAYLOAD_MASK == 0x00007FFFFFFFFFFFLL); -+JS_STATIC_ASSERT(JSVAL_TAG_MASK == 0xFFFF000000000000LL); -+JS_STATIC_ASSERT(JSVAL_PAYLOAD_MASK == 0x0000FFFFFFFFFFFFLL); - - asm volatile ( - ".text\n" -@@ -204,8 +204,8 @@ - "pushq %rbx" "\n" - - /* Load mask registers. */ -- "movq $0xFFFF800000000000, %r13" "\n" -- "movq $0x00007FFFFFFFFFFF, %r14" "\n" -+ "movq $0xFFFF000000000000, %r13" "\n" -+ "movq $0x0000FFFFFFFFFFFF, %r14" "\n" - - /* Build the JIT frame. - * rdi = cx -@@ -675,8 +675,8 @@ - */ - JS_STATIC_ASSERT(offsetof(VMFrame, savedRBX) == 0x58); - JS_STATIC_ASSERT(offsetof(VMFrame, regs.fp) == 0x38); --JS_STATIC_ASSERT(JSVAL_TAG_MASK == 0xFFFF800000000000LL); --JS_STATIC_ASSERT(JSVAL_PAYLOAD_MASK == 0x00007FFFFFFFFFFFLL); -+JS_STATIC_ASSERT(JSVAL_TAG_MASK == 0xFFFF000000000000LL); -+JS_STATIC_ASSERT(JSVAL_PAYLOAD_MASK == 0x0000FFFFFFFFFFFFLL); - - // Windows x64 uses assembler version since compiler doesn't support - // inline assembler diff --git a/sdk_container/src/third_party/coreos-overlay/dev-lang/spidermonkey/spidermonkey-1.8.5-r5.ebuild b/sdk_container/src/third_party/coreos-overlay/dev-lang/spidermonkey/spidermonkey-1.8.5-r4.ebuild similarity index 96% rename from sdk_container/src/third_party/coreos-overlay/dev-lang/spidermonkey/spidermonkey-1.8.5-r5.ebuild rename to sdk_container/src/third_party/coreos-overlay/dev-lang/spidermonkey/spidermonkey-1.8.5-r4.ebuild index 2370267a17..e7996be117 100644 --- a/sdk_container/src/third_party/coreos-overlay/dev-lang/spidermonkey/spidermonkey-1.8.5-r5.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/dev-lang/spidermonkey/spidermonkey-1.8.5-r4.ebuild @@ -60,9 +60,10 @@ src_prepare() { epatch "${FILESDIR}"/${PN}-perl-defined-array-check.patch # fix builds for alternate $ROOT locations epatch "${FILESDIR}"/${P}-no-link-lib-deps.patch - # Better fix for CONFIG_ARM64_VA_BITS_48=y - # https://bugzilla.mozilla.org/show_bug.cgi?id=1143022 - epatch "${FILESDIR}/${P}-really-fix-arm64-va-48.patch" + # Fix for CONFIG_ARM64_VA_BITS_48=y + # https://bugzilla.redhat.com/show_bug.cgi?id=1242326 + epatch "${FILESDIR}/${P}-fix-arm64-va-48.patch" + epatch_user cd "${BUILDDIR}" || die