From 1f57cc595706697bb007177fe418e1766f32597c Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Fri, 28 May 2021 06:59:51 +0200 Subject: 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. --- Userland/DevTools/UserspaceEmulator/Emulator.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Userland/DevTools') diff --git a/Userland/DevTools/UserspaceEmulator/Emulator.cpp b/Userland/DevTools/UserspaceEmulator/Emulator.cpp index 4933574167..282f5cbc0b 100644 --- a/Userland/DevTools/UserspaceEmulator/Emulator.cpp +++ b/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 -- cgit v1.2.3