From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1CftXT-0006kg-T9 for qemu-devel@nongnu.org; Sun, 19 Dec 2004 00:23:28 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1CftXT-0006kO-9d for qemu-devel@nongnu.org; Sun, 19 Dec 2004 00:23:27 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1CftXT-0006kE-64 for qemu-devel@nongnu.org; Sun, 19 Dec 2004 00:23:27 -0500 Received: from [216.99.193.136] (helo=jade.spiritone.com) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1CftMM-0006w2-La for qemu-devel@nongnu.org; Sun, 19 Dec 2004 00:11:58 -0500 Received: from [192.168.0.2] (216-99-213-225.dsl.aracnet.com [216.99.213.225]) (authenticated bits=0) by jade.spiritone.com (8.12.8/8.12.8) with ESMTP id iBJ5Bvs5018638 for ; Sat, 18 Dec 2004 21:11:57 -0800 Message-ID: <41C50D64.7070209@BitWagon.com> Date: Sat, 18 Dec 2004 21:11:00 -0800 From: John Reiser MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] qemu on Fedora Core 3 (Linux 2.6.9+), glibc-2.3.3 Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org In order to run qemu-snapshot-2004-12-17_23.tar.bz2 on: Fedora Core 3 kernel-2.6.8-1.681_FC3 i686 gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3) glibc-2.3.3 binutils-2.15.92.0.2-5 I had to use the extra file and patch below. Otherwise I got very early SIGSEGVs. -----__restore.S [append __restore.o to VL_OBJS in i386/Makefile] #include __restore: .globl __restore pop %eax movl $ __NR_sigreturn,%eax int $0x80 __restore_rt: .globl __restore_rt movl $ __NR_rt_sigreturn,%eax int $0x80 ----- --- vl.c.orig 2004-12-12 14:20:04.000000000 -0800 +++ vl.c 2004-12-18 20:53:09.496799856 -0800 @@ -882,6 +882,9 @@ #endif /* !defined(_WIN32) */ +extern void __restore(void); +extern void __restore_rt(void); + static void init_timers(void) { rt_clock = qemu_new_clock(QEMU_TIMER_REALTIME); @@ -913,7 +916,9 @@ sigfillset(&act.sa_mask); act.sa_flags = 0; #if defined (TARGET_I386) && defined(USE_CODE_COPY) - act.sa_flags |= SA_ONSTACK; +#define SA_RESTORER 0x04000000 + act.sa_flags |= SA_ONSTACK | SA_RESTORER; + act.sa_restorer = __restore; #endif act.sa_handler = host_alarm_handler; sigaction(SIGALRM, &act, NULL); @@ -3402,7 +3407,8 @@ sigfillset(&act.sa_mask); act.sa_flags = SA_SIGINFO; #if defined (TARGET_I386) && defined(USE_CODE_COPY) - act.sa_flags |= SA_ONSTACK; + act.sa_flags |= SA_ONSTACK | SA_RESTORER; + act.sa_restorer = __restore_rt; #endif act.sa_sigaction = host_segv_handler; sigaction(SIGSEGV, &act, NULL); --