4.1.1-45
This commit is contained in:
parent
d5c11cfd53
commit
8b341f8702
@ -1 +1 @@
|
||||
gcc-4.1.1-20061130.tar.bz2
|
||||
gcc-4.1.1-20061208.tar.bz2
|
||||
|
@ -1,3 +1,13 @@
|
||||
2006-12-08 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* g++.dg/debug/vartrack1.C: New test.
|
||||
|
||||
* g++.dg/opt/ifcvt1.C: New test.
|
||||
|
||||
2006-12-08 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* g++.dg/template/array17.C: New test.
|
||||
|
||||
2006-05-05 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* gcc.dg/tls/opt-13.c: New test.
|
||||
@ -232,3 +242,151 @@
|
||||
+ __builtin_strcpy (thr.b, "abcd");
|
||||
+ return 0;
|
||||
+}
|
||||
--- gcc/testsuite/g++.dg/debug/vartrack1.C 2004-06-24 14:04:38.000000000 -0400
|
||||
+++ gcc/testsuite/g++.dg/debug/vartrack1.C 2006-12-08 05:29:41.000000000 -0500
|
||||
@@ -0,0 +1,99 @@
|
||||
+// This testcase used to hang the compiler in vt_find_locations.
|
||||
+// { dg-do compile }
|
||||
+// { dg-options "-O2 -g" }
|
||||
+
|
||||
+struct S
|
||||
+{
|
||||
+ int a;
|
||||
+ S *b, *c, *d;
|
||||
+};
|
||||
+
|
||||
+struct T
|
||||
+{
|
||||
+ void f1 (S *x);
|
||||
+ void f2 (S *x);
|
||||
+ void f3 (S *x, S *y);
|
||||
+ S *e;
|
||||
+};
|
||||
+
|
||||
+void
|
||||
+T::f3 (S *x, S *y)
|
||||
+{
|
||||
+ while (x != this->e && (!x || x->a == 1))
|
||||
+ {
|
||||
+ if (x == y->c)
|
||||
+ {
|
||||
+ S *w = y->d;
|
||||
+ if (w && w->a == 0)
|
||||
+ {
|
||||
+ w->a = 1;
|
||||
+ y->a = 0;
|
||||
+ f2 (y);
|
||||
+ w = y->d;
|
||||
+ }
|
||||
+ if (w && (!w->c || w->c->a == 1) && (!w->d || w->d->a == 1))
|
||||
+ {
|
||||
+ w->a = 0;
|
||||
+ x = y;
|
||||
+ y = x->b;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ if (w && (!w->d || w->d->a == 1))
|
||||
+ {
|
||||
+ if (w->c)
|
||||
+ w->c->a = 1;
|
||||
+ w->a = 0;
|
||||
+ f1 (w);
|
||||
+ w = y->d;
|
||||
+ }
|
||||
+ if (w)
|
||||
+ {
|
||||
+ w->a = y->a;
|
||||
+ if (w->d)
|
||||
+ w->d->a = 1;
|
||||
+ }
|
||||
+ y->a = 1;
|
||||
+ f2 (y);
|
||||
+ x = e;
|
||||
+ }
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ S *w = y->c;
|
||||
+ if (w && w->a == 0)
|
||||
+ {
|
||||
+ w->a = 1;
|
||||
+ y->a = 0;
|
||||
+ f1 (y);
|
||||
+ w = y->c;
|
||||
+ }
|
||||
+ if (w && (!w->c || w->c->a == 1) && (!w->d || w->d->a == 1))
|
||||
+ {
|
||||
+ w->a = 0;
|
||||
+ x = y;
|
||||
+ y = x->b;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ if (w && (!w->c || w->c->a == 1))
|
||||
+ {
|
||||
+ w->a = 0;
|
||||
+ if (w->d)
|
||||
+ w->d->a = 1;
|
||||
+ f2 (w);
|
||||
+ w = y->c;
|
||||
+ }
|
||||
+ if (w)
|
||||
+ {
|
||||
+ w->a = y->a;
|
||||
+ if (w->c)
|
||||
+ w->c->a = 1;
|
||||
+ }
|
||||
+ y->a = 1;
|
||||
+ f1 (y);
|
||||
+ x = e;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
--- gcc/testsuite/g++.dg/opt/ifcvt1.C 2006-10-04 16:28:56.502613000 +0200
|
||||
+++ gcc/testsuite/g++.dg/opt/ifcvt1.C 2006-12-08 12:23:23.000000000 +0100
|
||||
@@ -0,0 +1,17 @@
|
||||
+// { dg-do compile }
|
||||
+// { dg-options "-O2 -fnon-call-exceptions" }
|
||||
+
|
||||
+struct S { ~S () throw () {} };
|
||||
+double bar ();
|
||||
+
|
||||
+int
|
||||
+foo ()
|
||||
+{
|
||||
+ S a;
|
||||
+ int i = 0;
|
||||
+ double c = bar ();
|
||||
+ c = c < 0 ? -c : c;
|
||||
+ if (c <= 1.e-8)
|
||||
+ i += 24;
|
||||
+ return i;
|
||||
+}
|
||||
--- gcc/testsuite/g++.dg/template/array17.C 2006-10-04 16:28:56.502613000 +0200
|
||||
+++ gcc/testsuite/g++.dg/template/array17.C 2006-12-08 12:38:27.000000000 +0100
|
||||
@@ -0,0 +1,23 @@
|
||||
+// { dg-do compile }
|
||||
+
|
||||
+template <typename T>
|
||||
+struct V {
|
||||
+ T& operator[](int);
|
||||
+};
|
||||
+
|
||||
+struct S {
|
||||
+ S operator +(int);
|
||||
+ template <typename T> T value();
|
||||
+};
|
||||
+
|
||||
+template <typename T>
|
||||
+void R (T v)
|
||||
+{
|
||||
+ v[(S() + 0).template value<int>()][0] = 0;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+main ()
|
||||
+{
|
||||
+ R(V<V<int> >());
|
||||
+}
|
||||
|
29
gcc41.spec
29
gcc41.spec
@ -1,6 +1,6 @@
|
||||
%define DATE 20061130
|
||||
%define DATE 20061208
|
||||
%define gcc_version 4.1.1
|
||||
%define gcc_release 44
|
||||
%define gcc_release 45
|
||||
%define _unpackaged_files_terminate_build 0
|
||||
%define multilib_64_archs sparc64 ppc64 s390x x86_64
|
||||
%ifarch %{ix86} x86_64 ia64
|
||||
@ -30,6 +30,7 @@ Group: Development/Languages
|
||||
Source0: gcc-%{version}-%{DATE}.tar.bz2
|
||||
Source1: libgcc_post_upgrade.c
|
||||
Source2: README.libgcjwebplugin.so
|
||||
Source3: protoize.1
|
||||
URL: http://gcc.gnu.org
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
||||
# Need binutils with -pie support >= 2.14.90.0.4-4
|
||||
@ -137,8 +138,8 @@ Patch29: gcc41-pr29703.patch
|
||||
Patch30: gcc41-pr29299.patch
|
||||
Patch31: gcc41-libjava-anonverscript.patch
|
||||
Patch32: gcc41-ppc64-libffi-unwind.patch
|
||||
Patch33: gcc41-pr29965.patch
|
||||
Patch34: gcc41-pr29949.patch
|
||||
Patch33: gcc41-pr27761.patch
|
||||
Patch34: gcc41-pr30110.patch
|
||||
|
||||
%define _gnu %{nil}
|
||||
%ifarch sparc
|
||||
@ -447,8 +448,8 @@ which are required to run programs compiled with the GNAT.
|
||||
%patch30 -p0 -b .pr29299~
|
||||
%patch31 -p0 -b .libjava-anonverscript~
|
||||
%patch32 -p0 -b .ppc64-libffi-unwind~
|
||||
%patch33 -p0 -b .pr29965~
|
||||
%patch34 -p0 -b .pr29949~
|
||||
%patch33 -p0 -b .pr27761~
|
||||
%patch34 -p0 -b .pr30110~
|
||||
|
||||
sed -i -e 's/4\.1\.2/4.1.1/' gcc/BASE-VER gcc/version.c
|
||||
sed -i -e 's/" (Red Hat[^)]*)"/" (Red Hat %{version}-%{gcc_release})"/' gcc/version.c
|
||||
@ -975,6 +976,10 @@ chmod 755 $RPM_BUILD_ROOT%{_prefix}/share/java/gcj-endorsed \
|
||||
touch $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db
|
||||
%endif
|
||||
|
||||
install -m644 %{SOURCE3} $RPM_BUILD_ROOT%{_mandir}/man1/protoize.1
|
||||
echo '.so man1/protoize.1' > $RPM_BUILD_ROOT%{_mandir}/man1/unprotoize.1
|
||||
chmod 644 $RPM_BUILD_ROOT%{_mandir}/man1/unprotoize.1
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
@ -1099,6 +1104,8 @@ fi
|
||||
%{_prefix}/bin/%{gcc_target_platform}-gcc
|
||||
%{_mandir}/man1/gcc.1*
|
||||
%{_mandir}/man1/gcov.1*
|
||||
%{_mandir}/man1/protoize.1*
|
||||
%{_mandir}/man1/unprotoize.1*
|
||||
%{_infodir}/gcc*
|
||||
%dir %{_prefix}/lib/gcc
|
||||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
|
||||
@ -1508,8 +1515,16 @@ fi
|
||||
%doc rpm.doc/changelogs/libmudflap/ChangeLog*
|
||||
|
||||
%changelog
|
||||
* Fri Dec 8 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-45
|
||||
- update from gcc-4_1-branch (-r119343:119654)
|
||||
- PRs c++/14329, c++/28284, c++/29632, c++/29728, c++/29729, c++/29730,
|
||||
c++/29733, c++/30022, libfortran/29810
|
||||
- add protoize.1 and unprotoize.1 man pages (#188914)
|
||||
- fix RTL sharing problem in combine (#218603, PR rtl-optimization/27761)
|
||||
- additions to libgcj-src (Ben Konrath, PR libgcj/30110)
|
||||
|
||||
* Fri Dec 1 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-44
|
||||
- fix OpenMP loops with 0 iterations (PR libgomp/29949)
|
||||
- fix OpenMP loops with 0 iterations (PR libgomp/29947)
|
||||
|
||||
* Thu Nov 30 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-43
|
||||
- update from gcc-4_1-branch (-r119167:119343)
|
||||
|
291
protoize.1
Normal file
291
protoize.1
Normal file
@ -0,0 +1,291 @@
|
||||
.\" Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation
|
||||
.\" See section COPYING for conditions for redistribution
|
||||
.\"
|
||||
.TH protoize 1 "8 December 2006" "GCC" "GNU"
|
||||
.SH NAME
|
||||
protoize, unprotoize \- automatically add or remove function prototypes
|
||||
.SH SYNOPSIS
|
||||
.HP 7
|
||||
\fBprotoize\fR [\-CfgklNnqv] [\-B \fIDIRECTORY\fR] [\-c \fICOMPILATION-OPTIONS\fR] [\-d \fIDIRECTORY\fR] [\-i \fISTRING\fR] [\-p \fIPROGRAM\fR] [\-x \fIFILE\fR] [\fIFILE\fR...]
|
||||
.HP 7
|
||||
\fBunprotoize\fR [\-fkNnqv] [\-c \fICOMPILATION-OPTIONS\fR] [\-d \fIDIRECTORY\fR] [\-i \fISTRING\fR] [\-p \fIPROGRAM\fR] [\-x \fIFILE\fR] [\fIFILE\fR...]
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
\fBprotoize\fR is an optional part of GCC.
|
||||
You can use it to add prototypes to a program,
|
||||
thus converting the program to ANSI C in one respect.
|
||||
The companion program
|
||||
\fBunprotoize\fR does the reverse: it removes argument types from any prototypes that are found.
|
||||
.PP
|
||||
When you run these programs, you must specify a set of source files
|
||||
as command line arguments.
|
||||
The conversion programs start out by compiling these files
|
||||
to see what functions they define.
|
||||
The information gathered about a file
|
||||
\fIFOO\fR is saved in a file named \fIFOO.X\fR.
|
||||
.PP
|
||||
After scanning comes the actual conversion.
|
||||
The specified files are all eligible to be converted;
|
||||
any files they include (whether sources or just headers) are eligible as well.
|
||||
.PP
|
||||
But not all the eligible files are converted.
|
||||
By default,
|
||||
\fBprotoize\fR and \fBunprotoize\fR
|
||||
convert only source and header files in the current directory.
|
||||
You can specify additional directories whose files
|
||||
should be converted with the
|
||||
\fB\-d\fR \fIDIRECTORY\fR option.
|
||||
You can also specify particular files to exclude with the
|
||||
\fB\-x\fR \fIFILE\fR option.
|
||||
A file is converted if it is eligible, its directory name matches one of the
|
||||
specified directory names, and its name within the directory has not
|
||||
been excluded.
|
||||
.PP
|
||||
Basic conversion with
|
||||
\fBprotoize\fR consists of rewriting most function definitions and function declarations
|
||||
to specify the types of the arguments.
|
||||
The only ones not rewritten are those for varargs functions.
|
||||
.PP
|
||||
\fBprotoize\fR optionally inserts prototype declarations at the beginning of the source file,
|
||||
to make them available for any calls that precede the function's definition.
|
||||
Or it can insert prototype declarations with block scope
|
||||
in the blocks where undeclared functions are called.
|
||||
.PP
|
||||
Basic conversion with
|
||||
\fBunprotoize\fR
|
||||
consists of rewriting most function declarations to remove any argument types,
|
||||
and rewriting function definitions to the old-style pre-ANSI form.
|
||||
.PP
|
||||
Both conversion programs print a warning for any function
|
||||
declaration or definition that they can't convert.
|
||||
You can suppress these warnings with the
|
||||
\fB\-q\fR option.
|
||||
.PP
|
||||
The output from
|
||||
\fBprotoize\fR or \fBunprotoize\fR
|
||||
replaces the original source file.
|
||||
The original file is renamed to a name ending with
|
||||
\fI.save\fR.
|
||||
If the \fI.save\fR file already exists, then the source file is simply discarded.
|
||||
.PP
|
||||
\fBprotoize\fR and \fBunprotoize\fR both depend on
|
||||
\fBgcc\fR\|(1) to scan the program and collect information about the functions it uses.
|
||||
.PP
|
||||
The options are as follows:
|
||||
.TP
|
||||
\fB\-B\fR \fIDIRECTORY\fR
|
||||
Look for the file
|
||||
\fISYSCALLS.c.X\fR in \fIdirectory\fR,
|
||||
instead of the usual directory (normally \fI/usr/local/lib\fR).
|
||||
This file contains prototype information about standard system functions.
|
||||
This option applies only to \fBprotoize\fR.
|
||||
.TP
|
||||
\fB\-C\fR
|
||||
Rename files to end in
|
||||
\fI.C\fR instead of \fI.c\fR.
|
||||
This is convenient if you are converting a C program to C++.
|
||||
This option applies only to
|
||||
\fBprotoize\fR.
|
||||
.TP
|
||||
\fB\-c\fR \fICOMPILATION-OPTIONS\fR
|
||||
Use \fICOMPILATION-OPTIONS\fR as the options when running \fBgcc\fR\|(1) to produce the
|
||||
\fI.X\fR files.
|
||||
The special option \fB\-aux-info\fR is always passed in addition, to tell gcc to write a
|
||||
\fI.X\fR file.
|
||||
Note that the compilation options must be given as a single argument to
|
||||
\fBprotoize\fR or \fBunprotoize\fR.
|
||||
If you want to specify several gcc options, you must quote the entire set of
|
||||
compilation options to make them a single word in the shell.
|
||||
There are certain gcc arguments that you cannot use, because they
|
||||
would produce the wrong kind of output.
|
||||
These include
|
||||
\fB\-g\fR, \fB\-O\fR, \fB\-c\fR, \fB\-S\fR,\fB\-o\fR.
|
||||
If you include these in the \fICOMPILATION-OPTIONS\fR, they are ignored.
|
||||
.TP
|
||||
\fB\-d\fR \fIDIRECTORY\fR
|
||||
Specify additional directories whose files should be converted.
|
||||
.TP
|
||||
\fB\-g\fR
|
||||
Add explicit global declarations.
|
||||
This means inserting explicit declarations at the beginning of each
|
||||
source file for each function that is called in the file and was not declared.
|
||||
These declarations precede the first function definition that contains a
|
||||
call to an undeclared function.
|
||||
This option applies only to
|
||||
.\fBprotoize\fR.
|
||||
.TP
|
||||
\fB\-i\fR \fISTRING\fR
|
||||
Indent old-style parameter declarations with the string
|
||||
\fISTRING\fR.
|
||||
This option applies only to
|
||||
\fBprotoize\fR.
|
||||
\fBunprotoize\fR converts prototyped function definitions to old-style
|
||||
function definitions, where the arguments are declared between the
|
||||
argument list and the initial
|
||||
\fB{\fR.
|
||||
By default,
|
||||
\fBunprotoize\fR uses five spaces as the indentation.
|
||||
If you want to indent with just one space instead, use
|
||||
\fB\-i " "\fR.
|
||||
.TP
|
||||
\fB\-k\fR
|
||||
Keep the
|
||||
\fI.X\fR files.
|
||||
Normally, they are deleted after conversion is finished.
|
||||
.TP
|
||||
\fB\-l\fR
|
||||
Add explicit local declarations.
|
||||
\fBprotoize\fR with
|
||||
\fB\-l\fR inserts a prototype declaration for each function in each block which calls
|
||||
the function without any declaration.
|
||||
This option applies only to
|
||||
\fBprotoize\fR.
|
||||
.TP
|
||||
\fB\-N\fR
|
||||
Make no \fI.save\fR files.
|
||||
The original files are simply deleted.
|
||||
Use this option with caution.
|
||||
.TP
|
||||
\fB\-n\fR
|
||||
Make no real changes.
|
||||
This mode just prints information about the conversions
|
||||
that would have been done without
|
||||
\fB\-n\fR.
|
||||
.TP
|
||||
\fB\-p\fR \fIPROGRAM\fR
|
||||
Use the program
|
||||
\fBPROGRAM\fR as the compiler.
|
||||
Normally, the name
|
||||
\fBgcc\fR is used.
|
||||
.TP
|
||||
\fB\-q\fR
|
||||
Work quietly.
|
||||
Most warnings are suppressed.
|
||||
.TP
|
||||
\fB\-v\fR
|
||||
Print the version number, just like
|
||||
\fB\-v\fR for gcc.
|
||||
.TP
|
||||
\fB\-x\fR \fBFILE\fR
|
||||
List of files to exclude from the conversion process.
|
||||
.PP
|
||||
If you need special compiler options to compile one of your program's
|
||||
source files, then you should generate that file's
|
||||
\fI.X\fR file specially, by running gcc on that source file with
|
||||
the appropriate options and the option
|
||||
\fB\-aux-info\fR.
|
||||
Then run
|
||||
\fBprotoize\fR on the entire set of files.
|
||||
\fBprotoize\fR will use the existing
|
||||
\fI.X\fR file because it is newer than the source file.
|
||||
For example:
|
||||
.PP
|
||||
.DL $ gcc -Dfoo=bar file1.c -aux-info
|
||||
.DL $ protoize *.c
|
||||
.PP
|
||||
You need to include the special files along with the rest in the
|
||||
\fBprotoize\fR command, even though their
|
||||
\fI.X\fR files already exist, because otherwise they won't get converted.
|
||||
.PP
|
||||
.SH SEE ALSO
|
||||
\fBgcc\fR\|(1), and the Info entry for \fBgcc\fR, particularly
|
||||
\fBRunning protoize\fR section.
|
||||
.SH HISTORY
|
||||
Ron Guilmette implemented the
|
||||
\fBprotoize\fR and \fBunprotoize\fR tools.
|
||||
.SH AUTHORS
|
||||
See the GCC manual for the contributors to GCC.
|
||||
.SH CAVEATS
|
||||
The conversion programs \fBprotoize\fR and \fBunprotoize\fR
|
||||
can sometimes change a source file in a way that won't work
|
||||
unless you rearrange it.
|
||||
.PP
|
||||
\fBprotoize\fR can insert references to a type name or type tag before
|
||||
the definition, or in a file where they are not defined.
|
||||
.PP
|
||||
If this happens, compiler error messages should indicate where the
|
||||
new references are, so fixing the file by hand is straightforward.
|
||||
.PP
|
||||
There are some C constructs which \fBprotoize\fR
|
||||
cannot figure out.
|
||||
For example, it can't determine argument types for declaring a
|
||||
pointer-to-function variable; this must be done by hand. \fBprotoize\fR
|
||||
inserts a comment containing \fB???\fR each time it finds such a variable;
|
||||
all such variables can be found by searching for this string.
|
||||
ANSI C does not require declaring the argument types of
|
||||
pointer-to-function types.
|
||||
.PP
|
||||
Using \fBunprotoize\fR can easily introduce bugs.
|
||||
If the program relied on prototypes to bring about conversion of arguments,
|
||||
these conversions will not take place in the program without prototypes.
|
||||
One case in which you can be sure \fBunprotoize\fR
|
||||
is safe is when you are removing prototypes that were made with
|
||||
\fBprotoize\fR; if the program worked before without any prototypes,
|
||||
it will work again without them.
|
||||
.PP
|
||||
You can find all the places where this problem might occur by
|
||||
compiling the program with the \fB\-Wconversion\fR option.
|
||||
It prints a warning whenever an argument is converted.
|
||||
.PP
|
||||
Both conversion programs can be confused if there are macro calls
|
||||
in and around the text to be converted.
|
||||
In other words, the standard syntax for a declaration or definition
|
||||
must not result from expanding a macro.
|
||||
This problem is inherent in the design of C and cannot be fixed.
|
||||
If only a few functions have confusing macro calls,
|
||||
you can easily convert them manually.
|
||||
.PP
|
||||
\fBprotoize\fR cannot get the argument types for a function whose definition was not
|
||||
actually compiled due to preprocessing conditionals.
|
||||
When this happens, \fBprotoize\fR changes nothing in regard to such a function.
|
||||
\fBprotoize\fR tries to detect such instances and warn about them.
|
||||
.PP
|
||||
You can generally work around this problem by using
|
||||
\fBprotoize\fR step by step, each time specifying a different set of
|
||||
\fB\-D\fR options for compilation, until all of the functions have been converted.
|
||||
There is no automatic way to verify that you have got them all, however.
|
||||
.PP
|
||||
Confusion may result if there is an occasion to convert a function
|
||||
declaration or definition in a region of source code where there
|
||||
is more than one formal parameter list present.
|
||||
Thus, attempts to convert code containing multiple (conditionally compiled)
|
||||
versions of a single function header (in the same vicinity)
|
||||
may not produce the desired (or expected) results.
|
||||
.PP
|
||||
If you plan on converting source files which contain such code,
|
||||
it is recommended that you first make sure that each conditionally
|
||||
compiled region of source code which contains an alternative
|
||||
function header also contains at least one additional follower
|
||||
token (past the final right parenthesis of the function header).
|
||||
This should circumvent the problem.
|
||||
.PP
|
||||
\fBunprotoize\fR can become confused when trying to convert a function
|
||||
definition or declaration which contains a declaration for a
|
||||
pointer-to-function formal argument which has the same name as the
|
||||
function being defined or declared.
|
||||
We recommand you avoid such choices of formal parameter names.
|
||||
.PP
|
||||
It might be necessary to correct some of the indentation by hand and
|
||||
break long lines.
|
||||
(The conversion programs don't write lines longer than eighty characters
|
||||
in any case.)
|
||||
.SH BUGS
|
||||
For instructions on reporting bugs, see the GCC manual.
|
||||
.SH COPYING
|
||||
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
.PP
|
||||
Permission is granted to make and distribute verbatim copies of
|
||||
this manual provided the copyright notice and this permission notice
|
||||
are preserved on all copies.
|
||||
.PP
|
||||
Permission is granted to copy and distribute modified versions of this
|
||||
manual under the conditions for verbatim copying, provided that the
|
||||
entire resulting derived work is distributed under the terms of a
|
||||
permission notice identical to this one.
|
||||
.PP
|
||||
Permission is granted to copy and distribute translations of this
|
||||
manual into another language, under the above conditions for modified
|
||||
versions, except that this permission notice may be included in
|
||||
translations approved by the Free Software Foundation instead of in
|
||||
the original English.
|
Loading…
Reference in New Issue
Block a user