From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22779 invoked by alias); 22 May 2006 14:19:27 -0000 Received: (qmail 22753 invoked by uid 48); 22 May 2006 14:19:21 -0000 Date: Mon, 22 May 2006 14:19:00 -0000 Message-ID: <20060522141921.22752.qmail@sourceware.org> From: "jsm28 at gcc dot gnu dot org" To: glibc-bugs@sources.redhat.com In-Reply-To: <20060521225027.2682.jsm28@gcc.gnu.org> References: <20060521225027.2682.jsm28@gcc.gnu.org> Reply-To: sourceware-bugzilla@sourceware.org Subject: [Bug ports/2682] On ARM EABI, exit should be marked EXIDX_CANTUNWIND X-Bugzilla-Reason: CC Mailing-List: contact glibc-bugs-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Post: List-Help: , Sender: glibc-bugs-owner@sourceware.org X-SW-Source: 2006-05/txt/msg00127.txt.bz2 List-Id: ------- Additional Comments From jsm28 at gcc dot gnu dot org 2006-05-22 14:19 ------- Marking destructor stops doesn't suffice since the same applies to functions registered explicitly from atexit. Such functions can be called normally, and throwing is then OK; they can be called from atexit, when throwing must result in terminate being called. Thanks for the x86_64 pointer, here's an example which does fail there. (The indirection about how and when exit is called is to avoid problems with the compiler knowing that exit can't throw.) #include #include void f(void) { puts("in atexit handler"); throw "s"; } volatile int v; void e(void) { if (v) throw "s"; exit (0); } int main(void) { atexit(f); try { e (); } catch (...) { puts ("caught"); abort (); } } -- http://sourceware.org/bugzilla/show_bug.cgi?id=2682 ------- You are receiving this mail because: ------- You are on the CC list for the bug, or are watching someone who is.