From: Janis Johnson Date: Wed, 11 Sep 2002 16:40:29 +0000 (+0000) Subject: Makefile.in (TEXI_GCC_FILES): Add compat.texi. X-Git-Tag: releases/gcc-3.2.1~296 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=685e966329537f12847623aea3ff7f901f090864;p=thirdparty%2Fgcc.git Makefile.in (TEXI_GCC_FILES): Add compat.texi. 2002-09-11 Janis Johnson * Makefile.in (TEXI_GCC_FILES): Add compat.texi. * doc/gcc.texi (Top): Add new chapter, Binary Compatibility, and include its file, compat.texi. * doc/compat.texi: New file with new chapter, Binary Compatibility. * doc/trouble.texi (Interoperation): Update information about C++ ABI issues. * doc/invoke.texi (-fshort-wchar): Move to Code Generation Options. (-fpcc-struct-return, -freg-struct-return, -fshort-enums, -fshort-double, -fshort-wchar, -fpack-struct, -fleading-underscore): Warn that these options can break ABI compatibility. (Many places): Fix overfull hboxes. * doc/extend.texi: Fix a broken link; fix overfull hboxes. * doc/install.texi: Fix a typo, some formatting directives, and overfull hboxes. * doc/c-tree.texi: Fix overfull hboxes. * doc/cppopts.texi: Ditto. * doc/makefile.texi: Ditto. * doc/rtl.texi: Ditto. * doc/standards.texi: Ditto. * doc/tm.texi: Ditto. From-SVN: r57033 --- diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 7a0161fa2f69..ebcbbc2b6af5 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -2273,7 +2273,7 @@ $(docdir)/gcc.info: $(docdir)/gcc.texi $(docdir)/include/gcc-common.texi \ $(docdir)/invoke.texi $(docdir)/extend.texi $(docdir)/md.texi \ $(docdir)/objc.texi $(docdir)/gcov.texi $(docdir)/trouble.texi \ $(docdir)/bugreport.texi $(docdir)/service.texi \ - $(docdir)/contribute.texi $(docdir)/vms.texi \ + $(docdir)/contribute.texi $(docdir)/vms.texi $(docdir)/compat.texi \ $(docdir)/include/funding.texi $(docdir)/gnu.texi \ $(docdir)/include/gpl.texi $(docdir)/include/fdl.texi \ $(docdir)/contrib.texi $(docdir)/cppenv.texi $(docdir)/cppopts.texi diff --git a/gcc/doc/c-tree.texi b/gcc/doc/c-tree.texi index 0e821e50974a..35da90aceb6a 100644 --- a/gcc/doc/c-tree.texi +++ b/gcc/doc/c-tree.texi @@ -1203,11 +1203,11 @@ Then, if @code{THUNK_VCALL_OFFSET} (an @code{INTEGER_CST}) is nonzero the adjusted @code{this} pointer must be adjusted again. The complete calculation is given by the following pseudo-code: -@example +@smallexample this += THUNK_DELTA if (THUNK_VCALL_OFFSET) this += (*((ptrdiff_t **) this))[THUNK_VCALL_OFFSET] -@end example +@end smallexample Finally, the thunk should jump to the location given by @code{DECL_INITIAL}; this will always be an expression for the diff --git a/gcc/doc/cppopts.texi b/gcc/doc/cppopts.texi index 463403e101a1..308e98989871 100644 --- a/gcc/doc/cppopts.texi +++ b/gcc/doc/cppopts.texi @@ -541,10 +541,10 @@ standard-conforming modes it converts them. See the @option{-std} and The nine trigraphs and their replacements are -@example +@smallexample Trigraph: ??( ??) ??< ??> ??= ??/ ??' ??! ??- Replacement: [ ] @{ @} # \ ^ | ~ -@end example +@end smallexample @end ifclear @item -remap diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 4a33eeaea966..79eea7090a38 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -739,7 +739,7 @@ GCC implements taking the address of a nested function using a technique called @dfn{trampolines}. A paper describing them is available as @noindent -@uref{http://people.debian.org/~karlheg/Usenix88-lexic.pdf}. +@uref{http://people.debian.org/~aaronl/Usenix88-lexic.pdf}. A nested function can jump to a label inherited from a containing function, provided the label was explicitly declared in the containing @@ -1396,9 +1396,9 @@ variable number of arguments much as a function can. The syntax for defining the macro is similar to that of a function. Here is an example: -@example +@smallexample #define debug(format, ...) fprintf (stderr, format, __VA_ARGS__) -@end example +@end smallexample Here @samp{@dots{}} is a @dfn{variable argument}. In the invocation of such a macro, it represents the zero or more tokens until the closing @@ -1437,9 +1437,9 @@ string. To help solve this problem, CPP behaves specially for variable arguments used with the token paste operator, @samp{##}. If instead you write -@example +@smallexample #define debug(format, ...) fprintf (stderr, format, ## __VA_ARGS__) -@end example +@end smallexample and if the variable arguments are omitted or empty, the @samp{##} operator causes the preprocessor to remove the comma before it. If you @@ -1749,9 +1749,9 @@ nested subobject to initialize; the list is taken relative to the subobject corresponding to the closest surrounding brace pair. For example, with the @samp{struct point} declaration above: -@example +@smallexample struct point ptarray[10] = @{ [2].y = yv2, [2].x = xv2, [0].x = xv0 @}; -@end example +@end smallexample @noindent If the same field is initialized multiple times, it will have value from @@ -6749,10 +6749,10 @@ inclusive. Lower numbers indicate a higher priority. In the following example, @code{A} would normally be created before @code{B}, but the @code{init_priority} attribute has reversed that order: -@example +@smallexample Some_Class A __attribute__ ((init_priority (2000))); Some_Class B __attribute__ ((init_priority (543))); -@end example +@end smallexample @noindent Note that the particular values of @var{priority} do not matter; only their @@ -6778,7 +6778,7 @@ appropriately. However, if C++ code only needs to execute destructors when Java exceptions are thrown through it, GCC will guess incorrectly. Sample problematic code is: -@example +@smallexample struct S @{ ~S(); @}; extern void bar(); // is written in Java, and may throw exceptions void foo() @@ -6786,7 +6786,7 @@ Sample problematic code is: S s; bar(); @} -@end example +@end smallexample @noindent The usual effect of an incorrect guess is a link failure, complaining of diff --git a/gcc/doc/gcc.texi b/gcc/doc/gcc.texi index 4af8694707f0..fe5121687e92 100644 --- a/gcc/doc/gcc.texi +++ b/gcc/doc/gcc.texi @@ -164,6 +164,7 @@ Introduction, gccint, GNU Compiler Collection (GCC) Internals}. * C Extensions:: GNU extensions to the C language family. * C++ Extensions:: GNU extensions to the C++ language. * Objective-C:: GNU Objective-C runtime features. +* Compatibility:: Binary Compatibility * Gcov:: gcov: a GCC test coverage program. * Trouble:: If you have trouble using GCC. * Bugs:: How, why and where to report bugs. @@ -188,6 +189,7 @@ Introduction, gccint, GNU Compiler Collection (GCC) Internals}. @include invoke.texi @include extend.texi @include objc.texi +@include compat.texi @include gcov.texi @include trouble.texi @include bugreport.texi diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 9366ecd0f9ca..a0844e4c3f23 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -422,9 +422,9 @@ complex conversion patterns. As a basic rule, @var{prefix} (and @var{suffix}) are prepended (appended) before further transformations can happen with a special transformation script @var{pattern}. -As currently implemented, this options only take effect for native +As currently implemented, these options only take effect for native builds; cross compiler binaries' names are not transformed even when a -transformation is explicitly asked for by one of this options. +transformation is explicitly asked for by one of these options. For native builds, some of the installed programs are also installed with the target alias in front of their name, as in @@ -465,7 +465,7 @@ The directory you use for @option{--with-local-prefix} @strong{must not} contain any of the system's standard header files. If it did contain them, certain programs would be miscompiled (including GNU Emacs, on certain targets), because this would override and nullify the header -file corrections made by the @code{fixincludes} script. +file corrections made by the @command{fixincludes} script. Indications are that people who use this option use it based on mistaken ideas of what it is for. People use it as if it specified where to @@ -503,15 +503,25 @@ configured with @option{--with-gnu-as}.) If you have more than one assembler installed on your system, you may want to use this option in connection with @option{--with-as=@var{pathname}}. -The systems where it makes a difference whether you use the GNU assembler are -@samp{hppa1.0-@var{any}-@var{any}}, @samp{hppa1.1-@var{any}-@var{any}}, -@samp{i386-@var{any}-sysv}, @samp{i386-@var{any}-isc}, -@samp{i860-@var{any}-bsd}, @samp{m68k-bull-sysv}, -@samp{m68k-hp-hpux}, @samp{m68k-sony-bsd}, -@samp{m68k-altos-sysv}, @samp{m68000-hp-hpux}, -@samp{m68000-att-sysv}, @samp{@var{any}-lynx-lynxos}, -and @samp{mips-@var{any}}. -On any other system, @option{--with-gnu-as} has no effect. +The following systems are the only ones where it makes a difference +whether you use the GNU assembler. On any other system, +@option{--with-gnu-as} has no effect. + +@itemize bullet +@item @samp{hppa1.0-@var{any}-@var{any}} +@item @samp{hppa1.1-@var{any}-@var{any}} +@item @samp{i386-@var{any}-sysv} +@item @samp{i386-@var{any}-isc} +@item @samp{i860-@var{any}-bsd} +@item @samp{m68k-bull-sysv} +@item @samp{m68k-hp-hpux} +@item @samp{m68k-sony-bsd} +@item @samp{m68k-altos-sysv} +@item @samp{m68000-hp-hpux} +@item @samp{m68000-att-sysv} +@item @samp{@var{any}-lynx-lynxos} +@item @samp{mips-@var{any}} +@end itemize On the systems listed above (except for the HP-PA, for ISC on the 386, and for @samp{mips-sgi-irix5.*}), if you use the GNU assembler, @@ -816,10 +826,10 @@ Some options which only apply to building cross compilers: @item --with-headers=@var{dir} Specifies a directory which has target include files. -@emph{This options is required} when building a cross +@emph{This option is required} when building a cross compiler, if @file{@var{prefix}/@var{target}/sys-include} doesn't pre-exist. These include files will be copied into the @file{gcc} install directory. -Fixincludes will be run on these files to make them compatible with +@command{fixincludes} will be run on these files to make them compatible with GCC. @item --with-libs=``@var{dir1} @var{dir2} @dots{} @var{dirN}'' Specifies a list of directories which contain the target runtime @@ -887,7 +897,7 @@ because you have previously configured the compiler in the source directory. Make sure you have done all the necessary preparations. If you build GCC on a BSD system using a directory stored in an old System -V file system, problems may occur in running @code{fixincludes} if the +V file system, problems may occur in running @command{fixincludes} if the System V file system doesn't support symbolic links. These problems result in a failure to fix the declaration of @code{size_t} in @file{sys/types.h}. If you find that @code{size_t} is a signed type and @@ -939,14 +949,17 @@ bootstrap} except that object files from the stage1 and stage2 of the 3-stage bootstrap of the compiler are deleted as soon as they are no longer needed. - If you want to save additional space during the bootstrap and in the final installation as well, you can build the compiler binaries -without debugging information with @samp{make CFLAGS='-O' LIBCFLAGS='-g --O2' LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap}. This will save +without debugging information as in the following example. This will save roughly 40% of disk space both for the bootstrap and the final installation. (Libraries will still contain debugging information.) +@example + make CFLAGS='-O' LIBCFLAGS='-g -O2' \ + LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap +@end example + If you wish to use non-default GCC flags when compiling the stage2 and stage3 compilers, set @code{BOOT_CFLAGS} on the command line when doing @samp{make bootstrap}. Non-default optimization flags are less well @@ -1042,9 +1055,9 @@ used to disable building the Ada front end. Additional build tools (such as @command{gnatmake}) or a working GNAT run-time library installation are usually @emph{not} required. However, -if you want to boostrap the compiler using a minimal version of GNAT, +if you want to bootstrap the compiler using a minimal version of GNAT, you have to issue the following commands before invoking @samp{make -boostrap} (this assumes that you start with an unmodified and consistent +bootstrap} (this assumes that you start with an unmodified and consistent source distribution): @example @@ -1272,10 +1285,8 @@ parts of the compiler in @file{@var{libdir}/gcc-lib}; documentation in info format in @file{@var{infodir}} (normally @file{@var{prefix}/info}). If you built a released version of GCC using @samp{make bootstrap} then please -quickly review the build status page for -@uref{http://gcc.gnu.org/gcc-3.1/buildstat.html,,3.1}, -@uref{http://gcc.gnu.org/gcc-3.0/buildstat.html,,3.0}, or -@uref{http://gcc.gnu.org/gcc-2.95/buildstat.html,,2.95}. +quickly review the build status page for your release, available from +@uref{http://gcc.gnu.org/buildstat.html}. If your system is not listed for the version of GCC that you built, send a note to @email{gcc@@gcc.gnu.org} indicating @@ -1863,8 +1874,10 @@ need to tell GCC where to find the assembler and the linker. The simplest way to do so is by providing @option{--with-as} and @option{--with-ld} to @file{configure}, e.g.@: -@samp{configure --with-as=/opt/ctl/bin/cam --with-ld=/opt/ctl/bin/cld ---enable-languages=c} +@example + configure --with-as=/opt/ctl/bin/cam --with-ld=/opt/ctl/bin/cld \ + --enable-languages=c +@end example The comparison test during @samp{make bootstrap} fails on Unicos/Mk because the assembler inserts timestamps into object files. You should @@ -2085,15 +2098,17 @@ results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3, 4.4, 4.5-STABLE and 5-CURRENT@. In principle, @option{--enable-threads} is now compatible with @option{--enable-libgcj} on FreeBSD@. However, it has only been built -and tested on i386-*-freebsd4.5 and alpha-*-freebsd5.0. The static +and tested on @samp{i386-*-freebsd4.5} and @samp{alpha-*-freebsd5.0}. +The static library may be incorrectly built (symbols are missing at link time). There is a rare timing-based startup hang (probably involves an assupmtion about the thread library). Multi-threaded boehm-gc (required for libjava) exposes severe threaded signal-handling bugs on FreeBSD before 4.5-RELEASE. The alpha port may not fully bootstrap without some manual -intervention: gcjh will crash with a floating-point exception while +intervention: @command{gcjh} will crash with a floating-point exception while generating @file{java/lang/Double.h} (just copy the version built on -i386-*-freebsd* and rerun the top-level gmake with no arguments and it +@samp{i386-*-freebsd*} and rerun the top-level @command{gmake} with no +arguments and it should properly complete the bootstrap). Other CPU architectures supported by FreeBSD will require additional configuration tuning in, at the very least, both boehm-gc and libffi. @@ -2214,8 +2229,13 @@ must be used if both ports are to be installed on the same system. You must use GNU binutils 2.11 or above with the 32-bit port. Thread support is not currently implemented, so @option{--enable-threads} does -not work. See @uref{http://gcc.gnu.org/ml/gcc-prs/2002-01/msg00551.html} -and @uref{http://gcc.gnu.org/ml/gcc-bugs/2002-01/msg00663.html}. +not work. See: + +@itemize +@item @uref{http://gcc.gnu.org/ml/gcc-prs/2002-01/msg00551.html} +@item @uref{http://gcc.gnu.org/ml/gcc-bugs/2002-01/msg00663.html}. +@end itemize + GCC 2.95.x is not supported under HP-UX 11 and cannot be used to compile GCC 3.0 and up. Refer to @uref{binaries.html,,binaries} for information about obtaining precompiled GCC binaries for HP-UX. @@ -2412,8 +2432,10 @@ from the right place) while making the tools not think we're actually building a cross compiler. The easiest way to do this is with a configure command like this: -@samp{CC=/udk/usr/ccs/bin/cc @var{/your/path/to}/gcc/configure ---host=i686-pc-udk --target=i686-pc-udk --program-prefix=udk-} +@example + CC=/udk/usr/ccs/bin/cc @var{/your/path/to}/gcc/configure \ + --host=i686-pc-udk --target=i686-pc-udk --program-prefix=udk- +@end example @emph{You should substitute @samp{i686} in the above command with the appropriate processor for your host.} @@ -3381,7 +3403,7 @@ binaries are available at registration required). Versions of the assembler prior to ``cctools-364'' cannot handle the -4-argument form of rlwinm and related mask-using instructions. Darwin +4-argument form of @code{rlwinm} and related mask-using instructions. Darwin 1.3 (Mac OS X 10.0) uses cctools-353 for instance. To get cctools-364, check out @file{cctools} with tag @samp{Apple-364}, build it, and install the assembler as @file{usr/bin/as}. See @@ -3573,8 +3595,10 @@ information. Sun @command{as} 4.x is broken in that it cannot cope with long symbol names. A typical error message might look similar to the following: -@samp{/usr/ccs/bin/as: "/var/tmp/ccMsw135.s", line 11041: -error: can't compute value of an expression involving an external symbol.} +@smallexample +/usr/ccs/bin/as: "/var/tmp/ccMsw135.s", line 11041: error: + can't compute value of an expression involving an external symbol. +@end smallexample This is Sun bug 4237974. This is fixed with patch 108908-02 for Solaris 2.6 and has been fixed in later (5.x) versions of the assembler, diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index a3b53ed3822c..d60d6fcfa59a 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -169,7 +169,7 @@ in the following sections. -fallow-single-precision -fcond-mismatch @gol -fsigned-bitfields -fsigned-char @gol -funsigned-bitfields -funsigned-char @gol --fwritable-strings -fshort-wchar} +-fwritable-strings} @item C++ Language Options @xref{C++ Dialect Options,,Options Controlling C++ Dialect}. @@ -279,8 +279,8 @@ in the following sections. -frerun-cse-after-loop -frerun-loop-opt @gol -fschedule-insns -fschedule-insns2 @gol -fsingle-precision-constant -fssa -fssa-ccp -fssa-dce @gol --fstrength-reduce -fstrict-aliasing -fthread-jumps -ftrapv @gol --funroll-all-loops -funroll-loops @gol +-fstrength-reduce -fstrict-aliasing -fthread-jumps @gol +-ftrapv -funroll-all-loops -funroll-loops @gol --param @var{name}=@var{value} -O -O0 -O1 -O2 -O3 -Os} @@ -444,7 +444,7 @@ in the following sections. -mno-relocatable -mrelocatable-lib -mno-relocatable-lib @gol -mtoc -mno-toc -mlittle -mlittle-endian -mbig -mbig-endian @gol -mcall-aix -mcall-sysv -mcall-netbsd @gol --maix-struct-return -msvr4-struct-return +-maix-struct-return -msvr4-struct-return @gol -mabi=altivec -mabi=no-altivec @gol -mprototype -mno-prototype @gol -msim -mmvme -mads -myellowknife -memb -msdata @gol @@ -610,8 +610,8 @@ in the following sections. @emph{D30V Options} @gccoptlist{ --mextmem -mextmemory -monchip -mno-asm-optimize -masm-optimize @gol --mbranch-cost=@var{n} -mcond-exec=@var{n}} +-mextmem -mextmemory -monchip -mno-asm-optimize @gol +-masm-optimize -mbranch-cost=@var{n} -mcond-exec=@var{n}} @emph{S/390 and zSeries Options} @gccoptlist{ @@ -670,7 +670,7 @@ in the following sections. -fno-common -fno-ident -fno-gnu-linker @gol -fpcc-struct-return -fpic -fPIC @gol -freg-struct-return -fshared-data -fshort-enums @gol --fshort-double -fvolatile @gol +-fshort-double -fshort-wchar -fvolatile @gol -fvolatile-global -fvolatile-static @gol -fverbose-asm -fpack-struct -fstack-check @gol -fstack-limit-register=@var{reg} -fstack-limit-symbol=@var{sym} @gol @@ -1297,12 +1297,6 @@ than double precision. If you must use @option{-traditional}, but want to use single precision operations when the operands are single precision, use this option. This option has no effect when compiling with ISO or GNU C conventions (the default). - -@item -fshort-wchar -@opindex fshort-wchar -Override the underlying type for @samp{wchar_t} to be @samp{short -unsigned int} instead of the default for the target. This option is -useful for building programs to run under WINE@. @end table @node C++ Dialect Options @@ -9716,7 +9710,8 @@ unwinding from asynchronous events (such as debugger or garbage collector). Return ``short'' @code{struct} and @code{union} values in memory like longer ones, rather than in registers. This convention is less efficient, but it has the advantage of allowing intercallability between -GCC-compiled files and files compiled with other compilers. +GCC-compiled files and files compiled with other compilers, particularly +the Portable C Compiler (pcc). The precise convention for returning structures in memory depends on the target configuration macros. @@ -9724,6 +9719,11 @@ on the target configuration macros. Short structures and unions are those whose size and alignment match that of some integer type. +@strong{Warning:} code compiled with the @option{-fpcc-struct-return} +switch is not binary compatible with code compiled with the +@option{-freg-struct-return} switch. +Use it to conform to a non-default application binary interface. + @item -freg-struct-return @opindex freg-struct-return Return @code{struct} and @code{union} values in registers when possible. @@ -9737,16 +9737,39 @@ defaults to @option{-fpcc-struct-return}, except on targets where GCC is the principal compiler. In those cases, we can choose the standard, and we chose the more efficient register return alternative. +@strong{Warning:} code compiled with the @option{-freg-struct-return} +switch is not binary compatible with code compiled with the +@option{-fpcc-struct-return} switch. +Use it to conform to a non-default application binary interface. + @item -fshort-enums @opindex fshort-enums Allocate to an @code{enum} type only as many bytes as it needs for the declared range of possible values. Specifically, the @code{enum} type will be equivalent to the smallest integer type which has enough room. +@strong{Warning:} the @option{-fshort-enums} switch causes GCC to generate +code that is not binary compatible with code generated without that switch. +Use it to conform to a non-default application binary interface. + @item -fshort-double @opindex fshort-double Use the same size for @code{double} as for @code{float}. +@strong{Warning:} the @option{-fshort-double} switch causes GCC to generate +code that is not binary compatible with code generated without that switch. +Use it to conform to a non-default application binary interface. + +@item -fshort-wchar +@opindex fshort-wchar +Override the underlying type for @samp{wchar_t} to be @samp{short +unsigned int} instead of the default for the target. This option is +useful for building programs to run under WINE@. + +@strong{Warning:} the @option{-fshort-wchar} switch causes GCC to generate +code that is not binary compatible with code generated without that switch. +Use it to conform to a non-default application binary interface. + @item -fshared-data @opindex fshared-data Requests that the data and non-@code{const} variables of this @@ -9888,9 +9911,12 @@ three-way choice. @item -fpack-struct @opindex fpack-struct -Pack all structure members together without holes. Usually you would -not want to use this option, since it makes the code suboptimal, and -the offsets of structure members won't agree with system libraries. +Pack all structure members together without holes. + +@strong{Warning:} the @option{-fpack-struct} switch causes GCC to generate +code that is not binary compatible with code generated without that switch. +Additionally, it makes the code suboptimial. +Use it to conform to a non-default application binary interface. @item -finstrument-functions @opindex finstrument-functions @@ -9987,8 +10013,10 @@ This option and its counterpart, @option{-fno-leading-underscore}, forcibly change the way C symbols are represented in the object file. One use is to help link with legacy assembly code. -Be warned that you should know what you are doing when invoking this -option, and that not all targets provide complete support for it. +@strong{Warning:} the @option{-fleading-underscore} switch causes GCC to +generate code that is not binary compatible with code generated without that +switch. Use it to conform to a non-default application binary interface. +Not all targets provide complete support for this switch. @end table @c man end diff --git a/gcc/doc/makefile.texi b/gcc/doc/makefile.texi index 69d621ba66c6..6d6b0253aa6b 100644 --- a/gcc/doc/makefile.texi +++ b/gcc/doc/makefile.texi @@ -48,9 +48,9 @@ You can specify specific tests by setting RUNTESTFLAGS to be the name of the @file{.exp} file, optionally followed by (for some tests) an equals and a file wildcard, like: -@example +@smallexample make check-gcc RUNTESTFLAGS="execute.exp=19980413-*" -@end example +@end smallexample Note that running the testsuite may require additional tools be installed, such as TCL or dejagnu. diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi index 2151047ea89a..56a02d3693aa 100644 --- a/gcc/doc/rtl.texi +++ b/gcc/doc/rtl.texi @@ -2316,11 +2316,11 @@ An hypothetical example might be a pattern for an addition that can either wrap around or use saturating addition depending on the value of a special control register: -@example +@smallexample (parallel [(set (reg:SI 2) (unspec:SI [(reg:SI 3) (reg:SI 4)] 0)) (use (reg:SI 1))]) -@end example +@end smallexample @noindent @@ -2552,10 +2552,10 @@ where @var{z} is an index register and @var{i} is a constant. Here is an example of its use: -@example +@smallexample (mem:SF (post_modify:SI (reg:SI 42) (plus (reg:SI 42) (reg:SI 48)))) -@end example +@end smallexample This says to modify pseudo register 42 by adding the contents of pseudo register 48 to it, after the use of what ever 42 points to. diff --git a/gcc/doc/standards.texi b/gcc/doc/standards.texi index 25fbb4524f46..b3e8b180a596 100644 --- a/gcc/doc/standards.texi +++ b/gcc/doc/standards.texi @@ -168,11 +168,19 @@ information concerning the history of C that is available online, see There is no formal written standard for Objective-C@. The most authoritative manual is ``Object-Oriented Programming and the -Objective-C Language'', available at a number of web sites; -@uref{http://developer.apple.com/techpubs/macosx/Cocoa/ObjectiveC/} has a -recent version, while @uref{http://www.toodarkpark.org/computers/objc/} -is an older example. @uref{http://www.gnustep.org} includes useful -information as well. +Objective-C Language'', available at a number of web sites + +@itemize +@item +@uref{http://developer.apple.com/techpubs/macosx/Cocoa/ObjectiveC/} +is a recent version +@item +@uref{http://www.toodarkpark.org/computers/objc/} +is an older example +@item +@uref{http://www.gnustep.org} +has additional useful information +@end itemize @xref{Top, GNAT Reference Manual, About This Guide, gnat_rm, GNAT Reference Manual}, for information on standard diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 2e3ad05c25c2..8451e3e0f39d 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -156,11 +156,11 @@ such as one option that enables many options, some of which select multilibs. Example nonsensical definition, where @code{-malt-abi}, @code{-EB}, and @code{-mspoo} cause different multilibs to be chosen: -@example +@smallexample #define TARGET_OPTION_TRANSLATE_TABLE \ @{ "-fast", "-march=fast-foo -malt-abi -I/usr/fast-foo" @}, \ @{ "-compat", "-EB -malign=4 -mspoo" @} -@end example +@end smallexample @findex CPP_SPEC @item CPP_SPEC diff --git a/gcc/doc/trouble.texi b/gcc/doc/trouble.texi index 09026fe57f02..4cfef9f3b107 100644 --- a/gcc/doc/trouble.texi +++ b/gcc/doc/trouble.texi @@ -105,11 +105,13 @@ libraries and debuggers on certain systems. @itemize @bullet @item -G++ does not do name mangling in the same way as other C++ -compilers. This means that object files compiled with one compiler -cannot be used with another. +On many platforms, GCC supports a different ABI for C++ than do other +compilers, so the object files compiled by GCC cannot be used with object +files generated by another C++ compiler. -This effect is intentional, to protect you from more subtle problems. +An area where the difference is most apparent is name mangling. The use +of different name mangling is intentional, to protect you from more subtle +problems. Compilers differ as to many internal details of C++ implementation, including: how class instances are laid out, how multiple inheritance is implemented, and how virtual function calls are handled. If the name