aboutsummaryrefslogtreecommitdiff
path: root/texinfo/texinfo.tex
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2000-05-31 10:18:58 +0000
committerAndrew Cagney <cagney@redhat.com>2000-05-31 10:18:58 +0000
commit449f3b6ca7ee8f4bc340972fb39ec1ed251eb7ed (patch)
treea18ab66303a8714d12c9451e93a250db34a051d2 /texinfo/texinfo.tex
parent70d72e0eecedce2273b1ed400ecb86e8137878d2 (diff)
downloadgdb-449f3b6ca7ee8f4bc340972fb39ec1ed251eb7ed.zip
gdb-449f3b6ca7ee8f4bc340972fb39ec1ed251eb7ed.tar.gz
gdb-449f3b6ca7ee8f4bc340972fb39ec1ed251eb7ed.tar.bz2
Import texinfo.tex from texinfo-4.0.
Add support for ``make pdf'' to the gdb/doc directory using pdftex.
Diffstat (limited to 'texinfo/texinfo.tex')
-rw-r--r--texinfo/texinfo.tex2009
1 files changed, 1285 insertions, 724 deletions
diff --git a/texinfo/texinfo.tex b/texinfo/texinfo.tex
index 7d3a33c..c49af9f 100644
--- a/texinfo/texinfo.tex
+++ b/texinfo/texinfo.tex
@@ -1,7 +1,11 @@
% texinfo.tex -- TeX macros to handle Texinfo files.
-% $Id$
%
-% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98
+% Load plain if necessary, i.e., if running under initex.
+\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
+%
+\def\texinfoversion{1999-09-25.10}
+%
+% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
% Free Software Foundation, Inc.
%
% This texinfo.tex file is free software; you can redistribute it and/or
@@ -25,50 +29,44 @@
%
% Please try the latest version of texinfo.tex before submitting bug
% reports; you can get the latest version from:
-% ftp://ftp.gnu.org/pub/gnu/texinfo.tex
-% /home/gd/gnu/doc/texinfo.tex on the GNU machines.
+% ftp://ftp.gnu.org/gnu/texinfo.tex
% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)
-% ftp://tug.org/tex/texinfo.tex
-% ftp://ctan.org/macros/texinfo/texinfo.tex
-% (and all CTAN mirrors, finger ctan@ctan.org for a list).
-% The texinfo.tex in the texinfo distribution itself could well be out
+% ftp://texinfo.org/tex/texinfo.tex
+% ftp://us.ctan.org/macros/texinfo/texinfo.tex
+% (and all CTAN mirrors, finger ctan@us.ctan.org for a list).
+% /home/gd/gnu/doc/texinfo.tex on the GNU machines.
+% The texinfo.tex in any given Texinfo distribution could well be out
% of date, so if that's what you're using, please check.
-%
-% Send bug reports to bug-texinfo@gnu.org.
-% Please include a precise test case in each bug report,
-% including a complete document with which we can reproduce the problem.
-%
+% Texinfo has a small home page at http://texinfo.org/.
+%
+% Send bug reports to bug-texinfo@gnu.org. Please include including a
+% complete document in each bug report with which we can reproduce the
+% problem. Patches are, of course, greatly appreciated.
+%
% To process a Texinfo manual with TeX, it's most reliable to use the
-% texi2dvi shell script that comes with the distribution. For simple
-% manuals, however, you can get away with:
+% texi2dvi shell script that comes with the distribution. For a simple
+% manual foo.texi, however, you can get away with this:
% tex foo.texi
% texindex foo.??
% tex foo.texi
% tex foo.texi
-% dvips foo.dvi -o # or whatever, to process the dvi file.
+% dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps.
% The extra runs of TeX get the cross-reference information correct.
% Sometimes one run after texindex suffices, and sometimes you need more
% than two; texi2dvi does it as many times as necessary.
+%
+% It is possible to adapt texinfo.tex for other languages. You can get
+% the existing language-specific files from ftp://ftp.gnu.org/gnu/texinfo/.
-
-% Make it possible to create a .fmt file just by loading this file:
-% if the underlying format is not loaded, start by loading it now.
-% Added by gildea November 1993.
-\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
-
-% This automatically updates the version number based on RCS.
-\def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}}
-\deftexinfoversion$Revision$
-\message{Loading texinfo package [Version \texinfoversion]:}
+\message{Loading texinfo [version \texinfoversion]:}
% If in a .fmt file, print the version number
% and turn on active characters that we couldn't do earlier because
% they might have appeared in the input file name.
-\everyjob{\message{[Texinfo version \texinfoversion]}\message{}
+\everyjob{\message{[Texinfo version \texinfoversion]}%
\catcode`+=\active \catcode`\_=\active}
% Save some parts of plain tex whose names we will redefine.
-
\let\ptexb=\b
\let\ptexbullet=\bullet
\let\ptexc=\c
@@ -88,7 +86,6 @@
% For @tex, we can use \tabalign.
\let\+ = \relax
-
\message{Basics,}
\chardef\other=12
@@ -97,19 +94,46 @@
\newlinechar = `^^J
% Set up fixed words for English if not already set.
-\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
-\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
-\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
-\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
-\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
-\ifx\putwordon\undefined \gdef\putwordon{on}\fi
-\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi
-\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi
-\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi
-\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi
-\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi
-\ifx\putwordShortContents\undefined \gdef\putwordShortContents{Short Contents}\fi
-\ifx\putwordTableofContents\undefined\gdef\putwordTableofContents{Table of Contents}\fi
+\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
+\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
+\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
+\ifx\putwordin\undefined \gdef\putwordin{in}\fi
+\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
+\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
+\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
+\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi
+\ifx\putwordof\undefined \gdef\putwordof{of}\fi
+\ifx\putwordon\undefined \gdef\putwordon{on}\fi
+\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi
+\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi
+\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi
+\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi
+\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi
+\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi
+\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi
+%
+\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
+\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
+\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
+\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
+\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
+\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
+\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
+\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
+\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
+\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
+\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
+\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
+%
+\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi
+\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi
+\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi
+\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
+\ifx\putwordDeftypevar\undefined\gdef\putwordDeftypevar{Variable}\fi
+\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
+\ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi
% Ignore a token.
%
@@ -148,7 +172,7 @@
% For @cropmarks command.
% Do @cropmarks to get crop marks.
-%
+%
\newif\ifcropmarks
\let\cropmarks = \cropmarkstrue
%
@@ -192,13 +216,16 @@
\shipout\vbox{%
\ifcropmarks \vbox to \outervsize\bgroup
\hsize = \outerhsize
- \line{\ewtop\hfil\ewtop}%
- \nointerlineskip
- \line{%
- \vbox{\moveleft\cornerthick\nstop}%
- \hfill
- \vbox{\moveright\cornerthick\nstop}%
- }%
+ \vskip-\topandbottommargin
+ \vtop to0pt{%
+ \line{\ewtop\hfil\ewtop}%
+ \nointerlineskip
+ \line{%
+ \vbox{\moveleft\cornerthick\nstop}%
+ \hfill
+ \vbox{\moveright\cornerthick\nstop}%
+ }%
+ \vss}%
\vskip\topandbottommargin
\line\bgroup
\hfil % center the page within the outer (page) hsize.
@@ -216,18 +243,22 @@
\unvbox\footlinebox
\fi
%
+ \ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi
+ %
\ifcropmarks
\egroup % end of \vbox\bgroup
\hfil\egroup % end of (centering) \line\bgroup
\vskip\topandbottommargin plus1fill minus1fill
\boxmaxdepth = \cornerthick
- \line{%
- \vbox{\moveleft\cornerthick\nsbot}%
- \hfill
- \vbox{\moveright\cornerthick\nsbot}%
+ \vbox to0pt{\vss
+ \line{%
+ \vbox{\moveleft\cornerthick\nsbot}%
+ \hfill
+ \vbox{\moveright\cornerthick\nsbot}%
+ }%
+ \nointerlineskip
+ \line{\ewbot\hfil\ewbot}%
}%
- \nointerlineskip
- \line{\ewbot\hfil\ewbot}%
\egroup % \vbox from first cropmarks clause
\fi
}% end of \shipout\vbox
@@ -568,36 +599,42 @@ where each line of input produces a line of output.}
%}}
\def\needx#1{%
- % Go into vertical mode, so we don't make a big box in the middle of a
+ % Ensure vertical mode, so we don't make a big box in the middle of a
% paragraph.
\par
%
- % Don't add any leading before our big empty box, but allow a page
- % break, since the best break might be right here.
- \allowbreak
- \nointerlineskip
- \vtop to #1\mil{\vfil}%
- %
- % TeX does not even consider page breaks if a penalty added to the
- % main vertical list is 10000 or more. But in order to see if the
- % empty box we just added fits on the page, we must make it consider
- % page breaks. On the other hand, we don't want to actually break the
- % page after the empty box. So we use a penalty of 9999.
- %
- % There is an extremely small chance that TeX will actually break the
- % page at this \penalty, if there are no other feasible breakpoints in
- % sight. (If the user is using lots of big @group commands, which
- % almost-but-not-quite fill up a page, TeX will have a hard time doing
- % good page breaking, for example.) However, I could not construct an
- % example where a page broke at this \penalty; if it happens in a real
- % document, then we can reconsider our strategy.
- \penalty9999
- %
- % Back up by the size of the box, whether we did a page break or not.
- \kern -#1\mil
- %
- % Do not allow a page break right after this kern.
- \nobreak
+ % If the @need value is less than one line space, it's useless.
+ \dimen0 = #1\mil
+ \dimen2 = \ht\strutbox
+ \advance\dimen2 by \dp\strutbox
+ \ifdim\dimen0 > \dimen2
+ %
+ % Do a \strut just to make the height of this box be normal, so the
+ % normal leading is inserted relative to the preceding line.
+ % And a page break here is fine.
+ \vtop to #1\mil{\strut\vfil}%
+ %
+ % TeX does not even consider page breaks if a penalty added to the
+ % main vertical list is 10000 or more. But in order to see if the
+ % empty box we just added fits on the page, we must make it consider
+ % page breaks. On the other hand, we don't want to actually break the
+ % page after the empty box. So we use a penalty of 9999.
+ %
+ % There is an extremely small chance that TeX will actually break the
+ % page at this \penalty, if there are no other feasible breakpoints in
+ % sight. (If the user is using lots of big @group commands, which
+ % almost-but-not-quite fill up a page, TeX will have a hard time doing
+ % good page breaking, for example.) However, I could not construct an
+ % example where a page broke at this \penalty; if it happens in a real
+ % document, then we can reconsider our strategy.
+ \penalty9999
+ %
+ % Back up by the size of the box, whether we did a page break or not.
+ \kern -#1\mil
+ %
+ % Do not allow a page break right after this kern.
+ \nobreak
+ \fi
}
% @br forces paragraph break
@@ -618,7 +655,7 @@ where each line of input produces a line of output.}
}
% @enddots{} is an end-of-sentence ellipsis.
-%
+%
\def\enddots{%
\leavevmode
\hbox to 2em{%
@@ -705,353 +742,43 @@ where each line of input produces a line of output.}
\let\c=\comment
-% @paragraphindent is defined for the Info formatting commands only.
-\let\paragraphindent=\comment
-
-% Prevent errors for section commands.
-% Used in @ignore and in failing conditionals.
-\def\ignoresections{%
-\let\chapter=\relax
-\let\unnumbered=\relax
-\let\top=\relax
-\let\unnumberedsec=\relax
-\let\unnumberedsection=\relax
-\let\unnumberedsubsec=\relax
-\let\unnumberedsubsection=\relax
-\let\unnumberedsubsubsec=\relax
-\let\unnumberedsubsubsection=\relax
-\let\section=\relax
-\let\subsec=\relax
-\let\subsubsec=\relax
-\let\subsection=\relax
-\let\subsubsection=\relax
-\let\appendix=\relax
-\let\appendixsec=\relax
-\let\appendixsection=\relax
-\let\appendixsubsec=\relax
-\let\appendixsubsection=\relax
-\let\appendixsubsubsec=\relax
-\let\appendixsubsubsection=\relax
-\let\contents=\relax
-\let\smallbook=\relax
-\let\titlepage=\relax
-}
-
-% Used in nested conditionals, where we have to parse the Texinfo source
-% and so want to turn off most commands, in case they are used
-% incorrectly.
-%
-\def\ignoremorecommands{%
- \let\defcodeindex = \relax
- \let\defcv = \relax
- \let\deffn = \relax
- \let\deffnx = \relax
- \let\defindex = \relax
- \let\defivar = \relax
- \let\defmac = \relax
- \let\defmethod = \relax
- \let\defop = \relax
- \let\defopt = \relax
- \let\defspec = \relax
- \let\deftp = \relax
- \let\deftypefn = \relax
- \let\deftypefun = \relax
- \let\deftypevar = \relax
- \let\deftypevr = \relax
- \let\defun = \relax
- \let\defvar = \relax
- \let\defvr = \relax
- \let\ref = \relax
- \let\xref = \relax
- \let\printindex = \relax
- \let\pxref = \relax
- \let\settitle = \relax
- \let\setchapternewpage = \relax
- \let\setchapterstyle = \relax
- \let\everyheading = \relax
- \let\evenheading = \relax
- \let\oddheading = \relax
- \let\everyfooting = \relax
- \let\evenfooting = \relax
- \let\oddfooting = \relax
- \let\headings = \relax
- \let\include = \relax
- \let\lowersections = \relax
- \let\down = \relax
- \let\raisesections = \relax
- \let\up = \relax
- \let\set = \relax
- \let\clear = \relax
- \let\item = \relax
-}
-
-% Ignore @ignore ... @end ignore.
-%
-\def\ignore{\doignore{ignore}}
-
-% Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text.
-%
-\def\ifinfo{\doignore{ifinfo}}
-\def\ifhtml{\doignore{ifhtml}}
-\def\ifnottex{\doignore{ifnottex}}
-\def\html{\doignore{html}}
-\def\menu{\doignore{menu}}
-\def\direntry{\doignore{direntry}}
-
-% @dircategory CATEGORY -- specify a category of the dir file
-% which this file should belong to. Ignore this in TeX.
-\let\dircategory = \comment
-
-% Ignore text until a line `@end #1'.
-%
-\def\doignore#1{\begingroup
- % Don't complain about control sequences we have declared \outer.
- \ignoresections
- %
- % Define a command to swallow text until we reach `@end #1'.
- % This @ is a catcode 12 token (that is the normal catcode of @ in
- % this texinfo.tex file). We change the catcode of @ below to match.
- \long\def\doignoretext##1@end #1{\enddoignore}%
- %
- % Make sure that spaces turn into tokens that match what \doignoretext wants.
- \catcode32 = 10
- %
- % Ignore braces, too, so mismatched braces don't cause trouble.
- \catcode`\{ = 9
- \catcode`\} = 9
- %
- % We must not have @c interpreted as a control sequence.
- \catcode`\@ = 12
- %
- % Make the letter c a comment character so that the rest of the line
- % will be ignored. This way, the document can have (for example)
- % @c @end ifinfo
- % and the @end ifinfo will be properly ignored.
- % (We've just changed @ to catcode 12.)
- \catcode`\c = 14
- %
- % And now expand that command.
- \doignoretext
-}
-
-% What we do to finish off ignored text.
-%
-\def\enddoignore{\endgroup\ignorespaces}%
-
-\newif\ifwarnedobs\warnedobsfalse
-\def\obstexwarn{%
- \ifwarnedobs\relax\else
- % We need to warn folks that they may have trouble with TeX 3.0.
- % This uses \immediate\write16 rather than \message to get newlines.
- \immediate\write16{}
- \immediate\write16{***WARNING*** for users of Unix TeX 3.0!}
- \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).}
- \immediate\write16{If you are running another version of TeX, relax.}
- \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
- \immediate\write16{ Then upgrade your TeX installation if you can.}
- \immediate\write16{ (See ftp://ftp.gnu.ai.mit.edu/pub/gnu/TeX.README.)}
- \immediate\write16{If you are stuck with version 3.0, run the}
- \immediate\write16{ script ``tex3patch'' from the Texinfo distribution}
- \immediate\write16{ to use a workaround.}
- \immediate\write16{}
- \global\warnedobstrue
- \fi
-}
-
-% **In TeX 3.0, setting text in \nullfont hangs tex. For a
-% workaround (which requires the file ``dummy.tfm'' to be installed),
-% uncomment the following line:
-%%%%%\font\nullfont=dummy\let\obstexwarn=\relax
-
-% Ignore text, except that we keep track of conditional commands for
-% purposes of nesting, up to an `@end #1' command.
-%
-\def\nestedignore#1{%
- \obstexwarn
- % We must actually expand the ignored text to look for the @end
- % command, so that nested ignore constructs work. Thus, we put the
- % text into a \vbox and then do nothing with the result. To minimize
- % the change of memory overflow, we follow the approach outlined on
- % page 401 of the TeXbook: make the current font be a dummy font.
- %
- \setbox0 = \vbox\bgroup
- % Don't complain about control sequences we have declared \outer.
- \ignoresections
- %
- % Define `@end #1' to end the box, which will in turn undefine the
- % @end command again.
- \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}%
- %
- % We are going to be parsing Texinfo commands. Most cause no
- % trouble when they are used incorrectly, but some commands do
- % complicated argument parsing or otherwise get confused, so we
- % undefine them.
- %
- % We can't do anything about stray @-signs, unfortunately;
- % they'll produce `undefined control sequence' errors.
- \ignoremorecommands
- %
- % Set the current font to be \nullfont, a TeX primitive, and define
- % all the font commands to also use \nullfont. We don't use
- % dummy.tfm, as suggested in the TeXbook, because not all sites
- % might have that installed. Therefore, math mode will still
- % produce output, but that should be an extremely small amount of
- % stuff compared to the main input.
- %
- \nullfont
- \let\tenrm = \nullfont \let\tenit = \nullfont \let\tensl = \nullfont
- \let\tenbf = \nullfont \let\tentt = \nullfont \let\smallcaps = \nullfont
- \let\tensf = \nullfont
- % Similarly for index fonts (mostly for their use in
- % smallexample)
- \let\indrm = \nullfont \let\indit = \nullfont \let\indsl = \nullfont
- \let\indbf = \nullfont \let\indtt = \nullfont \let\indsc = \nullfont
- \let\indsf = \nullfont
- %
- % Don't complain when characters are missing from the fonts.
- \tracinglostchars = 0
- %
- % Don't bother to do space factor calculations.
- \frenchspacing
- %
- % Don't report underfull hboxes.
- \hbadness = 10000
- %
- % Do minimal line-breaking.
- \pretolerance = 10000
- %
- % Do not execute instructions in @tex
- \def\tex{\doignore{tex}}%
- % Do not execute macro definitions.
- % `c' is a comment character, so the word `macro' will get cut off.
- \def\macro{\doignore{ma}}%
-}
-
-% @set VAR sets the variable VAR to an empty value.
-% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
-%
-% Since we want to separate VAR from REST-OF-LINE (which might be
-% empty), we can't just use \parsearg; we have to insert a space of our
-% own to delimit the rest of the line, and then take it out again if we
-% didn't need it. Make sure the catcode of space is correct to avoid
-% losing inside @example, for instance.
-%
-\def\set{\begingroup\catcode` =10
- \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR.
- \parsearg\setxxx}
-\def\setxxx#1{\setyyy#1 \endsetyyy}
-\def\setyyy#1 #2\endsetyyy{%
- \def\temp{#2}%
- \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty
- \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted.
- \fi
- \endgroup
-}
-% Can't use \xdef to pre-expand #2 and save some time, since \temp or
-% \next or other control sequences that we've defined might get us into
-% an infinite loop. Consider `@set foo @cite{bar}'.
-\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}}
-
-% @clear VAR clears (i.e., unsets) the variable VAR.
-%
-\def\clear{\parsearg\clearxxx}
-\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax}
-
-% @value{foo} gets the text saved in variable foo.
-%
-{
- \catcode`\_ = \active
- %
- % We might end up with active _ or - characters in the argument if
- % we're called from @code, as @code{@value{foo-bar_}}. So \let any
- % such active characters to their normal equivalents.
- \gdef\value{\begingroup
- \catcode`\-=12 \catcode`\_=12
- \indexbreaks \let_\normalunderscore
- \valuexxx}
-}
-\def\valuexxx#1{\expandablevalue{#1}\endgroup}
-
-% We have this subroutine so that we can handle at least some @value's
-% properly in indexes (we \let\value to this in \indexdummies). Ones
-% whose names contain - or _ still won't work, but we can't do anything
-% about that. The command has to be fully expandable, since the result
-% winds up in the index file. This means that if the variable's value
-% contains other Texinfo commands, it's almost certain it will fail
-% (although perhaps we could fix that with sufficient work to do a
-% one-level expansion on the result, instead of complete).
+% @paragraphindent NCHARS
+% We'll use ems for NCHARS, close enough.
+% We cannot implement @paragraphindent asis, though.
%
-\def\expandablevalue#1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- {[No value for ``#1'']v}%
- \else
- \csname SET#1\endcsname
- \fi
-}
-
-% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
-% with @set.
+\def\asisword{asis} % no translation, these are keywords
+\def\noneword{none}
%
-\def\ifset{\parsearg\ifsetxxx}
-\def\ifsetxxx #1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- \expandafter\ifsetfail
+\def\paragraphindent{\parsearg\doparagraphindent}
+\def\doparagraphindent#1{%
+ \def\temp{#1}%
+ \ifx\temp\asisword
\else
- \expandafter\ifsetsucceed
+ \ifx\temp\noneword
+ \defaultparindent = 0pt
+ \else
+ \defaultparindent = #1em
+ \fi
\fi
+ \parindent = \defaultparindent
}
-\def\ifsetsucceed{\conditionalsucceed{ifset}}
-\def\ifsetfail{\nestedignore{ifset}}
-\defineunmatchedend{ifset}
-% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
-% defined with @set, or has been undefined with @clear.
-%
-\def\ifclear{\parsearg\ifclearxxx}
-\def\ifclearxxx #1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- \expandafter\ifclearsucceed
+% @exampleindent NCHARS
+% We'll use ems for NCHARS like @paragraphindent.
+% It seems @exampleindent asis isn't necessary, but
+% I preserve it to make it similar to @paragraphindent.
+\def\exampleindent{\parsearg\doexampleindent}
+\def\doexampleindent#1{%
+ \def\temp{#1}%
+ \ifx\temp\asisword
\else
- \expandafter\ifclearfail
+ \ifx\temp\noneword
+ \lispnarrowing = 0pt
+ \else
+ \lispnarrowing = #1em
+ \fi
\fi
}
-\def\ifclearsucceed{\conditionalsucceed{ifclear}}
-\def\ifclearfail{\nestedignore{ifclear}}
-\defineunmatchedend{ifclear}
-
-% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text
-% following, through the first @end iftex (etc.). Make `@end iftex'
-% (etc.) valid only after an @iftex.
-%
-\def\iftex{\conditionalsucceed{iftex}}
-\def\ifnothtml{\conditionalsucceed{ifnothtml}}
-\def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
-\defineunmatchedend{iftex}
-\defineunmatchedend{ifnothtml}
-\defineunmatchedend{ifnotinfo}
-
-% We can't just want to start a group at @iftex (for example) and end it
-% at @end iftex, since then @set commands inside the conditional have no
-% effect (they'd get reverted at the end of the group). So we must
-% define \Eiftex to redefine itself to be its previous value. (We can't
-% just define it to fail again with an ``unmatched end'' error, since
-% the @ifset might be nested.)
-%
-\def\conditionalsucceed#1{%
- \edef\temp{%
- % Remember the current value of \E#1.
- \let\nece{prevE#1} = \nece{E#1}%
- %
- % At the `@end #1', redefine \E#1 to be its previous value.
- \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}%
- }%
- \temp
-}
-
-% We need to expand lots of \csname's, but we don't want to expand the
-% control sequences after we've constructed them.
-%
-\def\nece#1{\expandafter\noexpand\csname#1\endcsname}
% @asis just yields its argument. Used with @table, for example.
%
@@ -1088,7 +815,7 @@ where each line of input produces a line of output.}
% So open here the files we need to have open while reading the input.
% This makes it possible to make a .fmt file for texinfo.
\def\setfilename{%
- \iflinks
+ \iflinks
\readauxfile
\fi % \openindices needs to do some work in any case.
\openindices
@@ -1107,7 +834,7 @@ where each line of input produces a line of output.}
}
% Called from \setfilename.
-%
+%
\def\openindices{%
\newindex{cp}%
\newcodeindex{fn}%
@@ -1121,6 +848,178 @@ where each line of input produces a line of output.}
\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
+\message{pdf,}
+% adobe `portable' document format
+\newcount\tempnum
+\newcount\lnkcount
+\newtoks\filename
+\newcount\filenamelength
+\newcount\pgn
+\newtoks\toksA
+\newtoks\toksB
+\newtoks\toksC
+\newtoks\toksD
+\newbox\boxA
+\newcount\countA
+\newif\ifpdf
+\newif\ifpdfmakepagedest
+
+\ifx\pdfoutput\undefined
+ \pdffalse
+ \let\pdfmkdest = \gobble
+ \let\pdfurl = \gobble
+ \let\endlink = \relax
+ \let\linkcolor = \relax
+ \let\pdfmakeoutlines = \relax
+\else
+ \pdftrue
+ \pdfoutput = 1
+ \input pdfcolor
+ \def\dopdfimage#1#2#3{%
+ \def\imagewidth{#2}%
+ \def\imageheight{#3}%
+ \ifnum\pdftexversion < 14
+ \pdfimage
+ \else
+ \pdfximage
+ \fi
+ \ifx\empty\imagewidth\else width \imagewidth \fi
+ \ifx\empty\imageheight\else height \imageheight \fi
+ {#1.pdf}%
+ \ifnum\pdftexversion < 14 \else
+ \pdfrefximage \pdflastximage
+ \fi}
+ \def\pdfmkdest#1{\pdfdest name{#1@} xyz}
+ \def\pdfmkpgn#1{#1@}
+ \let\linkcolor = \Cyan
+ \def\endlink{\Black\pdfendlink}
+ % Adding outlines to PDF; macros for calculating structure of outlines
+ % come from Petr Olsak
+ \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
+ \else \csname#1\endcsname \fi}
+ \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
+ \advance\tempnum by1
+ \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
+ \def\pdfmakeoutlines{{%
+ \openin 1 \jobname.toc
+ \ifeof 1\else\bgroup
+ \closein 1
+ \indexnofonts
+ \def\tt{}
+ % thanh's hack / proper braces in bookmarks
+ \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
+ \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
+ %
+ \def\chapentry ##1##2##3{}
+ \def\unnumbchapentry ##1##2{}
+ \def\secentry ##1##2##3##4{\advancenumber{chap##2}}
+ \def\unnumbsecentry ##1##2{}
+ \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}
+ \def\unnumbsubsecentry ##1##2{}
+ \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}}
+ \def\unnumbsubsubsecentry ##1##2{}
+ \input \jobname.toc
+ \def\chapentry ##1##2##3{%
+ \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}
+ \def\unnumbchapentry ##1##2{%
+ \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
+ \def\secentry ##1##2##3##4{%
+ \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}
+ \def\unnumbsecentry ##1##2{%
+ \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
+ \def\subsecentry ##1##2##3##4##5{%
+ \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}
+ \def\unnumbsubsecentry ##1##2{%
+ \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
+ \def\subsubsecentry ##1##2##3##4##5##6{%
+ \pdfoutline goto name{\pdfmkpgn{##6}}{##1}}
+ \def\unnumbsubsubsecentry ##1##2{%
+ \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
+ \input \jobname.toc
+ \egroup\fi
+ }}
+ \def\makelinks #1,{%
+ \def\params{#1}\def\E{END}%
+ \ifx\params\E
+ \let\nextmakelinks=\relax
+ \else
+ \let\nextmakelinks=\makelinks
+ \ifnum\lnkcount>0,\fi
+ \picknum{#1}%
+ \startlink attr{/Border [0 0 0]}
+ goto name{\pdfmkpgn{\the\pgn}}%
+ \linkcolor #1%
+ \advance\lnkcount by 1%
+ \endlink
+ \fi
+ \nextmakelinks
+ }
+ \def\picknum#1{\expandafter\pn#1}
+ \def\pn#1{%
+ \def\p{#1}%
+ \ifx\p\lbrace
+ \let\nextpn=\ppn
+ \else
+ \let\nextpn=\ppnn
+ \def\first{#1}
+ \fi
+ \nextpn
+ }
+ \def\ppn#1{\pgn=#1\gobble}
+ \def\ppnn{\pgn=\first}
+ \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,}
+ \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+ \def\skipspaces#1{\def\PP{#1}\def\D{|}%
+ \ifx\PP\D\let\nextsp\relax
+ \else\let\nextsp\skipspaces
+ \ifx\p\space\else\addtokens{\filename}{\PP}%
+ \advance\filenamelength by 1
+ \fi
+ \fi
+ \nextsp}
+ \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
+ \ifnum\pdftexversion < 14
+ \let \startlink \pdfannotlink
+ \else
+ \let \startlink \pdfstartlink
+ \fi
+ \def\pdfurl#1{%
+ \begingroup
+ \normalturnoffactive\def\@{@}%
+ \leavevmode\Red
+ \startlink attr{/Border [0 0 0]}%
+ user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
+ % #1
+ \endgroup}
+ \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
+ \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+ \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
+ \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
+ \def\maketoks{%
+ \expandafter\poptoks\the\toksA|ENDTOKS|
+ \ifx\first0\adn0
+ \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
+ \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
+ \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
+ \else
+ \ifnum0=\countA\else\makelink\fi
+ \ifx\first.\let\next=\done\else
+ \let\next=\maketoks
+ \addtokens{\toksB}{\the\toksD}
+ \ifx\first,\addtokens{\toksB}{\space}\fi
+ \fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \next}
+ \def\makelink{\addtokens{\toksB}%
+ {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
+ \def\pdflink#1{%
+ \startlink attr{/Border [0 0 0]} goto name{\mkpgn{#1}}
+ \linkcolor #1\endlink}
+ \def\mkpgn#1{#1@}
+ \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
+\fi % \ifx\pdfoutput
+
+
\message{fonts,}
% Font-change commands.
@@ -1190,23 +1089,17 @@ where each line of input produces a line of output.}
\setfont\deftt\ttshape{10}{\magstep1}
\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}
-% Fonts for indices and small examples (9pt).
-% We actually use the slanted font rather than the italic,
-% because texinfo normally uses the slanted fonts for that.
-% Do not make many font distinctions in general in the index, since they
-% aren't very useful.
-\setfont\ninett\ttshape{9}{1000}
-\setfont\ninettsl\ttslshape{10}{900}
-\setfont\indrm\rmshape{9}{1000}
-\setfont\indit\itshape{9}{1000}
-\setfont\indsl\slshape{9}{1000}
-\let\indtt=\ninett
-\let\indttsl=\ninettsl
-\let\indsf=\indrm
-\let\indbf=\indrm
-\setfont\indsc\scshape{10}{900}
-\font\indi=cmmi9
-\font\indsy=cmsy9
+% Fonts for indices, footnotes, small examples (9pt).
+\setfont\smallrm\rmshape{9}{1000}
+\setfont\smalltt\ttshape{9}{1000}
+\setfont\smallbf\bfshape{10}{900}
+\setfont\smallit\itshape{9}{1000}
+\setfont\smallsl\slshape{9}{1000}
+\setfont\smallsf\sfshape{9}{1000}
+\setfont\smallsc\scshape{10}{900}
+\setfont\smallttsl\ttslshape{10}{900}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
% Fonts for title page:
\setfont\titlerm\rmbshape{12}{\magstep3}
@@ -1320,11 +1213,12 @@ where each line of input produces a line of output.}
\let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl
\resetmathfonts \setleading{15pt}}
\let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf?
-\def\indexfonts{%
- \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl
- \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc
- \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy \let\tenttsl=\indttsl
- \resetmathfonts \setleading{12pt}}
+\def\smallfonts{%
+ \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
+ \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
+ \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
+ \let\tenttsl=\smallttsl
+ \resetmathfonts \setleading{11pt}}
% Set up the default fonts, so we can use them for creating boxes.
%
@@ -1373,9 +1267,9 @@ where each line of input produces a line of output.}
}
\let\ttfont=\t
\def\samp#1{`\tclose{#1}'\null}
-\setfont\smallrm\rmshape{8}{1000}
-\font\smallsy=cmsy9
-\def\key#1{{\smallrm\textfont2=\smallsy \leavevmode\hbox{%
+\setfont\keyrm\rmshape{8}{1000}
+\font\keysy=cmsy9
+\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
\raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
\vbox{\hrule\kern-0.4pt
\hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
@@ -1479,24 +1373,50 @@ where each line of input produces a line of output.}
\let\env=\code
\let\command=\code
-% @uref (abbreviation for `urlref') takes an optional second argument
-% specifying the text to display. First (mandatory) arg is the url.
-% Perhaps eventually put in a hypertex \special here.
-%
-\def\uref#1{\urefxxx #1,,\finish}
-\def\urefxxx#1,#2,#3\finish{%
- \setbox0 = \hbox{\ignorespaces #2}%
+% @uref (abbreviation for `urlref') takes an optional (comma-separated)
+% second argument specifying the text to display and an optional third
+% arg as text to display instead of (rather than in addition to) the url
+% itself. First (mandatory) arg is the url. Perhaps eventually put in
+% a hypertex \special here.
+%
+\def\uref#1{\douref #1,,,\finish}
+\def\douref#1,#2,#3,#4\finish{\begingroup
+ \unsepspaces
+ \pdfurl{#1}%
+ \setbox0 = \hbox{\ignorespaces #3}%
\ifdim\wd0 > 0pt
- \unhbox0\ (\code{#1})%
+ \unhbox0 % third arg given, show only that
\else
- \code{#1}%
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0 > 0pt
+ \ifpdf
+ \unhbox0 % PDF: 2nd arg given, show only it
+ \else
+ \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
+ \fi
+ \else
+ \code{#1}% only url given, so show it
+ \fi
\fi
-}
+ \endlink
+\endgroup}
-% rms does not like the angle brackets --karl, 17may97.
-% So now @email is just like @uref.
+% rms does not like angle brackets --karl, 17may97.
+% So now @email is just like @uref, unless we are pdf.
+%
%\def\email#1{\angleleft{\tt #1}\angleright}
-\let\email=\uref
+\ifpdf
+ \def\email#1{\doemail#1,,\finish}
+ \def\doemail#1,#2,#3\finish{\begingroup
+ \unsepspaces
+ \pdfurl{mailto:#1}%
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
+ \endlink
+ \endgroup}
+\else
+ \let\email=\uref
+\fi
% Check if we are currently using a typewriter font. Since all the
% Computer Modern typewriter fonts have zero interword stretch (and
@@ -1539,8 +1459,8 @@ where each line of input produces a line of output.}
\newif\iffinishedtitlepage
% Do an implicit @contents or @shortcontents after @end titlepage if the
-% user says @contentsaftertitlepage or @shortcontentsaftertitlepage.
-%
+% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
+%
\newif\ifsetcontentsaftertitlepage
\let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
\newif\ifsetshortcontentsaftertitlepage
@@ -1615,6 +1535,8 @@ where each line of input produces a line of output.}
\global\let\shortcontents = \relax
\fi
%
+ \ifpdf \pdfmakepagedesttrue \fi
+ %
\HEADINGSon
}
@@ -1749,22 +1671,18 @@ where each line of input produces a line of output.}
% Subroutines used in generating headings
% Produces Day Month Year style of output.
-\def\today{\number\day\space
-\ifcase\month\or
-January\or February\or March\or April\or May\or June\or
-July\or August\or September\or October\or November\or December\fi
-\space\number\year}
-
-% Use this if you want the Month Day, Year style of output.
-%\def\today{\ifcase\month\or
-%January\or February\or March\or April\or May\or June\or
-%July\or August\or September\or October\or November\or December\fi
-%\space\number\day, \number\year}
-
-% @settitle line... specifies the title of the document, for headings
-% It generates no output of its own
-
-\def\thistitle{No Title}
+\def\today{%
+ \number\day\space
+ \ifcase\month
+ \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
+ \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
+ \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
+ \fi
+ \space\number\year}
+
+% @settitle line... specifies the title of the document, for headings.
+% It generates no output of its own.
+\def\thistitle{\putwordNoTitle}
\def\settitle{\parsearg\settitlezzz}
\def\settitlezzz #1{\gdef\thistitle{#1}}
@@ -1841,7 +1759,7 @@ July\or August\or September\or October\or November\or December\fi
\itemxneedsnegativevskipfalse
\else
% The item text fits into the space. Start a paragraph, so that the
- % following text (if any) will end up on the same line.
+ % following text (if any) will end up on the same line.
\noindent
% Do this with kerns and \unhbox so that if there is a footnote in
% the item text, it can migrate to the main vertical list and
@@ -2138,46 +2056,60 @@ July\or August\or September\or October\or November\or December\fi
\multitablelinespace=0pt
% Macros used to set up halign preamble:
-%
+%
\let\endsetuptable\relax
\def\xendsetuptable{\endsetuptable}
\let\columnfractions\relax
\def\xcolumnfractions{\columnfractions}
\newif\ifsetpercent
-% 2/1/96, to allow fractions to be given with more than one digit.
-\def\pickupwholefraction#1 {\global\advance\colcount by1 %
-\expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}%
-\setuptable}
+% #1 is the part of the @columnfraction before the decimal point, which
+% is presumably either 0 or the empty string (but we don't check, we
+% just throw it away). #2 is the decimal part, which we use as the
+% percent of \hsize for this column.
+\def\pickupwholefraction#1.#2 {%
+ \global\advance\colcount by 1
+ \expandafter\xdef\csname col\the\colcount\endcsname{.#2\hsize}%
+ \setuptable
+}
\newcount\colcount
-\def\setuptable#1{\def\firstarg{#1}%
-\ifx\firstarg\xendsetuptable\let\go\relax%
-\else
- \ifx\firstarg\xcolumnfractions\global\setpercenttrue%
+\def\setuptable#1{%
+ \def\firstarg{#1}%
+ \ifx\firstarg\xendsetuptable
+ \let\go = \relax
\else
- \ifsetpercent
- \let\go\pickupwholefraction % In this case arg of setuptable
- % is the decimal point before the
- % number given in percent of hsize.
- % We don't need this so we don't use it.
+ \ifx\firstarg\xcolumnfractions
+ \global\setpercenttrue
\else
- \global\advance\colcount by1
- \setbox0=\hbox{#1 }% Add a normal word space as a separator;
- % typically that is always in the input, anyway.
- \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
+ \ifsetpercent
+ \let\go\pickupwholefraction
+ \else
+ \global\advance\colcount by 1
+ \setbox0=\hbox{#1\unskip }% Add a normal word space as a separator;
+ % typically that is always in the input, anyway.
+ \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
+ \fi
+ \fi
+ \ifx\go\pickupwholefraction
+ % Put the argument back for the \pickupwholefraction call, so
+ % we'll always have a period there to be parsed.
+ \def\go{\pickupwholefraction#1}%
+ \else
+ \let\go = \setuptable
\fi%
- \fi%
-\ifx\go\pickupwholefraction\else\let\go\setuptable\fi%
-\fi\go}
+ \fi
+ \go
+}
-% multitable syntax
-\def\tab{&\hskip1sp\relax} % 2/2/96
- % tiny skip here makes sure this column space is
- % maintained, even if it is never used.
+% This used to have \hskip1sp. But then the space in a template line is
+% not enough. That is bad. So let's go back to just & until we
+% encounter the problem it was intended to solve again.
+% --karl, nathan@acm.org, 20apr99.
+\def\tab{&}
% @multitable ... @end multitable definitions:
-
+%
\def\multitable{\parsearg\dotable}
\def\dotable#1{\bgroup
\vskip\parskip
@@ -2216,15 +2148,15 @@ July\or August\or September\or October\or November\or December\fi
% In order to keep entries from bumping into each other
% we will add a \leftskip of \multitablecolspace to all columns after
% the first one.
- %
+ %
% If a template has been used, we will add \multitablecolspace
% to the width of each template entry.
- %
+ %
% If the user has set preamble in terms of percent of \hsize we will
% use that dimension as the width of the column, and the \leftskip
% will keep entries from bumping into each other. Table will start at
% left margin and final column will justify at right margin.
- %
+ %
% Make sure we don't inherit \rightskip from the outer environment.
\rightskip=0pt
\ifnum\colcount=1
@@ -2255,15 +2187,18 @@ July\or August\or September\or October\or November\or December\fi
% If so, do nothing. If not, give it an appropriate dimension based on
% current baselineskip.
\ifdim\multitablelinespace=0pt
+\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
+\global\advance\multitablelinespace by-\ht0
%% strut to put in table in case some entry doesn't have descenders,
%% to keep lines equally spaced
\let\multistrut = \strut
-%% Test to see if parskip is larger than space between lines of
-%% table. If not, do nothing.
-%% If so, set to same dimension as multitablelinespace.
\else
+%% FIXME: what is \box0 supposed to be?
\gdef\multistrut{\vrule height\multitablelinespace depth\dp0
width0pt\relax} \fi
+%% Test to see if parskip is larger than space between lines of
+%% table. If not, do nothing.
+%% If so, set to same dimension as multitablelinespace.
\ifdim\multitableparskip>\multitablelinespace
\global\multitableparskip=\multitablelinespace
\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
@@ -2276,6 +2211,356 @@ width0pt\relax} \fi
\fi}
+\message{conditionals,}
+% Prevent errors for section commands.
+% Used in @ignore and in failing conditionals.
+\def\ignoresections{%
+ \let\chapter=\relax
+ \let\unnumbered=\relax
+ \let\top=\relax
+ \let\unnumberedsec=\relax
+ \let\unnumberedsection=\relax
+ \let\unnumberedsubsec=\relax
+ \let\unnumberedsubsection=\relax
+ \let\unnumberedsubsubsec=\relax
+ \let\unnumberedsubsubsection=\relax
+ \let\section=\relax
+ \let\subsec=\relax
+ \let\subsubsec=\relax
+ \let\subsection=\relax
+ \let\subsubsection=\relax
+ \let\appendix=\relax
+ \let\appendixsec=\relax
+ \let\appendixsection=\relax
+ \let\appendixsubsec=\relax
+ \let\appendixsubsection=\relax
+ \let\appendixsubsubsec=\relax
+ \let\appendixsubsubsection=\relax
+ \let\contents=\relax
+ \let\smallbook=\relax
+ \let\titlepage=\relax
+}
+
+% Used in nested conditionals, where we have to parse the Texinfo source
+% and so want to turn off most commands, in case they are used
+% incorrectly.
+%
+\def\ignoremorecommands{%
+ \let\defcodeindex = \relax
+ \let\defcv = \relax
+ \let\deffn = \relax
+ \let\deffnx = \relax
+ \let\defindex = \relax
+ \let\defivar = \relax
+ \let\defmac = \relax
+ \let\defmethod = \relax
+ \let\defop = \relax
+ \let\defopt = \relax
+ \let\defspec = \relax
+ \let\deftp = \relax
+ \let\deftypefn = \relax
+ \let\deftypefun = \relax
+ \let\deftypeivar = \relax
+ \let\deftypeop = \relax
+ \let\deftypevar = \relax
+ \let\deftypevr = \relax
+ \let\defun = \relax
+ \let\defvar = \relax
+ \let\defvr = \relax
+ \let\ref = \relax
+ \let\xref = \relax
+ \let\printindex = \relax
+ \let\pxref = \relax
+ \let\settitle = \relax
+ \let\setchapternewpage = \relax
+ \let\setchapterstyle = \relax
+ \let\everyheading = \relax
+ \let\evenheading = \relax
+ \let\oddheading = \relax
+ \let\everyfooting = \relax
+ \let\evenfooting = \relax
+ \let\oddfooting = \relax
+ \let\headings = \relax
+ \let\include = \relax
+ \let\lowersections = \relax
+ \let\down = \relax
+ \let\raisesections = \relax
+ \let\up = \relax
+ \let\set = \relax
+ \let\clear = \relax
+ \let\item = \relax
+}
+
+% Ignore @ignore ... @end ignore.
+%
+\def\ignore{\doignore{ignore}}
+
+% Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text.
+%
+\def\ifinfo{\doignore{ifinfo}}
+\def\ifhtml{\doignore{ifhtml}}
+\def\ifnottex{\doignore{ifnottex}}
+\def\html{\doignore{html}}
+\def\menu{\doignore{menu}}
+\def\direntry{\doignore{direntry}}
+
+% @dircategory CATEGORY -- specify a category of the dir file
+% which this file should belong to. Ignore this in TeX.
+\let\dircategory = \comment
+
+% Ignore text until a line `@end #1'.
+%
+\def\doignore#1{\begingroup
+ % Don't complain about control sequences we have declared \outer.
+ \ignoresections
+ %
+ % Define a command to swallow text until we reach `@end #1'.
+ % This @ is a catcode 12 token (that is the normal catcode of @ in
+ % this texinfo.tex file). We change the catcode of @ below to match.
+ \long\def\doignoretext##1@end #1{\enddoignore}%
+ %
+ % Make sure that spaces turn into tokens that match what \doignoretext wants.
+ \catcode32 = 10
+ %
+ % Ignore braces, too, so mismatched braces don't cause trouble.
+ \catcode`\{ = 9
+ \catcode`\} = 9
+ %
+ % We must not have @c interpreted as a control sequence.
+ \catcode`\@ = 12
+ %
+ % Make the letter c a comment character so that the rest of the line
+ % will be ignored. This way, the document can have (for example)
+ % @c @end ifinfo
+ % and the @end ifinfo will be properly ignored.
+ % (We've just changed @ to catcode 12.)
+ \catcode`\c = 14
+ %
+ % And now expand that command.
+ \doignoretext
+}
+
+% What we do to finish off ignored text.
+%
+\def\enddoignore{\endgroup\ignorespaces}%
+
+\newif\ifwarnedobs\warnedobsfalse
+\def\obstexwarn{%
+ \ifwarnedobs\relax\else
+ % We need to warn folks that they may have trouble with TeX 3.0.
+ % This uses \immediate\write16 rather than \message to get newlines.
+ \immediate\write16{}
+ \immediate\write16{WARNING: for users of Unix TeX 3.0!}
+ \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).}
+ \immediate\write16{If you are running another version of TeX, relax.}
+ \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
+ \immediate\write16{ Then upgrade your TeX installation if you can.}
+ \immediate\write16{ (See ftp://ftp.gnu.org/pub/gnu/TeX.README.)}
+ \immediate\write16{If you are stuck with version 3.0, run the}
+ \immediate\write16{ script ``tex3patch'' from the Texinfo distribution}
+ \immediate\write16{ to use a workaround.}
+ \immediate\write16{}
+ \global\warnedobstrue
+ \fi
+}
+
+% **In TeX 3.0, setting text in \nullfont hangs tex. For a
+% workaround (which requires the file ``dummy.tfm'' to be installed),
+% uncomment the following line:
+%%%%%\font\nullfont=dummy\let\obstexwarn=\relax
+
+% Ignore text, except that we keep track of conditional commands for
+% purposes of nesting, up to an `@end #1' command.
+%
+\def\nestedignore#1{%
+ \obstexwarn
+ % We must actually expand the ignored text to look for the @end
+ % command, so that nested ignore constructs work. Thus, we put the
+ % text into a \vbox and then do nothing with the result. To minimize
+ % the change of memory overflow, we follow the approach outlined on
+ % page 401 of the TeXbook: make the current font be a dummy font.
+ %
+ \setbox0 = \vbox\bgroup
+ % Don't complain about control sequences we have declared \outer.
+ \ignoresections
+ %
+ % Define `@end #1' to end the box, which will in turn undefine the
+ % @end command again.
+ \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}%
+ %
+ % We are going to be parsing Texinfo commands. Most cause no
+ % trouble when they are used incorrectly, but some commands do
+ % complicated argument parsing or otherwise get confused, so we
+ % undefine them.
+ %
+ % We can't do anything about stray @-signs, unfortunately;
+ % they'll produce `undefined control sequence' errors.
+ \ignoremorecommands
+ %
+ % Set the current font to be \nullfont, a TeX primitive, and define
+ % all the font commands to also use \nullfont. We don't use
+ % dummy.tfm, as suggested in the TeXbook, because not all sites
+ % might have that installed. Therefore, math mode will still
+ % produce output, but that should be an extremely small amount of
+ % stuff compared to the main input.
+ %
+ \nullfont
+ \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont
+ \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont
+ \let\tensf=\nullfont
+ % Similarly for index fonts (mostly for their use in smallexample).
+ \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont
+ \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont
+ \let\smallsf=\nullfont
+ %
+ % Don't complain when characters are missing from the fonts.
+ \tracinglostchars = 0
+ %
+ % Don't bother to do space factor calculations.
+ \frenchspacing
+ %
+ % Don't report underfull hboxes.
+ \hbadness = 10000
+ %
+ % Do minimal line-breaking.
+ \pretolerance = 10000
+ %
+ % Do not execute instructions in @tex
+ \def\tex{\doignore{tex}}%
+ % Do not execute macro definitions.
+ % `c' is a comment character, so the word `macro' will get cut off.
+ \def\macro{\doignore{ma}}%
+}
+
+% @set VAR sets the variable VAR to an empty value.
+% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
+%
+% Since we want to separate VAR from REST-OF-LINE (which might be
+% empty), we can't just use \parsearg; we have to insert a space of our
+% own to delimit the rest of the line, and then take it out again if we
+% didn't need it. Make sure the catcode of space is correct to avoid
+% losing inside @example, for instance.
+%
+\def\set{\begingroup\catcode` =10
+ \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR.
+ \parsearg\setxxx}
+\def\setxxx#1{\setyyy#1 \endsetyyy}
+\def\setyyy#1 #2\endsetyyy{%
+ \def\temp{#2}%
+ \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty
+ \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted.
+ \fi
+ \endgroup
+}
+% Can't use \xdef to pre-expand #2 and save some time, since \temp or
+% \next or other control sequences that we've defined might get us into
+% an infinite loop. Consider `@set foo @cite{bar}'.
+\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}}
+
+% @clear VAR clears (i.e., unsets) the variable VAR.
+%
+\def\clear{\parsearg\clearxxx}
+\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax}
+
+% @value{foo} gets the text saved in variable foo.
+{
+ \catcode`\_ = \active
+ %
+ % We might end up with active _ or - characters in the argument if
+ % we're called from @code, as @code{@value{foo-bar_}}. So \let any
+ % such active characters to their normal equivalents.
+ \gdef\value{\begingroup
+ \catcode`\-=12 \catcode`\_=12
+ \indexbreaks \let_\normalunderscore
+ \valuexxx}
+}
+\def\valuexxx#1{\expandablevalue{#1}\endgroup}
+
+% We have this subroutine so that we can handle at least some @value's
+% properly in indexes (we \let\value to this in \indexdummies). Ones
+% whose names contain - or _ still won't work, but we can't do anything
+% about that. The command has to be fully expandable, since the result
+% winds up in the index file. This means that if the variable's value
+% contains other Texinfo commands, it's almost certain it will fail
+% (although perhaps we could fix that with sufficient work to do a
+% one-level expansion on the result, instead of complete).
+%
+\def\expandablevalue#1{%
+ \expandafter\ifx\csname SET#1\endcsname\relax
+ {[No value for ``#1'']}%
+ \else
+ \csname SET#1\endcsname
+ \fi
+}
+
+% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
+% with @set.
+%
+\def\ifset{\parsearg\ifsetxxx}
+\def\ifsetxxx #1{%
+ \expandafter\ifx\csname SET#1\endcsname\relax
+ \expandafter\ifsetfail
+ \else
+ \expandafter\ifsetsucceed
+ \fi
+}
+\def\ifsetsucceed{\conditionalsucceed{ifset}}
+\def\ifsetfail{\nestedignore{ifset}}
+\defineunmatchedend{ifset}
+
+% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
+% defined with @set, or has been undefined with @clear.
+%
+\def\ifclear{\parsearg\ifclearxxx}
+\def\ifclearxxx #1{%
+ \expandafter\ifx\csname SET#1\endcsname\relax
+ \expandafter\ifclearsucceed
+ \else
+ \expandafter\ifclearfail
+ \fi
+}
+\def\ifclearsucceed{\conditionalsucceed{ifclear}}
+\def\ifclearfail{\nestedignore{ifclear}}
+\defineunmatchedend{ifclear}
+
+% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text
+% following, through the first @end iftex (etc.). Make `@end iftex'
+% (etc.) valid only after an @iftex.
+%
+\def\iftex{\conditionalsucceed{iftex}}
+\def\ifnothtml{\conditionalsucceed{ifnothtml}}
+\def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
+\defineunmatchedend{iftex}
+\defineunmatchedend{ifnothtml}
+\defineunmatchedend{ifnotinfo}
+
+% We can't just want to start a group at @iftex (for example) and end it
+% at @end iftex, since then @set commands inside the conditional have no
+% effect (they'd get reverted at the end of the group). So we must
+% define \Eiftex to redefine itself to be its previous value. (We can't
+% just define it to fail again with an ``unmatched end'' error, since
+% the @ifset might be nested.)
+%
+\def\conditionalsucceed#1{%
+ \edef\temp{%
+ % Remember the current value of \E#1.
+ \let\nece{prevE#1} = \nece{E#1}%
+ %
+ % At the `@end #1', redefine \E#1 to be its previous value.
+ \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}%
+ }%
+ \temp
+}
+
+% We need to expand lots of \csname's, but we don't want to expand the
+% control sequences after we've constructed them.
+%
+\def\nece#1{\expandafter\noexpand\csname#1\endcsname}
+
+% @defininfoenclose.
+\let\definfoenclose=\comment
+
+
\message{indexing,}
% Index generation facilities
@@ -2388,8 +2673,11 @@ width0pt\relax} \fi
% (Must be a way to avoid doing expansion at all, and thus not have to
% laboriously list every single command here.)
\def\@{@}% will be @@ when we switch to @ as escape char.
-%\let\{ = \lbracecmd
-%\let\} = \rbracecmd
+% Need these in case \tex is in effect and \{ is a \delimiter again.
+% But can't use \lbracecmd and \rbracecmd because texindex assumes
+% braces and backslashes are used only as delimiters.
+\let\{ = \mylbrace
+\let\} = \myrbrace
\def\_{{\realbackslash _}}%
\def\w{\realbackslash w }%
\def\bf{\realbackslash bf }%
@@ -2411,6 +2699,11 @@ width0pt\relax} \fi
\def\copyright{\realbackslash copyright}%
\def\tclose##1{\realbackslash tclose {##1}}%
\def\code##1{\realbackslash code {##1}}%
+\def\uref##1{\realbackslash uref {##1}}%
+\def\url##1{\realbackslash url {##1}}%
+\def\env##1{\realbackslash env {##1}}%
+\def\command##1{\realbackslash command {##1}}%
+\def\option##1{\realbackslash option {##1}}%
\def\dotless##1{\realbackslash dotless {##1}}%
\def\samp##1{\realbackslash samp {##1}}%
\def\,##1{\realbackslash ,{##1}}%
@@ -2426,6 +2719,7 @@ width0pt\relax} \fi
\def\kbd##1{\realbackslash kbd {##1}}%
\def\dfn##1{\realbackslash dfn {##1}}%
\def\emph##1{\realbackslash emph {##1}}%
+\def\acronym##1{\realbackslash acronym {##1}}%
%
% Handle some cases of @value -- where the variable name does not
% contain - or _, and the value does not contain any
@@ -2433,6 +2727,8 @@ width0pt\relax} \fi
\let\value = \expandablevalue
%
\unsepspaces
+% Turn off macro expansion
+\turnoffmacros
}
% If an index command is used in an @example environment, any spaces
@@ -2489,6 +2785,12 @@ width0pt\relax} \fi
%\let\tt=\indexdummyfont
\let\tclose=\indexdummyfont
\let\code=\indexdummyfont
+\let\url=\indexdummyfont
+\let\uref=\indexdummyfont
+\let\env=\indexdummyfont
+\let\acronym=\indexdummyfont
+\let\command=\indexdummyfont
+\let\option=\indexdummyfont
\let\file=\indexdummyfont
\let\samp=\indexdummyfont
\let\kbd=\indexdummyfont
@@ -2513,14 +2815,14 @@ width0pt\relax} \fi
\def\emptymacro{\empty}
% Most index entries go through here, but \dosubind is the general case.
-%
+%
\def\doind#1#2{\dosubind{#1}{#2}\empty}
% Workhorse for all \fooindexes.
% #1 is name of index, #2 is stuff to put there, #3 is subentry --
% \empty if called from \doind, as we usually are. The main exception
% is with defuns, which call us directly.
-%
+%
\def\dosubind#1#2#3{%
% Put the index entry in the margin if desired.
\ifx\SETmarginindex\relax\else
@@ -2545,24 +2847,28 @@ width0pt\relax} \fi
\def\subentry{ #3}%
\fi
%
- % First process the index-string with all font commands turned off
- % to get the string to sort by.
+ % First process the index entry with all font commands turned
+ % off to get the string to sort by.
{\indexnofonts \xdef\indexsorttmp{#2\subentry}}%
%
- % Now produce the complete index entry, with both the sort key and the
- % original text, including any font commands.
+ % Now the real index entry with the fonts.
\toks0 = {#2}%
+ %
+ % If third (subentry) arg is present, add it to the index
+ % string. And include a space.
+ \ifx\thirdarg\emptymacro \else
+ \toks0 = \expandafter{\the\toks0 \space #3}%
+ \fi
+ %
+ % Set up the complete index entry, with both the sort key
+ % and the original text, including any font commands. We write
+ % three arguments to \entry to the .?? file, texindex reduces to
+ % two when writing the .??s sorted result.
\edef\temp{%
\write\csname#1indfile\endcsname{%
\realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}%
}%
%
- % If third (subentry) arg is present, add it to the index string.
- \ifx\thirdarg\emptymacro \else
- \toks0 = {#3}%
- \edef\temp{\temp{\the\toks0}}%
- \fi
- %
% If a skip is the last thing on the list now, preserve it
% by backing up by \lastskip, doing the \write, then inserting
% the skip again. Otherwise, the whatsit generated by the
@@ -2574,12 +2880,12 @@ width0pt\relax} \fi
% will have extra space inserted, because the \medbreak in the
% start of the @defun won't see the skip inserted by the @end of
% the previous defun.
- %
+ %
% But don't do any of this if we're not in vertical mode. We
% don't want to do a \vskip and prematurely end a paragraph.
- %
+ %
% Avoid page breaks due to these extra skips, too.
- %
+ %
\iflinks
\ifvmode
\skip0 = \lastskip
@@ -2588,7 +2894,7 @@ width0pt\relax} \fi
%
\temp % do the write
%
- %
+ %
\ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi
\fi
}%
@@ -2636,7 +2942,7 @@ width0pt\relax} \fi
\def\doprintindex#1{\begingroup
\dobreak \chapheadingskip{10000}%
%
- \indexfonts \rm
+ \smallfonts \rm
\tolerance = 9500
\indexbreaks
%
@@ -2652,7 +2958,7 @@ width0pt\relax} \fi
% and it loses the chapter title and the aux file entries for the
% index. The easiest way to prevent this problem is to make sure
% there is some text.
- (Index is nonexistent)
+ \putwordIndexNonexistent
\else
%
% If the index file exists but is empty, then \openin leaves \ifeof
@@ -2660,7 +2966,7 @@ width0pt\relax} \fi
% it can discover if there is anything in it.
\read 1 to \temp
\ifeof 1
- (Index is empty)
+ \putwordIndexIsEmpty
\else
% Index files are almost Texinfo source, but we use \ as the escape
% character. It would be better to use @, but that's too big a change
@@ -2685,7 +2991,7 @@ width0pt\relax} \fi
%
% Remove any glue we may have, we'll be inserting our own.
\removelastskip
- %
+ %
% We like breaks before the index initials, so insert a bonus.
\penalty -300
%
@@ -2693,7 +2999,7 @@ width0pt\relax} \fi
% baselineskips increases the chance of the dots lining up from column
% to column. It still won't often be perfect, because of the stretch
% we need before each entry, but it's better.
- %
+ %
% No shrink because it confuses \balancecolumns.
\vskip 1.67\baselineskip plus .5\baselineskip
\leftline{\secbf #1}%
@@ -2763,7 +3069,11 @@ width0pt\relax} \fi
% The `\ ' here is removed by the implicit \unskip that TeX does as
% part of (the primitive) \par. Without it, a spurious underfull
% \hbox ensues.
- \ #2% The page number ends the paragraph.
+ \ifpdf
+ \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
+ \else
+ \ #2% The page number ends the paragraph.
+ \fi
\fi%
\par
\endgroup}
@@ -2792,24 +3102,26 @@ width0pt\relax} \fi
\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
% Grab any single-column material above us.
- \output = {\global\setbox\partialpage = \vbox{%
- %
+ \output = {%
+ %
% Here is a possibility not foreseen in manmac: if we accumulate a
% whole lot of material, we might end up calling this \output
% routine twice in a row (see the doublecol-lose test, which is
% essentially a couple of indexes with @setchapternewpage off). In
- % that case, we must prevent the second \partialpage from
- % simply overwriting the first, causing us to lose the page.
- % This will preserve it until a real output routine can ship it
- % out. Generally, \partialpage will be empty when this runs and
- % this will be a no-op.
- \unvbox\partialpage
+ % that case we just ship out what is in \partialpage with the normal
+ % output routine. Generally, \partialpage will be empty when this
+ % runs and this will be a no-op. See the indexspread.tex test case.
+ \ifvoid\partialpage \else
+ \onepageout{\pagecontents\partialpage}%
+ \fi
%
- % Unvbox the main output page.
- \unvbox255
- \kern-\topskip \kern\baselineskip
- }}%
- \eject
+ \global\setbox\partialpage = \vbox{%
+ % Unvbox the main output page.
+ \unvbox\PAGE
+ \kern-\topskip \kern\baselineskip
+ }%
+ }%
+ \eject % run that output routine to set \partialpage
%
% Use the double-column output routine for subsequent pages.
\output = {\doublecolumnout}%
@@ -2843,7 +3155,7 @@ width0pt\relax} \fi
% The double-column output routine for all double-column pages except
% the last.
-%
+%
\def\doublecolumnout{%
\splittopskip=\topskip \splitmaxdepth=\maxdepth
% Get the available space for the double columns -- the normal
@@ -2861,7 +3173,6 @@ width0pt\relax} \fi
\def\pagesofar{%
% Re-output the contents of the output page -- any previous material,
% followed by the two boxes we just split, in box0 and box2.
- \advance\vsize by \ht\partialpage
\unvbox\partialpage
%
\hsize = \doublecolumnhsize
@@ -2870,7 +3181,7 @@ width0pt\relax} \fi
}
\def\enddoublecolumns{%
\output = {%
- % Split the last of the double-column material. Leave on the
+ % Split the last of the double-column material. Leave it on the
% current page, no automatic page break.
\balancecolumns
%
@@ -2882,14 +3193,15 @@ width0pt\relax} \fi
% called on to balance too much material, but if it is, this makes
% the output somewhat more palatable.)
\global\output = {\onepageout{\pagecontents\PAGE}}%
- %
- % \pagegoal was set to the doubled \vsize above, since we restarted
- % the current page. We're now back to normal single-column
- % typesetting, so reset \pagegoal to the normal \vsize.
- \pagegoal = \vsize
}%
\eject
\endgroup % started in \begindoublecolumns
+ %
+ % \pagegoal was set to the doubled \vsize above, since we restarted
+ % the current page. We're now back to normal single-column
+ % typesetting, so reset \pagegoal to the normal \vsize (after the
+ % \endgroup where \vsize got restored).
+ \pagegoal = \vsize
}
\def\balancecolumns{%
% Called at the end of the double column material.
@@ -2920,7 +3232,7 @@ width0pt\relax} \fi
\message{sectioning,}
-% Define chapters, sections, etc.
+% Chapters, sections, etc.
\newcount\chapno
\newcount\secno \secno=0
@@ -2929,7 +3241,43 @@ width0pt\relax} \fi
% This counter is funny since it counts through charcodes of letters A, B, ...
\newcount\appendixno \appendixno = `\@
-\def\appendixletter{\char\the\appendixno}
+% \def\appendixletter{\char\the\appendixno}
+% We do the following for the sake of pdftex, which needs the actual
+% letter in the expansion, not just typeset.
+\def\appendixletter{%
+ \ifnum\appendixno=`A A%
+ \else\ifnum\appendixno=`B B%
+ \else\ifnum\appendixno=`C C%
+ \else\ifnum\appendixno=`D D%
+ \else\ifnum\appendixno=`E E%
+ \else\ifnum\appendixno=`F F%
+ \else\ifnum\appendixno=`G G%
+ \else\ifnum\appendixno=`H H%
+ \else\ifnum\appendixno=`I I%
+ \else\ifnum\appendixno=`J J%
+ \else\ifnum\appendixno=`K K%
+ \else\ifnum\appendixno=`L L%
+ \else\ifnum\appendixno=`M M%
+ \else\ifnum\appendixno=`N N%
+ \else\ifnum\appendixno=`O O%
+ \else\ifnum\appendixno=`P P%
+ \else\ifnum\appendixno=`Q Q%
+ \else\ifnum\appendixno=`R R%
+ \else\ifnum\appendixno=`S S%
+ \else\ifnum\appendixno=`T T%
+ \else\ifnum\appendixno=`U U%
+ \else\ifnum\appendixno=`V V%
+ \else\ifnum\appendixno=`W W%
+ \else\ifnum\appendixno=`X X%
+ \else\ifnum\appendixno=`Y Y%
+ \else\ifnum\appendixno=`Z Z%
+ % The \the is necessary, despite appearances, because \appendixletter is
+ % expanded while writing the .toc file. \char\appendixno is not
+ % expandable, thus it is written literally, thus all appendixes come out
+ % with the same letter (or @) in the toc without it.
+ \else\char\the\appendixno
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
% Each @chapter defines this as the name of the chapter.
% page headings and footings can use it. @section does likewise.
@@ -3402,15 +3750,16 @@ width0pt\relax} \fi
\message{toc,}
+% Table of contents.
\newwrite\tocfile
% Write an entry to the toc file, opening it if necessary.
% Called from @chapter, etc. We supply {\folio} at the end of the
% argument, which will end up as the last argument to the \...entry macro.
-%
+%
% We open the .toc file here instead of at @setfilename or any other
% given time so that @contents can be put in the document anywhere.
-%
+%
\newif\iftocfileopened
\def\writetocentry#1{%
\iftocfileopened\else
@@ -3426,7 +3775,7 @@ width0pt\relax} \fi
% Finish up the main text and prepare to read what we've written
% to \tocfile.
-%
+%
\def\startcontents#1{%
% If @setchapternewpage on, and @headings double, the contents should
% start on an odd page, unlike chapters. Thus, we maintain
@@ -3454,13 +3803,15 @@ width0pt\relax} \fi
% Normal (long) toc.
\def\contents{%
- \startcontents{\putwordTableofContents}%
+ \startcontents{\putwordTOC}%
\openin 1 \jobname.toc
\ifeof 1 \else
\closein 1
\input \jobname.toc
\fi
\vfill \eject
+ \contentsalignmacro % in case @setchapternewpage odd is in effect
+ \pdfmakeoutlines
\endgroup
\lastnegativepageno = \pageno
\pageno = \savepageno
@@ -3468,7 +3819,7 @@ width0pt\relax} \fi
% And just the chapters.
\def\summarycontents{%
- \startcontents{\putwordShortContents}%
+ \startcontents{\putwordShortTOC}%
%
\let\chapentry = \shortchapentry
\let\unnumbchapentry = \shortunnumberedentry
@@ -3490,12 +3841,17 @@ width0pt\relax} \fi
\input \jobname.toc
\fi
\vfill \eject
+ \contentsalignmacro % in case @setchapternewpage odd is in effect
\endgroup
\lastnegativepageno = \pageno
\pageno = \savepageno
}
\let\shortcontents = \summarycontents
+\ifpdf
+ \pdfcatalog{/PageMode /UseOutlines}%
+\fi
+
% These macros generate individual entries in the table of contents.
% The first argument is the chapter or section name.
% The last argument is the page number.
@@ -3506,7 +3862,7 @@ width0pt\relax} \fi
% See comments in \dochapentry re vbox and related settings
\def\shortchapentry#1#2#3{%
- \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno{#3}}%
+ \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}%
}
% Typeset the label for a chapter or appendix for the short contents.
@@ -3514,10 +3870,14 @@ width0pt\relax} \fi
% We could simplify the code here by writing out an \appendixentry
% command in the toc file for appendices, instead of using \chapentry
% for both, but it doesn't seem worth it.
-\setbox0 = \hbox{\shortcontrm \putwordAppendix }
-\newdimen\shortappendixwidth \shortappendixwidth = \wd0
-
+%
+\newdimen\shortappendixwidth
+%
\def\shortchaplabel#1{%
+ % Compute width of word "Appendix", may change with language.
+ \setbox0 = \hbox{\shortcontrm \putwordAppendix}%
+ \shortappendixwidth = \wd0
+ %
% We typeset #1 in a box of constant width, regardless of the text of
% #1, so the chapter titles will come out aligned.
\setbox0 = \hbox{#1}%
@@ -3532,7 +3892,7 @@ width0pt\relax} \fi
}
\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
-\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno{#2}}}
+\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}}
% Sections.
\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
@@ -3559,24 +3919,24 @@ width0pt\relax} \fi
\penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
\begingroup
\chapentryfonts
- \tocentry{#1}{\dopageno{#2}}%
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
\endgroup
\nobreak\vskip .25\baselineskip plus.1\baselineskip
}
\def\dosecentry#1#2{\begingroup
\secentryfonts \leftskip=\tocindent
- \tocentry{#1}{\dopageno{#2}}%
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
\endgroup}
\def\dosubsecentry#1#2{\begingroup
\subsecentryfonts \leftskip=2\tocindent
- \tocentry{#1}{\dopageno{#2}}%
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
\endgroup}
\def\dosubsubsecentry#1#2{\begingroup
\subsubsecentryfonts \leftskip=3\tocindent
- \tocentry{#1}{\dopageno{#2}}%
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
\endgroup}
% Final typesetting of a toc entry; we use the same \entry macro as for
@@ -3604,6 +3964,7 @@ width0pt\relax} \fi
\message{environments,}
+% @foo ... @end foo.
% Since these characters are used in examples, it should be an even number of
% \tt widths. Each \tt character is 1en, so two makes it 1em.
@@ -3814,7 +4175,7 @@ width0pt\relax} \fi
% Define the \E... control sequence only if we are inside the particular
% environment, so the error checking in \end will work.
-%
+%
% To end an @example-like environment, we first end the paragraph (via
% \afterenvbreak's vertical glue), and then the group. That way we keep
% the zero \parskip that the environments set -- \parskip glue will be
@@ -3839,7 +4200,7 @@ width0pt\relax} \fi
% redefines). We must call \example (or whatever) last in the
% definition, since it reads the return following the @example (or
% whatever) command.
-%
+%
% This actually allows (for example) @end display inside an
% @smalldisplay. Too bad, but makeinfo will catch the error anyway.
%
@@ -3853,7 +4214,7 @@ width0pt\relax} \fi
\def\smalllispx{\begingroup
\def\Esmalllisp{\nonfillfinish\endgroup}%
\def\Esmallexample{\nonfillfinish\endgroup}%
- \indexfonts
+ \smallfonts
\lisp
}
@@ -3869,7 +4230,7 @@ width0pt\relax} \fi
%
\def\smalldisplayx{\begingroup
\def\Esmalldisplay{\nonfillfinish\endgroup}%
- \indexfonts \rm
+ \smallfonts \rm
\display
}
@@ -3886,7 +4247,7 @@ width0pt\relax} \fi
%
\def\smallformatx{\begingroup
\def\Esmallformat{\nonfillfinish\endgroup}%
- \indexfonts \rm
+ \smallfonts \rm
\format
}
@@ -3895,7 +4256,7 @@ width0pt\relax} \fi
\def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format}
% @flushright.
-%
+%
\def\flushright{\begingroup
\let\nonarrowing = t
\nonfillstart
@@ -3927,8 +4288,9 @@ width0pt\relax} \fi
\message{defuns,}
-% Define formatter for defuns
-% First, allow user to change definition object font (\df) internally
+% @defun etc.
+
+% Allow user to change definition object font (\df) internally
\def\setdeffont #1 {\csname DEF#1\endcsname}
\newskip\defbodyindent \defbodyindent=.4in
@@ -3982,10 +4344,16 @@ width0pt\relax} \fi
%% contained text. This is especially needed for [ and ]
\def\opnr{{\sf\char`\(}\global\advance\parencount by 1 }
\def\clnr{{\sf\char`\)}\global\advance\parencount by -1 }
-\def\ampnr{\&}
+\let\ampnr = \&
\def\lbrb{{\bf\char`\[}}
\def\rbrb{{\bf\char`\]}}
+% Active &'s sneak into the index arguments, so make sure it's defined.
+{
+ \catcode`& = 13
+ \global\let& = \ampnr
+}
+
% First, defname, which formats the header line itself.
% #1 should be the function name.
% #2 should be the type of definition, such as "Function".
@@ -4037,7 +4405,7 @@ width0pt\relax} \fi
% #2 is the \...x control sequence for consecutive fns (which we define).
% #3 is the control sequence to call to resume processing.
% #4, delimited by the space, is the class name.
-%
+%
\def\defmethparsebody#1#2#3#4 {\begingroup\inENV %
\medbreak %
% Define the end token that this defining construct specifies
@@ -4049,23 +4417,39 @@ width0pt\relax} \fi
\exdentamount=\defbodyindent
\begingroup\obeylines\activeparens\spacesplit{#3{#4}}}
-% @deftypemethod has an extra argument that nothing else does. Sigh.
+% Used for @deftypemethod and @deftypeivar.
% #1 is the \E... control sequence to end the definition (which we define).
% #2 is the \...x control sequence for consecutive fns (which we define).
% #3 is the control sequence to call to resume processing.
-% #4, delimited by the space, is the class name.
+% #4, delimited by a space, is the class name.
% #5 is the method's return type.
+%
+\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV
+ \medbreak
+ \def#1{\endgraf\endgroup\medbreak}%
+ \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}%
+ \parindent=0in
+ \advance\leftskip by \defbodyindent
+ \exdentamount=\defbodyindent
+ \begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}}
+
+% Used for @deftypeop. The change from \deftypemethparsebody is an
+% extra argument at the beginning which is the `category', instead of it
+% being the hardwired string `Method' or `Instance Variable'. We have
+% to account for this both in the \...x definition and in parsing the
+% input at hand. Thus also need a control sequence (passed as #5) for
+% the \E... definition to assign the category name to.
%
-\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}}
+\def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV
+ \medbreak
+ \def#1{\endgraf\endgroup\medbreak}%
+ \def#2##1 ##2 ##3 {%
+ \def#4{##1}%
+ \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}%
+ \parindent=0in
+ \advance\leftskip by \defbodyindent
+ \exdentamount=\defbodyindent
+ \begingroup\obeylines\activeparens\spacesplit{#3{#5}{#6}}}
\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV %
\medbreak %
@@ -4176,12 +4560,13 @@ width0pt\relax} \fi
% First, define the processing that is wanted for arguments of \defun
% Use this to expand the args and terminate the paragraph they make up
-\def\defunargs #1{\functionparens \sl
+\def\defunargs#1{\functionparens \sl
% Expand, preventing hyphenation at `-' chars.
% Note that groups don't affect changes in \hyphenchar.
-\hyphenchar\tensl=0
+% Set the font temporarily and use \font in case \setfont made \tensl a macro.
+{\tensl\hyphenchar\font=0}%
#1%
-\hyphenchar\tensl=45
+{\tensl\hyphenchar\font=45}%
\ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi%
\interlinepenalty=10000
\advance\rightskip by 0pt plus 1fil
@@ -4215,7 +4600,7 @@ width0pt\relax} \fi
\def\defun{\defparsebody\Edefun\defunx\defunheader}
\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{Function}%
+\begingroup\defname {#1}{\putwordDeffunc}%
\defunargs {#2}\endgroup %
\catcode 61=\other % Turn off change made in \defparsebody
}
@@ -4229,7 +4614,7 @@ width0pt\relax} \fi
% #1 is the data type, #2 the name, #3 the args.
\def\deftypefunheaderx #1#2 #3\relax{%
\doind {fn}{\code{#2}}% Make entry in function index
-\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Function}%
+\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypefun}%
\deftypefunargs {#3}\endgroup %
\catcode 61=\other % Turn off change made in \defparsebody
}
@@ -4260,7 +4645,7 @@ width0pt\relax} \fi
\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}
\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{Macro}%
+\begingroup\defname {#1}{\putwordDefmac}%
\defunargs {#2}\endgroup %
\catcode 61=\other % Turn off change made in \defparsebody
}
@@ -4270,36 +4655,39 @@ width0pt\relax} \fi
\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}
\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{Special Form}%
+\begingroup\defname {#1}{\putwordDefspec}%
\defunargs {#2}\endgroup %
\catcode 61=\other % Turn off change made in \defparsebody
}
-% This definition is run if you use @defunx
-% anywhere other than immediately after a @defun or @defunx.
-
-\def\deffnx #1 {\errmessage{@deffnx in invalid context}}
-\def\defunx #1 {\errmessage{@defunx in invalid context}}
-\def\defmacx #1 {\errmessage{@defmacx in invalid context}}
-\def\defspecx #1 {\errmessage{@defspecx in invalid context}}
-\def\deftypefnx #1 {\errmessage{@deftypefnx in invalid context}}
-\def\deftypemethodx #1 {\errmessage{@deftypemethodx in invalid context}}
-\def\deftypefunx #1 {\errmessage{@deftypefunx in invalid context}}
-
-% @defmethod, and so on
-
% @defop CATEGORY CLASS OPERATION ARG...
-
+%
\def\defop #1 {\def\defoptype{#1}%
\defopparsebody\Edefop\defopx\defopheader\defoptype}
-
-\def\defopheader #1#2#3{%
+%
+\def\defopheader#1#2#3{%
\dosubind {fn}{\code{#2}}{\putwordon\ #1}% Make entry in function index
-\begingroup\defname {#2}{\defoptype{} on #1}%
+\begingroup\defname {#2}{\defoptype\ \putwordon\ #1}%
\defunargs {#3}\endgroup %
}
-% @deftypemethod CLASS RETURN-TYPE METHOD ARG...
+% @deftypeop CATEGORY CLASS TYPE OPERATION ARG...
+%
+\def\deftypeop #1 {\def\deftypeopcategory{#1}%
+ \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader
+ \deftypeopcategory}
+%
+% #1 is the class name, #2 the data type, #3 the operation name, #4 the args.
+\def\deftypeopheader#1#2#3#4{%
+ \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
+ \begingroup
+ \defname{\defheaderxcond#2\relax$$$#3}
+ {\deftypeopcategory\ \putwordon\ \code{#1}}%
+ \deftypefunargs{#4}%
+ \endgroup
+}
+
+% @deftypemethod CLASS TYPE METHOD ARG...
%
\def\deftypemethod{%
\deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader}
@@ -4313,6 +4701,20 @@ width0pt\relax} \fi
\endgroup
}
+% @deftypeivar CLASS TYPE VARNAME
+%
+\def\deftypeivar{%
+ \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader}
+%
+% #1 is the class name, #2 the data type, #3 the variable name.
+\def\deftypeivarheader#1#2#3{%
+ \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index
+ \begingroup
+ \defname{#3}{\putwordInstanceVariableof\ \code{#1}}%
+ \defvarargs{#3}%
+ \endgroup
+}
+
% @defmethod == @defop Method
%
\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}
@@ -4332,31 +4734,24 @@ width0pt\relax} \fi
\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}
\def\defcvarheader #1#2#3{%
-\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
-\begingroup\defname {#2}{\defcvtype{} of #1}%
+\dosubind {vr}{\code{#2}}{\putwordof\ #1}% Make entry in var index
+\begingroup\defname {#2}{\defcvtype\ \putwordof\ #1}%
\defvarargs {#3}\endgroup %
}
-% @defivar == @defcv {Instance Variable}
-
+% @defivar CLASS VARNAME == @defcv {Instance Variable} CLASS VARNAME
+%
\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}
-
-\def\defivarheader #1#2#3{%
-\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
-\begingroup\defname {#2}{Instance Variable of #1}%
-\defvarargs {#3}\endgroup %
+%
+\def\defivarheader#1#2#3{%
+ \dosubind {vr}{\code{#2}}{\putwordof\ #1}% entry in var index
+ \begingroup
+ \defname{#2}{\putwordInstanceVariableof\ #1}%
+ \defvarargs{#3}%
+ \endgroup
}
-% These definitions are run if you use @defmethodx, etc.,
-% anywhere other than immediately after a @defmethod, etc.
-
-\def\defopx #1 {\errmessage{@defopx in invalid context}}
-\def\defmethodx #1 {\errmessage{@defmethodx in invalid context}}
-\def\defcvx #1 {\errmessage{@defcvx in invalid context}}
-\def\defivarx #1 {\errmessage{@defivarx in invalid context}}
-
-% Now @defvar
-
+% @defvar
% First, define the processing that is wanted for arguments of @defvar.
% This is actually simple: just print them in roman.
% This must expand the args and terminate the paragraph they make up
@@ -4376,7 +4771,7 @@ width0pt\relax} \fi
\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}
\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{Variable}%
+\begingroup\defname {#1}{\putwordDefvar}%
\defvarargs {#2}\endgroup %
}
@@ -4385,7 +4780,7 @@ width0pt\relax} \fi
\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}
\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{User Option}%
+\begingroup\defname {#1}{\putwordDefopt}%
\defvarargs {#2}\endgroup %
}
@@ -4397,7 +4792,7 @@ width0pt\relax} \fi
% is actually part of the data type, which should not be put into the index.
\def\deftypevarheader #1#2{%
\dovarind#2 \relax% Make entry in variables index
-\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Variable}%
+\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypevar}%
\interlinepenalty=10000
\endgraf\nobreak\vskip -\parskip\nobreak
\endgroup}
@@ -4413,15 +4808,6 @@ width0pt\relax} \fi
\endgraf\nobreak\vskip -\parskip\nobreak
\endgroup}
-% This definition is run if you use @defvarx
-% anywhere other than immediately after a @defvar or @defvarx.
-
-\def\defvrx #1 {\errmessage{@defvrx in invalid context}}
-\def\defvarx #1 {\errmessage{@defvarx in invalid context}}
-\def\defoptx #1 {\errmessage{@defoptx in invalid context}}
-\def\deftypevarx #1 {\errmessage{@deftypevarx in invalid context}}
-\def\deftypevrx #1 {\errmessage{@deftypevrx in invalid context}}
-
% Now define @deftp
% Args are printed in bold, a slight difference from @defvar.
@@ -4434,23 +4820,45 @@ width0pt\relax} \fi
\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}%
\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup}
-% This definition is run if you use @deftpx, etc
-% anywhere other than immediately after a @deftp, etc.
-
-\def\deftpx #1 {\errmessage{@deftpx in invalid context}}
+% These definitions are used if you use @defunx (etc.)
+% anywhere other than immediately after a @defun or @defunx.
+%
+\def\defcvx#1 {\errmessage{@defcvx in invalid context}}
+\def\deffnx#1 {\errmessage{@deffnx in invalid context}}
+\def\defivarx#1 {\errmessage{@defivarx in invalid context}}
+\def\defmacx#1 {\errmessage{@defmacx in invalid context}}
+\def\defmethodx#1 {\errmessage{@defmethodx in invalid context}}
+\def\defoptx #1 {\errmessage{@defoptx in invalid context}}
+\def\defopx#1 {\errmessage{@defopx in invalid context}}
+\def\defspecx#1 {\errmessage{@defspecx in invalid context}}
+\def\deftpx#1 {\errmessage{@deftpx in invalid context}}
+\def\deftypefnx#1 {\errmessage{@deftypefnx in invalid context}}
+\def\deftypefunx#1 {\errmessage{@deftypefunx in invalid context}}
+\def\deftypeivarx#1 {\errmessage{@deftypeivarx in invalid context}}
+\def\deftypemethodx#1 {\errmessage{@deftypemethodx in invalid context}}
+\def\deftypeopx#1 {\errmessage{@deftypeopx in invalid context}}
+\def\deftypevarx#1 {\errmessage{@deftypevarx in invalid context}}
+\def\deftypevrx#1 {\errmessage{@deftypevrx in invalid context}}
+\def\defunx#1 {\errmessage{@defunx in invalid context}}
+\def\defvarx#1 {\errmessage{@defvarx in invalid context}}
+\def\defvrx#1 {\errmessage{@defvrx in invalid context}}
\message{macros,}
% @macro.
-% To do this right we need a feature of e-TeX, \scantokens,
+% To do this right we need a feature of e-TeX, \scantokens,
% which we arrange to emulate with a temporary file in ordinary TeX.
\ifx\eTeXversion\undefined
\newwrite\macscribble
\def\scanmacro#1{%
\begingroup \newlinechar`\^^M
+ % Undo catcode changes of \startcontents and \doprintindex
+ \catcode`\@=0 \catcode`\\=12 \escapechar=`\@
+ % Append \endinput to make sure that TeX does not see the ending newline.
+ \toks0={#1\endinput}%
\immediate\openout\macscribble=\jobname.tmp
- \immediate\write\macscribble{#1}%
+ \immediate\write\macscribble{\the\toks0}%
\immediate\closeout\macscribble
\let\xeatspaces\eatspaces
\input \jobname.tmp
@@ -4459,12 +4867,16 @@ width0pt\relax} \fi
\else
\def\scanmacro#1{%
\begingroup \newlinechar`\^^M
-\let\xeatspaces\eatspaces\scantokens{#1}\endgroup}
+% Undo catcode changes of \startcontents and \doprintindex
+\catcode`\@=0 \catcode`\\=12 \escapechar=`\@
+\let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup}
\fi
\newcount\paramno % Count of parameters
\newtoks\macname % Macro name
\newif\ifrecursive % Is it recursive?
+\def\macrolist{} % List of all defined macros in the form
+ % \do\macro1\do\macro2...
% Utility routines.
% Thisdoes \let #1 = #2, except with \csnames.
@@ -4496,8 +4908,8 @@ width0pt\relax} \fi
% all characters are catcode 10, 11 or 12, except \ which is active
% (as in normal texinfo). It is necessary to change the definition of \.
-% It's necessary to have hard CRs when the macro is executed. This is
-% done by making ^^M (\endlinechar) catcode 12 when reading the macro
+% It's necessary to have hard CRs when the macro is executed. This is
+% done by making ^^M (\endlinechar) catcode 12 when reading the macro
% body, and then making it the \newlinechar in \scanmacro.
\def\macrobodyctxt{%
@@ -4514,8 +4926,19 @@ width0pt\relax} \fi
\catcode`\^^M=12
\usembodybackslash}
+\def\macroargctxt{%
+ \catcode`\~=12
+ \catcode`\^=12
+ \catcode`\_=12
+ \catcode`\|=12
+ \catcode`\<=12
+ \catcode`\>=12
+ \catcode`\+=12
+ \catcode`\@=12
+ \catcode`\\=12}
+
% \mbodybackslash is the definition of \ in @macro bodies.
-% It maps \foo\ => \csname macarg.foo\endcsname => #N
+% It maps \foo\ => \csname macarg.foo\endcsname => #N
% where N is the macro parameter number.
% We define \csname macarg.\endcsname to be \realbackslash, so
% \\ in macro replacement text gets you a backslash.
@@ -4534,25 +4957,48 @@ width0pt\relax} \fi
\ifx\argl\empty % no arguments
\paramno=0%
\else
- \expandafter\parsemargdef \argl;%
+ \expandafter\parsemargdef \argl;%
\fi
- \expandafter\ifx \csname macsave.\the\macname\endcsname \relax
- \cslet{macsave.\the\macname}{\the\macname}%
- \else
+ \if1\csname ismacro.\the\macname\endcsname
\message{Warning: redefining \the\macname}%
+ \else
+ \expandafter\ifx\csname \the\macname\endcsname \relax
+ \else \errmessage{The name \the\macname\space is reserved}\fi
+ \global\cslet{macsave.\the\macname}{\the\macname}%
+ \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
+ % Add the macroname to \macrolist
+ \toks0 = \expandafter{\macrolist\do}%
+ \xdef\macrolist{\the\toks0
+ \expandafter\noexpand\csname\the\macname\endcsname}%
\fi
\begingroup \macrobodyctxt
\ifrecursive \expandafter\parsermacbody
- \else \expandafter\parsemacbody
+ \else \expandafter\parsemacbody
\fi}
\def\unmacro{\parsearg\unmacroxxx}
\def\unmacroxxx#1{%
- \expandafter\ifx \csname macsave.\the\macname\endcsname \relax
- \errmessage{Macro \the\macname\ not defined.}%
+ \if1\csname ismacro.#1\endcsname
+ \global\cslet{#1}{macsave.#1}%
+ \global\expandafter\let \csname ismacro.#1\endcsname=0%
+ % Remove the macro name from \macrolist
+ \begingroup
+ \edef\tempa{\expandafter\noexpand\csname#1\endcsname}%
+ \def\do##1{%
+ \def\tempb{##1}%
+ \ifx\tempa\tempb
+ % remove this
+ \else
+ \toks0 = \expandafter{\newmacrolist\do}%
+ \edef\newmacrolist{\the\toks0\expandafter\noexpand\tempa}%
+ \fi}%
+ \def\newmacrolist{}%
+ % Execute macro list to define \newmacrolist
+ \macrolist
+ \global\let\macrolist\newmacrolist
+ \endgroup
\else
- \cslet{#1}{macsave.#1}%
- \expandafter\let \csname macsave.\the\macname\endcsname \undefined
+ \errmessage{Macro #1 not defined}%
\fi
}
@@ -4610,17 +5056,22 @@ width0pt\relax} \fi
\noexpand\scanmacro{\temp}}%
\or % 1
\expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\braceorline\csname\the\macname xxx\endcsname}%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\braceorline
+ \expandafter\noexpand\csname\the\macname xxx\endcsname}%
\expandafter\xdef\csname\the\macname xxx\endcsname##1{%
- \noexpand\scanmacro{\temp}}%
+ \egroup\noexpand\scanmacro{\temp}}%
\else % many
- \expandafter\xdef\csname\the\macname\endcsname##1{%
- \csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
\expandafter\expandafter
\expandafter\xdef
\expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{\noexpand\scanmacro{\temp}}%
+ \csname\the\macname xxx\endcsname
+ \paramlist{\egroup\noexpand\scanmacro{\temp}}%
\fi
\else
\ifcase\paramno
@@ -4630,18 +5081,25 @@ width0pt\relax} \fi
\noexpand\scanmacro{\temp}\egroup}%
\or % 1
\expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\braceorline\csname\the\macname xxx\endcsname}%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\braceorline
+ \expandafter\noexpand\csname\the\macname xxx\endcsname}%
\expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+ \egroup
\noexpand\norecurse{\the\macname}%
\noexpand\scanmacro{\temp}\egroup}%
\else % many
- \expandafter\xdef\csname\the\macname\endcsname##1{%
- \csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \expandafter\noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
\expandafter\expandafter
\expandafter\xdef
\expandafter\expandafter
\csname\the\macname xxx\endcsname
\paramlist{%
+ \egroup
\noexpand\norecurse{\the\macname}%
\noexpand\scanmacro{\temp}\egroup}%
\fi
@@ -4656,11 +5114,29 @@ width0pt\relax} \fi
\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx}
\def\braceorlinexxx{%
\ifx\nchar\bgroup\else
- \expandafter\parsearg
+ \expandafter\parsearg
\fi \next}
+% We mant to disable all macros during \shipout so that they are not
+% expanded by \write.
+\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}%
+ \edef\next{\macrolist}\expandafter\endgroup\next}
+
+
+% @alias.
+% We need some trickery to remove the optional spaces around the equal
+% sign. Just make them active and then expand them all to nothing.
+\def\alias{\begingroup\obeyspaces\parsearg\aliasxxx}
+\def\aliasxxx #1{\aliasyyy#1\relax}
+\def\aliasyyy #1=#2\relax{\ignoreactivespaces
+\edef\next{\global\let\expandafter\noexpand\csname#1\endcsname=%
+ \expandafter\noexpand\csname#2\endcsname}%
+\expandafter\endgroup\next}
+
\message{cross references,}
+% @xref etc.
+
\newwrite\auxfile
\newif\ifhavexrefs % True if xref values are known.
@@ -4702,21 +5178,24 @@ width0pt\relax} \fi
% @anchor{NAME} -- define xref target at arbitrary point.
-%
-\def\anchor#1{\setref{#1}{Ynothing}}
-
+%
+\newcount\savesfregister
+\gdef\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
+\gdef\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
+\gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
% \setref{NAME}{SNT} defines a cross-reference point NAME, namely
% NAME-title, NAME-pg, and NAME-SNT. Called from \foonoderef. We have
% to set \indexdummies so commands such as @code in a section title
% aren't expanded. It would be nicer not to expand the titles in the
% first place, but there's so many layers that that is hard to do.
-%
+%
\def\setref#1#2{{%
\indexdummies
+ \pdfmkdest{#1}%
\dosetq{#1-title}{Ytitle}%
\dosetq{#1-pg}{Ypagenumber}%
- \dosetq{#1-snt}{#2}
+ \dosetq{#1-snt}{#2}%
}}
% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
@@ -4728,6 +5207,7 @@ width0pt\relax} \fi
\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
\def\ref#1{\xrefX[#1,,,,,,,]}
\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
+ \unsepspaces
\def\printedmanual{\ignorespaces #5}%
\def\printednodename{\ignorespaces #3}%
\setbox1=\hbox{\printedmanual}%
@@ -4761,8 +5241,21 @@ width0pt\relax} \fi
% are best written with fairly long node names, containing hyphens, this
% is a loss. Therefore, we give the text of the node name again, so it
% is as if TeX is seeing it for the first time.
+ \ifpdf
+ \leavevmode
+ \getfilename{#4}%
+ \ifnum\filenamelength>0
+ \startlink attr{/Border [0 0 0]}%
+ goto file{\the\filename.pdf} name{#1@}%
+ \else
+ \startlink attr{/Border [0 0 0]}%
+ goto name{#1@}%
+ \fi
+ \linkcolor
+ \fi
+ %
\ifdim \wd1 > 0pt
- \putwordsection{} ``\printednodename'' in \cite{\printedmanual}%
+ \putwordsection{} ``\printednodename'' \putwordin{} \cite{\printedmanual}%
\else
% _ (for example) has to be the character _ for the purposes of the
% control sequence corresponding to the node, but it has to expand
@@ -4775,11 +5268,12 @@ width0pt\relax} \fi
\setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
\ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
}%
- % [mynode],
+ % [mynode],
[\printednodename],\space
% page 3
\turnoffactive \putwordpage\tie\refx{#1-pg}{}%
\fi
+ \endlink
\endgroup}
% \dosetq is the interface for calls from other macros
@@ -4787,7 +5281,7 @@ width0pt\relax} \fi
% Use \normalturnoffactive so that punctuation chars such as underscore
% and backslash work in node names. (\turnoffactive doesn't do \.)
\def\dosetq#1#2{%
- {\let\folio=0
+ {\let\folio=0%
\normalturnoffactive
\edef\next{\write\auxfile{\internalsetq{#1}{#2}}}%
\iflinks
@@ -4864,7 +5358,7 @@ width0pt\relax} \fi
}
% This is the macro invoked by entries in the aux file.
-%
+%
\def\xrdef#1{\begingroup
% Reenable \ as an escape while reading the second argument.
\catcode`\\ = 0
@@ -5016,6 +5510,8 @@ width0pt\relax} \fi
\xspaceskip\z@skip
\parindent\defaultparindent
%
+ \smallfonts \rm
+ %
% Hang the footnote text off the number.
\hang
\textindent{\thisfootno}%
@@ -5030,7 +5526,7 @@ width0pt\relax} \fi
\else\let\next\f@t\fi \next}
\def\f@@t{\bgroup\aftergroup\@foot\let\next}
\def\f@t#1{#1\@foot}
-\def\@foot{\strut\egroup}
+\def\@foot{\strut\par\egroup}
}%end \catcode `\@=11
@@ -5089,7 +5585,7 @@ width0pt\relax} \fi
% @image. We use the macros from epsf.tex to support this.
% If epsf.tex is not installed and @image is used, we complain.
-%
+%
% Check for and read epsf.tex up front. If we read it only at @image
% time, we might be inside a group, and then its definitions would get
% undone and the next image would fail.
@@ -5102,12 +5598,12 @@ width0pt\relax} \fi
\input epsf.tex
\fi
%
+% We will only complain once about lack of epsf.tex.
\newif\ifwarnednoepsf
\newhelp\noepsfhelp{epsf.tex must be installed for images to
work. It is also included in the Texinfo distribution, or you can get
- it from ftp://ftp.tug.org/tex/epsf.tex.}
+ it from ftp://tug.org/tex/epsf.tex.}
%
-% Only complain once about lack of epsf.tex.
\def\image#1{%
\ifx\epsfbox\undefined
\ifwarnednoepsf \else
@@ -5125,24 +5621,68 @@ width0pt\relax} \fi
% #2 is (optional) width, #3 is (optional) height.
% #4 is just the usual extra ignored arg for parsing this stuff.
\def\imagexxx#1,#2,#3,#4\finish{%
- % \epsfbox itself resets \epsf?size at each figure.
- \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
- \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
- % If the image is by itself, center it.
- \ifvmode
- \nobreak\medskip
- \nobreak
- \centerline{\epsfbox{#1.eps}}%
- \bigbreak
+ \ifpdf
+ \centerline{\dopdfimage{#1}{#2}{#3}}%
\else
- \epsfbox{#1.eps}%
+ % \epsfbox itself resets \epsf?size at each figure.
+ \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
+ \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
+ \begingroup
+ \catcode`\^^M = 5 % in case we're inside an example
+ % If the image is by itself, center it.
+ \ifvmode
+ \nobreak\bigskip
+ % Usually we'll have text after the image which will insert
+ % \parskip glue, so insert it here too to equalize the space
+ % above and below.
+ \nobreak\vskip\parskip
+ \nobreak
+ \centerline{\epsfbox{#1.eps}}%
+ \bigbreak
+ \else
+ % In the middle of a paragraph, no extra space.
+ \epsfbox{#1.eps}%
+ \fi
+ \endgroup
+ \fi
+}
+
+
+\message{localization,}
+% and i18n.
+
+% @documentlanguage is usually given very early, just after
+% @setfilename. If done too late, it may not override everything
+% properly. Single argument is the language abbreviation.
+% It would be nice if we could set up a hyphenation file here.
+%
+\def\documentlanguage{\parsearg\dodocumentlanguage}
+\def\dodocumentlanguage#1{%
+ \tex % read txi-??.tex file in plain TeX.
+ % Read the file if it exists.
+ \openin 1 txi-#1.tex
+ \ifeof1
+ \errhelp = \nolanghelp
+ \errmessage{Cannot read language file txi-#1.tex}%
+ \let\temp = \relax
+ \else
+ \def\temp{\input txi-#1.tex }%
\fi
+ \temp
+ \endgroup
}
+\newhelp\nolanghelp{The given language definition file cannot be found or
+is empty. Maybe you need to install it? In the current directory
+should work if nowhere else does.}
+
+% @documentencoding should change something in TeX eventually, most
+% likely, but for now just recognize it.
+\let\documentencoding = \comment
-\message{paper sizes,}
-% And other related parameters.
+% Page size parameters.
+%
\newdimen\defaultparindent \defaultparindent = 15pt
\chapheadingskip = 15pt plus 4pt minus 2pt
@@ -5162,16 +5702,14 @@ width0pt\relax} \fi
% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
% using an old version of TeX, don't do anything. We want the amount of
% stretch added to depend on the line length, hence the dependence on
-% \hsize. This makes it come to about 9pt for the 8.5x11 format. We
-% call this whenever the paper size is set.
+% \hsize. We call this whenever the paper size is set.
%
\def\setemergencystretch{%
\ifx\emergencystretch\thisisundefined
% Allow us to assign to \emergencystretch anyway.
\def\emergencystretch{\dimen0}%
\else
- \emergencystretch = \hsize
- \divide\emergencystretch by 45
+ \emergencystretch = .15\hsize
\fi
}
@@ -5187,7 +5725,7 @@ width0pt\relax} \fi
\vsize = #1\relax
\advance\vsize by \topskip
\outervsize = \vsize
- \advance\outervsize by 0.6in
+ \advance\outervsize by 2\topandbottommargin
\pageheight = \vsize
%
\hsize = #2\relax
@@ -5264,7 +5802,7 @@ width0pt\relax} \fi
% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
% Perhaps we should allow setting the margins, \topskip, \parskip,
% and/or leading, also. Or perhaps we should compute them somehow.
-%
+%
\def\pagesizes{\parsearg\pagesizesxxx}
\def\pagesizesxxx#1{\pagesizesyyy #1,,\finish}
\def\pagesizesyyy#1,#2,#3\finish{{%
@@ -5278,9 +5816,10 @@ width0pt\relax} \fi
}}
% Set default to letter.
-%
+%
\letterpaper
+
\message{and turning on texinfo input format.}
% Define macros to output various characters with catcode for normal text.
@@ -5292,6 +5831,7 @@ width0pt\relax} \fi
\catcode`\<=\other
\catcode`\>=\other
\catcode`\+=\other
+\catcode`\$=\other
\def\normaldoublequote{"}
\def\normaltilde{~}
\def\normalcaret{^}
@@ -5300,6 +5840,7 @@ width0pt\relax} \fi
\def\normalless{<}
\def\normalgreater{>}
\def\normalplus{+}
+\def\normaldollar{$}
% This macro is used to make a character print one way in ttfont
% where it can probably just be output, and another way in other fonts,
@@ -5310,7 +5851,13 @@ width0pt\relax} \fi
% interword stretch (and shrink), and it is reasonable to expect all
% typewriter fonts to have this, we can check that font parameter.
%
-\def\ifusingtt#1#2{\ifdim \fontdimen3\the\font=0pt #1\else #2\fi}
+\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
+
+% Same as above, but check for italic font. Actually this also catches
+% non-italic slanted fonts since it is impossible to distinguish them from
+% italic fonts. But since this is only used by $ and it uses \sl anyway
+% this is not a problem.
+\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
% Turn off all special characters except @
% (and those which the user can use as if they were ordinary).
@@ -5341,6 +5888,8 @@ width0pt\relax} \fi
\def>{{\tt \gtr}}
\catcode`\+=\active
\def+{{\tt \char 43}}
+\catcode`\$=\active
+\def${\ifusingit{{\sl\$}}\normaldollar}
%\catcode 27=\active
%\def^^[{$\diamondsuit$}
@@ -5371,9 +5920,6 @@ width0pt\relax} \fi
% \normalbackslash outputs one backslash in fixed width font.
\def\normalbackslash{{\tt\rawbackslashxx}}
-% Say @foo, not \foo, in error messages.
-\escapechar=`\@
-
% \catcode 17=0 % Define control-q
\catcode`\\=\active
@@ -5387,7 +5933,8 @@ width0pt\relax} \fi
@let|=@normalverticalbar
@let<=@normalless
@let>=@normalgreater
-@let+=@normalplus}
+@let+=@normalplus
+@let$=@normaldollar}
@def@normalturnoffactive{@let"=@normaldoublequote
@let\=@normalbackslash
@@ -5397,7 +5944,8 @@ width0pt\relax} \fi
@let|=@normalverticalbar
@let<=@normalless
@let>=@normalgreater
-@let+=@normalplus}
+@let+=@normalplus
+@let$=@normaldollar}
% Make _ and + \other characters, temporarily.
% This is canceled by @fixbackslash.
@@ -5416,16 +5964,29 @@ width0pt\relax} \fi
% Also back turn on active characters that might appear in the input
% file name, in case not using a pre-dumped format.
%
-@gdef@fixbackslash{@ifx\@eatinput @let\ = @normalbackslash @fi
- @catcode`+=@active @catcode`@_=@active}
+@gdef@fixbackslash{%
+ @ifx\@eatinput @let\ = @normalbackslash @fi
+ @catcode`+=@active
+ @catcode`@_=@active
+}
-% These look ok in all fonts, so just make them not special. The @rm below
-% makes sure that the current font starts out as the newly loaded cmr10
-@catcode`@$=@other @catcode`@%=@other @catcode`@&=@other @catcode`@#=@other
+% Say @foo, not \foo, in error messages.
+@escapechar = `@@
+
+% These look ok in all fonts, so just make them not special.
+@catcode`@& = @other
+@catcode`@# = @other
+@catcode`@% = @other
+@c Set initial fonts.
@textfonts
@rm
+
@c Local variables:
+@c eval: (add-hook 'write-file-hooks 'time-stamp)
@c page-delimiter: "^\\\\message"
+@c time-stamp-start: "def\\\\texinfoversion{"
+@c time-stamp-format: "%:y-%02m-%02d.%02H"
+@c time-stamp-end: "}"
@c End:
btract one from pc if not innermost frame. Fri Dec 29 15:26:33 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * printcmd.c (print_frame_args): check highest_offset != -1, not i. Thu Dec 28 16:21:02 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * valops.c (value_struct_elt): Clean up error msg. * breakpoint.c (describe_other_breakpoints): Delete extra space before "also set at" and add period at end. Tue Dec 19 10:28:42 1989 Jim Kingdon (kingdon at pogo) * source.c (print_source_lines): Tell user which line number was out of range when printing error message. Sun Dec 17 14:14:09 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * blockframe.c (find_pc_partial_function): Use BLOCK_START (SYMBOL_BLOCK_VALUE (f)) instead of SYMBOL_VALUE (f) to get start of function. * dbxread.c: Make xxmalloc just a #define for xmalloc. Thu Dec 14 16:13:16 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * m68k-opcode.h (fseq & following fp instructions): Change @ to $. Fri Dec 8 19:06:44 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * breakpoint.c (breakpoint_clear_ignore_counts): New function. infcmd.c (run_command): Call it. Wed Dec 6 15:03:38 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * valprint.c: Change it so "array-max 0" means there is no limit. * expread.y (yylex): Change error message "invalid token in expression" to "invalid character '%c' in expression". Mon Dec 4 16:12:54 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * blockframe.c (find_pc_partial_function): Always return 1 for success, 0 for failure, and set *NAME and *ADDRESS to match the return value. * dbxread.c (symbol_file_command): Use perror_with_name on error from stat. (psymtab_to_symtab, add_file_command), core.c (validate_files), source.c (find_source_lines), default-dep.c (exec_file_command): Check for errors from stat, fstat, and myread. Fri Dec 1 05:16:42 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * valops.c (check_field): When following pointers, just get their types; don't call value_ind. Thu Nov 30 14:45:29 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * config.gdb (pyr): New machine. core.c [REG_STACK_SEGMENT]: New code. dbxread.c (process_one_symbol): Cast return from copy_pending to long before casting to enum namespace. infrun.c: Split registers_info into DO_REGISTERS_INFO and registers_info. m-pyr.h, pyr-{dep.c,opcode.h,pinsn.c}: New files. * hp300bsd-dep.c: Stay in sync with default-dep.c. * m-hp300bsd.h (IN_SIGTRAMP): Define. Mon Nov 27 23:48:21 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * m-sparc.h (EXTRACT_RETURN_VALUE, STORE_RETURN_VALUE): Return floating point values in %f0. Tue Nov 21 00:34:46 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * dbxread.c (read_type): #if 0 out code which skips to comma following x-ref. Sat Nov 18 20:10:54 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * valprint.c (val_print): Undo changes of Nov 11 & 16. (print_string): Add parameter force_ellipses. (val_print): Pass force_ellipses true when we stop fetching string before we get to the end, else pass false. Thu Nov 16 11:59:50 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * infrun.c (restore_inferior_status): Don't try to restore selected frame if the inferior no longer exists. * valprint.c (val_print): Rewrite string printing code not to call print_string. * Makefile.dist (clean): Remove xgdb and xgdb.o. Tue Nov 14 12:41:47 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * Makefile.dist (XGDB, bindir, xbindir, install, all): New stuff. Sat Nov 11 15:29:38 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * valprint.c (val_print): chars_to_get: New variable. Thu Nov 9 12:31:47 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * main.c (main): Process "-help" as a switch that doesn't take an argument. Wed Nov 8 13:07:02 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * Makefile.dist (gdb.tar.Z): Add "else true". Tue Nov 7 12:25:14 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * infrun.c (restore_inferior_status): Don't dereference fid if NULL. * config.gdb (sun3, sun4): Accept "sun3" and "sun4". Mon Nov 6 09:49:23 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * Makefile.dist (Makefile): Move comments after commands. * *-dep.c [READ_COFF_SYMTAB]: Pass optional header size to read_section_hdr(). * inflow.c: Include <fcntl.h> regardless of USG. * coffread.c (read_section_hdr): Add optional_header_size. (symbol_file_command): Pass optional header size to read_section_hdr(). (read_coff_symtab): Initialize filestring. * version.c: Change version to 3.4.xxx. * GDB 3.4 released. Sun Nov 5 11:39:01 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * version.c: Change version to 3.4. * symtab.c (decode_line_1): Only skip past "struct" if it is there. * valops.c (value_ind), eval.c (evaluate_subexp, case UNOP_IND): Have "*" <int-valued-exp> return an int, not a LONGEST. * utils.c (fprintf_filtered): Pass arg{4,5,6} to sprintf. * printcmd.c (x_command): Use variable itself rather than treating it as a pointer only if it is a function. (See comment "this makes x/i main work"). * coffread.c (symbol_file_command): Use error for "%s does not have a symbol-table.\n". Wed Nov 1 19:56:18 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * dbxread.c [BELIEVE_PCC_PROMOTION_TYPE]: New code. m-sparc.h: Define BELIEVE_PCC_PROMOTION_TYPE. Thu Oct 26 12:45:00 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * infrun.c: Include <sys/dir.h>. * dbxread.c (read_dbx_symtab, case N_LSYM, case 'T'): Check for enum types and put constants in psymtab. Mon Oct 23 15:02:25 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * dbxread.c (define_symbol, read_dbx_symtab): Handle enum constants (e.g. "b:c=e6,0"). Thu Oct 19 14:57:26 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * stack.c (frame_info): Use FRAME_ARGS_ADDRESS_CORRECT m-vax.h (FRAME_ARGS_ADDRESS_CORRECT): New macro. (FRAME_ARGS_ADDRESS): Restore old meaning. * frame.h (Frame_unknown): New macro. stack.c (frame_info): Check for Frame_unknown return from FRAME_ARGS_ADDRESS. m-vax.h (FRAME_ARGS_ADDRESS): Sometimes return Frame_unknown. * utils.c (fatal_dump_core): Add "internal error" to message. * infrun.c (IN_SIGTRAMP): New macro. (wait_for_inferior): Use IN_SIGTRAMP. m-vax.h (IN_SIGTRAMP): New macro. Wed Oct 18 15:09:22 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * config.gdb, Makefile.dist: Shorten m-i386-sv32.h. * coffread.c (symbol_file_command): Pass 0 to select_source_symtab. Tue Oct 17 12:24:41 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * i386-dep.c (i386_frame_num_args): Take function from m-i386.h file. Check for pfi null. m-i386.h (FRAME_NUM_ARGS): Use i386_frame_num_args. * infrun.c (wait_for_inferior): set stop_func_name to 0 before calling find_pc_partial_function. Thu Oct 12 01:08:50 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * breakpoint.c (_initialize_breakpoint): Add "disa". * Makefile.dist: Add GLOBAL_CFLAGS and pass to readline. * config.gdb (various): "$machine =" -> "machine =". Wed Oct 11 11:54:31 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * inflow.c (try_writing_regs): #if 0 out this function. * main.c (main): Add "-help" option. * dbxread.c (read_dbx_symtab): Merge code for N_FUN with N_STSYM, etc. Mon Oct 9 14:21:55 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * inflow.c (try_writing_regs_command): Don't write past end of struct user. * dbxread.c (read_struct_type): #if 0 out code which checks for bitpos and bitsize 0. * config.gdb: Accept sequent-i386 (not seq386). (symmetry): Set depfile and paramfile. * m-convex.h (IGNORE_SYMBOL): Check for N_MONPT if defined. Thu Oct 5 10:14:26 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * default-dep.c (read_inferior_memory): Put #if 0'd out comment within /* */. Wed Oct 4 18:44:41 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * config.gdb: Change /dev/null to m-i386.h for various 386 machine "opcodefile" entries. * config.gdb: Accept seq386 for sequent symmetry. Mon Oct 2 09:59:50 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * hp300bsd-dep.c: Fix copyright notice. Sun Oct 1 16:25:30 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * Makefile.dist (DEPFILES): Add isi-dep.c. * default-dep.c (read_inferior_memory): Move #endif after else. Sat Sep 30 12:50:16 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * version.c: Change version number to 3.3.xxx. * GDB 3.3 released. * version.c: Change version number to 3.3. * Makefile.dist (READLINE): Add vi_mode.c * config.gdb (i386): Change /dev/null to m-i386.h * config.gdb: Add ';;' before 'esac'. * Makefile.dist (gdb.tar.Z): Move comment above dependency. * dbxread.c (read_ofile_symtab): Check symbol before start of source file for GCC_COMPILED_FLAG_SYMBOL. (start_symtab): Don't clear processing_gcc_compilation. Thu Sep 28 22:30:23 1989 Roland McGrath (roland at hobbes.ai.mit.edu) * valprint.c (print_string): If LENGTH is zero, print "". Wed Sep 27 10:15:10 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * config.gdb: "rm tmp.c" -> "rm -f tmp.c". Tue Sep 26 13:02:10 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * utils.c (_initialize_utils): Use termcap to set lines_per_page and chars_per_line. Mon Sep 25 10:06:43 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * dbxread.c (read_dbx_symtab, N_SOL): Do not add the same file more than once. Thu Sep 21 12:43:18 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * infcmd.c (unset_environment_command): Delete all variables if called with no arg. * remote.c, inferior.h (remote_{read,write}_inferior_memory): New functions. core.c ({read,write}_memory): Use remote_{read,write}_inferior_memory. * valops.c (call_function): When reserving stack space for arguments, call value_arg_coerce. * m-hp9k320.h: define BROKEN_LARGE_ALLOCA. * breakpoint.c (delete_command): Ask for confirmation only when there are breakpoints. * dbxread.c (read_struct_type): If lookup_basetype_type has copied a stub type, call add_undefined_type. * sparc_pinsn.c (compare_opcodes): Check for "1+i" anywhere in args. * val_print.c (type_print_base): Print stub types as "<incomplete type>". Wed Sep 20 07:32:00 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * sparc-opcode.h (swapa): Remove i bit from match. (all alternate space instructions): Delete surplus "foo rs1+0" patterns. * Makefile.dist (LDFLAGS): Set to $(CFLAGS). * remote-multi.shar (remote_utils.c, putpkt): Change csum to unsigned. Tue Sep 19 14:15:16 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * sparc-opcode.h: Set i bit in lose for many instructions which aren't immediate. * stack.c (print_frame_info): add "func = 0". Mon Sep 18 16:19:48 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * sparc-opcode.h (mov): Add mov to/from %tbr, %psr, %wim. * sparc-opcode.h (rett): Fix notation to use suggested assembler syntax from architecture manual. * symmetry-dep.c (I386_REGNO_TO_SYMMETRY): New macro. (i386_frame_find_saved_regs): Use I386_REGNO_TO_SYMMETRY. Sat Sep 16 22:21:17 1989 Jim Kingdon (kingdon at spiff) * remote.c (remote_close): Set remote_desc to -1. * gdb.texinfo (Output): Fix description of echo to match reality and ANSI C. Fri Sep 15 14:28:59 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * symtab.c (lookup_symbol): Add comment about "asm". * sparc-pinsn.c: Use NUMOPCODES. * sparc-opcode.h (NUMOPCODES): Use sparc_opcodes[0] not *sparc_opcodes. Thu Sep 14 15:25:20 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * dbxread.c (xxmalloc): Print error message before calling abort(). * infrun.c (wait_for_inferior): Check for {stop,prev}_func_name null before passing to strcmp. Wed Sep 13 12:34:15 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * sparc-opcode.h: New field delayed. sparc-pinsn.c (is_delayed_branch): New function. (print_insn): Check for delayed branches. * stack.c (print_frame_info): Use misc_function_vector in case where ar truncates file names. Tue Sep 12 00:16:14 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * convex-dep.c (psw_info): Move "struct pswbit *p" with declarations. Mon Sep 11 14:59:57 1989 Jim Kingdon (kingdon at spiff) * convex-dep.c (core_file_command): Delete redundant printing of "Program %s". * m-convex.h (ENTRY_POINT): New macro. * m-convex.h (FRAME_CHAIN_VALID): Change outside_first_object_file to outside_startup_file * main.c: #if 0 out catch_termination and related code. * command.c (lookup_cmd_1): Consider underscores part of command names. Sun Sep 10 09:20:12 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * printcmd.c: Change asdump_command to disassemble_command (_initialize_printcmd): Change asdump to diassemble. * main.c (main): Exit with code 0 if we hit the end of a batch file. * Makefile.dist (libreadline.a): Fix syntax of "CC=${CC}". Sat Sep 9 01:07:18 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * values.c (history_info): Renamed to value_history_info. Command renamed to "info value" (with "info history" still accepted). * sparc-pinsn.c (print_insn): Extend symbolic address printing to cover "sethi" following by an insn which uses 1+i. Fri Sep 8 14:24:01 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * m-hp9k320.h, m-hp300bsd.h, m-altos.h, m-sparc.h, m-sun3.h (READ_GDB_SYMSEGS): Remove. dbxread.c [READ_GDB_SYMSEGS]: Remove code to read symsegs. * sparc-pinsn.c (print_insn): Detect "sethi-or" pairs and print symbolic address. * sparc-opcode.h (sethi, set): Change lose from 0xc0000000 to 0xc0c00000000. * remote.c (remote_desc): Initialize to -1. * Makefile.dist (libreadline.a): Pass CC='${CC}' to readline makefile. Thu Sep 7 00:07:17 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * dbxread.c (read_struct_type): Check for static member functions. values.c, eval.c, valarith.c, valprint.c, valops.c: Merge changes from Tiemann for static member functions. * sparc-opcode.h (tst): Fix all 3 patterns. * Makefile.dist (gdb1): New rule. * sparc-opcode.h: Change comment about what the disassembler does with the order of the opcodes. * sparc-pinsn.c (compare_opcodes): Put 1+i before i+1. Also fix mistaken comment about preserving order of original table. * sparc-opcode.h (clr, mov): Fix incorrect lose entries. * m-symmetry.h (FRAME_NUM_ARGS): Add check to deal with code that GCC sometimes generates. * config.gdb: Change all occurances of "skip" to "/dev/null". * README (about languages other than C): Update comments about Pascal and FORTRAN. * sparc-opcode.h (nop): Change lose from 0xae3fffff to 0xfe3fffff. * values.c (value_virtual_fn_field): #if 0-out assignment to VALUE_TYPE(vtbl). Wed Sep 6 12:19:22 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * utils.c (fatal_dump_core): New function. Makefile.dist (MALLOC_FLAGS): use -Dbotch=fatal_dump_core Tue Sep 5 15:47:18 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * breakpoint.c (enable_command): With no arg, enable all bkpts. * Makefile.dist (Makefile): Remove \"'s around $(MD). * Makefile.dist: In "cd readline; make . . ." change first SYSV_DEFINE to SYSV. * m68k-pinsn.c (_initialize_pinsn): Use alternate assembler syntax #ifdef HPUX_ASM Sat Sep 2 23:24:43 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * values.c (history_info): Don't check num_exp[0] if num_exp is nil (just like recent editing_info change). Fri Sep 1 19:19:01 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * gdb.texinfo (inc-history, inc-readline): Copy in the inc-* files because people might not have makeinfo. * README (xgdb): Strengthen nasty comments. * gdb.texinfo: Change @setfilename to "gdb.info". Thu Aug 31 17:23:50 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * main.c (editing_info): Don't check arg[0] if arg is null. * m-vax.h: Add comment about known sigtramp bug. * sun3-dep.c, sparc-dep.c (IS_OBJECT_FILE, exec_file_command): Get right text & data addresses for .o files. Wed Aug 30 13:54:19 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * utils.c (tilde_expand): Remove function (it's in readline). * sparc-opcode.h (call): Change "8" to "9" in first two patterns (%g7->%o7). Tue Aug 29 16:44:41 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * printcmd.c (whatis_command): Change 4th arg to type_print from 1 to -1. Mon Aug 28 12:22:41 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * dbxread.c (psymtab_to_symtab_1): In "and %s ..." change pst->filename to pst->dependencies[i]->filename. * blockframe.c (FRAMELESS_LOOK_FOR_PROLOGUE): New macro made from FRAMELESS_FUNCTION_INVOCATION from m-sun3.h except that it checks for zero return from get_pc_function_start. m-hp9k320.h, m-hp300bsd.h, m-i386.h, m-isi.h, m-altos.h, m-news.h, m-sparc.h, m-sun2.h, m-sun3.h, m-symmetry.h (FRAMELESS_FUNCTION_INVOCATION): Use FRAMELESS_LOOK_FOR_PROLOGUE. * dbxread.c (read_struct_type): Give warning and ignore field if bitpos and bitsize are zero. Sun Aug 27 04:55:20 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * dbxread.c (psymtab_to_symtab{,_1}): Print message about reading in symbols before reading stringtab, not after. Sat Aug 26 02:01:53 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * dbxread.c (IS_OBJECT_FILE, ADDR_OF_TEXT_SEGMENT): New macros. (read_dbx_symtab): Use text_addr & text_size to set end_of_text_addr. (symbol_file_command): pass text_addr & text_size to read_dbx_symtab. Fri Aug 25 23:08:13 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * valprint.c (value_print): Try to give the name of function pointed to when printing a function pointer. Thu Aug 24 23:18:40 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * core.c (xfer_core_file): In cases where MEMADDR is above the largest address that makes sense, set i to len. Thu Aug 24 16:04:17 1989 Roland McGrath (roland at hobbes.ai.mit.edu) * valprint.c (print_string): New function to print a character string, doing array-max limiting and repeat count processing. (val_print, value_print): Use print_string. (REPEAT_COUNT_THRESHOLD): New #define, the max number of elts to print without using a repeat count. Set to ten. (value_print, val_print): Use REPEAT_COUNT_THRESHOLD. * utils.c (printchar): Use {fputs,fprintf}_filtered. * valprint.c (val_print): Pass the repeat count arg to the fprintf_filtered call for "<repeats N times>" messages. Wed Aug 23 22:53:47 1989 Roland McGrath (roland at hobbes.ai.mit.edu) * utils.c: Include <pwd.h>. * main.c: Declare free. Wed Aug 23 05:05:59 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * utils.c, defs.h: Add tilde_expand. source.c (directory_command), main.c (cd_command), main.c (set_history_filename), dbxread.c (symbol_file_command), coffread.c (symbol_file_command), dbxread.c (add_file_command), symmisc.c (print_symtabs), *-dep.c (exec_file_command, core_file_command), main.c (source_command): Use tilde_expand. * dbxread.c (read_type): When we get a cross-reference, resolve it immediately if possible, only calling add_undefined_type if necessary. * gdb.texinfo: Uncomment @includes and put comment at start of file telling people to use makeinfo. * valprint.c (type_print_base): Print the right thing for bitfields. * config.gdb (sun3os3): Set paramfile and depfile. Tue Aug 22 05:38:36 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * dbxread.c (symbol_file_command): Pass string table size to read_dbx_symtab(). (read_dbx_symtab): Before indexing into string table, check string table index for reasonableness. (psymtab_to_symtab{,_1}, read_ofile_symtab): Same. Tue Aug 22 04:04:39 1989 Roland McGrath (roland at hobbes.ai.mit.edu) * m68k-pinsn.c: Replaced many calls to fprintf and fputs with calls to fprintf_filtered and fputs_filtered. (print_insn_arg): Use normal MIT 68k syntax for postincrement, predecrement, and register indirect addressing modes. Mon Aug 21 10:08:02 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * main.c (initialize_signals): Set signal handler for SIGQUIT and SIGHUP to do_nothing. * ns32k-opcode.h (ord): Change 1D1D to 1D2D. * ns32k-pinsn.c (print_insn_arg, print_insn): Handle index bytes correctly. * ns32k-opcode.h: Add comments. * dbxread.c (read_type): Put enum fields in type.fields in order that they were found in the debugging symbols (not reverse order). Sun Aug 20 21:17:13 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * main.c (source_command): Read .gdbinit if run without argument. * source.c (directory_command): Only print "foo already in path" if from_tty. * version.c: Change version number to 3.2.xxx Sat Aug 19 00:24:08 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * m-news.h: Define HAVE_WAIT_STRUCT. * m-isi.h, isi-dep.c: Replace with new version from Adam de Boor. config.gdb: Remove isibsd43. * main.c (catch_termination): Don't say we have written .gdb_history until after we really have. * convex-dep.c (attach): Add "sleep (1)". (write_vector_register): Use "LL" with long long constant. (wait): Close comment. (wait): Change "unix 7.1 bug" to "unix 7.1 feature" & related changes in comment. (scan_stack): And fp with 0x80000000 in while loop test. (core_file_command): Move code to set COREFILE. (many places): Change printf to printf_filtered. (psw_info): Allow argument giving value to print as a psw. (_initialize_convex_dep): Update docstrings. * m-convex.h (WORDS_BIG_ENDIAN): Correct typo ("WRODS") define NO_SIGINTERRUPT. define SET_STACK_LIMIT_HUGE. add "undef BUILTIN_TYPE_LONGEST" before defining it. Use "LL" after constants in CALL_DUMMY. * dbxread.c: In the 3 places it says error "ridiculous string table size"... delete extra parameter to error. * dbxread.c (scan_file_globals): Check for FORTRAN common block. Allow multiple references for the sake of common blocks. * main.c (initialize_main): Set history_filename to include current directory. * valprint.c (decode_format): Don't return a defaulted size field if osize is zero. * gdb.texinfo (Compilation): Update information on -gg symbols. Document problem with ar. Fri Aug 18 19:45:20 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * valprint.c (val_print, value_print): Add "<repeats %d times>" code. Also put "..." outside quotes for strings. * main.c (initialize_main): Add comment about history output file being different from history input file. * m-newsos3.h: Undefine NO_SIGINTERRUPT. Rearrange a few comments. * m-newsos3.h (REGISTER_U_ADDR): Use new version from Hikichi. * sparc-opcode.h: Add comment clarifying meaning of the order of the entries in sparc_opcodes. * eval.c (evaluate_subexp, case UNOP_IND): Deal with deferencing things that are not pointers. * valops.c (value_ind): Make dereferencing an int give a LONGEST. * expprint.c (print_subexp): Add (int) cast in OP_LAST case. * dbxread.c (read_array_type): Set lower and upper if adjustable. * symtab.c (lookup_symbol): Don't abort if symbol found in psymtab but not in symtab. Thu Aug 17 15:51:20 1989 Randy Smith (randy at hobbes.ai.mit.edu) * config.gdb: Changed "Makefile.c" to "Makefile.dist". Thu Aug 17 01:58:04 1989 Roland McGrath (roland at apple-gunkies.ai.mit.edu) * sparc-opcode.h (or): Removed incorrect lose bit 0x08000000. [many]: Changed many `lose' entries to have the 0x10 bit set, so they don't think %l0 is %g0. Wed Aug 16 00:30:44 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * m-symmetry.h (STORE_STRUCT_RETURN): Also write reg 0. (EXTRACT_RETURN_VALUE): Call symmetry_extract_return_value. symmetry-dep.c (symmetry_extract_return_value): New fn. * main.c (symbol_completion_function): Deal with changed result_list from lookup_cmd_1 for ambiguous return. command.c (lookup_cmd): Same. * inflow.c [TIOCGETC]: Move #include "param.h" back before system #includes. Change all #ifdef TIOCGETC to #if defined(TIOCGETC) && !defined(TIOCGETC_BROKEN) m-i386-sysv3.2.h, m-i386gas-sysv3.2.h: Remove "#undef TIOCGETC" and add "#define TIOCGETC_BROKEN". * command.c (lookup_cmd_1): Give the correct result_list in the case of an ambiguous return where there is a partial match (e.g. "info a"). Add comment clarifying what is the correct result_list. * gdb.texinfo (GDB History): Document the two changes below. * main.c (command_line_input): Make history expansion not just occur at the beginning of a line. * main.c (initialize_main): Make history expansion off by default. * inflow.c: Move #include "param.h" after system #includes. * i386-dep.c (i386_float_info): Use U_FPSTATE macro. * m-i386-sysv3.2.h, m-i386gas-sysv3.2.h: New files. Makefile.dist, config.gdb: Know about these new files. Tue Aug 15 21:36:11 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * symtab.c (lookup_struct_elt_type): Use type_print rather than assuming type has a name. Tue Aug 15 02:25:43 1989 Roland McGrath (roland at apple-gunkies.ai.mit.edu) * sparc-opcode.h (mov): Removed bogus "or i,0,d" pattern. * sparc-opcode.h (mov, or): Fixed incorrect `lose' members. * sparc-dep.c: Don't include "sparc-opcode.h". (skip_prologue, isanulled): Declare special types to recognize instructions, and use them. * sparc-pinsn.c (print_insn): Sign-extend 13-bit immediate args. If they are less than +9, print them in signed decimal instead of unsigned hex. * sparc-opcode.h, sparc-pinsn.c: Completely rewritten to share an opcode table with gas, and thus produce disassembly that looks like what the assembler accepts. Tue Aug 15 16:20:52 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * symtab.c (find_pc_psymbol): Move best_pc=psymtab->textlow-1 after test for psymtab null. * main.c (editing_info): Remove variable retval. * config.gdb (sun3, isi): Comment out obsolete message about telling it whether you have an FPU (now that it detects it). * config.gdb (sun3): Accept sun3os3. * m68k-insn.h: Include <signal.h>. * m68k-pinsn.h (convert_{to,from}_68881): Add have_fpu code * m-newsos3.h: Undefine USE_PCB. That code didn't seem to work. * sparc-dep.c: Put in insn_fmt and other stuff from the old sparc-opcode.h. * sparc-opcode.h, sparc-pinsn.c: Correct copyright notice. * sparc-opcode.h, sparc-pinsn.c: Replace the old ones with the new ones by roland. Tue Aug 15 02:25:43 1989 Roland McGrath (roland at apple-gunkies.ai.mit.edu) * Makefile.dist: Don't define CC at all. * Makefile.dist (Makefile): Remove tmp.c after preprocessing. Use $(MD) instead of M_MAKEDEFINE in the cc command. * Makefile.dist: Don't define RL_LIB as "${READLINE}/libreadline.a", since READLINE is a list of files. Mon Aug 14 23:49:29 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * main.c (print_version): Change 1988 to 1989. * main.c (copying_info, initialize_main): Remove #if 0'd code. Tue Aug 1 14:44:56 1989 Hikichi (hikichi at sran203) * m-newsos3.h (NO_SIGINTERRUPT): have SIGINTERRUPT on NEWS os 3. * m-news.h(FRAME_FIND_SAVED_REGS): use the sun3's instead of old one. Mon Aug 14 15:27:01 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * m-news.h, m-newsos3.h, news-dep.c: Merge additional changes by Hikichi (ChangeLog entries above). * Makefile.dist (READLINE): List readline files individually so we don't accidently get random files from the readline directory. * m-news.h (STORE_RETURN_VALUE, EXTRACT_RETURN_VALUE): Expect floating point returns to be in fp0. * gdb.texinfo (Format options): New node. * gdb.texinfo: Comment out "@include"s until bfox fixes the readline & history docs. * dbxread.c (read_addl_syms): Set startup_file_* if necessary at the end (as well as when we hit ".o"). * printcmd.c (decode_format): Set val.format & val.size to '?' at start and set defaults at end. * symtab.c (decode_line_1): Check for class_name null. * valops.c: Each place where it compares against field names, check for null field names. (new t_field_name variables). * utils.c (fputs_filtered): Check for linebuffer null before checking whether to call fputs. Remove later check for linebuffer null. Sun Aug 13 15:56:50 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * m-isi.h, m-sun3.h ({PUSH,POP}_FP_REGS): New macros. m-sun3.h (NUM_REGS): Conditionalize on FPU. config.gdb (sun3, isi): Add message about support for machines without FPU. * main.c (catch_termination, initialize_signals): new functions. * main.c (editing_info): Add "info editing n" and "info editing +". Rewrite much of this function. gdb.texinfo (GDB Readline): Document it. * values.c (history_info): Add "info history +". Also add code to do "info history +" when command is repeated. gdb.texinfo (Value History): Document "info history +". * expprint.c (print_subexp): Add OP_THIS to case stmt. * config.gdb (sun4os4): Put quotes around make define. * config.gdb: Canonicalize machine name at beginning. Sat Aug 12 00:50:59 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * config.gdb: define M_MAKEDEFINE Makefile (Makefile, MD): Be able to re-make Makefile. * main.c (command_line_input): Add comments to the command history. * Makefile.dist (Makefile): Add /bin/false. Fri Aug 11 14:35:33 1989 Jim Kingdon (kingdon at spiff) * Makefile.dist: Comment out .c.o rule and add TARGET_ARCH. * m-altos.h: Include sys/page.h & sys/net.h * m-altos.h (FRAME_CHAIN{,_VALID}): Use outside_startup_file. * config.gdb (altos, altosgas): Add M_SYSV & M_BSD_NM and remove M_ALLOCA=alloca.o from makedefine. * coffread.c (complete_symtab): Change a_entry to entry. * m-altosgas.h: New file. * m-symmetry (REGISTER_BYTE): Fix dumb mistake. Fri Aug 11 06:39:49 1989 Roland McGrath (roland at hobbes.ai.mit.edu) * utils.c (set_screensize_command): Check for ARG being nil, since that's what execute_command will pass if there's no argument. * expread.y (yylex): Recognize "0x" or "0X" as the beginning of a number. Thu Aug 10 15:43:12 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * config.gdb, Makefile.dist: Rename Makefile.c to Makefile.dist. * m-altos.h: Add comment about porting to USGR2. * config.gdb (sparc): Add -Usparc. Wed Aug 9 14:20:39 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * m-sun3os4.h: Define BROKEN_LARGE_ALLOCA. * values.c (modify_field): Check for value too large to fit in bitfield. * utils.c (fputs_filtered): Allow LINEBUFFER to be NULL. * breakpoint.c (condition_command): Check for attempt to specify non-numeric breakpoint number. * config.gdb, Makefile, m-altos.h, altos-dep.c: Merge Altos port. * README: Change message about editing Makefile. * config.gdb: Edit Makefile. Copied Makefile to Makefile.c and changed to let config.gdb run us through the C preprocessor. * expread.y (yylex): Test correctly for definition of number. Wed Aug 9 11:56:05 1989 Randy Smith (randy at hobbes.ai.mit.edu) * dbxread.c (read_dbx_symtab): Put bracketing of entry point in test case for .o symbols so that it will be correct even without debugging symbols. (end_psymtab): Took bracketing out. * blockframe.c (outside_startup_file): Reverse the sense of the return value to make the functionality implied by the name correct. Tue Aug 8 11:48:38 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * coffread.c (symbol_file_command): Do not assume presence of a.out header. * blockframe.c: Replace first_object_file_end with startup_file_{start,end} (outside_startup_file): New function. dbxread.c (read_addl_syms, read_dbx_symtab, end_psymbol): set startup_file_*. Delete first_object_file_end code. Add entry_point and ENTRY_POINT coffread.c (complete_symtab): Set startup_file_*. (first_object_file_end): Add as static. m-*.h (FRAME_CHAIN, FRAME_CHAIN_VALID): Call outside_startup_file instead of comparing with first_object_file_end. * breakpoint.c (breakpoint_1): Change -1 to (CORE_ADDR)-1. * config.gdb (i386, i386gas): Add missing quotes at end of "echo" * source.c (directory_command): Add dont_repeat (); Mon Aug 7 18:03:51 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * dbxread.c (read_addl_syms): Change strcmp to strncmp and put 3rd arg back. * command.h (struct cmd_list_element): Add comment clarifying purpose of abbrev_flag. Mon Aug 7 12:51:03 1989 Randy Smith (randy at hobbes.ai.mit.edu) * printcmd.c (_initialize_printcmd): Changed "undisplay" not to have abbrev flag set; it isn't an abbreviation of "delete display", it's an alias. Mon Aug 7 00:25:15 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * symtab.c (lookup_symtab_1): Remove filematch (never used). * expread.y [type]: Add second argument to 2 calls to lookup_member_type which were missing them. * dbxread.c (symbol_file_command): Add from_tty arg. Check it before calling query. * infcmd.c (tty_command): Add from_tty arg. * eval.c (evaluate_subexp): Remove 3rd argument from calls to value_x_unop. * dbxread.c (read_addl_syms): Remove 3rd argument from call to strcmp. * gdb.texinfo (Command editing): @include inc-readline.texinfo and inc-history.texinfo and reorganize GDB-specific stuff. * Makefile: Add line MAKE=make. * README (second paragraph): Fix trivial errors. * dbxread.c (read_struct_type): Make sure p is initialized. * main.c (symbol_completion_function): Complete correctly on the empty string. Sun Aug 6 21:01:59 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * symmetry-dep.c: Remove "long" from definition of i386_follow_jump. * gdb.texinfo (Backtrace): Document "where" and "info stack". * dbxread.c (cleanup_undefined_types): Strip off "struct " or "union " from type names before doing comparison Sat Aug 5 02:05:36 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * config.gdb (i386, i386gas): Improve makefile editing instructions. * Makefile: Fix typo in CLIBS for SYSV. * dbxread.c (read_dbx_symtab): Deal with N_GSYM typedefs. * dbxread.c (add_file_command): Do not free name. We didn't allocate it; it just points into arg_string. * Makefile, m-*.h: Change LACK_VPRINTF to HAVE_VPRINTF. Fri Jul 28 00:07:48 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * valprint.c (val_print): Made sure that all returns returned a value (usually 0, indicating no memory printed). * core.c (read_memory): Changed "return" to "return 0". * expread.y (parse_number): Handle scientific notation when the string does not contain a '.'. Thu Jul 27 15:14:03 1989 Randy Smith (randy at hobbes.ai.mit.edu) * infrun.c (signals_info): Error if signal number passed is out of bounds. * defs.h: Define alloca to be __builtin_alloca if compiling with gcc and localized inclusion of alloca.h on the sparc with the other alloca stuff. * command.c: Doesn't need to include alloca.h on the sparc; defs.h does it for you. * printcmd.c (print_frame_args): Changed test for call to print_frame_nameless_args to check i to tell if any args had been printed. Thu Jul 27 04:40:56 1989 Roland McGrath (roland at hobbes.ai.mit.edu) * blockframe.c (find_pc_partial_function): Always check that NAME and/or ADDRESS are not nil before storing into them. Wed Jul 26 23:41:21 1989 Roland McGrath (roland at hobbes.ai.mit.edu) * m-newsos3.h: Define BROKEN_LARGE_ALLOCA. * dbxread.c (symbol_file_command, psymtab_to_symtab): Use xmalloc #ifdef BROKEN_LARGE_ALLOCA. Tue Jul 25 16:28:18 1989 Jay Fenlason (hack at apple-gunkies.ai.mit.edu) * m68k-opcode.h: moved some of the fmovem entries so they're all consecutive. This way the assembler doesn't bomb. Mon Jul 24 22:45:54 1989 Randy Smith (randy at hobbes.ai.mit.edu) * symtab.c (lookup_symbol): Changed error to an informational (if not very comforting) message about internal problems. This will get a null symbol returned to decode_line_1, which should force things to be looked up in the misc function vector. Wed Jul 19 13:47:34 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * symtab.c (lookup_symbol): Changed "fatal" to "error" in external symbol not found in symtab in which it was supposed to be found. This can be reached because of a bug in ar. Tue Jul 18 22:57:43 1989 Randy Smith (roland at hobbes.ai.mit.edu) * m-news.h [REGISTER_U_ADDR]: Decreased the assumed offset of fp0 by 4 to bring it into (apparently) appropriate alignment with reality. Tue Jul 18 18:14:42 1989 Randy Smith (randy at hobbes.ai.mit.edu) * Makefile: pinsn.o should depend on opcode.h * m68k-opcode.h: Moved fmovemx with register lists to before other fmovemx. Tue Jul 18 11:21:42 1989 Jim Kingdon (kingdon at susie) * Makefile, m*.h: Only #define vprintf (to _doprnt or printf, depends on the system) if the library lacks it (controlled by LACK_VPRINTF_DEFINE in makefile). Unpleasant, but necessary to make this work with the GNU C library. Mon Jul 17 15:17:48 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * breakpoint.c (breakpoint_1): Change addr-b->address to b->address-addr. Sun Jul 16 16:23:39 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * eval.c (evaluate_subexp): Change error message printed when right operand of '@' is not an integer to English. * infcmd.c (registers_info): Fix call to print_spaces_filtered to specify right # of arguments. * gdb.texinfo (Command Editing): Document info editing command. * coffread.c (read_file_hdr): Add MC68MAGIC. * source.c (select_source_symtab): Change MAX to max. Fri Jul 14 21:19:11 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * infcmd.c (registers_info): Clean up display to look good with long register names, to say "register" instead of "reg", and to put the "relative to selected stack frame" bit at the top. Fri Jul 14 18:23:09 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * dbxread.c (record_misc_function): Put parens around | to force correct evaluation. Wed Jul 12 12:25:53 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * m-newsos3, m-news, infrun.c, Makefile, config.gdb, news-dep.c: Merge in Hikichi's changes for Sony/News-OS 3 support. Tue Jul 11 21:41:32 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * utils.c (fputs_filtered): Don't do any filtering if output is not to stdout, or if stdout is not a tty. (fprintf_filtered): Rely on fputs_filtered's check for whether to do filtering. Tue Jul 11 00:33:58 1989 Randy Smith (randy at hobbes.ai.mit.edu) * GDB 3.2 Released. * valprint.h: Deleted. * utils.c (fputs_filtered): Don't do any filtering if filtering is disabled (lines_per_page == 0). Mon Jul 10 22:27:53 1989 Randy Smith (roland at hobbes.ai.mit.edu) * expread.y [typebase]: Added "unsigned long int" and "unsigned short int" to specs. Mon Jul 10 21:44:55 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * main.c (main): Make -cd use cd_command to avoid current_directory with non-absolute pathname. Mon Jul 10 00:34:29 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * dbxread.c (symbol_file_command): Catch errors from stat (even though they should never happen). * source.c (openp): If the path is null, use the current directory. * dbxread.c (read_dbx_symtab): Put N_SETV symbols into the misc function vector ... (record_misc_function): ... as data symbols. * utils.c (fprintf_filtered): Return after printing if we aren't going to do filtering. * Makefile: Added several things for make clean to take care of. * expread.y: Lowered "@" in precedence below +,-,*,/,%. * eval.c (evaluate_subexp): Return an error if the rhs of "@" isn't integral. * Makefile: Added removal of core and gdb[0-9] files to clean target. * Makefile: Made a new target "distclean", which cleans things up correctly for making a distribution. Sun Jul 9 23:21:27 1989 Randy Smith (randy at hobbes.ai.mit.edu) * dbxread.c: Surrounded define of gnu symbols with an #ifndef NO_GNU_STABS in case you don't want them on some machines. * m-npl.h, m-pn.h: Defined NO_GNU_STABS. Sun Jul 9 19:25:22 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * utils.c (fputs_filtered): New function. (fprintf_filtered): Use fputs_filtered. utils.c (print_spaces_filtered), command.c (help_cmd,help_cmd_list), printcmd.c (print_frame_args), stack.c (print_block_frame_locals, print_frame_arg_vars), valprint.c (many functions): Use fputs_filtered instead of fprintf_filtered to avoid arbitrary limit. * utils.c (fprintf_filtered): Fix incorrect comment. Sat Jul 8 18:12:01 1989 Randy Smith (randy at hobbes.ai.mit.edu) * valprint.c (val_print): Changed assignment of pretty to use prettyprint as a conditional rather than rely on values of the enum. * Projects: Cleaned up a little for release. * main.c (initialize_main): Initialize rl_completion_entry_function instead of completion_entry_function. * Makefile: Modified to use the new readline library setup. * breakpoint.c (break_command_1, delete_breakpoint, enable_breakpoint, disable_breakpoint): Put in new printouts for xgdb usage triggered off of xgdb_verbose. * main.c (main): Added check for flag to set xgdb_verbose. * stack.c (frame_command): Set frame_changed when frame command used. Fri Jul 7 16:20:58 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * Remove valprint.h and move contents to value.h (more logical). Fri Jul 7 02:28:06 1989 Randall Smith (randy at rice-chex) * m68k-pinsn.c (print_insn): Included a check for register list; if there is one, make sure to start p after it. * breakpoint.c (break_command_1, delete_breakpoint, enable_breakpoint, disable_breakpoint): #ifdef'd out changes below; they produce unwanted output in gdb mode in gnu-emacs. * gdb.texinfo: Spelled. Also removed index references from command editing section; the relevance/volume ratio was too low. Removed all references to the function index. * ns32k-opcode.h, ns32k-pinsn.c: Backed out changes of June 24th; haven't yet received legal papers. * .gdbinit: Included message telling the user what it is doing. * symmetry-dep.c: Added static decls for i386_get_frame_setup, i386_follow_jump. * values.c (unpack_double): Added a return (double)0 at the end to silence a compiler warning. * printcmd.c (containing_function_bounds, asdump_command): Created to dump the assembly code of a function (support for xgdb and a useful hack). (_initialize_printcmd): Added this to command list. * gdb.texinfo [Memory]: Added documentation for the asdump command. * breakpoint.c (break_command_1, delete_breakpoint, enable_breakpoint, disable_breakpoint): Added extra verbosity for xgdb conditionalized on the new external frame_full_file_name. * source.c (identify_source_line): Increase verbosity of fullname prointout to include pc value. * stack.c: Added a new variable; "frame_changed" to indicate when a frame has been changed so that gdb can print out a frame change message when the frame only changes implicitly. (print_frame_info): Check the new variable in determining when to print out a new message and set it to zero when done. (up_command): Increment it. (down_command): Decrement it. * m68k-pinsn.c (print_insn_arg [lL]): Modified cases for register lists to reset the point to point to after the word from which the list is grabbed *if* that would cause point to point farther than it currently is. Thu Jul 6 14:28:11 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * valprint.c (val_print, value_print): Add parameter to control prettyprinting. valprint.h: New file containing constants used for passing prettyprinting parameter to val{,ue}_print. expprint.c, infcmd.c, printcmd.c, valprint.c, values.c: Change all calls to val{,ue}_print to use new parameter. Mon Jul 3 22:38:11 1989 Randy Smith (randy at apple-gunkies.ai.mit.edu) * dbxread.c (,process_one_symbol): Moved extern declaration for index out of function to beginning of file. Mon Jul 3 18:40:14 1989 Jim Kingdon (kingdon at hobbes.ai.mit.edu) * gdb.texinfo (Registers): Add "ps" to list of standard registers. Sun Jul 2 23:13:03 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * printcmd.c (enable_display): Change d->next to d = d->next so that "enable display" without args works. Fri Jun 30 23:42:04 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * source.c (list_command): Made error message given when no symtab is loaded clearer. * valops.c (value_assign): Make it so that when assigning to an internal variable, the type of the assignment exp is the type of the value being assigned. Fri Jun 30 12:12:43 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * main.c (verbose_info): Created. (initialize_main): Put "info verbose" into command list. * utils.c (screensize_info): Created. (_initialize_utils): Defined "info screensize" as a normal command. * valprint.c (format_info): Added information about maximum number of array elements to function. * blockframe.c (find_pc_partial_function): Again. * blockframe.c (find_pc_partial_function): Replaced a "shouldn't happen" (which does) with a zero return. * main.c (dont_repeat): Moved ahead of first use. Thu Jun 29 19:15:08 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * vax-opcode.h: Made minor modifications (moved an instruction and removed a typo) to bring this into accord with gas' table; also changed copyright to reflect it being part of both gdb and gas. * m68k-opcode.h: Added whole scads and bunches of new stuff for the m68851 and changed the coptyrightto recognize that the file was shared between gdb and gas. * main.c (stop_sig): Use "dont_repeat ()" instead of *line = 0; * core.c (read_memory): Don't do anything if length is 0. * Makefile: Added readline.c to the list of files screwed by having the ansi ioctl.h compilation with gcc. * config.gdb: Added sun4os3 & sun4-os3 as availible options. Wed Jun 28 02:01:26 1989 Jim Kingdon (kingdon at apple-gunkies.ai.mit.edu) * command.c (lookup_cmd): Add ignore_help_classes argument. (lookup_cmd_1): Add ignore_help_classes argument. command.c, main.c: Change callers of lookup_cmd{,_1} to supply value for ignore_help_classes. Tue Jun 27 18:01:31 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * utils.c (print_spaces_filtered): Made more efficient. * defs.h: Declaration. * valprint.c (val_print): Used in a couple of new places. Mon Jun 26 18:27:28 1989 Randall Smith (randy at gluteus.ai.mit.edu) * m68k-pinsn.c (print_insn_arg ['#', '^']): Combined them into one case which always gets the argument from the word immediately following the instruction. (print_insn_arg ["[lL]w"]): Make sure to always get the register mask from the word immediately following the instruction. Sun Jun 25 19:14:56 1989 Randall Smith (randy at galapas.ai.mit.edu) * Makefile: Added hp-include back in as something to distribute. * stack.c (print_block_frame_locals): Return value changed from void to int; return 1 if values printed. Use _filtered. (print_frame_local_vars): Use return value from print_block_frame_locals to mention if nothing printed; mention lack of symbol table, use _filtered. (print_frame_arg_vars): Tell the user if no symbol table or no values printed. Use fprintf_filtered instead of fprintf. * blockframe.c (get_prev_frame_info): Check for no inferior or core file before crashing. * inflow.c (inferior_died): Set current frame to zero to keep from looking like we're in start. Sat Jun 24 15:50:53 1989 Randall Smith (randy at gluteus.ai.mit.edu) * stack.c (frame_command): Added a check to make sure that there was an inferior or a core file. * expread.y (yylex): Allow floating point numbers of the form ".5" to be parsed. Changes by David Taylor at TMC: * ns32k-pinsn.c: Added define for ?floating point coprocessor? and tables for register names to be used for each of the possibilities. (list_search): Created; searches a list of options for a specific value. (print_insn_arg): Added 'Q', 'b', 'M', 'P', 'g', and 'G' options to the value location switch. * ns32k-opcode.h: Added several new location flags. [addr, enter, exit, ext[bwd], exts[bwd], lmr, lpr[bwd], restore, rett, spr[bwd], smr]: Improved insn format output. * symtab.c (list_symbols): Rearrange printing to produce readable output for "info types". * eval.c (evaluate_subexp_for_address): Fixed typo. * dbxread.c (read_type): Don't output an error message when there isn't a ',' after a cross-reference. * dbxread.c (read_dbx_symtab): #if'd out N_FN case in read_dbx_symtab if it has the EXT bit set (otherwise multiple cases with the same value). Fri Jun 23 13:12:08 1989 Randall Smith (randy at plantaris.ai.mit.edu) * symmisc.c: Changed decl of print_spaces from static to extern (since it's defined in utils.c). * remote.c (remote_open): Close remote_desc if it's already been opened. * Remote_Makefile, remote_gutils.c, remote_inflow.c, remote_server.c, remote_utils.c: Combined into remote-multi.shar. * remote-multi.shar: Created (Vikram Koka's remote stub). * remote-sa.m68k.shar: Created (Glenn Engel's remcom.c). * README: Updated to reflect new organization of remote stubs. * dbxread.c (read_dbx_symtab): Put an N_FN in with N_FN | N_EXT to account for those machines which don't use the external bit here. Sigh. * m-symmetry.h: Defined NO_SIGINTERRUPT. Thu Jun 22 12:51:37 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * printcmd.c (decode_format): Make sure characters are printed using a byte size. * utils.c (error): Added a terminal_ours here. * stack.c (locals_info): Added check for selected frame. * dbxread.c (read_type): Checked to make sure that a "," was actually found in the symbol to end a cross reference. Wed Jun 21 10:30:01 1989 Randy Smith (randy at tartarus.uchicago.edu) * expread.y (parse_number, [exp]): Allowed for the return of a number marked as unsigned; this will allow inclusion of unsigned constants. * symtab.h: Put in default definitions for BUILTIN_TYPE_LONGEST and BUILTIN_TYPE_UNSIGNED_LONGEST. * expread.y (parse_number): Will now accept integers suffixed with a 'u' (though does nothing special with it). * valarith.c (value_binop): Added cases to deal with unsigned arithmetic correctly. Tue Jun 20 14:25:54 1989 Randy Smith (randy at tartarus.uchicago.edu) * dbxread.c (psymtab_to_symtab_1): Changed reading in info message to go through printf_filtered. * symtab.c (list_symbols): Placed header message after all calls to psymtab_to_symtab. * symtab.c (smash_to_{function, reference, pointer}_type): Carried attribute of permanence for the type being smashed over the bzero and allowed any type to point at this one if it is permanent. * symtab.c (smash_to_{function, reference, pointer}_type): Fix typo: check flags of to_type instead of type. * m-hp9k320.h: Changed check on __GNU__ predefine to __GNUC__. * Makefile: Made MUNCH_DEFINE seperate and based on SYSV_DEFINE; they aren't the same on hp's. Mon Jun 19 17:10:16 1989 Randy Smith (randy at tartarus.uchicago.edu) * Makefile: Fixed typo. * valops.c (call_function): Error if the inferior has not been started. * ns32k-opcode.h [check[wc], cmpm[bwd], movm[bwd], skpsb]: Fixed typos. Fri Jun 9 16:23:04 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * m-news.h [NO_SIGINTERRUPT]: Defined. * dbxread.c (read_type): Start copy of undefined structure name past [sue] defining type of cross ref. * dbxread.c (process_one_symbol): Changed strchr to index. * ns32k-opcode.h, ns32k-pinsn.c: More changes to number of operands, addition of all of the set condition opcodes, addition of several flag letters, all patterned after the gas code. * ns32k-opcode.h [mov{su,us}[bwd], or[bwd]]: Changed number of operands from 1 to 2. Wed Jun 7 15:04:24 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * symseg.h [TYPE_FLAG_STUB]: Created. * dbxread.c (read_type): Set flag bit if type is stub. (cleanup_undefined_types): Don't mark it as a stub if it's been defined since we first learned about it. * valprint.c (val_print): Print out a message to that effect if this type is encountered. * symseg.h, symtab.h: Moved the definition of TYPE_FLAG_PERM over to symseg.h so that all such definitions would be in the same place. * valprint.c (val_print): Print out <No data fields> for a structure if there aren't any. * dbxread.c (read_type): Set type name of a cross reference type to "struct whatever" or something. Tue Jun 6 19:40:52 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * breakpoint.c (breakpoint_1): Print out symbolic location of breakpoints for which there are no debugging symbols. Mon Jun 5 15:14:51 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * command.c (help_cmd_list): Made line_size static. Sat Jun 3 17:33:45 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * Makefile: Don't include the binutils hp-include directory in the distribution anymore; refer the users to the binutils distribution. Thu Jun 1 16:33:07 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * printcmd.c (disable_display_command): Fixed loop iteration for no arg case. * printcmd.c (disable_display_command): Added from_tty parameter to function. * valops.c (value_of_variable): Call read_var_value with 0 cast to FRAME instead of CORE_ADDR. * eval.c (evaluate_subexp): Corrected number of args passed to value_subscript (to 2). * infrun.c (wait_for_inferior), symtab.c (decode_line_1), m-convex.h: Changed name of FIRSTLINE_DEBUG_BROKEN to PROLOGUE_FIRSTLINE_OVERLAP. * m-merlin.h: Fixed typo. * ns32k-opcode.h: Added ns32381 opcodes and "cinv" insn, and fixed errors in movm[wd], rett, and sfsr. * eval.c (evaluate_subexp, evaluate_subexp_for_address), valops.c (value_zero): Change value_zero over to taking two arguments instead of three. * eval.c (evaluate_subexp) [OP_VAR_VALUE]: Get correct lval type for AVOID_SIDE_EFFECTS for all types of symbols. [BINOP_DIV]: Don't divide if avoiding side effects; just return an object of the correct type. [BINOP_REPEAT]: Don't call value_repeat, just allocate a repeated value. (evaluete_subexp_for_address) [OP_VAR_VALUE]: Just return a thing of the right type (after checking to make sure that we are allowed to take the address of whatever variable has been passed). Mon May 29 11:01:02 1989 Randall Smith (randy at galapas.ai.mit.edu) * breakpoint.c (until_break_command): Set the breakpoint with a frame specification so that it won't trip in inferior calls to the function. Also set things up so that it works based on selected frame, not current one. Sun May 28 15:05:33 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * eval.c (evalue_subexp): Change subscript case to use value_zero in EVAL_AVOID_SIDE_EFFECTS case. Fri May 26 12:03:56 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * dbxread.c (read_addl_syms, psymtab_to_symtab): Removed cleanup_undefined_types; this needs to be done on a symtab basis. (end_symtab): Called cleanup_undefined_types from here. (cleanup_undefined_types): No longer uses lookup_symbol (brain dead idea; oh, well), now it searches through file_symbols. Wed May 24 15:52:43 1989 Randall Smith (randy at galapas) * source.c (select_source_symtab): Only run through partial_symtab_list if it exists. * coffread.c (read_coff_symtab): Don't unrecord a misc function when a function symbol is seen for it. * expread.y [variable]: Make sure to write a type for memvals if you don't get a mft you recognize. Tue May 23 12:15:57 1989 Randall Smith (randy at plantaris.ai.mit.edu) * dbxread.c (read_ofile_symtab, psymtab_to_symtab): Moved cleanup of undefined types to psymtab_to_symtab. That way it will be called once for all readins (which will, among other things, help reduce infinite loops). * symtab.h [misc_function_type]: Forced mf_unknown to 0. * dbxread.c (record_misc_function): Cast enum to unsigned char (to fit). * expread.y [variable]: Cast unsigned char back to enum to test. Mon May 22 13:08:25 1989 Randall Smith (randy at gluteus.ai.mit.edu) Patches by John Gilmore for dealing well with floating point: * findvar.c (value_from_register, locate_var_value): Used BYTES_BIG_ENDIAN instead of an inline test. * m-sparc.h [IEEE_FLOAT]: Created to indicate that the sparc is IEEE compatible. * printcmd.c (print_scalar_formatted): Use BYTES_BIG_ENDIAN and the stream argument for printing; also modify default type for 'f'. Change handling of invalid floats; changed call syntax for is_nan. (print_command): Don't print out anything indicating that something was recorded on the history list if it wasn't. * valprint.c (val_print): Fixed to deal properley with new format of is_nan and unpacking doubles without errors occuring. (is_nan): Changed argument list and how it figures big endianness (uses macros). * values.c (record_latest_value): Return -1 and don't record if it's an invalid float. (value_as_double): Changed to use new unpack_double calling convention. (unpack_double): Changed not to call error if the float was invalid; simply to set invp and return. Changed calling syntax. (unpack_field_as_long, modify_field): Changed to use BITS_BIG_ENDIAN to determine correct action. * m-hp9k320.h [HP_OS_BUG]: Created; deals with problem where a trap happens after a continue. * infrun.c (wait_for_inferior): Used. * m-convex.h [FIRSTLINE_DEBUG_BROKEN]: Defined a flag to indicate that the debugging symbols output by the compiler for the first line of a function were broken. * infrun.c (wait_for_inferior), symtab.c (decode_line_1): Used. * gdb.texinfo [Data, Memory]: Minor cleanups of phrasing. Fri May 19 00:16:59 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * dbxread.c (add_undefined_type, cleanup_undefined_types): Created to keep a list of cross references to as yet undefined types. (read_type): Call add_undefined_type when we run into such a case. (read_addl_syms, read_ofile_symtab): Call cleanup_undefined_types when we're done. * dbxread.c (psymtab_to_symtab, psymtab_to_symtab_1): Broke psymtab_to_symtab out into two routines; made sure the string table was only readin once and the globals were only scanned once, for any number of dependencies. Thu May 18 19:59:18 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * m-*.h: Defined (or not, as appropriate per machine) BITS_BIG_ENDIAN, BYTES_BIG_ENDIAN, and WORDS_BIG_ENDIAN. Wed May 17 13:37:45 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * main.c (symbol_completion_function): Always complete on result command list, even if exact match found. If it's really an exact match, it'll find it again; if there's something longer than it, it'll get the right result. * symtab.c (make_symbol_completion_function): Fixed typo; strcmp ==> strncmp. * dbxread.c (read_dbx_symtab): Change 'G' case to mark symbols as LOC_EXTERNAL. * expread.y [variables]: Changed default type of text symbols to function returning int so that one can use, eg. strcmp. * infrun.c (wait_for_inferior): Include a special flag indicating that one shouldn't insert the breakpoints on the next step for returning from a sigtramp and forcing at least one move forward. * infrun.c (wait_for_inferior): Change test for nexting into a function to check for current stack pointer inner than previous stack pointer. * infrun.c (wait_for_inferior): Check for step resume break address before dealing with normal breakpoints. * infrun.c (wait_for_inferior): Added a case to deal with taking and passing along a signal when single stepping past breakpoints before inserting breakpoints. * infrun.c (wait_for_inferior): Inserted special case to keep going after taking a signal we are supposed to be taking. Tue May 16 12:49:55 1989 Randall Smith (randy at gluteus.ai.mit.edu) * inflow.c (terminal_ours_1): Cast result of signal to (int (*)()). * gdb.texinfo: Made sure that references to the program were in upper case. Modify description of the "set prompt" command. [Running]: Cleaned up introduction. [Attach]: Cleaned up. [Stepping]: Change "Proceed" to "Continue running" or "Execute". Minor cleanup. [Source Path]: Cleaned up intro. Cleared up distinction between the executable search path and the source path. Restated effect of the "directory" command with no arguments. [Data]: Fixed typos and trivial details. [Stepping]: Fixed up explanation of "until". * source.c (print_source_lines): Print through filter. * printcmd.c (x_command): If the format with which to print is "i", use the address of anything that isn't a pointer instead of the value. This is for, eg. "x/10i main". * gdb.texinfo: Updated last modification date on manual. Mon May 15 12:11:33 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * symtab.c (lookup_symtab): Fixed typo (name ==> copy) in call to lookup_symtab_1. * gdb.texinfo: Added documentation for "break [+-]n" and for new actions of "directory" command (taking multiple directory names at the same time). * m68k-opcode.h: Replaced the version in gdb with an up-to-date version from the assembler directory. * m68k-pinsn.c (print_insn_arg): Added cases 'l' & 'L' to switch to print register lists for movem instructions. * dbxread.c, m-convex.h: Moved convex dependent include files over from dbxread.c to m-convex.h. * printcmd.c (disable_display, disable_display_command): Changed name of first to second, and created first which takes an int as arg rather than a char pointer. Changed second to use first. (_initialize_printcmd): Changed to use second as command to call. (delete_current_display, disable_current_display): Changed name of first to second, and changed functionality to match. * infrun.c (normal_stop), main.c (return_to_top_level): Changed to call disable_current_display. * dbxread.c (process_one_symbol, read_dbx_symtab): Changed N_FN to be N_FN | N_EXT to deal with new Berkeley define; this works with either the old or the new. * Remote_Makefile, remote_gutils.c, remote_inflow.c, remote_server.c, remote_utils.c: Created. * Makefile: Included in tag and tar files. * README: Included a note about them. * printcmd.c (print_address): Use find_pc_partial_function to remove need to readin symtabs for symbolic addresses. * source.c (directory_command): Replaced function with new one that can accept lists of directories seperated by spaces or :'s. * inflow.c (new_tty): Replaced calls to dup2 with calls to dup. Sun May 14 12:33:16 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * stack.c (args_info): Make sure that you have an inferior or core file before taking action. * ns32k-opcode.h [deiw, deid]: Fixed machine code values for these opcodes. * dbxread.c (scan_file_globals): Modified to use misc function vector instead of file itself. Killed all arguments to the funciton; no longer needed. (psymtab_to_symtab): Changed call for above to reflect new (void) argument list. * dbxread.c (read_dbx_symtab, ): Moved HASH_OFFSET define out of read_dbx_symtab. * expread.y [variable]: Changed default type of misc function in text space to be (void ()). * Makefile: Modified for proper number of s/r conflicts (order is confusing; the mod that necessitated this change was on May 12th, not today). * expread.y (yylex): Added SIGNED, LONG, SHORT, and INT keywords. [typename]: Created. [typebase]: Added rules for LONG, LONG INT, SHORT, SHORT INT, SIGNED name, and UNSIGNED name (a good approximation of ansi standard). * Makefile: Included .c.o rule to avoid sun's make from throwing any curves at us. * blockframe.c: Included <obstack.h> * command.c (lookup_cmd): Clear out trailing whitespace. * command.c (lookup_cmd_1): Changed malloc to alloca. Fri May 12 12:13:12 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * printcmd.c (print_frame_args): Only print nameless args when you know how many args there are supposed to be and when you've printed fewer than them. Don't print nameless args between printed args. * symtab.c (make_symbol_completion_function): Fixed typo (= ==> ==). * remote.c (remote_open): ifdef'd out siginterrupt call by #ifndef NO_SIGINTERRUPT. * m-umax.h: Defined NO_SIGINTERRUPT. * expread.y [ptype, array_mod, func_mod, direct_abs_decl, abs_decl]: Added rules for parsing and creating arbitrarily strange types for casts and sizeofs. * symtab.c, symtab.h (create_array_type): Created. Some minor misfeatures; see comments for details (main one being that you might end up creating two arrays when you only needed one). Thu May 11 13:11:49 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * valops.c (value_zero): Add an argument for type of lval. * eval.c (evaluate_subexp_for_address): Take address properly in the avoid side affects case (ie. keep track of whether we have an lval in memory and we can take the address). (evaluate_subexp): Set the lval type of expressions created with value_zero properley. * valops.c, value.h (value_zero): Created--will return a value of any type with contents filled with zero. * symtab.c, symtab.h (lookup_struct_elt_type): Created. * eval.c (evaluate_subexp): Modified to not read memory when called with EVAL_AVOID_SIDE_EFFECTS. * Makefile: Moved dbxread.c ahead of coffread.c in the list of source files. Wed May 10 11:29:19 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * munch: Make sure that sysv version substitutes for the whole line. * symtab.h: Created an enum misc_function_type to hold the type of the misc function being recorded. * dbxread.c (record_misc_function): Branched on dbx symbols to decide which type to assign to a misc function. * coffread.c (record_misc_function): Always assign type unknown. * expread.y [variable]: Now tests based on new values. Tue May 9 13:03:54 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * symtab.c: Changed inclusion of <strings.h> (doesn't work on SYSV) to declaration of index. * Makefile: Changed last couple of READLINE_FLAGS SYSV_DEFINE * source.c ({forward, reverse}_search_command): Made a default search file similar to for the list command. Mon May 8 18:07:51 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * printcmd.c (print_frame_args): If we don't know how many arguments there are to this function, don't print the nameless arguments. We don't know enough to find them. * printcmd.c (print_frame_args): Call print_frame_nameless_args with proper arguments (start & end as offsets from addr). * dbxread.c (read_addl_syms): Removed cases to deal with global symbols; this should all be done in scan_global_symbols. Sun May 7 11:36:23 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * Makefile: Added copying.awk to ${OTHERS}. Fri May 5 16:49:01 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * valprint.c (type_print_varspec_prefix): Don't pass passed_a_pointer onto children. * valprint.c (type_print_varspec_suffix): Print "array of" with whatever the "of" is after tha array brackets. * valprint.c (type_print_varspec_{prefix,suffix}): Arrange to parenthesisze pointers to arrays as well as pointers to other objects. * valprint.c (type_print_varspec_suffix): Make sure to print subscripts of multi-dimensional arrays in the right order. * infcmd.c (run_command): Fixed improper usages of variables within remote debugging branch. * Makefile: Added Convex.notes to the list of extra files to carry around. * dbxread.c (symbol_file_command): Made use of alloca or malloc dependent on macro define. Thu May 4 15:47:04 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * Makefile: Changed READLINE_FLAGS to SYSV_DEFINE and called munch with it also. * munch: Check first argument for -DSYSV and be looser about picking up init routines if you find it. * coffread.c: Made fclose be of type int. * breakpoint.c (_initialize_breakpoint): Put "unset" into class alias. Wed May 3 14:09:12 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * m-sparc.h [STACK_END_ADDR]: Parameterized off of machine/vmparam.h (as per John Gilmore's suggestion). * blockframe.c (get_prev_frame_info): Changed this function back to checking frameless invocation first before checking frame chain. This means that a backtrace up from start will produce the wrong value, but that a backtrace from a frameless function called in main will show up correctly. * breakpoint.c (_initialize_breakpoint): Added entry in help for delete that indicates that unset is an alias for it. * main.c (symbol_completion_function): Modified recognition of being within a single command. Tue May 2 15:13:45 1989 Randy Smith (randy at gnu) * expread.y [variable]: Add some parens to get checking of the misc function vector right. Mon May 1 13:07:03 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * default-dep.c (core_file_command): Made reg_offset unsigned. * default-dep.c (core_file_command): Improved error messages for reading in registers. * expread.y: Allowed a BLOCKNAME to be ok for a variable name (as per C syntax). * dbxread.c (psymtab_to_symtab): Flushed stdout after printing starting message about reading in symbols. * printcmd.c (print_frame_args): Switched starting place for printing of frameless args to be sizeof int above last real arg printed. * printcmd.c (print_frame_args): Modified final call to print_nameless_args to not use frame slots used array if none had been used. * infrun.c (wait_for_inferior): Take FUNCTION_START_OFFSET into account when dealing with comparison of pc values to function addresses. * Makefile: Added note about compiling gdb on a Vax running 4.3. Sun Apr 30 12:59:46 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * command.c (lookup_cmd): Got correct error message on bad command. * m-sun3.h [ABOUT_TO_RETURN]: Modified to allow any of the return instructions, including trapv and return from interupt. * command.c (lookup_cmd): If a command is found, use it's values for error reporting and determination of needed subcommands. * command.c (lookup_cmd): Use null string for error if cmdtype is null; pass *line to error instead of **. * command.c (lookup_cmd_1): End of command marked by anything but alpha numeric or '-'. Included ctype.h. Fri Apr 28 18:30:49 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * source.c (select_source_symtab): Kept line number from ever being less than 1 in main decode. Wed Apr 26 13:03:20 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * default-dep.c (core_file_command): Fixed typo. * utils.c (fprintf_filtered): Don't use return value from numchars. * main.c, command.c (complete_on_cmdlist): Moved function to command.c. * command.c (lookup_cmd): Modified to use my new routine. Old version is still there, ifdef'd out. * command.c, command.h (lookup_cmd_1): Added a routine to do all of the work of lookup_cmd with no error reporting and full return of information garnered in search. Tue Apr 25 12:37:54 1989 Randall Smith (randy at gluteus.ai.mit.edu) * breakpoint.c (_initialize_breakpoint): Change "delete breakpionts" to be in class alias and not have the abbrev flag set. * main.c (symbol_completion_function): Fix to correctly complete things that correspond to multiword aliases. * main.c (complete_on_cmdlist): Don't complete on something if it isn't a command or prefix (ie. if it's just a help topic). * main.c (symbol_completion_function): Set list index to be 0 if creating a list with just one element. * main.c (complete_on_cmdlist): Don't allow things with abbrev_flag set to be completion values. (symbol_completion_function): Don't accept an exact match if the abbrev flag is set. * dbxread.c (read_type): Fixed typo in comparision to check if type number existed. * dbxread.c (read_type): Made sure to only call dbx_lookup_type on typenums if typenums were not -1. Mon Apr 24 17:52:12 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * symtab.c: Added strings.h as an include file. Fri Apr 21 15:28:38 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * symtab.c (lookup_partial_symtab): Changed to only return a match if the name match is exact (which is what I want in all cases in which this is currently used. Thu Apr 20 11:12:34 1989 Randall Smith (randy at gluteus.ai.mit.edu) * m-isi.h [REGISTER_U_ADDR]: Installed new version from net. * default-dep.c: Deleted inclusion of fcntl.h; apparently not necessary. * Makefile: Added comment about compiling on isi under 4.3. * breakpoint.c (break_command_1): Only give decode_line_1 the default_breakpoint_defaults if there's nothing better (ie. make the default be off of the current_source notes if at all possible). * blockframe.c (get_prev_frame_info): Clean up comments and delete code ifdefed out around FRAMELESS_FUNCTION_INVOCATION test. * remote.c: Added a "?" message to protocol. (remote_open): Used at startup. (putpkt): Read whatever garbage comes over the line until we see a '+' (ie. don't treat garbage as a timeout). * valops.c (call_function): Eliminated no longer appropriate comment. * infrun.c (wait_for_inferior): Changed several convex conditional compilations to be conditional on CANNOT_EXECUTE_STACK. Wed Apr 19 10:18:17 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * printcmd.c (print_frame_args): Added code to attempt to deal with arguments that are bigger than an int. Continuation of Convex/Fortran changes: * printcmd.c (print_scalar_formatted): Added leading zeros to printing of large integers. (address_info, print_frame_args): Added code to deal with LOC_REF_ARG. (print_nameless_args): Allow param file to specify a routine with which to print typeless integers. (printf_command): Deal with long long values well. * stack.c (print_frame_arg_vars): Change to deal with LOC_REF_ARG. * symmisc.c (print_symbol): Change to deal with LOC_REF_ARG. * symseg.h: Added LOC_REF_ARG to enum address_class. * symtab.c (lookup_block_symbol): Changed to deal with LOC_REF_ARG. * valarith.c (value_subscripted_rvalue): Created. (value_subscript): Used above when app. (value_less, value_equal): Change to cast to (char *) before doing comparison, for machines where that casting does something. * valops.c (call_function): Setup to deal with machines where you cannot execute code on the stack segment. * valprint.c (val_print): Make sure that array element size isn't zero before printing. Set address of default array to address of first element. Put in a couple of int cast. Removed some convex specific code. Added check for endianness of machine in case of a packed structure. Added code for printing typeless integers and for LONG LONG's. (set_maximum_command): Change to use parse_and_eval_address to get argument (so can use expressions there). * values.c (value_of_internalvar, set_internalvar_component, set_internalvar, convenience_info): Add in hooks for trapped internal vars. (unpack_long): Deal with LONG_LONG. (value_field): Remove LONGEST cast. (using_struct_return): Fixed typo ENUM ==> UNION. * xgdb.c (_initialize_xgdb): Make sure that specify_exec_file_hook is not called unless we are setting up a windowing environ. Tue Apr 18 13:43:37 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) Various changes involved in 1) getting gdb to work on the convex, and 2) Getting gdb to work with fortran (due to convex!csmith): * convex-dep.c, convex-opcode.h, m-convex.h, convex-pinsn.c: Created (or replaced with new files). * Makefile: Add convex dependent files. Changed default flags to gnu malloc to be CFLAGS. * config.gdb: Added convex to list of machines. * core.c (files_info): Added a FILES_INFO_HOOK to be used if defined. (xfer_core_file): Conditionalized compilation of xfer_core_file on the macro XFER_CORE_FILE. * coffread.c (record_misc_function): Made sure it zerod type field (which is now being used; see next). * dbxread.c: Included some convex dependent include files. (copy_pending, fix_common_blocks): Created. [STAB_REG_REGNUM, BELIEVE_PCC_PROMOTION]: Created default values; may be overridden in m-*.h. Included data structures for keeping track of common blocks. (dbx_alloc_type): Modified; if called with negative 1's will create a type without putting it into the type vector. (read_dbx_symtab, read_addl_syms): Modified calls to record_misc_function to include the new information. (symbol_file_command, psymtab_to_symtab, add_file_command): Modified reading in of string table to adapt to machines which *don't* store the size of the string table in the first four bytes of the string table. (read_dbx_symtab, scan_file_globals, read_ofile_symtab, read_addl_syms): Modified assignment of namestring to accept null index into symtab as ok. (read_addl_syms): Modified readin of a new object file to fiddle with common blocks correctly. (process_one_symbol): Fixed incorrect comment about convex. Get symbols local to a lexical context from correct spot on a per machine basis. Catch a bug in pcc which occaisionally puts an SO where there should be an SOL. Seperate sections for N_BCOMM & N_ECOMM. (define_symbol): Ignore symbols with no ":". Use STAB_REG_TO_REGNUM. Added support for function args calling by reference. (read_type): Only read type number if one is there. Remove old (#if 0'd out) array code. (read_array_type): Added code for dealing with adjustable (by parameter) arrays half-heartedly. (read_enum_type): Allow a ',' to end a list of values. (read_range_type): Added code to check for long long. * expread.y: Modified to use LONGEST instead of long where necessary. Modified to use a default type of int for objects that weren't in text space. * findvar.c (locate_var_value, read_var_value): Modified to deal with args passed by reference. * inflow.c (create_inferior): Used CREATE_INFERIOR_HOOK if it exists. * infrun.c (attach_program): Run terminal inferior when attaching. (wait_for_inferior): Removed several convex dependencies. * main.c (float_handler): Created. Made whatever signal indicates a stop configurable (via macro STOP_SIGNAL). (main): Setup use of above as a signal handler. Added check for "-nw" in args already processed. (command_line_input): SIGTSTP ==>STOP_SIGNAL. * expread.y: Added token BLOCKNAME to remove reduce/reduce conflict. * Makefile: Change message to reflect new grammar. Mon Apr 17 13:24:59 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * printcmd.c (compare_ints): Created. (print_frame_args): Modified to always print arguments in the order in which they were found in the symbol table. Figure out what apots are missing on the fly. * stack.c (up_command): Error if no inferior or core file. * m-i386.h, m-symmetry.h [FRAMELESS_FUNCTION_INVOCATION]: Created; same as m68k. * dbxread.c (define_symbol): Changed "desc==0" test to "processing_gcc_compilation", which is the correct way to do it. Sat Apr 15 17:18:38 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * expread.y: Added precedence rules for arglists, ?:, and sizeof to eliminate some shift-reduce conflicts. * Makefile: Modified "Expect" message to conform to new results. Thu Apr 13 12:29:26 1989 Randall Smith (randy at plantaris.ai.mit.edu) * inflow.c (terminal_init_inferior): Fixed typo in recent diff installation; TIOGETC ==> TIOCGETC. * m-vax.h, m-sun2.h, m-sun3.h, m-sparc.h, m-hp*.h, m-isi.h, m-news.h [FRAMELESS_FUNCTION_INVOCATION]: Created macro with appropriate definition. Wed Apr 12 15:30:29 1989 Randall Smith (randy at plantaris.ai.mit.edu) * blockframe.c (get_prev_frame_info): Added in a macro to specify when a "frame" is called without a frame pointer being setup. * Makefile [clean]: Made sure to delete gnu malloc if it was being used. Mon Apr 10 12:43:49 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * dbxread.c (process_one_symbol): Reset within_function to 0 after last RBRAC of a function. * dbxread.c (read_struct_type): Changed check for filling in of TYPE_MAIN_VARIANT of type. * inflow.c (create_inferior): Conditionalized fork so that it would be used if USG was defined and HAVE_VFORK was not defined. * defs.h: Added comment about enum command_class element class_alias. * dbxread.c (process_one_symbol): Fixed a typo with interesting implications for associative processing in the brain (':' ==> 'c'). * sparc-dep.c (isabranch): Changed name to isannulled, modified to deal with coprocessor branches, and improved comment. (single_step): Changed to trap at npc + 4 instead of pc +8 on annulled branches. Changed name in call to isabranch as above. * m-sun4os4.h (STACK_END_ADDRESS): Changed it to 0xf8000000 under os 4.0. Sat Apr 8 17:04:07 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * dbxread.c (process_one_symbol): In the case N_FUN or N_FNAME the value being refered to is sometimes just a text segment variable. Catch this case. * infrun.c (wait_for_inferior), breakpoint.c (breakpoint_stop_status): Move the selection of the frame to inside breakpoint_stop_status so that the frame only gets selected (and the symbols potentially read in) if the symbols are needed. * symtab.c (find_pc_psymbol): Fixed minor misthough (pc >= fucntion start, not >). * breakpoint.c (_initialize_breakpoint): Change "delete" internal help entry to simply refer to it being a prefix command (since the list of subcommands is right there on a "help delete"). Fri Apr 7 15:22:18 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * blockframe.c (find_pc_partial_function): Created; figures out what function pc is in (name and address) without reading in any new symbols. * symtab.h: Added decl for above. * infrun.c (wait_for_inferior): Used instead of find_pc_function_start. * stack.c (print_frame_info): Used instead of hand coding for same thing. * dbxread.c (psymtab_to_symtab): No longer patch readin pst's out of the partial_symtab_list; need them there for some checks. * blockframe.c (block_for_pc), source.c (select_source_symtab), symtab.c (lookup_symbol, find_pc_symtab, list_symbols): Made extra sure not to call psymtab_to_symtab with ->readin == 1, since these psymtab now stay on the list. * symtab.c (sources_info): Now distinguishes between psymtabs with readin set and those with it not set. * symtab.c (lookup_symtab): Added check through partial symtabs for name with .c appended. * source.c (select_source_symtab): Changed semantics a little so that the argument means something. * source.c (list_command), symtab.c (decode_line_1): Changed call to select_source_symtab to match new conventions. * dbxread.c (add_file_command): This command no longer selects a symbol table to list from. * infrun.c (wait_for_inferior): Only call find_pc_function (to find out if we have debugging symbols for a function and hence if we should step over or into it) if we are doing a "step". Thu Apr 6 12:42:28 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * main.c (command_line_input): Added a local buffer and only copied information into the global main.c buffer when it is appropriate for it to be saved (and repeated). (dont_repeat): Only nail line when we are reading from stdin (otherwise null lines won't repeat and what's in line needs to be saved). (read_command_lines): Fixed typo; you don't what to repeat when reading command lines from the input stream unless it's standard input. John Gilmore's (gnu@toad.com) mods for USG gdb: * inflow.c: Removed inclusion of sys/user.h; no longer necessary. (, terminal_init_inferior, terminal_inferior, terminal_ours_1, term_status_command, _initialize_inflow) Seperated out declaration and usage of terminal mode structures based on the existence of the individual ioctls. * utils.c (request_quit): Restore signal handler under USG. If running under USG initialize sys_siglist at run time (too much variation between systems). Wed Apr 5 13:47:24 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) John Gilmore's (gnu@toad.com) mods for USG gdb: * default-dep.c: Moved include of sys/user.h to after include of a.out.h. (store_inferior_registers): Fixed error message. (core_file_command): Improved error messages from reading in of u area in core file. Changed calculation of offset of registers to account for some machines putting it in as an offset rather than an absolute address. Changed error messages for reading of registers from core file. * coffread.c (read_file_hdr): Added final check for BADMAG macro to use if couldn't recognize magic number. * Makefile: Added explicit directions for alloca addition. Included alloca.c in list of possible library files. Cleaned up possible library usage. Included additional information on gcc and include files. * source.c, remote.c, inflow.c, dbxread.c, core.c, coffread.c: Changed include of sys/fcntl.h to an include of fcntl.h (as per posix; presumably this will break fewer machines. I hopw). * README: Added a pointer to comments at top of Makefile. * Makefile: Added a comment about machines which need fcntl.h in sys. Tue Apr 4 11:29:04 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * valprint.c (set_prettyprint_command, set_unionprint_command, format_info): Created. (_initialize_valprint): Added to lists of commands. * gdb.texinfo [Backtrace]: Added a section describing the format if symbols have not yet been read in. * valprint.c (val_print): Added code to prettyprint structures if "prettyprint" is set and only to print unions below the top level if "unionprint" is set. * infcmd.c (registers_info), valprint.c (value_print, val_print): Added argument to call to val_print indicating deptch of recursion. * symtab.[ch] (find_pc_psymbol): Created; finds static function psymbol with value nearest to but under value passed. * stack.c (print_frame_info): Used above to make sure I have best fit to pc value. * symseg.h (struct partial_symbol): Added value field. * dbxread.c (read_dbx_symtab): Set value field for partial symbols saved (so that we can lookup static symbols). * symtab.[ch] (find_pc_symtab): Changed to external. * stack.c (select_frame): Call above to make sure that symbols for a selected frame is readin. Mon Apr 3 12:48:16 1989 Randall Smith (randy at plantaris.ai.mit.edu) * stack.c (print_frame_info): Modified to only print out full stack frame info on symbols whose tables have been read in. * symtab.c, symtab.h (find_pc_psymtab): Made function external; above needed it. * main.c (,set_verbose_command, initialize_main): Created a variable "info_verbose" which says to talk it up in various and sundry places. Added command to set this variable. * gdb.texinfo (GDB Output): Added documentation on "set verbose" and changed the name of the "Screen Output" section to "GDB Output". * dbxread.c (psymtab_to_symtab): Added information message about symbol readin. Conditionalized on above. * dbxread.c (define_symbol): Made an "i" constant be of class LOC_CONST and an "r" constant be of class LOC_CONST_BYTES. * README: Made a note about modifications which may be necessary to the manual for this version of gdb. * blockframe.c (get_prev_frame_info): Now we get saved address and check for validity before we check for leafism. This means that we will catch the fact that we are in start, but we will miss any fns that start calls without an fp. This should be fine. * m-*.h (FRAME_CHAIN): Modified to return 0 if we are in start. This is usually a test for within the first object file. * m-sparc.h (FRAME_CHAIN): The test here is simply if the fp saved off the the start sp is 0. * blockframe.c (get_prev_frame_info): Removed check to see if we were in start. Screws up sparc. * m-sparc.h (FRAME_FIND_SAVED_REGISTERS): Changed test for dummy frame to not need frame to be innermost. * gdb.texinfo: Added section on frameless invocations of functions and when gdb can and can't deal with this. * stack.c (frame_info): Disallowed call if no inferior or core file; fails gracefully if truely bad stack specfication has been given (ie. parse_frame_specification returns 0). Fri Mar 31 13:59:33 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * infrun.c (normal_stop): Changed references to "unset-env" to "delete env". * infcmd.c (_initialize_infcmd): Change reference to set-args in help run to "set args". * remote.c (getpkt): Allow immediate quit when reading from device; it could be hung. * coffread.c (process_coff_symbol): Modify handling of REG parameter symbols. Thu Mar 30 15:27:23 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * dbxread.c (symbol_file_command): Use malloc to allocate the space for the string table in symbol_file_command (and setup a cleanup for this). This allows a more graceful error failure if there isn't any memory availible (and probably allows more memory to be avail, depending on the machine). Additional mods for handling GNU C++ (from Tiemann): * dbxread.c (read_type): Added case for '#' type (method type, I believe). (read_struct_type): If type code is undefined, make the main variant for the type be itself. Allow recognition of bad format in reading of structure fields. * eval.c (evaluate_subexp): Modify evaluation of a member of a structure and pointer to same to make sure that the syntax is being used correctly and that the member is being accessed correctly. * symseg.h: Added TYPE_CODE_METHOD to enum type_code. Add a pointer to an array of argument types to the type structure. * symtab.c (lookout_method_type, smash_to_method_type): Created. * symtab.h (TYPE_ARG_TYPES): Created. * valops.c (call_function): Modified handling of methods to be the same as handling of functions; no longer check for members. * valprint.c (val_print, type_print_varspec_{prefix,suffix}, type_print_base): Added code to print method args correctly. * values.c (value_virtual_fn_field): Modify access to virtual function table. Wed Mar 29 13:19:34 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * findvar.c: Special cases for REGISTER_WINDOWS: 1) Return 0 if we are the innermost frame, and 2) return the next frame in's value if the SP is being looked for. * blockframe.c (get_next_frame): Created; returns the next (inner) frame of the called frame. * frame.h: Extern delcaration for above. * main.c (command_line_input): Stick null at end before doing history expansion. Tue Mar 28 17:35:50 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * dbxread.c (read_dbx_symtab): Added namestring assignment to N_DATA/BSS/ABS case. Sigh. Sat Mar 25 17:49:07 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * expread.y: Defined YYDEBUG. Fri Mar 24 20:46:55 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * symtab.c (make_symbol_completion_list): Completely rewrote to never call psymtab_to_symtab, to do a correct search (no duplicates) through the visible symbols, and to include structure and union fields in the things that it can match. Thu Mar 23 15:27:44 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * dbxread.c (dbx_create_type): Created; allocates and inits space for a type without putting it on the type vector lists. (dbx_alloc_type): Uses above. * Makefile: xgdb.o now produced by default rules for .o.c. Fri Mar 17 14:27:50 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * infrun.c: Fixed up inclusion of aouthdr.h on UMAX_PTRACE. * Makefile, config.gdb: Added hp300bsd to potential configurations. * hp300bsd-dep.c, m-hp300bsd.h: Created. * infrun.c (wait_for_inferior): Rewrote to do no access to inferior until we make sure it's still there. * inflow.c (inferior_died): Added a select to force the selected frame to null when inferior dies. * dbxread.c (symbol_file_command): free and zero symfile when discarding symbols. * core.c (xfer_core_file): Extended and cleaned up logic in interpeting memory address. * core.c (xfer_core_file): Extended opening comment. Thu Mar 16 15:39:42 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * coffread.c (symbol_file_command): Free symfile name when freeing contents. * blockframe.c (get_prev_frame_info): Added to fatal error message to indicate that it should never happen. * stack.c (frame_info): Printed out value of "saved" sp seperately to call attention to the fact that it isn't stored in memory anywhere; the actual previous frames address is printed. * m-sparc.h (FRAME_FIND_SAVED_REGS): Set address of sp saved in frame to value of fp (rather than value of sp in current frame). * expread.y: Allow "unsigned" as a type itself, as well as a type modifier. * coffread.c: Added declaration for fclose Fri Mar 10 17:22:31 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * main.c (command_line_input): Checked for -1 return from readline; indicates EOF. Fri Mar 3 00:31:27 1989 Randall Smith (randy at gluteus.ai.mit.edu) * remote.c (remote_open): Cast return from signal to (void (*)) to avoid problems on machines where the return type of signal is (int (*)). * Makefile: Removed deletion of version control from it (users will need it for their changes). Thu Mar 2 15:32:21 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * symmetry-dep.c (print_1167_regs): Print out effective doubles on even number regs. (fetch_inferior_registers): Get the floating point regs also. * xgdb.c (do_command): Copied command before calling execute command (so that execute_command wouldn't write into text space). * copying.awk: Created (will produce copying.c as output when given COPYING as input). * Makefile: Used above to create copying.c. * main.c: Took out info_warranty and info_copying. * *.*: Changed copyright notice to use new GNU General Public License (includes necessary changes to manual). * xgdb.c (create_text_widget): Created text_widget before I create the source and sink. (print_prompt): Added fflush (stdout). * Makefile: Added -lXmu to the compilation line for xgdb. Left the old one there incase people still had R2. * README: Added note about -gg format. * remote.c (getpkt): Fixed typo; && ==> &. * Makefile: Added new variable READLINE_FLAGS so that I could force compilation of readline.c and history.c with -DSYSV on system V machines. Mentioned in Makefile comments at top. Wed Mar 1 17:01:01 1989 Randall Smith (randy at gluteus.ai.mit.edu) * hp9k320-dep.c (store_inferior_registers): Fixed typo. Fri Feb 24 14:58:45 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * hp9k320-dep.c (store_inferior_registers, fetch_inferior_registers): Added support for remote debugging. * remote.c (remote_timer): Created. (remote_open, readchar): Setup to timeout reads if they take longer than "timeout". This allows one to debug how long such things take. (putpkt): Modified to print a debugging message (if such things are enabled) each time it resends a packet. (getpkt): Modified to make the variable CSUM unsigned and read it CSUM with an & 0xff (presumably to deal with poor sign extension on some machines). Also made c1 and c2 unsigned. (remote_wait): Changed buffer to unsigned status. (remote_store_registers, remote_write_bytes): Puts a null byte at the end of the control string. * infcmd.c (attach_command, detach_command, _initialize_infcmd): Made attach_command and detach_command always availible, but modified them to only allow device file attaches if ATTACH_DETACH is not defined. * gdb.texinfo: Added cross reference from attach command to remote debugging. Thu Feb 23 12:37:59 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * remote.c (remote_close): Created to close the remote connection and set the remote_debugging flag to 0. * infcmd.c (detach_command): Now calls the above when appropriate. * gdb.texinfo: Removed references to the ``Distribution'' section in the copyright. * main.c, utils.c (ISATTY): Created default defintions of this macro which use isatty and fileno. * utils.c (fprintf_filtered, print_spaces_filtered), main.c (command_loop, command_line_input): Used this macro. * m-news.h: Created a definition to override this one. * utils.c (fprintf_filtered): Made line_size static (clueless). * utils.c (fprintf_filtered): Changed max length of line printed to be 255 chars or twice the format length. * symmetry-dep.c, m-symmetry: Fixed typo (^L ==> ). * printcmd.c (do_examine): Fixed typo (\n ==> \t). Wed Feb 22 16:00:33 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) Contributed by Jay Vosburgh (jay@mentor.cc.purdue.edu) * m-symmetry.h, symmetry-dep.c: Created. * Makefile: Added above in appropriate lists. * config.gdb: Added "symmetry" target. * utils.c (prompt_for_continue): Zero'd chars_printed also. * utils.c (fprintf_filtered): Call prompt for continue instead of doing it yourself. * dbxread.c (read_dbx_symtab): Added code to conditionalize what symbol type holds to "x.o" or "-lx" symbol that indicates the beginning of a new file. Tue Feb 21 16:22:13 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * gdb.texinfo: Deleted @ignore block at end of file. * findvar.c, stack.c: Changed comments that refered to "frame address" to "frame id". * findvar.c (locate_var_value): Modified so that taking the address of an array generates an object whose type is a pointer to the elements of the array. Sat Feb 18 16:35:14 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * gdb.texinfo: Removed reference to "!" as a shell escape character. Added a section on controling screen output (pagination); changing "Input" section to "User Interface" section. Changed many inappropriate subsubsection nodes into subsections nodes (in the readline and history expansion sections). Fri Feb 17 11:10:54 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * utils.c (set_screensize_command): Created. (_initialize_utils): Added above to setlist. * main.c (main): Added check to see if ~/.gdbinit and .gdbinit were the same file; only one gets read if so. Had to include sys/stat.h for this. * valprint.c (type_print_base): Changed calls to print_spaces to print_spaces_filtered. * main.c (command_line_input): Chaned test for command line editing to check for stdin and isatty. * main.c (command_loop): Call reinitialize_more_filter before each command (if reading from stdin and it's a tty). utils.c (initialize_more_filter): Changed name to reinitialize_more_filter; killed arguments. utils.c (_initialize_utils): Created; initialized lines_per_page and chars_per_line here. * utils.c (fprintf_filtered): Removed printing of "\\\n" after printing linesize - 1 chars; assume that the screen display will take care of that. Still watching that overflow. * main.c: Created the global variables linesize and pagesize to describe the number of chars per line and lines per page. Thu Feb 16 17:27:43 1989 Randall Smith (randy at gluteus.ai.mit.edu) * printcmd.c (do_examine, print_scalar_formatted, print_address, whatis_command, do_one_display, ptype_command), valprint.c (value_print, val_print, type_print_method_args, type_print_1, type_print_derivation_info, type_print_varspec_suffix, type_print_base), breakpoint.c (breakpoints_info, breakpoint_1), values.c (history_info), main.c (editing_info, warranty_info, copying_info), infcmd.c (registers_info), inflow.c (term_status_command), infrun.c (signals_info), stack.c (backtrace_command, print_frame_info), symtab.c (list_symbols, output_source_filename), command.c (help_cmd, help_list, help_command_list): Replaced calls to printf, fprintf, and putc with calls to [f]printf_filtered to handle more processing. Killed local more emulations where I noticed them. Wed Feb 15 15:27:36 1989 Randall Smith (randy at gluteus.ai.mit.edu) * defs.h, utils.c (initialize_more_filter, fprintf_filtered, printf_filtered): Created a printf that will also act as a more filter, prompting the user for a <return> whenever the page length is overflowed. * symtab.c (list_symbols): Elminated some code inside of an #if 0. Tue Feb 14 11:11:24 1989 Randall Smith (randy at gluteus.ai.mit.edu) * Makefile: Turned off backup versions for this file; it changes too often. * command.c (lookup_cmd, _initialize_command): Changed '!' so that it was no longer a shell escape. "sh" must be used. * main.c (command_line_input, set_history_expansion, initialize_main): Turned history expansion on, made it the default, and only execute it if the first character in the line is a '!'. * version.c, gdb.texinfo: Moved version to 3.2 (as usual, jumping the gun some time before release). * gdb.texinfo: Added sections (adapted from Brian's notes) on command line editing and history expansion. * main.c (set_command_editing, initialize_main): Modified name to set_editing and modified command to "set editing". * Makefile: Put in dependencies for READLINEOBJS. * main.c (history_info, command_info): Combined into new command info; deleted history_info. (initialize_main): Deleted "info history" command; it was interfering with the value history. * coffread.c (enter_linenos): Modified to do bit copy instead of pointer dereference, since the clipper machine can't handle having longs on short boundaries. (read_file_hdr): Added code to get number of syms for clipper. * stack.c (return_command): Fixed method for checking when all of the necessary frames had been popped. * dbxread.c (read_dbx_symtab (ADD_PSYMBOL_TO_LIST)): Fixed typo in allocation length. Mon Feb 13 10:03:27 1989 Randall Smith (randy at gluteus.ai.mit.edu) * dbxread.c (read_dbx_symtab): Split assignment to namestring into several different assignments (so that it wouldn't be done except when it had to be). Shortened switches and duplicated code to produce the lowest possible execution time. Commented (at top of switch) which code I duplicated. * dbxread.c (read_dbx_symtab): Modified which variables were register and deleted several variables which weren't used. Also eliminated 'F' choice from subswitch, broke out strcmp's, reversed compare on line 1986, and elminated test for !namestring[0]; it is caught by following test for null index of ':'. Sun Feb 12 12:57:56 1989 Randall Smith (randy at plantaris.ai.mit.edu) * main.c (gdb_completer_word_break_characters): Turned \~ into ~. Sat Feb 11 15:39:06 1989 Randall Smith (randy at plantaris.ai.mit.edu) * symtab.c (find_pc_psymtab): Created; checks all psymtab's till it finds pc. (find_pc_symtab): Used; fatal error if psymtab found is readin (should have been caught in symtab loop). (lookup_symbol): Added check before scan through partial symtab list for symbol name to be on the misc function vector (only if in VAR_NAMESPACE). Also made sure that psymtab's weren't fooled with if they had already been read in. (list_symbols): Checked through misc_function_vector for matching names if we were looking for functions. (make_symbol_completion_list): Checked through misc_function_vector for matching names. * dbxread.c (read_dbx_symtab): Don't bother to do processing on global function types; this will be taken care of by the misc_function hack. * symtab.h: Modified comment on misc_function structure. Fri Feb 10 18:09:33 1989 Randall Smith (randy at plantaris.ai.mit.edu) * symseg.h, dbxread.c (read_dbx_symtab, init_psymbol_list, start_psymtab, end_psymtab), coffread.c (_initialize_coff), symtab.c (lookup_partial_symbol, list_symbols, make_symbol_completion_list): Changed separate variables for description of partial symbol allocation into a specific kind of structure. (read_dbx_symtab, process_symbol_for_psymtab): Moved most of process_symbol_for_psymtab up into read_dbx_symtab, moved a couple of symbol types down to the ingore section, streamlined (I hope) code some, modularized access to psymbol lists. Thu Feb 9 13:21:19 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * main.c (command_line_input): Made sure that it could recognize newlines as indications to repeat the last line. * symtab.c (_initialize_symtab): Changed size of builtin_type_void to be 1 for compatibility with gcc. * main.c (initialize_main): Made history_expansion the default when gdb is compiled with HISTORY_EXPANSION. * readline.c, readline.h, history.c, history.h, general.h, emacs_keymap.c, vi_keymap.c, keymaps.c, funmap.c: Made all of these links to /gp/gnu/bash/* to keep them updated. * main.c (initialize_main): Made default be command editing on. Wed Feb 8 13:32:04 1989 & Smith (randy at hobbes) * dbxread.c (read_dbx_symtab): Ignore N_BSLINE on first readthrough. * Makefile: Removed convex-dep.c from list of distribution files. Tue Feb 7 14:06:25 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * main.c: Added command lists sethistlist and unsethistlist to accesible command lists. (parse_binary_operation): Created to parse a on/1/yes vs. off/0/no spec. (set_command_edit, set_history, set_history_expansion, set_history_write, set_history_size, set_history_filename, command_info, history_info): Created to allow users to control various aspects of command line editing. * main.c (symbol_creation_function): Created. (command_line_input, initialize_main): Added rest of stuff necessary for calling bfox' command editing routines under run-time control. * Makefile: Included readline and history source files for command editing; also made arrangements to make sure that the termcap library was available. * symtab.c (make_symbol_completion_list): Created. Mon Feb 6 16:25:25 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * main.c: Invented variables to control command editing. command_editing_p, history_expansion_p, history_size, write_history_p, history_filename. Initialized them to default values in initialize_main. * infcmd.c (registers_info), infrun.c (signals_info), * main.c (gdb_read_line): Changed name to command_line_input. (readline): Changed name to gdb_readline; added second argument indicating that the read value shouldn't be saved (via malloc). * infcmd.c (registers_info), infrun.c (signals_info), main.c (copying_info), symtab.c (output_source_filename, MORE, list_symbols): Converted to use gdb_readline in place of gdb_read_line. Sun Feb 5 17:34:38 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * blockframe.c (get_frame_saved_regs): Removed macro expansion that had accidentally been left in the code. Sat Feb 4 17:54:14 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * main.c (gdb_read_line, readline): Added function readline and converted gdb_read_line to use it. This was a conversion to the line at a time style of input, in preparation for full command editing. Fri Feb 3 12:39:03 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * dbxread.c (read_dbx_symtab): Call end_psymtab at the end of read_dbx_symtab if any psymtab still needs to be completed. * config.gdb, sun3-dep.c: Brought these into accord with the actual sun2 status (no floating point period; sun3-dep.c unless has os > 3.0). * m-sun2os2.h: Deleted; not needed. * config.gdb: Added a couple of aliases for machines in the script. * infrun.c: Added inclusion of aouthdr.h inside of #ifdef UMAX because ptrace needs to know about the a.out header. * Makefile: Made dep.o depend on dep.c and config.status only. * expread.y: Added declarations of all of the new write_exp_elt functions at the include section in the top. * Makefile: Added a YACC definition so that people can use bison if they wish. * Makefile: Added rms' XGDB-README to the distribution. * Makefile: Added removal of init.o on a "make clean". Thu Feb 2 16:27:06 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * *-dep.c: Deleted definition of COFF_FORMAT if AOUTHDR was defined since 1) We *may* (recent mail message) want to define AOUTHDR under a basically BSD system, and 2) AOUTHDR is sometimes a typedef in coff encapsulation setups. Also removed #define's of AOUTHDR if AOUTHDR is already defined (inside of coff format). * core.c, dbxread.c: Removed #define's of AOUTHDR if AOUTHDR is already defined (inside of coff format). Tue Jan 31 12:56:01 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * GDB 3.1 released. * values.c (modify_field): Changed test for endianness to assign to integer and reference character (so that all bits would be defined). Mon Jan 30 11:41:21 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * news-dep.c: Deleted inclusion of fcntl.h; just duplicates stuff found in sys/file.h. * i386-dep.c: Included default definition of N_SET_MAGIC for COFF_FORMAT. * config.gdb: Added checks for several different operating systems. * coffread.c (read_struct_type): Put in a flag variable so that one could tell when you got to the end of a structure. * sun3-dep.c (core_file_command): Changed #ifdef based on SUNOS4 to ifdef based on FPU. * infrun.c (restore_inferior_status): Changed error message to "unable to restore previously selected frame". * dbxread.c (read_dbx_symtab): Used intermediate variable in error message reporting a bad symbol type. (scan_file_globals, read_ofile_symtab, read_addl_syms): Data type of "type" changed to unsigned char (which is what it is). * i386-dep.c: Removed define of COFF_FORMAT if AOUTHDR is defined. Removed define of a_magic to magic (taken care of by N_MAGIC). (core_file_command): Zero'd core_aouthdr instead of setting magic to zero. * i386-pinsn.c: Changed jcxz == jCcxz in jump table. (putop): Added a case for 'C'. (OP_J): Added code to handle possible masking of PC value on certain kinds of data. m-i386gas.h: Moved COFF_ENCAPSULATE to before inclusion of m-i386.h and defined NAMES_HAVE_UNDERSCORE. * coffread.c (unrecrod_misc_function, read_coff_symtab): Added symbol number on which error occured to error output. Fri Jan 27 11:55:04 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * Makefile: Removed init.c in make clean. Removed it without -f and with leading - in make ?gdb. Thu Jan 26 15:08:03 1989 Randall Smith (randy at gluteus.ai.mit.edu) Changes to get it to work on gould NP1. * dbxread.c (read_dbx_symtab): Included cases for N_NBDATA and N_NBBSS. (psymtab_to_symtab): Changed declaration of hdr to DECLARE_FILE_HEADERS. Changed access to use STRING_TABLE_SIZE and SYMBOL_TABLE_SIZE. * gld-pinsn.c (findframe): Added declaration of framechain() as FRAME_ADDR. * coffread.c (read_coff_symtab): Avoided treating typedefs as external symbol definitions. Wed Jan 25 14:45:43 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * Makefile: Removed reference to alloca.c. If they need it, they can pull alloca.o from the gnu-emacs directory. * version.c, gdb.texinfo: Updated version to 3.1 (jumping the gun a bit so that I won't forget when I release). * m-sun2.h, m-sun2os2.h, m-sun3os4.h, config.gdb: Modified code so that default includes new sun core, ptrace, and attach-detach. Added defaults for sun 2 os 2. Modifications to reset stack limit back to what it used to be just before exec. All mods inside of #ifdef SET_STACK_LIMIT_HUGE. * main.c: Added global variable original_stack_limit. (main): Set original_stack_limit to original stack limit. * inflow.c: Added inclusion of necessary files and external reference to original_stack_limit. (create_inferior): Reset stack limit to original_stack_limit. * dbxread.c (read_dbx_symtab): Killed PROFILE_SYMBOLS ifdef. * sparc-dep.c (isabranch): Multiplied offset by 4 before adding it to addr to get target. * Makefile: Added definition of SHELL to Makefile. * m-sun2os4.h: Added code to define NEW_SUN_PTRACE, NEW_SUN_CORE, and ATTACH_DETACH. * sun3-dep.c: Added code to avoid fp regs if we are on a sun2. Tue Jan 24 17:59:14 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * dbxread.c (read_array_type): Added function. (read_type): Added call to above instead of inline code. * Makefile: Added ${GNU_MALLOC} to the list of dependencies for the executables. Mon Jan 23 15:08:51 1989 Randall Smith (randy at plantaris.ai.mit.edu) * gdb.texinfo: Added paragraph to summary describing languages with which gdb can be run. Also added descriptions of the "info-methods" and "add-file" commands. * symseg.h: Commented a range type as having TYPE_TARGET_TYPE pointing at the containing type for the range (often int). * dbxread.c (read_range_type): Added code to do actual range types if they are defined. Assumed that the length of a range type is the length of the target type; this is a lie, but will do until somebody gets back to me as to what these silly dbx symbols mean. * dbxread.c (read_range_type): Added code to be more picky about recognizing builtins as range types, to treat types defined as subranges of themselves to be subranges of int, and to recognize the char type idiom from dbx as a special case. Sun Jan 22 01:00:13 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * m-vax.h: Removed definition of FUNCTION_HAS_FRAME_POINTER. * blockframe.c (get_prev_frame_info): Removed default definition and use of above. Instead conditionalized checking for leaf nodes on FUNCTION_START_OFFSET (see comment in code). Sat Jan 21 16:59:19 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * dbxread.c (read_range_type): Fixed assumption that integer was always type 1. * gdb.texinfo: Fixed spelling mistake and added a note in the running section making it clear that users may invoke subroutines directly from gdb. * blockframe.c: Setup a default definition for the macro FUNCTION_HAS_FRAME_POINTER. (get_prev_frame_info): Used this macro instead of checking SKIP_PROLOGUE directly. * m-vax.h: Overroad definition; all functions on the vax have frame pointers. Fri Jan 20 12:25:35 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * core.c: Added default definition of N_MAGIC for COFF_FORMAT. * xgdb.c: Installed a fix to keep the thing from dying when there isn't any frame selected. * core.c: Made a change for the UMAX system; needs a different file included if using that core format. * Makefile: Deleted duplicate obstack.h in dbxread.c dependency. * munch: Modified (much simpler) to cover (I hope) all cases. * utils.c (save_cleanups, restore_cleanups): Added functions to allow you to push and pop the chain of cleanups to be done. * defs.h: Declared the new functions. * main.c (catch_errors): Made sure that the only cleanups which would be done were the ones put on the chain *after* the current location. * m-*.h (FRAME_CHAIN_VALID): Removed check on pc in the current frame being valid. * blockframe.c (get_prev_frame_info): Made the assumption that if a frame's pc value was within the first object file (presumed to be /lib/crt0.o), that we shouldn't go any higher. * infrun.c (wait_for_inferior): Do *not* execute check for stop pc at step_resume_break if we are proceeding over a breakpoint (ie. if trap_expected != 0). * Makefile: Added -g to LDFLAGS. * m-news.h (POP_FRAME) Fixed typo. * printcmd.c (print_frame_args): Modified to print out register params in order by .stabs entry, not by register number. * sparc-opcode.h: Changed declaration of (struct arith_imm_fmt).simm to be signed (as per architecture manual). * sparc-pinsn.c (fprint_addr1, print_insn): Forced a cast to an int, so that we really would get signed behaivior (default for sun cc is unsigned). * i386-dep.c (i386_get_frame_setup): Replace function with new function provided by pace to fix bug in recognizing prologue. Thu Jan 19 11:01:22 1989 Randall Smith (randy at plantaris.ai.mit.edu) * infcmd.c (run_command): Changed error message to "Program not restarted." * value.h: Changed "frame" field in value structure to be a FRAME_ADDR (actually CORE_ADDR) so that it could survive across calls. * m-sun.h (FRAME_FIND_SAVED_REGS): Fixed a typo. * value.h: Added lval: "lval_reg_frame_relative" to indicate a register that must be interpeted relative to a frame. Added single entry to value structure: "frame", used to indicate which frame a relative regnum is relative to. * findvar.c (value_from_register): Modified to correctly setup these fields when needed. Deleted section to fiddle with last register copied on little endian machine; multi register structures will always occupy an integral number of registers. (find_saved_register): Made extern. * values.c (allocate_value, allocate_repeat_value): Zero frame field on creation. * valops.c (value_assign): Added case for lval_reg_frame_relative; copy value out, modify it, and copy it back. Desclared find_saved_register as being external. * value.h: Removed addition of kludgy structure; thoroughly commented file. * values.c (free_value, free_all_values, clear_value_history, set_internalvar, clear_internavars): Killed free_value. Wed Jan 18 20:09:39 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * value.h: Deleted struct partial_storage; left over from yesterday. * findvar.c (value_from_register): Added code to create a value of type lval_reg_partsaved if a value is in seperate registers and saved in different places. Tue Jan 17 13:50:18 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * value.h: Added lval_reg_partsaved to enum lval_type and commented enum lval_type. Commented value structure. Added "struct partial_register_saved" to value struct; added macros to deal with structure to value.h. * values.c (free_value): Created; special cases lval_reg_partsaved (which has a pointer to an array which also needs to be free). (free_all_values, clear_value_history, set_internalvar, clear_internalvars): Modified to use free_values. * m-sunos4.h: Changed name to sun3os4.h. * m-sun2os4.h, m-sun4os4.h: Created. * config.gdb: Added configuration entries for each of the above. * Makefile: Added into correct lists. * Makefile: Added dependencies on a.out.encap.h. Made a.out.encap.h dependent on a.out.gnu.h and dbxread.c dependent on stab.gnu.h. * infrun.c, remote.c: Removed inclusion of any a.out.h files in these files; they aren't needed. * README: Added comment about bug reporting and comment about xgdb. * Makefile: Added note to HPUX dependent section warning about problems if compiled with gcc and mentioning the need to add -Ihp-include to CFLAGS if you compile on those systems. Added a note about needing the GNU nm with compilers *of gdb* that use the coff encapsulate feature also. * hp-include: Made symbolic link over to /gp/gnu/binutils. * Makefile: Added TSOBS NTSOBS OBSTACK and REGEX to list of things to delete in "make clean". Also changed "squeakyclean" target as "realclean". * findvar.c (value_from_register): Added assignment of VALUE_LVAL to be lval_memory when that is appropriate (original code didn't bother because it assumed that it was working with a pre lval memoried value). * expread.y (yylex): Changed to only return type THIS if the symbol "$this" is defined in some block superior or equal to the current expression context block. Mon Jan 16 13:56:44 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * m-*.h (FRAME_CHAIN_VALID): On machines which check the relation of FRAME_SAVED_PC (thisframe) to first_object_file_end (all except gould), make sure that the pc of the current frame also passes (in case someone stops in _start). * findvar.c (value_of_register): Changed error message in case of no inferior or core file. * infcmd.c (registers_info): Added a check for inferior or core file; error message if not. * main.c (gdb_read_line): Modified to take prompt as argument and output it to stdout. * infcmd.c (registers_info, signals_info), main.c (command_loop, read_command_lines, copying_info), symtab.c (decode_line_2, output_source_filename, MORE, list_symbols): Changed calling convention used to call gdb_read_line. * infcmd.c, infrun.c, main.c, symtab.c: Changed the name of the function "read_line" to "gdb_read_line". * breakpoint.c: Deleted external referenced to function "read_line" (not needed by code). Fri Jan 13 12:22:05 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * i386-dep.c: Include a.out.encap.h if COFF_ENCAPSULATE. (N_SET_MAGIC): Defined if not defined by include file. (core_file_command): Used N_SET_MAGIC instead of assignment to a_magic. (exec_file_command): Stuck in a HEADER_SEEK_FD. * config.gdb: Added i386-dep.c as depfile for i386gas choice. * munch: Added -I. to cc to pick up things included by the param file. * stab.gnu.def: Changed name to stab.def (stab.gnu.h needs this name). * Makefile: Changed name here also. * dbxread.c: Changed name of gnu-stab.h to stab.gnu.h. * gnu-stab.h: Changed name to stab.gnu.h. * stab.gnu.def: Added as link to binutils. * Makefile: Put both in in the distribution. Thu Jan 12 11:33:49 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * dbxread.c: Made which stab.h is included dependent on COFF_ENCAPSULATE; either <stab.h> or "gnu-stab.h". * Makefile: Included gnu-stab.h in the list of files to include in the distribution. * gnu-stab.h: Made a link to /gp/gnu/binutils/stab.h * Makefile: Included a.out.gnu.h and m-i386gas.h in list of distribution files. * m-i386gas.h: Changed to include m-i386.h and fiddle with it instead of being a whole new file. * a.out.gnu.h: Made a link to /gp/gnu/binutils/a.out.gnu.h. Chris Hanson's changes to gdb for hp Unix. * Makefile: Modified comments on hpux. * hp9k320-dep.c: #define'd WOPR & moved inclusion of signal.h * inflow.c: Moved around declaratiosn of <sys/fcntl.h> and <sys/ioctl.h> inside of USG depends and deleted all SYSV ifdef's (use USG instead). * munch: Modified to accept any number of spaces between the T and the symbol name. Pace's changes to gdb to work with COFF_ENCAPSULATE (robotussin): * config.gdb: Added i386gas to targets. * default-dep.c: Include a.out.encap.h if COFF_ENCAPSULATE. (N_SET_MAGIC): Defined if not defined by include file. (core_file_command): Used N_SET_MAGIC instead of assignment to a_magic. (exec_file_command): Stuck in a HEADER_SEEK_FD. * infrun.c, remote.c: Added an include of a.out.encap.h if COFF_ENCAPSULATE defined. This is commented out in these two files, I presume because the definitions aren't used. * m-i386gas.h: Created. * dbxread.c: Included defintions for USG. (READ_FILE_HEADERS): Now uses HEADER_SEEK_FD if it exists. (symbol_file_command): Deleted use of HEADER_SEEK_FD. * core.c: Deleted extra definition of COFF_FORMAT. (N_MAGIC): Defined to be a_magic if not already defined. (validate_files): USed N_MAGIC instead of reading a_magic. Wed Jan 11 12:51:00 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * remote.c: Upped PBUFSIZ. (getpkt): Added zeroing of c inside loop in case of error retry. * dbxread.c (read_dbx_symtab, process_symbol_for_psymtab): Removed code to not put stuff with debugging symbols in the misc function list. Had been ifdef'd out. * gdb.texinfo: Added the fact that the return value for a function is printed if you use return. * infrun.c (wait_for_inferior): Removed test in "Have we hit step_resume_breakpoint" for sp values in proper orientation. Was in there for recursive calls in functions without frame pointers and it was screwing up calls to alloca. * dbxread.c: Added #ifdef COFF_ENCAPSULATE to include a.out.encap.h. (symbol_file_command): Do HEADER_SEEK_FD when defined. * dbxread.c, core.c: Deleted #ifdef ROBOTUSSIN stuff. * robotussin.h: Deleted local copy (was symlink). * a.out.encap.h: Created symlink to /gp/gnu/binutils/a.out.encap.h. * Makefile: Removed robotussin.h and included a.out.encap.h in list of files. * valprint.c (val_print, print_scalar_formatted): Changed default precision of printing float value; now 6 for a float and 16 for a double. * findvar.c (value_from_register): Added code to deal with the case where a value is spread over several registers. Still don't deal with the case when some registers are saved in memory and some aren't. Tue Jan 10 17:04:04 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * xgdb.c (xgdb_create_window): Removed third arg (XtDepth) to frameArgs. * infrun.c (handle_command): Error if signal number is less or equal to 0 or greater or equal to NSIG or a signal number is not provided. * command.c (lookup_cmd): Modified to not convert command section of command line to lower case in place (in case it isn't a subcommand, but an argument to a command). Fri Jan 6 17:57:34 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * dbxread.c: Changed "text area" to "data area" in comments on N_SETV. Wed Jan 4 12:29:54 1989 Randall Smith (randy at gluteus.ai.mit.edu) * dbxread.c: Added definitions of gnu symbol types after inclusion of a.out.h and stab.h. Mon Jan 2 20:38:31 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * eval.c (evaluate_subexp): Binary logical operations needed to know type to determine whether second value should be evaluated. Modified to discover type before binup_user_defined_p branch. Also commented "enum noside". * Makefile: Changed invocations of munch to be "./munch". * gdb.texinfo: Updated to refer to current version of gdb with January 1989 last update. * coffread.c (end_symtab): Zero context stack when finishing lexical contexts. (read_coff_symtab): error if context stack 0 in ".ef" else case. * m-*.h (FRAME_SAVED_PC): Changed name of argument from "frame" to "FRAME" to avoid problems with replacement of "->frame" part of macro. * i386-dep.c (i386_get_frame_setup): Added codestream_get() to move codestream pointer up to the correct location in "subl $X, %esp" case. Sun Jan 1 14:24:35 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * valprint.c (val_print): Rewrote routine to print string pointed to by char pointer; was producing incorrect results when print_max was 0. Fri Dec 30 12:13:35 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu) * dbxread.c (read_dbx_symtab, process_symbol_for_psymtab): Put everything on the misc function list. * Checkpointed distribution. * Makefile: Added expread.tab.c to the list of things slated for distribution. Thu Dec 29 10:06:41 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu) * stack.c (set_backtrace_limit_command, backtrace_limit_info, bactrace_command, _initialize_stack): Removed modifications for limit on backtrace. Piping the backtrace through an interuptable "more" emulation is a better way to do it. Wed Dec 28 11:43:09 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu) * stack.c (set_backtrace_limit_command): Added command to set a limit to the number of frames for a backtrace to print by default. (backtrace_limit_info): To print the current limit. (backtrace_command): To use the limit. (_initialize_stack): To initialize the limit to its default value (30), and add the set and info commands onto the appropriate command lists. * gdb.texinfo: Documented changes to "backtrace" and "commands" commands. * stack.c (backtrace_command): Altered so that a negative argument would show the last few frames on the stack instead of the first few. (_initialize_stack): Modified help documentation. * breakpoint.c (commands_command): Altered so that "commands" with no argument would refer to the last breakpoint set. (_initialize_breakpoint): Modified help documentation. * infrun.c (wait_for_inferior): Removed ifdef on Sun4; now you can single step through compiler generated sub calls and will die if you next off of the end of a function. * sparc-dep.c (single_step): Fixed typo; "break_insn" ==> "sizeof break_insn". * m-sparc.h (INIT_EXTRA_FRAME_INFO): Set the bottom of a stack frame to be the bottom of the stack frame inner from this, if that inner one is a leaf node. * dbxread.c (read_dbx_symtab): Check to make sure we don't add a psymtab to it's own dependency list. * dbxread.c (read_dbx_symtab): Modified check for duplicate dependencies to catch them correctly. Tue Dec 27 17:02:09 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu) * m-*.h (FRAME_SAVED_PC): Modified macro to take frame info pointer as argument. * stack.c (frame_info), blockframe.c (get_prev_frame_info), gld-pinsn.c (findframe), m-*.h (SAVED_PC_AFTER_CALL, FRAME_CHAIN_VALID, FRAME_NUM_ARGS): Changed usage of macros to conform to above. * m-sparc.h (FRAME_SAVED_PC), sparc-dep.c (frame_saved_pc): Changed frame_saved_pc to have a frame info pointer as an argument. * m-vax.h, m-umax.h, m-npl.h, infrun.c (wait_for_inferior), blockframe.c (get_prev_frame_info): Modified SAVED_PC_AFTER_CALL to take a frame info pointer as an argument. * blockframe.c (get_prev_frame_info): Altered the use of the macros FRAME_CHAIN, FRAME_CHAIN_VALID, and FRAME_CHAIN_COMBINE to use frame info pointers as arguments instead of frame addresses. * m-vax.h, m-umax.h, m-sun3.h, m-sun3.h, m-sparc.h, m-pn.h, m-npl.h, m-news.h, m-merlin.h, m-isi.h, m-hp9k320.h, m-i386.h: Modified definitions of the above macros to suit. * m-pn.h, m-npl.h, gould-dep.c (findframe): Modified findframe to use a frame info argument; also fixed internals (wouldn't work before). * m-sparc.h: Cosmetic changes; reordered some macros and made sure that nothing went over 80 lines. Thu Dec 22 11:49:15 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu) * Version 3.0 released. * README: Deleted note about changing -lobstack to obstack.o. Wed Dec 21 11:12:47 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu) * m-vax.h (SKIP_PROLOGUE): Now recognizes gcc prologue also. * blockframe.c (get_prev_frame_info): Added FUNCTION_START_OFFSET to result of get_pc_function_start. * infrun.c (wait_for_inferior): Same. * gdb.texinfo: Documented new "step" and "next" behavior in functions without line number information. Tue Dec 20 18:00:45 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu) * infcmd.c (step_1): Changed behavior of "step" or "next" in a function witout line number information. It now sets the step range around the function (to single step out of it) using the misc function vector, warns the user, and continues. * symtab.c (find_pc_line): Zero "end" subsection of returned symtab_and_line if no symtab found. Mon Dec 19 17:44:35 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu) * i386-pinsn.c (OP_REG): Added code from pace to streamline disassembly and corrected types. * i386-dep.c (i386_follow_jump): Code added to follow byte and word offset branches. (i386_get_frame_setup): Expanded to deal with more wide ranging function prologue. (i386_frame_find_saved_regs, i386_skip_prologue): Changed to use i386_get_frame_setup. Sun Dec 18 11:15:03 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu) * m-sparc.h: Deleted definition of SUN4_COMPILER_BUG; was designed to avoid something that I consider a bug in our code, not theirs, and which I fixed earlier. Also deleted definition of CANNOT_USE_ARBITRARY_FRAME; no longer used anywhere. FRAME_SPECIFICATION_DYADIC used instead. * infrun.c (wait_for_inferior): On the sun 4, if a function doesn't have a prologue, a next over it single steps into it. This gets around the problem of a "call .stret4" at the end of functions returning structures. * m-sparc.h: Defined SUN4_COMPILER_FEATURE. * main.c (copying_info): Seperated the last printf into two printfs. The 386 compiler will now handle it. * i386-pinsn.c, i386-dep.c: Moved print_387_control_word, print_387_status_word, print_387_status, and i386_float_info to dep.c Also included reg.h in dep.c. Sat Dec 17 15:31:38 1988 Randall Smith (randy at gluteus.ai.mit.edu) * main.c (source_command): Don't close instream if it's null (indicating execution of a user-defined command). (execute_command): Set instream to null before executing commands and setup clean stuff to put it back on error. * inflow.c (terminal_inferior): Went back to not checking the ioctl returns; there are some systems when this will simply fail. It seems that, on most of these systems, nothing bad will happen by that failure. * values.c (value_static_field): Fixed dereferencing of null pointer. * i386-dep.c (i386_follow_jump): Modified to deal with unconditional byte offsets also. * dbxread.c (read_type): Fixed typo in function type case of switch. * infcmd.c (run_command): Does not prompt to restart if command is not from a tty. Fri Dec 16 15:21:58 1988 Randy Smith (randy at calvin) * gdb.texinfo: Added a third option under the "Cannot Insert Breakpoints" workarounds. * printcmd.c (display_command): Don't do the display unless there is an active inferior; only set it. * findvar.c (value_of_register): Added an error check for calling this when the inferior isn't active and a core file isn't being read. * config.gdb: Added reminder about modifying REGEX in the makefile for the 386. * i386-pinsn.c, i386-dep.c: Moved m-i386.h helper functions over to i386-dep.c.b Thu Dec 15 14:04:25 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu) * README: Added a couple of notes about compiling gdb with itself. * breakpoint.c (set_momentary_breakpoint): Only takes FRAME_FP of frame if frame is non-zero. * printcmd.c (print_scalar_formatted): Implemented /g size for hexadecimal format on machines without an 8 byte integer type. It seems to be non-trivial to implement /g for other formats. (decode_format): Allowed hexadecimal format to make it through /g fileter. Wed Dec 14 13:27:04 1988 Randall Smith (randy at gluteus.ai.mit.edu) * expread.y: Converted all calls to write_exp_elt from the parser to calls to one of write_exp_elt_{opcode, sym, longcst, dblcst, char, type, intern}. Created all of these routines. This gets around possible problems in passing one of these things in one ear and getting something different out the other. Eliminated SUN4_COMPILER_BUG ifdef's; they are now superfluous. * symmisc.c (free_all_psymtabs): Reinited partial_symtab_list to 0. (_initialize_symmisc): Initialized both symtab_list and partial_symtab_list. * dbxread.c (start_psymtab): Didn't allocate anything on dependency list. (end_psymtab): Allocate dependency list on psymbol obstack from local list. (add_psymtab_dependency): Deleted. (read_dbx_symtab): Put dependency on local list if it isn't on it already. * symtab.c: Added definition of psymbol_obstack. * symtab.h: Added declaration of psymbol_obstack. * symmisc.c (free_all_psymtabs): Added freeing and reinitionaliztion of psymbol_obstack. * dbxread.c (free_all_psymbols): Deleted. (start_psymtab, end_psymtab, process_symbol_for_psymtab): Changed most allocation of partial symbol stuff to be off of psymbol_obstack. * symmisc.c (free_psymtab, free_all_psymtabs): Deleted free_psymtab subroutine. * symtab.h: Removed num_includes and includes from partial_symtab structure; no longer needed now that all include files have their own psymtab. * dbxread.c (start_psymtab): Eliminated initialization of above. (end_psymtab): Eliminated finalization of above; get includes from seperate list. (read_dbx_symtab): Moved includes from psymtab list to their own list; included in call to end_psymtab. * symmisc.c (free_psymtab): Don't free includes. Tue Dec 13 14:48:14 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu) * i386-pinsn.c: Reformatted entire file to correspond to gnu software indentation conventions. * sparc-dep.c (skip_prologue): Added capability of recognizign stores of input register parameters into stack slots. * sparc-dep.c: Added an include of sparc-opcode.h. * sparc-pinsn.c, sparc-opcode.h: Moved insn_fmt structures and unions from pinsn.c to opcode.h. * sparc-pinsn.c, sparc-dep.c (isabranch, skip_prologue): Moved this function from pinsn.c to dep.c. * Makefile: Put in warnings about compiling with gcc (non-ansi include files) and compiling with shared libs on Sunos 4.0 (can't debug something that's been compiled that way). * sparc-pinsn.c: Put in a completely new file (provided by Tiemann) to handle floating point disassembly, load and store instructions, and etc. better. Made the modifications this file (ChangeLog) list for sparc-pinsn.c again. * symtab.c (output_source_filename): Included "more" emulation hack. * symtab.c (output_source_filename): Initialized COLUMN to 0. (sources_info): Modified to not print out a line for all of the include files within a partial symtab (since they have pst's of their own now). Also modified to make a distinction between those pst's read in and those not. * infrun.c: Included void declaration of single_step() if it's going to be used. * sparc-dep.c (single_step): Moved function previous to use of it. * Makefile: Took removal of expread.tab.c out of make clean entry and put it into a new "squeakyclean" entry. Mon Dec 12 13:21:02 1988 Randall Smith (randy at gluteus.ai.mit.edu) * sparc-pinsn.c (skip_prologue): Changed a struct insn_fmt to a union insn_fmt. * inflow.c (terminal_inferior): Checked *all* return codes from ioctl's and fcntl's in routine. * inflow.c (terminal_inferior): Added check for sucess of TIOCSPGRP ioctl call. Just notifies if bad. * dbxread.c (symbol_file_command): Close was getting called twice; once directly and once through cleanup. Killed the direct call. Sun Dec 11 19:40:40 1988 & Smith (randy at hobbes.ai.mit.edu) * valprint.c (val_print): Deleted spurious printing of "=" from TYPE_CODE_REF case. Sat Dec 10 16:41:07 1988 Randall Smith (randy at gluteus.ai.mit.edu) * dbxread.c: Changed allocation of psymbols from using malloc and realloc to using obstacks. This means they aren't realloc'd out from under the pointers to them. Fri Dec 9 10:33:24 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu) * sparc-dep.c inflow.c core.c expread.y command.c infrun.c infcmd.c dbxread.c symmisc.c symtab.c printcmd.c valprint.c values.c source.c stack.c findvar.c breakpoint.c blockframe.c main.c: Various cleanups inspired by "gcc -Wall" (without checking for implicit declarations). * Makefile: Cleaned up some more. * valops.c, m-*.h (FIX_CALL_DUMMY): Modified to take 5 arguments as per what sparc needs (programming for a superset of needed args). * dbxread.c (process_symbol_for_psymtab): Modified to be slightly more picky about what it puts on the list of things *not* to be put on the misc function list. When/if I shift everything over to being placed on the misc_function_list, this will go away. * inferior.h, infrun.c: Added fields to save in inferior_status structure. * maketarfile: Deleted; functionality is in Makefile now. * infrun.c (wait_for_inferior): Modified algorithm for determining whether or not a single-step was through a subroutine call. See comments at top of file. * dbxread.c (read_dbx_symtab): Made sure that the IGNORE_SYMBOL macro would be checked during initial readin. * dbxread.c (read_ofile_symtab): Added macro GCC_COMPILED_FLAG_SYMBOL into dbxread.c to indicate what string in a local text symbol will indicate a file compiled with gcc. Defaults to "gcc_compiled.". Thu Dec 8 11:46:22 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu) * m-sparc.h (FRAME_FIND_SAVED_REGS): Cleaned up a little to take advantage of the new frame cache system. * inferior.h, infrun.c, valops.c, valops.c, infcmd.c: Changed mechanism to save inferior status over calls to inferior (eg. call_function); implemented save_inferior_info and restore_inferior_info. * blockframe.c (get_prev_frame): Simplified this by a direct call to get_prev_frame_info. * frame.h, stack.c, printcmd.c, m-sparc.h, sparc-dep.c: Removed all uses of frame_id_from_addr. There are short routines like it still in frame_saved_pc (m-sparc.h) and parse_frame_spec (stack.c). Eventually the one in frame_saved_pc will go away. * infcmd.c, sparc-dep.c: Implemented a new mechanism for re-selecting the selected frame on return from a call. * blockframe.c, stack.c, findvar.c, printcmd.c, m-*.h: Changed all routines and macros that took a "struct frame_info" as an argument to take a "struct frame_info *". Routines: findarg, framechain, print_frame_args, FRAME_ARGS_ADDRESS, FRAME_STRUCT_ARGS_ADDRESS, FRAME_LOCALS_ADDRESS, FRAME_NUM_ARGS, FRAME_FIND_SAVED_REGS. * frame.h, stack.c, printcmd.c, infcmd.c, findvar.c, breakpoint.c, blockframe.c, xgdb.c, i386-pinsn.c, gld-pinsn.c, m-umax.h, m-sun2.h, m-sun3.h, m-sparc.h, m-pn.h, m-npl.h, m-news.h, m-merlin.h, m-isi.h, m-i386.h, m-hp9k320.h: Changed routines to use "struct frame_info *" internally. Wed Dec 7 12:07:54 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu) * frame.h, blockframe.c, m-sparc.h, sparc-dep.c: Changed all calls to get_[prev_]frame_cache_item to get_[prev_]frame_info. * blockframe.c: Elminated get_frame_cache_item and get_prev_frame_cache_item; functionality now taken care of by get_frame_info and get_prev_frame_info. * blockframe.c: Put allocation on an obstack and eliminated fancy reallocation routines, several variables, and various nasty things. * frame.h, stack.c, infrun.c, blockframe.c, sparc-dep.c: Changed type FRAME to be a typedef to "struct frame_info *". Had to also change routines that returned frame id's to return the pointer instead of the cache index. * infcmd.c (finish_command): Used proper method of getting from function symbol to start of function. Was treating a symbol as a value. * blockframe.c, breakpoint.c, findvar.c, infcmd.c, stack.c, xgdb.c, i386-pinsn.c, frame.h, m-hp9k320.h, m-i386.h, m-isi.h, m-merlin.h, m-news.h, m-npl.h, m-pn.h, m-sparc.h, m-sun2.h, m-sun3.h, m-umax.h: Changed get_frame_info and get_prev_frame_info to return pointers instead of structures. * blockframe.c (get_pc_function_start): Modified to go to misc function table instead of bombing if pc was in a block without a containing function. * coffread.c: Dup'd descriptor passed to read_coff_symtab and fdopen'd it so that there wouldn't be multiple closes on the same fd. Also put (fclose, stream) on the cleanup list. * printcmd.c, stack.c: Changed print_frame_args to take a frame_info struct as argument instead of the address of the args to the frame. * m-i386.h (STORE_STRUCT_RETURN): Decremented sp by sizeof object to store (an address) rather than 1. * dbxread.c (read_dbx_symtab): Set first_object_file_end in read_dbx_symtab (oops). * coffread.c (fill_in_vptr_fieldno): Rewrote TYPE_BASECLASS as necessary. Tue Dec 6 13:03:43 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu) * coffread.c: Added fake support for partial_symtabs to allow compilation and execution without there use. * inflow.c: Added a couple of minor USG mods. * munch: Put in appropriate conditionals so that it would work on USG systems. * Makefile: Made regex.* handled same as obstack.*; made sure tar file included everything I wanted it to include (including malloc.c). * dbxread.c (end_psymtab): Create an entry in the partial_symtab_list for each subfile of the .o file just read in. This allows a "list expread.y:10" to work when we haven't read in expread.o's symbol stuff yet. * symtab.h, dbxread.c (psymtab_to_symtab): Recognize pst->ldsymlen == 0 as indicating a dummy psymtab, only in existence to cause the dependency list to be read in. * dbxread.c (sort_symtab_syms): Elminated reversal of symbols to make sure that register debug symbol decls always come before parameter symbols. After mod below, this is not needed. * symtab.c (lookup_block_symbol): Take parameter type symbols (LOC_ARG or LOC_REGPARM) after any other symbols which match. * dbxread.c (read_type): When defining a type in terms of some other type and the other type is supposed to have a pointer back to this specific kind of type (pointer, reference, or function), check to see if *that* type has been created yet. If it has, use it and fill in the appropriate slot with a pointer to it. Mon Dec 5 11:25:04 1988 Randall Smith (randy at apple-gunkies.ai.mit.edu) * symmisc.c: Eliminated existence of free_inclink_symtabs and init_free_inclink_symtabs; they aren't called from anywhere, and if they were they could disrupt gdb's data structure badly (elimination of struct type's which values that stick around past elimination of inclink symtabs). * dbxread.c (symbol_file_command): Fixed a return pathway out of the routine to do_cleanups before it left. * infcmd.c (set_environment_command), gdb.texinfo: Added capability to set environmental variable values to null. * gdb.texinfo: Modified doc on "break" without args slightly. Sun Dec 4 17:03:16 1988 Randall Smith (randy at gluteus.ai.mit.edu) * dbxread.c (symbol_file_command): Added check; if there weren't any debugging symbols in the file just read, the user is warned. * infcmd.c: Commented set_environment_command (a little). * createtags: Cleaned up and commented. * Makefile: Updated depen_memory and write_inferior_memory in that errno is checked after each ptrace and returned to the caller. Used in value_at to detect references to addresses which are out of bounds. Also core.c (xfer_core_file): return 1 if invalid address, 0 otherwise. * inflow.c, <machine>-infdep.c: removed all calls to ptrace from inflo, m-sun3.h: Cleaned up dealings with functions returning structu0 19:19:36 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu) * symmisc.c: (read_symsegs) Accept only format number 2. Since the size of the type structure changed when C++ support was added, format 1 can no longer be used. * core.c, m-sunos4.h: (core_file_command) support for SunOS 4.0. Slight change in the core structure. #ifdef SUNOS4. New file m-sunos4.h. May want to change config.gdb also. Fri Jul 8 19:59:49 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu) * breakpoint.c: (break_command_1) Allow `break if condition' rather than parsing `if' as a function name and returning an error. Thu Jul 7 22:22:47 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu) * C++: valops.c, valprint.c, value.h, values.c: merged code to deal with C++ expressions. Wed Jul 6 03:28:18 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu) * C++: dbxread.c: (read_dbx_symtab, condense_misc_bunches, add_file_command) Merged code to read symbol information from an incrementally linked file. symmisc.c: (init_free_inclink_symtabs, free_inclink_symtabs) Cleanup routines. Tue Jul 5 02:50:41 1988 Peter TerMaat (pete at corn-chex.ai.mit.edu) * C++: symtab.c, breakpoint.c, source.c: Merged code to deal with ambiguous line specifications. In C++ one can have overloaded function names, so that `list classname::overloadedfuncname' refers to several different lines, possibly sure currently configured machine dependent files come first in e at corn-chex.ai.mit.edu) * C++: symtab.c: replaced lookup_symtab_1 and lookup_symtab_2 with a modified lookup_symbol which checks for fields of the current implied argument `this'. printcmd.c, source.c, symtab.c, valops.c: Need to change callers once callers are installed. Wed Jun 29 01:26:56 1988 Peter TerMaat (pete at frosted-flakes.ai.mit.edu) * C++: eval.c, expprint.c, expread.y, expression.h, valarith.c, Merged code to deal with evaluation of user-defined operators, member functions, and virtual functions. binop_must_be_user_defined tests for user-defined binops, value_x_binop calls the appropriate operator function. Tue Jun 28 02:56:42 1988 Peter TerMaat (pete at frosted-flakes.ai.mit.edu) * C++: Makefile: changed the echo: expect 101 shift/reduce conflicts and 1 reduce/reduce conflict. Local Variables: mode: indented-text eval: (auto-fill-mode 1) left-margin: 8 fill-column: 74 version-control: never End: