about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-01-24 23:56:10 +0000
committerUlrich Drepper <drepper@redhat.com>1999-01-24 23:56:10 +0000
commitb710a6e220839b768df24ffa59ff0a7f3e1ca943 (patch)
treed218ff26e1d84bb3d8b33217e09e0a6189a46d13
parent8f0302ee6720d9cc86186fa29e939c6e0dfde775 (diff)
downloadglibc-b710a6e220839b768df24ffa59ff0a7f3e1ca943.tar.gz
glibc-b710a6e220839b768df24ffa59ff0a7f3e1ca943.tar.xz
glibc-b710a6e220839b768df24ffa59ff0a7f3e1ca943.zip
Regenerated: /usr/bin/perl scripts/gen-FAQ.pl FAQ.in
-rw-r--r--FAQ50
-rw-r--r--manual/texinfo.tex332
2 files changed, 230 insertions, 152 deletions
diff --git a/FAQ b/FAQ
index 2e55c71ae0..0437aa6700 100644
--- a/FAQ
+++ b/FAQ
@@ -97,6 +97,8 @@ please let me know.
 2.25.	I need lots of open files.  What do I have to do?
 2.26.	How do I get the same behavior on parsing /etc/passwd and
 	/etc/group as I have with libc5 ?
+2.27.	What needs to be recompiled when upgrading from glibc 2.0 to glibc
+	2.1?
 
 3. Source and binary incompatibilities, and what to do about them
 
@@ -318,14 +320,14 @@ new kernel features when using old kernel headers for compiling the GNU C
 library.
 
 {ZW} Even if you are using a 2.0 kernel on your machine, we recommend you
-compile GNU libc with 2.1 kernel headers.  That way you won't have to
-recompile libc if you ever upgrade to kernel 2.1 or 2.2.  To tell libc which
+compile GNU libc with 2.2 kernel headers.  That way you won't have to
+recompile libc if you ever upgrade to kernel 2.2.  To tell libc which
 headers to use, give configure the --with-headers switch
-(e.g. --with-headers=/usr/src/linux-2.1.107/include).
+(e.g. --with-headers=/usr/src/linux-2.2.0/include).
 
-Note that you must configure the 2.1 kernel if you do this, otherwise libc
+Note that you must configure the 2.2 kernel if you do this, otherwise libc
 will be unable to find <linux/version.h>.  Just change the current directory
-to the root of the 2.1 tree and do `make include/linux/version.h'.
+to the root of the 2.2 tree and do `make include/linux/version.h'.
 
 
 1.9.	The compiler hangs while building iconvdata modules.  What's
@@ -462,8 +464,8 @@ There are some failures which are not directly related to the GNU libc:
   checks have been used so that you can't build with it.
 - The kernel might have bugs.  For example on Linux/Alpha 2.0.34 the
   floating point handling has quite a number of bugs and therefore most of
-  the test cases in the math subdirectory will fail.  The current Linux 2.1
-  development kernels have fixes for the floating point support on Alpha.
+  the test cases in the math subdirectory will fail.  Linux 2.2 has
+  fixes for the floating point support on Alpha.
 
 
 1.17.	What is symbol versioning good for?  Do I need it?
@@ -961,7 +963,7 @@ really screwed up.
 in the kernel and work-arounds are not suitable.  Besides, some parts of the
 kernel are too buggy when it comes to using threads.
 
-If you need nscd, you have to use a 2.1 kernel.
+If you need nscd, you have to use at least a 2.1 kernel.
 
 Note that I have at this point no information about any other platform.
 
@@ -1012,6 +1014,35 @@ passwd_compat: nis
 group_compat: nis
 shadow_compat: nis
 
+
+2.27.	What needs to be recompiled when upgrading from glibc 2.0 to glibc
+	2.1?
+
+{AJ,CG} If you just upgrade the glibc from 2.0.x (x <= 7) to 2.1, binaries
+that have been linked against glibc 2.0 will continue to work.
+
+If you compile your own binaries against glibc 2.1, you also need to
+recompile some other libraries.  The problem is that libio had to be
+changed and therefore libraries that are based or depend on the libio
+of glibc, e.g. ncurses or slang, need to be recompiled.  If you
+experience strange segmentation faults in your programs linked against
+glibc 2.1, you might need to recompile your libraries.
+
+Another problem is that older binaries that were linked statically against
+glibc 2.0 will reference the older nss modules (libnss_files.so.1 instead of
+libnss_files.so.2), so don't remove them.  Also, the old glibc-2.0 compiled
+static libraries (libfoo.a) which happen to depend on the older libio
+behavior will be broken by the glibc 2.1 upgrade.  We plan to produce a
+compatibility library that people will be able to link in if they want
+to compile a static library generated against glibc 2.0 into a program
+on a glibc 2.1 system.  You just add -lcompat and you should be fine.
+
+The glibc-compat add-on will provide the libcompat.a library, the older
+nss modules, and a few other files.  Together, they should make it
+possible to do development with old static libraries on a glibc 2.1
+system.  This add-on is still in development.  You can get it from <URL>
+but please keep in mind that it is experimental.
+
 
 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
 
