From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26689 invoked by alias); 14 Aug 2007 15:21:16 -0000 Received: (qmail 26655 invoked by uid 22791); 14 Aug 2007 15:21:15 -0000 X-Spam-Check-By: sourceware.org Received: from mx2.redhat.com (HELO mx2.redhat.com) (66.187.237.31) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 14 Aug 2007 15:21:11 +0000 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.1/8.13.1) with ESMTP id l7EFL9F2000359; Tue, 14 Aug 2007 11:21:09 -0400 Received: from zebedee.littlepinkcloud.COM (vpn-14-12.rdu.redhat.com [10.11.14.12]) by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id l7EFL0iK008114; Tue, 14 Aug 2007 11:21:02 -0400 Received: from littlepinkcloud.COM (localhost.localdomain [127.0.0.1]) by zebedee.littlepinkcloud.COM (8.13.8/8.13.5) with ESMTP id l7EFKujE013166; Tue, 14 Aug 2007 16:20:57 +0100 Received: (from aph@localhost) by littlepinkcloud.COM (8.13.8/8.13.5/Submit) id l7EFKu8p013163; Tue, 14 Aug 2007 16:20:56 +0100 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <18113.51288.453496.393673@zebedee.pink> Date: Tue, 14 Aug 2007 15:21:00 -0000 From: Andrew Haley To: java-patches@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: gcj for ARM EABI: Use __cxa_end_cleanup X-Mailer: VM 7.19 under Emacs 22.0.93.1 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2007-08/txt/msg00876.txt.bz2 We need to call "__cxa_end_cleanup" when resuming after a cleanup. This may seem odd, given that this is part of libstdc++ rather than the language independent unwinder, but the personality routines call __cxa_begin_cleanup, and these functions must be used in pairs. Andrew. Index: gcc/java/decl.c2007-08-14 Andrew Haley * decl.c (java_init_decl_processing): Call "__cxa_end_cleanup" when using the ARM EABI. =================================================================== --- gcc/java/decl.c (revision 126985) +++ gcc/java/decl.c (working copy) @@ -1077,7 +1077,10 @@ eh_personality_libfunc = init_one_libfunc (USING_SJLJ_EXCEPTIONS ? "__gcj_personality_sj0" : "__gcj_personality_v0"); - default_init_unwind_resume_libfunc (); + if (targetm.arm_eabi_unwinder) + unwind_resume_libfunc = init_one_libfunc ("__cxa_end_cleanup"); + else + default_init_unwind_resume_libfunc (); lang_eh_runtime_type = do_nothing;