OSDN Git Service

new
[pf3gnuchains/gcc-fork.git] / gcc / gcc.texi
index 83ac13b..b0fee64 100644 (file)
 @c @end tex
 
 @ifinfo
+@dircategory Programming
+@direntry
+* gcc: (gcc).                  The GNU C compiler.
+@end direntry
 @ifset INTERNALS
 @ifset USING
 This file documents the use and the internals of the GNU compiler.
@@ -96,7 +100,7 @@ Published by the Free Software Foundation
 59 Temple Place - Suite 330
 Boston, MA 02111-1307 USA
 
-Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
 
 Permission is granted to make and distribute verbatim copies of
 this manual provided the copyright notice and this permission notice
@@ -111,23 +115,21 @@ notice identical to this one except for the removal of this paragraph
 @end ignore
 Permission is granted to copy and distribute modified versions of this
 manual under the conditions for verbatim copying, provided also that the
-sections entitled ``GNU General Public License,'' ``Funding for Free
-Software,'' and ``Protect Your Freedom---Fight `Look And Feel'@w{}'' are
-included exactly as in the original, and provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
+sections entitled ``GNU General Public License'' and ``Funding for Free
+Software'' are included exactly as in the original, and provided that 
+the entire resulting derived work is distributed under the terms of a 
+permission notice identical to this one.
 
 Permission is granted to copy and distribute translations of this manual
 into another language, under the above conditions for modified versions,
-except that the sections entitled ``GNU General Public License,''
-``Funding for Free Software,'' and ``Protect Your Freedom---Fight `Look
-And Feel'@w{}'', and this permission notice, may be included in
-translations approved by the Free Software Foundation instead of in the
-original English.
+except that the sections entitled ``GNU General Public License'' and
+``Funding for Free Software'', and this permission notice, may be 
+included in translations approved by the Free Software Foundation 
+instead of in the original English.
 @end ifinfo
 
 @setchapternewpage odd
-
+@c @finalout
 @titlepage
 @ifset INTERNALS
 @ifset USING
@@ -144,23 +146,23 @@ original English.
 @sp 2
 @center Richard M. Stallman
 @sp 3
-@center Last updated 26 November 1995
+@center Last updated 16 March 1998
 @sp 1
-@c The version number appears twice more in this file.
+@c The version number appears five times more in this file.
 
-@center for version 2.7.2
+@center for egcs-1.1
 @page
 @vskip 0pt plus 1filll
-Copyright @copyright{} 1988, 89, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
+Copyright @copyright{} 1988, 89, 92, 93, 94, 95, 96, 98  Free Software Foundation, Inc.
 @sp 2
-For GCC Version 2.7.2@*
+For EGCS Version 1.0@*
 @sp 1
 Published by the Free Software Foundation @*
 59 Temple Place - Suite 330@*
 Boston, MA 02111-1307, USA@*
-Last printed November, 1995.@*
+Last printed April, 1998.@*
 Printed copies are available for $50 each.@*
-ISBN 1-882114-36-1
+ISBN 1-882114-37-X
 @sp 1
 Permission is granted to make and distribute verbatim copies of
 this manual provided the copyright notice and this permission notice
@@ -168,19 +170,17 @@ are preserved on all copies.
 
 Permission is granted to copy and distribute modified versions of this
 manual under the conditions for verbatim copying, provided also that the
-sections entitled ``GNU General Public License,'' ``Funding for Free
-Software,'' and ``Protect Your Freedom---Fight `Look And Feel'@w{}'' are
-included exactly as in the original, and provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
+sections entitled ``GNU General Public License'' and ``Funding for Free
+Software'' are included exactly as in the original, and provided that 
+the entire resulting derived work is distributed under the terms of a 
+permission notice identical to this one.
 
 Permission is granted to copy and distribute translations of this manual
 into another language, under the above conditions for modified versions,
-except that the sections entitled ``GNU General Public License,''
-``Funding for Free Software,'' and ``Protect Your Freedom---Fight `Look
-And Feel'@w{}'', and this permission notice, may be included in
-translations approved by the Free Software Foundation instead of in the
-original English.
+except that the sections entitled ``GNU General Public License'' and
+``Funding for Free Software'', and this permission notice, may be 
+included in translations approved by the Free Software Foundation 
+instead of in the original English.
 @end titlepage
 @page
 