@@ -1350,7 +1381,7 @@ define it this way and therefore programs must be adopted.
 3.16.	Why has <netinet/ip_fw.h> disappeared?
 
 {AJ} The corresponding Linux kernel data structures and constants are
-totally different in Linux 2.0 and Linux 2.1.  This situation has to be
+totally different in Linux 2.0 and Linux 2.2.  This situation has to be
 taken care in user programs using the firewall structures and therefore
 those programs (ipfw is AFAIK the only one) should deal with this problem
 themselves.
@@ -1480,6 +1511,7 @@ Answers were given by:
 {TK} Thorsten Kukuk, <kukuk@vt.uni-paderborn.de>
 {GK} Geoffrey Keating, <geoffk@ozemail.com.au>
 {HJ} H.J. Lu, <hjl@gnu.org>
+{CG} Cristian Gafton, <gafton@redhat.com>
 
 Local Variables:
  mode:outline
diff --git a/manual/texinfo.tex b/manual/texinfo.tex
index af676a80ff..2ff84c5d70 100644
--- a/manual/texinfo.tex
+++ b/manual/texinfo.tex
@@ -3,9 +3,9 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{1998-12-15}%
+\def\texinfoversion{1999-01-24}%
 %
-% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98
+% 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
@@ -37,11 +37,11 @@
 %   (and all CTAN mirrors, finger ctan@ctan.org for a list).
 % The texinfo.tex in the texinfo distribution itself 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.
-% 
+%
 % 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:
@@ -92,19 +92,45 @@
 \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\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\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\putwordMMai\undefined \gdef\putwordMMai{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\putwordDefivar\undefined	\gdef\putwordDefivar{Instance Variable}\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.
 %
@@ -143,7 +169,7 @@
 
 % For @cropmarks command.
 % Do @cropmarks to get crop marks.
-% 
+%
 \newif\ifcropmarks
 \let\cropmarks = \cropmarkstrue
 %
@@ -618,7 +644,7 @@ where each line of input produces a line of output.}
 }
 
 % @enddots{} is an end-of-sentence ellipsis.
-% 
+%
 \def\enddots{%
   \leavevmode
   \hbox to 2em{%
@@ -844,7 +870,7 @@ where each line of input produces a line of output.}
   % 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{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.}
@@ -980,7 +1006,7 @@ where each line of input produces a line of output.}
 % 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'']}%
@@ -1088,7 +1114,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 +1133,7 @@ where each line of input produces a line of output.}
 }
 
 % Called from \setfilename.
-% 
+%
 \def\openindices{%
   \newindex{cp}%
   \newcodeindex{fn}%
@@ -1482,7 +1508,7 @@ where each line of input produces a line of output.}
 % @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}%
@@ -1540,7 +1566,7 @@ where each line of input produces a line of output.}
 
 % Do an implicit @contents or @shortcontents after @end titlepage if the
 % user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
-% 
+%
 \newif\ifsetcontentsaftertitlepage
  \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
 \newif\ifsetshortcontentsaftertitlepage
@@ -1749,22 +1775,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 +1863,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,38 +2160,51 @@ 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
@@ -2177,7 +2212,7 @@ July\or August\or September\or October\or November\or December\fi
                            % maintained, even if it is never used.
 
 % @multitable ... @end multitable definitions:
-
+%
 \def\multitable{\parsearg\dotable}
 \def\dotable#1{\bgroup
   \vskip\parskip
@@ -2216,15 +2251,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
@@ -2388,9 +2423,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.
-% need these in case \tex is in effect and \{ is a \delimiter again.
-\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 }%
@@ -2525,14 +2562,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
@@ -2586,12 +2623,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
@@ -2600,7 +2637,7 @@ width0pt\relax} \fi
           %
           \temp % do the write
           %
-          % 
+          %
           \ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi
         \fi
       }%
@@ -2664,7 +2701,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
@@ -2672,7 +2709,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
@@ -2697,7 +2734,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
   %
@@ -2705,7 +2742,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}%
@@ -2804,24 +2841,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}%
@@ -2855,7 +2894,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
@@ -2873,7 +2912,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
@@ -2882,7 +2920,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
     %
@@ -2894,14 +2932,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.
@@ -3419,10 +3458,10 @@ width0pt\relax} \fi
 % 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
@@ -3438,7 +3477,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
@@ -3466,13 +3505,14 @@ 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
    \endgroup
    \lastnegativepageno = \pageno
    \pageno = \savepageno
@@ -3480,7 +3520,7 @@ width0pt\relax} \fi
 
 % And just the chapters.
 \def\summarycontents{%
-   \startcontents{\putwordShortContents}%
+   \startcontents{\putwordShortTOC}%
       %
       \let\chapentry = \shortchapentry
       \let\unnumbchapentry = \shortunnumberedentry
@@ -3502,6 +3542,7 @@ width0pt\relax} \fi
         \input \jobname.toc
       \fi
      \vfill \eject
