From 1776e3e59ca6200dff981894361b8b49cb453766 Mon Sep 17 00:00:00 2001 From: Nick Alcock Date: Wed, 9 Oct 2019 10:42:00 +0100 Subject: [PATCH] Fix --enable-libctf and --disable-static This fixes test runs and compilation when --disable-libctf, --disable-static, or --enable-shared are passed. Changes since v2: Use GCC_ENABLE and fix indentation. Fix prototype using 'void'. Use 'unsupported' and gdb_caching_proc. Changes since v3: Adapt to upstream changes providing skip_ctf_tests. Changes since v4: Adapt to upstream changes in the seven months (!) since I last looked at this. gdb/ChangeLog * configure.ac: Add --enable-libctf: handle --disable-static properly. * acinclude.m4: sinclude ../config/enable.m4. * Makefile.in (aclocal_m4_deps): Adjust accordingly. (LIBCTF): Substitute in. (CTF_DEPS): New, likewise. (CLIBS): libctf needs symbols from libbfd: move earlier. (CDEPS): Use CTF_DEPS, not LIBCTF, now LIBCTF can include rpath flags. * ctfread.c: Surround in ENABLE_LIBCTF. (elfctf_build_psymtabs) [!ENABLE_LIBCTF]: New stub. * configure: Regenerate. * config.in: Likewise. gdb/testsuite/ChangeLog * configure.ac: Add --enable-libctf. * aclocal.m4: sinclude ../config/enable.m4. * Makefile.in (site.exp): Add enable_libctf to site.exp. * lib/gdb.exp (skip_ctf_tests): Use it. * gdb.base/ctf-constvars.exp: Error message tweak. * gdb.base/ctf-ptype.exp: Likewise. * configure: Regenerate. --- gdb/ChangeLog | 16 ++++++++++ gdb/Makefile.in | 8 +++-- gdb/acinclude.m4 | 3 ++ gdb/config.in | 3 ++ gdb/configure | 40 ++++++++++++++++++++++++ gdb/configure.ac | 21 +++++++++++++ gdb/ctfread.c | 13 ++++++++ gdb/testsuite/ChangeLog | 10 ++++++ gdb/testsuite/Makefile.in | 2 ++ gdb/testsuite/aclocal.m4 | 1 + gdb/testsuite/configure | 18 +++++++++++ gdb/testsuite/configure.ac | 3 ++ gdb/testsuite/gdb.base/ctf-constvars.exp | 2 +- gdb/testsuite/gdb.base/ctf-ptype.exp | 3 +- gdb/testsuite/lib/gdb.exp | 9 +++++- 15 files changed, 146 insertions(+), 6 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ddb5c47d1e..d09d316f76 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,19 @@ +2020-06-26 Nick Alcock + + * configure.ac: Add --enable-libctf: handle --disable-static + properly. + * acinclude.m4: sinclude ../config/enable.m4. + * Makefile.in (aclocal_m4_deps): Adjust accordingly. + (LIBCTF): Substitute in. + (CTF_DEPS): New, likewise. + (CLIBS): libctf needs symbols from libbfd: move earlier. + (CDEPS): Use CTF_DEPS, not LIBCTF, now LIBCTF can include rpath + flags. + * ctfread.c: Surround in ENABLE_LIBCTF. + (elfctf_build_psymtabs) [!ENABLE_LIBCTF]: New stub. + * configure: Regenerate. + * config.in: Likewise. + 2020-06-25 Simon Marchi * infcmd.c (set_inferior_io_terminal): Use make_unique_xstrdup. diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 32d0eee7c6..9ae9fe2d1e 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -154,7 +154,8 @@ INCLUDE_CFLAGS = -I$(INCLUDE_DIR) LIBIBERTY = ../libiberty/libiberty.a # Where is the CTF library? Typically in ../libctf. -LIBCTF = ../libctf/.libs/libctf.a +LIBCTF = @LIBCTF@ +CTF_DEPS = @CTF_DEPS@ # Where is the BFD library? Typically in ../bfd. BFD_DIR = ../bfd @@ -614,7 +615,7 @@ INTERNAL_LDFLAGS = \ # 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) $(LIBCTF) $(ZLIB) \ +CLIBS = $(SIM) $(READLINE) $(OPCODES) $(LIBCTF) $(BFD) $(ZLIB) \ $(LIBSUPPORT) $(INTL) $(LIBIBERTY) $(LIBDECNUMBER) \ $(XM_CLIBS) $(GDBTKLIBS) \ @LIBS@ @GUILE_LIBS@ @PYTHON_LIBS@ \ @@ -622,7 +623,7 @@ CLIBS = $(SIM) $(READLINE) $(OPCODES) $(BFD) $(LIBCTF) $(ZLIB) \ $(WIN32LIBS) $(LIBGNU) $(LIBICONV) \ $(LIBMPFR) $(SRCHIGH_LIBS) $(LIBXXHASH) $(PTHREAD_LIBS) \ @LIBDEBUGINFOD@ -CDEPS = $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE_DEPS) $(LIBCTF) \ +CDEPS = $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE_DEPS) $(CTF_DEPS) \ $(OPCODES) $(INTL_DEPS) $(LIBIBERTY) $(CONFIG_DEPS) $(LIBGNU) \ $(LIBSUPPORT) @@ -2006,6 +2007,7 @@ aclocal_m4_deps = \ transform.m4 \ ../bfd/bfd.m4 \ ../config/acinclude.m4 \ + ../config/enable.m4 \ ../config/plugins.m4 \ ../config/lead-dot.m4 \ ../config/override.m4 \ diff --git a/gdb/acinclude.m4 b/gdb/acinclude.m4 index 852a71c3f1..6fbc88bb55 100644 --- a/gdb/acinclude.m4 +++ b/gdb/acinclude.m4 @@ -24,6 +24,9 @@ m4_include(../bfd/bfd.m4) dnl This gets the standard macros. m4_include(../config/acinclude.m4) +dnl This gets GCC_ENABLE. +sinclude(../config/enable.m4) + dnl This gets AC_PLUGINS, needed by ACX_LARGEFILE. m4_include(../config/plugins.m4) diff --git a/gdb/config.in b/gdb/config.in index d950515e51..340c421ca0 100644 --- a/gdb/config.in +++ b/gdb/config.in @@ -36,6 +36,9 @@ /* Define to BFD's default target vector. */ #undef DEFAULT_BFD_VEC +/* Handle .ctf type-info sections */ +#undef ENABLE_LIBCTF + /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS diff --git a/gdb/configure b/gdb/configure index ef10aa717f..e8bfdbc709 100755 --- a/gdb/configure +++ b/gdb/configure @@ -631,6 +631,9 @@ GDB_NM_FILE LTLIBXXHASH LIBXXHASH HAVE_LIBXXHASH +CTF_DEPS +LIBCTF +ENABLE_LIBCTF LTLIBBABELTRACE LIBBABELTRACE HAVE_LIBBABELTRACE @@ -917,6 +920,7 @@ with_babeltrace with_libbabeltrace_prefix with_libbabeltrace_type with_xxhash +enable_libctf with_libxxhash_prefix with_libxxhash_type enable_unit_tests @@ -1583,6 +1587,7 @@ Optional Features: gcc is used --enable-ubsan enable undefined behavior sanitizer (auto/yes/no) --enable-sim link gdb with simulator + --enable-libctf Handle .ctf type-info sections [default=yes] --enable-unit-tests Enable the inclusion of unit tests when compiling GDB @@ -18561,6 +18566,41 @@ else fi + # Check whether --enable-libctf was given. +if test "${enable_libctf+set}" = set; then : + enableval=$enable_libctf; + case "$enableval" in + yes|no) ;; + *) as_fn_error $? "Argument to enable/disable libctf must be yes or no" "$LINENO" 5 ;; + esac + +else + enable_libctf=yes +fi + + +if test x${enable_static} = xno; then + LIBCTF="-Wl,--rpath,../libctf/.libs ../libctf/.libs/libctf.so" + CTF_DEPS="../libctf/.libs/libctf.so" +else + LIBCTF="../libctf/.libs/libctf.a" + CTF_DEPS="$LIBCTF" +fi +if test "${enable_libctf}" = yes; then + +$as_echo "#define ENABLE_LIBCTF 1" >>confdefs.h + +else + LIBCTF= + CTF_DEPS= +fi + + + + +# If nativefile (NAT_FILE) is not set in configure.nat, we link to an +# empty version. + if test "x$with_xxhash" != "xno"; then diff --git a/gdb/configure.ac b/gdb/configure.ac index 62750804fa..b975cec84f 100644 --- a/gdb/configure.ac +++ b/gdb/configure.ac @@ -2066,6 +2066,27 @@ AC_ARG_WITH(xxhash, AC_HELP_STRING([--with-xxhash], [use libxxhash for hashing (faster) (auto/yes/no)]), [], [with_xxhash=auto]) +GCC_ENABLE([libctf], [yes], [], [Handle .ctf type-info sections]) +if test x${enable_static} = xno; then + LIBCTF="-Wl,--rpath,../libctf/.libs ../libctf/.libs/libctf.so" + CTF_DEPS="../libctf/.libs/libctf.so" +else + LIBCTF="../libctf/.libs/libctf.a" + CTF_DEPS="$LIBCTF" +fi +if test "${enable_libctf}" = yes; then + AC_DEFINE(ENABLE_LIBCTF, 1, [Handle .ctf type-info sections]) +else + LIBCTF= + CTF_DEPS= +fi +AC_SUBST(ENABLE_LIBCTF) +AC_SUBST(LIBCTF) +AC_SUBST(CTF_DEPS) + +# If nativefile (NAT_FILE) is not set in configure.nat, we link to an +# empty version. + if test "x$with_xxhash" != "xno"; then AC_LIB_HAVE_LINKFLAGS([xxhash], [], [#include ], diff --git a/gdb/ctfread.c b/gdb/ctfread.c index e296b133c2..f44cbecba0 100644 --- a/gdb/ctfread.c +++ b/gdb/ctfread.c @@ -81,6 +81,9 @@ #include "block.h" #include "ctfread.h" #include "psympriv.h" + +#if ENABLE_LIBCTF + #include "ctf.h" #include "ctf-api.h" @@ -1485,3 +1488,13 @@ elfctf_build_psymtabs (struct objfile *of) scan_partial_symbols (fp, of); } + +#else + +void +elfctf_build_psymtabs (struct objfile *of) +{ + /* Nothing to do if CTF is disabled. */ +} + +#endif /* ENABLE_LIBCTF */ diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index a01a065d81..bf9d2c499e 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2020-06-26 Nick Alcock + + * configure.ac: Add --enable-libctf. + * aclocal.m4: sinclude ../config/enable.m4. + * Makefile.in (site.exp): Add enable_libctf to site.exp. + * lib/gdb.exp (skip_ctf_tests): Use it. + * gdb.base/ctf-constvars.exp: Error message tweak. + * gdb.base/ctf-ptype.exp: Likewise. + * configure: Regenerate. + 2020-06-26 Gary Benson * gdb.cp/try_catch.cc: Include string.h. diff --git a/gdb/testsuite/Makefile.in b/gdb/testsuite/Makefile.in index dbe95b3491..61209d881c 100644 --- a/gdb/testsuite/Makefile.in +++ b/gdb/testsuite/Makefile.in @@ -28,6 +28,7 @@ program_transform_name = @program_transform_name@ build_canonical = @build@ host_canonical = @host@ target_canonical = @target@ +enable_libctf = @enable_libctf@ SHELL = @SHELL@ EXEEXT = @EXEEXT@ @@ -131,6 +132,7 @@ $(abs_builddir)/site.exp site.exp: ./config.status Makefile @echo "set build_triplet ${build_canonical}" >> ./tmp0 @echo "set srcdir ${abs_srcdir}" >> ./tmp0 @echo "set tool gdb" >> ./tmp0 + @echo "set enable_libctf ${enable_libctf}" >> ./tmp0 @echo 'source $${srcdir}/lib/append_gdb_boards_dir.exp' >> ./tmp0 @echo "## All variables above are generated by configure. Do Not Edit ##" >> ./tmp0 @cat ./tmp0 > site.exp diff --git a/gdb/testsuite/aclocal.m4 b/gdb/testsuite/aclocal.m4 index 5061eef537..c5d3ba527a 100644 --- a/gdb/testsuite/aclocal.m4 +++ b/gdb/testsuite/aclocal.m4 @@ -1,5 +1,6 @@ m4_include(../../config/acx.m4) m4_include(../../config/override.m4) +m4_include(../../config/enable.m4) m4_include(../transform.m4) # AM_CONDITIONAL -*- Autoconf -*- diff --git a/gdb/testsuite/configure b/gdb/testsuite/configure index cc00f8dfa8..0de6074460 100755 --- a/gdb/testsuite/configure +++ b/gdb/testsuite/configure @@ -638,6 +638,7 @@ LDFLAGS CFLAGS CC RPATH_ENVVAR +enable_libctf subdirs target_noncanonical target_os @@ -694,6 +695,7 @@ ac_subst_files='' ac_user_opts=' enable_option_checking enable_gdbtk +enable_libctf enable_shared ' ac_precious_vars='build_alias @@ -1323,6 +1325,7 @@ Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-gtk enable gdbtk graphical user interface (GUI) + --enable-libctf Handle .ctf type-info sections [default=yes] --enable-shared build shared libraries deault=yes Some influential environment variables: @@ -2189,6 +2192,21 @@ subdirs="$subdirs gdb.gdbtk" fi + # Check whether --enable-libctf was given. +if test "${enable_libctf+set}" = set; then : + enableval=$enable_libctf; + case "$enableval" in + yes|no) ;; + *) as_fn_error $? "Argument to enable/disable libctf must be yes or no" "$LINENO" 5 ;; + esac + +else + enable_libctf=yes +fi + + + + # Enable shared libraries. # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : diff --git a/gdb/testsuite/configure.ac b/gdb/testsuite/configure.ac index b387efe808..cc62c3fc45 100644 --- a/gdb/testsuite/configure.ac +++ b/gdb/testsuite/configure.ac @@ -43,6 +43,9 @@ if test $enable_gdbtk = yes; then AC_CONFIG_SUBDIRS(gdb.gdbtk) fi +GCC_ENABLE([libctf], [yes], [], [Handle .ctf type-info sections]) +AC_SUBST(enable_libctf) + # Enable shared libraries. AC_ARG_ENABLE(shared, [ --enable-shared build shared libraries [deault=yes]],, diff --git a/gdb/testsuite/gdb.base/ctf-constvars.exp b/gdb/testsuite/gdb.base/ctf-constvars.exp index b52ba71b1a..38ee052cd5 100644 --- a/gdb/testsuite/gdb.base/ctf-constvars.exp +++ b/gdb/testsuite/gdb.base/ctf-constvars.exp @@ -25,7 +25,7 @@ # with mixed types. if [skip_ctf_tests] { - unsupported "no ctf debug format support" + unsupported "no CTF debug format support, or CTF disabled in GDB" return 0 } diff --git a/gdb/testsuite/gdb.base/ctf-ptype.exp b/gdb/testsuite/gdb.base/ctf-ptype.exp index dd1621b5fd..f981477839 100644 --- a/gdb/testsuite/gdb.base/ctf-ptype.exp +++ b/gdb/testsuite/gdb.base/ctf-ptype.exp @@ -16,7 +16,7 @@ # This file is a subset of ptype.exp written by Rob Savoye. (rob@cygnus.com) if [skip_ctf_tests] { - unsupported "no ctf debug format support" + unsupported "no CTF debug format support, or CTF disabled in GDB" return 0 } @@ -24,6 +24,7 @@ standard_testfile .c # Using `-gt` generates full-fledged CTF debug information. set opts "additional_flags=-gt" + if { [prepare_for_testing "failed to prepare" ${testfile} \ [list $srcfile] [list $opts nowarnings]] } { return 0 diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 8dbfa7e7a9..e34513f14d 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -7169,9 +7169,16 @@ proc cmp_file_string { file str msg } { } # Does the compiler support CTF debug output using '-gt' compiler -# flag? If not then we should skip these tests. +# flag? If not then we should skip these tests. We should also +# skip them if libctf was explicitly disabled. gdb_caching_proc skip_ctf_tests { + global enable_libctf + + if {$enable_libctf eq "no"} { + return 1 + } + return ![gdb_can_simple_compile ctfdebug { int main () { return 0; -- 2.34.1