@@ -194,19 +194,19 @@ original English.
 @ifset USING
 This manual documents how to run, install and port the GNU
 compiler, as well as its new features and incompatibilities, and how to
-report bugs.  It corresponds to GNU CC version 2.7.2.
+report bugs.  It corresponds to EGCS version 1.0.
 @end ifset
 @end ifset
 
 @ifclear INTERNALS
 This manual documents how to run and install the GNU compiler,
 as well as its new features and incompatibilities, and how to report
-bugs.  It corresponds to GNU CC version 2.7.2.
+bugs.  It corresponds to EGCS version 1.0.
 @end ifclear
 @ifclear USING
 This manual documents how to port the GNU compiler,
 as well as its new features and incompatibilities, and how to report
-bugs.  It corresponds to GNU CC version 2.7.1.
+bugs.  It corresponds to EGCS version 1.0.
 @end ifclear
 
 @end ifinfo
@@ -236,7 +236,7 @@ bugs.  It corresponds to GNU CC version 2.7.1.
 @end ifset
 
 * Funding::         How to help assure funding for free software.
-* Look and Feel::   Protect your freedom---fight ``look and feel''.
+* GNU/Linux::       Linux and the GNU Project
 
 * Copying::         GNU General Public License says
                      how you can copy and share GNU CC.
@@ -437,7 +437,7 @@ GNU CC.  The fix is to get rid of the file @code{real-ld} which purify
 installs---so that GNU CC won't try to use it.
 
 @item
-On Linux SLS 1.01, there is a problem with @file{libc.a}: it does not
+On GNU/Linux SLS 1.01, there is a problem with @file{libc.a}: it does not
 contain the obstack functions.  However, GNU CC assumes that the obstack
 functions are in @file{libc.a} when it is the GNU C library.  To work
 around this problem, change the @code{__GNU_LIBRARY__} conditional
@@ -1122,7 +1122,7 @@ the ordinary C compiler.  If you do so, you must specify the following
 options:
 
 @smallexample
--L/usr/local/lib/gcc-lib/we32k-att-sysv/2.7.1 -lgcc -lc_s
+-L/usr/local/lib/gcc-lib/we32k-att-sysv/2.8.1 -lgcc -lc_s
 @end smallexample
 
 The first specifies where to find the library @file{libgcc.a}
@@ -2188,24 +2188,13 @@ for improvement of GNU CC or GNU C++ are welcome in any case.
 @node Bug Lists
 @section Where to Report Bugs
 @cindex bug report mailing lists
-@kindex bug-gcc@@prep.ai.mit.edu
-Send bug reports for GNU C to @samp{bug-gcc@@prep.ai.mit.edu}.
-
-@kindex bug-g++@@prep.ai.mit.edu
-@kindex bug-libg++@@prep.ai.mit.edu
-Send bug reports for GNU C++ to @samp{bug-g++@@prep.ai.mit.edu}.  If
-your bug involves the C++ class library libg++, send mail instead to the
-address @samp{bug-lib-g++@@prep.ai.mit.edu}.  If you're not sure, you
-can send the bug report to both lists.
-
-@strong{Do not send bug reports to @samp{help-gcc@@prep.ai.mit.edu} or
-to the newsgroup @samp{gnu.gcc.help}.} Most users of GNU CC do not want
-to receive bug reports.  Those that do, have asked to be on
-@samp{bug-gcc} and/or @samp{bug-g++}.
+@kindex egcs-bugs@@cygnus.com
+Send bug reports for GNU C to @samp{egcs-bugs@@cygnus.com}.
 
