Re: Issue with Latest GDB on AIX with GCC-6.12
Nitish Kumar Mishra <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <CACC+hkiy6EjY5dAdKDfuBLOmfOLhf1CY6tcUpf7GmP1cx7_w6A@mail.gmail.com> |
Hi All ! Please find the patch attachment with this mail. Any comments are more than welcome. Thanks, Nitish On Mon, Feb 20, 2017 at 4:52 PM, Nitish Kumar Mishra <[email protected]> wrote: > Hi All ! > > I have created a bug for this issue. The bug id is: 21187. > I have created a patch for configure file in which new configure > option --enable-staticlib and --disable-staticlib is implemented. > By default the linking of GDB with libstdc++ and libgcc will be static. > > Attching the patch with the mail. > > On Mon, Feb 13, 2017 at 9:08 PM, Nitish Kumar Mishra > <[email protected]> wrote: >> Hi David ! >> >>>Who built GCC 6.1 for you? Is this an IBM build or Bull Freeware? >> IBM does not have GCC-6 build yet, and generally Bull's rpm breaks our >> environment. I took it from perzl.org. >> But now I have tested it with Bull's RPM, static linking still not >> working but removing --static-libstdc++ and --static-libgcc >> is working for me as well. >> Now, I will run the testsuite and will paste the result once it's finished. >> >> I disabled the static options manually. I don't see any configure >> option for disabling the static linking. I tried with one configure >> option --disable-libstdcxx, but I dont think it will lead to dynamic >> linking. Anyways, for me, using this option --disable-libstdcxx >> was giving compilation error, saying, "ld soes not support target". >> >> Thanks, >> Nitish >> >> >> On Mon, Feb 13, 2017 at 8:49 PM, Eli Zaretskii <[email protected]> wrote: >>>> From: David Edelsohn <[email protected]> >>>> Date: Mon, 13 Feb 2017 10:02:35 -0500 >>>> Cc: Nitish Kumar Mishra <[email protected]>, "[email protected]" <[email protected]>, Yao Qi <[email protected]> >>>> >>>> >> Can we disable -static-libgcc and -static-libstdc++ for AIX? >>>> > >>>> > Works for me. Those are added by the top level configure. They were >>>> > originally added for gcc, we just inherited it. Ideally adding >>>> > those would be controllable with a configure option, IMO. >>>> >>>> We shouldn't disable static-libgcc and static-libstdc++ for GCC. And >>>> static would be better. But linking GDB dynamically could be helpful >>>> as an interim work-around. >>> >>> Please let's not do that on MS-Windows at least. Dynamically linking >>> against these two libraries has the following 2 adverse effects: >>> >>> . it requires any site that distributes precompiled Windows binaries >>> of GDB to also distribute the full humongous tarball of GCC >>> sources (because libgcc runtime exception doesn't cover dynamic >>> linking against shared libraries); and >>> >>> . it opens the gates of the "DLL hell", since there's any number of >>> libgcc and libstdc++ DLLs from different versions of GCC floating >>> around on any given Windows system with GNU software, and there's >>> no practical way to ensure binary compatibility between the one >>> found first on PATH and a particular version of GDB one wants to >>> run
disable_static_link_aix.patch
(application/octet-stream, 2.4 KB)
--- configure_org 2017-01-06 04:12:08.000000000 -0600
+++ configure 2017-02-20 04:34:10.000000000 -0600
@@ -760,6 +760,7 @@
enable_libada
enable_libssp
enable_libstdcxx
+ enable_staticlib
enable_liboffloadmic
enable_static_libjava
enable_bootstrap
@@ -1487,6 +1488,7 @@
--enable-libada build libada directory
--enable-libssp build libssp directory
--disable-libstdcxx do not build libstdc++-v3 directory
+ --disable-staticlib disable static linking of libstdc++ and libgcc
--enable-liboffloadmic=ARG
build liboffloadmic [ARG={no,host,target}]
--enable-static-libjava[=ARG]
@@ -3106,6 +3108,14 @@
ENABLE_LIBSTDCXX=default
fi
+ # Check whether --disable-staticlib was given.
+ if test "${enable_staticlib+set}" = set; then
+ enableval=$enable_staticlib;
+ ENABLE_STATICLIB=$enableval;
+ else
+ ENABLE_STATICLIB=yes;
+ fi
+
if test "${ENABLE_LIBSTDCXX}" = "no" ; then
noconfigdirs="$noconfigdirs target-libstdc++-v3"
fi
@@ -5109,9 +5119,11 @@
fi
fi
- # Check whether -static-libstdc++ -static-libgcc is supported.
+
have_static_libs=no
- if test "$GCC" = yes; then
+ # If enable_staticlib is set for configuration, check whether -static-libstdc++ -static-libgcc is supported.
+ if test "$ENABLE_STATICLIB" = yes; then
+ if test "$GCC" = yes; then
saved_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS -static-libstdc++ -static-libgcc"
@@ -5150,10 +5162,10 @@
LDFLAGS="$saved_LDFLAGS"
fi
+ fi
-
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}gnatbind", so it can be a program name with args.
set dummy ${ac_tool_prefix}gnatbind; ac_word=$2
@@ -5903,6 +5915,9 @@
# 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
fi
@@ -5937,8 +5952,10 @@
# 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 $ENABLE_STATICLIB = yes; then
poststage1_ldflags="-static-libstdc++ -static-libgcc"
+ else
+ poststage1_ldflags=""
fi
fi