+     \contentsalignmacro % in case @setchapternewpage odd is in effect
    \endgroup
    \lastnegativepageno = \pageno
    \pageno = \savepageno
@@ -3826,7 +3867,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
@@ -3851,7 +3892,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.
 %
@@ -3907,7 +3948,7 @@ width0pt\relax} \fi
 \def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format}
 
 % @flushright.
-% 
+%
 \def\flushright{\begingroup
   \let\nonarrowing = t
   \nonfillstart
@@ -4049,7 +4090,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
@@ -4067,7 +4108,7 @@ width0pt\relax} \fi
 % #3 is the control sequence to call to resume processing.
 % #4, delimited by the space, is the class name.
 % #5 is the method's return type.
-% 
+%
 \def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV %
 \medbreak %
 % Define the end token that this defining construct specifies
@@ -4227,7 +4268,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
 }
@@ -4241,7 +4282,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
 }
@@ -4272,7 +4313,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
 }
@@ -4282,7 +4323,7 @@ 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
 }
@@ -4307,7 +4348,7 @@ width0pt\relax} \fi
 
 \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 %
 }
 
@@ -4345,7 +4386,7 @@ width0pt\relax} \fi
 
 \def\defcvarheader #1#2#3{%
 \dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
-\begingroup\defname {#2}{\defcvtype{} of #1}%
+\begingroup\defname {#2}{\defcvtype{}\putwordOf\ #1}%
 \defvarargs {#3}\endgroup %
 }
 
@@ -4355,7 +4396,7 @@ width0pt\relax} \fi
 
 \def\defivarheader #1#2#3{%
 \dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
-\begingroup\defname {#2}{Instance Variable of #1}%
+\begingroup\defname {#2}{\putwordDefivar\putwordOf\ #1}%
 \defvarargs {#3}\endgroup %
 }
 
@@ -4388,7 +4429,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 %
 }
 
@@ -4397,7 +4438,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 %
 }
 
@@ -4409,7 +4450,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}
@@ -4455,7 +4496,7 @@ width0pt\relax} \fi
 \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
@@ -4508,8 +4549,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{%
@@ -4538,7 +4579,7 @@ width0pt\relax} \fi
   \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.
@@ -4557,7 +4598,7 @@ 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}%
@@ -4566,7 +4607,7 @@ width0pt\relax} \fi
   \fi
   \begingroup \macrobodyctxt
   \ifrecursive \expandafter\parsermacbody
-  \else \expandafter\parsemacbody 
+  \else \expandafter\parsemacbody
   \fi}
 
 \def\unmacro{\parsearg\unmacroxxx}
@@ -4646,7 +4687,7 @@ width0pt\relax} \fi
       \expandafter\expandafter
       \expandafter\xdef
       \expandafter\expandafter
-        \csname\the\macname xxx\endcsname 
+        \csname\the\macname xxx\endcsname
           \paramlist{\egroup\noexpand\scanmacro{\temp}}%
     \fi
   \else
@@ -4689,7 +4730,7 @@ width0pt\relax} \fi
 \def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx}
 \def\braceorlinexxx{%
   \ifx\nchar\bgroup\else
-    \expandafter\parsearg 
+    \expandafter\parsearg
   \fi \next}
 
 
@@ -4735,7 +4776,7 @@ width0pt\relax} \fi
 
 
 % @anchor{NAME} -- define xref target at arbitrary point.
-% 
+%
 \def\anchor#1{\setref{#1}{Ynothing}}
 
 
@@ -4744,7 +4785,7 @@ width0pt\relax} \fi
 % 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
   \dosetq{#1-title}{Ytitle}%
@@ -4808,7 +4849,7 @@ 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}{}%
@@ -4897,7 +4938,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
@@ -5122,7 +5163,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.
@@ -5138,18 +5179,22 @@ width0pt\relax} \fi
 \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
-      \errhelp = \noepsfhelp
-      \errmessage{epsf.tex not found, images will be ignored}%
-      \global\warnednoepsftrue
+  \ifx\pdfoutput\undefined
+    \ifx\epsfbox\undefined
+      \ifwarnednoepsf \else
+        \errhelp = \noepsfhelp
+        \errmessage{epsf.tex not found, images will be ignored}%
+        \global\warnednoepsftrue
+      \fi
+    \else
+      \imagexxx #1,,,\finish
     \fi
   \else
-    \imagexxx #1,,,\finish
+    \centerline{\pdfimage #1.pdf}%
   \fi
 }
 %
@@ -5168,6 +5213,7 @@ width0pt\relax} \fi
     \centerline{\epsfbox{#1.eps}}%
     \bigbreak
   \else
+    % In the middle of a paragraph, no extra space.
     \epsfbox{#1.eps}%
   \fi
 }
@@ -5297,7 +5343,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{{%
@@ -5311,7 +5357,7 @@ width0pt\relax} \fi
 }}
 
 % Set default to letter.
-% 
+%
 \letterpaper
 
 \message{and turning on texinfo input format.}