diff options
Diffstat (limited to 'www-plugins/adobe-flash/files/flashplugin-lahf-fix.c')
-rw-r--r-- | www-plugins/adobe-flash/files/flashplugin-lahf-fix.c | 29 |
1 files changed, 0 insertions, 29 deletions
diff --git a/www-plugins/adobe-flash/files/flashplugin-lahf-fix.c b/www-plugins/adobe-flash/files/flashplugin-lahf-fix.c deleted file mode 100644 index 9338b7337317..000000000000 --- a/www-plugins/adobe-flash/files/flashplugin-lahf-fix.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Simple work-around for running the 64-bit Adobe Flash plug-in version 10 - on Athlon64 processors without support for the lahf instruction. - -Compile with: -cc -fPIC -shared -nostdlib -lc -oflashplugin-lahf-fix.so flashplugin-lahf-fix.c -Then place the .so file in the plug-in directory (e.g. $HOME/.mozilla/plugins) -or use LD_PRELOAD to force Firefox to load the library. - - - Maks Verver <maksverver@geocities.com> July 2009 */ - -#define _GNU_SOURCE -#include <stdlib.h> -#include <signal.h> -#include <ucontext.h> - -static void sig_handler(int signal, siginfo_t *info, void *context) { - if (signal != SIGILL) return; - if (*(char*)info->si_addr != (char)0x9f) abort(); - greg_t *regs = ((ucontext_t*)context)->uc_mcontext.gregs; - ((char*)®s[REG_RAX])[1] = ((char*)®s[REG_EFL])[0]; - regs[REG_RIP]++; -} - -static struct sigaction old_sa, new_sa = { - .sa_flags = SA_SIGINFO, - .sa_sigaction = &sig_handler }; - -int _init() { sigaction(SIGILL, &new_sa, &old_sa); return 0; } -int _fini() { sigaction(SIGILL, &old_sa, &new_sa); return 0; } |