From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10619 invoked by alias); 11 Oct 2011 23:34:47 -0000 Received: (qmail 9988 invoked by uid 22791); 11 Oct 2011 23:34:45 -0000 X-SWARE-Spam-Status: No, hits=-6.0 required=5.0 tests=AWL,BAYES_00,FAKE_REPLY_C,RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,SPF_HELO_PASS,TW_DB,TW_QU X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 11 Oct 2011 23:34:29 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p9BNYMif030138 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 11 Oct 2011 19:34:22 -0400 Received: from host1.jankratochvil.net (ovpn-116-16.ams2.redhat.com [10.36.116.16]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p9BNYJWK022280 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 11 Oct 2011 19:34:21 -0400 Received: from host1.jankratochvil.net (localhost [127.0.0.1]) by host1.jankratochvil.net (8.14.4/8.14.4) with ESMTP id p9BNYJID017937; Wed, 12 Oct 2011 01:34:19 +0200 Received: (from jkratoch@localhost) by host1.jankratochvil.net (8.14.4/8.14.4/Submit) id p9BNYIUk017933; Wed, 12 Oct 2011 01:34:18 +0200 Date: Tue, 11 Oct 2011 23:34:00 -0000 From: Jan Kratochvil To: Pedro Alves , Andreas Schwab Cc: gdb-patches@sourceware.org, Ulrich Weigand , eliz@gnu.org Subject: Re: [patch] New test+use texinfo @click - @HAVE_MAKEINFO_CLICK@ [Re: doc build failure (Re: [patch 04/12] entryval#3: Virtual tail call frames)] Message-ID: <20111011233417.GA17487@host1.jankratochvil.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201110102256.34728.pedro@codesourcery.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-10/txt/msg00339.txt.bz2 On Mon, 10 Oct 2011 23:56:34 +0200, Pedro Alves wrote: > On Monday 10 October 2011 19:47:26, Jan Kratochvil wrote: > > + if makeinfo conftest.texinfo >&5 2>&5; then > > Shouldn't this be $(MAKEINFO) instead (like in Makefile.in)? > Though I'm not sure how to do that here. Maybe > AC_CHECK_PROGS(MAKEINFO, makeinfo) ? Yes, it should, although it is more complicated. There is IMO a bug in toplevel configure it does not pass down MAKEINFOFLAGS and includes "--split-size=5000000" directly into MAKEINFO. Without the special handling of --split-size=5000000 it would be used during first compilation but no longer used after automatic re-run of configure in gdb/ (although only if one deletes gdb/config.cache). Therefore I added --split-size=5000000 there explicitly, which means it is duplicated during the dirst compilation but it does not matter. --split-size=5000000 was not used in gdb/doc/ before at all but I think it was a bug, even gcc uses --no-split. > It should be somethink like MAKEINFO_EXTRA_FLAGS. > (MAKEINFOFLAGS is the moral equivalent of CFLAGS, so we should > leave it reserved for the user.) Done. On Tue, 11 Oct 2011 00:18:54 +0200, Andreas Schwab wrote: > You should not modify MAKEINFO. If you say > "make info MAKEINFO=/usr/local/bin/makeinfo" you lose the flags. True, toplevel configure is already violating that but fixed it in gdb/ . Thanks, Jan gdb/ 2011-10-10 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. gdb/doc/ 2011-10-10 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. --- 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)" \ --- 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]) --- 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 --- 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