Bug 1434526 - Make MOZ_SIGNAL_TRAMPOLINE Android-only. r=gsvelto
authorMike Hommey <mh+mozilla@glandium.org>
Wed, 20 Mar 2019 09:07:16 +0000
changeset 465203 a8e6586172fdefe46349797d8aef9cc5e7147d3b
parent 465202 0c5057ecdb645afe71d8ce60a4c9d533a73bb000
child 465204 1dcd5b03a6876fd6933560f1cd8b5ee8d778c1dc
push id112496
push usershindli@mozilla.com
push dateThu, 21 Mar 2019 04:37:39 +0000
treeherdermozilla-inbound@29476d3ca61d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1434526, 1463035, 1238661
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1434526 - Make MOZ_SIGNAL_TRAMPOLINE Android-only. r=gsvelto Bug 1463035 exists to remove it entirely, because as mentioned in bug 1238661 comment 4, we don't actually need this workaround anymore. But that bug has been blocked for a while because the Android emulator images we use for testing, for some reason, use a kernel older than any real device using the same version of Android would use. Let's however fix the problems it causes with GCC on non-Android ARM Linux by making it Android-only, rather than removing it entirely. Differential Revision: https://phabricator.services.mozilla.com/D24134
--- a/mfbt/LinuxSignal.h
+++ b/mfbt/LinuxSignal.h
@@ -2,17 +2,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 #ifndef mozilla_LinuxSignal_h
 #define mozilla_LinuxSignal_h
 namespace mozilla {
-#if defined(__arm__)
+#if defined(__arm__) && defined(__ANDROID__)
 // Some (old) Linux kernels on ARM have a bug where a signal handler
 // can be called without clearing the IT bits in CPSR first. The result
 // is that the first few instructions of the handler could be skipped,
 // ultimately resulting in crashes. To workaround this bug, the handler
 // on ARM is a trampoline that starts with enough NOP instructions, so
 // that even if the IT bits are not cleared, only the NOP instructions
 // will be skipped over.