-The mailing lists @samp{bug-gcc} and @samp{bug-g++} both have newsgroups
-which serve as repeaters: @samp{gnu.gcc.bug} and @samp{gnu.g++.bug}.
-Each mailing list and its newsgroup carry exactly the same messages.
+@kindex egcs-bugs@@cygnus.com
+@kindex egcs-bugs@@cygnus.com
+Send bug reports for GNU C++ and the C++ runtime libraries to
+@samp{egcs-bugs@@cygnus.com}.
 
 Often people think of posting bug reports to the newsgroup instead of
 mailing them.  This appears to work, but it has one problem which can be
@@ -2259,11 +2248,13 @@ Please report each bug in a separate message.  This makes it easier for
 us to track which bugs have been fixed and to forward your bugs reports
 to the appropriate maintainer.
 
-Do not compress and encode any part of your bug report using programs
-such as @file{uuencode}.  If you do so it will slow down the processing
-of your bug.  If you must submit multiple large files, use @file{shar},
-which allows us to read your message without having to run any
-decompression programs.
+If you include source code in your message, you can send it as clear
+text if it is small. If the message is larger, you may compress it using
+@file{gzip}, @file{bzip2}, or @file{pkzip}. Please be aware that sending
+compressed files needs an additional binary-safe mechanism such as
+@code{MIME} or @code{uuencode}. There is a 40k message limit on the
+@samp{egcs-bugs@@cygnus.com} mailing list at the time of this writing
+(August 1998).
 
 To enable someone to investigate the bug, you should include all these
 things:
@@ -2279,12 +2270,12 @@ the bug in the current version of GNU CC.
 @item
 A complete input file that will reproduce the bug.  If the bug is in the
 C preprocessor, send a source file and any header files that it
-requires.  If the bug is in the compiler proper (@file{cc1}), run your
-source file through the C preprocessor by doing @samp{gcc -E
-@var{sourcefile} > @var{outfile}}, then include the contents of
-@var{outfile} in the bug report.  (When you do this, use the same
-@samp{-I}, @samp{-D} or @samp{-U} options that you used in actual
-compilation.)
+requires.  If the bug is in the compiler proper (@file{cc1}), send the
+preprocessor output generated by adding @samp{-save-temps} to the
+compilation command (@pxref{Debugging Options}).  When you do this, use
+the same @samp{-I}, @samp{-D} or @samp{-U} options that you used in
+actual compilation. Then send the @var{input}.i or @var{input}.ii files
+generated.
 
 A single statement is not enough of an example.  In order to compile it,
 it must be embedded in a complete file of compiler input; and the bug
@@ -2491,7 +2482,7 @@ we should be able to reproduce the crash ourselves.
 
 If you would like to write bug fixes or improvements for the GNU C
 compiler, that is very helpful.  Send suggested fixes to the bug report
-mailing list, @code{bug-gcc@@prep.ai.mit.edu}.
+mailing list, @code{egcs-bugs@@cygnus.com}.
 
 Please follow these guidelines so we can study your patches efficiently.
 If you don't follow these guidelines, your information might still be
@@ -2611,8 +2602,8 @@ ways to find it:
 @itemize @bullet
 @item
 Send a message to a suitable network mailing list.  First try
-@code{bug-gcc@@prep.ai.mit.edu}, and if that brings no response, try
-@code{help-gcc@@prep.ai.mit.edu}.
+@code{egcs-bugs@@cygnus.com}, and if that brings no response, try
+@code{egcs@@cygnus.com}.
 
 @item
 Look in the service directory for someone who might help you for a fee.
@@ -2625,13 +2616,13 @@ GNU CC distribution.
 
 If you would like to help pretest GNU CC releases to assure they work
 well, or if you would like to work on improving GNU CC, please contact
-the maintainers at @code{bug-gcc@@gnu.ai.mit.edu}.  A pretester should
+the maintainers at @code{egcs@@cygnus.com}.  A pretester should
 be willing to try to investigate bugs as well as report them.
 
 If you'd like to work on improvements, please ask for suggested projects
 or suggest your own ideas.  If you have already written an improvement,
 please tell us about it.  If you have not yet started work, it is useful
