--- firefox-66.0.1/mfbt/LinuxSignal.h.1238661 2019-03-28 00:43:19.745113200 +0000 +++ firefox-66.0.1/mfbt/LinuxSignal.h 2019-03-28 00:45:05.824570914 +0000 @@ -7,32 +7,8 @@ namespace mozilla { -#if defined(__arm__) - -// 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. - -template <void (*H)(int, siginfo_t*, void*)> -__attribute__((naked)) void SignalTrampoline(int aSignal, siginfo_t* aInfo, - void* aContext) { - asm volatile("nop; nop; nop; nop" : : : "memory"); - - asm volatile("b %0" : : "X"(H) : "memory"); -} - -# define MOZ_SIGNAL_TRAMPOLINE(h) (mozilla::SignalTrampoline<h>) - -#else // __arm__ - # define MOZ_SIGNAL_TRAMPOLINE(h) (h) -#endif // __arm__ - } // namespace mozilla #endif // mozilla_LinuxSignal_h