Re: [PATCH] Add --with-system-zlib in gdb

H.J. Lu
2015-03-31T13:46:58Z

[-- Attachment #1: Type: text/plain, Size: 703 bytes --]

On Tue, Mar 31, 2015 at 4:51 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Tue, Mar 31, 2015 at 04:27:12AM -0700, H.J. Lu wrote:
>> This patch adds --with-system-zlib and removes --with-zlib in gdb.
>> OK for master?
>>

Here is the patch for updated zlib.m4. OK for master?

--
H.J.
---
This patch adds --with-system-zlib and removes --with-zlib in gdb.

* Makefile.in (ZLIB): New.
(ZLIBINC): Likewise.
(INTERNAL_CFLAGS_BASE): Add $(ZLIBINC).
(CLIBS): Add $(ZLIB).
* acinclude.m4: (GDB_AC_CHECK_BFD): Add -lz to LIBS.
* gdb_bfd.c: Don't check HAVE_ZLIB_H to include <zlib.h>.
* top.c (print_gdb_configuration): Remove --with-zlib and
--without-zlib.
* config.in: Regenerated.
* configure: Likewise.

[-- Attachment #2: 0006-Add-with-system-zlib-in-gdb.patch --]
[-- Type: text/x-patch, Size: 9116 bytes --]

From 0707e5cbd2b8e47305def798c1f1cc14a74188c6 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Sat, 14 Mar 2015 11:16:15 -0700
Subject: [PATCH 6/7] Add --with-system-zlib in gdb

This patch adds --with-system-zlib and removes --with-zlib in gdb.

* Makefile.in (ZLIB): New.
(ZLIBINC): Likewise.
(INTERNAL_CFLAGS_BASE): Add $(ZLIBINC).
(CLIBS): Add $(ZLIB).
* acinclude.m4: (GDB_AC_CHECK_BFD): Add -lz to LIBS.
* gdb_bfd.c: Don't check HAVE_ZLIB_H to include <zlib.h>.
* top.c (print_gdb_configuration): Remove --with-zlib and
--without-zlib.
* config.in: Regenerated.
* configure: Likewise.
---
gdb/Makefile.in | 10 ++++--
gdb/acinclude.m4 | 6 +++-
gdb/config.in | 3 --
gdb/configure | 101 ++++++++++++-------------------------------------------
gdb/gdb_bfd.c | 3 --
gdb/top.c | 9 -----
6 files changed, 34 insertions(+), 98 deletions(-)

diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 907997b..d4d4a3e 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -144,6 +144,12 @@ BFD = $(BFD_DIR)/libbfd.a
BFD_SRC = $(srcdir)/$(BFD_DIR)
BFD_CFLAGS = -I$(BFD_DIR) -I$(BFD_SRC)

+# This is where we get zlib from. zlibdir is -L../zlib and zlibinc is
+# -I../zlib, unless we were configured with --with-system-zlib, in which
+# case both are empty.
+ZLIB = @zlibdir@ -lz
+ZLIBINC = @zlibinc@
+
# Where is the decnumber library? Typically in ../libdecnumber.
LIBDECNUMBER_DIR = ../libdecnumber
LIBDECNUMBER = $(LIBDECNUMBER_DIR)/libdecnumber.a
@@ -556,7 +562,7 @@ CXXFLAGS = -g -O
# INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros.
INTERNAL_CFLAGS_BASE = \
$(CFLAGS) $(GLOBAL_CFLAGS) $(PROFILE_CFLAGS) \
- $(GDB_CFLAGS) $(OPCODES_CFLAGS) $(READLINE_CFLAGS) \
+ $(GDB_CFLAGS) $(OPCODES_CFLAGS) $(READLINE_CFLAGS) $(ZLIBINC) \
$(BFD_CFLAGS) $(INCLUDE_CFLAGS) $(LIBDECNUMBER_CFLAGS) \
$(INTL_CFLAGS) $(INCGNU) $(ENABLE_CFLAGS) $(INTERNAL_CPPFLAGS)
INTERNAL_WARN_CFLAGS = $(INTERNAL_CFLAGS_BASE) $(GDB_WARN_CFLAGS)
@@ -578,7 +584,7 @@ INTERNAL_LDFLAGS = $(CFLAGS) $(GLOBAL_CFLAGS) $(MH_LDFLAGS) $(LDFLAGS) $(CONFIG_
# Libraries and corresponding dependencies for compiling gdb.
# XM_CLIBS, defined in *config files, have host-dependent libs.
# LIBIBERTY appears twice on purpose.
-CLIBS = $(SIM) $(READLINE) $(OPCODES) $(BFD) $(INTL) $(LIBIBERTY) $(LIBDECNUMBER) \
+CLIBS = $(SIM) $(READLINE) $(OPCODES) $(BFD) $(ZLIB) $(INTL) $(LIBIBERTY) $(LIBDECNUMBER) \
$(XM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) \
@LIBS@ @GUILE_LIBS@ @PYTHON_LIBS@ \
$(LIBEXPAT) $(LIBLZMA) $(LIBBABELTRACE) \
diff --git a/gdb/acinclude.m4 b/gdb/acinclude.m4
index da22fc2..aa58b02 100644
--- a/gdb/acinclude.m4
+++ b/gdb/acinclude.m4
@@ -467,7 +467,11 @@ AC_DEFUN([GDB_AC_CHECK_BFD], [
CFLAGS="-I${srcdir}/../include -I../bfd -I${srcdir}/../bfd $CFLAGS"
LDFLAGS="-L../bfd -L../libiberty $LDFLAGS"
intl=`echo $LIBINTL | sed 's,${top_builddir}/,,g'`
- LIBS="-lbfd -liberty $intl $LIBS"
+ if test -f ../zlib/Makefile; then
+ LIBS="-lbfd -L../zlib -lz -liberty $intl $LIBS"
+ else
+ LIBS="-lbfd -lz -liberty $intl $LIBS"
+ fi
AC_CACHE_CHECK([$1], [$2],
[AC_TRY_LINK(
[#include <stdlib.h>
diff --git a/gdb/config.in b/gdb/config.in
index 8a27df0..d41e6cf 100644
--- a/gdb/config.in
+++ b/gdb/config.in
@@ -582,9 +582,6 @@
/* Define to 1 if you have the `XML_StopParser' function. */
#undef HAVE_XML_STOPPARSER

-/* Define to 1 if you have the <zlib.h> header file. */
-#undef HAVE_ZLIB_H
-
/* Define to 1 if your system has the _etext variable. */
#undef HAVE__ETEXT

diff --git a/gdb/configure b/gdb/configure
index db239b3..e65c699 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -680,6 +680,8 @@ READLINE_TEXI_INCFLAG
READLINE_CFLAGS
READLINE_DEPS
READLINE
+zlibinc
+zlibdir
MIG
WINDRES
DLLTOOL
@@ -817,7 +819,7 @@ with_curses
enable_profiling
with_pkgversion
with_bugurl
-with_zlib
+with_system_zlib
with_libiconv_prefix
with_iconv_bin
with_system_readline
@@ -1536,7 +1538,7 @@ Optional Packages:
library
--with-pkgversion=PKG Use PKG in the version string in place of "GDB"
--with-bugurl=URL Direct users to URL to report a bug
- --with-zlib include zlib support (auto/yes/no) default=auto
+ --with-system-zlib use installed libz
--with-libiconv-prefix=DIR
search for libiconv in DIR/include and DIR/lib
--with-iconv-bin=PATH specify where to find the iconv program
@@ -7017,88 +7019,19 @@ fi

# Link in zlib if we can. This allows us to read compressed debug sections.

- # See if the user specified whether he wants zlib support or not.
+ # Use the system's zlib library.
+ zlibdir=-L../zlib
+ zlibinc="-I\$(srcdir)/../zlib"

-# Check whether --with-zlib was given.
-if test "${with_zlib+set}" = set; then :
- withval=$with_zlib;
-else
- with_zlib=auto
-fi
-
-
- if test "$with_zlib" != "no"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing zlibVersion" >&5
-$as_echo_n "checking for library containing zlibVersion... " >&6; }
-if test "${ac_cv_search_zlibVersion+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+# Check whether --with-system-zlib was given.
+if test "${with_system_zlib+set}" = set; then :
+ withval=$with_system_zlib; zlibdir=
+ zlibinc=

-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char zlibVersion ();
-int
-main ()
-{
-return zlibVersion ();
- ;
- return 0;
-}
-_ACEOF
-for ac_lib in '' z; do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
- fi
- if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_search_zlibVersion=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext
- if test "${ac_cv_search_zlibVersion+set}" = set; then :
- break
-fi
-done
-if test "${ac_cv_search_zlibVersion+set}" = set; then :

-else
- ac_cv_search_zlibVersion=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_zlibVersion" >&5
-$as_echo "$ac_cv_search_zlibVersion" >&6; }
-ac_res=$ac_cv_search_zlibVersion
-if test "$ac_res" != no; then :
- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
- for ac_header in zlib.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_zlib_h" = x""yes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_ZLIB_H 1
-_ACEOF

-fi

-done
-
-fi
-
- if test "$with_zlib" = "yes" -a "$ac_cv_header_zlib_h" != "yes"; then
- as_fn_error "zlib (libz) library was explicitly requested but not found" "$LINENO" 5
- fi
- fi

# On FreeBSD we may need libutil for kinfo_getvmmap (used by fbsd-nat.c).
@@ -13598,7 +13531,11 @@ esac
CFLAGS="-I${srcdir}/../include -I../bfd -I${srcdir}/../bfd $CFLAGS"
LDFLAGS="-L../bfd -L../libiberty $LDFLAGS"
intl=`echo $LIBINTL | sed 's,${top_builddir}/,,g'`
- LIBS="-lbfd -liberty $intl $LIBS"
+ if test -f ../zlib/Makefile; then
+ LIBS="-lbfd -L../zlib -lz -liberty $intl $LIBS"
+ else
+ LIBS="-lbfd -lz -liberty $intl $LIBS"
+ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ELF support in BFD" >&5
$as_echo_n "checking for ELF support in BFD... " >&6; }
if test "${gdb_cv_var_elf+set}" = set; then :
@@ -13708,7 +13645,11 @@ fi