-to contact @code{bug-gcc@@prep.ai.mit.edu} before you start; the
+to contact @code{egcs@@cygnus.com} before you start; the
 maintainers may be able to suggest ways to make your extension fit in
 better with the rest of GNU CC and with other development plans.
 
@@ -3317,6 +3308,22 @@ The option @samp{-ds} causes a debugging dump of the RTL code after
 this pass.  This dump file's name is made by appending @samp{.cse} to
 the input file name.
 
+@cindex global common subexpression elimination
+@cindex constant propagation
+@cindex copy propagation
+@item               
+Global common subexpression elimination.  This pass performs GCSE
+using Morel-Renvoise Partial Redundancy Elimination, with the exception
+that it does not try to move invariants out of loops - that is left to
+the loop optimization pass.  This pass also performs global constant
+and copy propagation.
+
+The source file for this pass is gcse.c.
+
+The option @samp{-dG} causes a debugging dump of the RTL code after
+this pass.  This dump file's name is made by appending @samp{.gcse} to
+the input file name.
+
 @cindex loop optimization
 @cindex code motion
 @cindex strength-reduction
@@ -3692,12 +3699,6 @@ Define this macro to indicate that the host compiler does not properly
 handle converting a function value to a pointer-to-function when it is
 used in an expression.
 
-@findex HAVE_VPRINTF
-@findex vprintf
-@item HAVE_VPRINTF
-Define this if the library function @code{vprintf} is available on your
-system.
-
 @findex MULTIBYTE_CHARS
 @item MULTIBYTE_CHARS
 Define this macro to enable support for multibyte characters in the
@@ -3705,22 +3706,10 @@ input to GNU CC.  This requires that the host system support the ANSI C
 library functions for converting multibyte characters to wide
 characters.
 
-@findex HAVE_PUTENV
-@findex putenv
-@item HAVE_PUTENV
-Define this if the library function @code{putenv} is available on your
-system.
-
 @findex POSIX
 @item POSIX
 Define this if your system is POSIX.1 compliant.
 
-@findex HAVE_POPEN
-@findex popen
-@item HAVE_POPEN
-Define this if the library function @code{popen} is available on your
-system.
-
 @findex NO_SYS_SIGLIST
 @item NO_SYS_SIGLIST
 Define this if your system @emph{does not} provide the variable
@@ -3767,12 +3756,6 @@ no effect.  As soon as all of the machine descriptions are
 modified to have the appropriate number of arguments, this macro
 will be removed.
 
-@findex NO_STAB_H
-@item NO_STAB_H
-Define this if your system does not have the include file
-@file{stab.h}.  If @samp{USG} is defined, @samp{NO_STAB_H} is
-assumed.
-
 @findex PATH_SEPARATOR
 @item PATH_SEPARATOR
 Define this macro to be a C character constant representing the
@@ -3893,9 +3876,9 @@ procedure will build all combinations of compatible options.
 
 For example, if you set @code{MULTILIB_OPTIONS} to @samp{m68000/m68020
 msoft-float}, @file{Makefile} will build special versions of
-@file{libgcc.a} using the sets of options @samp{-m68000}, @samp{-m68020},
-@samp{-msoft-float}, @samp{-m68000 -msoft-float}, and @samp{-m68020
--msoft-float}.
+@file{libgcc.a} using the following sets of options:  @samp{-m68000},
+@samp{-m68020}, @samp{-msoft-float}, @samp{-m68000 -msoft-float}, and 
+@samp{-m68020 -msoft-float}.
 
 @findex MULTILIB_DIRNAMES
 @item MULTILIB_DIRNAMES
@@ -3906,7 +3889,7 @@ Write one element in @code{MULTILIB_DIRNAMES} for each element in
 default value will be @code{MULTILIB_OPTIONS}, with all slashes treated
 as spaces.
 
