From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8648 invoked by alias); 4 Nov 2009 11:57:11 -0000 Received: (qmail 8549 invoked by uid 48); 4 Nov 2009 11:57:00 -0000 Date: Wed, 04 Nov 2009 11:57:00 -0000 Message-ID: <20091104115700.8547.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug ada/41929] 64-bit null_pointer_deref1 gnat.dg test consumes all available memory In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "ebotcazou at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2009-11/txt/msg00291.txt.bz2 ------- Comment #5 from ebotcazou at gcc dot gnu dot org 2009-11-04 11:57 ------- > Running target unix//-m32 > FAIL: gnat.dg/null_pointer_deref1.adb execution test > > the 64bit variant passes. > > the log just states > > raised STORAGE_ERROR : stack overflow (or erroneous memory access) OK, thanks for the clarification. Which kernel do you run? Does the following patch help? Index: config/i386/linux-unwind.h =================================================================== --- config/i386/linux-unwind.h (revision 153778) +++ config/i386/linux-unwind.h (working copy) @@ -172,6 +172,25 @@ x86_fallback_frame_state (struct _Unwind fs->signal_frame = 1; return _URC_NO_REASON; } + +#define MD_FROB_UPDATE_CONTEXT x86_frob_update_context + +/* Fix up for kernels that have vDSO, but don't have S flag in it. */ + +static void +x86_frob_update_context (struct _Unwind_Context *context, + _Unwind_FrameState *fs ATTRIBUTE_UNUSED) +{ + unsigned char *pc = context->ra; + + /* movl $__NR_rt_sigreturn,%eax ; {int $0x80 | syscall} */ + if (*(unsigned char *)(pc+0) == 0xb8 + && *(unsigned int *)(pc+1) == 173 + && (*(unsigned short *)(pc+5) == 0x80cd + || *(unsigned short *)(pc+5) == 0x050f)) + _Unwind_SetSignalFrame (context, 1); +} + #endif /* not glibc 2.0 */ #endif /* ifdef __x86_64__ */ #endif /* ifdef inhibit_libc */ -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41929