From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 73351 invoked by alias); 13 May 2015 07:55:37 -0000 Mailing-List: contact java-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: java-patches-owner@gcc.gnu.org Received: (qmail 73324 invoked by uid 89); 13 May 2015 07:55:36 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-Spam-User: qpsmtpd, 3 recipients X-HELO: mail-lb0-f180.google.com Received: from mail-lb0-f180.google.com (HELO mail-lb0-f180.google.com) (209.85.217.180) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Wed, 13 May 2015 07:55:35 +0000 Received: by lbbzk7 with SMTP id zk7so23512817lbb.0; Wed, 13 May 2015 00:55:31 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.152.22.34 with SMTP id a2mr15299789laf.59.1431503731728; Wed, 13 May 2015 00:55:31 -0700 (PDT) Received: by 10.25.130.210 with HTTP; Wed, 13 May 2015 00:55:31 -0700 (PDT) In-Reply-To: <1440100.16fMh0Bpp2@polaris> References: <1440100.16fMh0Bpp2@polaris> Date: Wed, 13 May 2015 07:55:00 -0000 Message-ID: Subject: Re: [patch] Clean up detection of SJLJ exceptions in target libraries From: Andrew Pinski To: Eric Botcazou Cc: GCC Patches , "libstdc++" , Java Patch List Content-Type: text/plain; charset=UTF-8 X-SW-Source: 2015-q2/txt/msg00012.txt.bz2 On Tue, May 12, 2015 at 9:42 AM, Eric Botcazou wrote: > Hi, > > 6 target libraries in the tree detect whether they are being compiled by a > compiler configured for setjmp/longjmp exceptions: libada, libgcc, libgo, > libjava, libobjc and libstdc++. They can be divided into 3 categories: > 1) libada only checks the preprocessor macro __USING_SJLJ_EXCEPTIONS__, > 2) libgcc and libgo both check the preprocessor macro and implement a > configure check that defines another macro (LIBGCC_SJLJ_EXCEPTIONS and > LIBGO_SJLJ_EXCEPTIONS resp) so they'd better agree. > 3) libjava, libobjc and libstdc++ implement a configure check that defines a > macro (SJLJ_EXCEPTIONS, SJLJ_EXCEPTIONS and _GLIBCXX_SJLJ_EXCEPTIONS resp). > > The attached patch gets rid of the library-specific macros and replaces them > with __USING_SJLJ_EXCEPTIONS__. Moreover, it adds a config/sjlj.m4 fragment > that defines GCC_CHECK_SJLJ_EXCEPTIONS for libraries that need to detect the > exception model in the configure phase (libgcc and libjava only). > > Tested on x86_64-suse-linux with --enable-sjlj-exceptions. The results are > not clean (except for objc and obj-c++) but sufficient to see that exceptions > still work after the patch. OK for the mainline? > > > 2015-05-12 Eric Botcazou > > config/ > * sjlj.m4: New file. > > libgcc/ > * configure.ac: Include config/sjlj.m4. > Remove manual SJLJ check, add GCC_CHECK_SJLJ_EXCEPTIONS and adjust. > * config.in: Regenerate. > * configure: Likewise. > * config.host: Replace enable_sjlj_exceptions by ac_cv_sjlj_exceptions. > > libgo/ > * configure.ac: Remove manual SJLJ check. > * config.h.in: Regenerate. > * configure: Likewise. > * runtime/go-unwind.c: Replace LIBGO_SJLJ_EXCEPTIONS by > __USING_SJLJ_EXCEPTIONS__. > > libjava/ > * configure.ac: Include config/sjlj.m4. > Remove manual SJLJ check, add GCC_CHECK_SJLJ_EXCEPTIONS and adjust. > * include/config.h.in: Regenerate. > * configure: Likewise. > * exception.cc: Replace SJLJ_EXCEPTIONS by __USING_SJLJ_EXCEPTIONS__. > * stacktrace.cc: Likewise. > * include/default-signal.h: Likewise. > * sysdep/i386/backtrace.h: Likewise. > > libobjc/ > * configure.ac: Remove manual SJLJ check. > * config.h.in: Regenerate. > * configure: Likewise. > * exception.c: Replace SJLJ_EXCEPTIONS by __USING_SJLJ_EXCEPTIONS__. The libobjc parts are ok. Thanks, Andrew Pinski > > libstdc++-v3/ > * acinclude.m4 (GLIBCXX_ENABLE_SJLJ_EXCEPTIONS): Delete. > * configure.ac: Remove GLIBCXX_ENABLE_SJLJ_EXCEPTIONS. > * config.h.in: Regenerate. > * configure: Likewise. > * libsupc++/eh_personality.cc: Replace _GLIBCXX_SJLJ_EXCEPTIONS by > __USING_SJLJ_EXCEPTIONS__. > * libsupc++/eh_throw.cc: Likewise. > * libsupc++/eh_ptr.cc: Likewise. > * doc/html/manual/appendix_porting.html: Remove > GLIBCXX_ENABLE_SJLJ_EXCEPTIONS > * doc/xml/manual/build_hacking.xml: Likewise. > * doc/html/manual/configure.html: Remove --enable-sjlj-exceptions. > * doc/xml/manual/configure.xml: Likewise. > > > -- > Eric Botcazou