-For example, if @code{MULTILIB_OPTIONS} is specified as @samp{m68000/m68020
+For example, if @code{MULTILIB_OPTIONS} is set to @samp{m68000/m68020
 msoft-float}, then the default value of @code{MULTILIB_DIRNAMES} is
 @samp{m68000 m68020 msoft-float}.  You may specify a different value if
 you desire a different set of directory names.
@@ -4021,191 +4004,104 @@ Verbatim copying and redistribution of this section is permitted
 without royalty; alteration is not permitted.
 @end display
 
-@node Look and Feel
-@unnumbered Protect Your Freedom---Fight ``Look And Feel''
-@c the above chapter heading overflows onto the next line. --mew 1/26/93
-
-@quotation
-@i{This section is a political message from the League for Programming
-Freedom to the users of GNU CC.  We have included it here because the
-issue of interface copyright is important to the GNU project.}
-@end quotation
-
-Apple, Lotus, and now CDC have tried to create a new form of legal
-monopoly: a copyright on a user interface.
-
-An interface is a kind of language---a set of conventions for
-communication between two entities, human or machine.  Until a few years
-ago, the law seemed clear: interfaces were outside the domain of
-copyright, so programmers could program freely and implement whatever
-interface the users demanded.  Imitating de-facto standard interfaces,
-sometimes with improvements, was standard practice in the computer
-field.  These improvements, if accepted by the users, caught on and
-became the norm; in this way, much progress took place.
-
-Computer users, and most software developers, were happy with this state
-of affairs.  However, large companies such as Apple and Lotus would
-prefer a different system---one in which they can own interfaces and
-thereby rid themselves of all serious competitors.  They hope that
-interface copyright will give them, in effect, monopolies on major
-classes of software.
-
-Other large companies such as IBM and Digital also favor interface
-monopolies, for the same reason: if languages become property, they
-expect to own many de-facto standard languages.  But Apple and Lotus are
-the ones who have actually sued.  Apple's lawsuit was defeated, for
-reasons only partly related to the general issue of interface copyright.
-
-Lotus won lawsuits against two small companies, which were thus put out
-of business.  Then Lotus sued Borland; Lotus won in the trial court (no
-surprise, since it was the same court that had ruled for Lotus twice
-before), but the court of appeals ruled in favor of Borland, which was
-assisted by a friend-of-the-court brief from the League for Programming
-Freedom.
-
-Lotus appealed the case to the Supreme Court, which heard the case but
-was unable to reach a decision.  This failure means that the appeals
-court decision stands, in one portion of the United States, and may
-influence the other appeals courts, but it does not set a nationwide
-precedent.  The battle is not over, and it is not limited to the United
-States.
-
-The battle is extending into other areas of software as well.  In 1995 a
-company that produced a simulator for a CDC computer was shut down by a
-copyright lawsuit, in which CDC charged that the simulator infringed the
-copyright on the manuals for the computer.
-
-If the monopolists get their way, they will hobble the software field:
-
-@itemize @bullet
-@item
-Gratuitous incompatibilities will burden users.  Imagine if each car
-manufacturer had to design a different way to start, stop, and steer a
-car.
-
-@item
-Users will be ``locked in'' to whichever interface they learn; then they
-will be prisoners of one supplier, who will charge a monopolistic price.
-
-@item
-Large companies have an unfair advantage wherever lawsuits become
-commonplace.  Since they can afford to sue, they can intimidate smaller
-developers with threats even when they don't really have a case.
-
-@item
-Interface improvements will come slower, since incremental evolution
-through creative partial imitation will no longer occur.
-@end itemize
-
-If interface monopolies are accepted, other large companies are waiting
-to grab theirs:
-
-@itemize @bullet
-@item
-Adobe is expected to claim a monopoly on the interfaces of various
-popular application programs, if Lotus ultimately wins the case against
-Borland.
-
-@item
-Open Computing magazine reported a Microsoft vice president as threatening
-to sue people who imitate the interface of Windows.
-@end itemize
-
-Users invest a great deal of time and money in learning to use computer
-interfaces.  Far more, in fact, than software developers invest in
-developing @emph{and even implementing} the interfaces.  Whoever can own
-an interface, has made its users into captives, and misappropriated
-their investment.
-
-To protect our freedom from monopolies like these, a group of
-programmers and users have formed a grass-roots political organization,
-the League for Programming Freedom.
-
-The purpose of the League is to oppose monopolistic practices such as
-interface copyright and software patents.  The League calls for a return
-to the legal policies of the recent past, in which programmers could
-program freely.  The League is not concerned with free software as an
-issue, and is not affiliated with the Free Software Foundation.
-
-The League's activities include publicizing the issues, as is being done
-here, and filing friend-of-the-court briefs on behalf of defendants sued
-by monopolists.
-
-The League's membership rolls include Donald Knuth, the foremost
-authority on algorithms, John McCarthy, inventor of Lisp, Marvin Minsky,
-founder of the MIT Artificial Intelligence lab, Guy L. Steele, Jr.,
-author of well-known books on Lisp and C, as well as Richard Stallman,
-the developer of GNU CC.  Please join and add your name to the list.
-Membership dues in the League are $42 per year for programmers, managers
-and professionals; $10.50 for students; $21 for others.
-
-Activist members are especially important, but members who have no time
-to give are also important.  Surveys at major ACM conferences have
-indicated a vast majority of attendees agree with the League on both
-issues (interface copyrights and software patents).  If just ten percent
-of the programmers who agree with the League join the League, we will
-probably triumph.
-
-To join, or for more information, send electronic mail to
-the address @code{lpf@@uunet.uu.net} or write to:
-
-@display
-League for Programming Freedom
-1 Kendall Square #143
-P.O. Box 9171
-Cambridge, MA 02139
-@end display
-
-In addition to joining the League, here are some suggestions from the
-League for other things you can do to protect your freedom to write
-programs:
-
-@itemize @bullet
-@item
-Tell your friends and colleagues about this issue and how it threatens
-to ruin the computer industry.
-
-@item
-Mention that you are a League member in your @file{.signature}, and
-mention the League's email address for inquiries.
-
-@item
-Ask the companies you consider working for or working with to make
-statements against software monopolies, and give preference to those
-that do.
-
-@item
-When employers ask you to sign contracts giving them copyright on your
-work, insist on a clause saying they will not claim the copyright covers
-imitating the interface.
-
-@item
-When employers ask you to sign contracts giving them patent rights,
-insist on clauses saying they can use these rights only defensively.
-Don't rely on ``company policy,'' since that can change at any time;
-don't rely on an individual executive's private word, since that person
-may be replaced.  Get a commitment just as binding as the commitment
-they get from you.
-
-@item
-Write to Congress to explain the importance of these issues.
-
-@display
-House Subcommittee on Intellectual Property
-2137 Rayburn Bldg
-Washington, DC 20515
-
-Senate Subcommittee on Patents, Trademarks and Copyrights
-United States Senate
-Washington, DC 20510
-@end display
-
-(These committees have received lots of mail already; let's give them
-even more.)
-@end itemize
-
-Democracy means nothing if you don't use it.  Stand up and be counted!
-
+@node GNU/Linux
+@unnumbered Linux and the GNU Project
+
+Many computer users run a modified version of the GNU system every
+day, without realizing it.  Through a peculiar turn of events, the
+version of GNU which is widely used today is more often known as
+``Linux'', and many users are not aware of the extent of its
+connection with the GNU Project.
+
+There really is a Linux; it is a kernel, and these people are using
+it.  But you can't use a kernel by itself; a kernel is useful only as
+part of a whole system.  The system in which Linux is typically used
+is a modified variant of the GNU system---in other words, a Linux-based
+GNU system.
+
+Many users are not fully aware of the distinction between the kernel,
+which is Linux, and the whole system, which they also call ``Linux''.
+The ambiguous use of the name doesn't promote understanding.
+
+Programmers generally know that Linux is a kernel.  But since they
+have generally heard the whole system called ``Linux'' as well, they
+often envisage a history which fits that name.  For example, many
+believe that once Linus Torvalds finished writing the kernel, his
+friends looked around for other free software, and for no particular
+reason most everything necessary to make a Unix-like system was
+already available.
+
+What they found was no accident---it was the GNU system.  The available
+free software added up to a complete system because the GNU Project
+had been working since 1984 to make one.  The GNU Manifesto
+had set forth the goal of developing a free Unix-like system, called 
+GNU.  By the time Linux was written, the system was almost finished.
+
+Most free software projects have the goal of developing a particular
+program for a particular job.  For example, Linus Torvalds set out to
+write a Unix-like kernel (Linux); Donald Knuth set out to write a text
+formatter (TeX); Bob Scheifler set out to develop a window system (X
+Windows).  It's natural to measure the contribution of this kind of
+project by specific programs that came from the project.
+
+If we tried to measure the GNU Project's contribution in this way,
+what would we conclude?  One CD-ROM vendor found that in their ``Linux
+distribution'', GNU software was the largest single contingent, around
+28% of the total source code, and this included some of the essential
+major components without which there could be no system.  Linux itself
+was about 3%.  So if you were going to pick a name for the system
+based on who wrote the programs in the system, the most appropriate
+single choice would be ``GNU''.
+
+But we don't think that is the right way to consider the question.
+The GNU Project was not, is not, a project to develop specific
+software packages.  It was not a project to develop a C compiler,
+although we did.  It was not a project to develop a text editor,
+although we developed one.  The GNU Project's aim was to develop
+@emph{a complete free Unix-like system}.
+
+Many people have made major contributions to the free software in the
+system, and they all deserve credit.  But the reason it is @emph{a
+system}---and not just a collection of useful programs---is because the
+GNU Project set out to make it one.  We wrote the programs that were
+needed to make a @emph{complete} free system.  We wrote essential but
+unexciting major components, such as the assembler and linker, because
+you can't have a system without them.  A complete system needs more
+than just programming tools, so we wrote other components as well,
+such as the Bourne Again SHell, the PostScript interpreter
+Ghostscript, and the GNU C library.
+
+By the early 90s we had put together the whole system aside from the
+kernel (and we were also working on a kernel, the GNU Hurd, which runs
+on top of Mach).  Developing this kernel has been a lot harder than we
+expected, and we are still working on finishing it.
+
+Fortunately, you don't have to wait for it, because Linux is working
+now.  When Linus Torvalds wrote Linux, he filled the last major gap.
+People could then put Linux together with the GNU system to make a
+complete free system: a Linux-based GNU system (or GNU/Linux system,
+for short).
+
+Putting them together sounds simple, but it was not a trivial job.
+The GNU C library (called glibc for short) needed substantial changes.
+Integrating a complete system as a distribution that would work ``out
+of the box'' was a big job, too.  It required addressing the issue of
+how to install and boot the system---a problem we had not tackled,
+because we hadn't yet reached that point.  The people who developed
+the various system distributions made a substantial contribution.
+
+The GNU Project supports GNU/Linux systems as well as @emph{the}
+GNU system---even with funds.  We funded the rewriting of the
+Linux-related extensions to the GNU C library, so that now they are
+well integrated, and the newest GNU/Linux systems use the current
+library release with no changes.  We also funded an early stage of the
+development of Debian GNU/Linux.
+
+We use Linux-based GNU systems today for most of our work, and we hope
+you use them too.  But please don't confuse the public by using the
+name ``Linux'' ambiguously.  Linux is the kernel, one of the essential
+major components of the system.  The system as a whole is more or less
+the GNU system.
 
 @node Copying
 @unnumbered GNU GENERAL PUBLIC LICENSE