Browse Source

UE: Make sure signal_trampoline_dummy is not optimized away with -flto

This adds __attribute__((used)) to the function declaration so the
compiler doesn't discard it. It also makes the function NEVER_INLINE
so that we don't end up with multiple copies of the function. This
is necessary because the function uses inline assembly to define some
unique labels.
Gunnar Beutner 4 years ago
parent
commit
1f57cc5957
1 changed files with 2 additions and 2 deletions
  1. 2 2
      Userland/DevTools/UserspaceEmulator/Emulator.cpp

+ 2 - 2
Userland/DevTools/UserspaceEmulator/Emulator.cpp

@@ -445,8 +445,8 @@ void Emulator::dispatch_one_pending_signal()
 }
 
 // Make sure the compiler doesn't "optimize away" this function:
-extern void signal_trampoline_dummy();
-void signal_trampoline_dummy()
+static void signal_trampoline_dummy() __attribute__((used));
+NEVER_INLINE void signal_trampoline_dummy()
 {
     // The trampoline preserves the current eax, pushes the signal code and
     // then calls the signal handler. We do this because, when interrupting a