From patchwork Tue Mar 14 11:03:50 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nitish Kumar Mishra X-Patchwork-Id: 19570 Received: (qmail 65673 invoked by alias); 14 Mar 2017 11:03:56 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 65659 invoked by uid 89); 14 Mar 2017 11:03:55 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.8 required=5.0 tests=AWL, BAYES_00, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy=201702, H*r:10.100.178, kumar, Kumar X-HELO: mail-pg0-f67.google.com Received: from mail-pg0-f67.google.com (HELO mail-pg0-f67.google.com) (74.125.83.67) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 14 Mar 2017 11:03:51 +0000 Received: by mail-pg0-f67.google.com with SMTP id 77so23739705pgc.0 for ; Tue, 14 Mar 2017 04:03:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=EjhcSQQmoaIcpx+m0Roi/ciInxE3yiqfBNCKwLz2lnI=; b=mlAQ/eSBu9AzFLbwFzYLiZluLZxevqqNGyE+8MSFsBZW7TlK5or2eO0hdgbQYaMKll 26IbfkVcKvd9LVvdHl3rR3oaEV5BdGQayA0Nkj3Aa8GvrQoOFtldLVarkquAdPXd6T+D ruZNsns0bwX3YzSxwl1+vrqdXPa3d4oH6lp5JZlpguBHZWVvzJE5KIg+9Qie3UZPUv/t pHyPc072Li4WnNwnS8IJKVhvBTw4AE7Oe00UiuoLL2+t1qBGQdL9AlMU9l8Bj20QehdF g6MxLyE0CAkocLZuHfVJ5VapvyzMFim/gaLd6q4VEjA3HMABm5Ordb6QscJtSBM4rZ64 uhXA== X-Gm-Message-State: AMke39kXEXHkL+J7rgF+xUoeY3EFUvEB357X+4l/YtG9cP53grq+rr4JvOInU23nOmDVdegeQcCirShlgfEVmA== X-Received: by 10.99.168.5 with SMTP id o5mr42984584pgf.148.1489489430919; Tue, 14 Mar 2017 04:03:50 -0700 (PDT) MIME-Version: 1.0 Received: by 10.100.178.131 with HTTP; Tue, 14 Mar 2017 04:03:50 -0700 (PDT) In-Reply-To: References: From: Nitish Kumar Mishra Date: Tue, 14 Mar 2017 16:33:50 +0530 Message-ID: Subject: Re: [PATCH] [PR build/21187] Static linking of libstdc++ and libgcc with GDB leads to broken exception handling on AIX platform To: gdb-patches@sourceware.org X-IsSubscribed: yes Hi, This defect is marked for GDB-8.0 branching. I have sent the patches earlier and got some review comments, changed the patch accordingly and sent again, but didn't get any feedback. I have uploaded the patch to the defect 21187 as well on bugzilla. Defect: https://sourceware.org/bugzilla/show_bug.cgi?id=21187 Consider this mail as reminder and I am attaching the proposed patch once again. Thanks and Regards, Nitish K Mishra On Tue, Mar 7, 2017 at 5:41 PM, Nitish Kumar Mishra wrote: > Hello, > > This patch is for the defect 21187 ( > https://sourceware.org/bugzilla/show_bug.cgi?id=21187 ). I am > attaching the patch to configure.ac file in which I have > provided a configure option "--disable-staticlib" to link libstdc++ > and libgcc library to GCC dynamically. > > > ==== Motivation for the change ==== > > When linked statically with libstdc++ and libgcc on AIX platform, GDB > is facing broken exception handling issues. > Following is the error output when GDB is linked statically with > mentioned libraries: (GDB-7.12.1, built with GCC-6.2, 64 bit mode, AIX > platform): > > # ./gdb > GNU gdb (GDB) 7.12.1 > Copyright (C) 2017 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. Type "show copying" > and "show warranty" for details. > This GDB was configured as "powerpc64-ibm-aix7.2.0.0". > Type "show configuration" for configuration details. > For bug reporting instructions, please see: > . > Find the GDB manual and other documentation resources online at: > . > For help, type "help". > Type "apropos word" to search for commands related to "word". > (gdb) kill > terminate called after throwing an instance of 'gdb_exception_RETURN_MASK_ERROR' > IOT/Abort trap (core dumped) > > > ==== Testing ==== > > I have manually built and tested GDB-7.12.1 with this patch on AIX-7.2 > and Ubuntu-16.04 with GCC-6.2 and GCC-4.8.5. On both operating system > GDB is working fine > with the patch. > > Output on AIX-7.2: > > # ./gdb > GNU gdb (GDB) 7.12.1 > Copyright (C) 2017 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. Type "show copying" > and "show warranty" for details. > This GDB was configured as "powerpc64-ibm-aix7.2.0.0". > Type "show configuration" for configuration details. > For bug reporting instructions, please see: > . > Find the GDB manual and other documentation resources online at: > . > For help, type "help". > Type "apropos word" to search for commands related to "word". > (gdb) kill > The program is not being run. > > > > ==== Context ==== > > The issue came in picture in November and have discussed here: > https://sourceware.org/ml/gdb/2017-02/msg00047.html > I have tested the issue on GDB-7.12.1 built with GCC-4.8.5, both 32 > and 64 bit object mode on AIX platform. The 64 bit mode does NOT have > this issue, but 32 bit mode has broken exception handling. > The issue is same with GDB-7.12.1 built with GCC-6.2, 64 bit mode on > AIX platform. GCC is not able to handle the exceptions properly and > GDB is leading to core dump. > On Ubuntu-16.04, and other platforms, there is no such issue. I > believe this issue is specifically for AIX. > > Please find the attachment for patch and ChangeLog. > > > Thanks and Regards, > Nitish K Mishra 2016-03-01 Nitish K Mishra * configure.ac: Include one more option "--disable-staticlib" to link libstdc++ and libgcc dynamically. diff --git a/configure.ac b/configure.ac index 3ec86c1..c400251 100644 --- a/configure.ac +++ b/configure.ac @@ -471,6 +471,13 @@ ENABLE_LIBSTDCXX=default) noconfigdirs="$noconfigdirs target-libstdc++-v3" fi] +AC_ARG_ENABLE(staticlib, +AS_HELP_STRING([--disable-staticlib], + [do not link libstdc++ and libgcc library statically, default is static linking]), +ENABLE_STATICLIB=$enableval, +ENABLE_STATICLIB=yes) + + # If this is accelerator compiler and its target is intelmic we enable # target liboffloadmic by default. If this is compiler with offloading # for intelmic we enable host liboffloadmic by default. Otherwise @@ -1406,9 +1413,10 @@ if test -z "$LD"; then fi fi -# Check whether -static-libstdc++ -static-libgcc is supported. +# If ENABLE_STATICLIB is set for configuration, check whether -static-libstdc++ -static-libgcc is supported have_static_libs=no -if test "$GCC" = yes; then +if test "$ENABLE_STATICLIB" = yes; then + if test "$GCC" = yes; then saved_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -static-libstdc++ -static-libgcc" @@ -1424,6 +1432,7 @@ int main() {}], AC_LANG_POP(C++) LDFLAGS="$saved_LDFLAGS" + fi fi ACX_PROG_GNAT @@ -1741,6 +1750,9 @@ AC_ARG_WITH(stage1-ldflags, # trust that they are doing what they want. if test "$stage1_libs" = "" -a "$have_static_libs" = yes; then stage1_ldflags="-static-libstdc++ -static-libgcc" + else + # If static lib is disabled. + stage1_ldflags="" fi]) AC_SUBST(stage1_ldflags) @@ -1768,8 +1780,11 @@ AC_ARG_WITH(boot-ldflags, # In stages 2 and 3, default to linking libstdc++ and libgcc # statically. But if the user explicitly specified the libraries to # use, trust that they are doing what they want. - if test "$poststage1_libs" = ""; then + if test "$poststage1_libs" = "" -a "$have_static_libs" = yes; then poststage1_ldflags="-static-libstdc++ -static-libgcc" + else + # If static library linking is disabled. + poststage1_ldflags="" fi]) AC_SUBST(poststage1_ldflags)