From 5048e5167716138f9f3ff727dfb2b8b572445c5e Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Wed, 12 Oct 2011 15:55:04 +0000 Subject: [PATCH] gdb/ Fix compatibility with texinfo versions older than 4.12. * Makefile.in (MAKEINFO): Set to @MAKEINFO@. (MAKEINFOFLAGS, MAKEINFO_EXTRA_FLAGS, MAKEINFO_CMD): New. (MAKEHTMLFLAGS): Use MAKEINFO_CMD. (FLAGS_TO_PASS): Add MAKEINFOFLAGS and MAKEINFO_EXTRA_FLAGS. * configure: Regenerate. * configure.ac (MAKEINFO): Find it, from libiberty/configure.ac. (MAKEINFOFLAGS): Pre-set it to --split-size=5000000. (MAKEINFO_EXTRA_FLAGS): New test for -DHAVE_MAKEINFO_CLICK. gdb/doc/ Fix compatibility with texinfo versions older than 4.12. * Makefile.in (MAKEINFO): Set to @MAKEINFO@. (MAKEINFOFLAGS, MAKEINFO_EXTRA_FLAGS, MAKEINFO_CMD): New. (MAKEHTMLFLAGS): Use MAKEINFO_CMD. (gdb.info, gdbint.info, stabs.info, annotate.info): Use MAKEINFO_CMD. * gdb.texinfo (Tail Call Frames): Convert @arrow{} to @click, when possible. Make the conversion conditional on HAVE_MAKEINFO_CLICK, using variables CALLSEQ1A, CALLSEQ1B, CALLSEQ2A and CALLSEQ2B. --- gdb/ChangeLog | 12 +++++++ gdb/Makefile.in | 9 ++++-- gdb/configure | 79 ++++++++++++++++++++++++++++++++++++++++++++- gdb/configure.ac | 32 ++++++++++++++++++ gdb/doc/ChangeLog | 11 +++++++ gdb/doc/Makefile.in | 15 +++++---- gdb/doc/gdb.texinfo | 23 ++++++++++--- 7 files changed, 167 insertions(+), 14 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index be9a96d2a3c..f08b5a4975f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,15 @@ +2011-10-12 Jan Kratochvil + + Fix compatibility with texinfo versions older than 4.12. + * Makefile.in (MAKEINFO): Set to @MAKEINFO@. + (MAKEINFOFLAGS, MAKEINFO_EXTRA_FLAGS, MAKEINFO_CMD): New. + (MAKEHTMLFLAGS): Use MAKEINFO_CMD. + (FLAGS_TO_PASS): Add MAKEINFOFLAGS and MAKEINFO_EXTRA_FLAGS. + * configure: Regenerate. + * configure.ac (MAKEINFO): Find it, from libiberty/configure.ac. + (MAKEINFOFLAGS): Pre-set it to --split-size=5000000. + (MAKEINFO_EXTRA_FLAGS): New test for -DHAVE_MAKEINFO_CLICK. + 2011-10-12 Gary Benson * breakpoint.h (pc_at_non_inline_function): Declare. diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 4dd324d1c52..32d8ef3e6dc 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -109,9 +109,12 @@ FLEX = flex YLWRAP = $(srcdir)/../ylwrap # where to find makeinfo, preferably one designed for texinfo-2 -MAKEINFO=makeinfo +MAKEINFO = @MAKEINFO@ +MAKEINFOFLAGS = @MAKEINFOFLAGS@ +MAKEINFO_EXTRA_FLAGS = @MAKEINFO_EXTRA_FLAGS@ +MAKEINFO_CMD = $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFO_EXTRA_FLAGS) -MAKEHTML = $(MAKEINFO) --html +MAKEHTML = $(MAKEINFO_CMD) --html MAKEHTMLFLAGS = # Set this up with gcc if you have gnu ld and the loader will print out @@ -614,6 +617,8 @@ FLAGS_TO_PASS = \ "LDFLAGS=$(LDFLAGS)" \ "RANLIB=$(RANLIB)" \ "MAKEINFO=$(MAKEINFO)" \ + "MAKEINFOFLAGS=$(MAKEINFOFLAGS)" \ + "MAKEINFO_EXTRA_FLAGS=$(MAKEINFO_EXTRA_FLAGS)" \ "MAKEHTML=$(MAKEHTML)" \ "MAKEHTMLFLAGS=$(MAKEHTMLFLAGS)" \ "INSTALL=$(INSTALL)" \ diff --git a/gdb/configure b/gdb/configure index ac143e48dc4..aec9d43d326 100755 --- a/gdb/configure +++ b/gdb/configure @@ -700,7 +700,6 @@ MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh -MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF @@ -711,6 +710,9 @@ am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM +MAKEINFO_EXTRA_FLAGS +MAKEINFOFLAGS +MAKEINFO PACKAGE GNULIB_STDINT_H LIBGNU_LTLIBDEPS @@ -7151,6 +7153,81 @@ _ACEOF +# Do we have a single-tree copy of texinfo? Even if we do, we can't +# rely on it - libiberty is built before texinfo. +# Extract the first word of "makeinfo", so it can be a program name with args. +set dummy makeinfo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_MAKEINFO+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MAKEINFO"; then + ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_MAKEINFO="makeinfo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MAKEINFO=$ac_cv_prog_MAKEINFO +if test -n "$MAKEINFO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKEINFO" >&5 +$as_echo "$MAKEINFO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if test "x$MAKEINFO" = "x"; then + as_fn_error "makeinfo is required for compilation" "$LINENO" 5 +else + case "$MAKEINFO" in + */missing\ makeinfo*) + as_fn_error "makeinfo is required for compilation" "$LINENO" 5 + ;; + esac +fi + + +# --split-size=5000000 may be already in $MAKEINFO from parent configure. +# Re-running configure in gdb/ would lose it so ensure it stays present. +MAKEINFOFLAGS=${MAKEINFOFLAGS---split-size=5000000} + + +MAKEINFO_EXTRA_FLAGS="" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $MAKEINFO supports @click" >&5 +$as_echo_n "checking whether $MAKEINFO supports @click... " >&6; } +if test "${gdb_cv_have_makeinfo_click+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + echo '@clicksequence{a @click{} b}' >conftest.texinfo + if eval "$MAKEINFO conftest.texinfo >&5 2>&5"; then + gdb_cv_have_makeinfo_click=yes + else + gdb_cv_have_makeinfo_click=no + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_have_makeinfo_click" >&5 +$as_echo "$gdb_cv_have_makeinfo_click" >&6; } +if test x"$gdb_cv_have_makeinfo_click" = xyes; then + MAKEINFO_EXTRA_FLAGS="$MAKEINFO_EXTRA_FLAGS -DHAVE_MAKEINFO_CLICK" +fi + + # GDB does not use automake, but gnulib does. This line lets us # generate its Makefile.in. am__api_version='1.11' diff --git a/gdb/configure.ac b/gdb/configure.ac index 8c12a44437e..fbbb2de55de 100644 --- a/gdb/configure.ac +++ b/gdb/configure.ac @@ -87,6 +87,38 @@ PACKAGE=gdb AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package. ]) AC_SUBST(PACKAGE) +# Do we have a single-tree copy of texinfo? Even if we do, we can't +# rely on it - libiberty is built before texinfo. +AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, ) +if test "x$MAKEINFO" = "x"; then + AC_ERROR([makeinfo is required for compilation]) +else + case "$MAKEINFO" in + */missing\ makeinfo*) + AC_ERROR([makeinfo is required for compilation]) + ;; + esac +fi +AC_SUBST(MAKEINFO) + +# --split-size=5000000 may be already in $MAKEINFO from parent configure. +# Re-running configure in gdb/ would lose it so ensure it stays present. +MAKEINFOFLAGS=${MAKEINFOFLAGS---split-size=5000000} +AC_SUBST(MAKEINFOFLAGS) + +MAKEINFO_EXTRA_FLAGS="" +AC_CACHE_CHECK([whether $MAKEINFO supports @click], gdb_cv_have_makeinfo_click, + [echo '@clicksequence{a @click{} b}' >conftest.texinfo + if eval "$MAKEINFO conftest.texinfo >&5 2>&5"; then + gdb_cv_have_makeinfo_click=yes + else + gdb_cv_have_makeinfo_click=no + fi]) +if test x"$gdb_cv_have_makeinfo_click" = xyes; then + MAKEINFO_EXTRA_FLAGS="$MAKEINFO_EXTRA_FLAGS -DHAVE_MAKEINFO_CLICK" +fi +AC_SUBST(MAKEINFO_EXTRA_FLAGS) + # GDB does not use automake, but gnulib does. This line lets us # generate its Makefile.in. AM_INIT_AUTOMAKE(gdb, UNUSED-VERSION, [no-define]) diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 8ebc4f256ea..1512909ad2a 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,14 @@ +2011-10-12 Jan Kratochvil + + Fix compatibility with texinfo versions older than 4.12. + * Makefile.in (MAKEINFO): Set to @MAKEINFO@. + (MAKEINFOFLAGS, MAKEINFO_EXTRA_FLAGS, MAKEINFO_CMD): New. + (MAKEHTMLFLAGS): Use MAKEINFO_CMD. + (gdb.info, gdbint.info, stabs.info, annotate.info): Use MAKEINFO_CMD. + * gdb.texinfo (Tail Call Frames): Convert @arrow{} to @click, when possible. + Make the conversion conditional on HAVE_MAKEINFO_CLICK, using variables + CALLSEQ1A, CALLSEQ1B, CALLSEQ2A and CALLSEQ2B. + 2011-10-09 Doug Evans * gdb.texinfo (Extending GDB): Document alias command. diff --git a/gdb/doc/Makefile.in b/gdb/doc/Makefile.in index eef47a58d34..7310e360f1a 100644 --- a/gdb/doc/Makefile.in +++ b/gdb/doc/Makefile.in @@ -45,9 +45,12 @@ gdbdir = $(srcdir)/.. TEXIDIR=${gdbdir}/../texinfo # where to find makeinfo, preferably one designed for texinfo-2 -MAKEINFO=makeinfo +MAKEINFO = @MAKEINFO@ +MAKEINFOFLAGS = @MAKEINFOFLAGS@ +MAKEINFO_EXTRA_FLAGS = @MAKEINFO_EXTRA_FLAGS@ +MAKEINFO_CMD = $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFO_EXTRA_FLAGS) -MAKEHTML = $(MAKEINFO) --html +MAKEHTML = $(MAKEINFO_CMD) --html MAKEHTMLFLAGS = # where to find texi2roff, ditto @@ -365,7 +368,7 @@ gdb.pdf: ${GDB_DOC_FILES} # GDB MANUAL: info file gdb.info: ${GDB_DOC_FILES} - $(MAKEINFO) $(READLINE_TEXI_INCFLAG) -I ${GDBMI_DIR} -I $(srcdir) \ + $(MAKEINFO_CMD) $(READLINE_TEXI_INCFLAG) -I ${GDBMI_DIR} -I $(srcdir) \ -o gdb.info $(srcdir)/gdb.texinfo # GDB MANUAL: roff translations @@ -464,7 +467,7 @@ gdbint.pdf: $(GDBINT_DOC_FILES) # GDB INTERNALS MANUAL: info file gdbint.info: $(GDBINT_DOC_FILES) - $(MAKEINFO) -I $(srcdir) -o gdbint.info $(srcdir)/gdbint.texinfo + $(MAKEINFO_CMD) -I $(srcdir) -o gdbint.info $(srcdir)/gdbint.texinfo # GDB INTERNALS MANUAL: HTML file @@ -472,7 +475,7 @@ gdbint/index.html: $(GDBINT_DOC_FILES) $(MAKEHTML) $(MAKEHTMLFLAGS) -I $(srcdir) $(srcdir)/gdbint.texinfo stabs.info: $(STABS_DOC_FILES) - $(MAKEINFO) -I $(srcdir) -o stabs.info $(srcdir)/stabs.texinfo + $(MAKEINFO_CMD) -I $(srcdir) -o stabs.info $(srcdir)/stabs.texinfo # STABS DOCUMENTATION: HTML file @@ -516,7 +519,7 @@ annotate.pdf: $(ANNOTATE_DOC_FILES) $(TEXI2DVI) --pdf -I $(srcdir) $(srcdir)/annotate.texinfo annotate.info: $(ANNOTATE_DOC_FILES) - $(MAKEINFO) -I $(srcdir) -o annotate.info $(srcdir)/annotate.texinfo + $(MAKEINFO_CMD) -I $(srcdir) -o annotate.info $(srcdir)/annotate.texinfo annotate/index.html: $(ANNOTATE_DOC_FILES) $(MAKEHTML) $(MAKEHTMLFLAGS) -I $(srcdir) $(srcdir)/annotate.texinfo diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 5a78db1f8d5..da04e2eed3d 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -9789,11 +9789,24 @@ tailcall: reduced: 0x4004d2(a) | #2 0x0000000000400395 in main () at t.c:9 @end smallexample -Frames #0 and #2 are real, #1 is a virtual tail call frame. The code can have -possible execution paths -@code{main@arrow{}a@arrow{}b@arrow{}c@arrow{}d@arrow{}f} or -@code{main@arrow{}a@arrow{}b@arrow{}e@arrow{}f}, @value{GDBN} cannot find which -one from the inferior state. +@set CALLSEQ1A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}c@value{ARROW}d@value{ARROW}f} +@set CALLSEQ2A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}e@value{ARROW}f} + +@c Convert CALLSEQ#A to CALLSEQ#B depending on HAVE_MAKEINFO_CLICK. +@ifset HAVE_MAKEINFO_CLICK +@set ARROW @click{} +@set CALLSEQ1B @clicksequence{@value{CALLSEQ1A}} +@set CALLSEQ2B @clicksequence{@value{CALLSEQ2A}} +@end ifset +@ifclear HAVE_MAKEINFO_CLICK +@set ARROW -> +@set CALLSEQ1B @value{CALLSEQ1A} +@set CALLSEQ2B @value{CALLSEQ2A} +@end ifclear + +Frames #0 and #2 are real, #1 is a virtual tail call frame. +The code can have possible execution paths @value{CALLSEQ1B} or +@value{CALLSEQ2B}, @value{GDBN} cannot find which one from the inferior state. @code{initial:} state shows some random possible calling sequence @value{GDBN} has found. It then finds another possible calling sequcen - that one is -- 2.30.2