Add the upstream fix for Mozilla bug 1278861, which prevents clang

assertions on a particular piece of arm inline assembly.  This applies
to:

* mail/thunderbird
* www/firefox
* www/firefox-esr
* www/libxul
* www/seamonkey

Approved by:	jbeich (maintainer)
PR:		203989
MFH:		2016Q4
This commit is contained in:
Dimitry Andric 2016-10-12 20:50:28 +00:00
parent f87b62d428
commit 022c0f9056
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=423893
5 changed files with 190 additions and 0 deletions

View File

@ -0,0 +1,38 @@
# HG changeset patch
# User Nathan Froyd <froydnj@gmail.com>
# Date 1466820205 14400
# Node ID bd25b06261c840a62d035192cf4b1dbc18f54e3f
# Parent fbe25a30fcbbe172bdd37c70c5b06cdbb07886af
Bug 1278861 - adjust ifdefs in Conversions.h:ToInt32 to catch clang-on-arm-generally; r=luke
The bug noted in ToInt32 doesn't just exist when compiling for
arm-darwin; it exists for ARM targets generally. The ifdef should
reflect that.
diff --git mozilla/js/public/Conversions.h mozilla/js/public/Conversions.h
--- mozilla/js/public/Conversions.h
+++ mozilla/js/public/Conversions.h
@@ -395,19 +395,19 @@ ToIntWidth(double d)
}
} // namespace detail
/* ES5 9.5 ToInt32 (specialized for doubles). */
inline int32_t
ToInt32(double d)
{
- // clang crashes compiling this when targeting arm-darwin:
+ // clang crashes compiling this when targeting arm:
// https://llvm.org/bugs/show_bug.cgi?id=22974
-#if defined (__arm__) && defined (__GNUC__) && !defined(__APPLE__)
+#if defined (__arm__) && defined (__GNUC__) && !defined(__clang__)
int32_t i;
uint32_t tmp0;
uint32_t tmp1;
uint32_t tmp2;
asm (
// We use a pure integer solution here. In the 'softfp' ABI, the argument
// will start in r0 and r1, and VFP can't do all of the necessary ECMA
// conversions by itself so some integer code will be required anyway. A

View File

@ -0,0 +1,38 @@
# HG changeset patch
# User Nathan Froyd <froydnj@gmail.com>
# Date 1466820205 14400
# Node ID bd25b06261c840a62d035192cf4b1dbc18f54e3f
# Parent fbe25a30fcbbe172bdd37c70c5b06cdbb07886af
Bug 1278861 - adjust ifdefs in Conversions.h:ToInt32 to catch clang-on-arm-generally; r=luke
The bug noted in ToInt32 doesn't just exist when compiling for
arm-darwin; it exists for ARM targets generally. The ifdef should
reflect that.
diff --git js/public/Conversions.h js/public/Conversions.h
--- js/public/Conversions.h
+++ js/public/Conversions.h
@@ -395,19 +395,19 @@ ToIntWidth(double d)
}
} // namespace detail
/* ES5 9.5 ToInt32 (specialized for doubles). */
inline int32_t
ToInt32(double d)
{
- // clang crashes compiling this when targeting arm-darwin:
+ // clang crashes compiling this when targeting arm:
// https://llvm.org/bugs/show_bug.cgi?id=22974
-#if defined (__arm__) && defined (__GNUC__) && !defined(__APPLE__)
+#if defined (__arm__) && defined (__GNUC__) && !defined(__clang__)
int32_t i;
uint32_t tmp0;
uint32_t tmp1;
uint32_t tmp2;
asm (
// We use a pure integer solution here. In the 'softfp' ABI, the argument
// will start in r0 and r1, and VFP can't do all of the necessary ECMA
// conversions by itself so some integer code will be required anyway. A

View File

@ -0,0 +1,38 @@
# HG changeset patch
# User Nathan Froyd <froydnj@gmail.com>
# Date 1466820205 14400
# Node ID bd25b06261c840a62d035192cf4b1dbc18f54e3f
# Parent fbe25a30fcbbe172bdd37c70c5b06cdbb07886af
Bug 1278861 - adjust ifdefs in Conversions.h:ToInt32 to catch clang-on-arm-generally; r=luke
The bug noted in ToInt32 doesn't just exist when compiling for
arm-darwin; it exists for ARM targets generally. The ifdef should
reflect that.
diff --git js/public/Conversions.h js/public/Conversions.h
--- js/public/Conversions.h
+++ js/public/Conversions.h
@@ -395,19 +395,19 @@ ToIntWidth(double d)
}
} // namespace detail
/* ES5 9.5 ToInt32 (specialized for doubles). */
inline int32_t
ToInt32(double d)
{
- // clang crashes compiling this when targeting arm-darwin:
+ // clang crashes compiling this when targeting arm:
// https://llvm.org/bugs/show_bug.cgi?id=22974
-#if defined (__arm__) && defined (__GNUC__) && !defined(__APPLE__)
+#if defined (__arm__) && defined (__GNUC__) && !defined(__clang__)
int32_t i;
uint32_t tmp0;
uint32_t tmp1;
uint32_t tmp2;
asm (
// We use a pure integer solution here. In the 'softfp' ABI, the argument
// will start in r0 and r1, and VFP can't do all of the necessary ECMA
// conversions by itself so some integer code will be required anyway. A

View File

@ -0,0 +1,38 @@
# HG changeset patch
# User Nathan Froyd <froydnj@gmail.com>
# Date 1466820205 14400
# Node ID bd25b06261c840a62d035192cf4b1dbc18f54e3f
# Parent fbe25a30fcbbe172bdd37c70c5b06cdbb07886af
Bug 1278861 - adjust ifdefs in Conversions.h:ToInt32 to catch clang-on-arm-generally; r=luke
The bug noted in ToInt32 doesn't just exist when compiling for
arm-darwin; it exists for ARM targets generally. The ifdef should
reflect that.
diff --git js/public/Conversions.h js/public/Conversions.h
--- js/public/Conversions.h
+++ js/public/Conversions.h
@@ -395,19 +395,19 @@ ToIntWidth(double d)
}
} // namespace detail
/* ES5 9.5 ToInt32 (specialized for doubles). */
inline int32_t
ToInt32(double d)
{
- // clang crashes compiling this when targeting arm-darwin:
+ // clang crashes compiling this when targeting arm:
// https://llvm.org/bugs/show_bug.cgi?id=22974
-#if defined (__arm__) && defined (__GNUC__) && !defined(__APPLE__)
+#if defined (__arm__) && defined (__GNUC__) && !defined(__clang__)
int32_t i;
uint32_t tmp0;
uint32_t tmp1;
uint32_t tmp2;
asm (
// We use a pure integer solution here. In the 'softfp' ABI, the argument
// will start in r0 and r1, and VFP can't do all of the necessary ECMA
// conversions by itself so some integer code will be required anyway. A

View File

@ -0,0 +1,38 @@
# HG changeset patch
# User Nathan Froyd <froydnj@gmail.com>
# Date 1466820205 14400
# Node ID bd25b06261c840a62d035192cf4b1dbc18f54e3f
# Parent fbe25a30fcbbe172bdd37c70c5b06cdbb07886af
Bug 1278861 - adjust ifdefs in Conversions.h:ToInt32 to catch clang-on-arm-generally; r=luke
The bug noted in ToInt32 doesn't just exist when compiling for
arm-darwin; it exists for ARM targets generally. The ifdef should
reflect that.
diff --git mozilla/js/public/Conversions.h mozilla/js/public/Conversions.h
--- mozilla/js/public/Conversions.h
+++ mozilla/js/public/Conversions.h
@@ -395,19 +395,19 @@ ToIntWidth(double d)
}
} // namespace detail
/* ES5 9.5 ToInt32 (specialized for doubles). */
inline int32_t
ToInt32(double d)
{
- // clang crashes compiling this when targeting arm-darwin:
+ // clang crashes compiling this when targeting arm:
// https://llvm.org/bugs/show_bug.cgi?id=22974
-#if defined (__arm__) && defined (__GNUC__) && !defined(__APPLE__)
+#if defined (__arm__) && defined (__GNUC__) && !defined(__clang__)
int32_t i;
uint32_t tmp0;
uint32_t tmp1;
uint32_t tmp2;
asm (
// We use a pure integer solution here. In the 'softfp' ABI, the argument
// will start in r0 and r1, and VFP can't do all of the necessary ECMA
// conversions by itself so some integer code will be required anyway. A