diff -Nrc3pad gcc-3.0/.brik gcc-3.0.1/.brik *** gcc-3.0/.brik Sun Jun 17 13:35:41 2001 --- gcc-3.0.1/.brik Sun Aug 19 22:50:26 2001 *************** *** 3,29 **** # CRC-32 filename # ------ -------- ! 3474192430b ./.cvsignore ! 3926918363b ./BUGS 2171125041b ./COPYING 508743035b ./COPYING.LIB ! 1397497917b ./ChangeLog ! 2199726871b ./FAQ ! 2208327612b ./GNATS 2229468985b ./INSTALL/README ! 2242367380b ./INSTALL/binaries.html ! 1036297750b ./INSTALL/build.html ! 2769898142b ./INSTALL/configure.html ! 1916421468b ./INSTALL/download.html ! 815314669b ./INSTALL/finalinstall.html ! 3582470441b ./INSTALL/index.html ! 1801445129b ./INSTALL/specific.html ! 3749613216b ./INSTALL/test.html ! 3369470533b ./MAINTAINERS 253028645b ./Makefile.in 3697693037b ./README 3461973635b ./boehm-gc/BCC_MAKEFILE ! 2080733590b ./boehm-gc/ChangeLog 4012707064b ./boehm-gc/EMX_MAKEFILE 145946109b ./boehm-gc/MacOS.c 591574792b ./boehm-gc/MacProjects.sit.hqx --- 3,30 ---- # CRC-32 filename # ------ -------- ! 4294967295b ./.brik ! 2864072627b ./.cvsignore ! 873677691b ./BUGS 2171125041b ./COPYING 508743035b ./COPYING.LIB ! 226845448b ./ChangeLog ! 4244897222b ./FAQ ! 3826647863b ./GNATS 2229468985b ./INSTALL/README ! 3837555366b ./INSTALL/binaries.html ! 3242873726b ./INSTALL/build.html ! 3927920424b ./INSTALL/configure.html ! 1964338015b ./INSTALL/download.html ! 2951706212b ./INSTALL/finalinstall.html ! 4063529934b ./INSTALL/index.html ! 1238341873b ./INSTALL/specific.html ! 2369737775b ./INSTALL/test.html ! 3015795079b ./MAINTAINERS 253028645b ./Makefile.in 3697693037b ./README 3461973635b ./boehm-gc/BCC_MAKEFILE ! 227979088b ./boehm-gc/ChangeLog 4012707064b ./boehm-gc/EMX_MAKEFILE 145946109b ./boehm-gc/MacOS.c 591574792b ./boehm-gc/MacProjects.sit.hqx *************** *** 35,41 **** 2062393541b ./boehm-gc/Makefile.am 2362359874b ./boehm-gc/Makefile.dist 1527083461b ./boehm-gc/Makefile.dj ! 2698683834b ./boehm-gc/Makefile.in 221737275b ./boehm-gc/NT_MAKEFILE 3485810529b ./boehm-gc/NT_THREADS_MAKEFILE 1470223144b ./boehm-gc/OS2_MAKEFILE --- 36,42 ---- 2062393541b ./boehm-gc/Makefile.am 2362359874b ./boehm-gc/Makefile.dist 1527083461b ./boehm-gc/Makefile.dj ! 3030006705b ./boehm-gc/Makefile.in 221737275b ./boehm-gc/NT_MAKEFILE 3485810529b ./boehm-gc/NT_THREADS_MAKEFILE 1470223144b ./boehm-gc/OS2_MAKEFILE *************** *** 58,65 **** 2463868610b ./boehm-gc/SCoptions.amiga 2178285379b ./boehm-gc/SMakefile.amiga 1086659516b ./boehm-gc/WCC_MAKEFILE ! 1864955838b ./boehm-gc/acinclude.m4 ! 2842903934b ./boehm-gc/aclocal.m4 4022851412b ./boehm-gc/add_gc_prefix.c 3675915241b ./boehm-gc/allchblk.c 3500671031b ./boehm-gc/alloc.c --- 59,66 ---- 2463868610b ./boehm-gc/SCoptions.amiga 2178285379b ./boehm-gc/SMakefile.amiga 1086659516b ./boehm-gc/WCC_MAKEFILE ! 3243366834b ./boehm-gc/acinclude.m4 ! 2107795540b ./boehm-gc/aclocal.m4 4022851412b ./boehm-gc/add_gc_prefix.c 3675915241b ./boehm-gc/allchblk.c 3500671031b ./boehm-gc/alloc.c *************** *** 69,75 **** 4184632247b ./boehm-gc/blacklst.c 971406525b ./boehm-gc/callprocs 3725131560b ./boehm-gc/checksums.c ! 3990870037b ./boehm-gc/configure 202677859b ./boehm-gc/configure.host 1706589819b ./boehm-gc/configure.in 697594862b ./boehm-gc/cord/README --- 70,76 ---- 4184632247b ./boehm-gc/blacklst.c 971406525b ./boehm-gc/callprocs 3725131560b ./boehm-gc/checksums.c ! 482688713b ./boehm-gc/configure 202677859b ./boehm-gc/configure.host 1706589819b ./boehm-gc/configure.in 697594862b ./boehm-gc/cord/README *************** *** 166,177 **** 3707632643b ./boehm-gc/version.h 2262051120b ./boehm-gc/weakpointer.h 4042937657b ./boehm-gc/win32_threads.c ! 2924823888b ./bugs.html 3139906847b ./config-ml.in 1152210207b ./config.guess 3430029098b ./config.if ! 2802059785b ./config.sub ! 3629899249b ./config/ChangeLog 612455112b ./config/acinclude.m4 3007349820b ./config/mh-a68bsd 1442196770b ./config/mh-aix386 --- 167,178 ---- 3707632643b ./boehm-gc/version.h 2262051120b ./boehm-gc/weakpointer.h 4042937657b ./boehm-gc/win32_threads.c ! 1773423874b ./bugs.html 3139906847b ./config-ml.in 1152210207b ./config.guess 3430029098b ./config.if ! 572719696b ./config.sub ! 2984923331b ./config/ChangeLog 612455112b ./config/acinclude.m4 3007349820b ./config/mh-a68bsd 1442196770b ./config/mh-aix386 *************** *** 215,221 **** 456622165b ./config/mh-vaxult2 3265825290b ./config/mh-x86pic 198559626b ./config/mpw-mh-mpw ! 2820779821b ./config/mpw/ChangeLog 3145098931b ./config/mpw/MoveIfChange 1476422091b ./config/mpw/README 4005879853b ./config/mpw/forward-include --- 216,222 ---- 456622165b ./config/mh-vaxult2 3265825290b ./config/mh-x86pic 198559626b ./config/mpw-mh-mpw ! 1200430146b ./config/mpw/ChangeLog 3145098931b ./config/mpw/MoveIfChange 1476422091b ./config/mpw/README 4005879853b ./config/mpw/forward-include *************** *** 244,272 **** 2659154290b ./config/mt-wince 771382916b ./config/mt-x86pic 3518489976b ./configure ! 427264681b ./configure.in ! 2702811196b ./contrib/ChangeLog 550196746b ./contrib/compare_tests 2828387446b ./contrib/convert_to_f2c 2929939770b ./contrib/convert_to_g2c 2025073358b ./contrib/download_f2c 2292355102b ./contrib/gcc_build ! 563298821b ./contrib/gcc_release ! 375356764b ./contrib/gcc_update 1336632236b ./contrib/gccbug.el 2520368790b ./contrib/gennews 4256039795b ./contrib/index-prop 3683285493b ./contrib/newcvsroot 3627076674b ./contrib/snapshot 1623905231b ./contrib/test_installed ! 2142292306b ./contrib/test_summary ! 3496524633b ./contrib/texi2pod.pl 2210983108b ./contrib/warn_summary ! 3159298671b ./faq.html 1005262133b ./fastjar/AUTHORS 1745615150b ./fastjar/CHANGES 1396100520b ./fastjar/COPYING ! 2121067631b ./fastjar/ChangeLog 2770615802b ./fastjar/INSTALL 2457567884b ./fastjar/Makefile.am 1854345631b ./fastjar/Makefile.in --- 245,273 ---- 2659154290b ./config/mt-wince 771382916b ./config/mt-x86pic 3518489976b ./configure ! 3733934766b ./configure.in ! 1104011341b ./contrib/ChangeLog 550196746b ./contrib/compare_tests 2828387446b ./contrib/convert_to_f2c 2929939770b ./contrib/convert_to_g2c 2025073358b ./contrib/download_f2c 2292355102b ./contrib/gcc_build ! 2291211365b ./contrib/gcc_release ! 4179351048b ./contrib/gcc_update 1336632236b ./contrib/gccbug.el 2520368790b ./contrib/gennews 4256039795b ./contrib/index-prop 3683285493b ./contrib/newcvsroot 3627076674b ./contrib/snapshot 1623905231b ./contrib/test_installed ! 1719899924b ./contrib/test_summary ! 1623138628b ./contrib/texi2pod.pl 2210983108b ./contrib/warn_summary ! 2368292236b ./faq.html 1005262133b ./fastjar/AUTHORS 1745615150b ./fastjar/CHANGES 1396100520b ./fastjar/COPYING ! 953412608b ./fastjar/ChangeLog 2770615802b ./fastjar/INSTALL 2457567884b ./fastjar/Makefile.am 1854345631b ./fastjar/Makefile.in *************** *** 298,304 **** 1014730298b ./gcc/ABOUT-NLS 2171125041b ./gcc/COPYING 508743035b ./gcc/COPYING.LIB ! 3221493465b ./gcc/ChangeLog 1908191848b ./gcc/ChangeLog.0 1287222071b ./gcc/ChangeLog.1 3345586942b ./gcc/ChangeLog.2 --- 299,305 ---- 1014730298b ./gcc/ABOUT-NLS 2171125041b ./gcc/COPYING 508743035b ./gcc/COPYING.LIB ! 1725818549b ./gcc/ChangeLog 1908191848b ./gcc/ChangeLog.0 1287222071b ./gcc/ChangeLog.1 3345586942b ./gcc/ChangeLog.2 *************** *** 309,332 **** 232745070b ./gcc/FSFChangeLog.10 2525829644b ./gcc/FSFChangeLog.11 2771840517b ./gcc/LANGUAGES ! 894770421b ./gcc/Makefile.in ! 298033763b ./gcc/NEWS 408114840b ./gcc/ONEWS 3310775363b ./gcc/README-fixinc 2741038711b ./gcc/README.Portability 1084935625b ./gcc/SERVICE 1319767072b ./gcc/acconfig.h ! 3422433972b ./gcc/aclocal.m4 888005559b ./gcc/alias.c 1470543567b ./gcc/basic-block.h 1630019981b ./gcc/bb-reorder.c 446912740b ./gcc/bitmap.c 1224669072b ./gcc/bitmap.h 4170845746b ./gcc/build-make ! 1983993938b ./gcc/builtins.c 3745012357b ./gcc/builtins.def 293598240b ./gcc/c-aux-info.c ! 754964024b ./gcc/c-common.c 858317341b ./gcc/c-common.def 651535970b ./gcc/c-common.h 530343767b ./gcc/c-convert.c --- 310,333 ---- 232745070b ./gcc/FSFChangeLog.10 2525829644b ./gcc/FSFChangeLog.11 2771840517b ./gcc/LANGUAGES ! 356107076b ./gcc/Makefile.in ! 1041751184b ./gcc/NEWS 408114840b ./gcc/ONEWS 3310775363b ./gcc/README-fixinc 2741038711b ./gcc/README.Portability 1084935625b ./gcc/SERVICE 1319767072b ./gcc/acconfig.h ! 986758660b ./gcc/aclocal.m4 888005559b ./gcc/alias.c 1470543567b ./gcc/basic-block.h 1630019981b ./gcc/bb-reorder.c 446912740b ./gcc/bitmap.c 1224669072b ./gcc/bitmap.h 4170845746b ./gcc/build-make ! 1766646758b ./gcc/builtins.c 3745012357b ./gcc/builtins.def 293598240b ./gcc/c-aux-info.c ! 115949369b ./gcc/c-common.c 858317341b ./gcc/c-common.def 651535970b ./gcc/c-common.h 530343767b ./gcc/c-convert.c *************** *** 338,360 **** 3040046848b ./gcc/c-lang.c 61530428b ./gcc/c-lex.c 916578687b ./gcc/c-lex.h ! 1529796766b ./gcc/c-parse.c 353343561b ./gcc/c-parse.in 1042264003b ./gcc/c-parse.y 220833347b ./gcc/c-pragma.c ! 1223300745b ./gcc/c-pragma.h 4251225764b ./gcc/c-semantics.c 1365281254b ./gcc/c-tree.h 4101225614b ./gcc/c-typeck.c 3240633480b ./gcc/caller-save.c ! 2658612213b ./gcc/calls.c 1002247553b ./gcc/collect2.c 972672658b ./gcc/collect2.h ! 3946982746b ./gcc/combine.c 1434596660b ./gcc/conditions.h ! 927050222b ./gcc/config.gcc 1315260558b ./gcc/config.guess ! 540835186b ./gcc/config.in 3329436298b ./gcc/config/1750a/1750a-protos.h 550533333b ./gcc/config/1750a/1750a.c 1762431589b ./gcc/config/1750a/1750a.h --- 339,361 ---- 3040046848b ./gcc/c-lang.c 61530428b ./gcc/c-lex.c 916578687b ./gcc/c-lex.h ! 3840276923b ./gcc/c-parse.c 353343561b ./gcc/c-parse.in 1042264003b ./gcc/c-parse.y 220833347b ./gcc/c-pragma.c ! 2111457647b ./gcc/c-pragma.h 4251225764b ./gcc/c-semantics.c 1365281254b ./gcc/c-tree.h 4101225614b ./gcc/c-typeck.c 3240633480b ./gcc/caller-save.c ! 1728509875b ./gcc/calls.c 1002247553b ./gcc/collect2.c 972672658b ./gcc/collect2.h ! 1330846505b ./gcc/combine.c 1434596660b ./gcc/conditions.h ! 715709234b ./gcc/config.gcc 1315260558b ./gcc/config.guess ! 2721129262b ./gcc/config.in 3329436298b ./gcc/config/1750a/1750a-protos.h 550533333b ./gcc/config/1750a/1750a.c 1762431589b ./gcc/config/1750a/1750a.h *************** *** 378,384 **** 886575345b ./gcc/config/a29k/xm-unix.h 2162061640b ./gcc/config/alpha/alpha-interix.h 6534706b ./gcc/config/alpha/alpha-protos.h ! 2125824726b ./gcc/config/alpha/alpha.c 1455720533b ./gcc/config/alpha/alpha.h 3129153843b ./gcc/config/alpha/alpha.md 1998454692b ./gcc/config/alpha/alpha32.h --- 379,385 ---- 886575345b ./gcc/config/a29k/xm-unix.h 2162061640b ./gcc/config/alpha/alpha-interix.h 6534706b ./gcc/config/alpha/alpha-protos.h ! 290663601b ./gcc/config/alpha/alpha.c 1455720533b ./gcc/config/alpha/alpha.h 3129153843b ./gcc/config/alpha/alpha.md 1998454692b ./gcc/config/alpha/alpha32.h *************** *** 394,400 **** 3777698255b ./gcc/config/alpha/netbsd-elf.h 560446968b ./gcc/config/alpha/netbsd.h 156117508b ./gcc/config/alpha/openbsd.h ! 3927251038b ./gcc/config/alpha/osf.h 1792826440b ./gcc/config/alpha/osf12.h 3744703656b ./gcc/config/alpha/osf2or3.h 2776242025b ./gcc/config/alpha/osf5.h --- 395,401 ---- 3777698255b ./gcc/config/alpha/netbsd-elf.h 560446968b ./gcc/config/alpha/netbsd.h 156117508b ./gcc/config/alpha/openbsd.h ! 915689720b ./gcc/config/alpha/osf.h 1792826440b ./gcc/config/alpha/osf12.h 3744703656b ./gcc/config/alpha/osf2or3.h 2776242025b ./gcc/config/alpha/osf5.h *************** *** 447,453 **** 2879384629b ./gcc/config/arm/riscix.h 3894425269b ./gcc/config/arm/riscix1-1.h 1910088041b ./gcc/config/arm/rix-gas.h ! 1726038923b ./gcc/config/arm/rtems-elf.h 1345878867b ./gcc/config/arm/semi.h 2333245964b ./gcc/config/arm/semiaof.h 3824844131b ./gcc/config/arm/strongarm-coff.h --- 448,454 ---- 2879384629b ./gcc/config/arm/riscix.h 3894425269b ./gcc/config/arm/riscix1-1.h 1910088041b ./gcc/config/arm/rix-gas.h ! 2909625271b ./gcc/config/arm/rtems-elf.h 1345878867b ./gcc/config/arm/semi.h 2333245964b ./gcc/config/arm/semiaof.h 3824844131b ./gcc/config/arm/strongarm-coff.h *************** *** 477,485 **** 1516433770b ./gcc/config/arm/xscale-coff.h 850423094b ./gcc/config/arm/xscale-elf.h 797696786b ./gcc/config/avr/avr-protos.h ! 673818817b ./gcc/config/avr/avr.c 2236743183b ./gcc/config/avr/avr.h ! 2230217975b ./gcc/config/avr/avr.md 1853285406b ./gcc/config/avr/libgcc.S 2584285546b ./gcc/config/avr/t-avr 2422120746b ./gcc/config/avr/xm-avr.h --- 478,486 ---- 1516433770b ./gcc/config/arm/xscale-coff.h 850423094b ./gcc/config/arm/xscale-elf.h 797696786b ./gcc/config/avr/avr-protos.h ! 474705185b ./gcc/config/avr/avr.c 2236743183b ./gcc/config/avr/avr.h ! 4228853051b ./gcc/config/avr/avr.md 1853285406b ./gcc/config/avr/libgcc.S 2584285546b ./gcc/config/avr/t-avr 2422120746b ./gcc/config/avr/xm-avr.h *************** *** 558,569 **** 3236013445b ./gcc/config/gnu.h 1556064359b ./gcc/config/gofast.h 1075730847b ./gcc/config/h8300/h8300-protos.h ! 2078365164b ./gcc/config/h8300/h8300.c 611827174b ./gcc/config/h8300/h8300.h 3834479452b ./gcc/config/h8300/h8300.md 2745378669b ./gcc/config/h8300/lib1funcs.asm 836948877b ./gcc/config/h8300/rtems.h ! 1911093065b ./gcc/config/h8300/t-h8300 2653746305b ./gcc/config/h8300/xm-h8300.h 2187046003b ./gcc/config/i370/README 2148254440b ./gcc/config/i370/i370-protos.h --- 559,570 ---- 3236013445b ./gcc/config/gnu.h 1556064359b ./gcc/config/gofast.h 1075730847b ./gcc/config/h8300/h8300-protos.h ! 2022601699b ./gcc/config/h8300/h8300.c 611827174b ./gcc/config/h8300/h8300.h 3834479452b ./gcc/config/h8300/h8300.md 2745378669b ./gcc/config/h8300/lib1funcs.asm 836948877b ./gcc/config/h8300/rtems.h ! 665527148b ./gcc/config/h8300/t-h8300 2653746305b ./gcc/config/h8300/xm-h8300.h 2187046003b ./gcc/config/i370/README 2148254440b ./gcc/config/i370/i370-protos.h *************** *** 599,605 **** 3055146333b ./gcc/config/i386/dgux.h 1570943831b ./gcc/config/i386/djgpp-rtems.h 1380903219b ./gcc/config/i386/djgpp.h ! 1048297186b ./gcc/config/i386/freebsd-aout.h 3878874905b ./gcc/config/i386/freebsd.h 1632002228b ./gcc/config/i386/gas.h 4266288971b ./gcc/config/i386/gmon-sol2.c --- 600,606 ---- 3055146333b ./gcc/config/i386/dgux.h 1570943831b ./gcc/config/i386/djgpp-rtems.h 1380903219b ./gcc/config/i386/djgpp.h ! 301916446b ./gcc/config/i386/freebsd-aout.h 3878874905b ./gcc/config/i386/freebsd.h 1632002228b ./gcc/config/i386/gas.h 4266288971b ./gcc/config/i386/gmon-sol2.c *************** *** 609,617 **** 3714536309b ./gcc/config/i386/i386-coff.h 1565496826b ./gcc/config/i386/i386-interix.h 1433006975b ./gcc/config/i386/i386-protos.h ! 2372699620b ./gcc/config/i386/i386.c ! 4031522535b ./gcc/config/i386/i386.h ! 2643777702b ./gcc/config/i386/i386.md 2138609268b ./gcc/config/i386/i386elf.h 2044371014b ./gcc/config/i386/interix.c 3245573839b ./gcc/config/i386/isc.h --- 610,618 ---- 3714536309b ./gcc/config/i386/i386-coff.h 1565496826b ./gcc/config/i386/i386-interix.h 1433006975b ./gcc/config/i386/i386-protos.h ! 1144347387b ./gcc/config/i386/i386.c ! 663612626b ./gcc/config/i386/i386.h ! 3655216872b ./gcc/config/i386/i386.md 2138609268b ./gcc/config/i386/i386elf.h 2044371014b ./gcc/config/i386/interix.c 3245573839b ./gcc/config/i386/isc.h *************** *** 628,634 **** 2913497186b ./gcc/config/i386/netbsd.h 4211562640b ./gcc/config/i386/netware.h 1904082784b ./gcc/config/i386/next.h ! 393495069b ./gcc/config/i386/openbsd.h 407886013b ./gcc/config/i386/os2.h 2999570618b ./gcc/config/i386/osf1-ci.asm 2303041887b ./gcc/config/i386/osf1-cn.asm --- 629,635 ---- 2913497186b ./gcc/config/i386/netbsd.h 4211562640b ./gcc/config/i386/netware.h 1904082784b ./gcc/config/i386/next.h ! 2316910802b ./gcc/config/i386/openbsd.h 407886013b ./gcc/config/i386/os2.h 2999570618b ./gcc/config/i386/osf1-ci.asm 2303041887b ./gcc/config/i386/osf1-cn.asm *************** *** 643,649 **** 1655058580b ./gcc/config/i386/sco.h 3672544994b ./gcc/config/i386/sco4.h 1608140239b ./gcc/config/i386/sco4dbx.h ! 2496686951b ./gcc/config/i386/sco5.h 544707575b ./gcc/config/i386/scodbx.h 2260828739b ./gcc/config/i386/seq-gas.h 2485377693b ./gcc/config/i386/seq-sysv3.h --- 644,650 ---- 1655058580b ./gcc/config/i386/sco.h 3672544994b ./gcc/config/i386/sco4.h 1608140239b ./gcc/config/i386/sco4dbx.h ! 4073321814b ./gcc/config/i386/sco5.h 544707575b ./gcc/config/i386/scodbx.h 2260828739b ./gcc/config/i386/seq-gas.h 2485377693b ./gcc/config/i386/seq-sysv3.h *************** *** 653,659 **** 1565106149b ./gcc/config/i386/sol2-ci.asm 4008317666b ./gcc/config/i386/sol2-cn.asm 2045686122b ./gcc/config/i386/sol2-gc1.asm ! 2849896107b ./gcc/config/i386/sol2.h 3870175252b ./gcc/config/i386/sol2gas.h 4009223163b ./gcc/config/i386/sun.h 1745602951b ./gcc/config/i386/sun386.h --- 654,660 ---- 1565106149b ./gcc/config/i386/sol2-ci.asm 4008317666b ./gcc/config/i386/sol2-cn.asm 2045686122b ./gcc/config/i386/sol2-gc1.asm ! 3461939003b ./gcc/config/i386/sol2.h 3870175252b ./gcc/config/i386/sol2gas.h 4009223163b ./gcc/config/i386/sun.h 1745602951b ./gcc/config/i386/sun386.h *************** *** 667,673 **** 2307182909b ./gcc/config/i386/t-beos 2437302600b ./gcc/config/i386/t-crtpic 2246944266b ./gcc/config/i386/t-crtstuff ! 3759654293b ./gcc/config/i386/t-cygwin 2849008235b ./gcc/config/i386/t-dgux 482628910b ./gcc/config/i386/t-djgpp 2949021345b ./gcc/config/i386/t-i386bare --- 668,674 ---- 2307182909b ./gcc/config/i386/t-beos 2437302600b ./gcc/config/i386/t-crtpic 2246944266b ./gcc/config/i386/t-crtstuff ! 1293787568b ./gcc/config/i386/t-cygwin 2849008235b ./gcc/config/i386/t-dgux 482628910b ./gcc/config/i386/t-djgpp 2949021345b ./gcc/config/i386/t-i386bare *************** *** 676,681 **** --- 677,683 ---- 4056914306b ./gcc/config/i386/t-mingw32 1294101962b ./gcc/config/i386/t-netware 3437455964b ./gcc/config/i386/t-next + 709063989b ./gcc/config/i386/t-openbsd 1186749595b ./gcc/config/i386/t-osf 1520459705b ./gcc/config/i386/t-osf1elf 2945147937b ./gcc/config/i386/t-rtems-i386 *************** *** 761,767 **** 257666960b ./gcc/config/i960/i960-coff.h 969698165b ./gcc/config/i960/i960-protos.h 3134927219b ./gcc/config/i960/i960.c ! 3415890728b ./gcc/config/i960/i960.h 302073607b ./gcc/config/i960/i960.md 2042390923b ./gcc/config/i960/rtems.h 649423259b ./gcc/config/i960/t-960bare --- 763,769 ---- 257666960b ./gcc/config/i960/i960-coff.h 969698165b ./gcc/config/i960/i960-protos.h 3134927219b ./gcc/config/i960/i960.c ! 2679588497b ./gcc/config/i960/i960.h 302073607b ./gcc/config/i960/i960.md 2042390923b ./gcc/config/i960/rtems.h 649423259b ./gcc/config/i960/t-960bare *************** *** 769,783 **** 3983766548b ./gcc/config/i960/vx960-coff.h 1895495318b ./gcc/config/i960/vx960.h 651274697b ./gcc/config/i960/xm-i960.h ! 1985080334b ./gcc/config/ia64/crtbegin.asm 1855415332b ./gcc/config/ia64/crtend.asm 3900706760b ./gcc/config/ia64/elf.h ! 2360999728b ./gcc/config/ia64/fde-glibc.c 3987815221b ./gcc/config/ia64/hpux.h 353921496b ./gcc/config/ia64/ia64-protos.h 1227923781b ./gcc/config/ia64/ia64.c ! 1804742155b ./gcc/config/ia64/ia64.h ! 1868028218b ./gcc/config/ia64/ia64.md 3051569292b ./gcc/config/ia64/ia64intrin.h 3488320870b ./gcc/config/ia64/lib1funcs.asm 2361471520b ./gcc/config/ia64/libgcc-ia64.ver --- 771,785 ---- 3983766548b ./gcc/config/i960/vx960-coff.h 1895495318b ./gcc/config/i960/vx960.h 651274697b ./gcc/config/i960/xm-i960.h ! 876649532b ./gcc/config/ia64/crtbegin.asm 1855415332b ./gcc/config/ia64/crtend.asm 3900706760b ./gcc/config/ia64/elf.h ! 2257162614b ./gcc/config/ia64/fde-glibc.c 3987815221b ./gcc/config/ia64/hpux.h 353921496b ./gcc/config/ia64/ia64-protos.h 1227923781b ./gcc/config/ia64/ia64.c ! 2598224474b ./gcc/config/ia64/ia64.h ! 102032371b ./gcc/config/ia64/ia64.md 3051569292b ./gcc/config/ia64/ia64intrin.h 3488320870b ./gcc/config/ia64/lib1funcs.asm 2361471520b ./gcc/config/ia64/libgcc-ia64.ver *************** *** 803,816 **** 304509363b ./gcc/config/m32r/m32r.md 699324061b ./gcc/config/m32r/t-m32r 505110414b ./gcc/config/m32r/xm-m32r.h ! 2223444330b ./gcc/config/m68hc11/larith.asm 3563849705b ./gcc/config/m68hc11/m68hc11-crt0.S 321124732b ./gcc/config/m68hc11/m68hc11-protos.h ! 2375330730b ./gcc/config/m68hc11/m68hc11.c ! 1980290975b ./gcc/config/m68hc11/m68hc11.h ! 898420326b ./gcc/config/m68hc11/m68hc11.md 3915866468b ./gcc/config/m68hc11/m68hc12.h ! 1125478939b ./gcc/config/m68hc11/t-m68hc11-gas 1569281943b ./gcc/config/m68hc11/xm-m68hc11.h 9689423b ./gcc/config/m68k/3b1.h 620759368b ./gcc/config/m68k/3b1g.h --- 805,818 ---- 304509363b ./gcc/config/m32r/m32r.md 699324061b ./gcc/config/m32r/t-m32r 505110414b ./gcc/config/m32r/xm-m32r.h ! 2629267148b ./gcc/config/m68hc11/larith.asm 3563849705b ./gcc/config/m68hc11/m68hc11-crt0.S 321124732b ./gcc/config/m68hc11/m68hc11-protos.h ! 4119290448b ./gcc/config/m68hc11/m68hc11.c ! 1307274545b ./gcc/config/m68hc11/m68hc11.h ! 535592980b ./gcc/config/m68hc11/m68hc11.md 3915866468b ./gcc/config/m68hc11/m68hc12.h ! 3238866738b ./gcc/config/m68hc11/t-m68hc11-gas 1569281943b ./gcc/config/m68hc11/xm-m68hc11.h 9689423b ./gcc/config/m68k/3b1.h 620759368b ./gcc/config/m68k/3b1g.h *************** *** 851,858 **** 3484500543b ./gcc/config/m68k/isi-nfp.h 3924901323b ./gcc/config/m68k/isi.h 2393398106b ./gcc/config/m68k/lb1sf68.asm ! 824150851b ./gcc/config/m68k/linux-aout.h ! 2514413827b ./gcc/config/m68k/linux.h 162996909b ./gcc/config/m68k/lynx-ng.h 3139650275b ./gcc/config/m68k/lynx.h 810585616b ./gcc/config/m68k/m68020-elf.h --- 853,860 ---- 3484500543b ./gcc/config/m68k/isi-nfp.h 3924901323b ./gcc/config/m68k/isi.h 2393398106b ./gcc/config/m68k/lb1sf68.asm ! 1977334448b ./gcc/config/m68k/linux-aout.h ! 3697403275b ./gcc/config/m68k/linux.h 162996909b ./gcc/config/m68k/lynx-ng.h 3139650275b ./gcc/config/m68k/lynx.h 810585616b ./gcc/config/m68k/m68020-elf.h *************** *** 861,869 **** 3855098247b ./gcc/config/m68k/m68k-none.h 3399395319b ./gcc/config/m68k/m68k-protos.h 2991007317b ./gcc/config/m68k/m68k-psos.h ! 521675563b ./gcc/config/m68k/m68k.c ! 2431560587b ./gcc/config/m68k/m68k.h ! 4259131422b ./gcc/config/m68k/m68k.md 342213590b ./gcc/config/m68k/m68kelf.h 3506718024b ./gcc/config/m68k/m68kemb.h 4069130220b ./gcc/config/m68k/m68kv4.h --- 863,871 ---- 3855098247b ./gcc/config/m68k/m68k-none.h 3399395319b ./gcc/config/m68k/m68k-protos.h 2991007317b ./gcc/config/m68k/m68k-psos.h ! 2929757075b ./gcc/config/m68k/m68k.c ! 1778306871b ./gcc/config/m68k/m68k.h ! 2207471422b ./gcc/config/m68k/m68k.md 342213590b ./gcc/config/m68k/m68kelf.h 3506718024b ./gcc/config/m68k/m68kemb.h 4069130220b ./gcc/config/m68k/m68kv4.h *************** *** 902,907 **** --- 904,910 ---- 2414955585b ./gcc/config/m68k/t-mot3300-gas 2294965883b ./gcc/config/m68k/t-mot3300-gld 249897538b ./gcc/config/m68k/t-next + 3937644742b ./gcc/config/m68k/t-openbsd 2967405432b ./gcc/config/m68k/t-vxworks68 3067739314b ./gcc/config/m68k/tower-as.h 1341630096b ./gcc/config/m68k/tower.h *************** *** 1004,1014 **** 4009674128b ./gcc/config/mips/iris3.h 3161243087b ./gcc/config/mips/iris4.h 2743944992b ./gcc/config/mips/iris4loser.h ! 3783096945b ./gcc/config/mips/iris5.h 3875094584b ./gcc/config/mips/iris5gas.h ! 762975181b ./gcc/config/mips/iris6.h 2607381948b ./gcc/config/mips/iris6gld.h ! 60156664b ./gcc/config/mips/linux.h 1257153673b ./gcc/config/mips/mips-5.h 3874587589b ./gcc/config/mips/mips-protos.h 3305871759b ./gcc/config/mips/mips.c --- 1007,1018 ---- 4009674128b ./gcc/config/mips/iris3.h 3161243087b ./gcc/config/mips/iris4.h 2743944992b ./gcc/config/mips/iris4loser.h ! 1274309488b ./gcc/config/mips/iris5.h 3875094584b ./gcc/config/mips/iris5gas.h ! 1945245383b ./gcc/config/mips/iris6.h 2607381948b ./gcc/config/mips/iris6gld.h ! 4258956066b ./gcc/config/mips/irix6-libc-compat.c ! 943017591b ./gcc/config/mips/linux.h 1257153673b ./gcc/config/mips/mips-5.h 3874587589b ./gcc/config/mips/mips-protos.h 3305871759b ./gcc/config/mips/mips.c *************** *** 1037,1043 **** 3490072647b ./gcc/config/mips/t-cross64 3126392274b ./gcc/config/mips/t-ecoff 3254374069b ./gcc/config/mips/t-elf ! 3961218184b ./gcc/config/mips/t-iris6 491943219b ./gcc/config/mips/t-mips 491943219b ./gcc/config/mips/t-mips-gas 491943219b ./gcc/config/mips/t-osfrose --- 1041,1047 ---- 3490072647b ./gcc/config/mips/t-cross64 3126392274b ./gcc/config/mips/t-ecoff 3254374069b ./gcc/config/mips/t-elf ! 991348745b ./gcc/config/mips/t-iris6 491943219b ./gcc/config/mips/t-mips 491943219b ./gcc/config/mips/t-mips-gas 491943219b ./gcc/config/mips/t-osfrose *************** *** 1074,1080 **** 1832400411b ./gcc/config/mn10200/mn10200.c 504726353b ./gcc/config/mn10200/mn10200.h 2020602808b ./gcc/config/mn10200/mn10200.md ! 420635432b ./gcc/config/mn10200/t-mn10200 4023523482b ./gcc/config/mn10200/xm-mn10200.h 2666234742b ./gcc/config/mn10300/mn10300-protos.h 430494059b ./gcc/config/mn10300/mn10300.c --- 1078,1084 ---- 1832400411b ./gcc/config/mn10200/mn10200.c 504726353b ./gcc/config/mn10200/mn10200.h 2020602808b ./gcc/config/mn10200/mn10200.md ! 4135411984b ./gcc/config/mn10200/t-mn10200 4023523482b ./gcc/config/mn10200/xm-mn10200.h 2666234742b ./gcc/config/mn10300/mn10300-protos.h 430494059b ./gcc/config/mn10300/mn10300.c *************** *** 1104,1110 **** 1809546469b ./gcc/config/ns32k/xm-netbsd.h 4010302330b ./gcc/config/ns32k/xm-ns32k.h 876936455b ./gcc/config/ns32k/xm-pc532-min.h ! 1005756043b ./gcc/config/openbsd.h 3202962647b ./gcc/config/pa/elf.h 1435423353b ./gcc/config/pa/lib1funcs.asm 1377366310b ./gcc/config/pa/lib2funcs.asm --- 1108,1114 ---- 1809546469b ./gcc/config/ns32k/xm-netbsd.h 4010302330b ./gcc/config/ns32k/xm-ns32k.h 876936455b ./gcc/config/ns32k/xm-pc532-min.h ! 92576225b ./gcc/config/openbsd.h 3202962647b ./gcc/config/pa/elf.h 1435423353b ./gcc/config/pa/lib1funcs.asm 1377366310b ./gcc/config/pa/lib2funcs.asm *************** *** 1187,1197 **** 3919710780b ./gcc/config/rs6000/lynx.h 1717863199b ./gcc/config/rs6000/mach.h 1820610909b ./gcc/config/rs6000/milli.exp ! 2280752475b ./gcc/config/rs6000/rs6000-protos.h ! 2313393542b ./gcc/config/rs6000/rs6000.c ! 4212486153b ./gcc/config/rs6000/rs6000.h ! 2662842953b ./gcc/config/rs6000/rs6000.md ! 2279396753b ./gcc/config/rs6000/rtems.h 4210977084b ./gcc/config/rs6000/sol-c0.c 1695016479b ./gcc/config/rs6000/sol-ci.asm 1927994766b ./gcc/config/rs6000/sol-cn.asm --- 1191,1201 ---- 3919710780b ./gcc/config/rs6000/lynx.h 1717863199b ./gcc/config/rs6000/mach.h 1820610909b ./gcc/config/rs6000/milli.exp ! 2609288545b ./gcc/config/rs6000/rs6000-protos.h ! 4126292778b ./gcc/config/rs6000/rs6000.c ! 1505319789b ./gcc/config/rs6000/rs6000.h ! 41571647b ./gcc/config/rs6000/rs6000.md ! 2636863004b ./gcc/config/rs6000/rtems.h 4210977084b ./gcc/config/rs6000/sol-c0.c 1695016479b ./gcc/config/rs6000/sol-ci.asm 1927994766b ./gcc/config/rs6000/sol-cn.asm *************** *** 1226,1231 **** --- 1230,1245 ---- 3676444310b ./gcc/config/rs6000/xm-rs6000.h 1451552425b ./gcc/config/rs6000/xm-sysv4.h 3895058198b ./gcc/config/rtems.h + 3390348482b ./gcc/config/s390/fixdfdi.h + 3456013752b ./gcc/config/s390/linux.h + 854043548b ./gcc/config/s390/linux64.h + 640221274b ./gcc/config/s390/s390-protos.h + 4149280158b ./gcc/config/s390/s390.c + 1921139648b ./gcc/config/s390/s390.h + 2541395328b ./gcc/config/s390/s390.md + 2251075592b ./gcc/config/s390/t-linux + 843019701b ./gcc/config/s390/xm-s390.h + 1662767015b ./gcc/config/s390/xm-s390x.h 3830594407b ./gcc/config/sh/crt1.asm 3104307092b ./gcc/config/sh/crti.asm 4096536650b ./gcc/config/sh/crtn.asm *************** *** 1235,1243 **** 2599163754b ./gcc/config/sh/rtems.h 990865180b ./gcc/config/sh/rtemself.h 2070405666b ./gcc/config/sh/sh-protos.h ! 902076945b ./gcc/config/sh/sh.c ! 3917221987b ./gcc/config/sh/sh.h ! 909150621b ./gcc/config/sh/sh.md 3555569248b ./gcc/config/sh/t-elf 1641673146b ./gcc/config/sh/t-linux 2851505400b ./gcc/config/sh/t-sh --- 1249,1257 ---- 2599163754b ./gcc/config/sh/rtems.h 990865180b ./gcc/config/sh/rtemself.h 2070405666b ./gcc/config/sh/sh-protos.h ! 2938981636b ./gcc/config/sh/sh.c ! 2550458827b ./gcc/config/sh/sh.h ! 3029807708b ./gcc/config/sh/sh.md 3555569248b ./gcc/config/sh/t-elf 1641673146b ./gcc/config/sh/t-linux 2851505400b ./gcc/config/sh/t-sh *************** *** 1259,1268 **** 3970301731b ./gcc/config/sparc/lynx-ng.h 4076055548b ./gcc/config/sparc/lynx.h 4227191410b ./gcc/config/sparc/netbsd.h ! 1127615452b ./gcc/config/sparc/openbsd.h 2511482476b ./gcc/config/sparc/pbd.h ! 3420292572b ./gcc/config/sparc/rtems.h ! 1929865834b ./gcc/config/sparc/rtemself.h 2777436121b ./gcc/config/sparc/sol2-64.h 1463670426b ./gcc/config/sparc/sol2-c1.asm 3288323690b ./gcc/config/sparc/sol2-ci.asm --- 1273,1282 ---- 3970301731b ./gcc/config/sparc/lynx-ng.h 4076055548b ./gcc/config/sparc/lynx.h 4227191410b ./gcc/config/sparc/netbsd.h ! 3588896900b ./gcc/config/sparc/openbsd.h 2511482476b ./gcc/config/sparc/pbd.h ! 3626711995b ./gcc/config/sparc/rtems.h ! 3335893347b ./gcc/config/sparc/rtemself.h 2777436121b ./gcc/config/sparc/sol2-64.h 1463670426b ./gcc/config/sparc/sol2-c1.asm 3288323690b ./gcc/config/sparc/sol2-ci.asm *************** *** 1277,1284 **** 1145591187b ./gcc/config/sparc/sp86x-elf.h 3513225184b ./gcc/config/sparc/sparc-protos.h 2857592585b ./gcc/config/sparc/sparc.c ! 2689760442b ./gcc/config/sparc/sparc.h ! 3462597036b ./gcc/config/sparc/sparc.md 113090716b ./gcc/config/sparc/splet.h 3035335612b ./gcc/config/sparc/sun4gas.h 3455486806b ./gcc/config/sparc/sun4o3.h --- 1291,1298 ---- 1145591187b ./gcc/config/sparc/sp86x-elf.h 3513225184b ./gcc/config/sparc/sparc-protos.h 2857592585b ./gcc/config/sparc/sparc.c ! 3958437963b ./gcc/config/sparc/sparc.h ! 2064414952b ./gcc/config/sparc/sparc.md 113090716b ./gcc/config/sparc/splet.h 3035335612b ./gcc/config/sparc/sun4gas.h 3455486806b ./gcc/config/sparc/sun4o3.h *************** *** 1288,1293 **** --- 1302,1308 ---- 2616142394b ./gcc/config/sparc/t-elf 1582758741b ./gcc/config/sparc/t-halos 3089985973b ./gcc/config/sparc/t-linux64 + 1190032917b ./gcc/config/sparc/t-openbsd 1215655583b ./gcc/config/sparc/t-sol2 3160382849b ./gcc/config/sparc/t-sol2-64 1887691100b ./gcc/config/sparc/t-sp64 *************** *** 1319,1324 **** --- 1334,1340 ---- 2512129728b ./gcc/config/t-gnu 3050012299b ./gcc/config/t-install-cpp 64239056b ./gcc/config/t-libc-ok + 2753685882b ./gcc/config/t-libgcc-pic 3735725807b ./gcc/config/t-linux 4067850389b ./gcc/config/t-linux-aout 4111896717b ./gcc/config/t-linux-gnulibc1 *************** *** 1338,1344 **** 3289228637b ./gcc/config/v850/t-v850 2277307708b ./gcc/config/v850/v850-c.c 4194174891b ./gcc/config/v850/v850-protos.h ! 2923238779b ./gcc/config/v850/v850.c 2015084960b ./gcc/config/v850/v850.h 2952263546b ./gcc/config/v850/v850.md 1862842141b ./gcc/config/v850/xm-v850.h --- 1354,1360 ---- 3289228637b ./gcc/config/v850/t-v850 2277307708b ./gcc/config/v850/v850-c.c 4194174891b ./gcc/config/v850/v850-protos.h ! 3586695901b ./gcc/config/v850/v850.c 2015084960b ./gcc/config/v850/v850.h 2952263546b ./gcc/config/v850/v850.md 1862842141b ./gcc/config/v850/xm-v850.h *************** *** 1378,1438 **** 3697539901b ./gcc/config/xm-std32.h 4091214272b ./gcc/config/xm-svr3.h 3741840130b ./gcc/config/xm-svr4.h ! 1567946887b ./gcc/configure 3600082583b ./gcc/configure.frag ! 1359594426b ./gcc/configure.in 3394568616b ./gcc/conflict.c 556313302b ./gcc/convert.c 4032982380b ./gcc/convert.h 1230086821b ./gcc/cp/.cvsignore ! 2767021203b ./gcc/cp/ChangeLog 1903584b ./gcc/cp/ChangeLog.1 1881731020b ./gcc/cp/ChangeLog.2 2546444747b ./gcc/cp/ChangeLog.egcs ! 2803706434b ./gcc/cp/Make-lang.in ! 4181713997b ./gcc/cp/NEWS ! 1030044044b ./gcc/cp/call.c 4115552602b ./gcc/cp/cfns.gperf 1705070232b ./gcc/cp/cfns.h ! 2719775278b ./gcc/cp/class.c 1920345452b ./gcc/cp/config-lang.in 3406340479b ./gcc/cp/cp-tree.def ! 4046209358b ./gcc/cp/cp-tree.h ! 2644297654b ./gcc/cp/cvt.c ! 3096903153b ./gcc/cp/decl.c 1027981985b ./gcc/cp/decl.h ! 3553404977b ./gcc/cp/decl2.c 217522872b ./gcc/cp/dump.c 3091430199b ./gcc/cp/errfn.c 3740657327b ./gcc/cp/error.c ! 121040647b ./gcc/cp/except.c ! 118974200b ./gcc/cp/expr.c 1673698151b ./gcc/cp/friend.c 1574667259b ./gcc/cp/g++.1 958770625b ./gcc/cp/g++spec.c 909786423b ./gcc/cp/init.c ! 1259668850b ./gcc/cp/lang-options.h 1106559236b ./gcc/cp/lang-specs.h 3458231555b ./gcc/cp/lex.c 1080237442b ./gcc/cp/lex.h 2689785615b ./gcc/cp/mangle.c ! 964206497b ./gcc/cp/method.c 701335209b ./gcc/cp/mpw-config.in 4041177245b ./gcc/cp/mpw-make.sed 1791576125b ./gcc/cp/operators.def 3678445539b ./gcc/cp/optimize.c ! 348619331b ./gcc/cp/parse.c 4085964132b ./gcc/cp/parse.h 1879411084b ./gcc/cp/parse.y ! 3205334520b ./gcc/cp/pt.c 903594734b ./gcc/cp/ptree.c 1890655336b ./gcc/cp/repo.c 3470529425b ./gcc/cp/rtti.c 696207784b ./gcc/cp/search.c ! 2514806824b ./gcc/cp/semantics.c ! 3057733644b ./gcc/cp/spew.c 91515646b ./gcc/cp/tree.c ! 4110885463b ./gcc/cp/typeck.c 3459487995b ./gcc/cp/typeck2.c 1359529404b ./gcc/cp/xref.c 4198030259b ./gcc/cppdefault.c --- 1394,1454 ---- 3697539901b ./gcc/config/xm-std32.h 4091214272b ./gcc/config/xm-svr3.h 3741840130b ./gcc/config/xm-svr4.h ! 3218574372b ./gcc/configure 3600082583b ./gcc/configure.frag ! 2309352480b ./gcc/configure.in 3394568616b ./gcc/conflict.c 556313302b ./gcc/convert.c 4032982380b ./gcc/convert.h 1230086821b ./gcc/cp/.cvsignore ! 1456544739b ./gcc/cp/ChangeLog 1903584b ./gcc/cp/ChangeLog.1 1881731020b ./gcc/cp/ChangeLog.2 2546444747b ./gcc/cp/ChangeLog.egcs ! 615847120b ./gcc/cp/Make-lang.in ! 846059250b ./gcc/cp/NEWS ! 1310742131b ./gcc/cp/call.c 4115552602b ./gcc/cp/cfns.gperf 1705070232b ./gcc/cp/cfns.h ! 3936615852b ./gcc/cp/class.c 1920345452b ./gcc/cp/config-lang.in 3406340479b ./gcc/cp/cp-tree.def ! 2682469958b ./gcc/cp/cp-tree.h ! 788167684b ./gcc/cp/cvt.c ! 1404777217b ./gcc/cp/decl.c 1027981985b ./gcc/cp/decl.h ! 2529358069b ./gcc/cp/decl2.c 217522872b ./gcc/cp/dump.c 3091430199b ./gcc/cp/errfn.c 3740657327b ./gcc/cp/error.c ! 374515501b ./gcc/cp/except.c ! 764912804b ./gcc/cp/expr.c 1673698151b ./gcc/cp/friend.c 1574667259b ./gcc/cp/g++.1 958770625b ./gcc/cp/g++spec.c 909786423b ./gcc/cp/init.c ! 2002469304b ./gcc/cp/lang-options.h 1106559236b ./gcc/cp/lang-specs.h 3458231555b ./gcc/cp/lex.c 1080237442b ./gcc/cp/lex.h 2689785615b ./gcc/cp/mangle.c ! 419660916b ./gcc/cp/method.c 701335209b ./gcc/cp/mpw-config.in 4041177245b ./gcc/cp/mpw-make.sed 1791576125b ./gcc/cp/operators.def 3678445539b ./gcc/cp/optimize.c ! 3051645323b ./gcc/cp/parse.c 4085964132b ./gcc/cp/parse.h 1879411084b ./gcc/cp/parse.y ! 2874107554b ./gcc/cp/pt.c 903594734b ./gcc/cp/ptree.c 1890655336b ./gcc/cp/repo.c 3470529425b ./gcc/cp/rtti.c 696207784b ./gcc/cp/search.c ! 2381646409b ./gcc/cp/semantics.c ! 1818467654b ./gcc/cp/spew.c 91515646b ./gcc/cp/tree.c ! 3390967551b ./gcc/cp/typeck.c 3459487995b ./gcc/cp/typeck2.c 1359529404b ./gcc/cp/xref.c 4198030259b ./gcc/cppdefault.c *************** *** 1443,1533 **** 3904470681b ./gcc/cpphash.c 1641754935b ./gcc/cpphash.h 2491140484b ./gcc/cppinit.c ! 1667158191b ./gcc/cpplex.c ! 1824333310b ./gcc/cpplib.c 3400544410b ./gcc/cpplib.h ! 3109648406b ./gcc/cppmacro.c 373762755b ./gcc/cppmain.c 4137262150b ./gcc/cppspec.c 2903740050b ./gcc/cross-make 1363172067b ./gcc/crtstuff.c ! 3883450779b ./gcc/cse.c 1864237584b ./gcc/cselib.h 216805921b ./gcc/cstamp-h.in 3098946745b ./gcc/dbxout.c 181061183b ./gcc/dbxout.h 1104788844b ./gcc/dbxstclass.h 2469057166b ./gcc/dce.c ! 1481772946b ./gcc/defaults.h 2226328701b ./gcc/dependence.c 4065269356b ./gcc/diagnostic.c 2207352912b ./gcc/diagnostic.h 890851034b ./gcc/doc/.cvsignore ! 183426350b ./gcc/doc/c-tree.texi ! 2804956321b ./gcc/doc/contrib.texi ! 409271999b ./gcc/doc/cpp.1 ! 889129844b ./gcc/doc/cpp.info ! 2332008724b ./gcc/doc/cpp.info-1 ! 3665132692b ./gcc/doc/cpp.info-2 ! 711343276b ./gcc/doc/cpp.info-3 ! 3239676280b ./gcc/doc/cpp.info-4 ! 2888038442b ./gcc/doc/cpp.texi ! 2023568123b ./gcc/doc/cppinternals.info ! 989690387b ./gcc/doc/cppinternals.texi ! 1313341922b ./gcc/doc/extend.texi ! 1008218839b ./gcc/doc/fdl.texi ! 943066314b ./gcc/doc/gcc.1 ! 1911134043b ./gcc/doc/gcc.info ! 518676450b ./gcc/doc/gcc.info-1 ! 839104615b ./gcc/doc/gcc.info-10 ! 870877309b ./gcc/doc/gcc.info-11 ! 3990880836b ./gcc/doc/gcc.info-12 ! 2355349101b ./gcc/doc/gcc.info-13 ! 347037538b ./gcc/doc/gcc.info-14 ! 3315905567b ./gcc/doc/gcc.info-15 ! 1406109907b ./gcc/doc/gcc.info-16 ! 954351188b ./gcc/doc/gcc.info-17 ! 3188018276b ./gcc/doc/gcc.info-18 ! 859080395b ./gcc/doc/gcc.info-19 ! 1729295920b ./gcc/doc/gcc.info-2 ! 3671295723b ./gcc/doc/gcc.info-20 ! 3045419293b ./gcc/doc/gcc.info-21 ! 4130794352b ./gcc/doc/gcc.info-22 ! 4147631695b ./gcc/doc/gcc.info-23 ! 3297190284b ./gcc/doc/gcc.info-24 ! 1366639731b ./gcc/doc/gcc.info-25 735287455b ./gcc/doc/gcc.info-26 ! 1987648734b ./gcc/doc/gcc.info-27 ! 3159668948b ./gcc/doc/gcc.info-28 ! 646547974b ./gcc/doc/gcc.info-29 ! 4126399120b ./gcc/doc/gcc.info-3 ! 2685676763b ./gcc/doc/gcc.info-30 ! 3916734617b ./gcc/doc/gcc.info-31 ! 2959984157b ./gcc/doc/gcc.info-32 ! 724189298b ./gcc/doc/gcc.info-33 ! 2519660629b ./gcc/doc/gcc.info-34 ! 2263568983b ./gcc/doc/gcc.info-35 ! 1542837359b ./gcc/doc/gcc.info-36 ! 368821868b ./gcc/doc/gcc.info-37 ! 4045307240b ./gcc/doc/gcc.info-38 ! 256280613b ./gcc/doc/gcc.info-4 ! 3438311541b ./gcc/doc/gcc.info-5 ! 3275734139b ./gcc/doc/gcc.info-6 ! 365343764b ./gcc/doc/gcc.info-7 ! 3542229941b ./gcc/doc/gcc.info-8 ! 4144597579b ./gcc/doc/gcc.info-9 ! 2786906619b ./gcc/doc/gcc.texi ! 2957845139b ./gcc/doc/gcov.1 ! 3721190903b ./gcc/doc/gcov.texi ! 2809728324b ./gcc/doc/install-old.texi ! 1710396616b ./gcc/doc/install.texi 3260938793b ./gcc/doc/install.texi2html ! 2768559862b ./gcc/doc/invoke.texi ! 3633827104b ./gcc/doc/md.texi ! 3836082553b ./gcc/doc/objc.texi ! 3771912542b ./gcc/doc/rtl.texi ! 4016541318b ./gcc/doc/texinfo.tex ! 2117823836b ./gcc/doc/tm.texi 472588828b ./gcc/doloop.c 123944430b ./gcc/dominance.c 2660216905b ./gcc/doprint.c --- 1459,1551 ---- 3904470681b ./gcc/cpphash.c 1641754935b ./gcc/cpphash.h 2491140484b ./gcc/cppinit.c ! 352253678b ./gcc/cpplex.c ! 512859427b ./gcc/cpplib.c 3400544410b ./gcc/cpplib.h ! 1284813508b ./gcc/cppmacro.c 373762755b ./gcc/cppmain.c 4137262150b ./gcc/cppspec.c 2903740050b ./gcc/cross-make 1363172067b ./gcc/crtstuff.c ! 2946810917b ./gcc/cse.c 1864237584b ./gcc/cselib.h 216805921b ./gcc/cstamp-h.in 3098946745b ./gcc/dbxout.c 181061183b ./gcc/dbxout.h 1104788844b ./gcc/dbxstclass.h 2469057166b ./gcc/dce.c ! 3555308222b ./gcc/defaults.h 2226328701b ./gcc/dependence.c 4065269356b ./gcc/diagnostic.c 2207352912b ./gcc/diagnostic.h 890851034b ./gcc/doc/.cvsignore ! 4124442826b ./gcc/doc/c-tree.texi ! 3680358381b ./gcc/doc/contrib.texi ! 1311187294b ./gcc/doc/cpp.1 ! 1331953370b ./gcc/doc/cpp.info ! 803760277b ./gcc/doc/cpp.info-1 ! 3665332888b ./gcc/doc/cpp.info-2 ! 3052985070b ./gcc/doc/cpp.info-3 ! 999296888b ./gcc/doc/cpp.info-4 ! 827033126b ./gcc/doc/cpp.texi ! 3141595163b ./gcc/doc/cppinternals.info ! 1445289518b ./gcc/doc/cppinternals.texi ! 2091691828b ./gcc/doc/extend.texi ! 4147779460b ./gcc/doc/gcc.1 ! 3026358753b ./gcc/doc/gcc.info ! 44556827b ./gcc/doc/gcc.info-1 ! 1412220606b ./gcc/doc/gcc.info-10 ! 3943813356b ./gcc/doc/gcc.info-11 ! 418964136b ./gcc/doc/gcc.info-12 ! 4008064171b ./gcc/doc/gcc.info-13 ! 1648213693b ./gcc/doc/gcc.info-14 ! 588011301b ./gcc/doc/gcc.info-15 ! 1754573484b ./gcc/doc/gcc.info-16 ! 3930539567b ./gcc/doc/gcc.info-17 ! 2226344020b ./gcc/doc/gcc.info-18 ! 2417116799b ./gcc/doc/gcc.info-19 ! 3001818438b ./gcc/doc/gcc.info-2 ! 428958887b ./gcc/doc/gcc.info-20 ! 525664717b ./gcc/doc/gcc.info-21 ! 1348937332b ./gcc/doc/gcc.info-22 ! 2619556996b ./gcc/doc/gcc.info-23 ! 1362771598b ./gcc/doc/gcc.info-24 ! 3470688996b ./gcc/doc/gcc.info-25 735287455b ./gcc/doc/gcc.info-26 ! 3209657202b ./gcc/doc/gcc.info-27 ! 1582307263b ./gcc/doc/gcc.info-28 ! 525340619b ./gcc/doc/gcc.info-29 ! 4095656035b ./gcc/doc/gcc.info-3 ! 1331327086b ./gcc/doc/gcc.info-30 ! 3864158157b ./gcc/doc/gcc.info-31 ! 1139465841b ./gcc/doc/gcc.info-32 ! 1565524835b ./gcc/doc/gcc.info-33 ! 278600549b ./gcc/doc/gcc.info-34 ! 3348688145b ./gcc/doc/gcc.info-35 ! 1797713626b ./gcc/doc/gcc.info-36 ! 347664857b ./gcc/doc/gcc.info-37 ! 2743624506b ./gcc/doc/gcc.info-38 ! 701354272b ./gcc/doc/gcc.info-4 ! 352877010b ./gcc/doc/gcc.info-5 ! 979705408b ./gcc/doc/gcc.info-6 ! 1295006596b ./gcc/doc/gcc.info-7 ! 713760857b ./gcc/doc/gcc.info-8 ! 102742701b ./gcc/doc/gcc.info-9 ! 528909035b ./gcc/doc/gcc.texi ! 4138844617b ./gcc/doc/gcov.1 ! 2764453786b ./gcc/doc/gcov.texi ! 1008218839b ./gcc/doc/include/fdl.texi ! 3383701708b ./gcc/doc/include/funding.texi ! 423212962b ./gcc/doc/include/gpl.texi ! 4016541318b ./gcc/doc/include/texinfo.tex ! 2393405651b ./gcc/doc/install-old.texi ! 824388918b ./gcc/doc/install.texi 3260938793b ./gcc/doc/install.texi2html ! 109423404b ./gcc/doc/invoke.texi ! 135097364b ./gcc/doc/md.texi ! 2542227198b ./gcc/doc/objc.texi ! 326027164b ./gcc/doc/rtl.texi ! 548246333b ./gcc/doc/tm.texi 472588828b ./gcc/doloop.c 123944430b ./gcc/dominance.c 2660216905b ./gcc/doprint.c *************** *** 1538,1563 **** 369471853b ./gcc/dwarf2.h 1793399413b ./gcc/dwarf2asm.c 3481577918b ./gcc/dwarf2asm.h ! 1488160616b ./gcc/dwarf2out.c 907111294b ./gcc/dwarf2out.h ! 754816355b ./gcc/dwarfout.c 1589660034b ./gcc/dwarfout.h 883158504b ./gcc/emit-rtl.c 626897841b ./gcc/enquire.c 3097048689b ./gcc/errors.c 3948305090b ./gcc/errors.h ! 584881204b ./gcc/except.c ! 564264302b ./gcc/except.h 3470052574b ./gcc/exgettext 1523181895b ./gcc/explow.c 1640629260b ./gcc/expmed.c ! 1225397931b ./gcc/expr.c 3169905778b ./gcc/expr.h 2920655732b ./gcc/f/.cvsignore 496151338b ./gcc/f/BUGS ! 820287265b ./gcc/f/ChangeLog 4225493150b ./gcc/f/ChangeLog.0 ! 1218727499b ./gcc/f/Make-lang.in 4163515796b ./gcc/f/NEWS 281424983b ./gcc/f/README 3295584012b ./gcc/f/RELEASE-PREP --- 1556,1581 ---- 369471853b ./gcc/dwarf2.h 1793399413b ./gcc/dwarf2asm.c 3481577918b ./gcc/dwarf2asm.h ! 3378597493b ./gcc/dwarf2out.c 907111294b ./gcc/dwarf2out.h ! 1291353303b ./gcc/dwarfout.c 1589660034b ./gcc/dwarfout.h 883158504b ./gcc/emit-rtl.c 626897841b ./gcc/enquire.c 3097048689b ./gcc/errors.c 3948305090b ./gcc/errors.h ! 2201789247b ./gcc/except.c ! 3751320921b ./gcc/except.h 3470052574b ./gcc/exgettext 1523181895b ./gcc/explow.c 1640629260b ./gcc/expmed.c ! 2323165388b ./gcc/expr.c 3169905778b ./gcc/expr.h 2920655732b ./gcc/f/.cvsignore 496151338b ./gcc/f/BUGS ! 3373181774b ./gcc/f/ChangeLog 4225493150b ./gcc/f/ChangeLog.0 ! 1959441375b ./gcc/f/Make-lang.in 4163515796b ./gcc/f/NEWS 281424983b ./gcc/f/README 3295584012b ./gcc/f/RELEASE-PREP *************** *** 1585,1613 **** 4228142157b ./gcc/f/ffe.texi 4039257523b ./gcc/f/fini.c 3733092107b ./gcc/f/g77.1 ! 241163137b ./gcc/f/g77.info ! 2896893254b ./gcc/f/g77.info-1 ! 1622844863b ./gcc/f/g77.info-10 ! 3834817610b ./gcc/f/g77.info-11 ! 4070511737b ./gcc/f/g77.info-12 ! 3423337276b ./gcc/f/g77.info-13 ! 3036236739b ./gcc/f/g77.info-14 ! 3936680485b ./gcc/f/g77.info-15 ! 2996298712b ./gcc/f/g77.info-16 ! 383139042b ./gcc/f/g77.info-17 ! 989725124b ./gcc/f/g77.info-18 ! 3819560121b ./gcc/f/g77.info-19 ! 4234287430b ./gcc/f/g77.info-2 ! 3490219084b ./gcc/f/g77.info-20 ! 1704924576b ./gcc/f/g77.info-21 ! 1313977121b ./gcc/f/g77.info-3 ! 2387683816b ./gcc/f/g77.info-4 ! 1299893292b ./gcc/f/g77.info-5 ! 2387686869b ./gcc/f/g77.info-6 ! 3321447282b ./gcc/f/g77.info-7 ! 3424539201b ./gcc/f/g77.info-8 ! 87243994b ./gcc/f/g77.info-9 ! 4025159766b ./gcc/f/g77.texi 908822112b ./gcc/f/g77install.texi 2350422564b ./gcc/f/g77spec.c 1736110997b ./gcc/f/global.c --- 1603,1631 ---- 4228142157b ./gcc/f/ffe.texi 4039257523b ./gcc/f/fini.c 3733092107b ./gcc/f/g77.1 ! 2516470554b ./gcc/f/g77.info ! 2715588042b ./gcc/f/g77.info-1 ! 1102432768b ./gcc/f/g77.info-10 ! 1616293807b ./gcc/f/g77.info-11 ! 3795023208b ./gcc/f/g77.info-12 ! 3519051234b ./gcc/f/g77.info-13 ! 1552768627b ./gcc/f/g77.info-14 ! 1960100262b ./gcc/f/g77.info-15 ! 164148332b ./gcc/f/g77.info-16 ! 467035421b ./gcc/f/g77.info-17 ! 3347439222b ./gcc/f/g77.info-18 ! 4037002258b ./gcc/f/g77.info-19 ! 3318968689b ./gcc/f/g77.info-2 ! 3405824903b ./gcc/f/g77.info-20 ! 2060286223b ./gcc/f/g77.info-21 ! 2778233086b ./gcc/f/g77.info-3 ! 2427118973b ./gcc/f/g77.info-4 ! 4200013360b ./gcc/f/g77.info-5 ! 2522641008b ./gcc/f/g77.info-6 ! 87613785b ./gcc/f/g77.info-7 ! 3338319587b ./gcc/f/g77.info-8 ! 2783591220b ./gcc/f/g77.info-9 ! 4105631864b ./gcc/f/g77.texi 908822112b ./gcc/f/g77install.texi 2350422564b ./gcc/f/g77spec.c 1736110997b ./gcc/f/global.c *************** *** 1682,1693 **** 1323122026b ./gcc/f/symbol.def 4185634583b ./gcc/f/symbol.h 2744008879b ./gcc/f/target.c ! 3449489563b ./gcc/f/target.h ! 4215788723b ./gcc/f/top.c 4257635887b ./gcc/f/top.h 3443401298b ./gcc/f/type.c 1269043734b ./gcc/f/type.h ! 1156606720b ./gcc/f/version.c 1880947867b ./gcc/f/version.h 3584291506b ./gcc/f/where.c 422122823b ./gcc/f/where.h --- 1700,1711 ---- 1323122026b ./gcc/f/symbol.def 4185634583b ./gcc/f/symbol.h 2744008879b ./gcc/f/target.c ! 2888576815b ./gcc/f/target.h ! 3965009956b ./gcc/f/top.c 4257635887b ./gcc/f/top.h 3443401298b ./gcc/f/type.c 1269043734b ./gcc/f/type.h ! 1656514385b ./gcc/f/version.c 1880947867b ./gcc/f/version.h 3584291506b ./gcc/f/where.c 422122823b ./gcc/f/where.h *************** *** 1695,1722 **** 3904468581b ./gcc/fix-header.c 3884502794b ./gcc/fixinc/Makefile.in 2351321356b ./gcc/fixinc/README ! 433197538b ./gcc/fixinc/check.tpl ! 3999542363b ./gcc/fixinc/fixfixes.c 3110054233b ./gcc/fixinc/fixinc.dgux 15758129b ./gcc/fixinc/fixinc.interix 1474597097b ./gcc/fixinc/fixinc.ptx 1901674452b ./gcc/fixinc/fixinc.svr4 2193207840b ./gcc/fixinc/fixinc.winnt 1439814780b ./gcc/fixinc/fixinc.wrap ! 2906960178b ./gcc/fixinc/fixincl.c 4214658264b ./gcc/fixinc/fixincl.sh ! 221292981b ./gcc/fixinc/fixincl.tpl ! 1313419292b ./gcc/fixinc/fixincl.x 1372603529b ./gcc/fixinc/fixlib.c ! 1143765881b ./gcc/fixinc/fixlib.h 4013194329b ./gcc/fixinc/fixtests.c 2003329934b ./gcc/fixinc/genfixes 3680461708b ./gcc/fixinc/gnu-regex.c 1403987073b ./gcc/fixinc/gnu-regex.h ! 1935697826b ./gcc/fixinc/inclhack.def 1662855861b ./gcc/fixinc/mkfixinc.sh 3901871541b ./gcc/fixinc/procopen.c ! 3469897683b ./gcc/fixinc/server.c 2895407134b ./gcc/fixinc/server.h 1516247519b ./gcc/fixinc/tests/base/X11/Intrinsic.h 2715935838b ./gcc/fixinc/tests/base/X11/ShellP.h --- 1713,1740 ---- 3904468581b ./gcc/fix-header.c 3884502794b ./gcc/fixinc/Makefile.in 2351321356b ./gcc/fixinc/README ! 2497636676b ./gcc/fixinc/check.tpl ! 2400562783b ./gcc/fixinc/fixfixes.c 3110054233b ./gcc/fixinc/fixinc.dgux 15758129b ./gcc/fixinc/fixinc.interix 1474597097b ./gcc/fixinc/fixinc.ptx 1901674452b ./gcc/fixinc/fixinc.svr4 2193207840b ./gcc/fixinc/fixinc.winnt 1439814780b ./gcc/fixinc/fixinc.wrap ! 2436281382b ./gcc/fixinc/fixincl.c 4214658264b ./gcc/fixinc/fixincl.sh ! 2178021789b ./gcc/fixinc/fixincl.tpl ! 1313142376b ./gcc/fixinc/fixincl.x 1372603529b ./gcc/fixinc/fixlib.c ! 971233728b ./gcc/fixinc/fixlib.h 4013194329b ./gcc/fixinc/fixtests.c 2003329934b ./gcc/fixinc/genfixes 3680461708b ./gcc/fixinc/gnu-regex.c 1403987073b ./gcc/fixinc/gnu-regex.h ! 726275978b ./gcc/fixinc/inclhack.def 1662855861b ./gcc/fixinc/mkfixinc.sh 3901871541b ./gcc/fixinc/procopen.c ! 1750379031b ./gcc/fixinc/server.c 2895407134b ./gcc/fixinc/server.h 1516247519b ./gcc/fixinc/tests/base/X11/Intrinsic.h 2715935838b ./gcc/fixinc/tests/base/X11/ShellP.h *************** *** 1726,1732 **** 1165473466b ./gcc/fixinc/tests/base/ansi/math.h 3124694417b ./gcc/fixinc/tests/base/ansi/stdlib.h 2980092932b ./gcc/fixinc/tests/base/arch/i960/archI960.h ! 4268929430b ./gcc/fixinc/tests/base/arpa/inet.h 2535365837b ./gcc/fixinc/tests/base/assert.h 3220984809b ./gcc/fixinc/tests/base/bsd/libc.h 1799847368b ./gcc/fixinc/tests/base/c_asm.h --- 1744,1750 ---- 1165473466b ./gcc/fixinc/tests/base/ansi/math.h 3124694417b ./gcc/fixinc/tests/base/ansi/stdlib.h 2980092932b ./gcc/fixinc/tests/base/arch/i960/archI960.h ! 1062137968b ./gcc/fixinc/tests/base/arpa/inet.h 2535365837b ./gcc/fixinc/tests/base/assert.h 3220984809b ./gcc/fixinc/tests/base/bsd/libc.h 1799847368b ./gcc/fixinc/tests/base/c_asm.h *************** *** 1740,1750 **** 2670651204b ./gcc/fixinc/tests/base/libgen.h 1854625388b ./gcc/fixinc/tests/base/machine/cpu.h 114078425b ./gcc/fixinc/tests/base/malloc.h ! 1955826929b ./gcc/fixinc/tests/base/math.h 2373596333b ./gcc/fixinc/tests/base/netdnet/dnetdb.h 4211518276b ./gcc/fixinc/tests/base/netinet/ip.h 3107111098b ./gcc/fixinc/tests/base/pixrect/memvar.h ! 382661683b ./gcc/fixinc/tests/base/pthread.h 351364386b ./gcc/fixinc/tests/base/reg_types.h 2876721819b ./gcc/fixinc/tests/base/regex.h 2249464053b ./gcc/fixinc/tests/base/rpc/auth.h --- 1758,1768 ---- 2670651204b ./gcc/fixinc/tests/base/libgen.h 1854625388b ./gcc/fixinc/tests/base/machine/cpu.h 114078425b ./gcc/fixinc/tests/base/malloc.h ! 575808734b ./gcc/fixinc/tests/base/math.h 2373596333b ./gcc/fixinc/tests/base/netdnet/dnetdb.h 4211518276b ./gcc/fixinc/tests/base/netinet/ip.h 3107111098b ./gcc/fixinc/tests/base/pixrect/memvar.h ! 634408265b ./gcc/fixinc/tests/base/pthread.h 351364386b ./gcc/fixinc/tests/base/reg_types.h 2876721819b ./gcc/fixinc/tests/base/regex.h 2249464053b ./gcc/fixinc/tests/base/rpc/auth.h *************** *** 1754,1761 **** 1831085175b ./gcc/fixinc/tests/base/rpcsvc/rstat.h 2162639252b ./gcc/fixinc/tests/base/rpcsvc/rusers.h 135186565b ./gcc/fixinc/tests/base/sparc/asm_linkage.h ! 3672977850b ./gcc/fixinc/tests/base/stdio.h ! 4177211172b ./gcc/fixinc/tests/base/stdlib.h 2941232612b ./gcc/fixinc/tests/base/strings.h 482468002b ./gcc/fixinc/tests/base/sundev/vuid_event.h 1807434691b ./gcc/fixinc/tests/base/sunwindow/win_lock.h --- 1772,1779 ---- 1831085175b ./gcc/fixinc/tests/base/rpcsvc/rstat.h 2162639252b ./gcc/fixinc/tests/base/rpcsvc/rusers.h 135186565b ./gcc/fixinc/tests/base/sparc/asm_linkage.h ! 2145323530b ./gcc/fixinc/tests/base/stdio.h ! 135522837b ./gcc/fixinc/tests/base/stdlib.h 2941232612b ./gcc/fixinc/tests/base/strings.h 482468002b ./gcc/fixinc/tests/base/sundev/vuid_event.h 1807434691b ./gcc/fixinc/tests/base/sunwindow/win_lock.h *************** *** 1788,1794 **** 2898428361b ./gcc/flow.c 3036032403b ./gcc/fold-const.c 814448160b ./gcc/fp-test.c ! 3371479866b ./gcc/function.c 1538066423b ./gcc/function.h 1945284764b ./gcc/future.options 4221598017b ./gcc/gansidecl.h --- 1806,1812 ---- 2898428361b ./gcc/flow.c 3036032403b ./gcc/fold-const.c 814448160b ./gcc/fp-test.c ! 1653566373b ./gcc/function.c 1538066423b ./gcc/function.h 1945284764b ./gcc/future.options 4221598017b ./gcc/gansidecl.h *************** *** 1833,1839 **** 4095609490b ./gcc/ginclude/stdbool.h 888602182b ./gcc/ginclude/stddef.h 673473982b ./gcc/ginclude/varargs.h ! 396130885b ./gcc/glimits.h 1473153467b ./gcc/global.c 1296086035b ./gcc/gmon.c 2371574518b ./gcc/graph.c --- 1851,1857 ---- 4095609490b ./gcc/ginclude/stdbool.h 888602182b ./gcc/ginclude/stddef.h 673473982b ./gcc/ginclude/varargs.h ! 781372572b ./gcc/glimits.h 1473153467b ./gcc/global.c 1296086035b ./gcc/gmon.c 2371574518b ./gcc/graph.c *************** *** 1843,1850 **** 808024354b ./gcc/gsyslimits.h 517312911b ./gcc/gthr-aix.h 1056858492b ./gcc/gthr-dce.h ! 3998305062b ./gcc/gthr-posix.h ! 3623976832b ./gcc/gthr-rtems.h 2905827269b ./gcc/gthr-single.h 1038062946b ./gcc/gthr-solaris.h 2035828726b ./gcc/gthr-vxworks.h --- 1861,1868 ---- 808024354b ./gcc/gsyslimits.h 517312911b ./gcc/gthr-aix.h 1056858492b ./gcc/gthr-dce.h ! 1504011079b ./gcc/gthr-posix.h ! 386453848b ./gcc/gthr-rtems.h 2905827269b ./gcc/gthr-single.h 1038062946b ./gcc/gthr-solaris.h 2035828726b ./gcc/gthr-vxworks.h *************** *** 1864,1870 **** 2996455768b ./gcc/integrate.h 1933110400b ./gcc/intl.c 1326021680b ./gcc/intl.h ! 2342945531b ./gcc/intl/ChangeLog 2608513953b ./gcc/intl/Makefile.in 1035788439b ./gcc/intl/VERSION 2050167308b ./gcc/intl/bindtextdom.c --- 1882,1888 ---- 2996455768b ./gcc/integrate.h 1933110400b ./gcc/intl.c 1326021680b ./gcc/intl.h ! 3523133344b ./gcc/intl/ChangeLog 2608513953b ./gcc/intl/Makefile.in 1035788439b ./gcc/intl/VERSION 2050167308b ./gcc/intl/bindtextdom.c *************** *** 1888,1895 **** 3722123962b ./gcc/intl/textdomain.c 2960721199b ./gcc/intl/xopen-msg.sed 4005572097b ./gcc/java/.cvsignore ! 1484818816b ./gcc/java/ChangeLog ! 3719342103b ./gcc/java/Make-lang.in 3788283147b ./gcc/java/boehm.c 2541917855b ./gcc/java/buffer.c 1535113190b ./gcc/java/buffer.h --- 1906,1913 ---- 3722123962b ./gcc/intl/textdomain.c 2960721199b ./gcc/intl/xopen-msg.sed 4005572097b ./gcc/java/.cvsignore ! 1719265326b ./gcc/java/ChangeLog ! 3199045892b ./gcc/java/Make-lang.in 3788283147b ./gcc/java/boehm.c 2541917855b ./gcc/java/buffer.c 1535113190b ./gcc/java/buffer.h *************** *** 1902,1909 **** 2740930497b ./gcc/java/decl.c 3124910668b ./gcc/java/except.c 1619508635b ./gcc/java/expr.c ! 4138715670b ./gcc/java/gcj.info ! 2703779289b ./gcc/java/gcj.texi 4209811621b ./gcc/java/gen-table.pl 3950168328b ./gcc/java/gjavah.c 1545050516b ./gcc/java/java-except.h --- 1920,1927 ---- 2740930497b ./gcc/java/decl.c 3124910668b ./gcc/java/except.c 1619508635b ./gcc/java/expr.c ! 2186347127b ./gcc/java/gcj.info ! 271445606b ./gcc/java/gcj.texi 4209811621b ./gcc/java/gen-table.pl 3950168328b ./gcc/java/gjavah.c 1545050516b ./gcc/java/java-except.h *************** *** 1921,1940 **** 1146326619b ./gcc/java/jcf-write.c 1809110177b ./gcc/java/jcf.h 2686701189b ./gcc/java/jv-scan.c ! 3150919228b ./gcc/java/jvgenmain.c ! 2681204233b ./gcc/java/jvspec.c 3567108747b ./gcc/java/keyword.gperf 1595011281b ./gcc/java/keyword.h 1056131461b ./gcc/java/lang-options.h 2810580326b ./gcc/java/lang-specs.h 1733878774b ./gcc/java/lang.c ! 2873821990b ./gcc/java/lex.c ! 3114472201b ./gcc/java/lex.h 3274830053b ./gcc/java/mangle.c 2248284043b ./gcc/java/mangle_name.c ! 1917644840b ./gcc/java/parse-scan.c 578153036b ./gcc/java/parse-scan.y ! 4033500482b ./gcc/java/parse.c 790738941b ./gcc/java/parse.h 3618600566b ./gcc/java/parse.y 3137203029b ./gcc/java/typeck.c --- 1939,1958 ---- 1146326619b ./gcc/java/jcf-write.c 1809110177b ./gcc/java/jcf.h 2686701189b ./gcc/java/jv-scan.c ! 4138083440b ./gcc/java/jvgenmain.c ! 3557411428b ./gcc/java/jvspec.c 3567108747b ./gcc/java/keyword.gperf 1595011281b ./gcc/java/keyword.h 1056131461b ./gcc/java/lang-options.h 2810580326b ./gcc/java/lang-specs.h 1733878774b ./gcc/java/lang.c ! 1642003161b ./gcc/java/lex.c ! 1271687574b ./gcc/java/lex.h 3274830053b ./gcc/java/mangle.c 2248284043b ./gcc/java/mangle_name.c ! 3982948195b ./gcc/java/parse-scan.c 578153036b ./gcc/java/parse-scan.y ! 2381650795b ./gcc/java/parse.c 790738941b ./gcc/java/parse.h 3618600566b ./gcc/java/parse.y 3137203029b ./gcc/java/typeck.c *************** *** 1943,1949 **** 3070080051b ./gcc/java/xref.h 2742723736b ./gcc/java/zextract.c 1368240654b ./gcc/java/zipfile.h ! 2392549891b ./gcc/jump.c 3310289094b ./gcc/lcm.c 1452643639b ./gcc/libgcc-std.ver 987096986b ./gcc/libgcc1-test.c --- 1961,1967 ---- 3070080051b ./gcc/java/xref.h 2742723736b ./gcc/java/zextract.c 1368240654b ./gcc/java/zipfile.h ! 3775245805b ./gcc/jump.c 3310289094b ./gcc/lcm.c 1452643639b ./gcc/libgcc-std.ver 987096986b ./gcc/libgcc1-test.c *************** *** 1965,1971 **** 1233620396b ./gcc/mbchar.c 2058944294b ./gcc/mbchar.h 3764019377b ./gcc/mips-tdump.c ! 2085459586b ./gcc/mips-tfile.c 72945903b ./gcc/mkconfig.sh 1872345184b ./gcc/mkdeps.c 1784521594b ./gcc/mkdeps.h --- 1983,1989 ---- 1233620396b ./gcc/mbchar.c 2058944294b ./gcc/mbchar.h 3764019377b ./gcc/mips-tdump.c ! 1819966709b ./gcc/mips-tfile.c 72945903b ./gcc/mkconfig.sh 1872345184b ./gcc/mkdeps.c 1784521594b ./gcc/mkdeps.h *************** *** 1980,2027 **** 1290836098b ./gcc/objc/config-lang.in 588115418b ./gcc/objc/lang-options.h 2977909645b ./gcc/objc/lang-specs.h ! 1216949256b ./gcc/objc/objc-act.c 3444272236b ./gcc/objc/objc-act.h ! 3815467981b ./gcc/objc/objc-parse.c 3649582771b ./gcc/objc/objc-parse.y 620378166b ./gcc/objc/objc-tree.def 1567868913b ./gcc/objc/objc.gperf ! 1365820517b ./gcc/optabs.c 780547048b ./gcc/output.h 2930919949b ./gcc/params.c ! 2960897409b ./gcc/params.def ! 4228965694b ./gcc/params.h 1987145824b ./gcc/patch-apollo-includes ! 1083982585b ./gcc/po/ChangeLog 1909445789b ./gcc/po/Makefile.in.in 230456843b ./gcc/po/POTFILES.in 2625119691b ./gcc/po/cat-id-tbl.c 793353780b ./gcc/po/gcc.pot 216805921b ./gcc/po/stamp-cat-id 426208372b ./gcc/po/sv.po ! 1011284471b ./gcc/predict.c 1215810064b ./gcc/prefix.c 3118553823b ./gcc/prefix.h 1935701222b ./gcc/print-rtl.c 1190448249b ./gcc/print-tree.c ! 3419361579b ./gcc/profile.c 2243120815b ./gcc/protoize.c 2622627904b ./gcc/real.c 1203040742b ./gcc/real.h ! 2162777379b ./gcc/recog.c 3792773945b ./gcc/recog.h 3444596851b ./gcc/reg-stack.c ! 739086772b ./gcc/regclass.c ! 2924451269b ./gcc/regmove.c ! 830294658b ./gcc/regrename.c 3830393261b ./gcc/regs.h ! 808516955b ./gcc/reload.c 725417840b ./gcc/reload.h 2875210057b ./gcc/reload1.c ! 1751303594b ./gcc/reorg.c 1244398550b ./gcc/resource.c 1586797891b ./gcc/resource.h ! 3991947770b ./gcc/rtl.c 1510325517b ./gcc/rtl.def 4008567039b ./gcc/rtl.h 222251668b ./gcc/rtlanal.c --- 1998,2045 ---- 1290836098b ./gcc/objc/config-lang.in 588115418b ./gcc/objc/lang-options.h 2977909645b ./gcc/objc/lang-specs.h ! 4226828284b ./gcc/objc/objc-act.c 3444272236b ./gcc/objc/objc-act.h ! 1482096497b ./gcc/objc/objc-parse.c 3649582771b ./gcc/objc/objc-parse.y 620378166b ./gcc/objc/objc-tree.def 1567868913b ./gcc/objc/objc.gperf ! 3926640974b ./gcc/optabs.c 780547048b ./gcc/output.h 2930919949b ./gcc/params.c ! 52078911b ./gcc/params.def ! 200901683b ./gcc/params.h 1987145824b ./gcc/patch-apollo-includes ! 755698090b ./gcc/po/ChangeLog 1909445789b ./gcc/po/Makefile.in.in 230456843b ./gcc/po/POTFILES.in 2625119691b ./gcc/po/cat-id-tbl.c 793353780b ./gcc/po/gcc.pot 216805921b ./gcc/po/stamp-cat-id 426208372b ./gcc/po/sv.po ! 3613543765b ./gcc/predict.c 1215810064b ./gcc/prefix.c 3118553823b ./gcc/prefix.h 1935701222b ./gcc/print-rtl.c 1190448249b ./gcc/print-tree.c ! 4192602583b ./gcc/profile.c 2243120815b ./gcc/protoize.c 2622627904b ./gcc/real.c 1203040742b ./gcc/real.h ! 3488595237b ./gcc/recog.c 3792773945b ./gcc/recog.h 3444596851b ./gcc/reg-stack.c ! 1357530535b ./gcc/regclass.c ! 1810934709b ./gcc/regmove.c ! 2758954720b ./gcc/regrename.c 3830393261b ./gcc/regs.h ! 653206572b ./gcc/reload.c 725417840b ./gcc/reload.h 2875210057b ./gcc/reload1.c ! 2155579804b ./gcc/reorg.c 1244398550b ./gcc/resource.c 1586797891b ./gcc/resource.h ! 4283544518b ./gcc/rtl.c 1510325517b ./gcc/rtl.def 4008567039b ./gcc/rtl.h 222251668b ./gcc/rtlanal.c *************** *** 2031,2039 **** 3912741047b ./gcc/scan-types.sh 2929263455b ./gcc/scan.c 1244301251b ./gcc/scan.h ! 3021935636b ./gcc/sched-deps.c 1096437805b ./gcc/sched-ebb.c ! 1506568753b ./gcc/sched-int.h 581894034b ./gcc/sched-rgn.c 4091631937b ./gcc/sched-vis.c 3073218432b ./gcc/sdbout.c --- 2049,2057 ---- 3912741047b ./gcc/scan-types.sh 2929263455b ./gcc/scan.c 1244301251b ./gcc/scan.h ! 4087293714b ./gcc/sched-deps.c 1096437805b ./gcc/sched-ebb.c ! 4098187407b ./gcc/sched-int.h 581894034b ./gcc/sched-rgn.c 4091631937b ./gcc/sched-vis.c 3073218432b ./gcc/sdbout.c *************** *** 2045,2057 **** 213938074b ./gcc/ssa.h 2395322097b ./gcc/stab.def 471587796b ./gcc/stack.h ! 794966908b ./gcc/stmt.c 3592329788b ./gcc/stor-layout.c 1839687809b ./gcc/stringpool.c 567176141b ./gcc/sys-protos.h 482558466b ./gcc/sys-types.h 949648988b ./gcc/system.h ! 3112552250b ./gcc/testsuite/ChangeLog 986418331b ./gcc/testsuite/README 4258789052b ./gcc/testsuite/README.g++ 174183124b ./gcc/testsuite/README.gcc --- 2063,2075 ---- 213938074b ./gcc/ssa.h 2395322097b ./gcc/stab.def 471587796b ./gcc/stack.h ! 335514606b ./gcc/stmt.c 3592329788b ./gcc/stor-layout.c 1839687809b ./gcc/stringpool.c 567176141b ./gcc/sys-protos.h 482558466b ./gcc/sys-types.h 949648988b ./gcc/system.h ! 1804751077b ./gcc/testsuite/ChangeLog 986418331b ./gcc/testsuite/README 4258789052b ./gcc/testsuite/README.g++ 174183124b ./gcc/testsuite/README.gcc *************** *** 2077,2082 **** --- 2095,2101 ---- 2936636767b ./gcc/testsuite/g++.old-deja/g++.abi/empty.C 4096109742b ./gcc/testsuite/g++.old-deja/g++.abi/empty2.C 1878628007b ./gcc/testsuite/g++.old-deja/g++.abi/empty3.C + 2464785360b ./gcc/testsuite/g++.old-deja/g++.abi/empty4.C 239352654b ./gcc/testsuite/g++.old-deja/g++.abi/layout1.C 3009318595b ./gcc/testsuite/g++.old-deja/g++.abi/mangle1.C 694100951b ./gcc/testsuite/g++.old-deja/g++.abi/primary.C *************** *** 2093,2098 **** --- 2112,2121 ---- 2484396991b ./gcc/testsuite/g++.old-deja/g++.abi/vbase5.C 762829112b ./gcc/testsuite/g++.old-deja/g++.abi/vbase6.C 2351342219b ./gcc/testsuite/g++.old-deja/g++.abi/vbase7.C + 3172517351b ./gcc/testsuite/g++.old-deja/g++.abi/vbase8-10.C + 995467002b ./gcc/testsuite/g++.old-deja/g++.abi/vbase8-21.C + 3642163828b ./gcc/testsuite/g++.old-deja/g++.abi/vbase8-22.C + 3914589079b ./gcc/testsuite/g++.old-deja/g++.abi/vbase8-5.C 3332397893b ./gcc/testsuite/g++.old-deja/g++.abi/vbase8-9.C 186405531b ./gcc/testsuite/g++.old-deja/g++.abi/vmihint.C 2313706108b ./gcc/testsuite/g++.old-deja/g++.abi/vtable.C *************** *** 2108,2113 **** --- 2131,2137 ---- 255582158b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3h.C 3409231452b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3i.C 895613077b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3j.C + 4124551189b ./gcc/testsuite/g++.old-deja/g++.abi/vthunk1.C 3056861018b ./gcc/testsuite/g++.old-deja/g++.benjamin/.cvsignore 3645238009b ./gcc/testsuite/g++.old-deja/g++.benjamin/13478.C 1290057507b ./gcc/testsuite/g++.old-deja/g++.benjamin/13523.C *************** *** 3599,3605 **** 3189296082b ./gcc/testsuite/g++.old-deja/g++.mike/p2746.C 2655922230b ./gcc/testsuite/g++.old-deja/g++.mike/p2793.C 2222530613b ./gcc/testsuite/g++.old-deja/g++.mike/p2806.C ! 317527659b ./gcc/testsuite/g++.old-deja/g++.mike/p2846.C 3941688151b ./gcc/testsuite/g++.old-deja/g++.mike/p2846a.C 481437008b ./gcc/testsuite/g++.old-deja/g++.mike/p2846b.C 231166541b ./gcc/testsuite/g++.old-deja/g++.mike/p2855.C --- 3623,3629 ---- 3189296082b ./gcc/testsuite/g++.old-deja/g++.mike/p2746.C 2655922230b ./gcc/testsuite/g++.old-deja/g++.mike/p2793.C 2222530613b ./gcc/testsuite/g++.old-deja/g++.mike/p2806.C ! 1350283959b ./gcc/testsuite/g++.old-deja/g++.mike/p2846.C 3941688151b ./gcc/testsuite/g++.old-deja/g++.mike/p2846a.C 481437008b ./gcc/testsuite/g++.old-deja/g++.mike/p2846b.C 231166541b ./gcc/testsuite/g++.old-deja/g++.mike/p2855.C *************** *** 3819,3825 **** 2018913859b ./gcc/testsuite/g++.old-deja/g++.ns/ns11.C 1953910502b ./gcc/testsuite/g++.old-deja/g++.ns/ns12.C 1783653783b ./gcc/testsuite/g++.old-deja/g++.ns/ns13.C ! 897870685b ./gcc/testsuite/g++.old-deja/g++.ns/ns14.C 3477570937b ./gcc/testsuite/g++.old-deja/g++.ns/ns15.C 3961933508b ./gcc/testsuite/g++.old-deja/g++.ns/ns16.C 2083452456b ./gcc/testsuite/g++.old-deja/g++.ns/ns17.C --- 3843,3849 ---- 2018913859b ./gcc/testsuite/g++.old-deja/g++.ns/ns11.C 1953910502b ./gcc/testsuite/g++.old-deja/g++.ns/ns12.C 1783653783b ./gcc/testsuite/g++.old-deja/g++.ns/ns13.C ! 649484463b ./gcc/testsuite/g++.old-deja/g++.ns/ns14.C 3477570937b ./gcc/testsuite/g++.old-deja/g++.ns/ns15.C 3961933508b ./gcc/testsuite/g++.old-deja/g++.ns/ns16.C 2083452456b ./gcc/testsuite/g++.old-deja/g++.ns/ns17.C *************** *** 3847,3852 **** --- 3871,3877 ---- 1942781319b ./gcc/testsuite/g++.old-deja/g++.ns/template14.C 4227768604b ./gcc/testsuite/g++.old-deja/g++.ns/template15.C 3733063651b ./gcc/testsuite/g++.old-deja/g++.ns/template17.C + 1888321924b ./gcc/testsuite/g++.old-deja/g++.ns/template18.C 2875853595b ./gcc/testsuite/g++.old-deja/g++.ns/template2.C 1112300813b ./gcc/testsuite/g++.old-deja/g++.ns/template3.C 2350177435b ./gcc/testsuite/g++.old-deja/g++.ns/template4.C *************** *** 3872,3878 **** 3099602163b ./gcc/testsuite/g++.old-deja/g++.ns/using7.C 396388537b ./gcc/testsuite/g++.old-deja/g++.ns/using8.C 536814910b ./gcc/testsuite/g++.old-deja/g++.ns/using9.C ! 1098981319b ./gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog 3728265872b ./gcc/testsuite/g++.old-deja/g++.oliva/ctor1.C 3026414575b ./gcc/testsuite/g++.old-deja/g++.oliva/delete1.C 3639944207b ./gcc/testsuite/g++.old-deja/g++.oliva/delete2.C --- 3897,3903 ---- 3099602163b ./gcc/testsuite/g++.old-deja/g++.ns/using7.C 396388537b ./gcc/testsuite/g++.old-deja/g++.ns/using8.C 536814910b ./gcc/testsuite/g++.old-deja/g++.ns/using9.C ! 242949782b ./gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog 3728265872b ./gcc/testsuite/g++.old-deja/g++.oliva/ctor1.C 3026414575b ./gcc/testsuite/g++.old-deja/g++.oliva/delete1.C 3639944207b ./gcc/testsuite/g++.old-deja/g++.oliva/delete2.C *************** *** 3941,3947 **** --- 3966,3974 ---- 2041445169b ./gcc/testsuite/g++.old-deja/g++.other/array2.C 817672117b ./gcc/testsuite/g++.old-deja/g++.other/array3.C 4210498948b ./gcc/testsuite/g++.old-deja/g++.other/array4.C + 1839235782b ./gcc/testsuite/g++.old-deja/g++.other/array5.C 775293500b ./gcc/testsuite/g++.old-deja/g++.other/asm1.C + 2120817147b ./gcc/testsuite/g++.old-deja/g++.other/asm2.C 4169192453b ./gcc/testsuite/g++.old-deja/g++.other/badarrow.C 1457616136b ./gcc/testsuite/g++.old-deja/g++.other/badopt1.C 578421507b ./gcc/testsuite/g++.old-deja/g++.other/base1.C *************** *** 3973,3978 **** --- 4000,4006 ---- 670388594b ./gcc/testsuite/g++.old-deja/g++.other/cond4.C 1262376075b ./gcc/testsuite/g++.old-deja/g++.other/cond5.C 2676026586b ./gcc/testsuite/g++.old-deja/g++.other/cond6.C + 1953534421b ./gcc/testsuite/g++.old-deja/g++.other/cond7.C 2177760584b ./gcc/testsuite/g++.old-deja/g++.other/const1.C 815940719b ./gcc/testsuite/g++.old-deja/g++.other/const2.C 3115773883b ./gcc/testsuite/g++.old-deja/g++.other/conv1.C *************** *** 4021,4026 **** --- 4049,4055 ---- 226105322b ./gcc/testsuite/g++.old-deja/g++.other/crash4.C 2473163715b ./gcc/testsuite/g++.old-deja/g++.other/crash40.C 2559623170b ./gcc/testsuite/g++.old-deja/g++.other/crash41.C + 2300001961b ./gcc/testsuite/g++.old-deja/g++.other/crash42.C 1657789856b ./gcc/testsuite/g++.old-deja/g++.other/crash5.C 3212679954b ./gcc/testsuite/g++.old-deja/g++.other/crash6.C 3092570108b ./gcc/testsuite/g++.old-deja/g++.other/crash7.C *************** *** 4098,4103 **** --- 4127,4133 ---- 3143843455b ./gcc/testsuite/g++.old-deja/g++.other/eh4.C 3053308594b ./gcc/testsuite/g++.old-deja/g++.other/elab1.C 1328545493b ./gcc/testsuite/g++.old-deja/g++.other/empty1.C + 3170636835b ./gcc/testsuite/g++.old-deja/g++.other/empty2.C 845552508b ./gcc/testsuite/g++.old-deja/g++.other/enum1.C 1384469113b ./gcc/testsuite/g++.old-deja/g++.other/enum2.C 3409398862b ./gcc/testsuite/g++.old-deja/g++.other/enum3.C *************** *** 4174,4179 **** --- 4204,4210 ---- 448802586b ./gcc/testsuite/g++.old-deja/g++.other/lineno2.C 1798112973b ./gcc/testsuite/g++.old-deja/g++.other/lineno3.C 3724478549b ./gcc/testsuite/g++.old-deja/g++.other/lineno4.C + 3655515541b ./gcc/testsuite/g++.old-deja/g++.other/lineno5.C 1356735834b ./gcc/testsuite/g++.old-deja/g++.other/linkage1.C 2749431766b ./gcc/testsuite/g++.old-deja/g++.other/linkage2.C 3893718025b ./gcc/testsuite/g++.old-deja/g++.other/linkage3.C *************** *** 4235,4240 **** --- 4266,4272 ---- 2885764662b ./gcc/testsuite/g++.old-deja/g++.other/optimize1.C 2096609897b ./gcc/testsuite/g++.old-deja/g++.other/optimize2.C 551298218b ./gcc/testsuite/g++.old-deja/g++.other/optimize3.C + 3940439065b ./gcc/testsuite/g++.old-deja/g++.other/optimize4.C 3254521143b ./gcc/testsuite/g++.old-deja/g++.other/overcnv1.C 96458692b ./gcc/testsuite/g++.old-deja/g++.other/overcnv2.C 2161968240b ./gcc/testsuite/g++.old-deja/g++.other/overload1.C *************** *** 4252,4257 **** --- 4284,4290 ---- 898570990b ./gcc/testsuite/g++.old-deja/g++.other/overload8.C 4060052726b ./gcc/testsuite/g++.old-deja/g++.other/overload9.C 1262277324b ./gcc/testsuite/g++.old-deja/g++.other/override1.C + 1380865006b ./gcc/testsuite/g++.old-deja/g++.other/override2.C 1890760625b ./gcc/testsuite/g++.old-deja/g++.other/parse1.C 1658949221b ./gcc/testsuite/g++.old-deja/g++.other/parse2.C 3458348700b ./gcc/testsuite/g++.old-deja/g++.other/perf1.C *************** *** 4322,4328 **** 3148107112b ./gcc/testsuite/g++.old-deja/g++.other/static6.C 456365368b ./gcc/testsuite/g++.old-deja/g++.other/static7.C 1409972884b ./gcc/testsuite/g++.old-deja/g++.other/static9.C ! 1556203396b ./gcc/testsuite/g++.old-deja/g++.other/std1.C 574242123b ./gcc/testsuite/g++.old-deja/g++.other/stmtexpr1.C 3308418318b ./gcc/testsuite/g++.old-deja/g++.other/string1.C 3417212046b ./gcc/testsuite/g++.old-deja/g++.other/string2.C --- 4355,4361 ---- 3148107112b ./gcc/testsuite/g++.old-deja/g++.other/static6.C 456365368b ./gcc/testsuite/g++.old-deja/g++.other/static7.C 1409972884b ./gcc/testsuite/g++.old-deja/g++.other/static9.C ! 910948586b ./gcc/testsuite/g++.old-deja/g++.other/std1.C 574242123b ./gcc/testsuite/g++.old-deja/g++.other/stmtexpr1.C 3308418318b ./gcc/testsuite/g++.old-deja/g++.other/string1.C 3417212046b ./gcc/testsuite/g++.old-deja/g++.other/string2.C *************** *** 4478,4483 **** --- 4511,4517 ---- 3223409625b ./gcc/testsuite/g++.old-deja/g++.pt/crash63.C 3150696822b ./gcc/testsuite/g++.old-deja/g++.pt/crash64.C 3278220743b ./gcc/testsuite/g++.old-deja/g++.pt/crash65.C + 2591611103b ./gcc/testsuite/g++.old-deja/g++.pt/crash68.C 3887562144b ./gcc/testsuite/g++.old-deja/g++.pt/crash7.C 423406852b ./gcc/testsuite/g++.old-deja/g++.pt/crash8.C 2256920146b ./gcc/testsuite/g++.old-deja/g++.pt/crash9.C *************** *** 4494,4499 **** --- 4528,4534 ---- 1268727238b ./gcc/testsuite/g++.old-deja/g++.pt/deduct4.C 2614275894b ./gcc/testsuite/g++.old-deja/g++.pt/deduct5.C 606334760b ./gcc/testsuite/g++.old-deja/g++.pt/deduct6.C + 340374206b ./gcc/testsuite/g++.old-deja/g++.pt/deduct7.C 2858847781b ./gcc/testsuite/g++.old-deja/g++.pt/defarg.C 940625563b ./gcc/testsuite/g++.old-deja/g++.pt/defarg10.C 3439579652b ./gcc/testsuite/g++.old-deja/g++.pt/defarg11.C *************** *** 4879,4885 **** 1609222984b ./gcc/testsuite/g++.old-deja/g++.pt/pointer1.C 667276243b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem1.C 2621744921b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem10.C ! 3012586979b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem2.C 3615617559b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem3.C 886281225b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem4.C 716987062b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem5.C --- 4914,4920 ---- 1609222984b ./gcc/testsuite/g++.old-deja/g++.pt/pointer1.C 667276243b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem1.C 2621744921b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem10.C ! 1628163413b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem2.C 3615617559b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem3.C 886281225b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem4.C 716987062b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem5.C *************** *** 4949,4958 **** 3499532117b ./gcc/testsuite/g++.old-deja/g++.pt/static10.C 3264521084b ./gcc/testsuite/g++.old-deja/g++.pt/static11.C 3095826275b ./gcc/testsuite/g++.old-deja/g++.pt/static2.C ! 455754099b ./gcc/testsuite/g++.old-deja/g++.pt/static3.C 4121342217b ./gcc/testsuite/g++.old-deja/g++.pt/static4.C 637809399b ./gcc/testsuite/g++.old-deja/g++.pt/static5.C ! 1983583438b ./gcc/testsuite/g++.old-deja/g++.pt/static6.C 1808791646b ./gcc/testsuite/g++.old-deja/g++.pt/static7.C 3987560353b ./gcc/testsuite/g++.old-deja/g++.pt/static8.C 1860907942b ./gcc/testsuite/g++.old-deja/g++.pt/static9.C --- 4984,4993 ---- 3499532117b ./gcc/testsuite/g++.old-deja/g++.pt/static10.C 3264521084b ./gcc/testsuite/g++.old-deja/g++.pt/static11.C 3095826275b ./gcc/testsuite/g++.old-deja/g++.pt/static2.C ! 3043759182b ./gcc/testsuite/g++.old-deja/g++.pt/static3.C 4121342217b ./gcc/testsuite/g++.old-deja/g++.pt/static4.C 637809399b ./gcc/testsuite/g++.old-deja/g++.pt/static5.C ! 3443961587b ./gcc/testsuite/g++.old-deja/g++.pt/static6.C 1808791646b ./gcc/testsuite/g++.old-deja/g++.pt/static7.C 3987560353b ./gcc/testsuite/g++.old-deja/g++.pt/static8.C 1860907942b ./gcc/testsuite/g++.old-deja/g++.pt/static9.C *************** *** 5117,5123 **** 616339966b ./gcc/testsuite/g++.old-deja/g++.pt/unify4.C 1593711084b ./gcc/testsuite/g++.old-deja/g++.pt/unify6.C 2805975955b ./gcc/testsuite/g++.old-deja/g++.pt/unify7.C ! 1108787927b ./gcc/testsuite/g++.old-deja/g++.pt/unify8.C 1740949226b ./gcc/testsuite/g++.old-deja/g++.pt/union1.C 3325944931b ./gcc/testsuite/g++.old-deja/g++.pt/union2.C 3304362700b ./gcc/testsuite/g++.old-deja/g++.pt/using1.C --- 5152,5158 ---- 616339966b ./gcc/testsuite/g++.old-deja/g++.pt/unify4.C 1593711084b ./gcc/testsuite/g++.old-deja/g++.pt/unify6.C 2805975955b ./gcc/testsuite/g++.old-deja/g++.pt/unify7.C ! 572096107b ./gcc/testsuite/g++.old-deja/g++.pt/unify8.C 1740949226b ./gcc/testsuite/g++.old-deja/g++.pt/union1.C 3325944931b ./gcc/testsuite/g++.old-deja/g++.pt/union2.C 3304362700b ./gcc/testsuite/g++.old-deja/g++.pt/using1.C *************** *** 5170,5179 **** 551639476b ./gcc/testsuite/g++.old-deja/g++.robertl/eb129.C 2811911547b ./gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C 630981722b ./gcc/testsuite/g++.old-deja/g++.robertl/eb13.C ! 3833568905b ./gcc/testsuite/g++.old-deja/g++.robertl/eb130.C 2576744469b ./gcc/testsuite/g++.old-deja/g++.robertl/eb131.C 191646019b ./gcc/testsuite/g++.old-deja/g++.robertl/eb132.C ! 1582758441b ./gcc/testsuite/g++.old-deja/g++.robertl/eb133.C 2212505012b ./gcc/testsuite/g++.old-deja/g++.robertl/eb133a.C 960695829b ./gcc/testsuite/g++.old-deja/g++.robertl/eb133b.C 3851013524b ./gcc/testsuite/g++.old-deja/g++.robertl/eb14.C --- 5205,5214 ---- 551639476b ./gcc/testsuite/g++.old-deja/g++.robertl/eb129.C 2811911547b ./gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C 630981722b ./gcc/testsuite/g++.old-deja/g++.robertl/eb13.C ! 4778977b ./gcc/testsuite/g++.old-deja/g++.robertl/eb130.C 2576744469b ./gcc/testsuite/g++.old-deja/g++.robertl/eb131.C 191646019b ./gcc/testsuite/g++.old-deja/g++.robertl/eb132.C ! 960695829b ./gcc/testsuite/g++.old-deja/g++.robertl/eb133.C 2212505012b ./gcc/testsuite/g++.old-deja/g++.robertl/eb133a.C 960695829b ./gcc/testsuite/g++.old-deja/g++.robertl/eb133b.C 3851013524b ./gcc/testsuite/g++.old-deja/g++.robertl/eb14.C *************** *** 5855,5865 **** 2416535943b ./gcc/testsuite/gcc.c-torture/execute/20001203-2.c 315046176b ./gcc/testsuite/gcc.c-torture/execute/20001221-1.c 3430334061b ./gcc/testsuite/gcc.c-torture/execute/20001228-1.c ! 3807533231b ./gcc/testsuite/gcc.c-torture/execute/20001229-1.c 2867964338b ./gcc/testsuite/gcc.c-torture/execute/20010106-1.c 4104575350b ./gcc/testsuite/gcc.c-torture/execute/20010114-1.c - 2602526611b ./gcc/testsuite/gcc.c-torture/execute/20010114-2.c - 3644699221b ./gcc/testsuite/gcc.c-torture/execute/20010114-2.x 4274826155b ./gcc/testsuite/gcc.c-torture/execute/20010116-1.c 1853154998b ./gcc/testsuite/gcc.c-torture/execute/20010118-1.c 1273676691b ./gcc/testsuite/gcc.c-torture/execute/20010119-1.c --- 5890,5898 ---- 2416535943b ./gcc/testsuite/gcc.c-torture/execute/20001203-2.c 315046176b ./gcc/testsuite/gcc.c-torture/execute/20001221-1.c 3430334061b ./gcc/testsuite/gcc.c-torture/execute/20001228-1.c ! 4145547631b ./gcc/testsuite/gcc.c-torture/execute/20001229-1.c 2867964338b ./gcc/testsuite/gcc.c-torture/execute/20010106-1.c 4104575350b ./gcc/testsuite/gcc.c-torture/execute/20010114-1.c 4274826155b ./gcc/testsuite/gcc.c-torture/execute/20010116-1.c 1853154998b ./gcc/testsuite/gcc.c-torture/execute/20010118-1.c 1273676691b ./gcc/testsuite/gcc.c-torture/execute/20010119-1.c *************** *** 5879,5884 **** --- 5912,5919 ---- 3398306936b ./gcc/testsuite/gcc.c-torture/execute/20010604-1.c 1597970944b ./gcc/testsuite/gcc.c-torture/execute/20010605-1.c 2151082111b ./gcc/testsuite/gcc.c-torture/execute/20010605-2.c + 3978892519b ./gcc/testsuite/gcc.c-torture/execute/20010724-1.c + 1723617799b ./gcc/testsuite/gcc.c-torture/execute/20010724-1.x 37158978b ./gcc/testsuite/gcc.c-torture/execute/900409-1.c 1241514475b ./gcc/testsuite/gcc.c-torture/execute/920202-1.c 3659466606b ./gcc/testsuite/gcc.c-torture/execute/920302-1.c *************** *** 6221,6226 **** --- 6256,6262 ---- 1157816092b ./gcc/testsuite/gcc.c-torture/execute/gofast.c 1262906405b ./gcc/testsuite/gcc.c-torture/execute/ieee/20000320-1.c 981656236b ./gcc/testsuite/gcc.c-torture/execute/ieee/20001122-1.c + 2602526611b ./gcc/testsuite/gcc.c-torture/execute/ieee/20010114-2.c 2046772610b ./gcc/testsuite/gcc.c-torture/execute/ieee/920518-1.c 3673851898b ./gcc/testsuite/gcc.c-torture/execute/ieee/920810-1.c 1813910189b ./gcc/testsuite/gcc.c-torture/execute/ieee/930529-1.c *************** *** 6232,6238 **** 634010742b ./gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-4.c 4125344101b ./gcc/testsuite/gcc.c-torture/execute/ieee/hugeval.c 1953413990b ./gcc/testsuite/gcc.c-torture/execute/ieee/hugeval.x ! 4035620578b ./gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp 4017678214b ./gcc/testsuite/gcc.c-torture/execute/ieee/minuszero.c 3545392440b ./gcc/testsuite/gcc.c-torture/execute/ieee/mzero2.c 2290856575b ./gcc/testsuite/gcc.c-torture/execute/ieee/mzero2.x --- 6268,6274 ---- 634010742b ./gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-4.c 4125344101b ./gcc/testsuite/gcc.c-torture/execute/ieee/hugeval.c 1953413990b ./gcc/testsuite/gcc.c-torture/execute/ieee/hugeval.x ! 3655953044b ./gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp 4017678214b ./gcc/testsuite/gcc.c-torture/execute/ieee/minuszero.c 3545392440b ./gcc/testsuite/gcc.c-torture/execute/ieee/mzero2.c 2290856575b ./gcc/testsuite/gcc.c-torture/execute/ieee/mzero2.x *************** *** 6657,6662 **** --- 6693,6699 ---- 1646064105b ./gcc/testsuite/gcc.dg/20001228-1.c 2498549558b ./gcc/testsuite/gcc.dg/20010202-1.c 3041407018b ./gcc/testsuite/gcc.dg/20010520-1.c + 3520626317b ./gcc/testsuite/gcc.dg/20010622-1.c 1577979025b ./gcc/testsuite/gcc.dg/920413-1.c 2176221389b ./gcc/testsuite/gcc.dg/940409-1.c 1567764883b ./gcc/testsuite/gcc.dg/940510-1.c *************** *** 6697,6702 **** --- 6734,6740 ---- 2531825241b ./gcc/testsuite/gcc.dg/asm-3.c 1851013323b ./gcc/testsuite/gcc.dg/asm-fs-1.c 2590660240b ./gcc/testsuite/gcc.dg/asm-names.c + 3155000092b ./gcc/testsuite/gcc.dg/bconstp-1.c 15751103b ./gcc/testsuite/gcc.dg/bf-spl1.c 2150146400b ./gcc/testsuite/gcc.dg/c90-array-lval-1.c 3238760819b ./gcc/testsuite/gcc.dg/c90-array-lval-2.c *************** *** 7106,7111 **** --- 7144,7150 ---- 208907585b ./gcc/testsuite/gcc.misc-tests/dhry.h 779830061b ./gcc/testsuite/gcc.misc-tests/gcov-1.c 365927888b ./gcc/testsuite/gcc.misc-tests/gcov-2.c + 4211514085b ./gcc/testsuite/gcc.misc-tests/gcov-3.c 3439242634b ./gcc/testsuite/gcc.misc-tests/gcov.exp 2071381157b ./gcc/testsuite/gcc.misc-tests/linkage-x.c 3975807378b ./gcc/testsuite/gcc.misc-tests/linkage-y.c *************** *** 7115,7121 **** 2874350784b ./gcc/testsuite/gcc.misc-tests/matrix1.c 1686589144b ./gcc/testsuite/gcc.misc-tests/matrix1.exp 1813429392b ./gcc/testsuite/gcc.misc-tests/mg.c ! 978648189b ./gcc/testsuite/gcc.misc-tests/mg.exp 2954737355b ./gcc/testsuite/gcc.misc-tests/msgs.exp 1983153897b ./gcc/testsuite/gcc.misc-tests/sieve.c 3220093576b ./gcc/testsuite/gcc.misc-tests/sieve.exp --- 7154,7160 ---- 2874350784b ./gcc/testsuite/gcc.misc-tests/matrix1.c 1686589144b ./gcc/testsuite/gcc.misc-tests/matrix1.exp 1813429392b ./gcc/testsuite/gcc.misc-tests/mg.c ! 1868251641b ./gcc/testsuite/gcc.misc-tests/mg.exp 2954737355b ./gcc/testsuite/gcc.misc-tests/msgs.exp 1983153897b ./gcc/testsuite/gcc.misc-tests/sieve.c 3220093576b ./gcc/testsuite/gcc.misc-tests/sieve.exp *************** *** 7126,7132 **** 246962046b ./gcc/testsuite/lib/f-torture.exp 1219011657b ./gcc/testsuite/lib/file-format.exp 1898640330b ./gcc/testsuite/lib/g++-dg.exp ! 2693974870b ./gcc/testsuite/lib/g++.exp 3802109199b ./gcc/testsuite/lib/g77-dg.exp 1805589965b ./gcc/testsuite/lib/g77.exp 1223951383b ./gcc/testsuite/lib/gcc-dg.exp --- 7165,7171 ---- 246962046b ./gcc/testsuite/lib/f-torture.exp 1219011657b ./gcc/testsuite/lib/file-format.exp 1898640330b ./gcc/testsuite/lib/g++-dg.exp ! 1264458001b ./gcc/testsuite/lib/g++.exp 3802109199b ./gcc/testsuite/lib/g77-dg.exp 1805589965b ./gcc/testsuite/lib/g77.exp 1223951383b ./gcc/testsuite/lib/gcc-dg.exp *************** *** 7135,7144 **** 3009729864b ./gcc/testsuite/lib/mike-g77.exp 3143525169b ./gcc/testsuite/lib/mike-gcc.exp 3056147734b ./gcc/testsuite/lib/objc-torture.exp ! 1425190810b ./gcc/testsuite/lib/objc.exp 3931030396b ./gcc/testsuite/lib/old-dejagnu.exp 2677371927b ./gcc/testsuite/lib/scanasm.exp ! 3662913186b ./gcc/testsuite/lib/target-supports.exp 2696823090b ./gcc/testsuite/objc/execute/IMP.m 1707819077b ./gcc/testsuite/objc/execute/_cmd.m 3837394038b ./gcc/testsuite/objc/execute/accessing_ivars.m --- 7174,7183 ---- 3009729864b ./gcc/testsuite/lib/mike-g77.exp 3143525169b ./gcc/testsuite/lib/mike-gcc.exp 3056147734b ./gcc/testsuite/lib/objc-torture.exp ! 1365070112b ./gcc/testsuite/lib/objc.exp 3931030396b ./gcc/testsuite/lib/old-dejagnu.exp 2677371927b ./gcc/testsuite/lib/scanasm.exp ! 743118127b ./gcc/testsuite/lib/target-supports.exp 2696823090b ./gcc/testsuite/objc/execute/IMP.m 1707819077b ./gcc/testsuite/objc/execute/_cmd.m 3837394038b ./gcc/testsuite/objc/execute/accessing_ivars.m *************** *** 7206,7211 **** --- 7245,7252 ---- 3845787514b ./gcc/testsuite/objc/execute/no_clash.m 3091877589b ./gcc/testsuite/objc/execute/np-1.m 837055144b ./gcc/testsuite/objc/execute/np-2.m + 936059862b ./gcc/testsuite/objc/execute/object_is_class.m + 1811140144b ./gcc/testsuite/objc/execute/object_is_meta_class.m 3244628587b ./gcc/testsuite/objc/execute/paste.m 3444127895b ./gcc/testsuite/objc/execute/private.m 1487670997b ./gcc/testsuite/objc/execute/protocol.m *************** *** 7223,7259 **** 780535585b ./gcc/timevar.def 3918443491b ./gcc/timevar.h 3255809228b ./gcc/tlink.c ! 2163550922b ./gcc/toplev.c 3421121434b ./gcc/toplev.h ! 3381960764b ./gcc/tradcif.c 2773797431b ./gcc/tradcif.y 3120479866b ./gcc/tradcpp.c 1987124132b ./gcc/tradcpp.h 4149158830b ./gcc/tree.c 2661789638b ./gcc/tree.def ! 4115095299b ./gcc/tree.h 231560538b ./gcc/tsystem.h 4139263293b ./gcc/typeclass.h 17641651b ./gcc/unprotoize.c 2728334244b ./gcc/unroll.c ! 3658500135b ./gcc/unwind-dw2-fde.c 2579082273b ./gcc/unwind-dw2-fde.h ! 1513491364b ./gcc/unwind-dw2.c ! 200106548b ./gcc/unwind-pe.h 2658132252b ./gcc/unwind-sjlj.c 1179999985b ./gcc/unwind.h 2811456772b ./gcc/unwind.inc ! 1433501019b ./gcc/varasm.c 740604337b ./gcc/varray.c 3918364708b ./gcc/varray.h ! 3976409631b ./gcc/version.c 1227851131b ./gcc/version.h 1040256635b ./gcc/vmsconfig.com 4121715740b ./gcc/xcoffout.c 2574034949b ./gcc/xcoffout.h ! 1746695871b ./gnats.html 2171125041b ./include/COPYING ! 3584017591b ./include/ChangeLog 888917931b ./include/ansidecl.h 1789350587b ./include/demangle.h 2980645374b ./include/dyn-string.h --- 7264,7300 ---- 780535585b ./gcc/timevar.def 3918443491b ./gcc/timevar.h 3255809228b ./gcc/tlink.c ! 3744765622b ./gcc/toplev.c 3421121434b ./gcc/toplev.h ! 1805793420b ./gcc/tradcif.c 2773797431b ./gcc/tradcif.y 3120479866b ./gcc/tradcpp.c 1987124132b ./gcc/tradcpp.h 4149158830b ./gcc/tree.c 2661789638b ./gcc/tree.def ! 1228630084b ./gcc/tree.h 231560538b ./gcc/tsystem.h 4139263293b ./gcc/typeclass.h 17641651b ./gcc/unprotoize.c 2728334244b ./gcc/unroll.c ! 298823486b ./gcc/unwind-dw2-fde.c 2579082273b ./gcc/unwind-dw2-fde.h ! 1325164416b ./gcc/unwind-dw2.c ! 2257776618b ./gcc/unwind-pe.h 2658132252b ./gcc/unwind-sjlj.c 1179999985b ./gcc/unwind.h 2811456772b ./gcc/unwind.inc ! 1308552935b ./gcc/varasm.c 740604337b ./gcc/varray.c 3918364708b ./gcc/varray.h ! 1173990918b ./gcc/version.c 1227851131b ./gcc/version.h 1040256635b ./gcc/vmsconfig.com 4121715740b ./gcc/xcoffout.c 2574034949b ./gcc/xcoffout.h ! 3788021337b ./gnats.html 2171125041b ./include/COPYING ! 4266871069b ./include/ChangeLog 888917931b ./include/ansidecl.h 1789350587b ./include/demangle.h 2980645374b ./include/dyn-string.h *************** *** 7271,7277 **** 176339077b ./include/splay-tree.h 1653599470b ./include/symcat.h 4171599065b ./install-sh ! 382002726b ./libf2c/ChangeLog 57434001b ./libf2c/Makefile.in 3111321221b ./libf2c/README 308226469b ./libf2c/TODO --- 7312,7318 ---- 176339077b ./include/splay-tree.h 1653599470b ./include/symcat.h 4171599065b ./install-sh ! 2735711540b ./libf2c/ChangeLog 57434001b ./libf2c/Makefile.in 3111321221b ./libf2c/README 308226469b ./libf2c/TODO *************** *** 7286,7292 **** 1147257543b ./libf2c/libF77/Makefile.in 1384146782b ./libf2c/libF77/Notice 3594711912b ./libf2c/libF77/README.netlib ! 3899292545b ./libf2c/libF77/Version.c 1304659322b ./libf2c/libF77/abort_.c 2143735092b ./libf2c/libF77/c_abs.c 4102372920b ./libf2c/libF77/c_cos.c --- 7327,7333 ---- 1147257543b ./libf2c/libF77/Makefile.in 1384146782b ./libf2c/libF77/Notice 3594711912b ./libf2c/libF77/README.netlib ! 4287439991b ./libf2c/libF77/Version.c 1304659322b ./libf2c/libF77/abort_.c 2143735092b ./libf2c/libF77/c_abs.c 4102372920b ./libf2c/libF77/c_cos.c *************** *** 7418,7424 **** 999500799b ./libf2c/libI77/Makefile.in 1384146782b ./libf2c/libI77/Notice 3744878144b ./libf2c/libI77/README.netlib ! 2411890295b ./libf2c/libI77/Version.c 1131505415b ./libf2c/libI77/backspace.c 2398093876b ./libf2c/libI77/close.c 3931934799b ./libf2c/libI77/config.h.in --- 7459,7465 ---- 999500799b ./libf2c/libI77/Makefile.in 1384146782b ./libf2c/libI77/Notice 3744878144b ./libf2c/libI77/README.netlib ! 303392302b ./libf2c/libI77/Version.c 1131505415b ./libf2c/libI77/backspace.c 2398093876b ./libf2c/libI77/close.c 3931934799b ./libf2c/libI77/config.h.in *************** *** 7466,7472 **** 2966234338b ./libf2c/libU77/Makefile.in 572996563b ./libf2c/libU77/PROJECTS 2980229902b ./libf2c/libU77/README ! 4288942149b ./libf2c/libU77/Version.c 1842933802b ./libf2c/libU77/access_.c 4214861580b ./libf2c/libU77/acconfig.h 2301261828b ./libf2c/libU77/aclocal.m4 --- 7507,7513 ---- 2966234338b ./libf2c/libU77/Makefile.in 572996563b ./libf2c/libU77/PROJECTS 2980229902b ./libf2c/libU77/README ! 1033325637b ./libf2c/libU77/Version.c 1842933802b ./libf2c/libU77/access_.c 4214861580b ./libf2c/libU77/acconfig.h 2301261828b ./libf2c/libU77/aclocal.m4 *************** *** 7528,7534 **** 3987376609b ./libf2c/libU77/vxttime_.c 1384146782b ./libf2c/permission.netlib 3513813969b ./libf2c/readme.netlib ! 1109274161b ./libffi/ChangeLog 2412263940b ./libffi/ChangeLog.libgcj 1481682558b ./libffi/ChangeLog.v1 2593181117b ./libffi/LICENSE --- 7569,7575 ---- 3987376609b ./libf2c/libU77/vxttime_.c 1384146782b ./libf2c/permission.netlib 3513813969b ./libf2c/readme.netlib ! 1599344309b ./libffi/ChangeLog 2412263940b ./libffi/ChangeLog.libgcj 1481682558b ./libffi/ChangeLog.v1 2593181117b ./libffi/LICENSE *************** *** 7538,7553 **** 1812706554b ./libffi/acconfig.h 2067133813b ./libffi/acinclude.m4 3541235691b ./libffi/aclocal.m4 ! 556251580b ./libffi/configure ! 2167678845b ./libffi/configure.in 2955525038b ./libffi/fficonfig.h.in 1175058075b ./libffi/include/Makefile.am 1670240125b ./libffi/include/Makefile.in 3520784265b ./libffi/include/ffi.h.in 3309556484b ./libffi/include/ffi_common.h 1647998382b ./libffi/include/ffi_mips.h ! 71498694b ./libffi/src/alpha/ffi.c ! 2767781122b ./libffi/src/alpha/osf.S 1858437870b ./libffi/src/arm/ffi.c 3794061997b ./libffi/src/arm/sysv.S 2383098329b ./libffi/src/debug.c --- 7579,7594 ---- 1812706554b ./libffi/acconfig.h 2067133813b ./libffi/acinclude.m4 3541235691b ./libffi/aclocal.m4 ! 1421737416b ./libffi/configure ! 2560983985b ./libffi/configure.in 2955525038b ./libffi/fficonfig.h.in 1175058075b ./libffi/include/Makefile.am 1670240125b ./libffi/include/Makefile.in 3520784265b ./libffi/include/ffi.h.in 3309556484b ./libffi/include/ffi_common.h 1647998382b ./libffi/include/ffi_mips.h ! 931496280b ./libffi/src/alpha/ffi.c ! 2032396460b ./libffi/src/alpha/osf.S 1858437870b ./libffi/src/arm/ffi.c 3794061997b ./libffi/src/arm/sysv.S 2383098329b ./libffi/src/debug.c *************** *** 7574,7584 **** 1736720411b ./libffi/src/sparc/v9.S 1207476889b ./libffi/src/types.c 1855580175b ./libffi/src/x86/ffi.c ! 3448680767b ./libffi/src/x86/sysv.S 4026965770b ./libffi/src/x86/win32.S 216805921b ./libffi/stamp-h.in 508743035b ./libiberty/COPYING.LIB ! 1961261613b ./libiberty/ChangeLog 1950042116b ./libiberty/Makefile.in 4016047250b ./libiberty/README 4152189310b ./libiberty/aclocal.m4 --- 7615,7625 ---- 1736720411b ./libffi/src/sparc/v9.S 1207476889b ./libffi/src/types.c 1855580175b ./libffi/src/x86/ffi.c ! 1417743400b ./libffi/src/x86/sysv.S 4026965770b ./libffi/src/x86/win32.S 216805921b ./libffi/stamp-h.in 508743035b ./libiberty/COPYING.LIB ! 1214041342b ./libiberty/ChangeLog 1950042116b ./libiberty/Makefile.in 4016047250b ./libiberty/README 4152189310b ./libiberty/aclocal.m4 *************** *** 7681,7708 **** 3859667112b ./libiberty/xstrdup.c 2509140929b ./libiberty/xstrerror.c 2171125041b ./libjava/COPYING ! 1986976820b ./libjava/ChangeLog 3473562392b ./libjava/ChangeLog-1999 2906142423b ./libjava/LIBGCJ_LICENSE ! 798608040b ./libjava/Makefile.am ! 3822452764b ./libjava/Makefile.in 4049677327b ./libjava/NEWS 3199155412b ./libjava/README 1242996640b ./libjava/THANKS ! 1129373528b ./libjava/acconfig.h ! 2518065128b ./libjava/acinclude.m4 ! 2355017630b ./libjava/aclocal.m4 3784840223b ./libjava/addr2name.awk 608342622b ./libjava/boehm.cc 1179658282b ./libjava/chartables.pl ! 3630731276b ./libjava/configure 3242339555b ./libjava/configure.host ! 1747363619b ./libjava/configure.in 3942405165b ./libjava/defineclass.cc 535801509b ./libjava/doc/cni.sgml 1132558953b ./libjava/exception.cc 2155926294b ./libjava/gcj/Makefile.am ! 3802650555b ./libjava/gcj/Makefile.in 3591403769b ./libjava/gcj/array.h 341624408b ./libjava/gcj/cni.h 227606957b ./libjava/gcj/field.h --- 7722,7750 ---- 3859667112b ./libiberty/xstrdup.c 2509140929b ./libiberty/xstrerror.c 2171125041b ./libjava/COPYING ! 3405806640b ./libjava/ChangeLog 3473562392b ./libjava/ChangeLog-1999 + 3913589198b ./libjava/HACKING 2906142423b ./libjava/LIBGCJ_LICENSE ! 1368636295b ./libjava/Makefile.am ! 2256360485b ./libjava/Makefile.in 4049677327b ./libjava/NEWS 3199155412b ./libjava/README 1242996640b ./libjava/THANKS ! 4020104846b ./libjava/acconfig.h ! 2834260208b ./libjava/acinclude.m4 ! 1842823374b ./libjava/aclocal.m4 3784840223b ./libjava/addr2name.awk 608342622b ./libjava/boehm.cc 1179658282b ./libjava/chartables.pl ! 4248440651b ./libjava/configure 3242339555b ./libjava/configure.host ! 2518793201b ./libjava/configure.in 3942405165b ./libjava/defineclass.cc 535801509b ./libjava/doc/cni.sgml 1132558953b ./libjava/exception.cc 2155926294b ./libjava/gcj/Makefile.am ! 991572967b ./libjava/gcj/Makefile.in 3591403769b ./libjava/gcj/array.h 341624408b ./libjava/gcj/cni.h 227606957b ./libjava/gcj/field.h *************** *** 7797,7803 **** 501773112b ./libjava/gnu/gcj/runtime/FileDeleter.java 3433902184b ./libjava/gnu/gcj/runtime/FirstThread.java 2884015653b ./libjava/gnu/gcj/runtime/VMClassLoader.java ! 2923267429b ./libjava/gnu/gcj/runtime/natFirstThread.cc 1287370049b ./libjava/gnu/gcj/text/BaseBreakIterator.java 3670914440b ./libjava/gnu/gcj/text/CharacterBreakIterator.java 1463280546b ./libjava/gnu/gcj/text/LineBreakIterator.java --- 7839,7845 ---- 501773112b ./libjava/gnu/gcj/runtime/FileDeleter.java 3433902184b ./libjava/gnu/gcj/runtime/FirstThread.java 2884015653b ./libjava/gnu/gcj/runtime/VMClassLoader.java ! 784657895b ./libjava/gnu/gcj/runtime/natFirstThread.cc 1287370049b ./libjava/gnu/gcj/text/BaseBreakIterator.java 3670914440b ./libjava/gnu/gcj/text/CharacterBreakIterator.java 1463280546b ./libjava/gnu/gcj/text/LineBreakIterator.java *************** *** 7878,7886 **** 61780098b ./libjava/gnu/java/security/provider/SHA.java 1906234033b ./libjava/gnu/java/security/provider/SHA1PRNG.java 2049405362b ./libjava/include/Makefile.am ! 161896176b ./libjava/include/Makefile.in 332977143b ./libjava/include/boehm-gc.h ! 1397687863b ./libjava/include/config.h.in 1108817619b ./libjava/include/default-signal.h 1148242917b ./libjava/include/dwarf2-signal.h 598122022b ./libjava/include/i386-signal.h --- 7920,7928 ---- 61780098b ./libjava/gnu/java/security/provider/SHA.java 1906234033b ./libjava/gnu/java/security/provider/SHA1PRNG.java 2049405362b ./libjava/include/Makefile.am ! 2120312729b ./libjava/include/Makefile.in 332977143b ./libjava/include/boehm-gc.h ! 287131728b ./libjava/include/config.h.in 1108817619b ./libjava/include/default-signal.h 1148242917b ./libjava/include/dwarf2-signal.h 598122022b ./libjava/include/i386-signal.h *************** *** 7898,7904 **** 528567171b ./libjava/include/no-gc.h 1417677646b ./libjava/include/no-threads.h 2127673017b ./libjava/include/posix-threads.h ! 1920034113b ./libjava/include/posix.h 2366673227b ./libjava/include/sparc-signal.h 216805921b ./libjava/include/stamp-h.in 2649356437b ./libjava/include/win32-signal.h --- 7940,7946 ---- 528567171b ./libjava/include/no-gc.h 1417677646b ./libjava/include/no-threads.h 2127673017b ./libjava/include/posix-threads.h ! 857399060b ./libjava/include/posix.h 2366673227b ./libjava/include/sparc-signal.h 216805921b ./libjava/include/stamp-h.in 2649356437b ./libjava/include/win32-signal.h *************** *** 8126,8132 **** 1792031297b ./libjava/java/io/DataOutputStream.java 4260863877b ./libjava/java/io/EOFException.java 3970357142b ./libjava/java/io/Externalizable.java ! 986948296b ./libjava/java/io/File.java 2504863172b ./libjava/java/io/FileDescriptor.java 4114330107b ./libjava/java/io/FileFilter.java 1347883250b ./libjava/java/io/FileInputStream.java --- 8168,8174 ---- 1792031297b ./libjava/java/io/DataOutputStream.java 4260863877b ./libjava/java/io/EOFException.java 3970357142b ./libjava/java/io/Externalizable.java ! 1700842754b ./libjava/java/io/File.java 2504863172b ./libjava/java/io/FileDescriptor.java 4114330107b ./libjava/java/io/FileFilter.java 1347883250b ./libjava/java/io/FileInputStream.java *************** *** 8185,8195 **** 3277438941b ./libjava/java/io/UnsupportedEncodingException.java 2331138641b ./libjava/java/io/WriteAbortedException.java 3305767237b ./libjava/java/io/Writer.java ! 2370234731b ./libjava/java/io/natFile.cc 1562521391b ./libjava/java/io/natFileDescriptorEcos.cc 2196097286b ./libjava/java/io/natFileDescriptorPosix.cc 3769648083b ./libjava/java/io/natFileDescriptorWin32.cc ! 3617706040b ./libjava/java/io/natFileWin32.cc 1248276847b ./libjava/java/io/natObjectInputStream.cc 4239505089b ./libjava/java/io/natObjectOutputStream.cc 1817734720b ./libjava/java/lang/AbstractMethodError.java --- 8227,8237 ---- 3277438941b ./libjava/java/io/UnsupportedEncodingException.java 2331138641b ./libjava/java/io/WriteAbortedException.java 3305767237b ./libjava/java/io/Writer.java ! 1332507382b ./libjava/java/io/natFile.cc 1562521391b ./libjava/java/io/natFileDescriptorEcos.cc 2196097286b ./libjava/java/io/natFileDescriptorPosix.cc 3769648083b ./libjava/java/io/natFileDescriptorWin32.cc ! 276931083b ./libjava/java/io/natFileWin32.cc 1248276847b ./libjava/java/io/natObjectInputStream.cc 4239505089b ./libjava/java/io/natObjectOutputStream.cc 1817734720b ./libjava/java/lang/AbstractMethodError.java *************** *** 8199,8205 **** 1949184473b ./libjava/java/lang/Boolean.java 3912602300b ./libjava/java/lang/Byte.java 1799924505b ./libjava/java/lang/Character.java ! 4176519023b ./libjava/java/lang/Class.h 2393404172b ./libjava/java/lang/Class.java 2465177804b ./libjava/java/lang/ClassCastException.java 522355456b ./libjava/java/lang/ClassCircularityError.java --- 8241,8247 ---- 1949184473b ./libjava/java/lang/Boolean.java 3912602300b ./libjava/java/lang/Byte.java 1799924505b ./libjava/java/lang/Character.java ! 1295012839b ./libjava/java/lang/Class.h 2393404172b ./libjava/java/lang/Class.java 2465177804b ./libjava/java/lang/ClassCastException.java 522355456b ./libjava/java/lang/ClassCircularityError.java *************** *** 8289,8295 **** 4037044768b ./libjava/java/lang/mprec.c 338852744b ./libjava/java/lang/mprec.h 1038271037b ./libjava/java/lang/natCharacter.cc ! 667115457b ./libjava/java/lang/natClass.cc 397542309b ./libjava/java/lang/natClassLoader.cc 299573242b ./libjava/java/lang/natDouble.cc 2312870767b ./libjava/java/lang/natEcosProcess.cc --- 8331,8337 ---- 4037044768b ./libjava/java/lang/mprec.c 338852744b ./libjava/java/lang/mprec.h 1038271037b ./libjava/java/lang/natCharacter.cc ! 1374869131b ./libjava/java/lang/natClass.cc 397542309b ./libjava/java/lang/natClassLoader.cc 299573242b ./libjava/java/lang/natDouble.cc 2312870767b ./libjava/java/lang/natEcosProcess.cc *************** *** 8377,8384 **** 4281924200b ./libjava/java/net/UnknownHostException.java 11968751b ./libjava/java/net/UnknownServiceException.java 1699982728b ./libjava/java/net/natInetAddress.cc ! 1852472560b ./libjava/java/net/natPlainDatagramSocketImpl.cc ! 197097593b ./libjava/java/net/natPlainSocketImpl.cc 993185288b ./libjava/java/security/AlgorithmParameterGeneratorSpi.java 228936680b ./libjava/java/security/BasicPermission.java 1209135215b ./libjava/java/security/DigestException.java --- 8419,8426 ---- 4281924200b ./libjava/java/net/UnknownHostException.java 11968751b ./libjava/java/net/UnknownServiceException.java 1699982728b ./libjava/java/net/natInetAddress.cc ! 2413567714b ./libjava/java/net/natPlainDatagramSocketImpl.cc ! 2428724788b ./libjava/java/net/natPlainSocketImpl.cc 993185288b ./libjava/java/security/AlgorithmParameterGeneratorSpi.java 228936680b ./libjava/java/security/BasicPermission.java 1209135215b ./libjava/java/security/DigestException.java *************** *** 8617,8636 **** 562080873b ./libjava/javax/naming/spi/ObjectFactory.java 1556519848b ./libjava/jni.cc 3263845190b ./libjava/libgcj-test.spec.in ! 2451640161b ./libjava/libgcj.spec.in 3693275905b ./libjava/libgcjdata.c 1996902805b ./libjava/libltdl/.cvsignore 1530919786b ./libjava/libltdl/COPYING.LIB ! 2158240030b ./libjava/libltdl/ChangeLog 3589765398b ./libjava/libltdl/Makefile.am ! 252857433b ./libjava/libltdl/Makefile.in 1322928877b ./libjava/libltdl/README 464053222b ./libjava/libltdl/acconfig.h 1486261890b ./libjava/libltdl/acinclude.m4 2748542911b ./libjava/libltdl/aclocal.m4 3229611250b ./libjava/libltdl/config.h.in ! 271069647b ./libjava/libltdl/configure ! 3115330048b ./libjava/libltdl/configure.in 1708336280b ./libjava/libltdl/ltdl.c 3122579166b ./libjava/libltdl/ltdl.h 216805921b ./libjava/libltdl/stamp-h.in --- 8659,8678 ---- 562080873b ./libjava/javax/naming/spi/ObjectFactory.java 1556519848b ./libjava/jni.cc 3263845190b ./libjava/libgcj-test.spec.in ! 1618850334b ./libjava/libgcj.spec.in 3693275905b ./libjava/libgcjdata.c 1996902805b ./libjava/libltdl/.cvsignore 1530919786b ./libjava/libltdl/COPYING.LIB ! 2940277496b ./libjava/libltdl/ChangeLog 3589765398b ./libjava/libltdl/Makefile.am ! 2495909158b ./libjava/libltdl/Makefile.in 1322928877b ./libjava/libltdl/README 464053222b ./libjava/libltdl/acconfig.h 1486261890b ./libjava/libltdl/acinclude.m4 2748542911b ./libjava/libltdl/aclocal.m4 3229611250b ./libjava/libltdl/config.h.in ! 1181542053b ./libjava/libltdl/configure ! 2859679520b ./libjava/libltdl/configure.in 1708336280b ./libjava/libltdl/ltdl.c 3122579166b ./libjava/libltdl/ltdl.h 216805921b ./libjava/libltdl/stamp-h.in *************** *** 8652,8662 **** 1359447378b ./libjava/scripts/showval.java 3969226176b ./libjava/sysdep/ia64-frame.h 4255020929b ./libjava/sysdep/ia64.c ! 2112666024b ./libjava/testsuite/ChangeLog 3806425466b ./libjava/testsuite/Makefile.am ! 1636438977b ./libjava/testsuite/Makefile.in 1230501773b ./libjava/testsuite/config/default.exp ! 1540994779b ./libjava/testsuite/lib/libjava.exp 2597392402b ./libjava/testsuite/libjava.compile/ArrayClass.java 2529689226b ./libjava/testsuite/libjava.compile/BlankFinal.java 2001362839b ./libjava/testsuite/libjava.compile/Case.java --- 8694,8704 ---- 1359447378b ./libjava/scripts/showval.java 3969226176b ./libjava/sysdep/ia64-frame.h 4255020929b ./libjava/sysdep/ia64.c ! 3850398201b ./libjava/testsuite/ChangeLog 3806425466b ./libjava/testsuite/Makefile.am ! 1253427395b ./libjava/testsuite/Makefile.in 1230501773b ./libjava/testsuite/config/default.exp ! 147133276b ./libjava/testsuite/lib/libjava.exp 2597392402b ./libjava/testsuite/libjava.compile/ArrayClass.java 2529689226b ./libjava/testsuite/libjava.compile/BlankFinal.java 2001362839b ./libjava/testsuite/libjava.compile/Case.java *************** *** 9011,9017 **** 1032868016b ./libjava/testsuite/libjava.mauve/mauve.exp 168151904b ./libjava/testsuite/libjava.mauve/xfails 1531406287b ./libjava/win32-threads.cc ! 3770327569b ./libobjc/ChangeLog 3802413505b ./libobjc/Makefile.in 638422313b ./libobjc/NXConstStr.m 3285287551b ./libobjc/Object.m --- 9053,9059 ---- 1032868016b ./libjava/testsuite/libjava.mauve/mauve.exp 168151904b ./libjava/testsuite/libjava.mauve/xfails 1531406287b ./libjava/win32-threads.cc ! 866224902b ./libobjc/ChangeLog 3802413505b ./libobjc/Makefile.in 638422313b ./libobjc/NXConstStr.m 3285287551b ./libobjc/Object.m *************** *** 9041,9047 **** 226797930b ./libobjc/objc/Protocol.h 1692177559b ./libobjc/objc/encoding.h 597415090b ./libobjc/objc/hash.h ! 3864355605b ./libobjc/objc/objc-api.h 1569406371b ./libobjc/objc/objc-list.h 2946018502b ./libobjc/objc/objc.h 1775267864b ./libobjc/objc/runtime.h --- 9083,9089 ---- 226797930b ./libobjc/objc/Protocol.h 1692177559b ./libobjc/objc/encoding.h 597415090b ./libobjc/objc/hash.h ! 4211776544b ./libobjc/objc/objc-api.h 1569406371b ./libobjc/objc/objc-list.h 2946018502b ./libobjc/objc/objc.h 1775267864b ./libobjc/objc/runtime.h *************** *** 9066,9080 **** 2005277748b ./libobjc/thr-vxworks.c 2963027857b ./libobjc/thr-win32.c 1509327042b ./libobjc/thr.c ! 3772525642b ./libstdc++-v3/ChangeLog 4193951875b ./libstdc++-v3/ChangeLog-2000 ! 738501771b ./libstdc++-v3/Makefile.am ! 2567578804b ./libstdc++-v3/Makefile.in 476340085b ./libstdc++-v3/README 3623435792b ./libstdc++-v3/acconfig.h ! 2034395934b ./libstdc++-v3/acinclude.m4 ! 3101871203b ./libstdc++-v3/aclocal.m4 ! 3586730381b ./libstdc++-v3/config.h.in 1453199454b ./libstdc++-v3/config/basic_file_libio.cc 440650960b ./libstdc++-v3/config/basic_file_libio.h 3327448769b ./libstdc++-v3/config/basic_file_stdio.cc --- 9108,9122 ---- 2005277748b ./libobjc/thr-vxworks.c 2963027857b ./libobjc/thr-win32.c 1509327042b ./libobjc/thr.c ! 427182117b ./libstdc++-v3/ChangeLog 4193951875b ./libstdc++-v3/ChangeLog-2000 ! 2983129040b ./libstdc++-v3/Makefile.am ! 188555504b ./libstdc++-v3/Makefile.in 476340085b ./libstdc++-v3/README 3623435792b ./libstdc++-v3/acconfig.h ! 2868158659b ./libstdc++-v3/acinclude.m4 ! 2329293138b ./libstdc++-v3/aclocal.m4 ! 1314486850b ./libstdc++-v3/config.h.in 1453199454b ./libstdc++-v3/config/basic_file_libio.cc 440650960b ./libstdc++-v3/config/basic_file_libio.h 3327448769b ./libstdc++-v3/config/basic_file_stdio.cc *************** *** 9089,9105 **** 2418599665b ./libstdc++-v3/config/cpu/alpha/bits/atomicity.h 337654572b ./libstdc++-v3/config/cpu/arm/bits/atomicity.h 4265367019b ./libstdc++-v3/config/cpu/generic/bits/atomicity.h 2485610863b ./libstdc++-v3/config/cpu/i386/bits/atomicity.h 2887076979b ./libstdc++-v3/config/cpu/i486/bits/atomicity.h 3880622031b ./libstdc++-v3/config/cpu/ia64/bits/atomicity.h 632361011b ./libstdc++-v3/config/cpu/powerpc/bits/atomicity.h 2909203810b ./libstdc++-v3/config/cpu/sparc/sparc32/bits/atomicity.h 2358797811b ./libstdc++-v3/config/cpu/sparc/sparc64/bits/atomicity.h 4256387970b ./libstdc++-v3/config/os/aix/bits/atomicity.h 2669974896b ./libstdc++-v3/config/os/aix/bits/ctype_base.h 3165823414b ./libstdc++-v3/config/os/aix/bits/ctype_inline.h 2776462375b ./libstdc++-v3/config/os/aix/bits/ctype_noninline.h ! 1023268488b ./libstdc++-v3/config/os/aix/bits/os_defines.h 537966674b ./libstdc++-v3/config/os/bsd/freebsd/bits/ctype_base.h 2331573625b ./libstdc++-v3/config/os/bsd/freebsd/bits/ctype_inline.h 3790282654b ./libstdc++-v3/config/os/bsd/freebsd/bits/ctype_noninline.h --- 9131,9153 ---- 2418599665b ./libstdc++-v3/config/cpu/alpha/bits/atomicity.h 337654572b ./libstdc++-v3/config/cpu/arm/bits/atomicity.h 4265367019b ./libstdc++-v3/config/cpu/generic/bits/atomicity.h + 1670735336b ./libstdc++-v3/config/cpu/generic/bits/limits.h 2485610863b ./libstdc++-v3/config/cpu/i386/bits/atomicity.h + 593957722b ./libstdc++-v3/config/cpu/i386/bits/limits.h 2887076979b ./libstdc++-v3/config/cpu/i486/bits/atomicity.h 3880622031b ./libstdc++-v3/config/cpu/ia64/bits/atomicity.h + 2211053124b ./libstdc++-v3/config/cpu/m68k/bits/atomicity.h + 4192061837b ./libstdc++-v3/config/cpu/mips/bits/atomicity.h 632361011b ./libstdc++-v3/config/cpu/powerpc/bits/atomicity.h + 2029688870b ./libstdc++-v3/config/cpu/powerpc/bits/limits.h + 3930061484b ./libstdc++-v3/config/cpu/s390/bits/atomicity.h 2909203810b ./libstdc++-v3/config/cpu/sparc/sparc32/bits/atomicity.h 2358797811b ./libstdc++-v3/config/cpu/sparc/sparc64/bits/atomicity.h 4256387970b ./libstdc++-v3/config/os/aix/bits/atomicity.h 2669974896b ./libstdc++-v3/config/os/aix/bits/ctype_base.h 3165823414b ./libstdc++-v3/config/os/aix/bits/ctype_inline.h 2776462375b ./libstdc++-v3/config/os/aix/bits/ctype_noninline.h ! 2686194341b ./libstdc++-v3/config/os/aix/bits/os_defines.h 537966674b ./libstdc++-v3/config/os/bsd/freebsd/bits/ctype_base.h 2331573625b ./libstdc++-v3/config/os/bsd/freebsd/bits/ctype_inline.h 3790282654b ./libstdc++-v3/config/os/bsd/freebsd/bits/ctype_noninline.h *************** *** 9115,9129 **** 297286676b ./libstdc++-v3/config/os/generic/bits/ctype_base.h 3751997700b ./libstdc++-v3/config/os/generic/bits/ctype_inline.h 1959980985b ./libstdc++-v3/config/os/generic/bits/ctype_noninline.h ! 3217385665b ./libstdc++-v3/config/os/generic/bits/os_defines.h 1667394230b ./libstdc++-v3/config/os/gnu-linux/bits/ctype_base.h 172209115b ./libstdc++-v3/config/os/gnu-linux/bits/ctype_inline.h 2769914139b ./libstdc++-v3/config/os/gnu-linux/bits/ctype_noninline.h ! 512938248b ./libstdc++-v3/config/os/gnu-linux/bits/os_defines.h 2680166297b ./libstdc++-v3/config/os/hpux/bits/ctype_base.h 521899911b ./libstdc++-v3/config/os/hpux/bits/ctype_inline.h 1959980985b ./libstdc++-v3/config/os/hpux/bits/ctype_noninline.h ! 3270370488b ./libstdc++-v3/config/os/hpux/bits/os_defines.h 805235121b ./libstdc++-v3/config/os/irix/irix5.2/bits/atomicity.h 734403019b ./libstdc++-v3/config/os/irix/irix5.2/bits/ctype_base.h 3968534641b ./libstdc++-v3/config/os/irix/irix5.2/bits/ctype_inline.h --- 9163,9177 ---- 297286676b ./libstdc++-v3/config/os/generic/bits/ctype_base.h 3751997700b ./libstdc++-v3/config/os/generic/bits/ctype_inline.h 1959980985b ./libstdc++-v3/config/os/generic/bits/ctype_noninline.h ! 242441459b ./libstdc++-v3/config/os/generic/bits/os_defines.h 1667394230b ./libstdc++-v3/config/os/gnu-linux/bits/ctype_base.h 172209115b ./libstdc++-v3/config/os/gnu-linux/bits/ctype_inline.h 2769914139b ./libstdc++-v3/config/os/gnu-linux/bits/ctype_noninline.h ! 2434064470b ./libstdc++-v3/config/os/gnu-linux/bits/os_defines.h 2680166297b ./libstdc++-v3/config/os/hpux/bits/ctype_base.h 521899911b ./libstdc++-v3/config/os/hpux/bits/ctype_inline.h 1959980985b ./libstdc++-v3/config/os/hpux/bits/ctype_noninline.h ! 2177574233b ./libstdc++-v3/config/os/hpux/bits/os_defines.h 805235121b ./libstdc++-v3/config/os/irix/irix5.2/bits/atomicity.h 734403019b ./libstdc++-v3/config/os/irix/irix5.2/bits/ctype_base.h 3968534641b ./libstdc++-v3/config/os/irix/irix5.2/bits/ctype_inline.h *************** *** 9133,9139 **** 1682275129b ./libstdc++-v3/config/os/irix/irix6.5/bits/ctype_base.h 363484342b ./libstdc++-v3/config/os/irix/irix6.5/bits/ctype_inline.h 257232326b ./libstdc++-v3/config/os/irix/irix6.5/bits/ctype_noninline.h ! 1674913545b ./libstdc++-v3/config/os/irix/irix6.5/bits/os_defines.h 1435551091b ./libstdc++-v3/config/os/newlib/bits/ctype_base.h 3131508399b ./libstdc++-v3/config/os/newlib/bits/ctype_inline.h 456723072b ./libstdc++-v3/config/os/newlib/bits/ctype_noninline.h --- 9181,9187 ---- 1682275129b ./libstdc++-v3/config/os/irix/irix6.5/bits/ctype_base.h 363484342b ./libstdc++-v3/config/os/irix/irix6.5/bits/ctype_inline.h 257232326b ./libstdc++-v3/config/os/irix/irix6.5/bits/ctype_noninline.h ! 3096266225b ./libstdc++-v3/config/os/irix/irix6.5/bits/os_defines.h 1435551091b ./libstdc++-v3/config/os/newlib/bits/ctype_base.h 3131508399b ./libstdc++-v3/config/os/newlib/bits/ctype_inline.h 456723072b ./libstdc++-v3/config/os/newlib/bits/ctype_noninline.h *************** *** 9149,9164 **** 2023078243b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_base.h 3980190828b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_inline.h 1735304697b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_noninline.h ! 1130388555b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h ! 4214370852b ./libstdc++-v3/configure 3116040814b ./libstdc++-v3/configure.host ! 3178961924b ./libstdc++-v3/configure.in ! 2270895925b ./libstdc++-v3/configure.target 4163616924b ./libstdc++-v3/docs/doxygen/mainpage.doxy 225771389b ./libstdc++-v3/docs/doxygen/maint.cfg.in ! 3618720064b ./libstdc++-v3/docs/doxygen/run_doxygen 863086283b ./libstdc++-v3/docs/doxygen/style.css ! 4200851398b ./libstdc++-v3/docs/doxygen/user.cfg.in 4001239912b ./libstdc++-v3/docs/html/17_intro/BADNAMES 1897516117b ./libstdc++-v3/docs/html/17_intro/BUGS 1994659480b ./libstdc++-v3/docs/html/17_intro/C++STYLE --- 9197,9212 ---- 2023078243b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_base.h 3980190828b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_inline.h 1735304697b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_noninline.h ! 186536916b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h ! 3525118264b ./libstdc++-v3/configure 3116040814b ./libstdc++-v3/configure.host ! 3995946368b ./libstdc++-v3/configure.in ! 3653801858b ./libstdc++-v3/configure.target 4163616924b ./libstdc++-v3/docs/doxygen/mainpage.doxy 225771389b ./libstdc++-v3/docs/doxygen/maint.cfg.in ! 2208204477b ./libstdc++-v3/docs/doxygen/run_doxygen 863086283b ./libstdc++-v3/docs/doxygen/style.css ! 404838806b ./libstdc++-v3/docs/doxygen/user.cfg.in 4001239912b ./libstdc++-v3/docs/html/17_intro/BADNAMES 1897516117b ./libstdc++-v3/docs/html/17_intro/BUGS 1994659480b ./libstdc++-v3/docs/html/17_intro/C++STYLE *************** *** 9175,9181 **** 3580331685b ./libstdc++-v3/docs/html/17_intro/howto.html 3565645043b ./libstdc++-v3/docs/html/17_intro/libstdc++-assign.txt 982764901b ./libstdc++-v3/docs/html/17_intro/organization ! 1318998220b ./libstdc++-v3/docs/html/17_intro/porting-howto.html 760129033b ./libstdc++-v3/docs/html/18_support/howto.html 3928858592b ./libstdc++-v3/docs/html/19_diagnostics/howto.html 839083338b ./libstdc++-v3/docs/html/20_util/howto.html --- 9223,9230 ---- 3580331685b ./libstdc++-v3/docs/html/17_intro/howto.html 3565645043b ./libstdc++-v3/docs/html/17_intro/libstdc++-assign.txt 982764901b ./libstdc++-v3/docs/html/17_intro/organization ! 1278915005b ./libstdc++-v3/docs/html/17_intro/porting-howto.html ! 3336170739b ./libstdc++-v3/docs/html/17_intro/porting-howto.xml 760129033b ./libstdc++-v3/docs/html/18_support/howto.html 3928858592b ./libstdc++-v3/docs/html/19_diagnostics/howto.html 839083338b ./libstdc++-v3/docs/html/20_util/howto.html *************** *** 9194,9343 **** 1991083162b ./libstdc++-v3/docs/html/26_numerics/howto.html 2452165260b ./libstdc++-v3/docs/html/27_io/binary_iostreams_kanze.txt 3249620502b ./libstdc++-v3/docs/html/27_io/binary_iostreams_kuehl.txt ! 4018695368b ./libstdc++-v3/docs/html/27_io/howto.html 1631173890b ./libstdc++-v3/docs/html/Makefile ! 105004799b ./libstdc++-v3/docs/html/configopts.html 658418595b ./libstdc++-v3/docs/html/documentation.html 1651767880b ./libstdc++-v3/docs/html/ext/howto.html ! 2876047722b ./libstdc++-v3/docs/html/faq/index.html ! 3973418697b ./libstdc++-v3/docs/html/faq/index.txt 122913300b ./libstdc++-v3/docs/html/install.html 2049389478b ./libstdc++-v3/docs/html/lib3styles.css ! 3214372194b ./libstdc++-v3/include/backward/algo.h ! 2295181794b ./libstdc++-v3/include/backward/algobase.h ! 1823418083b ./libstdc++-v3/include/backward/alloc.h 3605066841b ./libstdc++-v3/include/backward/backward_warning.h ! 2795227960b ./libstdc++-v3/include/backward/bvector.h 3947901111b ./libstdc++-v3/include/backward/complex.h ! 2212442834b ./libstdc++-v3/include/backward/defalloc.h ! 672925201b ./libstdc++-v3/include/backward/deque.h 2323541526b ./libstdc++-v3/include/backward/fstream.h ! 1675220275b ./libstdc++-v3/include/backward/function.h ! 4229558428b ./libstdc++-v3/include/backward/hash_map.h ! 661625748b ./libstdc++-v3/include/backward/hash_set.h ! 1711043863b ./libstdc++-v3/include/backward/hashtable.h ! 202581693b ./libstdc++-v3/include/backward/heap.h 2989618329b ./libstdc++-v3/include/backward/iomanip.h 1747716150b ./libstdc++-v3/include/backward/iostream.h 1766778751b ./libstdc++-v3/include/backward/istream.h ! 2742254592b ./libstdc++-v3/include/backward/iterator.h ! 2453167247b ./libstdc++-v3/include/backward/list.h ! 3955550623b ./libstdc++-v3/include/backward/map.h ! 2495688261b ./libstdc++-v3/include/backward/multimap.h ! 2384707565b ./libstdc++-v3/include/backward/multiset.h 1959434229b ./libstdc++-v3/include/backward/new.h 3127480935b ./libstdc++-v3/include/backward/ostream.h ! 2479630664b ./libstdc++-v3/include/backward/pair.h 800595743b ./libstdc++-v3/include/backward/queue.h ! 1681437914b ./libstdc++-v3/include/backward/rope.h ! 208858773b ./libstdc++-v3/include/backward/set.h ! 2879855659b ./libstdc++-v3/include/backward/slist.h ! 2262649092b ./libstdc++-v3/include/backward/stack.h 2367779603b ./libstdc++-v3/include/backward/stream.h 3194664680b ./libstdc++-v3/include/backward/streambuf.h ! 4280906497b ./libstdc++-v3/include/backward/strstream 3139222786b ./libstdc++-v3/include/backward/strstream.h ! 2614951447b ./libstdc++-v3/include/backward/tempbuf.h ! 3440572544b ./libstdc++-v3/include/backward/tree.h ! 2342854974b ./libstdc++-v3/include/backward/vector.h 4248267406b ./libstdc++-v3/include/bits/basic_file.h 2964830866b ./libstdc++-v3/include/bits/basic_ios.h 2254012334b ./libstdc++-v3/include/bits/basic_ios.tcc ! 3718531203b ./libstdc++-v3/include/bits/basic_string.h ! 1657117454b ./libstdc++-v3/include/bits/basic_string.tcc 1664028266b ./libstdc++-v3/include/bits/boost_concept_check.h ! 3120336262b ./libstdc++-v3/include/bits/c++config ! 1308373582b ./libstdc++-v3/include/bits/char_traits.h 2805936695b ./libstdc++-v3/include/bits/codecvt.h 4120003531b ./libstdc++-v3/include/bits/concept_check.h 4222967943b ./libstdc++-v3/include/bits/concept_checks.h 3638262457b ./libstdc++-v3/include/bits/container_concepts.h 3915319002b ./libstdc++-v3/include/bits/cpp_type_traits.h 1601132351b ./libstdc++-v3/include/bits/fpos.h ! 3346516294b ./libstdc++-v3/include/bits/fstream.tcc 3886600201b ./libstdc++-v3/include/bits/functexcept.h 3431103117b ./libstdc++-v3/include/bits/generic_shadow.h 704022289b ./libstdc++-v3/include/bits/gslice.h 2680318333b ./libstdc++-v3/include/bits/gslice_array.h 3437988551b ./libstdc++-v3/include/bits/indirect_array.h 354751699b ./libstdc++-v3/include/bits/ios_base.h ! 1729704787b ./libstdc++-v3/include/bits/istream.tcc ! 1266456997b ./libstdc++-v3/include/bits/limits_generic.h 2347240123b ./libstdc++-v3/include/bits/locale_facets.h 4169892956b ./libstdc++-v3/include/bits/locale_facets.tcc 1654371752b ./libstdc++-v3/include/bits/localefwd.h 1773064307b ./libstdc++-v3/include/bits/mask_array.h 4212032713b ./libstdc++-v3/include/bits/ostream.tcc ! 3687512722b ./libstdc++-v3/include/bits/pthread_allocimpl.h 3133412073b ./libstdc++-v3/include/bits/sbuf_iter.h 4271226930b ./libstdc++-v3/include/bits/sequence_concepts.h 3998840520b ./libstdc++-v3/include/bits/slice.h 2371332296b ./libstdc++-v3/include/bits/slice_array.h ! 4036109720b ./libstdc++-v3/include/bits/sstream.tcc ! 2960553264b ./libstdc++-v3/include/bits/std_algorithm.h ! 3923119003b ./libstdc++-v3/include/bits/std_bitset.h ! 3808144147b ./libstdc++-v3/include/bits/std_complex.h ! 621971001b ./libstdc++-v3/include/bits/std_deque.h 1480548940b ./libstdc++-v3/include/bits/std_fstream.h ! 2164096612b ./libstdc++-v3/include/bits/std_functional.h 3352468770b ./libstdc++-v3/include/bits/std_iomanip.h 488282993b ./libstdc++-v3/include/bits/std_ios.h 1205323902b ./libstdc++-v3/include/bits/std_iosfwd.h 2709925409b ./libstdc++-v3/include/bits/std_iostream.h ! 360789683b ./libstdc++-v3/include/bits/std_istream.h ! 976786032b ./libstdc++-v3/include/bits/std_iterator.h ! 1716880668b ./libstdc++-v3/include/bits/std_list.h 3961142338b ./libstdc++-v3/include/bits/std_locale.h ! 2274087964b ./libstdc++-v3/include/bits/std_map.h ! 2882257112b ./libstdc++-v3/include/bits/std_memory.h ! 1193934437b ./libstdc++-v3/include/bits/std_numeric.h 2285426606b ./libstdc++-v3/include/bits/std_ostream.h ! 2212752790b ./libstdc++-v3/include/bits/std_queue.h ! 3254934855b ./libstdc++-v3/include/bits/std_set.h ! 671054152b ./libstdc++-v3/include/bits/std_sstream.h ! 109420361b ./libstdc++-v3/include/bits/std_stack.h ! 303255994b ./libstdc++-v3/include/bits/std_stdexcept.h 4010253753b ./libstdc++-v3/include/bits/std_streambuf.h 1317538322b ./libstdc++-v3/include/bits/std_string.h ! 2343886017b ./libstdc++-v3/include/bits/std_utility.h 3199914954b ./libstdc++-v3/include/bits/std_valarray.h ! 2359660614b ./libstdc++-v3/include/bits/std_vector.h ! 2532906966b ./libstdc++-v3/include/bits/stl_algo.h ! 1028946796b ./libstdc++-v3/include/bits/stl_algobase.h ! 791817473b ./libstdc++-v3/include/bits/stl_alloc.h ! 2497009473b ./libstdc++-v3/include/bits/stl_bvector.h 2179796154b ./libstdc++-v3/include/bits/stl_config.h ! 3899000506b ./libstdc++-v3/include/bits/stl_construct.h ! 861034895b ./libstdc++-v3/include/bits/stl_deque.h ! 4127464935b ./libstdc++-v3/include/bits/stl_function.h ! 2028203884b ./libstdc++-v3/include/bits/stl_heap.h ! 808944770b ./libstdc++-v3/include/bits/stl_iterator.h 181127396b ./libstdc++-v3/include/bits/stl_iterator_base.h ! 1915896363b ./libstdc++-v3/include/bits/stl_iterator_base_funcs.h ! 520923396b ./libstdc++-v3/include/bits/stl_iterator_base_types.h ! 1047399090b ./libstdc++-v3/include/bits/stl_list.h ! 4236527790b ./libstdc++-v3/include/bits/stl_map.h ! 4222750908b ./libstdc++-v3/include/bits/stl_multimap.h ! 2826619058b ./libstdc++-v3/include/bits/stl_multiset.h ! 1746963659b ./libstdc++-v3/include/bits/stl_numeric.h ! 1590380326b ./libstdc++-v3/include/bits/stl_pair.h ! 915298042b ./libstdc++-v3/include/bits/stl_pthread_alloc.h ! 588063054b ./libstdc++-v3/include/bits/stl_queue.h ! 1267656046b ./libstdc++-v3/include/bits/stl_raw_storage_iter.h ! 3245451035b ./libstdc++-v3/include/bits/stl_relops.h ! 158525970b ./libstdc++-v3/include/bits/stl_set.h ! 1020648860b ./libstdc++-v3/include/bits/stl_stack.h ! 1966304616b ./libstdc++-v3/include/bits/stl_tempbuf.h ! 3238588761b ./libstdc++-v3/include/bits/stl_threads.h ! 816994970b ./libstdc++-v3/include/bits/stl_tree.h ! 1244942255b ./libstdc++-v3/include/bits/stl_uninitialized.h ! 4204163989b ./libstdc++-v3/include/bits/stl_vector.h ! 1699005776b ./libstdc++-v3/include/bits/streambuf.tcc ! 2705556592b ./libstdc++-v3/include/bits/stringfwd.h ! 2753100055b ./libstdc++-v3/include/bits/type_traits.h 1275731289b ./libstdc++-v3/include/bits/valarray_array.h 1408725829b ./libstdc++-v3/include/bits/valarray_array.tcc ! 1480998652b ./libstdc++-v3/include/bits/valarray_meta.h 3294031792b ./libstdc++-v3/include/c/bits/std_cassert.h 1463522619b ./libstdc++-v3/include/c/bits/std_cctype.h 2203354679b ./libstdc++-v3/include/c/bits/std_cerrno.h --- 9243,9396 ---- 1991083162b ./libstdc++-v3/docs/html/26_numerics/howto.html 2452165260b ./libstdc++-v3/docs/html/27_io/binary_iostreams_kanze.txt 3249620502b ./libstdc++-v3/docs/html/27_io/binary_iostreams_kuehl.txt ! 3473074324b ./libstdc++-v3/docs/html/27_io/howto.html 1631173890b ./libstdc++-v3/docs/html/Makefile ! 2575593071b ./libstdc++-v3/docs/html/configopts.html 658418595b ./libstdc++-v3/docs/html/documentation.html + 2090229703b ./libstdc++-v3/docs/html/explanations.html 1651767880b ./libstdc++-v3/docs/html/ext/howto.html ! 3210824684b ./libstdc++-v3/docs/html/faq/index.html ! 3130354152b ./libstdc++-v3/docs/html/faq/index.txt 122913300b ./libstdc++-v3/docs/html/install.html 2049389478b ./libstdc++-v3/docs/html/lib3styles.css ! 4020997386b ./libstdc++-v3/include/Makefile.am ! 3653389813b ./libstdc++-v3/include/Makefile.in ! 3124086694b ./libstdc++-v3/include/backward/algo.h ! 3952415343b ./libstdc++-v3/include/backward/algobase.h ! 3083859890b ./libstdc++-v3/include/backward/alloc.h 3605066841b ./libstdc++-v3/include/backward/backward_warning.h ! 1443940237b ./libstdc++-v3/include/backward/bvector.h 3947901111b ./libstdc++-v3/include/backward/complex.h ! 397779689b ./libstdc++-v3/include/backward/defalloc.h ! 2793317910b ./libstdc++-v3/include/backward/deque.h 2323541526b ./libstdc++-v3/include/backward/fstream.h ! 678000316b ./libstdc++-v3/include/backward/function.h ! 1302395673b ./libstdc++-v3/include/backward/hash_map.h ! 2957554616b ./libstdc++-v3/include/backward/hash_set.h ! 1416592786b ./libstdc++-v3/include/backward/hashtable.h ! 3255441651b ./libstdc++-v3/include/backward/heap.h 2989618329b ./libstdc++-v3/include/backward/iomanip.h 1747716150b ./libstdc++-v3/include/backward/iostream.h 1766778751b ./libstdc++-v3/include/backward/istream.h ! 2552098315b ./libstdc++-v3/include/backward/iterator.h ! 475724936b ./libstdc++-v3/include/backward/list.h ! 2239784128b ./libstdc++-v3/include/backward/map.h ! 331224518b ./libstdc++-v3/include/backward/multimap.h ! 157058158b ./libstdc++-v3/include/backward/multiset.h 1959434229b ./libstdc++-v3/include/backward/new.h 3127480935b ./libstdc++-v3/include/backward/ostream.h ! 1702071145b ./libstdc++-v3/include/backward/pair.h 800595743b ./libstdc++-v3/include/backward/queue.h ! 1028905566b ./libstdc++-v3/include/backward/rope.h ! 1647731658b ./libstdc++-v3/include/backward/set.h ! 3815267460b ./libstdc++-v3/include/backward/slist.h ! 1493269043b ./libstdc++-v3/include/backward/stack.h 2367779603b ./libstdc++-v3/include/backward/stream.h 3194664680b ./libstdc++-v3/include/backward/streambuf.h ! 3842161536b ./libstdc++-v3/include/backward/strstream 3139222786b ./libstdc++-v3/include/backward/strstream.h ! 65721256b ./libstdc++-v3/include/backward/tempbuf.h ! 418149387b ./libstdc++-v3/include/backward/tree.h ! 3110792059b ./libstdc++-v3/include/backward/vector.h 4248267406b ./libstdc++-v3/include/bits/basic_file.h 2964830866b ./libstdc++-v3/include/bits/basic_ios.h 2254012334b ./libstdc++-v3/include/bits/basic_ios.tcc ! 2082508960b ./libstdc++-v3/include/bits/basic_string.h ! 1857306722b ./libstdc++-v3/include/bits/basic_string.tcc 1664028266b ./libstdc++-v3/include/bits/boost_concept_check.h ! 2383241272b ./libstdc++-v3/include/bits/c++config ! 2314692779b ./libstdc++-v3/include/bits/char_traits.h 2805936695b ./libstdc++-v3/include/bits/codecvt.h 4120003531b ./libstdc++-v3/include/bits/concept_check.h 4222967943b ./libstdc++-v3/include/bits/concept_checks.h 3638262457b ./libstdc++-v3/include/bits/container_concepts.h 3915319002b ./libstdc++-v3/include/bits/cpp_type_traits.h 1601132351b ./libstdc++-v3/include/bits/fpos.h ! 3545962146b ./libstdc++-v3/include/bits/fstream.tcc 3886600201b ./libstdc++-v3/include/bits/functexcept.h 3431103117b ./libstdc++-v3/include/bits/generic_shadow.h 704022289b ./libstdc++-v3/include/bits/gslice.h 2680318333b ./libstdc++-v3/include/bits/gslice_array.h 3437988551b ./libstdc++-v3/include/bits/indirect_array.h 354751699b ./libstdc++-v3/include/bits/ios_base.h ! 2213504588b ./libstdc++-v3/include/bits/istream.tcc ! 2076404966b ./libstdc++-v3/include/bits/limits_generic.h 2347240123b ./libstdc++-v3/include/bits/locale_facets.h 4169892956b ./libstdc++-v3/include/bits/locale_facets.tcc 1654371752b ./libstdc++-v3/include/bits/localefwd.h 1773064307b ./libstdc++-v3/include/bits/mask_array.h 4212032713b ./libstdc++-v3/include/bits/ostream.tcc ! 1424261561b ./libstdc++-v3/include/bits/pthread_allocimpl.h 3133412073b ./libstdc++-v3/include/bits/sbuf_iter.h 4271226930b ./libstdc++-v3/include/bits/sequence_concepts.h 3998840520b ./libstdc++-v3/include/bits/slice.h 2371332296b ./libstdc++-v3/include/bits/slice_array.h ! 3436409662b ./libstdc++-v3/include/bits/sstream.tcc ! 289136488b ./libstdc++-v3/include/bits/std_algorithm.h ! 2190102835b ./libstdc++-v3/include/bits/std_bitset.h ! 1951420756b ./libstdc++-v3/include/bits/std_complex.h ! 2026387708b ./libstdc++-v3/include/bits/std_deque.h 1480548940b ./libstdc++-v3/include/bits/std_fstream.h ! 909850763b ./libstdc++-v3/include/bits/std_functional.h 3352468770b ./libstdc++-v3/include/bits/std_iomanip.h 488282993b ./libstdc++-v3/include/bits/std_ios.h 1205323902b ./libstdc++-v3/include/bits/std_iosfwd.h 2709925409b ./libstdc++-v3/include/bits/std_iostream.h ! 570267107b ./libstdc++-v3/include/bits/std_istream.h ! 2834882043b ./libstdc++-v3/include/bits/std_iterator.h ! 4140823078b ./libstdc++-v3/include/bits/std_limits.h ! 2877785888b ./libstdc++-v3/include/bits/std_list.h 3961142338b ./libstdc++-v3/include/bits/std_locale.h ! 201090893b ./libstdc++-v3/include/bits/std_map.h ! 1460768210b ./libstdc++-v3/include/bits/std_memory.h ! 2302451537b ./libstdc++-v3/include/bits/std_numeric.h 2285426606b ./libstdc++-v3/include/bits/std_ostream.h ! 3179131913b ./libstdc++-v3/include/bits/std_queue.h ! 3133393677b ./libstdc++-v3/include/bits/std_set.h ! 1371200050b ./libstdc++-v3/include/bits/std_sstream.h ! 3598384035b ./libstdc++-v3/include/bits/std_stack.h ! 2264027066b ./libstdc++-v3/include/bits/std_stdexcept.h 4010253753b ./libstdc++-v3/include/bits/std_streambuf.h 1317538322b ./libstdc++-v3/include/bits/std_string.h ! 2339103859b ./libstdc++-v3/include/bits/std_utility.h 3199914954b ./libstdc++-v3/include/bits/std_valarray.h ! 258120529b ./libstdc++-v3/include/bits/std_vector.h ! 1915896541b ./libstdc++-v3/include/bits/stl_algo.h ! 3737848625b ./libstdc++-v3/include/bits/stl_algobase.h ! 1733002409b ./libstdc++-v3/include/bits/stl_alloc.h ! 1901902183b ./libstdc++-v3/include/bits/stl_bvector.h 2179796154b ./libstdc++-v3/include/bits/stl_config.h ! 2878454282b ./libstdc++-v3/include/bits/stl_construct.h ! 3420405531b ./libstdc++-v3/include/bits/stl_deque.h ! 1616976213b ./libstdc++-v3/include/bits/stl_function.h ! 3262343598b ./libstdc++-v3/include/bits/stl_heap.h ! 38213228b ./libstdc++-v3/include/bits/stl_iterator.h 181127396b ./libstdc++-v3/include/bits/stl_iterator_base.h ! 3659610962b ./libstdc++-v3/include/bits/stl_iterator_base_funcs.h ! 3251128673b ./libstdc++-v3/include/bits/stl_iterator_base_types.h ! 1963814561b ./libstdc++-v3/include/bits/stl_list.h ! 3450924006b ./libstdc++-v3/include/bits/stl_map.h ! 736048442b ./libstdc++-v3/include/bits/stl_multimap.h ! 1140070258b ./libstdc++-v3/include/bits/stl_multiset.h ! 2219429302b ./libstdc++-v3/include/bits/stl_numeric.h ! 1877454624b ./libstdc++-v3/include/bits/stl_pair.h ! 2893938050b ./libstdc++-v3/include/bits/stl_pthread_alloc.h ! 3110972640b ./libstdc++-v3/include/bits/stl_queue.h ! 2641345647b ./libstdc++-v3/include/bits/stl_raw_storage_iter.h ! 2949788455b ./libstdc++-v3/include/bits/stl_relops.h ! 451857313b ./libstdc++-v3/include/bits/stl_set.h ! 4190899759b ./libstdc++-v3/include/bits/stl_stack.h ! 2706761852b ./libstdc++-v3/include/bits/stl_tempbuf.h ! 4173037205b ./libstdc++-v3/include/bits/stl_threads.h ! 800388815b ./libstdc++-v3/include/bits/stl_tree.h ! 2510296522b ./libstdc++-v3/include/bits/stl_uninitialized.h ! 3933418180b ./libstdc++-v3/include/bits/stl_vector.h ! 2427064909b ./libstdc++-v3/include/bits/streambuf.tcc ! 3733069616b ./libstdc++-v3/include/bits/stringfwd.h ! 2281182376b ./libstdc++-v3/include/bits/type_traits.h 1275731289b ./libstdc++-v3/include/bits/valarray_array.h 1408725829b ./libstdc++-v3/include/bits/valarray_array.tcc ! 4062553156b ./libstdc++-v3/include/bits/valarray_meta.h 3294031792b ./libstdc++-v3/include/c/bits/std_cassert.h 1463522619b ./libstdc++-v3/include/c/bits/std_cctype.h 2203354679b ./libstdc++-v3/include/c/bits/std_cerrno.h *************** *** 9427,9441 **** 14436733b ./libstdc++-v3/include/c_std/bits/std_cwchar.h 566063818b ./libstdc++-v3/include/c_std/bits/std_cwctype.h 2457699013b ./libstdc++-v3/include/ext/bvector ! 631794789b ./libstdc++-v3/include/ext/hash_map ! 4259745340b ./libstdc++-v3/include/ext/hash_set ! 754659256b ./libstdc++-v3/include/ext/rope ! 3280035377b ./libstdc++-v3/include/ext/ropeimpl.h ! 4008498174b ./libstdc++-v3/include/ext/slist 4005867415b ./libstdc++-v3/include/ext/stl_bvector.h ! 3572885404b ./libstdc++-v3/include/ext/stl_hash_fun.h ! 409792476b ./libstdc++-v3/include/ext/stl_hashtable.h ! 4104645054b ./libstdc++-v3/include/ext/stl_rope.h 2948918123b ./libstdc++-v3/include/ext/tree 3439966783b ./libstdc++-v3/include/std/algorithm 2084535427b ./libstdc++-v3/include/std/bitset --- 9480,9494 ---- 14436733b ./libstdc++-v3/include/c_std/bits/std_cwchar.h 566063818b ./libstdc++-v3/include/c_std/bits/std_cwctype.h 2457699013b ./libstdc++-v3/include/ext/bvector ! 32562494b ./libstdc++-v3/include/ext/hash_map ! 1791958016b ./libstdc++-v3/include/ext/hash_set ! 852081170b ./libstdc++-v3/include/ext/rope ! 3281946583b ./libstdc++-v3/include/ext/ropeimpl.h ! 3974788162b ./libstdc++-v3/include/ext/slist 4005867415b ./libstdc++-v3/include/ext/stl_bvector.h ! 4275898655b ./libstdc++-v3/include/ext/stl_hash_fun.h ! 432472271b ./libstdc++-v3/include/ext/stl_hashtable.h ! 2912765281b ./libstdc++-v3/include/ext/stl_rope.h 2948918123b ./libstdc++-v3/include/ext/tree 3439966783b ./libstdc++-v3/include/std/algorithm 2084535427b ./libstdc++-v3/include/std/bitset *************** *** 9484,9492 **** 2645437597b ./libstdc++-v3/include/std/utility 2280752861b ./libstdc++-v3/include/std/valarray 392237057b ./libstdc++-v3/include/std/vector ! 42295107b ./libstdc++-v3/libio/ChangeLog ! 2530860285b ./libstdc++-v3/libio/Makefile.am ! 3525803389b ./libstdc++-v3/libio/Makefile.in 314955067b ./libstdc++-v3/libio/_G_config.h 2122576197b ./libstdc++-v3/libio/filedoalloc.c 3590060213b ./libstdc++-v3/libio/fileops.c --- 9537,9545 ---- 2645437597b ./libstdc++-v3/include/std/utility 2280752861b ./libstdc++-v3/include/std/valarray 392237057b ./libstdc++-v3/include/std/vector ! 3071558991b ./libstdc++-v3/libio/ChangeLog ! 226381804b ./libstdc++-v3/libio/Makefile.am ! 1424658516b ./libstdc++-v3/libio/Makefile.in 314955067b ./libstdc++-v3/libio/_G_config.h 2122576197b ./libstdc++-v3/libio/filedoalloc.c 3590060213b ./libstdc++-v3/libio/fileops.c *************** *** 9502,9522 **** 688559115b ./libstdc++-v3/libio/wfiledoalloc.c 871695306b ./libstdc++-v3/libio/wfileops.c 2568419733b ./libstdc++-v3/libio/wgenops.c ! 1517379775b ./libstdc++-v3/libmath/Makefile.am ! 2380628024b ./libstdc++-v3/libmath/Makefile.in ! 2936223825b ./libstdc++-v3/libmath/atan2f.c 3059642182b ./libstdc++-v3/libmath/copysignf.c ! 3371082726b ./libstdc++-v3/libmath/expf.c ! 2757049444b ./libstdc++-v3/libmath/hypot.c ! 2665375112b ./libstdc++-v3/libmath/hypotf.c ! 2348856819b ./libstdc++-v3/libmath/hypotl.c ! 2520447555b ./libstdc++-v3/libmath/mathconf.h 875119219b ./libstdc++-v3/libmath/nan.c 4185958949b ./libstdc++-v3/libmath/signbit.c 2047804662b ./libstdc++-v3/libmath/signbitf.c 711912297b ./libstdc++-v3/libmath/signbitl.c ! 79633951b ./libstdc++-v3/libsupc++/Makefile.am ! 1097506929b ./libstdc++-v3/libsupc++/Makefile.in 1538560956b ./libstdc++-v3/libsupc++/cxxabi.h 3887473586b ./libstdc++-v3/libsupc++/del_op.cc 2108254126b ./libstdc++-v3/libsupc++/del_opnt.cc --- 9555,9571 ---- 688559115b ./libstdc++-v3/libio/wfiledoalloc.c 871695306b ./libstdc++-v3/libio/wfileops.c 2568419733b ./libstdc++-v3/libio/wgenops.c ! 1992629512b ./libstdc++-v3/libmath/Makefile.am ! 2926368723b ./libstdc++-v3/libmath/Makefile.in 3059642182b ./libstdc++-v3/libmath/copysignf.c ! 3949749210b ./libstdc++-v3/libmath/mathconf.h 875119219b ./libstdc++-v3/libmath/nan.c 4185958949b ./libstdc++-v3/libmath/signbit.c 2047804662b ./libstdc++-v3/libmath/signbitf.c 711912297b ./libstdc++-v3/libmath/signbitl.c ! 2028045037b ./libstdc++-v3/libmath/stubs.c ! 2808634066b ./libstdc++-v3/libsupc++/Makefile.am ! 2573998188b ./libstdc++-v3/libsupc++/Makefile.in 1538560956b ./libstdc++-v3/libsupc++/cxxabi.h 3887473586b ./libstdc++-v3/libsupc++/del_op.cc 2108254126b ./libstdc++-v3/libsupc++/del_opnt.cc *************** *** 9530,9538 **** 2661319592b ./libstdc++-v3/libsupc++/eh_personality.cc 192927225b ./libstdc++-v3/libsupc++/eh_terminate.cc 2900215744b ./libstdc++-v3/libsupc++/eh_throw.cc ! 2982647591b ./libstdc++-v3/libsupc++/exception 3453419455b ./libstdc++-v3/libsupc++/exception_defines.h ! 3795937353b ./libstdc++-v3/libsupc++/new 1474493160b ./libstdc++-v3/libsupc++/new_handler.cc 4140508393b ./libstdc++-v3/libsupc++/new_op.cc 1924050083b ./libstdc++-v3/libsupc++/new_opnt.cc --- 9579,9587 ---- 2661319592b ./libstdc++-v3/libsupc++/eh_personality.cc 192927225b ./libstdc++-v3/libsupc++/eh_terminate.cc 2900215744b ./libstdc++-v3/libsupc++/eh_throw.cc ! 188596486b ./libstdc++-v3/libsupc++/exception 3453419455b ./libstdc++-v3/libsupc++/exception_defines.h ! 2432709783b ./libstdc++-v3/libsupc++/new 1474493160b ./libstdc++-v3/libsupc++/new_handler.cc 4140508393b ./libstdc++-v3/libsupc++/new_op.cc 1924050083b ./libstdc++-v3/libsupc++/new_opnt.cc *************** *** 9542,9574 **** 4000313327b ./libstdc++-v3/libsupc++/tinfo.cc 684549201b ./libstdc++-v3/libsupc++/tinfo.h 2446382575b ./libstdc++-v3/libsupc++/tinfo2.cc ! 3120525120b ./libstdc++-v3/libsupc++/typeinfo 3616638474b ./libstdc++-v3/libsupc++/unwind-cxx.h 3864118754b ./libstdc++-v3/libsupc++/vec.cc 3043274587b ./libstdc++-v3/mkc++config ! 3958186584b ./libstdc++-v3/mkcheck.in 3790569303b ./libstdc++-v3/mkcshadow 805804711b ./libstdc++-v3/mkinclosure ! 2786368026b ./libstdc++-v3/mknumeric_limits ! 754979035b ./libstdc++-v3/porting.texi ! 4108118379b ./libstdc++-v3/src/Makefile.am ! 2231735551b ./libstdc++-v3/src/Makefile.in ! 1601356108b ./libstdc++-v3/src/bitset.cc 3763564632b ./libstdc++-v3/src/codecvt.cc 2074797863b ./libstdc++-v3/src/complex_io.cc 3833330768b ./libstdc++-v3/src/functexcept.cc ! 212793364b ./libstdc++-v3/src/gen-num-limits.cc 681129958b ./libstdc++-v3/src/globals.cc 1383759180b ./libstdc++-v3/src/ios.cc 641891272b ./libstdc++-v3/src/limits_generic.cc 888901044b ./libstdc++-v3/src/locale-inst.cc ! 3062632372b ./libstdc++-v3/src/locale.cc 3678785766b ./libstdc++-v3/src/localename.cc 4290618040b ./libstdc++-v3/src/misc-inst.cc 1726669856b ./libstdc++-v3/src/stdexcept.cc 3210807708b ./libstdc++-v3/src/stl-inst.cc 2153343514b ./libstdc++-v3/src/string-inst.cc ! 1690237636b ./libstdc++-v3/src/strstream.cc 2505521591b ./libstdc++-v3/src/valarray-inst.cc 1651008667b ./libstdc++-v3/src/wstring-inst.cc 3407177850b ./libstdc++-v3/testsuite/17_intro/header_cassert.cc --- 9591,9625 ---- 4000313327b ./libstdc++-v3/libsupc++/tinfo.cc 684549201b ./libstdc++-v3/libsupc++/tinfo.h 2446382575b ./libstdc++-v3/libsupc++/tinfo2.cc ! 250050351b ./libstdc++-v3/libsupc++/typeinfo 3616638474b ./libstdc++-v3/libsupc++/unwind-cxx.h 3864118754b ./libstdc++-v3/libsupc++/vec.cc 3043274587b ./libstdc++-v3/mkc++config ! 3093437076b ./libstdc++-v3/mkcheck.in 3790569303b ./libstdc++-v3/mkcshadow 805804711b ./libstdc++-v3/mkinclosure ! 1536428020b ./libstdc++-v3/mknumeric_limits ! 2605795304b ./libstdc++-v3/porting.texi ! 2780687464b ./libstdc++-v3/src/Makefile.am ! 4194825822b ./libstdc++-v3/src/Makefile.in ! 1651858599b ./libstdc++-v3/src/bitset.cc ! 3659270218b ./libstdc++-v3/src/cmath.cc 3763564632b ./libstdc++-v3/src/codecvt.cc 2074797863b ./libstdc++-v3/src/complex_io.cc 3833330768b ./libstdc++-v3/src/functexcept.cc ! 180238345b ./libstdc++-v3/src/gen-num-limits.cc 681129958b ./libstdc++-v3/src/globals.cc 1383759180b ./libstdc++-v3/src/ios.cc + 3763069051b ./libstdc++-v3/src/limits.cc 641891272b ./libstdc++-v3/src/limits_generic.cc 888901044b ./libstdc++-v3/src/locale-inst.cc ! 4248120791b ./libstdc++-v3/src/locale.cc 3678785766b ./libstdc++-v3/src/localename.cc 4290618040b ./libstdc++-v3/src/misc-inst.cc 1726669856b ./libstdc++-v3/src/stdexcept.cc 3210807708b ./libstdc++-v3/src/stl-inst.cc 2153343514b ./libstdc++-v3/src/string-inst.cc ! 3829054154b ./libstdc++-v3/src/strstream.cc 2505521591b ./libstdc++-v3/src/valarray-inst.cc 1651008667b ./libstdc++-v3/src/wstring-inst.cc 3407177850b ./libstdc++-v3/testsuite/17_intro/header_cassert.cc *************** *** 9605,9611 **** 3985370954b ./libstdc++-v3/testsuite/21_strings/char_traits_requirements.cc 4052621376b ./libstdc++-v3/testsuite/21_strings/char_traits_typedefs.cc 1265470747b ./libstdc++-v3/testsuite/21_strings/compare.cc ! 2137486574b ./libstdc++-v3/testsuite/21_strings/ctor_copy_dtor.cc 4139768422b ./libstdc++-v3/testsuite/21_strings/element_access.cc 493313566b ./libstdc++-v3/testsuite/21_strings/find.cc 4256816922b ./libstdc++-v3/testsuite/21_strings/insert.cc --- 9656,9662 ---- 3985370954b ./libstdc++-v3/testsuite/21_strings/char_traits_requirements.cc 4052621376b ./libstdc++-v3/testsuite/21_strings/char_traits_typedefs.cc 1265470747b ./libstdc++-v3/testsuite/21_strings/compare.cc ! 1778105169b ./libstdc++-v3/testsuite/21_strings/ctor_copy_dtor.cc 4139768422b ./libstdc++-v3/testsuite/21_strings/element_access.cc 493313566b ./libstdc++-v3/testsuite/21_strings/find.cc 4256816922b ./libstdc++-v3/testsuite/21_strings/insert.cc *************** *** 9716,9728 **** 1110785128b ./libstdc++-v3/testsuite/27_io/ostream_unformatted.cc 679364921b ./libstdc++-v3/testsuite/27_io/ostringstream_members.cc 4277495279b ./libstdc++-v3/testsuite/27_io/streambuf.cc ! 2262929066b ./libstdc++-v3/testsuite/27_io/stringbuf.cc 2183091853b ./libstdc++-v3/testsuite/27_io/stringbuf_virtuals.cc 1703881739b ./libstdc++-v3/testsuite/27_io/stringstream.cc 3596528495b ./libstdc++-v3/testsuite/27_io/stringstream_members.cc 3615124904b ./libstdc++-v3/testsuite/27_io/wide_stream_objects.cc 2294107082b ./libstdc++-v3/testsuite/Makefile.am ! 2854604485b ./libstdc++-v3/testsuite/Makefile.in 2848669759b ./libstdc++-v3/testsuite/README 872857903b ./libstdc++-v3/testsuite/config/default.exp 3288938735b ./libstdc++-v3/testsuite/debug_assert.h --- 9767,9779 ---- 1110785128b ./libstdc++-v3/testsuite/27_io/ostream_unformatted.cc 679364921b ./libstdc++-v3/testsuite/27_io/ostringstream_members.cc 4277495279b ./libstdc++-v3/testsuite/27_io/streambuf.cc ! 1462425224b ./libstdc++-v3/testsuite/27_io/stringbuf.cc 2183091853b ./libstdc++-v3/testsuite/27_io/stringbuf_virtuals.cc 1703881739b ./libstdc++-v3/testsuite/27_io/stringstream.cc 3596528495b ./libstdc++-v3/testsuite/27_io/stringstream_members.cc 3615124904b ./libstdc++-v3/testsuite/27_io/wide_stream_objects.cc 2294107082b ./libstdc++-v3/testsuite/Makefile.am ! 3640355275b ./libstdc++-v3/testsuite/Makefile.in 2848669759b ./libstdc++-v3/testsuite/README 872857903b ./libstdc++-v3/testsuite/config/default.exp 3288938735b ./libstdc++-v3/testsuite/debug_assert.h *************** *** 9730,9755 **** 1821447959b ./libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp 2361428628b ./libstdc++-v3/testsuite/libstdc++-v3.dg/dg.exp 1352817621b ./libstdc++-v3/testsuite/printnow.c ! 1457631762b ./libstdc++-v3/testsuite_flags.in 4084702431b ./libtool.m4 ! 148243631b ./ltcf-c.sh ! 91270770b ./ltcf-cxx.sh ! 2266202316b ./ltcf-gcj.sh ! 805479348b ./ltconfig ! 237192095b ./ltmain.sh 990942143b ./missing 2656466409b ./mkdep 4236112450b ./mkinstalldirs 902556840b ./move-if-change 1077958069b ./symlink-tree 1370970362b ./ylwrap ! 1511644545b ./zlib/ChangeLog ! 3745891188b ./zlib/ChangeLog.gcj 3874989574b ./zlib/FAQ 467711448b ./zlib/INDEX 3901505907b ./zlib/Make_vms.com 1133202278b ./zlib/Makefile.am ! 3685738675b ./zlib/Makefile.in 3707467235b ./zlib/Makefile.riscos 72241230b ./zlib/README 1221785251b ./zlib/acinclude.m4 --- 9781,9806 ---- 1821447959b ./libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp 2361428628b ./libstdc++-v3/testsuite/libstdc++-v3.dg/dg.exp 1352817621b ./libstdc++-v3/testsuite/printnow.c ! 1283007056b ./libstdc++-v3/testsuite_flags.in 4084702431b ./libtool.m4 ! 2081401147b ./ltcf-c.sh ! 534669854b ./ltcf-cxx.sh ! 3594421631b ./ltcf-gcj.sh ! 30175378b ./ltconfig ! 4261167591b ./ltmain.sh 990942143b ./missing 2656466409b ./mkdep 4236112450b ./mkinstalldirs 902556840b ./move-if-change 1077958069b ./symlink-tree 1370970362b ./ylwrap ! 825175620b ./zlib/ChangeLog ! 2655845150b ./zlib/ChangeLog.gcj 3874989574b ./zlib/FAQ 467711448b ./zlib/INDEX 3901505907b ./zlib/Make_vms.com 1133202278b ./zlib/Makefile.am ! 3677194275b ./zlib/Makefile.in 3707467235b ./zlib/Makefile.riscos 72241230b ./zlib/README 1221785251b ./zlib/acinclude.m4 *************** *** 9759,9766 **** 1537725969b ./zlib/amiga/Makefile.pup 3919607569b ./zlib/amiga/Makefile.sas 3703350509b ./zlib/compress.c ! 305591031b ./zlib/configure ! 3472202392b ./zlib/configure.in 3769239525b ./zlib/contrib/README.contrib 215845136b ./zlib/contrib/asm386/gvmat32.asm 4143184108b ./zlib/contrib/asm386/gvmat32c.c --- 9810,9817 ---- 1537725969b ./zlib/amiga/Makefile.pup 3919607569b ./zlib/amiga/Makefile.sas 3703350509b ./zlib/compress.c ! 3871307965b ./zlib/configure ! 2035691596b ./zlib/configure.in 3769239525b ./zlib/contrib/README.contrib 215845136b ./zlib/contrib/asm386/gvmat32.asm 4143184108b ./zlib/contrib/asm386/gvmat32c.c diff -Nrc3pad gcc-3.0/.cvsignore gcc-3.0.1/.cvsignore *** gcc-3.0/.cvsignore Sat Jul 22 01:08:20 2000 --- gcc-3.0.1/.cvsignore Sat Jul 28 23:46:53 2001 *************** dir.info *** 29,32 **** Makefile lost+found update.out ! --- 29,32 ---- Makefile lost+found update.out ! LAST_UPDATED diff -Nrc3pad gcc-3.0/BUGS gcc-3.0.1/BUGS *** gcc-3.0/BUGS Sun Jun 17 12:50:01 2001 --- gcc-3.0.1/BUGS Sun Aug 19 17:45:09 2001 *************** *** 1,19 **** The latest version of this document is always available at [1]http://gcc.gnu.org/bugs.html. ! [2]Reporting Bugs | [3]Managing Bugs (GNATS and the test-suite) | ! [4]Frequently Reported Bugs in GCC 3.0 Reporting Bugs ! Our preferred way of receiving bugs is via our [5]GNATS bug reporting ! system. ! Before you report a bug, please check the [6]list of well-known bugs and, if possible in any way, try a current development snapshot or ! [7]CodeSourcery's Online Test Compilation. If you want to report a bug ! with egcs 1.x or versions of GCC before 3.0 we strongly recommend upgrading to the current release first. Before reporting that GCC compiles your code incorrectly, please --- 1,39 ---- + GCC Bugs + The latest version of this document is always available at [1]http://gcc.gnu.org/bugs.html. + _________________________________________________________________ ! Table of Contents ! ! * [2]Reporting Bugs ! + [3]What we need ! + [4]What we DON'T want ! + [5]Where to post it ! + [6]Detailed bug reporting instructions ! * [7]Managing Bugs (GNATS and the test-suite) ! * [8]Frequently Reported Bugs in GCC 3.0 ! + [9]General ! + [10]Fortran ! + [11]C ! + [12]C++ ! o [13]Common problems updating from G++ 2.95 to G++ 3.0 ! o [14]Non-bugs ! o [15]Missing features ! o [16]Parse errors for "simple" code ! o [17]Optimization at -O3 takes a very long time ! _________________________________________________________________ Reporting Bugs ! Our preferred way of receiving bugs is via the [18]GCC GNATS bug ! reporting system. ! Before you report a bug, please check the [19]list of well-known bugs and, if possible in any way, try a current development snapshot or ! [20]CodeSourcery's Online Test Compilation. If you want to report a ! bug with egcs 1.x or versions of GCC before 3.0 we strongly recommend upgrading to the current release first. Before reporting that GCC compiles your code incorrectly, please *************** Summarized bug reporting instructions *** 78,87 **** Where to post it ! Please submit your bug report directly to our [8]GNATS bug database. ! If this is not possible, please mail all information to ! gcc-bugs@gcc.gnu.org ! . Detailed bug reporting instructions --- 98,106 ---- Where to post it ! Please submit your bug report directly to the [21]GCC GNATS bug ! database. If this is not possible, please mail all information to ! [22]gcc-bugs@gcc.gnu.org. Detailed bug reporting instructions *************** Detailed bug reporting instructions *** 89,96 **** the command line below, as well as its output and the preprocessed file it generates. ! gcc -v -save-temps all-your-options source-file ! Typically the preprocessed file (extension .i for C or .ii for C++) will be large, so please compress the resulting file with one of the popular compression programs such as bzip2, gzip, zip or compress (in --- 108,115 ---- the command line below, as well as its output and the preprocessed file it generates. ! gcc -v -save-temps all-your-options source-file ! Typically the preprocessed file (extension .i for C or .ii for C++) will be large, so please compress the resulting file with one of the popular compression programs such as bzip2, gzip, zip or compress (in *************** Detailed bug reporting instructions *** 127,133 **** The gcc lists have message size limits (200 kbytes) and bug reports over those limits will currently be bounced. If your bug is larger ! than that, please post it directly in GNATS. If you fail to supply enough information for a bug report to be reproduced, someone will probably ask you to post additional --- 146,152 ---- The gcc lists have message size limits (200 kbytes) and bug reports over those limits will currently be bounced. If your bug is larger ! than that, please post it using the [23]GCC GNATS bug database. If you fail to supply enough information for a bug report to be reproduced, someone will probably ask you to post additional *************** Detailed bug reporting instructions *** 157,179 **** 1. Create a (minimal) test-case. 2. Add the test-case to our test-suite, marking it as PASS. 3. Check in your fixes. ! Frequently Reported Bugs in GCC 3.0 General The following bugs are very frequently reported. * GCC 2.95.2 does not build on GNU/Linux systems using glibc 2.2, ! such as Red Hat 7.0. A [9]patch is available. This will be fixed ! in GCC 2.95.3 and GCC 3.0. * GCC 2.95.2 crashes when compiling mbx.c from the PINE 4.30 or IMAP2000 distribution on Sparc systems running Solaris. ! Fortran Fortran bugs are documented in the G77 manual rather than explicitly ! listed here. Please see [10]"Known Causes of Trouble with GNU Fortran" ! in the [11]G77 manual. C++ --- 176,299 ---- 1. Create a (minimal) test-case. 2. Add the test-case to our test-suite, marking it as PASS. 3. Check in your fixes. ! _________________________________________________________________ ! Frequently Reported Bugs in GCC 3.0 General The following bugs are very frequently reported. * GCC 2.95.2 does not build on GNU/Linux systems using glibc 2.2, ! such as Red Hat 7.0. A [24]patch is available. This is fixed in ! GCC 2.95.3 and GCC 3.0. * GCC 2.95.2 crashes when compiling mbx.c from the PINE 4.30 or IMAP2000 distribution on Sparc systems running Solaris. ! _________________________________________________________________ ! Fortran Fortran bugs are documented in the G77 manual rather than explicitly ! listed here. Please see [25]"Known Causes of Trouble with GNU Fortran" ! in the [26]G77 manual. ! _________________________________________________________________ ! ! C ! ! The following are not bugs in the C compiler, but are reported often ! enough to warrant a mention here. ! ! Cannot initialize a static variable with stdin. ! This has nothing to do with GCC, but people ask us about it a ! lot. Code like this: ! ! #include FILE *yyin = stdin; ! ! will not compile with GNU libc (GNU/Linux libc6), because stdin ! is not a constant. This was done deliberately, in order for ! there to be no limit on the number of open FILE objects. It is ! surprising for people used to traditional Unix C libraries, but ! it is permitted by the C standard. ! ! This construct commonly occurs in code generated by old ! versions of lex or yacc. We suggest you try regenerating the ! parser with a current version of flex or bison, respectively. ! In your own code, the appropriate fix is to move the ! initialization to the beginning of main. ! ! There is a common misconception that the GCC developers are ! responsible for GNU libc. These are in fact two entirely ! separate projects. The appropriate place to ask questions ! relating to GNU libc is [27]libc-alpha@sources.redhat.com. ! ! Cannot use preprocessor directive in macro arguments. ! Let me guess... you wrote code that looks something like this: ! ! memcpy(dest, src, #ifdef PLATFORM1 12 #else 24 #endif ); ! ! and you got a whole pile of error messages: ! ! test.c:11: warning: preprocessing directive not recognized within ! macro arg ! test.c:11: warning: preprocessing directive not recognized within ! macro arg ! test.c:11: warning: preprocessing directive not recognized within ! macro arg ! test.c: In function `foo': ! test.c:6: undefined or invalid # directive ! test.c:8: undefined or invalid # directive ! test.c:9: parse error before `24' ! test.c:10: undefined or invalid # directive ! test.c:11: parse error before `#' ! ! The problem, simply put, is that GCC's preprocessor does not ! allow you to put #ifdef (or any other directive) inside the ! arguments of a macro. Your C library's happens to ! define memcpy as a macro - this is perfectly legitimate. The ! code therefore will not compile. ! ! We have two good reasons for not allowing directives inside ! macro arguments. First, it is not portable. It is "undefined ! behavior" according to the C standard; that means different ! compilers will do different things with it. Some will give you ! errors. Some will dump core. Some will silently mangle your ! code - you could get the equivalent of ! ! memcpy(dest, src, 1224); ! ! from the above example. A very few might do what you expected ! it to. We therefore feel it is most useful for GCC to reject ! this construct immediately so that it is found and fixed. ! ! Second, it is extraordinarily difficult to implement the ! preprocessor such that it does what you would expect for every ! possible directive found inside a macro argument. The best ! example is perhaps ! ! #define foo(arg) ... arg ... ! foo(blah ! #undef foo ! blah) ! ! which is impossible to implement in portable C without leaking ! memory. Allowing only a subset of directives would be ! confusing. ! ! It is always possible to rewrite code which uses conditionals ! inside macros so that it doesn't. You could write the above ! example ! ! #ifdef PLATFORM1 ! memcpy(dest, src, 12); ! #else ! memcpy(dest, src, 24); ! #endif ! ! This is a bit more typing, but I personally think it's better ! style in addition to being more portable. ! ! In recent versions of glibc, printf is among the functions ! which are implemented as macros. ! _________________________________________________________________ C++ *************** C++ *** 181,187 **** reported very often, but not yet fixed. While it is certainly better to fix bugs instead of documenting them, this document might save people the effort of writing a bug report when the bug is already ! well-known. [12]How to report bugs tells you how to report a bug. There are many reasons why reported bugs don't get fixed. It might be difficult to fix, or fixing it might break compatibility. Often, --- 301,307 ---- reported very often, but not yet fixed. While it is certainly better to fix bugs instead of documenting them, this document might save people the effort of writing a bug report when the bug is already ! well-known. [28]How to report bugs tells you how to report a bug. There are many reasons why reported bugs don't get fixed. It might be difficult to fix, or fixing it might break compatibility. Often, *************** C++ *** 197,209 **** compiler. This is currently 3.0. Many commonly reported bugs in earlier releases are fixed in that version. ! Common problems updating from g++ 2.95 to g++ 3.0 ! g++ 3.0 conforms much closer to the ISO C++ standard (available at ! [13]http://www.ncits.org/cplusplus.htm). We have also implemented some ! of the core and library defect reports (available at ! [14]http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html & ! [15]http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html respectively). * The ABI has changed. This means that both class layout and name mangling is different. You must recompile all c++ libraries (if --- 317,331 ---- compiler. This is currently 3.0. Many commonly reported bugs in earlier releases are fixed in that version. ! Common problems updating from G++ 2.95 to G++ 3.0 ! G++ 3.0 conforms much closer to the ISO C++ standard (available at ! [29]http://www.ncits.org/cplusplus.htm). ! ! We have also implemented some of the core and library defect reports ! (available at ! [30]http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html & ! [31]http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html respectively). * The ABI has changed. This means that both class layout and name mangling is different. You must recompile all c++ libraries (if *************** C++ *** 214,220 **** * The standard header files for the c library don't end with .h, but begin with c (i.e. rather than ). The .h names are still available, but are deprecated. ! * is deprecated, use instead. * streambuf::seekoff & streambuf::seekpos are private, instead use streambuf::pubseekoff & streambuf::pubseekpos respectively. * If std::operator << (std::ostream &, long long) doesn't exist, you --- 336,344 ---- * The standard header files for the c library don't end with .h, but begin with c (i.e. rather than ). The .h names are still available, but are deprecated. ! * is deprecated, use instead. (The 3.0 BUGS ! file says , that was an error, stringstream is the ! class defined in .) * streambuf::seekoff & streambuf::seekpos are private, instead use streambuf::pubseekoff & streambuf::pubseekpos respectively. * If std::operator << (std::ostream &, long long) doesn't exist, you *************** C++ *** 249,256 **** specification. G++ emits two copies of constructors and destructors. ! In general there are three types of constructor (and ! destructor). 1. The complete object constructor/destructor. 2. The base object constructor/destructor. --- 373,380 ---- specification. G++ emits two copies of constructors and destructors. ! In general there are three types of constructors (and ! destructors). 1. The complete object constructor/destructor. 2. The base object constructor/destructor. *************** C++ *** 260,273 **** involved. In some cases we can do better, and this is logged in GNATS. ! Exceptions don't work in multithreaded applications You need to rebuild g++ and libstdc++ with --enable-threads. Remember, c++ exceptions are not like hardware interrupts. You cannot throw an exception in one thread and catch it in another. You cannot throw an exception from a signal handler, and catch it in the main thread. ! Global destructors are not run in the correct order Global destructors should be run in the reverse order of their constructors completing. In most cases this is the same as the reverse order of constructors starting, but sometimes it is --- 384,397 ---- involved. In some cases we can do better, and this is logged in GNATS. ! Exceptions don't work in multithreaded applications. You need to rebuild g++ and libstdc++ with --enable-threads. Remember, c++ exceptions are not like hardware interrupts. You cannot throw an exception in one thread and catch it in another. You cannot throw an exception from a signal handler, and catch it in the main thread. ! Global destructors are not run in the correct order. Global destructors should be run in the reverse order of their constructors completing. In most cases this is the same as the reverse order of constructors starting, but sometimes it is *************** C++ *** 276,287 **** switch on by default, as it requires a cxa aware runtime library (libc, glibc, or equivalent). Missing features ! We know some things are missing from g++. ! export is not implemented. ! The keyword will be parsed correctly, but has no effect. Two stage lookup in templates is not implemented. [14.6] specifies how names are looked up inside a template. G++ --- 400,441 ---- switch on by default, as it requires a cxa aware runtime library (libc, glibc, or equivalent). + Problems with floating point computations. + In a number of cases, GCC appears to perform floating point + computations incorrectly. For example, the program + + #include + int main() { + double min = 0.0; + double max = 0.5; + double width = 0.01; + std::cout << (int)(((max - min) / width) - 1) << std::endl; + } + + might print 50 on some systems and optimization levels, and 51 + on others. + + The is the result of rounding: The computer cannot represent + all real numbers exactly, so it has to use approximations. When + computing with approximation, the computer needs to round to + the nearest representable number. + + This is not a bug in the compiler, but an inherent limitation + of the float and double types. Please study [32]this paper for + more information. + Missing features ! We know some things are missing from G++. ! The export keyword is not implemented. ! Most C++ compilers (G++ included) do not yet implement export, ! which is necessary for separate compilation of template ! declarations and definitions. Without export, a template ! definition must be in scope to be used. The obvious workaround ! is simply to place all definitions in the header itself. ! Alternatively, the compilation unit containing template ! definitions may be included from the header. Two stage lookup in templates is not implemented. [14.6] specifies how names are looked up inside a template. G++ *************** C++ *** 290,298 **** Parse errors for "simple" code ! Up to and including GCC 3.0, the compiler will give "parse ! error" for seemingly simple code, such as ! struct A{ A(); A(int); --- 444,451 ---- Parse errors for "simple" code ! Up to and including GCC 3.0, the compiler will give "parse error" for ! seemingly simple code, such as struct A{ A(); A(int); *************** void foo(){ *** 310,331 **** B(A(2)).func(); //B temporary, initialized with A temporary } ! The problem is that GCC starts to parse the declaration of b as ! a function b returning B, taking a function returning A as an ! argument. When it sees the 1, it is too late. The work-around ! in these cases is to add additional parentheses around the ! expressions that are mistaken as declarations: ! (B(A(2))).func(); ! Sometimes, even that is not enough; to show the compiler that ! this should be really an expression, a comma operator with a ! dummy argument can be used: ! B b((0,A()),A(1)); ! Another example is the parse error for the return statement in ! struct A{}; struct B{ --- 463,481 ---- B(A(2)).func(); //B temporary, initialized with A temporary } ! The problem is that GCC starts to parse the declaration of b as a ! function b returning B, taking a function returning A as an argument. ! When it sees the 1, it is too late. The work-around in these cases is ! to add additional parentheses around the expressions that are mistaken ! as declarations: (B(A(2))).func(); ! Sometimes, even that is not enough; to show the compiler that this ! should be really an expression, a comma operator with a dummy argument ! can be used: B b((0,A()),A(1)); ! Another example is the parse error for the return statement in struct A{}; struct B{ *************** A B::f1(bool b) *** 340,381 **** return a; } ! The problem is that the compiler interprets A() as a function ! (taking no arguments, returning A), and (A()) as a cast - with ! a missing expression, hence the parse error. The work-around is ! to omit the parentheses: ! if (b) return A(); ! This problem occurs in a number of variants; in throw ! statements, people also frequently put the object in ! parentheses. The exact error also somewhat varies with the ! compiler version. The work-arounds proposed do not change the ! semantics of the program at all; they make them perhaps less ! readable. ! Optimization at -O3 takes a very long time ! At -O3, all functions are candidates for inlining. The ! heuristic used has some deficiencies which show up when allowed ! such freedom. This is g++ specific, as it has an earlier ! inliner than gcc. References 1. http://gcc.gnu.org/bugs.html 2. http://gcc.gnu.org/bugs.html#report ! 3. http://gcc.gnu.org/bugs.html#manage ! 4. http://gcc.gnu.org/bugs.html#known ! 5. http://gcc.gnu.org/gnats.html ! 6. http://gcc.gnu.org/bugs.html#known ! 7. http://www.codesourcery.com/gcc-compile.shtml ! 8. http://gcc.gnu.org/gnats.html ! 9. http://gcc.gnu.org/install/glibc-2.2.patch ! 10. http://gcc.gnu.org/onlinedocs/g77_bugs.html ! 11. http://gcc.gnu.org/onlinedocs/g77_toc.html ! 12. http://gcc.gnu.org/bugs.html#report ! 13. http://www.ncits.org/cplusplus.htm ! 14. http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html ! 15. http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html --- 490,545 ---- return a; } ! The problem is that the compiler interprets A() as a function (taking ! no arguments, returning A), and (A()) as a cast - with a missing ! expression, hence the parse error. The work-around is to omit the ! parentheses: if (b) return A(); ! This problem occurs in a number of variants; in throw statements, ! people also frequently put the object in parentheses. The exact error ! also somewhat varies with the compiler version. The work-arounds ! proposed do not change the semantics of the program at all; they make ! them perhaps less readable. ! Optimization at -O3 takes a very long time ! At -O3, all functions are candidates for inlining. The heuristic used ! has some deficiencies which show up when allowed such freedom. This is ! g++ specific, as it has an earlier inliner than gcc. References 1. http://gcc.gnu.org/bugs.html 2. http://gcc.gnu.org/bugs.html#report ! 3. http://gcc.gnu.org/bugs.html#need ! 4. http://gcc.gnu.org/bugs.html#dontwant ! 5. http://gcc.gnu.org/bugs.html#where ! 6. http://gcc.gnu.org/bugs.html#detailed ! 7. http://gcc.gnu.org/bugs.html#manage ! 8. http://gcc.gnu.org/bugs.html#known ! 9. http://gcc.gnu.org/bugs.html#general ! 10. http://gcc.gnu.org/bugs.html#fortran ! 11. http://gcc.gnu.org/bugs.html#c ! 12. http://gcc.gnu.org/bugs.html#cplusplus ! 13. http://gcc.gnu.org/bugs.html#updating ! 14. http://gcc.gnu.org/bugs.html#nonbugs ! 15. http://gcc.gnu.org/bugs.html#missing ! 16. http://gcc.gnu.org/bugs.html#parsing ! 17. http://gcc.gnu.org/bugs.html#-O3 ! 18. http://gcc.gnu.org/gnats.html ! 19. http://gcc.gnu.org/bugs.html#known ! 20. http://www.codesourcery.com/gcc-compile.shtml ! 21. http://gcc.gnu.org/gnats.html ! 22. mailto:gcc-bugs@gcc.gnu.org ! 23. http://gcc.gnu.org/gnats.html ! 24. http://gcc.gnu.org/install/glibc-2.2.patch ! 25. http://gcc.gnu.org/onlinedocs/g77_bugs.html ! 26. http://gcc.gnu.org/onlinedocs/g77_toc.html ! 27. mailto:libc-alpha@sources.redhat.com ! 28. http://gcc.gnu.org/bugs.html#report ! 29. http://www.ncits.org/cplusplus.htm ! 30. http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html ! 31. http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html ! 32. http://www.validgh.com/goldberg/paper.ps diff -Nrc3pad gcc-3.0/ChangeLog gcc-3.0.1/ChangeLog *** gcc-3.0/ChangeLog Sun Jun 17 12:39:02 2001 --- gcc-3.0.1/ChangeLog Sun Aug 19 14:08:00 2001 *************** *** 1,3 **** --- 1,58 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-13 Andreas Jaeger + + * configure.in: Disable libgcj on s390*-linux targets. + + 2001-08-10 Ulrich Weigand + + * MAINTAINERS (Various maintainers: s390 port): Added myself + and Hartmut Penner . + + 2001-07-30 Jeff Sturm + + * ltcf-c.sh: Use $objext, not $ac_objext. + + 2001-07-28 Richard Henderson + + * .cvsignore: Add LAST_UPDATED. + + 2001-07-27 Mark Kettenis + + * ltcf-cxx.sh: Add support for GNU. + + 2001-07-22 Timothy Wall + + * ltcf-c.sh: Don't disable shared libraries for AIX5/IA64. Preserve + default settings if using GNU tools with that configuration. + * ltcf-cxx.sh: Ditto. + * ltcf-gcj.sh: Ditto. + + 2001-07-21 Michael Chastain + + * ltconfig: Set max_cmd_len to a maximum of 512Kb, as it seems some + HPUX 11.0 systems have trouble with 1MB. Mark as gcc-local. + * ltmain.sh: Mark as gcc-local. + + 2001-07-16 Aldy Hernandez + + * config.sub: Fix mips64vr5000el typo in CPU-COMPANY. + + 2001-07-12 Stephane Carrez + + * configure.in (noconfigdirs): Don't compile libiberty, libstdcxx + and libgcj on m68hc11/m68hc12. + 20010617 Release Manager * GCC 3.0 Released. *************** Mon Apr 23 09:15:03 2001 Anthony Green *** 373,384 **** 2000-12-18 Benjamin Kosnik ! * Makefile.in (BASE_FLAGS_TO_PASS): Alphabetize. (libstdcxx_incdir): Pass down. * config.if: Remove expired bits for cxx_interface, add stub. (libstdcxx_incdir): Add variable for g++ include directory. * configure.in (gxx_include_dir): Use it. ! 2000-12-18 Alexandre Oliva * MAINTAINERS: Added self as sh port co-maintainer. Removed entry --- 428,439 ---- 2000-12-18 Benjamin Kosnik ! * Makefile.in (BASE_FLAGS_TO_PASS): Alphabetize. (libstdcxx_incdir): Pass down. * config.if: Remove expired bits for cxx_interface, add stub. (libstdcxx_incdir): Add variable for g++ include directory. * configure.in (gxx_include_dir): Use it. ! 2000-12-18 Alexandre Oliva * MAINTAINERS: Added self as sh port co-maintainer. Removed entry *************** Mon Apr 23 09:15:03 2001 Anthony Green *** 395,405 **** * MAINTAINERS: Added gcj developers. 2000-12-13 Anthony Green ! * configure.in: Disable libgcj for any target not specifically ! listed. Disable libgcj for x86 and Alpha Linux until compatible ! with g++ abi. ! 2000-12-13 Mike Stump * Makefile.in (local-distclean): Also remove fastjar. --- 450,460 ---- * MAINTAINERS: Added gcj developers. 2000-12-13 Anthony Green ! * configure.in: Disable libgcj for any target not specifically ! listed. Disable libgcj for x86 and Alpha Linux until compatible ! with g++ abi. ! 2000-12-13 Mike Stump * Makefile.in (local-distclean): Also remove fastjar. *************** Mon Nov 6 14:19:35 2000 Christopher Fa *** 548,554 **** * MAINTAINERS: Rename @cygnus.com addresses to @redhat.com. Also installed new email address for Clint Popetz. ! 2000-10-30 Joseph S. Myers * etc: Remove directory from GCC. --- 603,609 ---- * MAINTAINERS: Rename @cygnus.com addresses to @redhat.com. Also installed new email address for Clint Popetz. ! 2000-10-30 Joseph S. Myers * etc: Remove directory from GCC. *************** Mon Nov 6 14:19:35 2000 Christopher Fa *** 558,565 **** * configure (gcc/configargs.h): Only create if there is a build GCC directory created. ! 2000-10-16 Matthias Klose ! * config.if: Search libstdc++-v3/configure.in for INTERFACE, when configured for libstdc++-v3. --- 613,620 ---- * configure (gcc/configargs.h): Only create if there is a build GCC directory created. ! 2000-10-16 Matthias Klose ! * config.if: Search libstdc++-v3/configure.in for INTERFACE, when configured for libstdc++-v3. *************** Wed Sep 13 11:11:29 2000 Jeffrey A Law *** 697,703 **** * configure.in (libstdcxx_flags): Remove -isystem $$s/libio/stdio. ! * configure: Make enable_threads and enable_shared defaults explicit. Substitute enable_threads into generated Makefiles. * configure.in: Accept *-*-linux* not just *-*-linux-gnu*. * libtool.m4: Accept *-*-linux* not just *-*-linux-gnu*. --- 752,758 ---- * configure.in (libstdcxx_flags): Remove -isystem $$s/libio/stdio. ! * configure: Make enable_threads and enable_shared defaults explicit. Substitute enable_threads into generated Makefiles. * configure.in: Accept *-*-linux* not just *-*-linux-gnu*. * libtool.m4: Accept *-*-linux* not just *-*-linux-gnu*. *************** Wed Sep 13 11:11:29 2000 Jeffrey A Law *** 779,785 **** * libtool.m4, ltcf-c.sh, ltcf-cxx.sh, ltcf-gcj.sh: New files from the libtool CVS tree multi-language branch. * ltconfig, ltmain.sh: Updated. ! 2000-07-27 Alexandre Oliva * Makefile.in (clean-target-libgcc): Remove gcc/libgcc. --- 834,840 ---- * libtool.m4, ltcf-c.sh, ltcf-cxx.sh, ltcf-gcj.sh: New files from the libtool CVS tree multi-language branch. * ltconfig, ltmain.sh: Updated. ! 2000-07-27 Alexandre Oliva * Makefile.in (clean-target-libgcc): Remove gcc/libgcc. *************** Tue May 16 09:57:35 2000 Andrew Cagney *** 902,908 **** Wed Apr 26 17:03:53 2000 Andrew Cagney : * Makefile.in (do-djunpack): New target. Update djunpack.bat with ! current version information. Add to proto-toplev directory. (gdb-taz): Build do-djunpack. 2000-05-15 David Edelsohn --- 957,963 ---- Wed Apr 26 17:03:53 2000 Andrew Cagney : * Makefile.in (do-djunpack): New target. Update djunpack.bat with ! current version information. Add to proto-toplev directory. (gdb-taz): Build do-djunpack. 2000-05-15 David Edelsohn *************** Sat May 6 21:12:55 CDT 2000 Jason Eckh *** 946,954 **** Wed Apr 19 12:46:26 2000 Andrew Cagney * Makefile.in (taz, gdb-taz, gas.tar.bz2, binutils.tar.bz2, ! gas+binutils.tar.bz2, libg++.tar.bz2, gnats.tar.bz2, gdb.tar.bz2, ! dejagnu.tar.bz2, gdb+dejagnu.tar.bz2, insight.tar.bz2, ! insight+dejagnu.tar.bz2, newlib.tar.bz2): Pass MD5PROG to sub-make. 2000-04-16 Dave Pitts --- 1001,1009 ---- Wed Apr 19 12:46:26 2000 Andrew Cagney * Makefile.in (taz, gdb-taz, gas.tar.bz2, binutils.tar.bz2, ! gas+binutils.tar.bz2, libg++.tar.bz2, gnats.tar.bz2, gdb.tar.bz2, ! dejagnu.tar.bz2, gdb+dejagnu.tar.bz2, insight.tar.bz2, ! insight+dejagnu.tar.bz2, newlib.tar.bz2): Pass MD5PROG to sub-make. 2000-04-16 Dave Pitts *************** Wed Apr 12 16:42:48 2000 Andrew Cagney *** 967,977 **** (PACKAGE): Default to TOOL. (VER): Default to a shell script. (taz): Rewrite target. Move real work to do-proto-toplev. Include ! md5 checksum generation. (do-proto-toplev): New target. Create $(PACKAGE)-$(VER) link. (do-tar-bz2): Delete creation of $(PACKAGE)-$(VER) link. (gdb.tar.bz2, dejagnu.tar.bz2, gdb+dejagnu.tar.bz2, ! insight.tar.bz2): Use gdb-taz to create archive. Fri Apr 7 18:10:29 2000 Andrew Cagney --- 1022,1032 ---- (PACKAGE): Default to TOOL. (VER): Default to a shell script. (taz): Rewrite target. Move real work to do-proto-toplev. Include ! md5 checksum generation. (do-proto-toplev): New target. Create $(PACKAGE)-$(VER) link. (do-tar-bz2): Delete creation of $(PACKAGE)-$(VER) link. (gdb.tar.bz2, dejagnu.tar.bz2, gdb+dejagnu.tar.bz2, ! insight.tar.bz2): Use gdb-taz to create archive. Fri Apr 7 18:10:29 2000 Andrew Cagney *************** Fri Mar 3 18:44:08 2000 Andrew Cagney *** 1016,1022 **** (do-tar-bz2): Replace TOOL with PACKAGE. (gdb.tar.bz2): Remove GDBTK from GDB package. (gdb+dejagnu.tar.bz2, insight.tar.bz2, insight+dejagnu.tar.bz2, ! dejagnu.tar.bz2): New packages. 2000-02-27 Andreas Jaeger --- 1071,1077 ---- (do-tar-bz2): Replace TOOL with PACKAGE. (gdb.tar.bz2): Remove GDBTK from GDB package. (gdb+dejagnu.tar.bz2, insight.tar.bz2, insight+dejagnu.tar.bz2, ! dejagnu.tar.bz2): New packages. 2000-02-27 Andreas Jaeger *************** Fri Mar 3 18:44:08 2000 Andrew Cagney *** 1034,1040 **** Thu Feb 24 16:15:56 2000 Andrew Cagney * config.guess, config.sub: Updated to match config's 2000-02-15 ! version. 2000-02-23 Linas Vepstas --- 1089,1095 ---- Thu Feb 24 16:15:56 2000 Andrew Cagney * config.guess, config.sub: Updated to match config's 2000-02-15 ! version. 2000-02-23 Linas Vepstas *************** Wed Mar 10 18:35:07 1999 Jeff Johnston *** 1395,1401 **** Wed Mar 10 17:39:09 1999 Drew Moseley * configure.in: Added bsp support to arm-*-coff and arm-*-elf ! targets. 1999-03-02 Nick Clifton --- 1450,1456 ---- Wed Mar 10 17:39:09 1999 Drew Moseley * configure.in: Added bsp support to arm-*-coff and arm-*-elf ! targets. 1999-03-02 Nick Clifton *************** Thu Dec 17 01:22:30 1998 Jeffrey A Law *** 1523,1529 **** Tue Dec 15 17:02:58 1998 Bob Manson * configure.in: Add cygmon for x86-coff and x86-elf. Configure ! cygmon for all sparclite targets, regardless of object format. 1998-12-15 Mark Salter --- 1578,1584 ---- Tue Dec 15 17:02:58 1998 Bob Manson * configure.in: Add cygmon for x86-coff and x86-elf. Configure ! cygmon for all sparclite targets, regardless of object format. 1998-12-15 Mark Salter *************** Sat Jun 27 22:46:32 1998 Jeffrey A Law *** 1910,1916 **** Wed Jun 24 16:01:59 1998 John Metzler * configure.in (noconfigdirs): Add configure pattern for mips tx39 ! cygmon Tue Jun 23 22:42:32 1998 Mark Alexander --- 1965,1971 ---- Wed Jun 24 16:01:59 1998 John Metzler * configure.in (noconfigdirs): Add configure pattern for mips tx39 ! cygmon Tue Jun 23 22:42:32 1998 Mark Alexander *************** Mon Sep 29 00:38:08 1997 Aaron Jackson < *** 2562,2568 **** Wed Sep 24 18:06:27 1997 Stu Grossman * configure.in (d30v): Remove tcl, tk, expect, gdb, itcl, tix, db, ! sn, and gnuserv from noconfigdirs. Wed Sep 24 15:18:32 1997 Ian Lance Taylor --- 2617,2623 ---- Wed Sep 24 18:06:27 1997 Stu Grossman * configure.in (d30v): Remove tcl, tk, expect, gdb, itcl, tix, db, ! sn, and gnuserv from noconfigdirs. Wed Sep 24 15:18:32 1997 Ian Lance Taylor *************** Thu Sep 18 21:43:23 1997 Alexandre Oliv *** 2582,2588 **** Thu Sep 18 15:37:42 1997 Andrew Cagney * configure (tooldir): enable_gdbtk=YES for cygwin32, NO for ! windows. Consistent with gdb/configure. 1997-09-15 02:37 Ulrich Drepper --- 2637,2643 ---- Thu Sep 18 15:37:42 1997 Andrew Cagney * configure (tooldir): enable_gdbtk=YES for cygwin32, NO for ! windows. Consistent with gdb/configure. 1997-09-15 02:37 Ulrich Drepper *************** Tue Aug 5 12:12:44 1997 Andrew Cagney *** 2763,2775 **** Mon Aug 4 22:59:02 1997 Andrew Cagney * Makefile.in (CC_FOR_TARGET): When winsup/Makefile present, ! correctly specify the target build directory $(TARGET_SUBDIR)/winsup ! for libraries. Mon Aug 4 12:40:24 1997 Jason Merrill * Makefile.in (EXTRA_GCC_FLAGS): Fix handling of macros with values ! separated by spaces. Thu Jul 31 19:49:49 1997 Ian Lance Taylor --- 2818,2830 ---- Mon Aug 4 22:59:02 1997 Andrew Cagney * Makefile.in (CC_FOR_TARGET): When winsup/Makefile present, ! correctly specify the target build directory $(TARGET_SUBDIR)/winsup ! for libraries. Mon Aug 4 12:40:24 1997 Jason Merrill * Makefile.in (EXTRA_GCC_FLAGS): Fix handling of macros with values ! separated by spaces. Thu Jul 31 19:49:49 1997 Ian Lance Taylor *************** Mon Jun 16 11:11:10 1997 Ian Lance Tayl *** 2900,2906 **** $(DEFAULT_YACC). * configure.in: Build itl, db, sn, etc., when building for native ! cygwin32. * Makefile.in (LD): New variable. (EXTRA_HOST_FLAGS): Pass down LD. --- 2955,2961 ---- $(DEFAULT_YACC). * configure.in: Build itl, db, sn, etc., when building for native ! cygwin32. * Makefile.in (LD): New variable. (EXTRA_HOST_FLAGS): Pass down LD. *************** Mon Jun 16 11:10:35 1997 Philip Blundel *** 2913,2919 **** Fri Jun 13 10:22:56 1997 Bob Manson * configure.in (targargs): Strip out any supplied --build argument ! before adding our own. Always add --build. Thu Jun 12 21:12:28 1997 Bob Manson --- 2968,2974 ---- Fri Jun 13 10:22:56 1997 Bob Manson * configure.in (targargs): Strip out any supplied --build argument ! before adding our own. Always add --build. Thu Jun 12 21:12:28 1997 Bob Manson *************** Tue Feb 25 18:46:14 1997 Stan Shebs * configure.in (noconfigdirs): Disable target-newlib, ! target-examples and target-libiberty for d30v. Fri Feb 21 17:56:25 1997 Martin M. Hunt --- 3163,3169 ---- Tue Feb 25 13:19:14 1997 Andrew Cagney * configure.in (noconfigdirs): Disable target-newlib, ! target-examples and target-libiberty for d30v. Fri Feb 21 17:56:25 1997 Martin M. Hunt *************** Fri Feb 21 20:58:51 1997 Michael Meissn *** 3121,3127 **** Sun Feb 16 15:41:09 1997 Andrew Cagney * configure.in (d30v-*): Remove sim directory from list of ! unsupported d30v directories Tue Feb 18 17:32:42 1997 Martin M. Hunt --- 3176,3182 ---- Sun Feb 16 15:41:09 1997 Andrew Cagney * configure.in (d30v-*): Remove sim directory from list of ! unsupported d30v directories Tue Feb 18 17:32:42 1997 Martin M. Hunt *************** Fri Nov 8 11:34:58 1996 David J. MacKe *** 3304,3310 **** LynxOs is not a hardware supplier. * config.guess: Contributions from bug-gnu-utils to add support for: ! OpenBSD like NetBSD. Stratus systems. More Pyramid systems. i[n>4]86 Intel chips. --- 3359,3365 ---- LynxOs is not a hardware supplier. * config.guess: Contributions from bug-gnu-utils to add support for: ! OpenBSD like NetBSD. Stratus systems. More Pyramid systems. i[n>4]86 Intel chips. *************** Wed Oct 2 15:52:36 1996 Klaus Kaempf *** 3445,3451 **** Tue Oct 1 01:28:41 1996 James G. Smith * configure.in (noconfigdirs): Don't build libgloss for arm-coff ! targets. Mon Sep 30 14:24:01 1996 Stan Shebs --- 3500,3506 ---- Tue Oct 1 01:28:41 1996 James G. Smith * configure.in (noconfigdirs): Don't build libgloss for arm-coff ! targets. Mon Sep 30 14:24:01 1996 Stan Shebs *************** Sun Jun 23 22:41:54 1996 Geoffrey Noer *** 3672,3678 **** Sat Jun 22 11:39:01 1996 Jason Merrill * Makefile.in (TARGET_SUBDIR): Move comment to previous line so we ! don't get ". ". Fri Jun 21 17:24:48 1996 Jim Wilson --- 3727,3733 ---- Sat Jun 22 11:39:01 1996 Jason Merrill * Makefile.in (TARGET_SUBDIR): Move comment to previous line so we ! don't get ". ". Fri Jun 21 17:24:48 1996 Jim Wilson *************** Fri Dec 29 07:56:11 1995 Michael Meissn *** 4119,4125 **** * Makefile.in (EXTRA_GCC_FLAGS): If any of the make variables LANGUAGES, BOOT_CFLAGS, STMP_FIXPROTO, LIMITS_H_TEST, LIBGCC1_TEST, LIBGCC2_CFLAGS, LIBGCC2_INCLUDES, and ENQUIRE are ! non-empty, pass them on to the GCC make. (all-bootstrap): New rule that is like all-gcc, except it executes the GCC bootstrap rule instead of the GCC all rule. --- 4174,4180 ---- * Makefile.in (EXTRA_GCC_FLAGS): If any of the make variables LANGUAGES, BOOT_CFLAGS, STMP_FIXPROTO, LIMITS_H_TEST, LIBGCC1_TEST, LIBGCC2_CFLAGS, LIBGCC2_INCLUDES, and ENQUIRE are ! non-empty, pass them on to the GCC make. (all-bootstrap): New rule that is like all-gcc, except it executes the GCC bootstrap rule instead of the GCC all rule. *************** Mon Dec 4 12:38:15 1995 Ian Lance Tayl *** 4199,4205 **** Thu Nov 30 14:45:25 1995 J.T. Conklin * config/mt-v810 (CC_FOR_TARGET): Add -ansi flag. NEC compiler ! defaults to K&R mode, but doesn't have varargs.h, so we have to compile in ANSI mode. Thu Nov 30 16:57:33 1995 Per Bothner --- 4254,4260 ---- Thu Nov 30 14:45:25 1995 J.T. Conklin * config/mt-v810 (CC_FOR_TARGET): Add -ansi flag. NEC compiler ! defaults to K&R mode, but doesn't have varargs.h, so we have to compile in ANSI mode. Thu Nov 30 16:57:33 1995 Per Bothner *************** Mon Nov 13 12:34:20 1995 Stan Shebs * configure: CXX defaults to gcc, not g++. If we find ! gcc in the path, set CC to gcc -O2. Tue Nov 7 15:45:17 1995 Ian Lance Taylor --- 4366,4380 ---- * mpw-config.in: Configure grez if targeting Mac. * config.sub: Accept pmac and pmac-mpw as names for PowerMacs, ! accept mpw and mac-mpw as names for m68k Macs, change macos7 to ! just macos. * configure.in: Configure grez resource compiler if targeting Mac. * Makefile.in (all-grez, install-grez): New targets. Wed Nov 8 17:33:51 1995 Jason Merrill * configure: CXX defaults to gcc, not g++. If we find ! gcc in the path, set CC to gcc -O2. Tue Nov 7 15:45:17 1995 Ian Lance Taylor *************** Wed Nov 1 12:23:20 1995 Ian Lance Tayl *** 4369,4376 **** Tue Oct 31 17:52:39 1995 J.T. Conklin * configure.in (host_makefile_frag): Use m68k-sun-sunos* instead ! of m68k-sun-* when selecting mh-sun3 to avoid matching NetBSD/sun3 ! systems. Tue Oct 31 16:57:32 1995 Jim Wilson --- 4424,4431 ---- Tue Oct 31 17:52:39 1995 J.T. Conklin * configure.in (host_makefile_frag): Use m68k-sun-sunos* instead ! of m68k-sun-* when selecting mh-sun3 to avoid matching NetBSD/sun3 ! systems. Tue Oct 31 16:57:32 1995 Jim Wilson *************** Thu Sep 7 20:03:41 1995 Ken Raeburn < *** 4648,4654 **** Fri Sep 1 08:06:58 1995 James G. Smith * config.sub: recognise mips64vr4300 and mips64vr4300el as valid ! targets. Wed Aug 30 21:06:50 1995 Jason Molenda (crash@phydeaux.cygnus.com) --- 4703,4709 ---- Fri Sep 1 08:06:58 1995 James G. Smith * config.sub: recognise mips64vr4300 and mips64vr4300el as valid ! targets. Wed Aug 30 21:06:50 1995 Jason Molenda (crash@phydeaux.cygnus.com) *************** Tue Apr 26 18:11:33 1994 Ian Lance Tayl *** 5642,5649 **** Mon Apr 25 15:06:34 1994 Stan Shebs (shebs@andros.cygnus.com) ! * configure.in (*-*-lynxos*): Don't configure newlib for either ! native or cross Lynx. Sat Apr 16 11:58:16 1994 Doug Evans (dje@canuck.cygnus.com) --- 5697,5704 ---- Mon Apr 25 15:06:34 1994 Stan Shebs (shebs@andros.cygnus.com) ! * configure.in (*-*-lynxos*): Don't configure newlib for either ! native or cross Lynx. Sat Apr 16 11:58:16 1994 Doug Evans (dje@canuck.cygnus.com) *************** Thu Aug 27 13:04:42 1992 Brendan Kehoe *** 7388,7394 **** Mon Aug 24 14:05:14 1992 Ian Lance Taylor (ian@cygnus.com) ! * config.sub, configure.in: accept OSE68000 and OSE68k. * Makefile.in: don't create all directories for ``make install''; let the subdirectories create the ones they need. --- 7443,7449 ---- Mon Aug 24 14:05:14 1992 Ian Lance Taylor (ian@cygnus.com) ! * config.sub, configure.in: accept OSE68000 and OSE68k. * Makefile.in: don't create all directories for ``make install''; let the subdirectories create the ones they need. diff -Nrc3pad gcc-3.0/FAQ gcc-3.0.1/FAQ *** gcc-3.0/FAQ Sun Jun 17 12:50:01 2001 --- gcc-3.0.1/FAQ Sun Aug 19 17:45:10 2001 *************** *** 35,61 **** 1. [24]Unable to run the testsuite 2. [25]How do I pass flags like -fnew-abi to the testsuite? 3. [26]How can I run the test suite with multiple options? ! 4. [27]Bugs and Non-Bugs ! 1. [28]Why can't I initialize a static variable with stdin? ! 2. [29]Why can't I use #if here? ! 3. [30]Problems with floating point computations ! 5. [31]Older versions of GCC or EGCS ! ! 1. [32]Why is there no testsuite in GCC 2.95? ! 2. [33]Is there a stringstream / sstream for gcc 2.95.2? ! ! [34]Miscellaneous ! 1. [35]Virtual memory exhausted ! 2. [36]Friend Templates ! 3. [37]Why do I need autoconf, bison, xgettext, automake, etc? ! 4. [38]Problems debugging GCC code ! 5. [39]Using GCC with GNAT/Ada ! 6. [40]Why can't I build a shared library? ! 7. [41]How to work around too long C++ symbol names? (-fsquangle) ! 8. [42]When building C++, the linker says my constructors, ! destructors or virtual tables are undefined, but I defined them ! 9. [43]What is libstdc++-v3 and how can I use it with g++? ! 10. [44]Will GCC someday include an incremental linker? _________________________________________________________________ General information --- 35,57 ---- 1. [24]Unable to run the testsuite 2. [25]How do I pass flags like -fnew-abi to the testsuite? 3. [26]How can I run the test suite with multiple options? ! 4. [27]Older versions of GCC or EGCS ! 1. [28]Why is there no testsuite in GCC 2.95? ! 2. [29]Is there a stringstream / sstream for gcc 2.95.2? ! 5. [30]Miscellaneous ! 1. [31]Virtual memory exhausted ! 2. [32]Friend Templates ! 3. [33]Why do I need autoconf, bison, xgettext, automake, etc? ! 4. [34]Problems debugging GCC code ! 5. [35]Using GCC with GNAT/Ada ! 6. [36]Why can't I build a shared library? ! 7. [37]How to work around too long C++ symbol names? ! (-fsquangle) ! 8. [38]When building C++, the linker says my constructors, ! destructors or virtual tables are undefined, but I defined ! them ! 9. [39]What is libstdc++-v3 and how can I use it with g++? ! 10. [40]Will GCC someday include an incremental linker? _________________________________________________________________ General information *************** What is the relationship between GCC and *** 77,83 **** development on the gcc2 compiler and appointed the EGCS project as the official GCC maintainers. The net result was a single project which carries forward GCC development under the ultimate control of the ! [45]GCC Steering Committee. _________________________________________________________________ What is the relationship between GCC and Cygnus / Red Hat? --- 73,79 ---- development on the gcc2 compiler and appointed the EGCS project as the official GCC maintainers. The net result was a single project which carries forward GCC development under the ultimate control of the ! [41]GCC Steering Committee. _________________________________________________________________ What is the relationship between GCC and Cygnus / Red Hat? *************** What is the relationship between GCC and *** 88,94 **** While Red Hat does donate hardware, network connections, code and developer time to GCC development, Red Hat does not control GCC. ! Overall control of GCC is in the hands of the [46]GCC Steering Committee which includes people from a variety of different organizations and backgrounds. The purpose of the steering committee is to make decisions in the best interest of GCC and to help ensure --- 84,90 ---- While Red Hat does donate hardware, network connections, code and developer time to GCC development, Red Hat does not control GCC. ! Overall control of GCC is in the hands of the [42]GCC Steering Committee which includes people from a variety of different organizations and backgrounds. The purpose of the steering committee is to make decisions in the best interest of GCC and to help ensure *************** What is the relationship between GCC and *** 100,106 **** What is an open development model? ! We are using a bazaar style [47][1] approach to GCC development: we make snapshots publicly available to anyone who wants to try them; we welcome anyone to join the development mailing list. All of the discussions on the development mailing list are available via the web. --- 96,102 ---- What is an open development model? ! We are using a bazaar style [43][1] approach to GCC development: we make snapshots publicly available to anyone who wants to try them; we welcome anyone to join the development mailing list. All of the discussions on the development mailing list are available via the web. *************** What is an open development model? *** 138,150 **** the past few months. The paper which started all of this introduced two terms: A cathedral development model versus a bazaar development model. The paper is written by Eric S. Raymond, it is ! called ``[48]The Cathedral and the Bazaar''. The paper is a useful starting point for discussions. _________________________________________________________________ How do I report a bug? ! There are complete instructions [49]here. _________________________________________________________________ How do I get a bug fixed or a feature added? --- 134,146 ---- the past few months. The paper which started all of this introduced two terms: A cathedral development model versus a bazaar development model. The paper is written by Eric S. Raymond, it is ! called ``[44]The Cathedral and the Bazaar''. The paper is a useful starting point for discussions. _________________________________________________________________ How do I report a bug? ! There are complete instructions [45]here. _________________________________________________________________ How do I get a bug fixed or a feature added? *************** How do I get a bug fixed or a feature ad *** 166,172 **** commercial support organization since the people who read gcc-bugs, if they choose to help you, will be volunteering their time. This alternative will work best if you follow the directions ! on [50]submitting bugreports. * Fix it yourself. This alternative will probably bring results, if you work hard enough, but will probably take a lot of time, and, depending on the quality of your work and the perceived benefits --- 162,168 ---- commercial support organization since the people who read gcc-bugs, if they choose to help you, will be volunteering their time. This alternative will work best if you follow the directions ! on [46]submitting bugreports. * Fix it yourself. This alternative will probably bring results, if you work hard enough, but will probably take a lot of time, and, depending on the quality of your work and the perceived benefits *************** How do I get a bug fixed or a feature ad *** 177,183 **** How can I get a development environment for GCC without using CVS? GCC snapshots are available from the FTP server and its mirrors; see ! the [51]GCC mirror list. _________________________________________________________________ Installation --- 173,179 ---- How can I get a development environment for GCC without using CVS? GCC snapshots are available from the FTP server and its mirrors; see ! the [47]GCC mirror list. _________________________________________________________________ Installation *************** How to install multiple versions of GCC *** 229,249 **** is that the sed command invariably contains characters significant to the shell, and these have to be escaped correctly, also it is not possible to use "^" or "$" in the command. Here is the option to ! prefix "new-" to the new GCC installed programs ! "--program-transform-name='s,\\\\(.*\\\\),new-\\\\1,'". With the above ! --prefix option, that will install the new GCC programs into ! /usr/local/gcc/bin with names prefixed by "new-". You can use --program-transform-name if you have multiple versions of GCC, and wish to be sure about which version you are invoking. If you use --prefix, GCC may have difficulty locating a GNU assembler ! or linker on your system, [52]GCC can not find GNU as/GNU ld explains how to deal with this. Another option that may be easier is to use the --program-prefix= or --program-suffix= options to configure. So if you're installing GCC 2.95.2 and don't want to disturb the current version of GCC in ! /usr/local/bin/, you could do 'configure --program-suffix=-2.95.2 '. This should result in GCC being installed as /usr/local/bin/gcc-2.95.2 instead of /usr/local/bin/gcc. _________________________________________________________________ --- 225,250 ---- is that the sed command invariably contains characters significant to the shell, and these have to be escaped correctly, also it is not possible to use "^" or "$" in the command. Here is the option to ! prefix "new-" to the new GCC installed programs: ! ! --program-transform-name='s,\\\\(.*\\\\),new-\\\\1,' ! ! With the above --prefix option, that will install the new GCC programs ! into /usr/local/gcc/bin with names prefixed by "new-". You can use --program-transform-name if you have multiple versions of GCC, and wish to be sure about which version you are invoking. If you use --prefix, GCC may have difficulty locating a GNU assembler ! or linker on your system, [48]GCC can not find GNU as/GNU ld explains how to deal with this. Another option that may be easier is to use the --program-prefix= or --program-suffix= options to configure. So if you're installing GCC 2.95.2 and don't want to disturb the current version of GCC in ! /usr/local/bin/, you could do ! ! configure --program-suffix=-2.95.2 ! This should result in GCC being installed as /usr/local/bin/gcc-2.95.2 instead of /usr/local/bin/gcc. _________________________________________________________________ *************** GCC can not find GNU as/GNU ld *** 300,306 **** versions of those programs. To ensure that GCC finds the GNU assembler (the GNU loader), which are ! required by [53]some configurations, you should configure these with the same --prefix option as you used for GCC. Then build & install GNU as (GNU ld) and proceed with building GCC. --- 301,307 ---- versions of those programs. To ensure that GCC finds the GNU assembler (the GNU loader), which are ! required by [49]some configurations, you should configure these with the same --prefix option as you used for GCC. Then build & install GNU as (GNU ld) and proceed with building GCC. *************** Unable to run the testsuite *** 354,360 **** If you get a message about unable to find "standard.exp" when trying to run the GCC testsuites, then your dejagnu is too old to run the GCC tests. You will need to get a newer version of dejagnu from ! [54]http://www.gnu.org/software/dejagnu/dejagnu.html. _________________________________________________________________ How do I pass flags like -fnew-abi to the testsuite? --- 355,361 ---- If you get a message about unable to find "standard.exp" when trying to run the GCC testsuites, then your dejagnu is too old to run the GCC tests. You will need to get a newer version of dejagnu from ! [50]http://www.gnu.org/software/dejagnu/dejagnu.html. _________________________________________________________________ How do I pass flags like -fnew-abi to the testsuite? *************** How can I run the test suite with multip *** 384,521 **** This technique is particularly useful on multilibbed targets. _________________________________________________________________ - Bugs and Non-Bugs - - Unfortunately, improvements in tools that are widely used are sooner - or later bound to break something. Sometimes, the code that breaks was - wrong, and then that code should be fixed, even if it works for - earlier versions of GCC or other compilers. The following problems - with some releases of widely used packages have been identified: - - There is a separate [55]list of well-known bugs describing known - deficiencies. Naturally we'd like that list to be of zero length. - - To report a bug, see [56]How to report bugs. - _________________________________________________________________ - - Why can't I initialize a static variable with stdin? - - This has nothing to do with GCC, but people ask us about it a lot. - Code like this: - #include - - FILE *yyin = stdin; - - will not compile with GNU libc (Linux libc6), because stdin is not a - constant. This was done deliberately, in order for there to be no - limit on the number of open FILE objects. It is surprising for people - used to traditional Unix C libraries, but it is permitted by the C - standard. - - This construct commonly occurs in code generated by old versions of - lex or yacc. We suggest you try regenerating the parser with a current - version of flex or bison, respectively. In your own code, the - appropriate fix is to move the initialization to the beginning of - main. - - There is a common misconception that the GCC developers are - responsible for GNU libc. These are in fact two entirely separate - projects. The appropriate place to ask questions relating to GNU libc - is [57]libc-alpha@sources.redhat.com. - _________________________________________________________________ - - Why can't I use #if here? - - Let me guess... you wrote code that looks something like this: - memcpy(dest, src, - #ifdef PLATFORM1 - 12 - #else - 24 - #endif - ); - - and you got a whole pile of error messages: - test.c:11: warning: preprocessing directive not recognized within macro arg - test.c:11: warning: preprocessing directive not recognized within macro arg - test.c:11: warning: preprocessing directive not recognized within macro arg - test.c: In function `foo': - test.c:6: undefined or invalid # directive - test.c:8: undefined or invalid # directive - test.c:9: parse error before `24' - test.c:10: undefined or invalid # directive - test.c:11: parse error before `#' - - The problem, simply put, is that GCC's preprocessor does not allow you - to put #ifdef (or any other directive) inside the arguments of a - macro. Your C library's string.h happens to define memcpy as a macro - - this is perfectly legitimate. The code therefore will not compile. - - We have two good reasons for not allowing directives inside macro - arguments. First, it is not portable. It is "undefined behavior" - according to the C standard; that means different compilers will do - different things with it. Some will give you errors. Some will dump - core. Some will silently mangle your code - you could get the - equivalent of - memcpy(dest, src, 1224); - - from the above example. A very few might do what you expected it to. - We therefore feel it is most useful for GCC to reject this construct - immediately so that it is found and fixed. - - Second, it is extraordinarily difficult to implement the preprocessor - such that it does what you would expect for every possible directive - found inside a macro argument. The best example is perhaps - #define foo(arg) ... arg ... - foo(blah - #undef foo - blah) - - which is impossible to implement in portable C without leaking memory. - Allowing only a subset of directives would be confusing. - - It is always possible to rewrite code which uses conditionals inside - macros so that it doesn't. You could write the above example - #ifdef PLATFORM1 - memcpy(dest, src, 12); - #else - memcpy(dest, src, 24); - #endif - - This is a bit more typing, but I personally think it's better style in - addition to being more portable. - - In recent versions of glibc, printf is among the functions which are - implemented as macros. - - Problems with floating point computations - - In a number of cases, GCC appears to perform floating point - computations incorrectly. For example, the program - #include - - int main() { - - double min = 0.0; - double max = 0.5; - double width = 0.01; - std::cout << (int)(((max - min) / width) - 1) << std::endl; - - } - - might print 50 on some systems and optimization levels, and 51 on - others. - - The is the result of rounding: The computer cannot represent all real - numbers exactly, so it has to use approximations. When computing with - approximation, the computer needs to round to the nearest - representable number. - - This is not a bug in the compiler, but an inherent limitation of the - float and double types. Please study [58]this paper for more - information. - _________________________________________________________________ - Older versions of GCC and EGCS Why is there no testsuite in GCC 2.95? --- 385,390 ---- *************** Why is there no testsuite in GCC 2.95? *** 532,538 **** Is there a stringstream / sstream for gcc 2.95.2? Yes, it's at: ! [59]http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00700/sstream. _________________________________________________________________ Miscellaneous --- 401,407 ---- Is there a stringstream / sstream for gcc 2.95.2? Yes, it's at: ! [51]http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00700/sstream. _________________________________________________________________ Miscellaneous *************** Why do I need autoconf, bison, xgettext, *** 625,634 **** rebuild GCC. In general, the current versions of these tools from ! [60]ftp://ftp.gnu.org/gnu/ will work. At present, Autoconf 2.50 is not supported, and you will need to use Autoconf 2.13; work is in progress to fix this problem. Also look at ! [61]ftp://gcc.gnu.org/pub/gcc/infrastructure/ for any special versions of packages. _________________________________________________________________ --- 494,503 ---- rebuild GCC. In general, the current versions of these tools from ! [52]ftp://ftp.gnu.org/gnu/ will work. At present, Autoconf 2.50 is not supported, and you will need to use Autoconf 2.13; work is in progress to fix this problem. Also look at ! [53]ftp://gcc.gnu.org/pub/gcc/infrastructure/ for any special versions of packages. _________________________________________________________________ *************** tables are undefined, but I defined them *** 718,724 **** What is libstdc++-v3 and how can I use it with g++? ! From the [62]libstdc++-v3 FAQ: "The GNU Standard C++ Library v3, or libstdc++-2.9x, is an ongoing project to implement the ISO 14882 Standard C++ library as described in chapters 17 through 27 and annex D." --- 587,593 ---- What is libstdc++-v3 and how can I use it with g++? ! From the [54]libstdc++-v3 FAQ: "The GNU Standard C++ Library v3, or libstdc++-2.9x, is an ongoing project to implement the ISO 14882 Standard C++ library as described in chapters 17 through 27 and annex D." *************** References *** 761,799 **** 24. http://gcc.gnu.org/faq.html#dejagnu 25. http://gcc.gnu.org/faq.html#testoptions 26. http://gcc.gnu.org/faq.html#multipletests ! 27. http://gcc.gnu.org/faq.html#bugs ! 28. http://gcc.gnu.org/faq.html#stdin ! 29. http://gcc.gnu.org/faq.html#macarg ! 30. http://gcc.gnu.org/faq.html#rounding ! 31. http://gcc.gnu.org/faq.html#old ! 32. http://gcc.gnu.org/faq.html#2.95suite ! 33. http://gcc.gnu.org/faq.html#2.95sstream ! 34. http://gcc.gnu.org/faq.html#misc ! 35. http://gcc.gnu.org/faq.html#memexhausted ! 36. http://gcc.gnu.org/faq.html#friend ! 37. http://gcc.gnu.org/faq.html#generated_files ! 38. http://gcc.gnu.org/faq.html#gdb ! 39. http://gcc.gnu.org/faq.html#gnat ! 40. http://gcc.gnu.org/faq.html#picflag-needed ! 41. http://gcc.gnu.org/faq.html#squangle ! 42. http://gcc.gnu.org/faq.html#vtables ! 43. http://gcc.gnu.org/faq.html#libstdc++ ! 44. http://gcc.gnu.org/faq.html#incremental ! 45. http://gcc.gnu.org/steering.html ! 46. http://gcc.gnu.org/steering.html ! 47. http://gcc.gnu.org/faq.html#cathedral-vs-bazaar ! 48. http://www.tuxedo.org/~esr/writings/cathedral-bazaar/ ! 49. http://gcc.gnu.org/bugs.html ! 50. http://gcc.gnu.org/bugs.html ! 51. http://gcc.gnu.org/mirrors.html ! 52. http://gcc.gnu.org/faq.html#gas ! 53. http://gcc.gnu.org/install/specific.html ! 54. http://www.gnu.org/software/dejagnu/dejagnu.html ! 55. http://gcc.gnu.org/bugs.html#known ! 56. http://gcc.gnu.org/bugs.html ! 57. mailto:libc-alpha@sources.redhat.com ! 58. http://www.validgh.com/goldberg/paper.ps ! 59. http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00700/sstream ! 60. ftp://ftp.gnu.org/gnu/ ! 61. ftp://gcc.gnu.org/pub/gcc/infrastructure/ ! 62. http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html --- 630,660 ---- 24. http://gcc.gnu.org/faq.html#dejagnu 25. http://gcc.gnu.org/faq.html#testoptions 26. http://gcc.gnu.org/faq.html#multipletests ! 27. http://gcc.gnu.org/faq.html#old ! 28. http://gcc.gnu.org/faq.html#2.95suite ! 29. http://gcc.gnu.org/faq.html#2.95sstream ! 30. http://gcc.gnu.org/faq.html#misc ! 31. http://gcc.gnu.org/faq.html#memexhausted ! 32. http://gcc.gnu.org/faq.html#friend ! 33. http://gcc.gnu.org/faq.html#generated_files ! 34. http://gcc.gnu.org/faq.html#gdb ! 35. http://gcc.gnu.org/faq.html#gnat ! 36. http://gcc.gnu.org/faq.html#picflag-needed ! 37. http://gcc.gnu.org/faq.html#squangle ! 38. http://gcc.gnu.org/faq.html#vtables ! 39. http://gcc.gnu.org/faq.html#libstdc++ ! 40. http://gcc.gnu.org/faq.html#incremental ! 41. http://gcc.gnu.org/steering.html ! 42. http://gcc.gnu.org/steering.html ! 43. http://gcc.gnu.org/faq.html#cathedral-vs-bazaar ! 44. http://www.tuxedo.org/~esr/writings/cathedral-bazaar/ ! 45. http://gcc.gnu.org/bugs.html ! 46. http://gcc.gnu.org/bugs.html ! 47. http://gcc.gnu.org/mirrors.html ! 48. http://gcc.gnu.org/faq.html#gas ! 49. http://gcc.gnu.org/install/specific.html ! 50. http://www.gnu.org/software/dejagnu/dejagnu.html ! 51. http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00700/sstream ! 52. ftp://ftp.gnu.org/gnu/ ! 53. ftp://gcc.gnu.org/pub/gcc/infrastructure/ ! 54. http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html diff -Nrc3pad gcc-3.0/GNATS gcc-3.0.1/GNATS *** gcc-3.0/GNATS Sun Jun 17 12:50:02 2001 --- gcc-3.0.1/GNATS Sun Aug 19 17:45:10 2001 *************** *** 1,15 **** gccbug and gnatsweb ! [1]GNATS is the GNU bug tracking system, and it is now used to track ! GCC bug reports, as well. Before submitting a bug report, please read ! the [2]general instructions. The preferred way of submitting a bug report is by means of the gccbug program that is automatically installed with current versions of GCC and submits the bug report by e-mail. ! If this is not possible, please use the [3]gnatsweb interface. Make sure you include an e-mail address, so we can inform you when the status of your report changes. --- 1,15 ---- gccbug and gnatsweb ! GNATS is the GNU bug tracking system, and it is now used to track GCC ! bug reports, as well. Before submitting a bug report, please read the ! [1]general instructions. The preferred way of submitting a bug report is by means of the gccbug program that is automatically installed with current versions of GCC and submits the bug report by e-mail. ! If this is not possible, please use the [2]gnatsweb interface. Make sure you include an e-mail address, so we can inform you when the status of your report changes. *************** *** 178,183 **** References ! 1. http://sources.redhat.com/gnats/ ! 2. http://gcc.gnu.org/bugs.html ! 3. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?database=gcc&user=guest&password=guest&cmd=login --- 178,182 ---- References ! 1. http://gcc.gnu.org/bugs.html ! 2. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?database=gcc&user=guest&password=guest&cmd=login diff -Nrc3pad gcc-3.0/INSTALL/binaries.html gcc-3.0.1/INSTALL/binaries.html *** gcc-3.0/INSTALL/binaries.html Sun Jun 17 12:50:02 2001 --- gcc-3.0.1/INSTALL/binaries.html Sun Aug 19 17:45:11 2001 *************** *** 8,14 ****

Installing GCC: Binaries

!

We are often asked about pre-compiled versions of GCC. While we cannot provide these for all platforms, below you'll find links to binaries for various platforms where creating them by yourself is not easy due to various reasons. --- 8,14 ----

Installing GCC: Binaries

!

We are often asked about pre-compiled versions of GCC. While we cannot provide these for all platforms, below you'll find links to binaries for various platforms where creating them by yourself is not easy due to various reasons. *************** contact their makers. *** 20,28 ****

! Note that these rules do not check for the value of PATH. You may want to use --with-as if no assembler is installed in the directories listed above, or if you have multiple assemblers installed and want to choose one that is not found by the above rules. *************** and want to choose one that is not found *** 204,210 ****
Same as --with-gnu-as but for linker. !
--with-ld=/path/to/ld
Same as --with-as, but for the linker. --- 228,234 ----
Same as --with-gnu-as but for linker. !
--with-ld=pathname
Same as --with-as, but for the linker. *************** but for linker. *** 213,222 **** information should be used instead of whatever format the host normally uses. Normally GCC uses the same debug format as the host system. !
--enable-multilib
Specify that multiple target ! libraries should be built to support different target variants, calling ! conventions, etc. This is the default.
--enable-threads
Specify that the target --- 237,294 ---- information should be used instead of whatever format the host normally uses. Normally GCC uses the same debug format as the host system. !

On MIPS based systems and on Alphas, you must specify whether you want ! GCC to create the normal ECOFF debugging format, or to use BSD-style ! stabs passed through the ECOFF symbol table. The normal ECOFF debug ! format cannot fully handle languages other than C. BSD stabs format can ! handle other languages, but it only works with the GNU debugger GDB. ! !

Normally, GCC uses the ECOFF debugging format by default; if you ! prefer BSD stabs, specify --with-stabs when you configure GCC. ! !

No matter which default you choose when you configure GCC, the user ! can use the -gcoff and -gstabs+ options to specify explicitly ! the debug format for a particular compilation. ! !

--with-stabs is meaningful on the ISC system on the 386, also, if ! --with-gas is used. It selects use of stabs debugging ! information embedded in COFF output. This kind of debugging information ! supports C++ well; ordinary COFF debugging information does not. ! !

--with-stabs is also meaningful on 386 systems running SVR4. It ! selects use of stabs debugging information embedded in ELF output. The ! C++ compiler currently (2.6.0) does not support the DWARF debugging ! information normally used on 386 SVR4 platforms; stabs provide a ! workable alternative. This requires gas and gdb, as the normal SVR4 ! tools can not generate or interpret stabs. ! !

--disable-multilib
Specify that multiple target ! libraries to support different target variants, calling ! conventions, etc should not be built. The default is to build a ! predefined set of them. ! !

Some targets provide finer-grained control over which multilibs are built ! (e.g., --disable-softfloat): !

! !
arc-*-elf* !
biendian. ! !
arm-*-* !
fpu, 26bit, underscore, interwork, biendian, nofmult. ! !
m68*-*-* !
softfloat, m68881, m68000, m68020. ! !
mips*-*-* !
single-float, biendian, softfloat. ! !
powerpc*-*-*, rs6000*-*-* !
aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian, ! sysv, aix. ! !

--enable-threads
Specify that the target *************** supports threads. This affects the Obje *** 224,229 **** --- 296,311 ---- library, and exception handling for other languages like C++ and Java. On some systems, this is the default. +

In general, the best (and, in many cases, the only known) threading + model available will be configured for use. Beware that on some + systems, gcc has not been taught what threading models are generally + available for the system. In this case, --enable-threads is an + alias for --enable-threads=single. + +

--disable-threads +
Specify that threading support should be disabled for the system. + This is an alias for --enable-threads=single. +
--enable-threads=lib
Specify that lib is the thread support library. This affects the Objective-C *************** like C++ and Java. The possibilities fo *** 235,256 ****
AIX thread support.
dce
DCE thread support. -
decosf1 -
DEC OSF/1 thread support. -
irix -
SGI IRIX thread support.
mach !
Generic MACH thread support, known to work on NEXTSTEP. !
os2 !
IBM OS/2 thread support.
posix
Generic POSIX thread support.
pthreads !
Same as posix.
single
Disable thread support, should work for all platforms.
solaris !
SUN Solaris thread support.
vxworks
VxWorks thread support.
win32 --- 317,340 ----
AIX thread support.
dce
DCE thread support.
mach !
Generic MACH thread support, known to work on NeXTSTEP. (Please note ! that the file needed to support this configuration, gthr-mach.h, is ! missing and thus this setting will cause a known bootstrap failure.) !
no !
This is an alias for single.
posix
Generic POSIX thread support.
pthreads !
Same as posix on arm*-*-linux*, *-*-chorusos* and *-*-freebsd* ! only. A future release of gcc might remove this alias or extend it ! to all platforms. !
rtems !
RTEMS thread support.
single
Disable thread support, should work for all platforms.
solaris !
Sun Solaris 2 thread support.
vxworks
VxWorks thread support.
win32 *************** like C++ and Java. The possibilities fo *** 261,267 ****
Specify which cpu variant the compiler should generate code for by default. This is currently only supported on the some ports, specifically arm, powerpc, and ! SPARC. If configure does not recognize the model name (e.g. arm700, 603e, or ultrasparc) you provide, please check the configure script for a complete list of supported models. --- 345,351 ----
Specify which cpu variant the compiler should generate code for by default. This is currently only supported on the some ports, specifically arm, powerpc, and ! SPARC. If configure does not recognize the model name (e.g. arm700, 603e, or ultrasparc) you provide, please check the configure script for a complete list of supported models. *************** in prefix/dirname< *** 280,313 ****
--enable-maintainer-mode
The build rules that regenerate the GCC master message catalog gcc.pot are normally ! disabled. This is because it can only be rebuilt if the complete source ! tree is present. If you have changed the sources and want to rebuild the catalog, configuring with --enable-maintainer-mode will enable ! this. Note that you need a recent version of the gettext tools to do so.
--enable-version-specific-runtime-libs
Specify that runtime libraries should be installed in the compiler specific subdirectory (libsubdir) rather than the usual places. In ! addition, libstdc++'s include files will be installed in libsubdir/include/g++ unless you overruled it by using --with-gxx-include-dir=dirname. Using this option is particularly useful if you intend to use several versions of GCC in parallel. This is currently supported by libf2c and ! libstdc++.
--enable-languages=lang1,lang2,...
Specify that only a particular subset of compilers and ! their runtime libraries should be built. For a list of valid values for langN you can issue the following command in the ! gcc directory of your GCC source tree:
grep language= ! */config-lang.in
Currently, you can use any of the following: ! c++, f77, java and objc. CHILL is not currently maintained, and will almost ! certainly fail to compile. Note that this switch does not work with ! EGCS 1.1.2 or older versions of egcs. It is supported in GCC 2.95 ! and newer versions.
If you do not pass this flag, all languages available in the gcc sub-tree will be configured. Re-defining LANGUAGES when calling make bootstrap does not work anymore, as those --- 364,398 ----
--enable-maintainer-mode
The build rules that regenerate the GCC master message catalog gcc.pot are normally ! disabled. This is because it can only be rebuilt if the complete source ! tree is present. If you have changed the sources and want to rebuild the catalog, configuring with --enable-maintainer-mode will enable ! this. Note that you need a recent version of the gettext tools to do so.
--enable-version-specific-runtime-libs
Specify that runtime libraries should be installed in the compiler specific subdirectory (libsubdir) rather than the usual places. In ! addition, libstdc++'s include files will be installed in libsubdir/include/g++ unless you overruled it by using --with-gxx-include-dir=dirname. Using this option is particularly useful if you intend to use several versions of GCC in parallel. This is currently supported by libf2c and ! libstdc++, and is the default for libobjc which cannot be ! changed in this case.
--enable-languages=lang1,lang2,...
Specify that only a particular subset of compilers and ! their runtime libraries should be built. For a list of valid values for langN you can issue the following command in the ! gcc directory of your GCC source tree:
!
grep language= */config-lang.in
! 
! Currently, you can use any of the following: ! c, c++, f77, java and objc. CHILL is not currently maintained, and will almost ! certainly fail to compile.
If you do not pass this flag, all languages available in the gcc sub-tree will be configured. Re-defining LANGUAGES when calling make bootstrap does not work anymore, as those *************** language sub-directories might not have *** 318,348 **** used by GCJ should not be built. This is useful in case you intend to use GCJ with some other run-time, or you're going to install it separately, or it just happens not to build on your particular ! machine. In general, if the Java front-end is enabled, the GCJ libraries will be enabled too, unless they're known to not work on ! the target platform. If GCJ is enabled but libgcj isn't built, you may need to port it; in this case, before modifying the top-level ! configure.in so that libgcj is enabled by default on this platform, you may use --enable-libgcj to override the default.
--with-dwarf2
Specify that the compiler should ! use DWARF2 debugging information as the default.
--enable-win32-registry !
--enable-win32-registry=KEY
--disable-win32-registry
The --enable-win32-registry option enables Windows-hosted GCC to look up installations paths in the registry using the following key: !
HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\KEY
  
!

KEY defaults to GCC version number, and can be overridden by the ! --enable-win32-registry=KEY option. Vendors and distributors who use custom installers are encouraged to provide a different key, perhaps one comprised of vendor name and GCC version number, to ! avoid conflict with existing installations. This feature is enabled by default, and can be disabled by --disable-win32-registry option. This option has no effect on the other hosts. --- 403,433 ---- used by GCJ should not be built. This is useful in case you intend to use GCJ with some other run-time, or you're going to install it separately, or it just happens not to build on your particular ! machine. In general, if the Java front end is enabled, the GCJ libraries will be enabled too, unless they're known to not work on ! the target platform. If GCJ is enabled but libgcj isn't built, you may need to port it; in this case, before modifying the top-level ! configure.in so that libgcj is enabled by default on this platform, you may use --enable-libgcj to override the default.

--with-dwarf2
Specify that the compiler should ! use DWARF 2 debugging information as the default.
--enable-win32-registry !
--enable-win32-registry=key
--disable-win32-registry
The --enable-win32-registry option enables Windows-hosted GCC to look up installations paths in the registry using the following key: !
HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\key
  
!

key defaults to GCC version number, and can be overridden by the ! --enable-win32-registry=key option. Vendors and distributors who use custom installers are encouraged to provide a different key, perhaps one comprised of vendor name and GCC version number, to ! avoid conflict with existing installations. This feature is enabled by default, and can be disabled by --disable-win32-registry option. This option has no effect on the other hosts. *************** of tree node types when referencing fiel *** 358,364 **** internal consistency checks. This does not change the generated code, but adds error checking within the compiler. This will slow down the compiler and may only work properly if you are building the compiler ! with GNU C. This is on by default when building from CVS or snapshots, but off for releases. More control over the checks may be had by specifying list; the categories of checks available are misc, tree, gc, rtl and gcac. The --- 443,449 ---- internal consistency checks. This does not change the generated code, but adds error checking within the compiler. This will slow down the compiler and may only work properly if you are building the compiler ! with GCC. This is on by default when building from CVS or snapshots, but off for releases. More control over the checks may be had by specifying list; the categories of checks available are misc, tree, gc, rtl and gcac. The *************** checks rtl and gcac--disable-nls

The --enable-nls option enables Native Language Support (NLS), which lets GCC output diagnostics in languages other than American ! English. Native Language Support is enabled by default if not doing a ! canadian cross build. The --disable-nls option disables NLS.
--with-included-gettext
If NLS is enabled, the --with-included-gettext option causes the build --- 454,461 ----
--disable-nls
The --enable-nls option enables Native Language Support (NLS), which lets GCC output diagnostics in languages other than American ! English. Native Language Support is enabled by default if not doing a ! canadian cross build. The --disable-nls option disables NLS.
--with-included-gettext
If NLS is enabled, the --with-included-gettext option causes the build *************** which has target include files. *** 393,408 **** compiler, if prefix/target/sys-include doesn't pre-exist. These include files will be copied into the gcc install directory. Fixincludes will be run on these files to make them compatible with ! gcc.
--with-libs=``dir1 dir2 ... dirN''
Specifies a list of directories which contain the target runtime libraries. These libraries will be copied into the gcc install directory.
--with-newlib !
Specifies that "newlib" is being used as the target C library. This causes __eprintf to be ! omitted from libgcc.a on the assumption that it will be provided by ! newlib.

Note that each --enable option has a corresponding --- 478,493 ---- compiler, if prefix/target/sys-include doesn't pre-exist. These include files will be copied into the gcc install directory. Fixincludes will be run on these files to make them compatible with ! GCC.

--with-libs=``dir1 dir2 ... dirN''
Specifies a list of directories which contain the target runtime libraries. These libraries will be copied into the gcc install directory.
--with-newlib !
Specifies that newlib is being used as the target C library. This causes __eprintf to be ! omitted from libgcc.a on the assumption that it will be provided by ! newlib.

Note that each --enable option has a corresponding diff -Nrc3pad gcc-3.0/INSTALL/download.html gcc-3.0.1/INSTALL/download.html *** gcc-3.0/INSTALL/download.html Sun Jun 17 12:50:02 2001 --- gcc-3.0.1/INSTALL/download.html Sun Aug 19 17:45:10 2001 *************** *** 8,14 ****

Downloading GCC

!

GCC is distributed via CVS and FTP tarballs compressed with gzip or bzip2. It is possible to download a full distribution or specific components. --- 8,15 ----

Downloading GCC

!

GCC is distributed via CVS and FTP ! tarballs compressed with gzip or bzip2. It is possible to download a full distribution or specific components. *************** components. *** 16,32 **** for information on how to obtain GCC.

The full distribution includes the C, C++, Objective-C, Fortran, Java, ! and Chill compilers. The full distribution also includes runtime libraries ! for C++, Objective-C, Fortran, Java and Chill. (GCC 3.0 does not ! include Chill. Releases before 3.0 do not include the Java runtime ! library.) In GCC 3.0 and later versions, GNU compiler testsuites are also included in the full distribution.

If you choose to download specific components, you must download the core ! gcc distribution plus any language specific distributions you wish to ! use. The core distribution includes the C language front-end as well as the ! shared components. Each language has a tarball which includes the language ! front-end as well as the language runtime (when appropriate).

Unpack the core distribution as well as any language specific distributions in the same directory. --- 17,32 ---- for information on how to obtain GCC.

The full distribution includes the C, C++, Objective-C, Fortran, Java, ! and CHILL compilers. The full distribution also includes runtime libraries ! for C++, Objective-C, Fortran, Java and CHILL. (GCC 3.0 does not ! include CHILL.) In GCC 3.0 and later versions, GNU compiler testsuites are also included in the full distribution.

If you choose to download specific components, you must download the core ! GCC distribution plus any language specific distributions you wish to ! use. The core distribution includes the C language front end as well as the ! shared components. Each language has a tarball which includes the language ! front end as well as the language runtime (when appropriate).

Unpack the core distribution as well as any language specific distributions in the same directory. diff -Nrc3pad gcc-3.0/INSTALL/finalinstall.html gcc-3.0.1/INSTALL/finalinstall.html *** gcc-3.0/INSTALL/finalinstall.html Sun Jun 17 12:50:02 2001 --- gcc-3.0.1/INSTALL/finalinstall.html Sun Aug 19 17:45:10 2001 *************** *** 8,15 ****

Installing GCC: Final installation

!

Now that GCC has been built and tested, you can install it with ! cd objdir; make install.

That step completes the installation of GCC; user level binaries can be found in prefix/bin where prefix is the value you --- 8,16 ----

Installing GCC: Final installation

!

Now that GCC has been built (and optionally tested), you can install it with !

cd objdir; make install
! 

That step completes the installation of GCC; user level binaries can be found in prefix/bin where prefix is the value you *************** parts of the compiler in libd *** 23,36 **** info format in infodir (normally prefix/info).

If you don't mind, please quickly review the ! build status page. If your system is not listed, send a note to gcc@gcc.gnu.org indicating that you successfully built and installed GCC.

Include the output from running srcdir/config.guess. (Do ! not send us the config.guess file itself, just the one-line output from ! running it!)

If you find a bug, please report it following our bug reporting guidelines. --- 24,43 ---- info format in infodir (normally prefix/info).

If you don't mind, please quickly review the ! 3.0 build status page. If your system is not listed, send a note to gcc@gcc.gnu.org indicating that you successfully built and installed GCC.

Include the output from running srcdir/config.guess. (Do ! not send us the config.guess file itself, just the one-line output from ! running it!) Also specify which version you built. ! !

We'd also like to know if the ! host/target specific installation notes ! didn't include your host/target information or if that information is ! incomplete or out of date. Send a note to ! gcc@gcc.gnu.org telling us how the information should be changed.

If you find a bug, please report it following our bug reporting guidelines. diff -Nrc3pad gcc-3.0/INSTALL/index.html gcc-3.0.1/INSTALL/index.html *** gcc-3.0/INSTALL/index.html Sun Jun 17 12:50:02 2001 --- gcc-3.0.1/INSTALL/index.html Sun Aug 19 17:45:10 2001 *************** *** 15,30 **** as detailing some target specific installation instructions.

GCC includes several components that previously were separate distributions ! with their own installation instructions. This document supersedes all ! package specific installation instructions. We provide the component ! specific installation information in the source distribution for historical ! reference purposes only.

Before starting the build/install procedure please check the host/target specific installation notes. We recommend you browse the entire generic installation instructions before you proceed.

The installation procedure itself is broken into five steps.

    --- 15,33 ---- as detailing some target specific installation instructions.

    GCC includes several components that previously were separate distributions ! with their own installation instructions. This document supersedes all ! package specific installation instructions.

    Before starting the build/install procedure please check the host/target specific installation notes. We recommend you browse the entire generic installation instructions before you proceed. +

    A + list of successful builds + for GCC 3.0 releases is available at our web pages. This list is updated + as new information becomes available. +

    The installation procedure itself is broken into five steps.

      *************** you proceed. *** 36,45 ****

    Please note that GCC does not support make uninstall and probably ! won't do so in the near future as this would open a can of worms. Instead, we suggest that you install GCC into a directory of its own and simply remove that directory when you do not need that specific version of GCC ! any longer.


    --- 39,49 ----

Please note that GCC does not support make uninstall and probably ! won't do so in the near future as this would open a can of worms. Instead, we suggest that you install GCC into a directory of its own and simply remove that directory when you do not need that specific version of GCC ! any longer, and, if shared libraries are installed there as well, no ! more binaries exist that use them.


diff -Nrc3pad gcc-3.0/INSTALL/specific.html gcc-3.0.1/INSTALL/specific.html *** gcc-3.0/INSTALL/specific.html Sun Jun 17 12:50:02 2001 --- gcc-3.0.1/INSTALL/specific.html Sun Aug 19 17:45:10 2001 *************** *** 11,16 **** --- 11,21 ----

Please read this document carefully before installing the GNU Compiler Collection on your machine. +

A + list of successful builds + for GCC 3.0 releases is available at our web pages. This list is updated + as new information becomes available. +

  • 1750a-*-*
  • a29k *************** GNU Compiler Collection on your machine. *** 24,39 ****
  • arm-*-riscix
  • avr
  • c4x -
  • decstation-*
  • DOS
  • dsp16xx
  • elxsi-elxsi-bsd
  • h8300-hms
  • hppa*-hp-hpux*
  • hppa*-hp-hpux9
  • hppa*-hp-hpux10
  • hppa*-hp-hpux11 -
  • *-*-freebsd*
  • i370-*-*
  • *-*-linux-gnu
  • i?86-*-linux*oldld --- 29,43 ----
  • arm-*-riscix
  • avr
  • c4x
  • DOS
  • dsp16xx
  • elxsi-elxsi-bsd +
  • *-*-freebsd*
  • h8300-hms
  • hppa*-hp-hpux*
  • hppa*-hp-hpux9
  • hppa*-hp-hpux10
  • hppa*-hp-hpux11
  • i370-*-*
  • *-*-linux-gnu
  • i?86-*-linux*oldld *************** GNU Compiler Collection on your machine. *** 70,84 ****
  • m88k-*-dgux
  • m88k-tektronix-sysv3
  • mips-*-*
  • mips-mips-bsd
  • mips-mips-riscos* !
  • mips*-sgi-irix[45] !
  • mips*-sgi-irix6
  • mips-sony-sysv
  • ns32k-encore
  • ns32k-*-genix
  • ns32k-sequent
  • ns32k-utek
  • powerpc-*-elf powerpc-*-sysv4
  • powerpc-*-linux-gnu*
  • powerpc-*-eabiaix --- 74,91 ----
  • m88k-*-dgux
  • m88k-tektronix-sysv3
  • mips-*-* +
  • mips-dec-*
  • mips-mips-bsd
  • mips-mips-riscos* !
  • mips-sgi-irix4 !
  • mips-sgi-irix5 !
  • mips-sgi-irix6
  • mips-sony-sysv
  • ns32k-encore
  • ns32k-*-genix
  • ns32k-sequent
  • ns32k-utek +
  • powerpc*-*-* powerpc-*-sysv4
  • powerpc-*-elf powerpc-*-sysv4
  • powerpc-*-linux-gnu*
  • powerpc-*-eabiaix *************** GNU Compiler Collection on your machine. *** 89,100 ****
  • powerpcle-*-eabi
  • powerpcle-*-winnt powerpcle-*-pe
  • romp-*-aos romp-*-mach
  • *-*-solaris* -
  • sparc-sun-*
  • sparc-sun-solaris*
  • sparc-sun-solaris2.7
  • *-sun-solaris2.8 -
  • Sun V5.0 Compiler Bugs
  • sparc-sun-sunos*
  • sparc-unknown-linux-gnulibc1
  • sparc64-*-* --- 96,107 ----
  • powerpcle-*-eabi
  • powerpcle-*-winnt powerpcle-*-pe
  • romp-*-aos romp-*-mach +
  • #s390-*-linux* +
  • #s390x-*-linux*
  • *-*-solaris*
  • sparc-sun-solaris*
  • sparc-sun-solaris2.7
  • *-sun-solaris2.8
  • sparc-sun-sunos*
  • sparc-unknown-linux-gnulibc1
  • sparc64-*-* *************** GNU Compiler Collection on your machine. *** 118,136 ****

    MIL-STD-1750A processors.

    The MIL-STD-1750A cross configuration produces output for ! as1750, an assembler/linker available under the GNU Public ! License for the 1750A. as1750 can be obtained at ftp://ftp.fta-berlin.de/pub/crossgcc/1750gals/. A similarly licensed simulator for the 1750A is available from same address. !

    You should ignore a fatal error during the building of libgcc (libgcc is ! not yet implemented for the 1750A.)

    The as1750 assembler requires the file ms1750.inc, which is ! found in the directory config/1750a. !

    GNU CC produced the same sections as the Fairchild F9450 C Compiler, namely:

    --- 125,143 ----

    MIL-STD-1750A processors.

    The MIL-STD-1750A cross configuration produces output for ! as1750, an assembler/linker available under the GNU General Public ! License for the 1750A. as1750 can be obtained at ftp://ftp.fta-berlin.de/pub/crossgcc/1750gals/. A similarly licensed simulator for the 1750A is available from same address. !

    You should ignore a fatal error during the building of libgcc ! (libgcc is not yet implemented for the 1750A.)

    The as1750 assembler requires the file ms1750.inc, which is ! found in the directory gcc/config/1750a. !

    GCC produced the same sections as the Fairchild F9450 C Compiler, namely:

    *************** namely: *** 147,156 ****
    Initialization section (code to copy KREL to SREL).
    !

    The smallest addressable unit is 16 bits (BITS_PER_UNIT is 16). This means that type char is represented with a 16-bit word per character. The 1750A's "Load/Store Upper/Lower Byte" instructions are not used by ! GNU CC.


    --- 154,163 ----
    Initialization section (code to copy KREL to SREL).
    !

    The smallest addressable unit is 16 bits (BITS_PER_UNIT is 16). This means that type char is represented with a 16-bit word per character. The 1750A's "Load/Store Upper/Lower Byte" instructions are not used by ! GCC.


    *************** alpha-based platforms using ELF (in part *** 183,209 **** DEC OSF/1, Digital UNIX and Tru64 UNIX). In addition to reading this section, please read all other sections that match your target. !

    We require binutils 2.11.1 (as of yet unreleased), binutils with ! binutils-2_11-branch tag after May 31, 2001 (as taken below), or newer. ! Previous binutils releases had a number of problems with DWARF2 debugging information, not the least of which is incorrect linking of shared libraries. -

    Until binutils 2.11.1 is released, these sample commands may be useful: - -

    mkdir binutils-2.11.X; cd binutils-2.11.X
    - cvs -d :pserver:anoncvs@anoncvs.cygnus.com:/cvs/src \
    -   co -rbinutils-2_11-branch -P binutils
    - mkdir obj; cd obj
    - ../src/configure --prefix=an-absolute-path
    - make all check install
    - 
    - -

    When configuring gcc, provide explicit --with-gnu-as - --with-as=an-absolute-path/bin/as and - --with-gnu-ld --with-ld=an-absolute-path/bin/ld - options to point into the prefix used above. -


    --- 190,200 ---- DEC OSF/1, Digital UNIX and Tru64 UNIX). In addition to reading this section, please read all other sections that match your target. !

    We require binutils 2.11.2 or newer. ! Previous binutils releases had a number of problems with DWARF 2 debugging information, not the least of which is incorrect linking of shared libraries.


    *************** we need to use the old assembler, invoke *** 219,233 **** -oldas option. To bootstrap GCC, you either need to use the Compaq C Compiler: !
       % CC=cc srcdir/configure [target] [options]
      

    or you can use a copy of GCC 2.95.3 or higher built on Tru64 UNIX V4.0: !

       % CC=gcc -Wa,-oldas srcdir/configure [target] [options]
      
    !

    GNU CC writes a .verstamp directive to the assembler output file unless it is built as a cross-compiler. It gets the version to use from the system header file /usr/include/stamp.h. If you install a new version of DEC Unix, you should rebuild GCC to pick up the new version --- 210,233 ---- -oldas option. To bootstrap GCC, you either need to use the Compaq C Compiler: !

       % CC=cc srcdir/configure [options] [target]
      

    or you can use a copy of GCC 2.95.3 or higher built on Tru64 UNIX V4.0: !

       % CC=gcc -Wa,-oldas srcdir/configure [options] [target]
      
    !

    As of GNU binutils 2.11.2, neither GNU as nor GNU ld ! are supported on Tru64 UNIX, so you must not configure GCC with ! --with-gnu-as or --with-gnu-ld. ! !

    The --enable-threads options isn't supported yet. A patch is ! in preparation for a future release. The Java runtime library has been ! reported to work on Tru64 UNIX V4.0F, V5.0, and V5.1, so you may try ! --enable-libgcj and report your results. ! !

    GCC writes a .verstamp directive to the assembler output file unless it is built as a cross-compiler. It gets the version to use from the system header file /usr/include/stamp.h. If you install a new version of DEC Unix, you should rebuild GCC to pick up the new version *************** unless the comparisons fail without that *** 252,265 **** -save-temps, you will have to manually delete the .i and .s files after each series of compilations. !

    GNU CC now supports both the native (ECOFF) debugging format used by DBX and GDB and an encapsulated STABS format for use only with GDB. See the discussion of the --with-stabs option of configure above for more information on these formats and how to select them.

    There is a bug in DEC's assembler that produces incorrect line numbers for ECOFF format when the .align directive is used. To work ! around this problem, GNU CC will not emit such alignment directives while writing ECOFF format debugging information even if optimization is being performed. Unfortunately, this has the very undesirable side-effect that code addresses when -O is specified are --- 252,265 ---- -save-temps, you will have to manually delete the .i and .s files after each series of compilations. !

    GCC now supports both the native (ECOFF) debugging format used by DBX and GDB and an encapsulated STABS format for use only with GDB. See the discussion of the --with-stabs option of configure above for more information on these formats and how to select them.

    There is a bug in DEC's assembler that produces incorrect line numbers for ECOFF format when the .align directive is used. To work ! around this problem, GCC will not emit such alignment directives while writing ECOFF format debugging information even if optimization is being performed. Unfortunately, this has the very undesirable side-effect that code addresses when -O is specified are *************** debugging, pass --with-gnu-asavr

    ATMEL AVR-family micro controllers. These are used in embedded ! applications. There are no standard Unix configurations. See AVR Options, for the list of supported MCU types.

    Use configure --target=avr --enable-languages="c" to configure GCC. --- 326,334 ----

    avr

    ATMEL AVR-family micro controllers. These are used in embedded ! applications. There are no standard Unix configurations. ! See "AVR Options" in the main manual ! for the list of supported MCU types.

    Use configure --target=avr --enable-languages="c" to configure GCC. *************** can also be obtained from: *** 353,360 ****

    Texas Instruments TMS320C3x and TMS320C4x Floating Point Digital Signal Processors. These are used in embedded applications. There are no ! standard Unix configurations. See C4x Options, for the list of ! supported MCU types.

    GCC can be configured as a cross compiler for both the C3x and C4x architectures on the same system. Use configure --target=c4x --- 355,363 ----

    Texas Instruments TMS320C3x and TMS320C4x Floating Point Digital Signal Processors. These are used in embedded applications. There are no ! standard Unix configurations. ! See "TMS320C3x/C4x Options" in the main manual ! for the list of supported MCU types.

    GCC can be configured as a cross compiler for both the C3x and C4x architectures on the same system. Use configure --target=c4x *************** architectures on the same system. Use < *** 364,422 **** can also be obtained from:


    !

    decstation-*

    !

    MIPS-based DECstations can support three different personalities: ! Ultrix, DEC OSF/1, and OSF/rose. (Alpha-based DECstation products have ! a configuration name beginning with alpha-dec.) To configure GCC ! for these platforms use the following configurations: !

    !
    decstation-ultrix !
    Ultrix configuration. !
    decstation-osf1 !
    Dec's version of OSF/1. !
    decstation-osfrose !
    Open Software Foundation reference port of OSF/1 which uses the ! OSF/rose object file format instead of ECOFF. Normally, you ! would not select this configuration. !
    !

    The MIPS C compiler needs to be told to increase its table size ! for switch statements with the -Wf,-XNg1500 option in ! order to compile cp/parse.c. If you use the -O2 ! optimization option, you also need to use -Olimit 3000. ! Both of these options are automatically generated in the ! Makefile that the shell script configure builds. ! If you override the CC make variable and use the MIPS ! compilers, you may need to add -Wf,-XNg1500 -Olimit 3000.


    !

    DOS

    ! !

    Please have a look at our binaries page. !

    You cannot install GNU C by itself on MSDOS; it will not compile under ! any MSDOS compiler except itself. You need to get the complete ! compilation package DJGPP, which includes binaries as well as sources, ! and includes all the necessary compilation tools and libraries. !

    !
    !

    dsp16xx

    !

    A port to the AT&T DSP1610 family of processors.


    --- 367,423 ---- can also be obtained from:


    !

    DOS

    !

    Please have a look at our binaries page. !

    You cannot install GCC by itself on MSDOS; it will not compile under ! any MSDOS compiler except itself. You need to get the complete ! compilation package DJGPP, which includes binaries as well as sources, ! and includes all the necessary compilation tools and libraries. !

    !
    !

    dsp16xx

    !

    A port to the AT&T DSP1610 family of processors.


    !

    *-*-freebsd*

    !

    The version of binutils installed in /usr/bin is known to work unless ! otherwise specified in any per-architecture notes. However, binutils ! 2.11 is known to improve overall testsuite results. !

    For FreeBSD 1, FreeBSD 2 or any mutant a.out versions of FreeBSD 3: All ! configuration support and files as shipped with GCC 2.95 are still in ! place. FreeBSD 2.2.7 has been known to bootstrap completely; however, ! it is unknown which version of binutils was used (it is assumed that it ! was the system copy in /usr/bin) and C++ EH failures were noted. !

    For FreeBSD using the ELF file format: DWARF 2 debugging is now the ! default for all CPU architectures. It had been the default on ! FreeBSD/alpha since its inception. You may use -gstabs instead ! of -g, if you really want the old debugging format. There are ! no known issues with mixing object files and libraries with different ! debugging formats. Otherwise, this release of GCC should now match more ! of the configuration used in the stock FreeBSD configuration of GCC. In ! particular, --enable-threads is now configured by default. ! However, as a general user, do not attempt to replace the system ! compiler with this release. Known to bootstrap and check with good ! results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3 and 5-CURRENT. !

    At this time, --enable-threads is not compatible with ! --enable-libgcj on FreeBSD.


    *************** and includes all the necessary compilati *** 424,430 ****

    elxsi-elxsi-bsd

    The Elxsi's C compiler has known limitations that prevent it from ! compiling GNU C. Please contact mrs@cygnus.com for more details.


    --- 425,431 ----

    elxsi-elxsi-bsd

    The Elxsi's C compiler has known limitations that prevent it from ! compiling GCC. Please contact mrs@wrs.com for more details.


    *************** longer a multiple of 2 bytes. *** 445,451 ****

    hppa*-hp-hpux*

    !

    We highly recommend using gas/binutils-2.8 or newer on all hppa platforms; you may encounter a variety of problems when using the HP assembler. --- 446,452 ----

    hppa*-hp-hpux*

    !

    We highly recommend using gas/binutils 2.8 or newer on all hppa platforms; you may encounter a variety of problems when using the HP assembler. *************** use GAS and GDB and configure GCC with t *** 456,465 **** --with-as=... options.

    If you wish to use pa-risc 2.0 architecture support, you must use either ! the HP assembler, gas/binutils-2.11 or a recent snapshot of gas. !

    More specific information to hppa*-hp-hpux* targets follows.


    --- 457,466 ---- --with-as=... options.

    If you wish to use pa-risc 2.0 architecture support, you must use either ! the HP assembler, gas/binutils 2.11 or a recent snapshot of gas. !

    More specific information to hppa*-hp-hpux* targets follows.


    *************** this platform. *** 508,544 ****


    !

    *-*-freebsd*

    ! !

    The version of binutils installed in /usr/bin is known to work unless ! otherwise specified in any per-architecture notes. However, binutils ! 2.11 is known to improve overall testsuite results. ! !

    For FreeBSD 1, FreeBSD 2 or any mutant a.out versions of FreeBSD 3: All ! configuration support and files as shipped with gcc 2.95 are still in ! place. FreeBSD 2.2.7 has been known to bootstrap completely; however, ! it is unknown which version of binutils was used (it is assumed that it ! was the system copy in /usr/bin) and C++ EH failures were noted. ! !

    For FreeBSD using the ELF file format: DWARF2 debugging is now the ! default for all CPU architectures. It had been the default on ! FreeBSD/alpha since its inception. You may use -gstabs instead ! of -g, if you really want the old debugging format. There are ! no known issues with mixing object files and libraries with different ! debugging formats. Otherwise, this release of gcc should now match more ! of the configuration used in the stock FreeBSD configuration of gcc. In ! particular, --enable-threads is now configured by default. ! However, as a general user, do not attempt to replace the system ! compiler with this release. Known to bootstrap and check with good ! results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3 and 5-CURRENT. ! !

    At this time, --enable-threads is not compatible with ! --enable-libgcj on FreeBSD. ! !

    !
    ! !

    i370-*-*

    This port is very preliminary and has many known bugs. We hope to have a higher-quality port for this machine soon. --- 509,515 ----


    !

    i370-*-*

    This port is very preliminary and has many known bugs. We hope to have a higher-quality port for this machine soon. *************** have a higher-quality port for this mach *** 546,560 ****


    !

    *-*-linux-gnu

    If you use glibc 2.2 (or 2.1.9x), GCC 2.95.2 won't install ! out-of-the-box. You'll get compile errors while building libstdc++. The patch glibc-2.2.patch, that is to be applied in the GCC source tree, fixes the compatibility problems.

    -

    --- 517,530 ----


    !

    *-*-linux-gnu

    If you use glibc 2.2 (or 2.1.9x), GCC 2.95.2 won't install ! out-of-the-box. You'll get compile errors while building libstdc++. The patch glibc-2.2.patch, that is to be applied in the GCC source tree, fixes the compatibility problems.

    *************** glibc 2.2.4 whether patches for GCC 3.0 *** 570,596 ****


    !

    i?86-*-linux*oldld

    Use this configuration to generate a.out binaries on Linux-based GNU systems if you do not have gas/binutils version 2.5.2 or later ! installed. This is an obsolete configuration.


    !

    i?86-*-linux*aout

    Use this configuration to generate a.out binaries on Linux-based ! GNU systems. This configuration is being superseded. You must use gas/binutils version 2.5.2 or later.


    !

    i?86-*-linux*

    !

    You will need binutils-2.9.1.0.15 or newer for exception handling to work.

    If you receive Signal 11 errors when building on GNU/Linux, then it is possible you have a hardware problem. Further information on this can be --- 540,566 ----


    !

    i?86-*-linux*oldld

    Use this configuration to generate a.out binaries on Linux-based GNU systems if you do not have gas/binutils version 2.5.2 or later ! installed. This is an obsolete configuration.


    !

    i?86-*-linux*aout

    Use this configuration to generate a.out binaries on Linux-based ! GNU systems. This configuration is being superseded. You must use gas/binutils version 2.5.2 or later.


    !

    i?86-*-linux*

    !

    You will need binutils 2.9.1.0.15 or newer for exception handling to work.

    If you receive Signal 11 errors when building on GNU/Linux, then it is possible you have a hardware problem. Further information on this can be *************** found on i?86-*-sco

    Compilation with RCC is recommended. Also, it may be a good idea to link with GNU malloc instead of the malloc that comes with the system. --- 569,575 ----


    !

    i?86-*-sco

    Compilation with RCC is recommended. Also, it may be a good idea to link with GNU malloc instead of the malloc that comes with the system. *************** link with GNU malloc instead of the mall *** 607,642 ****


    !

    i?86-*-sco3.2v4

    Use this configuration for SCO release 3.2 version 4.


    !

    i?86-*-sco3.2v5*

    Use this for the SCO OpenServer Release 5 family of operating systems.

    Unlike earlier versions of GCC, the ability to generate COFF with this target is no longer provided. !

    Earlier versions of GCC emitted Dwarf-1 when generating ELF to allow the system debugger to be used. That support was too burdensome to ! maintain. GCC now emits only dwarf-2 for this target. This means you may use either the UDK debugger or GDB to debug programs built by this version of GCC. !

    If you are building languages other than C, you must follow the instructions ! about invoking make bootstrap because the native OpenServer ! compiler will build a cc1plus that will not correctly parse many ! valid C++ programs including those in libgcc.a. ! You must do a make bootstrap if you are building with the ! native compiler. ! !

    Use of the -march-pentiumpro flag can result in unrecognized opcodes when using the native assembler on OS versions before ! 5.0.6. (Support for P6 opcodes was added to the native ELF assembler in that version.) While it's rather rare to see these emitted by GCC yet, errors of the basic form: --- 577,605 ----


    !

    i?86-*-sco3.2v4

    Use this configuration for SCO release 3.2 version 4.


    !

    i?86-*-sco3.2v5*

    Use this for the SCO OpenServer Release 5 family of operating systems.

    Unlike earlier versions of GCC, the ability to generate COFF with this target is no longer provided. !

    Earlier versions of GCC emitted DWARF 1 when generating ELF to allow the system debugger to be used. That support was too burdensome to ! maintain. GCC now emits only DWARF 2 for this target. This means you may use either the UDK debugger or GDB to debug programs built by this version of GCC. !

    Use of the -march=pentiumpro flag can result in unrecognized opcodes when using the native assembler on OS versions before ! 5.0.6. (Support for P6 opcodes was added to the native ELF assembler in that version.) While it's rather rare to see these emitted by GCC yet, errors of the basic form: *************** as the native assembler. *** 665,671 **** additional OpenServer-specific flags.

    Systems based on OpenServer before 5.0.4 (uname -X ! will tell you what you're running) require TLS597 from ftp.sco.com/TLS for C++ constructors and destructors to work right.

    The system linker in (at least) 5.0.4 and 5.0.5 will sometimes --- 628,635 ---- additional OpenServer-specific flags.

    Systems based on OpenServer before 5.0.4 (uname -X ! will tell you what you're running) require TLS597 from ! ftp://ftp.sco.com/TLS/ for C++ constructors and destructors to work right.

    The system linker in (at least) 5.0.4 and 5.0.5 will sometimes *************** available. You must install both *** 678,690 **** and OSS499A.

    The dynamic linker in OpenServer 5.0.5 (earlier versions may show ! the same problem) aborts on certain g77-compiled programs. It's particularly likely to be triggered by building Fortran code with the -fPIC flag. Although it's conceivable that the error could be triggered by other code, only G77-compiled code has been observed to cause this abort. If you are getting core dumps immediately upon execution of your ! g77 program--and especially if it's compiled with -fPIC--try applying ! sco_osr5_g77.patch to your libf2c and rebuilding GCC. Affected faults, when analyzed in a debugger, will show a stack backtrace with a fault occurring in rtld() and the program --- 642,654 ---- and OSS499A.

    The dynamic linker in OpenServer 5.0.5 (earlier versions may show ! the same problem) aborts on certain G77-compiled programs. It's particularly likely to be triggered by building Fortran code with the -fPIC flag. Although it's conceivable that the error could be triggered by other code, only G77-compiled code has been observed to cause this abort. If you are getting core dumps immediately upon execution of your ! G77 program--and especially if it's compiled with -fPIC--try applying ! sco_osr5_g77.patch to your libf2c and rebuilding GCC. Affected faults, when analyzed in a debugger, will show a stack backtrace with a fault occurring in rtld() and the program *************** engineering and will hopefully be addres *** 694,700 ****


    !

    i?86-*-udk

    This target emulates the SCO Universal Development Kit and requires that package be installed. (If it is installed, you will have a --- 658,664 ----


    !

    i?86-*-udk

    This target emulates the SCO Universal Development Kit and requires that package be installed. (If it is installed, you will have a *************** default compiler such as OpenServer 5 or *** 705,714 **** generate binaries that will run on OpenServer, Unixware 2, or Unixware 7, with the same warnings and caveats as the SCO UDK. -

    You can stage1 with either your native compiler or with UDK. If you - don't do a full bootstrap when initially building with your native compiler - you will have an utterly unusable pile of bits as your reward. -

    This target is a little tricky to build because we have to distinguish it from the native tools (so it gets headers, startups, and libraries from the right place) while making the tools not think we're actually --- 669,674 ---- *************** command like this: *** 721,728 ****

    You should substitute i686 in the above command with the appropriate processor for your host. !

    You should follow this with a make bootstrap then ! make install. You can then access the UDK-targeted GCC tools by adding udk- before the commonly known name. For example, to invoke the C compiler, you would use udk-gcc. They will coexist peacefully with any native-target GCC tools you may --- 681,688 ----

    You should substitute i686 in the above command with the appropriate processor for your host. !

    After the usual make bootstrap and ! make install, you can then access the UDK-targeted GCC tools by adding udk- before the commonly known name. For example, to invoke the C compiler, you would use udk-gcc. They will coexist peacefully with any native-target GCC tools you may *************** have installed. *** 731,737 ****


    !

    i?86-*-isc

    It may be a good idea to link with GNU malloc instead of the malloc that comes with the system. --- 691,697 ----


    !

    i?86-*-isc

    It may be a good idea to link with GNU malloc instead of the malloc that comes with the system. *************** comes with the system. *** 742,748 ****


    !

    i?86-*-esix

    It may be good idea to link with GNU malloc instead of the malloc that comes with the system. --- 702,708 ----


    !

    i?86-*-esix

    It may be good idea to link with GNU malloc instead of the malloc that comes with the system. *************** comes with the system. *** 750,756 ****


    !

    i?86-ibm-aix

    You need to use GAS version 2.1 or later, and LD from GNU binutils version 2.2 or later. --- 710,716 ----


    !

    i?86-ibm-aix

    You need to use GAS version 2.1 or later, and LD from GNU binutils version 2.2 or later. *************** GNU binutils version 2.2 or later. *** 758,787 ****


    !

    i?86-sequent-bsd

    Go to the Berkeley universe before compiling.


    !

    i?86-sequent-ptx1*, i?86-sequent-ptx2*

    You must install GNU sed before running configure.


    !

    i?86-*-sysv3*

    The fixproto shell script may trigger a bug in the system shell. If you encounter this problem, upgrade your operating system or ! use BASH (the GNU shell) to run fixproto.


    !

    i860-intel-osf*

    On the Intel Paragon (an i860 machine), if you are using operating system version 1.0, you will get warnings or errors about redefinition --- 718,747 ----


    !

    i?86-sequent-bsd

    Go to the Berkeley universe before compiling.


    !

    i?86-sequent-ptx1*, i?86-sequent-ptx2*

    You must install GNU sed before running configure.


    !

    i?86-*-sysv3*

    The fixproto shell script may trigger a bug in the system shell. If you encounter this problem, upgrade your operating system or ! use bash (the GNU shell) to run fixproto.


    !

    i860-intel-osf*

    On the Intel Paragon (an i860 machine), if you are using operating system version 1.0, you will get warnings or errors about redefinition *************** extern int vsprintf(char *, const char *** 817,842 ****


    !

    *-lynx-lynxos

    !

    LynxOS 2.2 and earlier comes with GNU CC 1.x already installed as /bin/gcc. You should compile with this instead of /bin/cc. ! You can tell GNU CC to use the GNU assembler and linker, by specifying --with-gnu-as --with-gnu-ld when configuring. These will produce ! COFF format object files and executables; otherwise GNU CC will use the installed tools, which produce a.out format executables.


    !

    *-ibm-aix*

    AIX Make frequently has problems with GCC makefiles. GNU Make 3.76 or newer is recommended to build on this platform.

    Errors involving alloca when building GCC generally are due ! to an incorrect definition of CC in the Makefile or mixing files compiled with the native C compiler and GCC. During the stage1 phase of the build, the native AIX compiler must be invoked as cc (not xlc). Once configure has been informed of --- 777,802 ----


    !

    *-lynx-lynxos

    !

    LynxOS 2.2 and earlier comes with GCC 1.x already installed as /bin/gcc. You should compile with this instead of /bin/cc. ! You can tell GCC to use the GNU assembler and linker, by specifying --with-gnu-as --with-gnu-ld when configuring. These will produce ! COFF format object files and executables; otherwise GCC will use the installed tools, which produce a.out format executables.


    !

    *-ibm-aix*

    AIX Make frequently has problems with GCC makefiles. GNU Make 3.76 or newer is recommended to build on this platform.

    Errors involving alloca when building GCC generally are due ! to an incorrect definition of CC in the Makefile or mixing files compiled with the native C compiler and GCC. During the stage1 phase of the build, the native AIX compiler must be invoked as cc (not xlc). Once configure has been informed of *************** is the version of Make (see above). *** 849,856 ****

    Binutils 2.10 does not support AIX 4.3. Binutils available from the AIX Toolbox for Linux: GNU and Open Source tools for AIX; website does work. Binutils 2.11 is expected to include AIX 4.3 ! support. The GNU Assembler is necessary for libstdc++ to build. The ! AIX native ld still is recommended. The native AIX tools do interoperate with GCC.

    Linking executables and shared libraries may produce warnings of --- 809,816 ----

    Binutils 2.10 does not support AIX 4.3. Binutils available from the AIX Toolbox for Linux: GNU and Open Source tools for AIX; website does work. Binutils 2.11 is expected to include AIX 4.3 ! support. The GNU Assembler is necessary for libstdc++ to build. The ! AIX native ld still is recommended. The native AIX tools do interoperate with GCC.

    Linking executables and shared libraries may produce warnings of *************** switch by using the configure option


    !

    m32r-*-elf

    Mitsubishi M32R processor. This configuration is intended for embedded systems. --- 867,873 ----


    !

    m32r-*-elf

    Mitsubishi M32R processor. This configuration is intended for embedded systems. *************** This configuration is intended for embed *** 915,930 ****


    !

    m68000-hp-bsd

    HP 9000 series 200 running BSD. Note that the C compiler that comes ! with this system cannot compile GNU CC; contact law@cygnus.com ! to get binaries of GNU CC for bootstrapping.


    !

    m6811-elf

    Motorola 68HC11 family micro controllers. These are used in embedded applications. There are no standard Unix configurations. --- 875,890 ----


    !

    m68000-hp-bsd

    HP 9000 series 200 running BSD. Note that the C compiler that comes ! with this system cannot compile GCC; contact law@cygnus.com ! to get binaries of GCC for bootstrapping.


    !

    m6811-elf

    Motorola 68HC11 family micro controllers. These are used in embedded applications. There are no standard Unix configurations. *************** applications. There are no standard Uni *** 932,938 ****


    !

    m6812-elf

    Motorola 68HC12 family micro controllers. These are used in embedded applications. There are no standard Unix configurations. --- 892,898 ----


    !

    m6812-elf

    Motorola 68HC12 family micro controllers. These are used in embedded applications. There are no standard Unix configurations. *************** applications. There are no standard Uni *** 940,964 ****


    !

    m68k-altos

    Altos 3068. You must use the GNU assembler, linker and debugger. ! Also, you must fix a kernel bug. Details in the file README.ALTOS.


    !

    m68k-apple-aux

    Apple Macintosh running A/UX. You may configure GCC to use either the system assembler and linker or the GNU assembler and linker. You should use the GNU configuration ! if you can, especially if you also want to use GNU C++. You enabled ! that configuration with + the --with-gnu-as and --with-gnu-ld options to configure.

    Note the C compiler that comes ! with this system cannot compile GNU CC. You can find binaries of GNU CC for bootstrapping on jagubox.gsfc.nasa.gov. You will also a patched version of /bin/ld there that raises some of the arbitrary limits found in the original. --- 900,924 ----


    !

    m68k-altos

    Altos 3068. You must use the GNU assembler, linker and debugger. ! Also, you must fix a kernel bug.


    !

    m68k-apple-aux

    Apple Macintosh running A/UX. You may configure GCC to use either the system assembler and linker or the GNU assembler and linker. You should use the GNU configuration ! if you can, especially if you also want to use G++. You enable ! that configuration with the --with-gnu-as and --with-gnu-ld options to configure.

    Note the C compiler that comes ! with this system cannot compile GCC. You can find binaries of GCC for bootstrapping on jagubox.gsfc.nasa.gov. You will also a patched version of /bin/ld there that raises some of the arbitrary limits found in the original. *************** raises some of the arbitrary limits foun *** 966,974 ****


    !

    m68k-att-sysv

    !

    AT&T 3b1, a.k.a. 7300 PC. This version of GNU CC cannot be compiled with the system C compiler, which is too buggy. You will need to get a previous version of GCC and use it to bootstrap. Binaries are available from the OSU-CIS archive, at --- 926,934 ----


    !

    m68k-att-sysv

    !

    AT&T 3b1, a.k.a. 7300 PC. This version of GCC cannot be compiled with the system C compiler, which is too buggy. You will need to get a previous version of GCC and use it to bootstrap. Binaries are available from the OSU-CIS archive, at *************** bootstrap. Binaries are available from *** 977,1002 ****


    !

    m68k-bull-sysv

    !

    Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to BOS-2.01. GNU CC works ! either with native assembler or GNU assembler. You can use ! GNU assembler with native coff generation by providing --with-gnu-as to ! the configure script or use GNU assembler with dbx-in-coff encapsulation ! by providing --with-gnu-as --stabs. For any problem with native assembler or for availability of the DPX/2 port of GAS, contact F.Pierresteguy@frcl.bull.fr.


    !

    m68k-crds-unox

    Use configure unos for building on Unos.

    The Unos assembler is named casm instead of as. For some strange reason linking /bin/as to /bin/casm changes the ! behavior, and does not work. So, when installing GNU CC, you should install the following script as as in the subdirectory where the passes of GCC are installed: --- 937,962 ----


    !

    m68k-bull-sysv

    !

    Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to BOS-2.01. GCC works ! either with native assembler or GNU assembler. You can use ! GNU assembler with native COFF generation by providing --with-gnu-as to ! the configure script or use GNU assembler with stabs-in-COFF encapsulation ! by providing --with-gnu-as --stabs. For any problem with the native assembler or for availability of the DPX/2 port of GAS, contact F.Pierresteguy@frcl.bull.fr.


    !

    m68k-crds-unox

    Use configure unos for building on Unos.

    The Unos assembler is named casm instead of as. For some strange reason linking /bin/as to /bin/casm changes the ! behavior, and does not work. So, when installing GCC, you should install the following script as as in the subdirectory where the passes of GCC are installed: *************** casm $* *** 1005,1015 ****

    The default Unos library is named libunos.a instead of ! libc.a. To allow GNU CC to function, either change all references to -lc in gcc.c to -lunos or link /lib/libc.a to /lib/libunos.a. !

    When compiling GNU CC with the standard compiler, to overcome bugs in the support of alloca, do not use -O when making stage 2. Then use the stage 2 compiler with -O to make the stage 3 compiler. This compiler will have the same characteristics as the usual --- 965,975 ----

    The default Unos library is named libunos.a instead of ! libc.a. To allow GCC to function, either change all references to -lc in gcc.c to -lunos or link /lib/libc.a to /lib/libunos.a. !

    When compiling GCC with the standard compiler, to overcome bugs in the support of alloca, do not use -O when making stage 2. Then use the stage 2 compiler with -O to make the stage 3 compiler. This compiler will have the same characteristics as the usual *************** and linking from that library. *** 1028,1037 ****


    !

    m68k-hp-hpux

    HP 9000 series 300 or 400 running HP-UX. HP-UX version 8.0 has a bug in ! the assembler that prevents compilation of GNU CC. This bug manifests itself during the first stage of compilation, while building libgcc2.a: --- 988,997 ----


    !

    m68k-hp-hpux

    HP 9000 series 300 or 400 running HP-UX. HP-UX version 8.0 has a bug in ! the assembler that prevents compilation of GCC. This bug manifests itself during the first stage of compilation, while building libgcc2.a: *************** library version of "cvtnum(3c)" and thus *** 1058,1064 ****

    This patch is also known as PHCO_4484. !

    In addition, if you wish to use gas --with-gnu-as you must use gas version 2.1 or later, and you must use the GNU linker version 2.1 or later. Earlier versions of gas relied upon a program which converted the gas output into the native HP-UX format, but that program has not been --- 1018,1024 ----

    This patch is also known as PHCO_4484. !

    In addition, if you wish to use gas, you must use gas version 2.1 or later, and you must use the GNU linker version 2.1 or later. Earlier versions of gas relied upon a program which converted the gas output into the native HP-UX format, but that program has not been *************** to look like: *** 1083,1100 ****


    !

    m68k-*-nextstep*

    Current GCC versions probably do not work on version 2 of the NeXT operating system. !

    On NeXTStep 3.0, the Objective C compiler does not work, due, apparently, to a kernel bug that it happens to trigger. This problem does not happen on 3.1.

    You absolutely must use GNU sed and GNU make on this platform. !

    On NEXTSTEP 3.x where x < 3 the build of GCC will abort during stage1 with an error message like this:

      _eh
    --- 1043,1060 ----
      


    !

    m68k-*-nextstep*

    Current GCC versions probably do not work on version 2 of the NeXT operating system. !

    On NeXTStep 3.0, the Objective-C compiler does not work, due, apparently, to a kernel bug that it happens to trigger. This problem does not happen on 3.1.

    You absolutely must use GNU sed and GNU make on this platform. !

    On NeXTSTEP 3.x where x < 3 the build of GCC will abort during stage1 with an error message like this:

      _eh
    *************** for this sequence to work.
    *** 1129,1135 ****
      


    !

    m68k-ncr-*

    On the Tower models 4n0 and 6n0, by default a process is not allowed to have more than one megabyte of memory. GCC cannot compile --- 1089,1095 ----


    !

    m68k-ncr-*

    On the Tower models 4n0 and 6n0, by default a process is not allowed to have more than one megabyte of memory. GCC cannot compile *************** to the configuration file: *** 1144,1150 ****


    !

    m68k-sun

    Sun 3. We do not provide a configuration file to use the Sun FPA by default, because programs that establish signal handlers for floating --- 1104,1110 ----


    !

    m68k-sun

    Sun 3. We do not provide a configuration file to use the Sun FPA by default, because programs that establish signal handlers for floating *************** point traps inherently cannot work with *** 1153,1166 ****


    !

    m68k-sun-sunos4.1.1

    It is reported that you may need the GNU assembler on this platform.


    !

    m88k-*-svr3

    Motorola m88k running the AT&T/Unisoft/Motorola V.3 reference port. These systems tend to use the Green Hills C, revision 1.8.5, as the --- 1113,1126 ----


    !

    m68k-sun-sunos4.1.1

    It is reported that you may need the GNU assembler on this platform.


    !

    m88k-*-svr3

    Motorola m88k running the AT&T/Unisoft/Motorola V.3 reference port. These systems tend to use the Green Hills C, revision 1.8.5, as the *************** compiler. If the stage 3 and stage 4 ob *** 1171,1183 **** suggests you encountered a problem with the standard C compiler; the stage 3 and 4 compilers may be usable. !

    It is best, however, to use an older version of GNU CC for bootstrapping if you have one.


    !

    m88k-*-dgux

    Motorola m88k running DG/UX. To build 88open BCS native or cross compilers on DG/UX, specify the configuration name as --- 1131,1143 ---- suggests you encountered a problem with the standard C compiler; the stage 3 and 4 compilers may be usable. !

    It is best, however, to use an older version of GCC for bootstrapping if you have one.


    !

    m88k-*-dgux

    Motorola m88k running DG/UX. To build 88open BCS native or cross compilers on DG/UX, specify the configuration name as *************** configuration based on the current softw *** 1194,1204 ****


    !

    m88k-tektronix-sysv3

    Tektronix XD88 running UTekV 3.2e. Do not turn on optimization while building stage1 if you bootstrap with ! the buggy Green Hills compiler. Also, The bundled LAI System V NFS is buggy so if you build in an NFS mounted directory, start from a fresh reboot, or avoid NFS all together. Otherwise you may have trouble getting clean comparisons --- 1154,1164 ----


    !

    m88k-tektronix-sysv3

    Tektronix XD88 running UTekV 3.2e. Do not turn on optimization while building stage1 if you bootstrap with ! the buggy Green Hills compiler. Also, the bundled LAI System V NFS is buggy so if you build in an NFS mounted directory, start from a fresh reboot, or avoid NFS all together. Otherwise you may have trouble getting clean comparisons *************** between stages. *** 1207,1213 ****


    !

    mips-*-*

    If you use the 1.31 version of the MIPS assembler (such as was shipped with Ultrix 3.1), you will need to use the -fno-delayed-branch switch --- 1167,1173 ----


    !

    mips-*-*

    If you use the 1.31 version of the MIPS assembler (such as was shipped with Ultrix 3.1), you will need to use the -fno-delayed-branch switch *************** To protect against this, GCC passes -shared or -call_shared switch. !

    mips-mips-bsd

    MIPS machines running the MIPS operating system in BSD mode. It's possible that some old versions of the system lack the functions --- 1200,1206 ---- linker unless you pass an explicit -shared or -call_shared switch. !

    mips-mips-bsd

    MIPS machines running the MIPS operating system in BSD mode. It's possible that some old versions of the system lack the functions *************** possible that some old versions of the s *** 1248,1256 **** system lacks these, you must remove or undo the definition of TARGET_MEM_FUNCTIONS in mips-bsd.h. !

    The MIPS C compiler needs to be told to increase its table size ! for switch statements with the -Wf,-XNg1500 option in ! order to compile cp/parse.c. If you use the -O2 optimization option, you also need to use -Olimit 3000. Both of these options are automatically generated in the Makefile that the shell script configure builds. --- 1208,1248 ---- system lacks these, you must remove or undo the definition of TARGET_MEM_FUNCTIONS in mips-bsd.h. !

    If you use the MIPS C compiler to bootstrap, it may be necessary ! to increase its table size for switch statements with the ! -Wf,-XNg1500 option. If you use the -O2 ! optimization option, you also need to use -Olimit 3000. ! Both of these options are automatically generated in the ! Makefile that the shell script configure builds. ! If you override the CC make variable and use the MIPS ! compilers, you may need to add -Wf,-XNg1500 -Olimit 3000. ! !

    !
    ! !

    mips-dec-*

    ! !

    MIPS-based DECstations can support three different personalities: ! Ultrix, DEC OSF/1, and OSF/rose. (Alpha-based DECstation products have ! a configuration name beginning with alpha*-dec.) To configure GCC ! for these platforms use the following configurations: ! !

    !
    mips-dec-ultrix !
    Ultrix configuration. ! !
    mips-dec-osf1 !
    DEC's version of OSF/1. ! !
    mips-dec-osfrose !
    Open Software Foundation reference port of OSF/1 which uses the ! OSF/rose object file format instead of ECOFF. Normally, you ! would not select this configuration. !
    ! !

    If you use the MIPS C compiler to bootstrap, it may be necessary ! to increase its table size for switch statements with the ! -Wf,-XNg1500 option. If you use the -O2 optimization option, you also need to use -Olimit 3000. Both of these options are automatically generated in the Makefile that the shell script configure builds. *************** compilers, you may need to add -Wf *** 1262,1270 ****

    mips-mips-riscos*

    !

    The MIPS C compiler needs to be told to increase its table size ! for switch statements with the -Wf,-XNg1500 option in ! order to compile cp/parse.c. If you use the -O2 optimization option, you also need to use -Olimit 3000. Both of these options are automatically generated in the Makefile that the shell script configure builds. --- 1254,1262 ----

    mips-mips-riscos*

    !

    If you use the MIPS C compiler to bootstrap, it may be necessary ! to increase its table size for switch statements with the ! -Wf,-XNg1500 option. If you use the -O2 optimization option, you also need to use -Olimit 3000. Both of these options are automatically generated in the Makefile that the shell script configure builds. *************** personalities: default, BSD 4.3, System *** 1277,1295 **** for these platforms use the following configurations:

    !
    mips-mips-riscosrev !
    Default configuration for RISC-OS, revision rev. !
    mips-mips-riscosrevbsd !
    BSD 4.3 configuration for RISC-OS, revision rev. !
    mips-mips-riscosrevsysv4 !
    System V.4 configuration for RISC-OS, revision rev.


    !
    mips-mips-riscosrevsysv !
    System V.3 configuration for RISC-OS, revision rev.

    The revision rev mentioned above is the revision of --- 1269,1287 ---- for these platforms use the following configurations:

    !
    mips-mips-riscosrev !
    Default configuration for RISC-OS, revision rev. !
    mips-mips-riscosrevbsd !
    BSD 4.3 configuration for RISC-OS, revision rev. !
    mips-mips-riscosrevsysv4 !
    System V.4 configuration for RISC-OS, revision rev.


    !
    mips-mips-riscosrevsysv !
    System V.3 configuration for RISC-OS, revision rev.

    The revision rev mentioned above is the revision of *************** avoiding a linker bug. *** 1300,1336 ****


    !

    mips*-sgi-irix[45]

    In order to compile GCC on an SGI running IRIX 4, the "c.hdr.lib" option must be installed from the CD-ROM supplied from Silicon Graphics. This is found on the 2nd CD in release 4.0.1. !

    In order to compile GCC on an SGI running IRIX 5, the "compiler_dev.hdr" ! subsystem must be installed from the IDO CD-ROM supplied by Silicon ! Graphics. ! !

    make compare may fail on version 5 of IRIX unless you add ! -save-temps to CFLAGS. On these systems, the name of the ! assembler input file is stored in the object file, and that makes ! comparison fail if it differs between the stage1 and ! stage2 compilations. The option -save-temps forces a ! fixed name to be used for the assembler input file, instead of a ! randomly chosen name in /tmp. Do not add -save-temps ! unless the comparisons fail without that option. If you do you ! -save-temps, you will have to manually delete the .i and ! .s files after each series of compilations. ! !

    The MIPS C compiler needs to be told to increase its table size ! for switch statements with the -Wf,-XNg1500 option in ! order to compile cp/parse.c. If you use the -O2 ! optimization option, you also need to use -Olimit 3000. ! Both of these options are automatically generated in the ! Makefile that the shell script configure builds. ! If you override the CC make variable and use the MIPS ! compilers, you may need to add -Wf,-XNg1500 -Olimit 3000. ! !

    On Irix version 4.0.5F, and perhaps on some other versions as well, there is an assembler bug that reorders instructions incorrectly. To work around it, specify the target configuration mips-sgi-irix4loser. This configuration inhibits assembler --- 1292,1304 ----


    !

    mips-sgi-irix4

    In order to compile GCC on an SGI running IRIX 4, the "c.hdr.lib" option must be installed from the CD-ROM supplied from Silicon Graphics. This is found on the 2nd CD in release 4.0.1. !

    On IRIX version 4.0.5F, and perhaps on some other versions as well, there is an assembler bug that reorders instructions incorrectly. To work around it, specify the target configuration mips-sgi-irix4loser. This configuration inhibits assembler *************** inhibit reordering. *** 1344,1425 ****

    The -noasmopt option can be useful for testing whether a problem is due to erroneous assembler reordering. Even if a problem does not go away with -noasmopt, it may still be due to assembler ! reordering--perhaps GNU CC itself was miscompiled as a result. !

    To enable debugging under Irix 5, you must use GNU as 2.5 or later, ! and use the --with-gnu-as configure option when configuring gcc. ! GNU as is distributed as part of the binutils package. !

    You must use GAS on these platforms, as the native assembler can not handle ! the code for exception handling support. Either of these messages indicates ! that you are using the MIPS assembler when instead you should be using GAS: !

    as0: Error: ./libgcc2.c, line 1:Badly delimited numeric literal ! .4byte $LECIE1-$LSCIE1 ! as0: Error: ./libgcc2.c, line 1:malformed statement !

    or: !

    as0: Error: /src/bld-gcc/gcc/libgcc2.c, line 1:undefined symbol in expression ! .word $LECIE1-$LSCIE1 !

    These systems don't have ranlib, which various components in GCC need; you ! should be able to avoid this problem by installing GNU binutils, which includes ! a functional ranlib for this system. !

    You may get the following warning on irix4 platforms, it can be safely ! ignored. !

      warning: foo.o does not have gp tables for all its sections.
    ! 
    !

    When building GCC, the build process loops rebuilding cc1 over and ! over again. This happens on mips-sgi-irix5.2, and possibly other platforms.
    ! It has been reported that this is a known bug in the make shipped with ! IRIX 5.2. We recommend you use GNU make instead of the vendor supplied ! make program; however, you may have success with smake on IRIX 5.2 if ! you do not have GNU make available. !

    See http://freeware.sgi.com/ for more ! information about using GCC on IRIX platforms.


    !

    mips*-sgi-irix6

    ! !

    You must not use GAS on irix6 platforms; doing so will only ! cause problems. ! !

    These systems don't have ranlib, which various components in GCC need; you ! should be able to avoid this problem by making a dummy script called ranlib ! which just exits with zero status and placing it in your path. !

    If you are using Irix cc as your bootstrap compiler, you must ensure that the N32 ABI is in use. To test this, compile a simple C file with cc and then run file on the resulting object file. The output should look like: !

        test.o: ELF N32 MSB ...
      

    If you see: !

        test.o: ELF 32-bit MSB
      
    !

    then your version of cc uses the O32 ABI default. You should set the environment variable CC to cc -n32 before configuring GCC.

    GCC does not currently support generating O32 ABI binaries in the ! mips-sgi-irix6 configurations. It used to be possible to create a GCC ! with O32 ABI only support by configuring it for the mips-sgi-irix5 ! target. See the link below for details.

    GCC does not correctly pass/return structures which are ! smaller than 16 bytes and which are not 8 bytes. The problem is very ! involved and difficult to fix. It affects a number of other targets also, but IRIX 6 is affected the most, because it is a 64 bit target, and 4 byte ! structures are common. The exact problem is that structures are being padded at the wrong end, e.g. a 4 byte structure is loaded into the lower 4 bytes of the register when it should be loaded into the upper 4 bytes of the register. --- 1312,1429 ----

    The -noasmopt option can be useful for testing whether a problem is due to erroneous assembler reordering. Even if a problem does not go away with -noasmopt, it may still be due to assembler ! reordering--perhaps GCC itself was miscompiled as a result. !

    You may get the following warning on IRIX 4 platforms, it can be safely ! ignored. !

      warning: foo.o does not have gp tables for all its sections.
    ! 
    !

    !
    !

    mips-sgi-irix5

    !

    This configuration has considerable problems, which will be fixed in a ! future release. !

    In order to compile GCC on an SGI running IRIX 5, the "compiler_dev.hdr" ! subsystem must be installed from the IDO CD-ROM supplied by Silicon ! Graphics. It is also available for download from ! http://www.sgi.com/developers/devtools/apis/ido.html. !

    make compare may fail on version 5 of IRIX unless you add ! -save-temps to CFLAGS. On these systems, the name of the ! assembler input file is stored in the object file, and that makes ! comparison fail if it differs between the stage1 and ! stage2 compilations. The option -save-temps forces a ! fixed name to be used for the assembler input file, instead of a ! randomly chosen name in /tmp. Do not add -save-temps ! unless the comparisons fail without that option. If you do you ! -save-temps, you will have to manually delete the .i and ! .s files after each series of compilations. !

    If you use the MIPS C compiler to bootstrap, it may be necessary ! to increase its table size for switch statements with the ! -Wf,-XNg1500 option. If you use the -O2 ! optimization option, you also need to use -Olimit 3000. !

    To enable debugging under IRIX 5, you must use GNU as 2.11.2 ! or later, ! and use the --with-gnu-as configure option when configuring GCC. ! GNU as is distributed as part of the binutils package. ! When using release 2.11.2, you need to apply a patch ! http://sources.redhat.com/ml/binutils/2001-07/msg00352.html ! which will be included in the next release of binutils. !

    When building GCC, the build process loops rebuilding cc1 over ! and over again. This happens on mips-sgi-irix5.2, and possibly ! other platforms. It has been reported that this is a known bug in the ! make shipped with IRIX 5.2. We recommend you use GNU ! make instead of the vendor supplied make program; ! however, you may have success with smake on IRIX 5.2 if you do ! not have GNU make available.


    !

    mips-sgi-irix6

    !

    If you are using IRIX cc as your bootstrap compiler, you must ensure that the N32 ABI is in use. To test this, compile a simple C file with cc and then run file on the resulting object file. The output should look like: !

    test.o: ELF N32 MSB ...
      

    If you see: ! !

    test.o: ELF 32-bit MSB ...
      
    !

    or ! !

    test.o: ELF 64-bit MSB ...
    ! 
    ! !

    then your version of cc uses the O32 or N64 ABI by default. You should set the environment variable CC to cc -n32 before configuring GCC. +

    GCC on IRIX 6 is usually built to support both the N32 and N64 ABIs. If + you build GCC on a system that doesn't have the N64 libraries installed, + you need to configure with --disable-multilib so GCC doesn't + try to use them. Look for /usr/lib64/libc.so.1 to see if you + have the 64-bit libraries installed. + +

    You must not use GNU as (which isn't built anyway as of + binutils 2.11.2) on IRIX 6 platforms; doing so will only cause problems. +

    GCC does not currently support generating O32 ABI binaries in the ! mips-sgi-irix6 configurations. It is possible to create a GCC ! with O32 ABI only support by configuring it for the mips-sgi-irix5 ! target and using a patched GNU as 2.11.2 as documented in the ! mips-sgi-irix5 section above. Using the ! native assembler requires patches to GCC which will be included in a ! future release. It is ! expected that O32 ABI support will be available again in a future release. ! !

    The --enable-threads option doesn't currently work, a patch is ! in preparation for a future release. The --enable-libgcj ! option is disabled by default: IRIX 6 uses a very low default limit ! (20480) for the command line length. Although libtool contains a ! workaround for this problem, at least the N64 libgcj is known not ! to build despite this, running into an internal error of the native ! ld. A sure fix is to increase this limit (ncargs) to ! its maximum of 262144 bytes. If you have root access, you can use the ! systune command to do this.

    GCC does not correctly pass/return structures which are ! smaller than 16 bytes and which are not 8 bytes. The problem is very ! involved and difficult to fix. It affects a number of other targets also, but IRIX 6 is affected the most, because it is a 64 bit target, and 4 byte ! structures are common. The exact problem is that structures are being padded at the wrong end, e.g. a 4 byte structure is loaded into the lower 4 bytes of the register when it should be loaded into the upper 4 bytes of the register. *************** register. *** 1427,1434 ****

    GCC is consistent with itself, but not consistent with the SGI C compiler (and the SGI supplied runtime libraries), so the only failures that can happen are when there are library functions that take/return such ! structures. There are very few such library functions. I can only recall ! seeing two of them: inet_ntoa, and semctl.

    See http://freeware.sgi.com/ for more information about using GCC on IRIX platforms. --- 1431,1440 ----

    GCC is consistent with itself, but not consistent with the SGI C compiler (and the SGI supplied runtime libraries), so the only failures that can happen are when there are library functions that take/return such ! structures. There are very few such library functions. Currently this ! is known to affect inet_ntoa, inet_lnaof, ! inet_netof, inet_makeaddr, and semctl. Until the ! bug is fixed, GCC contains workarounds for the known affected functions.

    See http://freeware.sgi.com/ for more information about using GCC on IRIX platforms. *************** information about using GCC on IRIX plat *** 1436,1442 ****


    !

    mips-sony-sysv

    Sony MIPS NEWS. This works in NEWSOS 5.0.1, but not in 5.0.2 (which uses ELF instead of COFF). Support for 5.0.2 will probably be provided --- 1442,1448 ----


    !

    mips-sony-sysv

    Sony MIPS NEWS. This works in NEWSOS 5.0.1, but not in 5.0.2 (which uses ELF instead of COFF). Support for 5.0.2 will probably be provided *************** code generated by GCC when shared librar *** 1446,1459 ****


    !

    ns32k-encore

    Encore ns32000 system. Encore systems are supported only under BSD.


    !

    ns32k-*-genix

    National Semiconductor ns32000 system. Genix has bugs in alloca and malloc; you must get the compiled versions of these from GNU --- 1452,1465 ----


    !

    ns32k-encore

    Encore ns32000 system. Encore systems are supported only under BSD.


    !

    ns32k-*-genix

    National Semiconductor ns32000 system. Genix has bugs in alloca and malloc; you must get the compiled versions of these from GNU *************** Emacs. *** 1462,1486 ****


    !

    ns32k-sequent

    Go to the Berkeley universe before compiling.


    !

    ns32k-utek

    UTEK ns32000 system ("merlin"). The C compiler that comes with this ! system cannot compile GNU CC; contact tektronix!reed!mason to get ! binaries of GNU CC for bootstrapping.


    !

    powerpc-*-elf, powerpc-*-sysv4

    ! !

    PowerPC system in big endian mode, running System V.4.

    You can specify a default version for the -mcpu=cpu_type switch by using the configure option --with-cpu-cpu_type. --- 1468,1490 ----


    !

    ns32k-sequent

    Go to the Berkeley universe before compiling.


    !

    ns32k-utek

    UTEK ns32000 system ("merlin"). The C compiler that comes with this ! system cannot compile GCC; contact tektronix!reed!mason to get ! binaries of GCC for bootstrapping.


    !

    powerpc-*-*

    You can specify a default version for the -mcpu=cpu_type switch by using the configure option --with-cpu-cpu_type. *************** switch by using the configure option


    !

    powerpc-*-linux-gnu*

    You will need ! binutils-2.9.4.0.8 ! or newer for a working GCC. It is strongly recommended to recompile binutils if you initially built it with gcc-2.7.2.x. -

    You can specify a default version for the -mcpu=cpu_type - switch by using the configure option --with-cpu-cpu_type. -


    !

    powerpc-*-eabiaix

    Embedded PowerPC system in big endian mode with -mcall-aix selected as the default. -

    You can specify a default version for the -mcpu=cpu_type - switch by using the configure option --with-cpu-cpu_type. -


    !

    powerpc-*-eabisim

    Embedded PowerPC system in big endian mode for use in running under the PSIM simulator. -

    You can specify a default version for the -mcpu=cpu_type - switch by using the configure option --with-cpu-cpu_type. -


    !

    powerpc-*-eabi

    Embedded PowerPC system in big endian mode. -

    You can specify a default version for the -mcpu=cpu_type - switch by using the configure option --with-cpu-cpu_type. -


    !

    powerpcle-*-elf, powerpcle-*-sysv4

    PowerPC system in little endian mode, running System V.4. -

    You can specify a default version for the -mcpu=cpu_type - switch by using the configure option --with-cpu-cpu_type. -


    !

    powerpcle-*-eabisim

    Embedded PowerPC system in little endian mode for use in running under the PSIM simulator. --- 1492,1545 ----


    !

    powerpc-*-elf, powerpc-*-sysv4

    ! !

    PowerPC system in big endian mode, running System V.4. ! !

    !
    ! !

    powerpc-*-linux-gnu*

    You will need ! binutils 2.9.4.0.8 ! or newer for a working GCC. It is strongly recommended to recompile binutils if you initially built it with gcc-2.7.2.x.


    !

    powerpc-*-eabiaix

    Embedded PowerPC system in big endian mode with -mcall-aix selected as the default.


    !

    powerpc-*-eabisim

    Embedded PowerPC system in big endian mode for use in running under the PSIM simulator.


    !

    powerpc-*-eabi

    Embedded PowerPC system in big endian mode.


    !

    powerpcle-*-elf, powerpcle-*-sysv4

    PowerPC system in little endian mode, running System V.4.


    !

    powerpcle-*-eabisim

    Embedded PowerPC system in little endian mode for use in running under the PSIM simulator. *************** the PSIM simulator. *** 1551,1581 ****


    !

    powerpcle-*-eabi

    Embedded PowerPC system in little endian mode. -

    You can specify a default version for the -mcpu=cpu_type - switch by using the configure option --with-cpu-cpu_type. -


    !

    powerpcle-*-winnt, powerpcle-*-pe

    PowerPC system in little endian mode running Windows NT. -

    You can specify a default version for the -mcpu=cpu_type - switch by using the configure option --with-cpu-cpu_type. -


    !

    romp-*-aos, romp-*-mach

    The only operating systems supported for the IBM RT PC are AOS and ! MACH. GNU CC does not support AIX running on the RT. We recommend you ! compile GNU CC with an earlier version of itself; if you compile GNU CC with hc, the Metaware compiler, it will work, but you will get mismatches between the stage 2 and stage 3 compilers in various files. These errors are minor differences in some floating-point constants and --- 1547,1571 ----


    !

    powerpcle-*-eabi

    Embedded PowerPC system in little endian mode.


    !

    powerpcle-*-winnt, powerpcle-*-pe

    PowerPC system in little endian mode running Windows NT.


    !

    romp-*-aos, romp-*-mach

    The only operating systems supported for the IBM RT PC are AOS and ! MACH. GCC does not support AIX running on the RT. We recommend you ! compile GCC with an earlier version of itself; if you compile GCC with hc, the Metaware compiler, it will work, but you will get mismatches between the stage 2 and stage 3 compilers in various files. These errors are minor differences in some floating-point constants and *************** can be safely ignored; the stage 3 compi *** 1584,1642 ****


    !

    *-*-solaris*

    ! !

    Starting with Solaris, Sun does not ship a C compiler any more. To ! bootstrap and install GCC you first have to install a pre-built ! compiler, see our binaries page for ! details. ! !

    You must use GNU Make to build GCC on Solaris 2. If you don't have GNU ! Make installed, you can use the prebuilt compiler mentioned above to ! build it. ! !

    Sun as 4.X is broken in that it cannot cope with long symbol names. ! A typical error message might look similar to the following: ! !

    /usr/ccs/bin/as: "/var/tmp/ccMsw135.s", line 11041: ! error: can't compute value of an expression involving an external symbol. ! !

    This is Sun bug 4237974. This is fixed with patch 108908-02 and has ! been fixed in later (5.x) versions of the assembler. !

    Solaris' /bin/sh will often fail to configure libstdc++-v3, boehm-gc or ! libjava. If you encounter this problem, set CONFIG_SHELL to ! /bin/ksh in your environment and run make bootstrap again. ! Another possibility that sometimes helps is to remove ! *-*-solaris*/config.cache. !


    !

    sparc-sun-*

    !

    Sometimes on a Sun 4 you may observe a crash in the program ! genflags or genoutput while building GCC. This is said to ! be due to a bug in sh. You can probably get around it by running ! genflags or genoutput manually and then retrying the ! make. !


    !

    sparc-sun-solaris*

    !

    On Solaris 2, executables of GCC version 2.0.2 are commonly ! available, but they have a bug that shows up when compiling current ! versions of GCC: undefined symbol errors occur during assembly if you ! use -g. !

    The solution is to compile the current version of GCC without ! -g. That makes a working compiler which you can use to recompile ! with -g.

    Solaris 2 comes with a number of optional OS packages. Some of these ! packages are needed to use GCC fully. If you did not install all optional packages when installing Solaris, you will need to verify that the packages that GCC needs are installed. --- 1574,1609 ----


    !

    s390-*-linux*

    !

    IBM S/390 system running Linux for S/390. !


    !

    s390x-*-linux*

    !

    IBM zSeries system (64 bit) running Linux for zSeries. !


    !

    *-*-solaris*

    !

    Sun does not ship a C compiler with Solaris. To bootstrap and install ! GCC you first have to install a pre-built compiler, see our ! binaries page for details. !

    Solaris' /bin/sh will often fail to configure libstdc++-v3, boehm-gc or ! libjava. If you encounter this problem, set CONFIG_SHELL to ! /bin/ksh in your environment and run make bootstrap again. ! Another possibility that sometimes helps is to remove ! *-*-solaris*/config.cache.

    Solaris 2 comes with a number of optional OS packages. Some of these ! packages are needed to use GCC fully, namely SUNWarc, ! SUNWbtool, SUNWesu, SUNWhea, SUNWlibm, ! SUNWsprot, and SUNWtoo. If you did not install all optional packages when installing Solaris, you will need to verify that the packages that GCC needs are installed. *************** the pkginfo command. To ad *** 1645,1675 **** pkgadd command. For further details, see the Solaris documentation. !

    For Solaris 2.0 and 2.1, GCC needs six packages: SUNWarc, ! SUNWbtool, SUNWesu, SUNWhea, SUNWlibm, and ! SUNWtoo. ! !

    For Solaris 2.2, GCC needs an additional seventh package: SUNWsprot. ! !

    On Solaris 2, trying to use the linker and other tools in /usr/ucb to install GCC has been observed to cause trouble. For example, the linker may hang indefinitely. The fix is to remove /usr/ucb from your PATH. !

    All releases of GNU binutils prior to 2.11.1 have known bugs on this ! platform. We recommend the use of GNU binutils 2.11.1 or the vendor ! tools (Sun as, Sun ld). !

    Unfortunately, C++ shared libraries, including libstdc++, won't work ! properly if assembled with Sun as: the linker will complain about relocations in read-only sections, in the definition of virtual ! tables. Also, Sun as fails to process long symbols resulting from mangling template-heavy C++ function names.


    !

    sparc-sun-solaris2.7

    Sun patch 107058-01 (1999-01-13) for SPARC Solaris 7 triggers a bug in the dynamic linker. This problem (Sun bug 4210064) affects GCC 2.8 --- 1612,1650 ---- pkgadd command. For further details, see the Solaris documentation. !

    On some versions of Solaris, trying to use the linker and other tools in /usr/ucb to install GCC has been observed to cause trouble. For example, the linker may hang indefinitely. The fix is to remove /usr/ucb from your PATH. !

    All releases of GNU binutils prior to 2.11.2 have known bugs on this ! platform. We recommend the use of GNU binutils 2.11.2 or the vendor ! tools (Sun as, Sun ld). !

    Unfortunately, C++ shared libraries, including libstdc++, won't work ! properly if assembled with Sun as: the linker will complain about relocations in read-only sections, in the definition of virtual ! tables. Also, Sun as fails to process long symbols resulting from mangling template-heavy C++ function names.


    !

    sparc-sun-solaris*

    ! !

    Sun as 4.X is broken in that it cannot cope with long symbol names. ! A typical error message might look similar to the following: ! !

    /usr/ccs/bin/as: "/var/tmp/ccMsw135.s", line 11041: ! error: can't compute value of an expression involving an external symbol. ! !

    This is Sun bug 4237974. This is fixed with patch 108908-02 and has ! been fixed in later (5.x) versions of the assembler. ! !

    !
    ! !

    sparc-sun-solaris2.7

    Sun patch 107058-01 (1999-01-13) for SPARC Solaris 7 triggers a bug in the dynamic linker. This problem (Sun bug 4210064) affects GCC 2.8 *************** back it out. *** 1687,1693 ****

  • Copy the original, unpatched Solaris 7 /usr/ccs/bin/as into ! /usr/local/lib/gcc-lib/sparc-sun-solaris2.7/2.95.1/as, adjusting the latter name to fit your local conventions and software version numbers. --- 1662,1668 ----
  • Copy the original, unpatched Solaris 7 /usr/ccs/bin/as into ! /usr/local/lib/gcc-lib/sparc-sun-solaris2.7/3.0/as, adjusting the latter name to fit your local conventions and software version numbers. *************** the bug, but (as of 1999-10-06) it is st *** 1706,1712 ****
    !

    *-sun-solaris2.8

    Sun bug 4296832 turns up when compiling X11 headers with GCC 2.95 or newer: g++ will complain that types are missing. These headers assume --- 1681,1687 ----


    !

    *-sun-solaris2.8

    Sun bug 4296832 turns up when compiling X11 headers with GCC 2.95 or newer: g++ will complain that types are missing. These headers assume *************** will assume that any missing type is For Solaris 8, this is fixed by revision 24 or later of patch 108652 (for SPARCs) or 108653 (for Intels). !

    Solaris 8's linker fails to link some libjava programs if previously-installed GCC java libraries already exist in the configured ! prefix. For this reason, libgcj is disabled by default on Solaris 8. ! If you use GNU ld, or if you don't have a previously-installed libgcj in the same prefix, use --enable-libgcj to build and install the Java libraries.


    !

    Sun V5.0 Compiler Bugs

    ! !

    The Sun V5.0 compilers are known to mis-compile GCC 2.95 and GCC 2.95.1, ! which in turn causes GCC to fail its bootstrap comparison test. ! GCC 2.95.2 has a workaround. ! !

    !
    ! !

    sparc-sun-sunos*

    !

    A bug in the SunOS4 linker will cause it to crash when linking -fPIC compiled objects (and will therefore not allow you to build shared libraries).

    To fix this problem you can either use the most recent version of ! binutils or get the latest SunOS4 linker patch (patch ID 100170-10) from Sun's patch site.


    !

    sparc-unknown-linux-gnulibc1

    It has been reported that you might need ! binutils-2.8.1.0.23 for this platform, too.


    !

    sparc64-*-*

    GCC version 2.95 is not able to compile code correctly for sparc64 targets. Users of the Linux kernel, at least, ! 12~can use the sparc32 program to start up a new shell invocation with an environment that causes configure to ! recognize (via uname -a) the system as sparc-*-* instead.


    !

    *-*-sysv*

    On System V release 3, you may get this error message while linking: --- 1694,1749 ----

    For Solaris 8, this is fixed by revision 24 or later of patch 108652 (for SPARCs) or 108653 (for Intels). !

    Solaris 8's linker fails to link some libjava programs if previously-installed GCC java libraries already exist in the configured ! prefix. For this reason, libgcj is disabled by default on Solaris 8. ! If you use GNU ld, or if you don't have a previously-installed libgcj in the same prefix, use --enable-libgcj to build and install the Java libraries.


    !

    sparc-sun-sunos*

    !

    A bug in the SunOS 4 linker will cause it to crash when linking -fPIC compiled objects (and will therefore not allow you to build shared libraries).

    To fix this problem you can either use the most recent version of ! binutils or get the latest SunOS 4 linker patch (patch ID 100170-10) from Sun's patch site. +

    Sometimes on a Sun 4 you may observe a crash in the program + genflags or genoutput while building GCC. This is said to + be due to a bug in sh. You can probably get around it by running + genflags or genoutput manually and then retrying the + make. +


    !

    sparc-unknown-linux-gnulibc1

    It has been reported that you might need ! binutils 2.8.1.0.23 for this platform, too.


    !

    sparc64-*-*

    GCC version 2.95 is not able to compile code correctly for sparc64 targets. Users of the Linux kernel, at least, ! can use the sparc32 program to start up a new shell invocation with an environment that causes configure to ! recognize (via uname -a) the system as sparc-*-* instead.


    !

    *-*-sysv*

    On System V release 3, you may get this error message while linking: *************** while linking: *** 1780,1786 **** in strings table for file whatever

  • !

    This probably indicates that the disk is full or your ULIMIT won't allow the file to be as large as it needs to be.

    This problem can also result because the kernel parameter MAXUMEM --- 1752,1758 ---- in strings table for file whatever

    !

    This probably indicates that the disk is full or your ulimit won't allow the file to be as large as it needs to be.

    This problem can also result because the kernel parameter MAXUMEM *************** is said to work. Smaller values may als *** 1794,1800 **** /usr/local/lib/bison.simple:625: virtual memory exhausted !

    that too indicates a problem with disk space, ULIMIT, or MAXUMEM.

    On a System V release 4 system, make sure /usr/bin precedes /usr/ucb in PATH. The cc command in --- 1766,1772 ---- /usr/local/lib/bison.simple:625: virtual memory exhausted !

    that too indicates a problem with disk space, ulimit, or MAXUMEM.

    On a System V release 4 system, make sure /usr/bin precedes /usr/ucb in PATH. The cc command in *************** is said to work. Smaller values may als *** 1803,1822 ****


    !

    vax-dec-ultrix

    !

    Don't try compiling with Vax C (vcc). It produces incorrect code in some cases (for example, when alloca is used). -

    Meanwhile, compiling cp/parse.c with pcc does not work because of - an internal table size limitation in that compiler. To avoid this - problem, compile just the GNU C compiler first, and use it to recompile - building all the languages that you want to run. -


    !

    we32k-*-*

    These computers are also known as the 3b2, 3b5, 3b20 and other similar names. (However, the 3b1 is actually a 68000.) --- 1775,1789 ----


    !

    vax-dec-ultrix

    !

    Don't try compiling with VAX C (vcc). It produces incorrect code in some cases (for example, when alloca is used).


    !

    we32k-*-*

    These computers are also known as the 3b2, 3b5, 3b20 and other similar names. (However, the 3b1 is actually a 68000.) *************** system's linker seems to be unable to ha *** 1826,1832 **** debugging information.

    The system's compiler runs out of capacity when compiling stmt.c ! in GNU CC. You can work around this by building cpp in GNU CC first, then use that instead of the system's preprocessor with the system's C compiler to compile stmt.c. Here is how: --- 1793,1799 ---- debugging information.

    The system's compiler runs out of capacity when compiling stmt.c ! in GCC. You can work around this by building cpp in GCC first, then use that instead of the system's preprocessor with the system's C compiler to compile stmt.c. Here is how: *************** echo '/lib/cpp.gnu -traditional ${1+"$@" *** 1836,1842 **** chmod +x /lib/cpp !

    The system's compiler produces bad code for some of the GNU CC optimization files. So you must build the stage 2 compiler without optimization. Then build a stage 3 compiler with optimization. That executable should work. Here are the necessary commands: --- 1803,1809 ---- chmod +x /lib/cpp !

    The system's compiler produces bad code for some of the GCC optimization files. So you must build the stage 2 compiler without optimization. Then build a stage 3 compiler with optimization. That executable should work. Here are the necessary commands: *************** as the file cc1plus is larg *** 1852,1858 ****


    !

    Microsoft Windows (32 bit)

    A port of GCC 2.95.x is included with the Cygwin environment. --- 1819,1825 ----


    !

    Microsoft Windows (32 bit)

    A port of GCC 2.95.x is included with the Cygwin environment. *************** without modification. *** 1863,1869 ****


    !

    OS/2

    GCC does not currently support OS/2. However, Andrew Zabolotny has been working on a generic OS/2 port with pgcc. The current code code can be found --- 1830,1836 ----


    !

    OS/2

    GCC does not currently support OS/2. However, Andrew Zabolotny has been working on a generic OS/2 port with pgcc. The current code code can be found *************** at Older systems

    GCC contains support files for many older (1980s and early 1990s) Unix variants. For the most part, support for these systems --- 1842,1848 ----


    !

    Older systems

    GCC contains support files for many older (1980s and early 1990s) Unix variants. For the most part, support for these systems *************** bring GCC up on such a system, if still *** 1901,1913 **** require first installing an old version of GCC which did work on that system, and using it to compile a more recent GCC, to avoid bugs in the vendor compiler. Old releases of GCC 1 and GCC 2 are available in ! the old-releases directory on the GCC mirror sites. Header bugs may generally be avoided using fixincludes, but bugs or deficiencies in libraries and the operating system may still cause problems.

    For some systems, old versions of GNU binutils may also be useful, ! and are available from pub/binutils/old-releases on sources.redhat.com mirror sites.

    Some of the information on specific systems above relates to --- 1868,1880 ---- require first installing an old version of GCC which did work on that system, and using it to compile a more recent GCC, to avoid bugs in the vendor compiler. Old releases of GCC 1 and GCC 2 are available in ! the old-releases directory on the GCC mirror sites. Header bugs may generally be avoided using fixincludes, but bugs or deficiencies in libraries and the operating system may still cause problems.

    For some systems, old versions of GNU binutils may also be useful, ! and are available from pub/binutils/old-releases on sources.redhat.com mirror sites.

    Some of the information on specific systems above relates to *************** current GCC) is to be found in the GCC t *** 1918,1924 ****


    !

    all ELF targets (SVR4, Solaris, etc.)

    C++ support is significantly better on ELF targets if you use the GNU linker; duplicate copies of --- 1885,1891 ----


    !

    all ELF targets (SVR4, Solaris, etc.)

    C++ support is significantly better on ELF targets if you use the GNU linker; duplicate copies of diff -Nrc3pad gcc-3.0/INSTALL/test.html gcc-3.0.1/INSTALL/test.html *** gcc-3.0/INSTALL/test.html Sun Jun 17 12:50:02 2001 --- gcc-3.0.1/INSTALL/test.html Sun Aug 19 17:45:10 2001 *************** *** 8,18 ****

    Installing GCC: Testing

    !

    Please note that this is only applicable ! to current development versions of GCC and GCC 3.0 or later. ! GCC 2.95.x does not come with a testsuite. ! !

    Before you install GCC, you might wish to run the testsuite. This step is optional and may require you to download additional software.

    First, you must have downloaded the testsuites. --- 8,14 ----

    Installing GCC: Testing

    !

    Before you install GCC, you might wish to run the testsuite. This step is optional and may require you to download additional software.

    First, you must have downloaded the testsuites. *************** dejagnu 1.3 is not sufficient. *** 25,34 ****

    Now you may need specific preparations:

      -
    • In order to run the libio tests in GCC 2.95 and earlier versions of GCC - on targets which do not fully - support Unix/POSIX commands (e.g. Cygwin), the references to the dbz - directory have to be deleted from libio/configure.in.
    • The following environment variables may need to be set appropriately, as in the following example (which assumes that DejaGnu has been installed --- 21,26 ---- *************** environment variables. *** 53,77 ****

      The testing process will try to test as many components in the GCC ! distribution as possible, including the C, C++, Objective C and Fortran compilers as well as the C++ and Java runtime libraries.

      How can I run the test suite on selected tests?

      As a first possibility to cut down the number of tests that are run it is possible to use make check-gcc or make check-g++ ! in the gcc subdirectory of the object directory. To further cut down the tests the following is possible:

          make check-gcc RUNTESTFLAGS="execute.exp other-options"
        
      !

      This will run all gcc execute tests in the testsuite.

          make check-g++ RUNTESTFLAGS="old-deja.exp=9805* other-options"
        
      !

      This will run the g++ "old-deja" tests in the testsuite where the filename matches 9805*.

      The *.exp files are located in the testsuite directories of the GCC --- 45,69 ----

      The testing process will try to test as many components in the GCC ! distribution as possible, including the C, C++, Objective-C and Fortran compilers as well as the C++ and Java runtime libraries.

      How can I run the test suite on selected tests?

      As a first possibility to cut down the number of tests that are run it is possible to use make check-gcc or make check-g++ ! in the gcc subdirectory of the object directory. To further cut down the tests the following is possible:

          make check-gcc RUNTESTFLAGS="execute.exp other-options"
        
      !

      This will run all gcc execute tests in the testsuite.

          make check-g++ RUNTESTFLAGS="old-deja.exp=9805* other-options"
        
      !

      This will run the g++ "old-deja" tests in the testsuite where the filename matches 9805*.

      The *.exp files are located in the testsuite directories of the GCC *************** output of make check into a *** 84,92 ****

      How to interpret test results

      After the testsuite has run you'll find various *.sum and *.log ! files in the testsuite subdirectories. The *.log files contain a detailed log of the compiler invocations and the corresponding ! results, the *.sum files summarize the results. These summaries list all the tests that have been run with a corresponding status code:

        --- 76,84 ----

        How to interpret test results

        After the testsuite has run you'll find various *.sum and *.log ! files in the testsuite subdirectories. The *.log files contain a detailed log of the compiler invocations and the corresponding ! results, the *.sum files summarize the results. These summaries list all the tests that have been run with a corresponding status code:

          *************** problem in future releases. *** 107,127 ****

          Submitting test results

          If you want to report the results to the GCC project, use the ! contrib/test_summary shell script. Start it in the objdir with

              srcdir/contrib/test_summary -p your_commentary.txt \
                    -m gcc-testresults@gcc.gnu.org |sh
            

          This script uses the Mail program to send the results, so ! make sure it is in your PATH. The file your_commentary.txt is prepended to the testsuite summary and should contain any special ! remarks you have on your results or your build environment. Please do not edit the testsuite result block or the subject line, as these messages are automatically parsed and presented at the GCC testresults web page. Here you can also gather information on how specific tests ! behave on different platforms and compare them with your results. A few failing testcases are possible even on released versions and you should look here first if you think your results are unreasonable. --- 99,119 ----

          Submitting test results

          If you want to report the results to the GCC project, use the ! contrib/test_summary shell script. Start it in the objdir with

              srcdir/contrib/test_summary -p your_commentary.txt \
                    -m gcc-testresults@gcc.gnu.org |sh
            

          This script uses the Mail program to send the results, so ! make sure it is in your PATH. The file your_commentary.txt is prepended to the testsuite summary and should contain any special ! remarks you have on your results or your build environment. Please do not edit the testsuite result block or the subject line, as these messages are automatically parsed and presented at the GCC testresults web page. Here you can also gather information on how specific tests ! behave on different platforms and compare them with your results. A few failing testcases are possible even on released versions and you should look here first if you think your results are unreasonable. diff -Nrc3pad gcc-3.0/MAINTAINERS gcc-3.0.1/MAINTAINERS *** gcc-3.0/MAINTAINERS Fri Jun 8 14:14:04 2001 --- gcc-3.0.1/MAINTAINERS Fri Aug 10 15:06:30 2001 *************** c4x port Michael Hayes m.hayes@elec.ca *** 51,56 **** --- 51,58 ---- arc port Richard Kenner kenner@nyu.edu fr30 port Nick Clifton niclc@redhat.com vax port Dave Anglin dave.anglin@nrc.ca + s390 port Hartmut Penner hpenner@de.ibm.com + s390 port Ulrich Weigand uweigand@de.ibm.com fortran Richard Henderson rth@redhat.com fortran Toon Moene toon@moene.indiv.nluug.nl c++ Jason Merrill jason@redhat.com diff -Nrc3pad gcc-3.0/boehm-gc/ChangeLog gcc-3.0.1/boehm-gc/ChangeLog *** gcc-3.0/boehm-gc/ChangeLog Sun Jun 17 12:39:07 2001 --- gcc-3.0.1/boehm-gc/ChangeLog Sun Aug 19 14:08:01 2001 *************** *** 1,3 **** --- 1,21 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-07-03 Tom Tromey + + Fix for PR bootstrap/3281: + * aclocal.m4, configure, Makefile.in: Rebuilt. + * acinclude.m4: Set mkinstalldirs for in-tree build. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/boehm-gc/Makefile.in gcc-3.0.1/boehm-gc/Makefile.in *** gcc-3.0/boehm-gc/Makefile.in Sun Jun 17 12:49:45 2001 --- gcc-3.0.1/boehm-gc/Makefile.in Tue Jul 3 15:29:46 2001 *************** THREADLIBS = @THREADLIBS@ *** 91,96 **** --- 91,97 ---- VERSION = @VERSION@ addobjs = @addobjs@ boehm_gc_basedir = @boehm_gc_basedir@ + mkinstalldirs = @mkinstalldirs@ target_all = @target_all@ AUTOMAKE_OPTIONS = cygnus *************** CONFIG_STATUS_DEPENDENCIES = $(srcdir)/c *** 196,202 **** MAKEOVERRIDES = ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_CLEAN_FILES = LTLIBRARIES = $(toolexeclib_LTLIBRARIES) --- 197,202 ---- diff -Nrc3pad gcc-3.0/boehm-gc/acinclude.m4 gcc-3.0.1/boehm-gc/acinclude.m4 *** gcc-3.0/boehm-gc/acinclude.m4 Wed Jun 13 09:32:01 2001 --- gcc-3.0.1/boehm-gc/acinclude.m4 Tue Jul 3 15:29:46 2001 *************** fi *** 37,42 **** --- 37,46 ---- AC_CANONICAL_SYSTEM + # This works around an automake problem. + mkinstalldirs="`cd $ac_aux_dir && pwd`/mkinstalldirs" + AC_SUBST(mkinstalldirs) + AM_INIT_AUTOMAKE(boehm-gc, 5.1, no-define) # FIXME: We temporarily define our own version of AC_PROG_CC. This is diff -Nrc3pad gcc-3.0/boehm-gc/aclocal.m4 gcc-3.0.1/boehm-gc/aclocal.m4 *** gcc-3.0/boehm-gc/aclocal.m4 Wed Jun 13 09:32:01 2001 --- gcc-3.0.1/boehm-gc/aclocal.m4 Tue Jul 3 15:29:46 2001 *************** fi *** 49,54 **** --- 49,58 ---- AC_CANONICAL_SYSTEM + # This works around an automake problem. + mkinstalldirs="`cd $ac_aux_dir && pwd`/mkinstalldirs" + AC_SUBST(mkinstalldirs) + AM_INIT_AUTOMAKE(boehm-gc, 5.1, no-define) # FIXME: We temporarily define our own version of AC_PROG_CC. This is diff -Nrc3pad gcc-3.0/boehm-gc/configure gcc-3.0.1/boehm-gc/configure *** gcc-3.0/boehm-gc/configure Wed Jun 13 09:32:01 2001 --- gcc-3.0.1/boehm-gc/configure Tue Jul 3 15:29:46 2001 *************** test "$host_alias" != "$target_alias" && *** 935,940 **** --- 935,944 ---- program_prefix=${target_alias}- + # This works around an automake problem. + mkinstalldirs="`cd $ac_aux_dir && pwd`/mkinstalldirs" + + PACKAGE=boehm-gc *************** fi *** 948,954 **** missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 ! echo "configure:952: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 952,958 ---- missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 ! echo "configure:956: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 961,967 **** fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 ! echo "configure:965: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 965,971 ---- fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 ! echo "configure:969: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 974,980 **** fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 ! echo "configure:978: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 978,984 ---- fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 ! echo "configure:982: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 987,993 **** fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 ! echo "configure:991: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 991,997 ---- fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 ! echo "configure:995: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 1000,1006 **** fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 ! echo "configure:1004: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 1004,1010 ---- fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 ! echo "configure:1008: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** fi *** 1026,1032 **** # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1030: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1030,1036 ---- # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1034: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -z "$CC"; then *** 1056,1062 **** # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1060: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1060,1066 ---- # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1064: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1105,1111 **** fi echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ! echo "configure:1109: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1109,1115 ---- fi echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ! echo "configure:1113: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1114,1120 **** yes; #endif EOF ! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1118: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no --- 1118,1124 ---- yes; #endif EOF ! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1122: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no *************** if test $ac_cv_prog_gcc = yes; then *** 1129,1135 **** ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ! echo "configure:1133: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1133,1139 ---- ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ! echo "configure:1137: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** do *** 1166,1172 **** # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1170: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1170,1176 ---- # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1174: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** test -n "$CXX" || CXX="gcc" *** 1199,1205 **** test -z "$CXX" && { echo "configure: error: no acceptable c++ found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 ! echo "configure:1203: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1203,1209 ---- test -z "$CXX" && { echo "configure: error: no acceptable c++ found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 ! echo "configure:1207: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1208,1214 **** yes; #endif EOF ! if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1212: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no --- 1212,1218 ---- yes; #endif EOF ! if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1216: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no *************** if test $ac_cv_prog_gxx = yes; then *** 1223,1229 **** ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 ! echo "configure:1227: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1227,1233 ---- ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 ! echo "configure:1231: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1256,1262 **** # NEWLIB_CONFIGURE, which doesn't work because that means that it will # be run before AC_CANONICAL_HOST. echo $ac_n "checking build system type""... $ac_c" 1>&6 ! echo "configure:1260: checking build system type" >&5 build_alias=$build case "$build_alias" in --- 1260,1266 ---- # NEWLIB_CONFIGURE, which doesn't work because that means that it will # be run before AC_CANONICAL_HOST. echo $ac_n "checking build system type""... $ac_c" 1>&6 ! echo "configure:1264: checking build system type" >&5 build_alias=$build case "$build_alias" in *************** echo "$ac_t""$build" 1>&6 *** 1277,1283 **** # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1281: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1281,1287 ---- # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1285: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1309,1315 **** # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1313: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1313,1319 ---- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1317: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1341,1347 **** # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1345: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1345,1351 ---- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1349: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -n "$ac_tool_prefix"; then *** 1373,1379 **** # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1377: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1377,1383 ---- # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1381: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1418,1424 **** # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:1422: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 1422,1428 ---- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:1426: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** test -z "$INSTALL_DATA" && INSTALL_DATA= *** 1472,1478 **** echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 ! echo "configure:1476: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" --- 1476,1482 ---- echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 ! echo "configure:1480: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" *************** if false; then *** 1506,1512 **** echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 ! echo "configure:1510: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1510,1516 ---- echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 ! echo "configure:1514: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1516,1522 **** rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= ! if { (eval echo configure:1520: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj | *.ilk | *.pdb) ;; --- 1520,1526 ---- rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= ! if { (eval echo configure:1524: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj | *.ilk | *.pdb) ;; *************** ac_prog=ld *** 1639,1645 **** if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 ! echo "configure:1643: checking for ld used by GCC" >&5 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw --- 1643,1649 ---- if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 ! echo "configure:1647: checking for ld used by GCC" >&5 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw *************** echo "configure:1643: checking for ld us *** 1669,1678 **** esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 ! echo "configure:1673: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 ! echo "configure:1676: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 1673,1682 ---- esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 ! echo "configure:1677: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 ! echo "configure:1680: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 1707,1713 **** fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 ! echo "configure:1711: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1711,1717 ---- fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 ! echo "configure:1715: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** with_gnu_ld=$lt_cv_prog_gnu_ld *** 1724,1730 **** echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 ! echo "configure:1728: checking for $LD option to reload object files" >&5 if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1728,1734 ---- echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 ! echo "configure:1732: checking for $LD option to reload object files" >&5 if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** reload_flag=$lt_cv_ld_reload_flag *** 1736,1742 **** test -n "$reload_flag" && reload_flag=" $reload_flag" echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 ! echo "configure:1740: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1740,1746 ---- test -n "$reload_flag" && reload_flag=" $reload_flag" echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 ! echo "configure:1744: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** NM="$lt_cv_path_NM" *** 1774,1780 **** echo "$ac_t""$NM" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 ! echo "configure:1778: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1778,1784 ---- echo "$ac_t""$NM" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 ! echo "configure:1782: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1795,1801 **** fi echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 ! echo "configure:1799: checking how to recognise dependant libraries" >&5 if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1799,1805 ---- fi echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 ! echo "configure:1803: checking how to recognise dependant libraries" >&5 if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** file_magic_cmd=$lt_cv_file_magic_cmd *** 1959,1971 **** deplibs_check_method=$lt_cv_deplibs_check_method echo $ac_n "checking for object suffix""... $ac_c" 1>&6 ! echo "configure:1963: checking for object suffix" >&5 if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftest* echo 'int i = 1;' > conftest.$ac_ext ! if { (eval echo configure:1969: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; --- 1963,1975 ---- deplibs_check_method=$lt_cv_deplibs_check_method echo $ac_n "checking for object suffix""... $ac_c" 1>&6 ! echo "configure:1967: checking for object suffix" >&5 if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftest* echo 'int i = 1;' > conftest.$ac_ext ! if { (eval echo configure:1973: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; *************** case $deplibs_check_method in *** 1989,1995 **** file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 ! echo "configure:1993: checking for ${ac_tool_prefix}file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1993,1999 ---- file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 ! echo "configure:1997: checking for ${ac_tool_prefix}file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 2051,2057 **** if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo $ac_n "checking for file""... $ac_c" 1>&6 ! echo "configure:2055: checking for file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2055,2061 ---- if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo $ac_n "checking for file""... $ac_c" 1>&6 ! echo "configure:2059: checking for file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** esac *** 2122,2128 **** # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2126: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2126,2132 ---- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2130: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -n "$ac_tool_prefix"; then *** 2154,2160 **** # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2158: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2158,2164 ---- # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2162: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 2189,2195 **** # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2193: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2193,2199 ---- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2197: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -n "$ac_tool_prefix"; then *** 2221,2227 **** # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2225: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2225,2231 ---- # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2229: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** test x"$pic_mode" = xno && libtool_flags *** 2288,2295 **** case $host in *-*-irix6*) # Find out which ABI we are using. ! echo '#line 2292 "configure"' > conftest.$ac_ext ! if { (eval echo configure:2293: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" --- 2292,2299 ---- case $host in *-*-irix6*) # Find out which ABI we are using. ! echo '#line 2296 "configure"' > conftest.$ac_ext ! if { (eval echo configure:2297: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" *************** case $host in *** 2310,2316 **** SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 ! echo "configure:2314: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2314,2320 ---- SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 ! echo "configure:2318: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** ac_link='${CC-cc} -o conftest${ac_exeext *** 2323,2336 **** cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else --- 2327,2340 ---- cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else *************** echo "$ac_t""$lt_cv_cc_needs_belf" 1>&6 *** 2360,2366 **** esac echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 ! echo "configure:2364: checking how to run the C++ preprocessor" >&5 if test -z "$CXXCPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 2364,2370 ---- esac echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 ! echo "configure:2368: checking how to run the C++ preprocessor" >&5 if test -z "$CXXCPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 2373,2384 **** cross_compiling=$ac_cv_prog_cxx_cross CXXCPP="${CXX-g++} -E" cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2382: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : --- 2377,2388 ---- cross_compiling=$ac_cv_prog_cxx_cross CXXCPP="${CXX-g++} -E" cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2386: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : *************** fi *** 2525,2531 **** echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 ! echo "configure:2529: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" --- 2529,2535 ---- echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 ! echo "configure:2533: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" *************** if test "x" = "y"; then *** 2554,2560 **** echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 ! echo "configure:2558: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2558,2564 ---- echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 ! echo "configure:2562: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 2564,2570 **** rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= ! if { (eval echo configure:2568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj | *.ilk | *.pdb) ;; --- 2568,2574 ---- rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= ! if { (eval echo configure:2572: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj | *.ilk | *.pdb) ;; *************** ac_exeext=$EXEEXT *** 2587,2593 **** fi echo $ac_n "checking for thread model used by GCC""... $ac_c" 1>&6 ! echo "configure:2591: checking for thread model used by GCC" >&5 THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` echo "$ac_t""$THREADS" 1>&6 --- 2591,2597 ---- fi echo $ac_n "checking for thread model used by GCC""... $ac_c" 1>&6 ! echo "configure:2595: checking for thread model used by GCC" >&5 THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` echo "$ac_t""$THREADS" 1>&6 *************** esac *** 2639,2645 **** echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 ! echo "configure:2643: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 2643,2649 ---- echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 ! echo "configure:2647: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 2647,2653 **** ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 2662,2668 ---- dlopen() ; return 0; } EOF ! if { (eval echo configure:2666: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** s%@build_alias@%$build_alias%g *** 2998,3003 **** --- 3002,3008 ---- s%@build_cpu@%$build_cpu%g s%@build_vendor@%$build_vendor%g s%@build_os@%$build_os%g + s%@mkinstalldirs@%$mkinstalldirs%g s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g s%@INSTALL_DATA@%$INSTALL_DATA%g diff -Nrc3pad gcc-3.0/bugs.html gcc-3.0.1/bugs.html *** gcc-3.0/bugs.html Sun Jun 17 12:49:56 2001 --- gcc-3.0.1/bugs.html Sun Aug 19 17:45:06 2001 *************** *** 5,30 ****

          The latest version of this document is always available at ! http://gcc.gnu.org/bugs.html. !

          Reporting Bugs ! | Managing Bugs (GNATS and the test-suite) ! | Frequently Reported Bugs in GCC 3.0 !

          Reporting Bugs

          !

          Our preferred way of receiving bugs is via our GNATS ! bug reporting system.

          !

          Before you report a bug, please check the list of ! well-known bugs and, if possible in any way, try a current ! development snapshot ! or CodeSourcery's ! Online Test Compilation. If you want to report a ! bug with egcs 1.x or versions of GCC before 3.0 we strongly recommend upgrading to the current release first.

          Before reporting that GCC compiles your code incorrectly, please --- 5,62 ---- +

          GCC Bugs

          The latest version of this document is always available at ! ! http://gcc.gnu.org/bugs.html.

          !
          ! !

          Table of Contents

          ! ! !

          Reporting Bugs

          !

          Our preferred way of receiving bugs is via the ! GCC GNATS bug reporting system.

          !

          Before you report a bug, please check the ! list of well-known bugs and, if possible ! in any way, try a current development snapshot or ! CodeSourcery's ! Online Test Compilation. If you want to report a bug ! with egcs 1.x or versions of GCC before 3.0 we strongly recommend upgrading to the current release first.

          Before reporting that GCC compiles your code incorrectly, please *************** in GCC.

          *** 38,44 **** instructions, that explain how to obtain some of the information requested in this summary.

          !

          What we need

          Please include in your bug report all of the following items: --- 70,76 ---- instructions, that explain how to obtain some of the information requested in this summary.

          !

          What we need

          Please include in your bug report all of the following items: *************** Please include in your bug report all *** 48,60 **** output of gcc -v
        • The complete command line that triggers the bug
        • The compiler output (error messages, warnings, etc)
        • !
        • The preprocessed file (*.i*) that triggers the bug, generated by adding -save-temps to the complete compilation command (see below)
        • The options given when GCC was configured/built
        !

        What we DON'T want

        • A source file that #includes header files that are left --- 80,92 ---- output of gcc -v
        • The complete command line that triggers the bug
        • The compiler output (error messages, warnings, etc)
        • !
        • The preprocessed file (*.i*) that triggers the bug, generated by adding -save-temps to the complete compilation command (see below)
        • The options given when GCC was configured/built
        !

        What we DON'T want

        • A source file that #includes header files that are left *************** Please include in your bug report all *** 86,92 **** reports; post a new, self-contained, full bug report instead, if possible as a follow-up (or reply) to the original bug report
        • !
        • Assembly files (*.s) produced by the compiler, or any binary files, such as object files, executables or core files
        • Duplicate bug reports, or reports of bugs already fixed in the --- 118,124 ---- reports; post a new, self-contained, full bug report instead, if possible as a follow-up (or reply) to the original bug report
        • !
        • Assembly files (*.s) produced by the compiler, or any binary files, such as object files, executables or core files
        • Duplicate bug reports, or reports of bugs already fixed in the *************** Please include in your bug report all *** 105,130 **** dedicated to the discussion of the programming language
        !

        Where to post it

        !

        Please submit your bug report directly to our ! GNATS bug database. If this is not possible, please mail all information to ! gcc-bugs@gcc.gnu.org. !

        Detailed bug reporting instructions

        In general, all the information we need can be obtained by collecting the command line below, as well as its output and the ! preprocessed file it generates.

        !

        gcc -v -save-temps all-your-options source-file

        !

        Typically the preprocessed file (extension .i for C or .ii for C++) will be large, so please compress the resulting file with one of the popular compression programs such as ! bzip2, gzip, zip or compress (in decreasing order of preference). Use maximum compression (-9) if available. Please include the compressed preprocessor output in your bug report, even if the source code is --- 137,163 ---- dedicated to the discussion of the programming language

      !

      Where to post it

      !

      Please submit your bug report directly to the ! GCC GNATS bug database. If this is not possible, please mail all information to ! gcc-bugs@gcc.gnu.org. !

      Detailed bug reporting instructions

      In general, all the information we need can be obtained by collecting the command line below, as well as its output and the ! preprocessed file it generates. !

      gcc -v -save-temps all-your-options ! source-file
      ! Typically the preprocessed file (extension .i for C or .ii for C++) will be large, so please compress the resulting file with one of the popular compression programs such as ! bzip2, gzip, zip or compress (in decreasing order of preference). Use maximum compression (-9) if available. Please include the compressed preprocessor output in your bug report, even if the source code is *************** duplicated as part of an archive.

      *** 160,166 ****

      The gcc lists have message size limits (200 kbytes) and bug reports over those limits will currently be bounced. If your bug is larger ! than that, please post it directly in GNATS.

      If you fail to supply enough information for a bug report to be reproduced, someone will probably ask you to post additional --- 193,200 ----

      The gcc lists have message size limits (200 kbytes) and bug reports over those limits will currently be bounced. If your bug is larger ! than that, please post it using the GCC GNATS bug ! database.

      If you fail to supply enough information for a bug report to be reproduced, someone will probably ask you to post additional *************** contributors.

      *** 199,208 ****
    • Check in your fixes.
    • Frequently Reported Bugs in GCC 3.0

      !

      General

      The following bugs are very frequently reported.

      --- 233,243 ----
    • Check in your fixes.
    • +

      Frequently Reported Bugs in GCC 3.0

      !

      General

      The following bugs are very frequently reported.

      *************** contributors.

      *** 210,230 ****
    • GCC 2.95.2 does not build on GNU/Linux systems using glibc 2.2, such as Red Hat 7.0. A patch is ! available. This will be fixed in GCC 2.95.3 and GCC 3.0.
    • GCC 2.95.2 crashes when compiling mbx.c from the PINE 4.30 or IMAP2000 distribution on Sparc systems running Solaris.
    !

    Fortran

    !

    Fortran bugs are documented in the G77 manual rather than explicitly ! listed here. Please see "Known ! Causes of Trouble with GNU Fortran" in the ! G77 manual. !

    C++

    This is the list of bugs (and non-bugs) in g++ (aka GNU C++) that are reported very often, but not yet fixed. While it is certainly --- 245,385 ----

  • GCC 2.95.2 does not build on GNU/Linux systems using glibc 2.2, such as Red Hat 7.0. A patch is ! available. This is fixed in GCC 2.95.3 and GCC 3.0.
  • GCC 2.95.2 crashes when compiling mbx.c from the PINE 4.30 or IMAP2000 distribution on Sparc systems running Solaris.
!
+

Fortran

!

Fortran bugs are documented in the G77 manual rather than ! explicitly listed here. Please see ! "Known Causes of Trouble with GNU ! Fortran" in the G77 manual. ! !


! !

C

! !

The following are not bugs in the C compiler, but are reported ! often enough to warrant a mention here.

! !
!
Cannot initialize a static variable with ! stdin.
!

This has nothing to do with GCC, but people ask us about it a ! lot. Code like this: ! !

! #include <stdio.h> ! ! FILE *yyin = stdin; !
! ! will not compile with GNU libc (GNU/Linux libc6), because ! stdin is not a constant. This was done deliberately, in ! order for there to be no limit on the number of open FILE ! objects. It is surprising for people used to traditional Unix C ! libraries, but it is permitted by the C standard.

! !

This construct commonly occurs in code generated by old versions of ! lex or yacc. We suggest you try regenerating the parser with a ! current version of flex or bison, respectively. In your own code, the ! appropriate fix is to move the initialization to the beginning of ! main.

! !

There is a common misconception that the GCC developers are ! responsible for GNU libc. These are in fact two entirely separate ! projects. The appropriate place to ask questions relating to GNU libc ! is ! libc-alpha@sources.redhat.com. !

! !
Cannot use preprocessor directive in macro arguments.
!

Let me guess... you wrote code that looks something like this: !

! memcpy(dest, src, ! #ifdef PLATFORM1 ! 12 ! #else ! 24 ! #endif ! ); !
! and you got a whole pile of error messages: !
! ! test.c:11: warning: preprocessing directive not recognized within ! macro arg
! test.c:11: warning: preprocessing directive not recognized within ! macro arg
! test.c:11: warning: preprocessing directive not recognized within ! macro arg
! test.c: In function `foo':
! test.c:6: undefined or invalid # directive
! test.c:8: undefined or invalid # directive
! test.c:9: parse error before `24'
! test.c:10: undefined or invalid # directive
! test.c:11: parse error before `#'
!
! ! The problem, simply put, is that GCC's preprocessor does not allow you ! to put #ifdef (or any other directive) inside the arguments of ! a macro. Your C library's <string.h> happens to ! define memcpy as a macro - this is perfectly legitimate. ! The code therefore will not compile.

! !

We have two good reasons for not allowing directives inside ! macro arguments. First, it is not portable. It is "undefined ! behavior" according to the C standard; that means different ! compilers will do different things with it. Some will give you ! errors. Some will dump core. Some will silently mangle your code - ! you could get the equivalent of

!
! 	memcpy(dest, src, 1224);
! 
!

from the above example. A very few might do what you expected it ! to. We therefore feel it is most useful for GCC to reject this ! construct immediately so that it is found and fixed.

! !

Second, it is extraordinarily difficult to implement the ! preprocessor such that it does what you would expect for every ! possible directive found inside a macro argument. The best example is ! perhaps !

! #define foo(arg) ... arg ...
! foo(blah
! #undef foo
! blah)
!
! which is impossible to implement in portable C without ! leaking memory. Allowing only a subset of directives would be ! confusing.

! !

It is always possible to rewrite code which uses conditionals ! inside macros so that it doesn't. You could write the above ! example !

! #ifdef PLATFORM1
! memcpy(dest, src, 12);
! #else
! memcpy(dest, src, 24);
! #endif
!
! This is a bit more typing, but I personally think it's better style ! in addition to being more portable.

! !

In recent versions of glibc, printf is among the ! functions which are implemented as macros.

!
! !
! !

C++

This is the list of bugs (and non-bugs) in g++ (aka GNU C++) that are reported very often, but not yet fixed. While it is certainly *************** C++. This means that code which might ha *** 244,260 **** version, is now rejected. You should update your code to be C++.

You should try to use the latest stable release of the GNU C++ ! compiler. This is currently 3.0. Many commonly reported bugs in earlier ! releases are fixed in that version. !

Common problems updating from g++ 2.95 to g++ 3.0

!

g++ 3.0 conforms much closer to the ISO C++ standard (available at ! http://www.ncits.org/cplusplus.htm). ! We have also implemented some of the core and library defect reports (available at http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html & ! http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html respectively).

    --- 399,420 ---- version, is now rejected. You should update your code to be C++.

    You should try to use the latest stable release of the GNU C++ ! compiler. This is currently 3.0. Many commonly reported bugs in ! earlier releases are fixed in that version.

    !

    Common problems updating from G++ 2.95 to G++ ! 3.0

    !

    G++ 3.0 conforms much closer to the ISO C++ standard (available at ! http://www.ncits.org/cplusplus.htm).

    ! !

    We have also implemented some of the core and library defect reports ! (available at http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html & ! ! http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html ! respectively).

      *************** you don't you will get link errors). *** 274,280 **** The .h names are still available, but are deprecated.
    • <strstream> is deprecated, use ! <stringstream> instead.
    • streambuf::seekoff & streambuf::seekpos are private, instead use --- 434,443 ---- The .h names are still available, but are deprecated.
    • <strstream> is deprecated, use ! <sstream> instead. (The 3.0 BUGS file says ! <stringstream>, that was an error, ! stringstream is the class defined in ! <sstream>.)
    • streambuf::seekoff & streambuf::seekpos are private, instead use *************** same. *** 309,372 ****
    !

    Non-bugs

    ! Here are some features that have been reported as bugs, but are not.
    !
    Nested classes can access private types of the containing class. !
    G++ now implements type access control on member types. Defect report 45 clarifies that nested classes are members of the class they ! are nested in, and so are granted access to private members of that class. !
    Classes in exception specifiers must be complete types. !
    [15.4]/1 tells you that you cannot have an incomplete type, or ! pointer to incomplete (other than cv void *) in an ! exception specification. !
    G++ emits two copies of constructors and destructors. !
    In general there are three types of constructor (and destructor).
    1. The complete object constructor/destructor.
    2. The base object constructor/destructor.
    3. The allocating destructor/deallocating destructor.
    The first two are different, when virtual base classes are involved. ! In some cases we can do better, and this is logged in GNATS. !
    Exceptions don't work in multithreaded applications !
    You need to rebuild g++ and libstdc++ with --enable-threads. ! Remember, c++ exceptions are not like hardware interrupts. You cannot ! throw an exception in one thread and catch it in another. You cannot ! throw an exception from a signal handler, and catch it in the main ! thread. !
    Global destructors are not run in the correct order !
    Global destructors should be run in the reverse order of their ! constructors completing. In most cases this is the same as the ! reverse order of constructors starting, but sometimes it is ! different, and that is important. You need to compile and link your programs with --use-cxa-atexit. We have not turned this switch on by default, as it requires a cxa aware runtime ! library (libc, glibc, or equivalent).
    !

    Missing features

    ! We know some things are missing from g++.
    !
    export is not implemented. !
    The keyword will be parsed correctly, but has no effect. !
    Two stage lookup in templates is not implemented. !
    [14.6] specifies how names are looked up inside a template. G++ does ! not do this correctly, but for most templates this will not be noticeable. !
    !

    Parse errors for "simple" code

    Up to and including GCC 3.0, the compiler will give "parse error" for seemingly simple code, such as --- 472,580 ----
!

Non-bugs

! !

Here are some features that have been reported as bugs, but are ! not.

!
Nested classes can access private types of the containing ! class.
!

G++ now implements type access control on member types. Defect report 45 clarifies that nested classes are members of the class they ! are nested in, and so are granted access to private members of that ! class.

!
Classes in exception specifiers must be complete ! types.
!

[15.4]/1 tells you that you cannot have an incomplete type, or ! pointer to incomplete (other than cv void *) in ! an exception specification.

!
G++ emits two copies of constructors and destructors.
! !

In general there are three types of constructors (and ! destructors).

  1. The complete object constructor/destructor.
  2. The base object constructor/destructor.
  3. The allocating destructor/deallocating destructor.
The first two are different, when virtual base classes are involved. ! In some cases we can do better, and this is logged in GNATS.

!
Exceptions don't work in multithreaded applications.
!

You need to rebuild g++ and libstdc++ with ! --enable-threads. Remember, c++ exceptions are not like ! hardware interrupts. You cannot throw an exception in one thread and ! catch it in another. You cannot throw an exception from a signal ! handler, and catch it in the main thread.

! !
Global destructors are not run in the correct order.
!

Global destructors should be run in the reverse order of their ! constructors completing. In most cases this is the same as ! the reverse order of constructors starting, but sometimes it ! is different, and that is important. You need to compile and link your programs with --use-cxa-atexit. We have not turned this switch on by default, as it requires a cxa aware runtime ! library (libc, glibc, or ! equivalent).

! !
Problems with floating point computations.
!

In a number of cases, GCC appears to perform floating point ! computations incorrectly. For example, the program !

! #include <iostream>
!
! int main() {
!
! double min = 0.0;
! double max = 0.5;
! double width = 0.01;
! std::cout << (int)(((max - min) / width) - 1) << ! std::endl;
!
! }
!
! might print 50 on some systems and optimization levels, and 51 on ! others.

! !

The is the result of rounding: The computer cannot ! represent all real numbers exactly, so it has to use ! approximations. When computing with approximation, the computer needs ! to round to the nearest representable number.

! !

This is not a bug in the compiler, but an inherent limitation of ! the float and double types. Please study ! this paper ! for more information.

!

Missing features

!

We know some things are missing from G++.

!
The export keyword is not implemented.
!

Most C++ compilers (G++ included) do not yet implement ! export, which is necessary for separate compilation of ! template declarations and definitions. Without export, a ! template definition must be in scope to be used. The obvious ! workaround is simply to place all definitions in the header ! itself. Alternatively, the compilation unit containing template ! definitions may be included from the header.

!
Two stage lookup in templates is not implemented.
!

[14.6] specifies how names are looked up inside a template. G++ ! does not do this correctly, but for most templates this will not be ! noticeable.

!
!

Parse errors for "simple" code

Up to and including GCC 3.0, the compiler will give "parse error" for seemingly simple code, such as *************** exact error also somewhat varies with th *** 436,445 **** work-arounds proposed do not change the semantics of the program at all; they make them perhaps less readable. !

Optimization at -O3 takes a very long time

At -O3, all functions are candidates for inlining. The heuristic used has some deficiencies which show up when allowed such ! freedom. This is g++ specific, as it has an earlier inliner than gcc. --- 644,655 ---- work-arounds proposed do not change the semantics of the program at all; they make them perhaps less readable. !

Optimization at -O3 takes a ! very long time

At -O3, all functions are candidates for inlining. The heuristic used has some deficiencies which show up when allowed such ! freedom. This is g++ specific, as it has an earlier inliner than ! gcc.

diff -Nrc3pad gcc-3.0/config/ChangeLog gcc-3.0.1/config/ChangeLog *** gcc-3.0/config/ChangeLog Sun Jun 17 12:39:15 2001 --- gcc-3.0.1/config/ChangeLog Sun Aug 19 14:08:02 2001 *************** *** 1,3 **** --- 1,11 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/config/mpw/ChangeLog gcc-3.0.1/config/mpw/ChangeLog *** gcc-3.0/config/mpw/ChangeLog Sun Jun 17 12:39:11 2001 --- gcc-3.0.1/config/mpw/ChangeLog Sun Aug 19 14:08:03 2001 *************** *** 1,3 **** --- 1,15 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/config.sub gcc-3.0.1/config.sub *** gcc-3.0/config.sub Sat Jun 9 11:49:05 2001 --- gcc-3.0.1/config.sub Mon Jul 16 03:04:04 2001 *************** case $basic_machine in *** 238,244 **** | mips16 | mips64 | mipsel | mips64el \ | mips64orion | mips64orionel | mipstx39 | mipstx39el \ | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ ! | mips64vr5000 | miprs64vr5000el | mcore | s390 | s390x \ | sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \ | v850 | c4x \ | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \ --- 238,244 ---- | mips16 | mips64 | mipsel | mips64el \ | mips64orion | mips64orionel | mipstx39 | mipstx39el \ | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ ! | mips64vr5000 | mips64vr5000el | mcore | s390 | s390x \ | sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \ | v850 | c4x \ | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \ diff -Nrc3pad gcc-3.0/configure.in gcc-3.0.1/configure.in *** gcc-3.0/configure.in Tue May 29 23:49:05 2001 --- gcc-3.0.1/configure.in Mon Aug 13 09:14:49 2001 *************** *** 15,21 **** ## for 'Autoconf' (autoconf.texi) and 'Configure' (configure.texi). # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, ! # 1999, 2000 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by --- 15,21 ---- ## for 'Autoconf' (autoconf.texi) and 'Configure' (configure.texi). # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, ! # 1999, 2000, 2001 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by *************** case "${target}" in *** 758,763 **** --- 758,769 ---- target_configdirs="${target_configdirs} target-libstub target-cygmon" fi ;; + s390*-*-linux*) + # linux has rx in libc + skipdirs="$skipdirs target-librx" + # The libffi port is not yet in the GCC tree, boehm-gc does not work. + noconfigdirs="$noconfigdirs ${libgcj}" + ;; *-*-linux*) # linux has rx in libc skipdirs="$skipdirs target-librx" *************** case "${target}" in *** 812,817 **** --- 818,826 ---- i[3456]86-*-beos*) noconfigdirs="$noconfigdirs gdb target-newlib target-libgloss ${libgcj}" ;; + m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*) + noconfigdirs="$noconfigdirs target-libiberty ${libstdcxx_version} ${libgcj}" + ;; m68k-*-elf*) noconfigdirs="$noconfigdirs ${libgcj}" if [ x${is_cross_compiler} != xno ] ; then diff -Nrc3pad gcc-3.0/contrib/ChangeLog gcc-3.0.1/contrib/ChangeLog *** gcc-3.0/contrib/ChangeLog Sun Jun 17 12:39:19 2001 --- gcc-3.0.1/contrib/ChangeLog Sun Aug 19 14:08:04 2001 *************** *** 1,3 **** --- 1,38 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-13 Mark Mitchell + + * gcc_release: Remove restriction against minor revisions. + + 2001-07-28 Richard Henderson + + * test_summary: Copy LAST_UPDATED UTC time to head of summary. + * gcc_update: Dump timestamp in LAST_UPDATED. + + 2001-07-03 Joseph S. Myers + + * texi2pod.pl: Handle @r inside @item. + + 2001-06-21 Joseph S. Myers + + * gcc_release: Add another space to ChangeLog headers. Use tab to + indent ChangeLog message. Update release status in Fortran + version files. + + 2001-06-18 Mark Mitchell + + * gcc_release (build_sources): Fix dates generated + for ChangeLogs. + + * gcc_release: Add support for modifying ChangeLogs and + updating versions. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/contrib/gcc_release gcc-3.0.1/contrib/gcc_release *** gcc-3.0/contrib/gcc_release Thu Jun 14 13:26:05 2001 --- gcc-3.0.1/contrib/gcc_release Mon Aug 13 22:36:42 2001 *************** build_sources() { *** 104,112 **** || error "Could not create \`${WORKING_DIRECTORY}'" changedir "${WORKING_DIRECTORY}" if [ -n "${TAG}" ]; then inform "Tagging release sources" ! ${CVS} -z 9 rtag -r ${BRANCH} ${TAG} gcc || \ error "Could not tag release sources" BRANCH=$TAG fi --- 104,161 ---- || error "Could not create \`${WORKING_DIRECTORY}'" changedir "${WORKING_DIRECTORY}" + # If this is a final release, make sure that the ChangeLogs + # and version strings are updated. + if [ ${FINAL} -ne 0 ]; then + inform "Updating ChangeLogs and version files" + + ${CVS} co -d "`basename ${SOURCE_DIRECTORY}`" \ + -r ${BRANCH} gcc || \ + error "Could not check out release sources" + for x in `find ${SOURCE_DIRECTORY} -name ChangeLog`; do + cat - ${x} > ${x}.new < ${y}.new && \ + mv ${y}.new ${y} && \ + ${CVS} ci -m 'Update version' ${y}) || \ + error "Could not update ${x}" + done + for x in gcc/f/version.c libf2c/libF77/Version.c \ + libf2c/libI77/Version.c libf2c/libU77/Version.c; do + y=`basename ${x}` + (changedir `dirname ${SOURCE_DIRECTORY}/${x}` && \ + sed -e 's/experimental\|prerelease/release/g' < ${y} > ${y}.new && \ + mv ${y}.new ${y} && \ + ${CVS} ci -m 'Update version' ${y}) || \ + error "Could not update ${x}" + done + + # Make sure we tag the sources for a final release. + TAG="gcc_`echo ${RELEASE} | tr . _`_release" + + rm -rf ${SOURCE_DIRECTORY} + fi + + # Tag the sources. if [ -n "${TAG}" ]; then inform "Tagging release sources" ! ${CVS} rtag -r ${BRANCH} ${TAG} gcc || \ error "Could not tag release sources" BRANCH=$TAG fi *************** build_sources() { *** 114,120 **** # Export the current sources. inform "Retrieving release sources" ${CVS} \ ! -z 9 export -d "`basename ${SOURCE_DIRECTORY}`" \ -r ${BRANCH} gcc || \ error "Could not retrieve release sources" --- 163,169 ---- # Export the current sources. inform "Retrieving release sources" ${CVS} \ ! export -d "`basename ${SOURCE_DIRECTORY}`" \ -r ${BRANCH} gcc || \ error "Could not retrieve release sources" *************** build_sources() { *** 137,143 **** for file in *.html; do newfile=`echo $file | sed -e 's/.html//' | tr "[:lower:]" "[:upper:]"` (${ENV} TERM=vt100 lynx -dump $file \ ! | sed -e 's#file://localhost.*\(/[^/]*\)#http://gcc.gnu.org\1#g' \ > $newfile) || \ error "Could not regenerate documentation" done --- 186,192 ---- for file in *.html; do newfile=`echo $file | sed -e 's/.html//' | tr "[:lower:]" "[:upper:]"` (${ENV} TERM=vt100 lynx -dump $file \ ! | sed -e "s#file://localhost`/bin/pwd`\(.*\)#http://gcc.gnu.org\1#g" \ > $newfile) || \ error "Could not regenerate documentation" done *************** if [ -z "${RELEASE_MAJOR}" ] || [ -z "${ *** 423,432 **** error "Release number \`${RELEASE}' is invalid" fi - if [ -n "${RELEASE_REVISION}" ]; then - error "Revision releases are unsupported" - fi - # Compute the full name of the release. if [ -z "${RELEASE_REVISION}" ]; then RELEASE="${RELEASE_MAJOR}.${RELEASE_MINOR}" --- 472,477 ---- *************** else *** 435,441 **** fi # Compute the name of the branch, which is based solely on the major ! # release number. BRANCH="gcc-${RELEASE_MAJOR}_${RELEASE_MINOR}-branch" # If this is not a final release, set various parameters acordingly. --- 480,486 ---- fi # Compute the name of the branch, which is based solely on the major ! # and minor release numbers. BRANCH="gcc-${RELEASE_MAJOR}_${RELEASE_MINOR}-branch" # If this is not a final release, set various parameters acordingly. *************** if [ ${FINAL} -ne 1 ]; then *** 443,449 **** RELEASE="${RELEASE}-${DATE}" FTP_PATH="${FTP_PATH}/snapshots" else ! FTP_PATH="${FTP_PATH}/releases" fi # Compute the name of the WORKING_DIRECTORY and the SOURCE_DIRECTORY. --- 488,494 ---- RELEASE="${RELEASE}-${DATE}" FTP_PATH="${FTP_PATH}/snapshots" else ! FTP_PATH="${FTP_PATH}/releases/gcc-${RELEASE}" fi # Compute the name of the WORKING_DIRECTORY and the SOURCE_DIRECTORY. diff -Nrc3pad gcc-3.0/contrib/gcc_update gcc-3.0.1/contrib/gcc_update *** gcc-3.0/contrib/gcc_update Thu Jun 14 13:53:19 2001 --- gcc-3.0.1/contrib/gcc_update Sat Jul 28 23:46:24 2001 *************** if [ $? -ne 0 ]; then *** 214,217 **** --- 214,221 ---- exit 1 fi + { + date + TZ=UTC date + } > LAST_UPDATED touch_files_reexec diff -Nrc3pad gcc-3.0/contrib/test_summary gcc-3.0.1/contrib/test_summary *** gcc-3.0/contrib/test_summary Mon May 28 08:52:20 2001 --- gcc-3.0.1/contrib/test_summary Sat Jul 28 23:46:24 2001 *************** BEGIN { *** 95,100 **** --- 95,106 ---- '${prepend_logs+" system(\"cat $prepend_logs\"); "}' } $1 ~ /\/configure$/ { + srcdir = $1; + gsub(/\/configure$/, "", srcdir); + printf "LAST_UPDATED: "; + system("tail -1 " srcdir "/LAST_UPDATED"); + print ""; + $1 = "configure flags:"; configflags = $0; gsub(/--with-gcc-version-trigger=[^ ]* /, "", configflags); gsub(/ --norecursion/, "", configflags) diff -Nrc3pad gcc-3.0/contrib/texi2pod.pl gcc-3.0.1/contrib/texi2pod.pl *** gcc-3.0/contrib/texi2pod.pl Thu May 3 12:46:27 2001 --- gcc-3.0.1/contrib/texi2pod.pl Mon Jul 2 17:50:41 2001 *************** sub postprocess *** 279,287 **** s/\@w\{([^\}]*)\}/S<$1>/g; s/\@(?:dmn|math)\{([^\}]*)\}/$1/g; - # Handle @r inside bold. - 1 while s/B<((?:[^<>]|I<[^<>]*>)*)R<([^>]*)>/B<$1>${2}B blah> into B I B to ! # match Texinfo semantics of @emph inside @samp. s/<//g; 1 while (s/B<([^<>]*)I<([^>]+)>/B<$1>I<$2>B]*)B<([^>]+)>/I<$1>B<$2>I//g; --- 300,310 ---- s/\@uref\{([^\},]*),([^\},]*),([^\},]*)\}/$3/g; # Turn B blah> into B I B to ! # match Texinfo semantics of @emph inside @samp. Also handle @r ! # inside bold. s/<//g; + 1 while s/B<((?:[^<>]|I<[^<>]*>)*)R<([^>]*)>/B<$1>${2}B]*)I<([^>]+)>/B<$1>I<$2>B]*)B<([^>]+)>/I<$1>B<$2>I//g; diff -Nrc3pad gcc-3.0/faq.html gcc-3.0.1/faq.html *** gcc-3.0/faq.html Sun Jun 17 12:50:01 2001 --- gcc-3.0.1/faq.html Sun Aug 19 17:45:09 2001 *************** page.

*** 36,42 ****
  • What is an open development model?
  • How do I report a bug?
  • How do I get a bug fixed or a feature added?
  • !
  • How can I get a development environment for GCC without using CVS?
  • Installation --- 36,42 ----
  • What is an open development model?
  • How do I report a bug?
  • How do I get a bug fixed or a feature added?
  • !
  • How can I get a development environment for GCC without using CVS?
  • Installation *************** page.

    *** 58,71 ****
  • How can I run the test suite with multiple options?
  • !
  • Bugs and Non-Bugs !
      !
    1. Why can't I initialize a static variable with stdin?
    2. !
    3. Why can't I use #if here?
    4. !
    5. Problems with floating point computations
    6. !
  • ! !
  • Older versions of GCC or EGCS
    1. Why is there no testsuite in GCC 2.95?
    2. Is there a stringstream / sstream for gcc 2.95.2?
    3. --- 58,64 ----
    4. How can I run the test suite with multiple options?
    !
  • Older versions of GCC or EGCS
    1. Why is there no testsuite in GCC 2.95?
    2. Is there a stringstream / sstream for gcc 2.95.2?
    3. *************** compiler and available in /usr/local/bin *** 261,301 **** to be the older gcc2 compiler and also available in /usr/local/bin.

      The easiest way to do this is to configure the new GCC with ! --prefix=/usr/local/gcc ! and the older gcc2 with --prefix=/usr/local/gcc2. Build and install both ! compilers. Then make a symlink from /usr/local/bin/gcc to ! /usr/local/gcc/bin/gcc and from /usr/local/bin/gcc2 to /usr/local/gcc2/bin/gcc. ! Create similar links for the "g++", "c++" and "g77" compiler drivers.

      An alternative to using symlinks is to configure with a ! --program-transform-name option. This option specifies a sed command to ! process installed program names with. Using it you can, for instance, ! have all the new GCC programs installed as "new-gcc" and the like. You ! will still have to specify different --prefix options for new GCC and ! old GCC, because it is only the executable program names that are ! transformed. The difference is that you (as administrator) do not have ! to set up symlinks, but must specify additional directories in your (as ! a user) PATH. A complication with --program-transform-name is that the sed command invariably contains characters significant to the shell, and these have to be escaped correctly, also it is not possible to use "^" or "$" in the command. Here is the option to prefix "new-" to the ! new GCC installed programs ! "--program-transform-name='s,\\\\(.*\\\\),new-\\\\1,'". With the above ! --prefix option, that will install the new GCC programs into ! /usr/local/gcc/bin with names prefixed by "new-". You can use ! --program-transform-name if you have multiple versions of GCC, and ! wish to be sure about which version you are invoking.

      !

      If you use --prefix, GCC may have difficulty locating a GNU assembler or linker on your system, GCC can not find GNU as/GNU ld explains how to deal with this.

      !

      Another option that may be easier is to use the --program-prefix= or ! --program-suffix= options to configure. So if you're installing GCC ! 2.95.2 and don't want to disturb the current version of GCC in ! /usr/local/bin/, you could do 'configure --program-suffix=-2.95.2 ! '. This should result in GCC being installed ! as /usr/local/bin/gcc-2.95.2 instead of /usr/local/bin/gcc.


      Dynamic linker is unable to find GCC libraries

      --- 254,305 ---- to be the older gcc2 compiler and also available in /usr/local/bin.

      The easiest way to do this is to configure the new GCC with ! --prefix=/usr/local/gcc and the older gcc2 with ! --prefix=/usr/local/gcc2. Build and install both ! compilers. Then make a symlink from /usr/local/bin/gcc ! to /usr/local/gcc/bin/gcc and from ! /usr/local/bin/gcc2 to ! /usr/local/gcc2/bin/gcc. Create similar links for the ! "g++", "c++" and "g77" compiler drivers.

      An alternative to using symlinks is to configure with a ! --program-transform-name option. This option specifies a ! sed command to process installed program names with. Using it you can, ! for instance, have all the new GCC programs installed as "new-gcc" and ! the like. You will still have to specify different ! --prefix options for new GCC and old GCC, because it is ! only the executable program names that are transformed. The difference ! is that you (as administrator) do not have to set up symlinks, but ! must specify additional directories in your (as a user) PATH. A ! complication with --program-transform-name is that the sed command invariably contains characters significant to the shell, and these have to be escaped correctly, also it is not possible to use "^" or "$" in the command. Here is the option to prefix "new-" to the ! new GCC installed programs: !

      ! --program-transform-name='s,\\\\(.*\\\\),new-\\\\1,' !
      ! With the above --prefix option, that will install the new ! GCC programs into /usr/local/gcc/bin with names prefixed ! by "new-". You can use --program-transform-name if you ! have multiple versions of GCC, and wish to be sure about which version ! you are invoking.

      !

      If you use --prefix, GCC may have difficulty locating a GNU assembler or linker on your system, GCC can not find GNU as/GNU ld explains how to deal with this.

      !

      Another option that may be easier is to use the ! --program-prefix= or --program-suffix= ! options to configure. So if you're installing GCC 2.95.2 and don't ! want to disturb the current version of GCC in ! /usr/local/bin/, you could do !

      ! configure --program-suffix=-2.95.2 <other configure options> !
      ! This should result in GCC being installed as ! /usr/local/bin/gcc-2.95.2 instead of ! /usr/local/bin/gcc.


      Dynamic linker is unable to find GCC libraries

      *************** as /usr/local/bin/gcc-2.95.2 instead of *** 303,309 ****

      This problem manifests itself by programs not finding shared libraries they depend on when the programs are started. Note this problem often manifests itself with failures in the libio/libstdc++ ! tests after configuring with --enable-shared and building GCC.

      GCC does not specify a runpath so that the dynamic linker can find dynamic libraries at runtime.

      --- 307,313 ----

      This problem manifests itself by programs not finding shared libraries they depend on when the programs are started. Note this problem often manifests itself with failures in the libio/libstdc++ ! tests after configuring with --enable-shared and building GCC.

      GCC does not specify a runpath so that the dynamic linker can find dynamic libraries at runtime.

      *************** NFS server goes down.

      *** 317,325 **** programs are going to hang no matter what you do. The problem is programs that do not require the directories.

      !

      SunOS effectively always passed a -R option for every -L option; ! this was a bad idea, and so it was removed for Solaris. We should ! not recreate it.

      However, if you feel you really need such an option to be passed automatically to the linker, you may add it to the GCC specs file. --- 321,329 ---- programs are going to hang no matter what you do. The problem is programs that do not require the directories.

      !

      SunOS effectively always passed a -R option for every ! -L option; this was a bad idea, and so it was removed for ! Solaris. We should not recreate it.

      However, if you feel you really need such an option to be passed automatically to the linker, you may add it to the GCC specs file. *************** with -fPIC, once with

      This technique is particularly useful on multilibbed targets.

      - -
      - -

      Bugs and Non-Bugs

      - -

      Unfortunately, improvements in tools that are widely used are - sooner or later bound to break something. Sometimes, the - code that breaks was wrong, and then that code should be fixed, even - if it works for earlier versions of GCC or other compilers. The - following problems with some releases of widely used packages have - been identified:

      - -

      There is a separate list of well-known bugs - describing known deficiencies. Naturally we'd like that list to be of - zero length.

      - -

      To report a bug, see How to report bugs.

      - -
      -

      Why can't I initialize a static variable with stdin?

      - -

      This has nothing to do with GCC, but people ask us about it a - lot. Code like this:

      - -
      -   #include <stdio.h>
      - 
      -   FILE *yyin = stdin;
      - 
      - -

      will not compile with GNU libc (Linux libc6), because - stdin is not a constant. This was done deliberately, in - order for there to be no limit on the number of open FILE objects. It - is surprising for people used to traditional Unix C libraries, but it - is permitted by the C standard.

      - -

      This construct commonly occurs in code generated by old versions of - lex or yacc. We suggest you try regenerating the parser with a - current version of flex or bison, respectively. In your own code, the - appropriate fix is to move the initialization to the beginning of - main.

      - -

      There is a common misconception that the GCC developers are - responsible for GNU libc. These are in fact two entirely separate - projects. The appropriate place to ask questions relating to GNU libc - is libc-alpha@sources.redhat.com. -

      - -
      -

      Why can't I use #if here?

      - -

      Let me guess... you wrote code that looks something like this:

      -
      -   memcpy(dest, src,
      - #ifdef PLATFORM1
      - 	 12
      - #else
      - 	 24
      - #endif
      - 	);
      - 
      -

      and you got a whole pile of error messages:

      -
      - test.c:11: warning: preprocessing directive not recognized within macro arg
      - test.c:11: warning: preprocessing directive not recognized within macro arg
      - test.c:11: warning: preprocessing directive not recognized within macro arg
      - test.c: In function `foo':
      - test.c:6: undefined or invalid # directive
      - test.c:8: undefined or invalid # directive
      - test.c:9: parse error before `24'
      - test.c:10: undefined or invalid # directive
      - test.c:11: parse error before `#'
      - 
      - -

      The problem, simply put, is that GCC's preprocessor does not allow - you to put #ifdef (or any other directive) inside the arguments of a - macro. Your C library's string.h happens to define - memcpy as a macro - this is perfectly legitimate. The code - therefore will not compile.

      - -

      We have two good reasons for not allowing directives inside - macro arguments. First, it is not portable. It is "undefined - behavior" according to the C standard; that means different - compilers will do different things with it. Some will give you - errors. Some will dump core. Some will silently mangle your code - - you could get the equivalent of

      -
      - 	memcpy(dest, src, 1224);
      - 
      -

      from the above example. A very few might do what you expected it - to. We therefore feel it is most useful for GCC to reject this - construct immediately so that it is found and fixed.

      - -

      Second, it is extraordinarily difficult to implement the - preprocessor such that it does what you would expect for every - possible directive found inside a macro argument. The best example is - perhaps

      -
      - #define foo(arg) ... arg ...
      - foo(blah
      - #undef foo
      - blah)
      - 
      -

      which is impossible to implement in portable C without - leaking memory. Allowing only a subset of directives would be - confusing.

      - -

      It is always possible to rewrite code which uses conditionals - inside macros so that it doesn't. You could write the above - example

      -
      - #ifdef PLATFORM1
      -    memcpy(dest, src, 12);
      - #else
      -    memcpy(dest, src, 24);
      - #endif
      - 
      -

      This is a bit more typing, but I personally think it's better style - in addition to being more portable. - -

      In recent versions of glibc, printf is among the - functions which are implemented as macros. - -

      Problems with floating point computations

      - -

      In a number of cases, GCC appears to perform floating point - computations incorrectly. For example, the program

      -
      - #include <iostream>
      - 
      - int main() {
      - 
      -  double min = 0.0;
      -  double max = 0.5;
      -  double width = 0.01;
      -  std::cout <<  (int)(((max - min) / width) - 1) << std::endl;
      - 
      - }
      - 
      -

      might print 50 on some systems and optimization levels, and 51 on - others.

      - -

      The is the result of rounding: The computer cannot - represent all real numbers exactly, so it has to use - approximations. When computing with approximation, the computer needs - to round to the nearest representable number.

      - -

      This is not a bug in the compiler, but an inherent limitation of - the float and double types. Please study - this paper - for more information.


      --- 453,458 ---- diff -Nrc3pad gcc-3.0/fastjar/ChangeLog gcc-3.0.1/fastjar/ChangeLog *** gcc-3.0/fastjar/ChangeLog Sun Jun 17 12:39:25 2001 --- gcc-3.0.1/fastjar/ChangeLog Sun Aug 19 14:08:05 2001 *************** *** 1,3 **** --- 1,11 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/gcc/ChangeLog gcc-3.0.1/gcc/ChangeLog *** gcc-3.0/gcc/ChangeLog Sun Jun 17 12:39:41 2001 --- gcc-3.0.1/gcc/ChangeLog Sun Aug 19 14:08:08 2001 *************** *** 1,6 **** 20010617 Release Manager ! * GCC 3.0 Released. 2001-06-15 Andreas Jaeger --- 1,984 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-17 Janis Johnson + + * doc/install.texi (Install GCC): Add links to build status pages. + (Specific): Ditto. + (Final install): Ditto; request updates for specific info + + 2001-08-17 Gerald Pfeifer + + * doc/invoke.texi (Optimize Options): The default for + -finline-limit is 600. + + 2001-08-16 Joel Sherrill + + * config/rs6000/rtems.h: Set STARTFILE_DEFAULT_SPEC and + ENDFILE_DEFAULT_SPEC to correctly include ecrti and ecrtn. + * config/arm/rtems-elf.h: Remove bad -Darm and -Darm_elf. + + 2001-08-14 Ulrich Weigand + + * config/s390/linux64.h (CPP_PREDEFINES): Define __s390__ + also on 64-bit s390x targets. + + 2001-08-14 Gerald Pfeifer + + * doc/install.texi (Specific, avr): Fix markup. + (Specific, c4x): Ditto. + + 2001-08-13 Andreas Jaeger + + * config.gcc: Use t-slibgcc-elf to build shared libgcc_s on + s390*linux. + + 2001-08-13 Roman Zippel + Richard Henderson + + * regmove.c (regmove_optimize): Avoid setting a register twice in + a parallel set. + + 2001-08-12 David Edelsohn + + Revert: + 2001-08-02 Rainer Orth + * gcc.c (set_collect_gcc_options): New function, split out from + main. + Ignore elided switches. + (do_spec_1): Invoke before executing command. + (set_input): Export. + Move declaration ... + * gcc.h (set_input): ... here. + * config/alpha/osf.h (ASM_FINAL_SPEC): Use %U.s to refer to input + file. + + 2001-08-11 Gerald Pfeifer + + * doc/install.texi (Specific, c4x): Fix cross-reference to the + main manual to work both for info and HTML versions. + + 2001-08-10 Ulrich Weigand + + * glimits.h (__LONG_MAX__): Add s390x as 64-bit architecture. + + * config/s390/s390.c (legitimize_pic_address): Don't generate + unnecessary moves (to avoid confusing loop optimization). + (check_and_change_labels): Replace jump_long by indirect_jump. + (s390_final_chunkify): Don't start a new literal pool on section + switch in 64-bit code. + (s390_va_start, s390_va_arg): Fixed incorrect sizes for 64-bit. + + * config/s390/s390.h (HARD_REGNO_MODE_OK, RETURN_IN_MEMORY): + Support complex integer modes correctly. + (reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): Remove CC_REGS. + (EH_RETURN_HANDLER_RTX): Fixed incorrect offset for 64-bit. + (CONST_COSTS): Fixed incorrect costs. + + * config/s390/s390.md (divsi3, modsi3): Clobber low word of + divmoddisi3 before shifting (to avoid confusing flow analysis). + (cjump_long, icjump_long, jump_long, indirect_jump, casesi_jump): + Never use "address_operand" without "p" or "memory_operand" + without mode. + (builtin_setjmp_setup, builtin_setjmp_receiver, builtin_longjmp): + Fixed broken setjmp/longjmp handling. + (do_builtin_setjmp_setup): Removed. + + 2001-08-10 John David Anglin + + * doc/install.texi (vax-dec-ultrix): Change `Vax' to VAX. + + 2001-08-10 Gerald Pfeifer + + * doc/install.texi (Specific, avr): Fix cross-reference to the + main manual to work both for info and HTML versions. + + 2001-08-09 Jakub Jelinek + + * config/ia64/fde-glibc.c: Require glibc 2.2.4+ headers. + (find_fde_for_dso): Remove. + (_Unwind_IteratePhdrCallback): New. + (_Unwind_FindTableEntry): Use dl_iterate_phdr. + * config/ia64/crtbegin.asm (__ia64_app_header): Remove. + + 2001-08-08 Kelley Cook + + * Makefile.in: Move many of the *_H definitions eariler in the file, + so that rules in t-* files that use them for dependencies will work + in a parallel build. + * config/i386/t-cygwin (winnt.o): Depend on $(CONFIG_H). + + 2001-08-08 Mark Mitchell + + * except.c (remove_fixup_regions): Fix typo. + + 2001-08-07 Daniel Jacobowitz + + * config.gcc: Quote target_cpu_default2 correctly for + powerpc*-*-* targets. + + 2001-08-07 David Edelsohn + + * doc/install.texi: Document fine-grained multilib configuration. + + 2001-08-06 Richard Henderson + + * config/i386/i386.h (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): New. + * function.c (expand_main_function): Implement it. + * doc/tm.texi: Document it. + + * i386-protos.h, i386.c, i386.h, osf1elf.h, osfrose.h: Revert 08-01 + ix86_output_main_function_alignment_hack patch. + + 2001-08-06 Richard Henderson + + 2001-07-23 Richard Henderson + * config/i386/i386.c (ix86_expand_setcc): Don't use method 0 + before CSE. + * config/i386/i386.md: New setcc+movzbl peephole2. + + 2001-07-22 Richard Henderson + * fold-const.c (fold): Test vs FLOAT_TYPE_P instead of + INTEGRAL_TYPE_P when folding comparisons with operand_equal_p + arguments. + + 2001-08-06 John David Anglin + + * varasm.c (output_constant_def_contents): Use for the length of a + string constant either its TREE_STRING_LENGTH or its int_size_in_bytes + depending on which is larger. + + 2001-08-04 Hans-Peter Nilsson + + * doc/extend.texi (Other Builtins): Fix typo in last change. + + 2001-08-04 Stephane Carrez + + * config/m68hc11/m68hc11.md ("cmphi_1", "cmpqi_1"): Allow memory + and soft register for operand 0. + ("cmphi_z_used", "cmpqi_z_used"): Allow memory for operand 0. + + 2001-08-04 Stephane Carrez + + * config/m68hc11/m68hc11.md ("bitcmpqi"): Allow memory and soft + register for operand 0. + ("bitcmpqi_z_used"): Allow memory for operand 0. + (split "bitcmpqi"): New split to handle address reg as operand 1. + + 2001-08-03 Zack Weinberg + + * builtins.c (fold_builtin_constant_p): Return integer_zero_node + for complex expressions when cfun == 0. + * doc/extend.texi: Document that __builtin_constant_p can be + used in data initializers as well as functions. + + 2001-08-03 Richard Henderson + + * except.c (collect_one_action_chain): Add an explicit cleanup + action if regions surrounding a catch were encoded entirely + within the call-site entry. + + 2001-08-03 Stephane Carrez + + * config/m68hc11/t-m68hc11-gas (T_CPPFLAGS): Add _ctor and _dtor. + * config/m68hc11/larith.asm (_exit): Split in several sub-sections + merged by linker script to get a final _exit(). + (__do_global_dtors): New for destructor handling in specific exit + section. + (__do_global_ctors): New for constructors in specific install section. + (__map_data_section): Map data sections before running constructors. + * config/m68hc11/m68hc11.h (INT_ASM_OP): Define to use .word. + (CTORS_SECTION_ASM_OP): Define to put in readonly section. + (DTORS_SECTION_ASM_OP): Likewise. + (CTORS_SECTION_FUNCTION): Define to force a reference to + __do_global_ctors. + (DTORS_SECTION_FUNCTION): Likewise for __do_global_dtors. + + 2001-08-03 Ulrich Weigand + + * config.gcc (s390-*-linux*, s390x-*-linux*): Added. + * doc/install.texi: Add s390 and s390x targets. + * doc/invoke.texi: Add s390 and s390x target options. + * doc/md.texi: Add s390 and s390x extra constraints. + * config/s390/s390.c: New. Subroutines for code generation. + * config/s390/s390.h: New. Definitions for S/390. + * config/s390/s390-protos.h: New. Prototypes. + * config/s390/linux.h: New. Definitions for Linux for S/390. + * config/s390/linux64.h: New. Definitions for Linux for zSeries. + * config/s390/t-linux: New. Makefile fragment. + * config/s390/s390.md: New. Machine description for S/390 and zSeries. + * config/s390/xm-390.h: New. Host definitions for S/390. + * config/s390/xm-390x.h: New. Host definitions for zSeries. + * config/s390/fixdfdi.h: New. Fix L_fix*di. + + 2001-08-03 Neil Booth + + * cpplex.c (parse_string): Warn once per string. + * cpplib.c (_cpp_do_file_change): Call hook correctly. + + 2001-08-03 Rainer Orth + + * doc/install.texi (Configuration): Fix markup. + (Specific, i?86-*-udk): Likewise. + (Specific, alpha*-dec-osf*): Warn against --with-gnu-as, + --with-gnu-ld. + Document --enable-threads and --enable-libgcj status. + (Specific, mips-sgi-irix*): Canonicalize triples. + (Specific, mips-sgi-irix5): Warn about problems with this config. + Mention required GNU as patch. + Native assembler problems are fixed. + (Specific, mips-sgi-irix6): Update O32 ABI support status. + Document --enable-threads and --enable-libgcj status. + + 2001-08-02 David Edelsohn + + * doc/install.texi (Install GCC: Binaries): Update Bull info. + + 2001-08-02 Nathan Sidwell + + Remove -fhonor-std. + * doc/invoke.texi (C++ Dialect Options): Remove -fno-honor-std. + + 2001-08-02 Rainer Orth + + * gcc.c (set_collect_gcc_options): New function, split out from + main. + Ignore elided switches. + (do_spec_1): Invoke before executing command. + (set_input): Export. + Move declaration ... + * gcc.h (set_input): ... here. + * config/alpha/osf.h (ASM_FINAL_SPEC): Use %U.s to refer to input + file. + + 2001-08-01 Hartmut Penner + + * varasm.c (decode_rtx_const): Allow unspec (symbol_ref) in + constant pool to be identical by string address and index. + + 2001-08-01 Gerald Pfeifer + + * params.def (PARAM_MAX_INLINE_INSNS): Change default to 600. + Correct comment that had been missed in the previous change. + + 2001-08-01 Robert Lipe + + * dwarfout.c: Remove reference to README.DWARF. + + 2001-08-01 Richard Henderson + + * rtl.c (read_name): Consider \r whitespace. + + 2001-08-01 Mark Kettenis + + * unwind-pe.h (base_of_encoded_value, read_encoded_value): Define + only if NO_BASE_OF_ENCODED_VALUE isn't defined. + * unwind-dw2-fde.c (NO_BASE_OF_ENCODED_VALUE): Define before + including "unwind-pe.h". + + Wed Aug 1 20:15:33 CEST 2001 Jan Hubicka + + * i386-protos.h (ix86_output_main_function_alignment_hack): Declare. + * i386.c (ix86_output_main_function_alignment_hack): New global + function. + * i386.h (FUNCTION_PROLOGUE): New macro. + * osf1elf.h (FUNCTION_PROLOGUE): Call new function. + * osfrose.h (FUNCTION_PROLOGUE): Likewise. + + 2001-08-01 H.J. Lu + + * config/mips/linux.h (ASM_OUTPUT_IDENT): Defined. + + 2001-08-01 H.J. Lu + + * gcc/config/mips/linux.h (ASM_OUTPUT_SOURCE_LINE): Defined. + + 2001-07-31 Jeff Sturm + + * except.c (duplicate_eh_regions): Test n_array[i] for NULL. + + 2001-07-30 Roman Zippel + + * config/m68k/m68k.md: Replace all general_operand with + nonimmediate_operand for all destinations. + * config/m68k/m68k.c: Include expr.h and reload.h. + (not_sp_operand): Check nonimmediate_operand. + + 2001-07-30 Roman Zippel + + * config/m68k/m68k.h (TARGET_SWITCHES/TARGET_OPTIONS): + Add missing doc strings. + * config/m68k/linux-aout.h (SUBTARGET_SWITCHES): Likewise. + * config/m68k/linux.h (SUBTARGET_SWITCHES): Likewise. + + 2001-07-30 H.J. Lu + + * config/mips/linux.h (CPLUSPLUS_CPP_SPEC): Add -D_GNU_SOURCE. + (ASM_DECLARE_FUNCTION_NAME): Defined. + (ASM_DECLARE_FUNCTION_SIZE): Likewise. + (FUNCTION_NAME_ALREADY_DECLARED): Likewise. + + 2001-07-30 Janis Johnson + + * profile.c (branch_prob): Fix .bbg info for computed gotos + and C++ EH code. + + 2001-07-28 Golubev I. N. + + * config/i386/sco5.h (DWARF2_DEBUGGING_INFO): Define. + + 2001-07-27 Gerald Pfeifer + + * doc/install.texi (Configuration): Properly link the host + specific instructions also when generating HTML. + + 2001-07-26 Rainer Orth + + * glimits.h (_MACH_MACHLIMITS_H_): Delete. + + Thu Jul 26 22:01:30 2001 Denis Chertykov + + * cse.c (cse_process_notes): Replace any registers if the address + remains valid. + + 2001-07-26 Rainer Orth + + * Makefile.in (LIBICONV): Define. + + 2001-07-26 Andrew MacLeod + + * params.def (PARAM_MAX_PENDING_LIST_LENGTH): Add parameter to + limit length of dependancy flush list. + * params.h (MAX_PENDING_LIST_LENGTH): Define. + * sched-int.h (struct deps): Add pending_flush_length field. + * sched-deps.c (flush_pending_lists): Last_pending_memory_flush now + has 1 element in it. + (sched_analyze_1): Use MAX_PENDING_LIST_LENGTH. + (sched_analyze): After a jump, if the pending memory flush list is too + large, flush the pending lists. + (init_deps): Initialize pending_flush_length to 0. + * doc/invoke.texi (max_pending_list_length): Document parameter. + + 2001-07-25 Richard Henderson + + * varasm.c (assemble_variable): Create DECL_RTL before setting + TREE_ASM_WRITTEN. + + 2001-07-25 Andrew MacLeod + Janis Johnson + + * stmt.c (expand_goto): A nonlocal goto can be a call too. + * builtins.c (expand_builtin_longjmp): Reverse label and static chain + pointer parameters to match documented usage of nonlocal_goto. + * config/ia64/ia64.md (nonlocal_goto): Revert label and static chain + parameters to their correct order. + * config/sparc/sparc.md (nonlocal_goto): Revert label and static chain + parameters to their correct order. + + 2001-07-25 Andrew MacLeod + + * config/ia64/ia64.h (STRIP_NAME_ENCODING): Strip out '*' as well. + + 2001-07-24 Joel Sherrill + + * config/i960/i960.h (CPP_SPEC): Define _SOFT_FLOAT for -msoft-float. + + 2001-07-24 Joel Sherrill + + * config/sparc/rtems.h (CPP_PREDEFINES): Remove redundant + -Acpu and -Amachine.h. + * config/sparc/rtemself.h (CPP_PREDEFINES): Likewise. + Corrected header to say ELF not a.out. + * config/sparc/sparc.h (CPP_CPU_SPEC): Define _SOFT_FLOAT + when given -msoft-float. + + 2001-07-24 Joel Sherrill + + * config.gcc (arm*-*-rtems*): Include crtinit.o and crtfini.o as + extra multilib parts like arm-elf. + (i960-*-coff*, i960-*-rtems): Should not use collect2. + (m68020-*-elf*, m68k-*-elf*, m68k-*-rtems*): Include crtinit.o and + crtfini.o as extra multilib parts. + + 2001-07-24 Joel Sherrill + + * configure.in: Add rtems as a supported thread model. + * gthr-rtems.h: Add missing entry point __gthread_active_p. + * configure: Rebuilt. + + 2001-07-24 Rainer Orth + + * config/mips/irix6-libc-compat.c: New file. + * config/mips/t-iris6 (LIB2FUNCS_STATIC_EXTRA): Use it. + * doc/install.texi (Specific, mips*-sgi-irix6): Mention structure + passing workaround. + + 2001-07-23 Kazu Hirata + + * reload.c: Fix comment typos. + + 2001-07-23 Richard Henderson + + * config/i386/i386.c (ix86_expand_setcc): Don't use method 0 + before CSE. + * config/i386/i386.md: New setcc+movzbl peephole2. + + 2001-07-23 lars brinkhoff + + * tm.texi (TARGET_FLOAT_FORMAT): Document IBM_FLOAT_FORMAT + and C4X_FLOAT_FORMAT. + (BOOL_TYPE_SIZE): Document. + + 2001-07-22 Richard Henderson + + * fold-const.c (fold): Test vs FLOAT_TYPE_P instead of + INTEGRAL_TYPE_P when folding comparisons with operand_equal_p + arguments. + + 2001-07-22 Alexandre Oliva + + * config/i386/freebsd-aout.h (ASM_PREFERRED_EH_DATA_FORMAT): Use + the definition in defaults.h. + + 2001-07-22 Richard Henderson + + * regrename.c (regrename_optimize): Compute nregs for each + potential target register. + + 2001-07-20 Stephane Carrez + + * config/m68hc11/m68hc11.md ("andqi3"): Accept d as second operand. + ("iorqi3"): Likewise. + ("xorqi3"): Likewise. + ("*addhi3"): Fix constraint to avoid reloading in a soft register. + ("*subhi3_sp): Likewise. + ("*subhi3"): Likewise. + ("extendhisi2"): Accept D, X and Y as source operand to avoid + reload problems. + + 2001-07-20 Bruce Korb + + * fixinc/fixincl.c(test_for_changes): force unsigned char comparisons + because getc() and char* may disagree on signedness. + + 2001-07-20 Richard Henderson + + Wed May 9 10:40:25 2001 Alexandre Oliva + * regclass.c (scan_one_insn): Update REG_N_REFS when optimizing + handling of two-address insns. + + 2001-07-20 Stephane Carrez + + * config/m68hc11/m68hc11.md ("movdi", "movdi_internal"): Use an + expand to emit the pattern; put a REG_INC note for push/pop + instructions. + ("movdf", "movdf_internal"): Likewise. + ("movsi", "movsi_internal"): Likewise. + ("movsf", "movsf_internal"): Likewise. + ("movhi", "movqi"): Emit a REG_INC note for push/pop instructions. + + 2001-07-20 Stephane Carrez + + * config/m68hc11/m68hc11.c (m68hc11_gen_highpart): Don't use + gen_highpart. + + 2001-07-20 Daniel Berlin + + * params.def: Change default max inline insns to 100. + + 2001-06-20 Kelley Cook + + * doc/install.texi (sparc-sun-solaris*): Add in 4.x assembler bug + information. Move rest into ... + (*-*-solaris): ... here. Eliminate redundant information and + reword necessary packages section. Delete 4.x assembler bug info. + (sparc-sun-*): Merge into ... + (sparc-sun-sunos*): here. + + 2001-07-19 Mark Mitchell + + * reorg.c (fill_simple_delay_slots): If an instruction might throw + an exception that will be caught within this function, do not fill + its delay slot with any subsequent instruction. + + 2001-07-19 Mark Kettenis + Jakub Jelinek + + * unwind-dw2.c (_Unwind_FrameState): Add eh_ptr. + (extract_cie_info): Handle "eh" augmentation properly, + remember eh_ptr. + (struct frame_state, __frame_state_for): New. + + 2001-07-19 Rainer Orth + + * config/alpha/osf.h (ASM_OUTPUT_WEAK_ALIAS, ASM_WEAKEN_LABEL, + HANDLE_SYSV_PRAGMA): Define. + * mips-tfile.c (add_ext_symbol): Pass complete symbol ptr, inline + previous args. + (copy_object): Caller changed. + + 2001-07-19 Andreas Schwab + + * configure.in (assembler dwarf2 debug_line support): Define nop + insn for m68k. + * configure: Regenerated. + + 2001-07-18 Jeff Sturm + + * dwarf2out.c (dwarf2out_abstract_function): Don't emit + in-class declaration at -g1. Fixes c++/2814. + + 2001-07-18 Rainer Orth + + * defaults.h (ASM_OUTPUT_WEAK_ALIAS): Check for ASM_WEAKEN_LABEL. + + 2001-07-18 Andreas Schwab + + * configure.in (assembler eh_frame optimization): Handle big + endian. + * configure: Regenerated. + + 2001-07-18 Tom Tromey + + For PR java/2812: + * configure: Rebuilt. + * configure.in: Don't check for iconv.h or iconv(); use AM_ICONV + instead. + * aclocal.m4 (AM_ICONV): New macro from Bruno Haible. + + Wed Jul 18 12:05:29 2001 Nicola Pero + + * gthr-posix.h (__gthread_objc_mutex_trylock): Fixed return value + on error. We can't blindly return the result of + pthread_mutex_trylock because it returns a positive number on + error, while we must return -1 on error. + (__gthread_objc_mutex_lock, __gthread_objc_mutex_unlock): Similar + fixes. + Reported by Stephen Brandon . + + 2001-07-17 H.J. Lu + Rainer Orth + + * c-pragma.h (HANDLE_PRAGMA_WEAK): Define iff ASM_WEAKEN_LABEL and + ASM_OUTPUT_WEAK_ALIAS are defined. + * defaults.h (ASM_OUTPUT_WEAK_ALIAS): Define if possible. + * config/mips/iris6.h (ASM_OUTPUT_WEAK_ALIAS, ASM_WEAKEN_LABEL): + Moved ... + * config/mips/iris5.h: ... here. + (HANDLE_SYSV_PRAGMA): Defined as 1. + * varasm.c (weak_finish): Use ASM_OUTPUT_WEAK_ALIAS. + * doc/tm.texi (ASM_OUTPUT_WEAK_ALIAS): Support the undefined weak + symbol. + + 2001-07-15 Richard Henderson + + * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use CCmode + instead of COMPARE for the EQUIV expression. + + 2001-07-14 David Edelsohn + + * rs6000.c (reg_or_{add,sub}_cint64_operand): New predicates. + (add_operand): Compare CONST_INT with fewer function calls. + (print_operand, case 'p'): Ensure positive operand. + * rs6000.h (CONST_OK_FOR_LETTER_P, case 'N'): Ensure positive value. + (PREDICATE_CODES): Add new predicates. + * rs6000.md (addsi3): Split 32-bit constants more correctly. + (divsi3, modsi3): Ensure positive power-of-2. + (adddi3): Use new predicate. Split 32-bit constants more + correctly. Re-arrange splitter to handle any constant. + (subdi3): Use new predicate. + (divdi3, moddi3): Ensure positive power-of-2. + + 2001-07-13 Kazu Hirata + + * jump.c (reversed_comparison_code_parts): Fix comment typos. + + 2001-07-13 Marc Espie + + * config.gcc (*-*-openbsd*): Add fragment to compile libgcc + correctly for shared configurations. + * config/t-libgcc-pic: New. + * config/{i386,m68k,sparc}/t-openbsd: New. + * config/openbsd.h: Include cpu_spec in cpp_spec where needed. + Support -shared. Support debugging libraries with -g. + * config/i386/openbsd.h: Correct ASM_COMMENT_START. Ensure dwarf2 + frame information does not emit pointer diffs. + * config/sparc/openbsd.h: Ensure dwarf2 frame information does not + emit pointer diffs. + + 2001-07-13 David Edelsohn + + * combine.c (try_combine): Ensure const_int pow2 is positive. + + 2001-07-11 Kazu Hirata + + * recog.c (validate_change): Fix a comment typo. + + 2001-07-11 Mark Mitchell + + * stmt.c (parse_output_constraint): New function, split out + from ... + (expand_asm_operands): ... here. Use parse_output_constraint. + * tree.h (parse_output_constraint): Declare it. + + 2001-07-10 Kazu Hirata + + * calls.c (emit_library_call_value_1): Fix a comment typo. + * dwarf2out.c (mem_loc_descriptor): Likewise. + + 2001-07-09 Kazu Hirata + + * config/h8300/t-h8300 (LIB1ASMFUNCS): Add _floatdisf and _fixsfdi. + * config/mn10200/t-mn10200 (LIB1ASMFUNCS): Likewise. + + 2001-07-09 Joseph S. Myers + + * doc/c-tree.texi: Document representation of attributes. + + 2001-07-08 Joseph S. Myers + + * doc/tm.texi: Fix typo. + + 2001-07-07 Stephane Carrez + + * config/m68hc11/m68hc11.c (m68hc11_initial_elimination_offset): + Take into account m68hc11_sp_correction for FRAME_POINTER_REGNUM + elimination. + * config/m68hc11/m68hc11.h (STARTING_FRAME_OFFSET): Use 0. + + 2001-07-06 Richard Henderson + + * except.h (MUST_USE_SJLJ_EXCEPTIONS): Examine the value of + DWARF2_UNWIND_INFO not just whether it is defined. + + 2001-07-06 DJ Delorie + + * doc/gcc.texi (Makefile): Rename to be a more general purpose + chapter about various build hints and history. Add section + talking about the various types of native and cross builds. + + 2001-07-05 David Edelsohn + + * doc/install.texi (Install GCC: Binaries): Fix typo. + + 2001-07-04 Stephane Carrez + + * config/m68hc11/m68hc11.md ("*ashlsi3"): Operand 1 can be a memory + reference using the stack pointer, adjust it since we push Y + temporarily. + ("*ashrsi3"): Likewise. + ("*lshrsi3"): Likewise. + + 2001-07-05 Stephane Carrez + + * config/m68hc11/m68hc11.h (RETURN_ADDR_RTX): Fix return address + when -fomit-frame-pointer is used. + + 2001-07-05 Brad Lucier + Gerald Pfeifer + + * doc/invoke.texi (Optimize Options): Document that -fgcse may + cause programs using computed gotos to run more slowly. + + 2001-07-04 Rainer Orth + + * doc/install.texi (Specific): Markup, spelling and typo fixes. + Fixed sorting. + Consistently require binutils 2.11.2, not prereleases. + (Specific, decstation-*): Canonicalize as mips-dec-*. + (Specific, i?86-*-sco3.2v5*): Remove make bootstrap requirement, + always necessary. + (Specific, m68k-altos): Removed reference to README.altos, deleted. + (Specific, mips-*): Reword MIPS C compiler requirements. + (Specific, powerpc*-*-*): New, mention --with-cpu once. + (Specific, sunv5): Removed, obsolete. + + 2001-07-04 Kazu Hirata + + * config/h8300/h8300.c (get_shift_alg): Remove an extra operand + from shll. + + 2001-07-04 Joseph S. Myers + + * doc/include: New directory. + * doc/fdl.texi: Move to doc/include/fdl.texi. + * doc/texinfo.tex: Move to doc/include/texinfo.tex. + * doc/include/funding.texi, doc/include/gpl.texi: New files. + * doc/gcc.texi: Use funding.texi and gpl.texi. + * Makefile.in ($(docdir)/cpp.info, $(docdir)/gcc.info, + $(docdir)/cppinternals.info, cpp.dvi. gcc.dvi. cppinternals.dvi): + Update dependencies and use -I $(docdir)/include. + + 2001-07-04 Gerald Pfeifer + + * doc/install.texi (sparc64-*-*): Remove garbage. + + 2001-07-04 Gerald Pfeifer + + * doc/install.texi (Specific): Update information for *-*-solaris*. + + 2001-07-03 Jan Hubicka + + * optabs.c (expand_twoval_binop): Avoid undefined behaviour. + + 2001-07-03 Rainer Orth + + * config/i386/sol2.h (ASM_PREFERRED_EH_DATA_FORMAT): Define. + Fixes PRs bootstrap/3067, bootstrap/3249, bootstrap/3275. + + 2001-07-03 Joseph S. Myers + + * doc/cppinternals.texi: Improve formatting and logical markup. + + 2001-07-03 Joseph S. Myers + + * doc/cppinternals.texi: Merge from mainline. + + * doc/extend.texi, doc/gcc.texi, doc/invoke.texi, doc/md.texi, + doc/rtl.texi, doc/tm.texi: Improve formatting. Improve + documentation of -std and -Wwrite-strings. + * doc/cpp.1, doc/gcc.1: Regenerate. + + 2001-07-02 Rainer Orth + + * doc/install.texi: Various spelling and markup fixes. + (Installing GCC): Component specific installation instructions are + gone. + Fix reference. + Warn about removing old install dir in the presence of shared libs. + (Configuration): Invoke with options target to match configure + --help. + Consistently refer to gas, gld pathnames. + Invert --enable-multilib documentation. + Remove references to old compiler versions. + + 2001-07-02 Rainer Orth + + * doc/install.texi (Specific, mips*-sgi-irix4): Split from IRIX 5 + section. + (Specific, mips*-sgi-irix5): Note IDO download. + Reworded MIPS C hints. + Use GNU as instead of GAS. + Markup fixes. + Removed SGI Freeware reference, IRIX 6 only. + (Specific, mips*-sgi-irix6): Removed ranlib caveats, obsolete. + Note N64 library requirement/workaround. + Update O32 hints. + Complete list of structure passing bug victims. + + 2001-07-02 Gerald Pfeifer + + * doc/install.texi: Remove CVS Id. + + 2001-07-01 Mark Mitchell + + * expr.c (expand_expr, case ARRAY_REF): Correct check for + side-effects in the value of an array element. + + 2001-06-29 Rainer Orth + + * objc/objc-act.c (handle_class_ref): Always place decl in + variable section. + (handle_impent): Always place decl in readonly data section. + Fixes PRs libobjc/917, libobjc/3237, bootstrap/3251. + + 2001-06-29 Alan Modra + + * recog.c (validate_replace_rtx_1): Exit early if nothing changed + in args of commutative of comparison operations. + + 2001-06-28 Rainer Orth + + * gthr-posix.h [LIBOBJC]: Add weak definitions of + sched_get_priority_max, sched_get_priority_min. + + Thu Jun 28 11:32:24 CEST 2001 Jan Hubicka + + * i386.c (x86_use_loop): Disable for K6 temporarily. + + 2001-06-27 Bruce Korb + + * fixinc/inclhack.def(hpux11_cpp_pow_inline): new, but real similar to + hpux10_cpp_pow_inline. Not similar enough. + (solaris_mutex_init): renamed. PTHREAD_*_INITIALIZER is a problem for + all Solaris versions. This fix patches MUTEX and COND initializers, + the RWLOCK one will wait for someone to complain. For now, anyway. + (uw7_byteorder_fix): It was looking for the byteorder.h file in the + wrong directory. + + Thu Jun 28 00:31:24 2001 Denis Chertykov + + * config/avr/avr.md (strlenhi): PARALLEL keyword removed. + * config/avr/avr.c (legitimate_address_p): Return value changed + from letter to register classes. For better debugging. + + 2001-06-27 Joseph S. Myers + + * doc/c-tree.texi, doc/contrib.texi, doc/cpp.texi, + doc/cppinternals.texi, doc/extend.texi, doc/gcc.texi, + doc/gcov.texi, doc/install-old.texi, doc/install.texi, + doc/invoke.texi, doc/md.texi, doc/rtl.texi, doc/tm.texi: Replace + . at end of sentences preceded by a capital letter with @.. + + 2001-06-18 Jason Merrill + + * expr.c (clear_storage): Set TREE_NOTHROW on the decl for memset. + (emit_block_move): Likewise. + + 2001-06-27 Joseph S. Myers + + * doc/cpp.texi, doc/cppinternals.texi, doc/extend.texi, + doc/gcc.texi, doc/install.texi, doc/invoke.texi, doc/md.texi, + doc/tm.texi: Use @: where necessary when a full stop does not end + a sentence. + + 2001-06-27 Joseph S. Myers + + * doc/gcc.texi, doc/install.texi, doc/invoke.texi: Remove trailing + whitespace. + + 2001-06-26 Joseph S. Myers + + * doc/c-tree.texi, doc/cpp.texi, doc/extend.texi, doc/gcc.texi, + doc/install.texi, doc/invoke.texi, doc/objc.texi, doc/rtl.texi, + doc/tm.texi: Use two spaces after ends of sentences. + + 2001-06-26 Daniel Berlin + + * toplev.c (display_help): Fix param thinko. + * Makefile.in: Fix params.h dependencies. + + 2001-06-26 Rainer Orth + + * config/i386/sol2.h (CPP_SPEC): Pass -P for .S files. + + 2001-06-26 Rainer Orth + + * config/mips/iris5.h (UNALIGNED_INT_ASM_OP, + UNALIGNED_SHORT_ASM_OP): Define. + * config/mips/iris6.h (UNALIGNED_INT_ASM_OP, + UNALIGNED_SHORT_ASM_OP): Undef. + + 2001-06-26 Aldy Hernandez + + * config/sh/sh.md (interrupt_function): Use + current_function_interrupt. + (define_delay): Schedule in delay slot if TARGET_SH3, even if it is + an interrupt function. + + * config/sh/sh.h (current_function_interrupt): Define extern. + + * config/sh/sh.c (current_function_interrupt): New global. + (sh_expand_prologue): Set current_function_interrupt. + + 2001-06-25 Neil Booth + + * cppmacro.c (make_string_token): Null terminate. + * doc/cpp.texi: Update. + * doc/cpp.1: Regenerate. + + 2001-06-25 Joseph S. Myers + + * doc/c-tree.texi, doc/contrib.texi, doc/extend.texi, + doc/gcc.texi, doc/gcov.texi, doc/install.texi, doc/invoke.texi, + doc/md.texi, doc/rtl.texi, doc/tm.texi: Be more consistent about + the use of "GCC" and related terms. + * doc/gcc.1, doc/gcov.1: Regenerate. + + 2001-06-24 Joseph S. Myers + + * doc/extend.texi, doc/gcc.texi, doc/install-old.texi, + doc/invoke.texi, doc/md.texi, doc/rtl.texi, doc/tm.texi: Remove + uses of @refill. + + 2001-06-24 Joseph S. Myers + + * doc/install-old.texi: Remove more documentation of configure + options. + * doc/install.texi: Add it here. + + 2001-06-23 Joseph S. Myers + + * doc/install.texi: Merge from mainline: + 2001-06-21 Phil Edwards + * doc/install.texi: Add 'c' to list of --enable-languages choices. + 2001-06-21 Stan Shebs + * doc/install.texi: Use the correct name "Objective-C" everywhere + instead of "Objective C". + 2001-06-15 Loren J. Rittle + * doc/install.texi: Use correct markup hints. + 2001-06-15 Loren J. Rittle + * doc/install.texi: Update --enable-threads to match reality. + + 2001-06-22 Joseph S. Myers + + * doc/gcc.texi: Update documentation of source files of C + compiler. + + 2001-06-22 Toshiyasu Morita (toshiyasu.morita@hsa.hitachi.com) + + * predict.c: (expected_value_to_br_prob): Check for const_true_rtx + instead of const1_rtx for true case. + + 2001-06-22 Joseph S. Myers + + * doc/c-tree.texi, doc/contrib.texi, doc/extend.texi, + doc/gcc.texi, doc/install-old.texi, doc/install.texi, + doc/invoke.texi, doc/rtl.texi: Consistently use "front end" and + "back end" as nouns and "front-end" and "back-end" as adjectives. + + 2001-06-22 Toshiyasu Morita + + * config/v850/v850.c (v850_mark_machine_status): Don't mark the + p->machine->ra_rtx for GC if p->machine has already been + freed. + + 2001-06-22 Joseph S. Myers + + * c-common.c (verify_tree): Check for x being NULL. + * doc/c-tree.texi: Document COMPOUND_BODY of an empty + COMPOUND_STMT. + Fixes PR c/3259. + + 2001-06-21 Geoff Keating + + * config/rs6000/rs6000.md (maxsf3): Use rs6000_emit_minmax. + (maxsf3+1): Delete. + (minsf3): Use rs6000_emit_minmax. + (minsf3+1): Generalize to handle both SMIN and SMAX. Use + rs6000_emit_minmax. + (movsfcc): Use rs6000_emit_cmove. + (fselsfsf4): Don't compare a CONST_INT with a floating-point value. + Don't generate emit_fselsfsf4. + (fseldfsf4): Likewise. + (maxdf3): Use rs6000_emit_minmax. + (maxdf3+1): Delete. + (mindf3): Use rs6000_emit_minmax. + (mindf3+1): Generalize to handle both SMIN and SMAX. Use + rs6000_emit_minmax. + (movdfcc): Use rs6000_emit_cmove. + (fseldfdf4): Don't compare a CONST_INT with a floating-point value. + Don't generate emit_fselsfsf4. + (fselsfdf4): Likewise. + * config/rs6000/rs6000.c (zero_fp_constant): New predicate. + (min_max_operator): New predicate. + (rs6000_emit_cmove): New function. + (rs6000_emit_minmax): New function. + * config/rs6000/rs6000-protos.h: Prototype new functions. + * config/rs6000/rs6000.h (PREDICATE_CODES): Add zero_fp_constant + and min_max_operator. + + * config/rs6000/rs6000.c (output_cbranch): Handle all + conditional types in the switch statement. + 20010617 Release Manager ! * GCC 3.0 Released. 2001-06-15 Andreas Jaeger diff -Nrc3pad gcc-3.0/gcc/Makefile.in gcc-3.0.1/gcc/Makefile.in *** gcc-3.0/gcc/Makefile.in Tue Jun 12 22:05:35 2001 --- gcc-3.0.1/gcc/Makefile.in Wed Aug 8 19:26:11 2001 *************** USE_NLS = @USE_NLS@ *** 358,363 **** --- 358,366 ---- # Internationalization library. INTLLIBS = @INTLLIBS@ + # Character encoding conversion library. + LIBICONV = @LIBICONV@ + # List of internationalization subdirectories. POSUB = @POSUB@ INTL_SUBDIRS = intl $(POSUB) *************** all: all.indirect *** 590,595 **** --- 593,627 ---- # This tells GNU Make version 3 not to put all variables in the environment. .NOEXPORT: + # GCONFIG_H lists the config files that the generator files depend on, while + # CONFIG_H lists the the ones ordinary gcc files depend on, which includes + # a file generated by gencodes. + GCONFIG_H = config.h $(host_xm_file_list) + HCONFIG_H = hconfig.h $(build_xm_file_list) + CONFIG_H = $(GCONFIG_H) $(TM_H) insn-codes.h insn-flags.h + TCONFIG_H = tconfig.h $(xm_file_list) insn-codes.h insn-flags.h + TM_H = tm.h $(tm_file_list) + TM_P_H = tm_p.h $(tm_p_file_list) insn-codes.h insn-flags.h + + MACHMODE_H = machmode.h machmode.def + RTL_BASE_H = rtl.h rtl.def $(MACHMODE_H) + RTL_H = $(RTL_BASE_H) genrtl.h + PARAMS_H = params.h params.def + TREE_H = tree.h real.h tree.def $(MACHMODE_H) tree-check.h version.h builtins.def + BASIC_BLOCK_H = basic-block.h bitmap.h sbitmap.h varray.h + DEMANGLE_H = $(srcdir)/../include/demangle.h + RECOG_H = recog.h + EXPR_H = expr.h + REGS_H = regs.h varray.h $(MACHMODE_H) + INTEGRATE_H = integrate.h varray.h + LOOP_H = loop.h varray.h bitmap.h + GCC_H = gcc.h version.h + GGC_H = ggc.h varray.h + TIMEVAR_H = timevar.h timevar.def + INSN_ATTR_H = insn-attr.h $(srcdir)/insn-addr.h $(srcdir)/varray.h + C_COMMON_H = c-common.h $(SPLAY_TREE_H) + C_TREE_H = c-tree.h $(C_COMMON_H) + # sed inserts variable overrides after the following line. ####target overrides @target_overrides@ *************** DPBIT_FUNCS = _pack_df _unpack_df _addsu *** 826,859 **** _lt_df _le_df _unord_df _si_to_df _df_to_si _negate_df _make_df \ _df_to_sf _thenan_df _df_to_usi _usi_to_df - # GCONFIG_H lists the config files that the generator files depend on, while - # CONFIG_H lists the the ones ordinary gcc files depend on, which includes - # a file generated by gencodes. - GCONFIG_H = config.h $(host_xm_file_list) - HCONFIG_H = hconfig.h $(build_xm_file_list) - CONFIG_H = $(GCONFIG_H) $(TM_H) insn-codes.h insn-flags.h - TCONFIG_H = tconfig.h $(xm_file_list) insn-codes.h insn-flags.h - TM_H = tm.h $(tm_file_list) - TM_P_H = tm_p.h $(tm_p_file_list) insn-codes.h insn-flags.h - - MACHMODE_H = machmode.h machmode.def - RTL_BASE_H = rtl.h rtl.def $(MACHMODE_H) - RTL_H = $(RTL_BASE_H) genrtl.h - TREE_H = tree.h real.h tree.def $(MACHMODE_H) tree-check.h version.h builtins.def - BASIC_BLOCK_H = basic-block.h bitmap.h sbitmap.h varray.h - DEMANGLE_H = $(srcdir)/../include/demangle.h - RECOG_H = recog.h - EXPR_H = expr.h - REGS_H = regs.h varray.h $(MACHMODE_H) - INTEGRATE_H = integrate.h varray.h - LOOP_H = loop.h varray.h bitmap.h - GCC_H = gcc.h version.h - GGC_H = ggc.h varray.h - TIMEVAR_H = timevar.h timevar.def - INSN_ATTR_H = insn-attr.h $(srcdir)/insn-addr.h $(srcdir)/varray.h - C_COMMON_H = c-common.h $(SPLAY_TREE_H) - C_TREE_H = c-tree.h $(C_COMMON_H) - # # Language makefile fragments. --- 858,863 ---- *************** toplev.o : toplev.c $(CONFIG_H) system.h *** 1398,1404 **** insn-config.h intl.h $(RECOG_H) Makefile toplev.h dwarfout.h \ dwarf2out.h sdbout.h dbxout.h $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) \ graph.h $(LOOP_H) except.h $(REGS_H) $(TIMEVAR_H) $(lang_options_files) \ ! ssa.h params.h $(TM_P_H) dwarf2asm.h $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(MAYBE_USE_COLLECT2) \ -DTARGET_NAME=\"$(target_alias)\" \ -c $(srcdir)/toplev.c --- 1402,1408 ---- insn-config.h intl.h $(RECOG_H) Makefile toplev.h dwarfout.h \ dwarf2out.h sdbout.h dbxout.h $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) \ graph.h $(LOOP_H) except.h $(REGS_H) $(TIMEVAR_H) $(lang_options_files) \ ! ssa.h $(PARAMS_H) $(TM_P_H) dwarf2asm.h $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(MAYBE_USE_COLLECT2) \ -DTARGET_NAME=\"$(target_alias)\" \ -c $(srcdir)/toplev.c *************** real.o : real.c $(CONFIG_H) system.h $(T *** 1470,1476 **** integrate.o : integrate.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \ $(INTEGRATE_H) insn-config.h $(EXPR_H) real.h $(REGS_H) \ intl.h function.h output.h $(RECOG_H) except.h toplev.h $(LOOP_H) \ ! params.h $(TM_P_H) jump.o : jump.c $(CONFIG_H) system.h $(RTL_H) flags.h hard-reg-set.h $(REGS_H) \ insn-config.h $(RECOG_H) $(EXPR_H) real.h except.h function.h \ toplev.h $(INSN_ATTR_H) $(TM_P_H) --- 1474,1480 ---- integrate.o : integrate.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \ $(INTEGRATE_H) insn-config.h $(EXPR_H) real.h $(REGS_H) \ intl.h function.h output.h $(RECOG_H) except.h toplev.h $(LOOP_H) \ ! $(PARAMS_H) $(TM_P_H) jump.o : jump.c $(CONFIG_H) system.h $(RTL_H) flags.h hard-reg-set.h $(REGS_H) \ insn-config.h $(RECOG_H) $(EXPR_H) real.h except.h function.h \ toplev.h $(INSN_ATTR_H) $(TM_P_H) *************** cse.o : cse.c $(CONFIG_H) system.h $(RTL *** 1483,1494 **** $(BASIC_BLOCK_H) $(GGC_H) $(TM_P_H) gcse.o : gcse.c $(CONFIG_H) system.h $(RTL_H) $(REGS_H) hard-reg-set.h \ flags.h real.h insn-config.h $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) \ ! function.h output.h toplev.h params.h $(TM_P_H) sibcall.o : sibcall.c $(CONFIG_H) system.h $(RTL_H) $(REGS_H) function.h \ hard-reg-set.h flags.h insn-config.h $(RECOG_H) $(BASIC_BLOCK_H) resource.o : resource.c $(CONFIG_H) $(RTL_H) hard-reg-set.h system.h \ $(BASIC_BLOCK_H) $(REGS_H) flags.h output.h resource.h function.h toplev.h \ ! $(INSN_ATTR_H) except.h params.h $(TM_P_H) lcm.o : lcm.c $(CONFIG_H) system.h $(RTL_H) $(REGS_H) hard-reg-set.h flags.h \ real.h insn-config.h $(INSN_ATTR_H) $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) \ $(TM_P_H) --- 1487,1498 ---- $(BASIC_BLOCK_H) $(GGC_H) $(TM_P_H) gcse.o : gcse.c $(CONFIG_H) system.h $(RTL_H) $(REGS_H) hard-reg-set.h \ flags.h real.h insn-config.h $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) \ ! function.h output.h toplev.h $(PARAMS_H) $(TM_P_H) sibcall.o : sibcall.c $(CONFIG_H) system.h $(RTL_H) $(REGS_H) function.h \ hard-reg-set.h flags.h insn-config.h $(RECOG_H) $(BASIC_BLOCK_H) resource.o : resource.c $(CONFIG_H) $(RTL_H) hard-reg-set.h system.h \ $(BASIC_BLOCK_H) $(REGS_H) flags.h output.h resource.h function.h toplev.h \ ! $(INSN_ATTR_H) except.h $(PARAMS_H) $(TM_P_H) lcm.o : lcm.c $(CONFIG_H) system.h $(RTL_H) $(REGS_H) hard-reg-set.h flags.h \ real.h insn-config.h $(INSN_ATTR_H) $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) \ $(TM_P_H) *************** caller-save.o : caller-save.c $(CONFIG_H *** 1542,1548 **** $(RECOG_H) reload.h $(EXPR_H) toplev.h $(TM_P_H) reorg.o : reorg.c $(CONFIG_H) system.h $(RTL_H) conditions.h hard-reg-set.h \ $(BASIC_BLOCK_H) $(REGS_H) insn-config.h $(INSN_ATTR_H) \ ! $(RECOG_H) function.h flags.h output.h $(EXPR_H) toplev.h params.h $(TM_P_H) alias.o : alias.c $(CONFIG_H) system.h $(RTL_H) flags.h hard-reg-set.h \ $(BASIC_BLOCK_H) $(REGS_H) toplev.h output.h $(EXPR_H) \ $(GGC_H) function.h cselib.h $(TREE_H) $(TM_P_H) --- 1546,1552 ---- $(RECOG_H) reload.h $(EXPR_H) toplev.h $(TM_P_H) reorg.o : reorg.c $(CONFIG_H) system.h $(RTL_H) conditions.h hard-reg-set.h \ $(BASIC_BLOCK_H) $(REGS_H) insn-config.h $(INSN_ATTR_H) \ ! $(RECOG_H) function.h flags.h output.h $(EXPR_H) toplev.h $(PARAMS_H) $(TM_P_H) alias.o : alias.c $(CONFIG_H) system.h $(RTL_H) flags.h hard-reg-set.h \ $(BASIC_BLOCK_H) $(REGS_H) toplev.h output.h $(EXPR_H) \ $(GGC_H) function.h cselib.h $(TREE_H) $(TM_P_H) *************** ifcvt.o : ifcvt.c $(CONFIG_H) system.h $ *** 1590,1596 **** output.h $(TM_P_H) dependence.o : dependence.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) \ $(C_COMMON_H) flags.h varray.h $(EXPR_H) ! params.o : params.c $(CONFIG_H) system.h params.h toplev.h $(out_object_file): $(out_file) $(CONFIG_H) $(TREE_H) $(GGC_H) \ $(RTL_H) $(REGS_H) hard-reg-set.h real.h insn-config.h conditions.h \ --- 1594,1600 ---- output.h $(TM_P_H) dependence.o : dependence.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) \ $(C_COMMON_H) flags.h varray.h $(EXPR_H) ! params.o : params.c $(CONFIG_H) system.h $(PARAMS_H) toplev.h $(out_object_file): $(out_file) $(CONFIG_H) $(TREE_H) $(GGC_H) \ $(RTL_H) $(REGS_H) hard-reg-set.h real.h insn-config.h conditions.h \ *************** doc: $(BUILD_INFO) gccbug *** 2277,2308 **** info: $(docdir)/cpp.info $(docdir)/gcc.info lang.info $(docdir)/cppinternals.info $(docdir)/cpp.info: $(docdir)/cpp.texi ! cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -o doc/cpp.info doc/cpp.texi ! $(docdir)/gcc.info: $(docdir)/gcc.texi $(docdir)/extend.texi $(docdir)/install.texi \ ! $(docdir)/invoke.texi $(docdir)/md.texi $(docdir)/c-tree.texi \ ! $(docdir)/rtl.texi $(docdir)/tm.texi $(docdir)/gcov.texi \ ! $(docdir)/contrib.texi $(docdir)/objc.texi $(docdir)/fdl.texi ! cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -o doc/gcc.info doc/gcc.texi $(docdir)/cppinternals.info: $(docdir)/cppinternals.texi ! cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -o doc/cppinternals.info \ doc/cppinternals.texi dvi: gcc.dvi cpp.dvi lang.dvi cppinternals.dvi # This works with GNU Make's default rule. cpp.dvi: $(docdir)/cpp.texi ! $(TEXI2DVI) -I $(docdir) $(docdir)/cpp.texi ! gcc.dvi: $(docdir)/gcc.texi $(docdir)/extend.texi $(docdir)/install.texi \ $(docdir)/invoke.texi $(docdir)/md.texi $(docdir)/c-tree.texi \ $(docdir)/rtl.texi $(docdir)/tm.texi $(docdir)/gcov.texi \ ! $(docdir)/contrib.texi $(docdir)/objc.texi $(docdir)/fdl.texi ! $(TEXI2DVI) -I $(docdir) $(docdir)/gcc.texi cppinternals.dvi: $(docdir)/cppinternals.texi ! $(TEXI2DVI) -I $(docdir) $(docdir)/cppinternals.texi generated-manpages: $(docdir)/gcov.1 $(docdir)/cpp.1 $(docdir)/gcc.1 --- 2281,2316 ---- info: $(docdir)/cpp.info $(docdir)/gcc.info lang.info $(docdir)/cppinternals.info $(docdir)/cpp.info: $(docdir)/cpp.texi ! cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/cpp.info doc/cpp.texi ! $(docdir)/gcc.info: $(docdir)/gcc.texi $(docdir)/extend.texi \ ! $(docdir)/install-old.texi $(docdir)/invoke.texi $(docdir)/md.texi \ ! $(docdir)/c-tree.texi $(docdir)/rtl.texi $(docdir)/tm.texi \ ! $(docdir)/gcov.texi $(docdir)/contrib.texi $(docdir)/objc.texi \ ! $(docdir)/include/fdl.texi $(docdir)/include/gpl.texi \ ! $(docdir)/include/funding.texi ! cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/gcc.info doc/gcc.texi $(docdir)/cppinternals.info: $(docdir)/cppinternals.texi ! cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/cppinternals.info \ doc/cppinternals.texi dvi: gcc.dvi cpp.dvi lang.dvi cppinternals.dvi # This works with GNU Make's default rule. cpp.dvi: $(docdir)/cpp.texi ! $(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/cpp.texi ! gcc.dvi: $(docdir)/gcc.texi $(docdir)/extend.texi $(docdir)/install-old.texi \ $(docdir)/invoke.texi $(docdir)/md.texi $(docdir)/c-tree.texi \ $(docdir)/rtl.texi $(docdir)/tm.texi $(docdir)/gcov.texi \ ! $(docdir)/contrib.texi $(docdir)/objc.texi \ ! $(docdir)/include/fdl.texi $(docdir)/include/gpl.texi \ ! $(docdir)/include/funding.texi ! $(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/gcc.texi cppinternals.dvi: $(docdir)/cppinternals.texi ! $(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/cppinternals.texi generated-manpages: $(docdir)/gcov.1 $(docdir)/cpp.1 $(docdir)/gcc.1 diff -Nrc3pad gcc-3.0/gcc/NEWS gcc-3.0.1/gcc/NEWS *** gcc-3.0/gcc/NEWS Sun Jun 17 12:50:10 2001 --- gcc-3.0.1/gcc/NEWS Sun Aug 19 17:45:13 2001 *************** http://gcc.gnu.org/gcc-3.0/gcc-3.0.html *** 9,15 **** GCC 3.0 ! TBA The [1]GNU project and the GCC developers are pleased to announce the release of GCC version 3.0. --- 9,15 ---- GCC 3.0 ! June 18, 2001 The [1]GNU project and the GCC developers are pleased to announce the release of GCC version 3.0. *************** http://gcc.gnu.org/gcc-3.0/gcc-3.0.html *** 22,63 **** many other new features. See the [2]new features page for a more complete list. The GCC developers would like to thank the numerous people that have contributed new features, test results, bugfixes, etc to GCC. This ! [3]amazing group of volunteers is what makes GCC successful. And finally, we can't in good conscience fail to mention some ! [4]caveats to using GCC 3.0. ! For additional information about GCC please refer to the [5]GCC ! project web site or contact the [6]GCC development mailing list. _________________________________________________________________ ! Please send FSF & GNU inquiries & questions to [7]gnu@gnu.org. There ! are also [8]other ways to contact the FSF. ! These pages are maintained by [9]The GCC team. Please send comments on these web pages and GCC to ! [10]gcc@gcc.gnu.org, send other questions to [11]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-05-12. References 1. http://www.gnu.org/ 2. http://gcc.gnu.org/gcc-3.0/features.html ! 3. http://gcc.gnu.org/thanks.html ! 4. http://gcc.gnu.org/gcc-3.0/caveats.html ! 5. http://gcc.gnu.org/index.html ! 6. mailto:gcc@gcc.gnu.org ! 7. mailto:gnu@gnu.org ! 8. http://www.gnu.org/home.html#ContactInfo ! 9. http://gcc.gnu.org/about.html ! 10. mailto:gcc@gcc.gnu.org 11. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/gcc-3.0/features.html --- 22,73 ---- many other new features. See the [2]new features page for a more complete list. + A list of [3]successful builds is updated as new information becomes + available. + The GCC developers would like to thank the numerous people that have contributed new features, test results, bugfixes, etc to GCC. This ! [4]amazing group of volunteers is what makes GCC successful. And finally, we can't in good conscience fail to mention some ! [5]caveats to using GCC 3.0. ! For additional information about GCC please refer to the [6]GCC ! project web site or contact the [7]GCC development mailing list. ! ! To obtain GCC please use [8]our mirror sites, one of the [9]GNU mirror ! sites, or [10]our CVS server. _________________________________________________________________ ! Please send FSF & GNU inquiries & questions to [11]gnu@gnu.org. ! There are also [12]other ways to contact the FSF. ! These pages are maintained by [13]The GCC team. Please send comments on these web pages and GCC to ! [14]gcc@gcc.gnu.org, send other questions to [15]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-08-19. References 1. http://www.gnu.org/ 2. http://gcc.gnu.org/gcc-3.0/features.html ! 3. http://gcc.gnu.org/gcc-3.0/buildstat.html ! 4. http://gcc.gnu.org/thanks.html ! 5. http://gcc.gnu.org/gcc-3.0/caveats.html ! 6. http://gcc.gnu.org/index.html ! 7. mailto:gcc@gcc.gnu.org ! 8. http://gcc.gnu.org/mirrors.html ! 9. http://www.gnu.org/order/ftp.html ! 10. http://gcc.gnu.org/cvs.html 11. mailto:gnu@gnu.org + 12. http://www.gnu.org/home.html#ContactInfo + 13. http://gcc.gnu.org/about.html + 14. mailto:gcc@gcc.gnu.org + 15. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/gcc-3.0/features.html *************** http://gcc.gnu.org/gcc-3.0/features.html *** 88,104 **** Java bytecodes to either native code or Java class files, and supports native methods written in either the standard JNI or the more efficient and convenient CNI. + New C++ ABI. On the IA-64 platform GCC is capable of inter-operating with other IA-64 compilers. + The new ABI also significantly reduces the size of symbol and debug information. ! + New [5]C++ support library and many C++ bug fixes, vastly improving our conformance to the ISO C++ standard. ! + New [6]inliner for C++. + Rewritten C preprocessor, integrated into the C, C++ and Objective C compilers, with very many improvements including ! ISO C99 support and [7]improvements to dependency generation. ! + Support for more [8]ISO C99 features. + Many improvements to support for checking calls to format functions such as printf and scanf, including support for ISO C99 format features, extensions from the Single Unix --- 98,116 ---- Java bytecodes to either native code or Java class files, and supports native methods written in either the standard JNI or the more efficient and convenient CNI. + + Here is a [5]partial list of C++ improvements, both new + features and those no longer supported. + New C++ ABI. On the IA-64 platform GCC is capable of inter-operating with other IA-64 compilers. + The new ABI also significantly reduces the size of symbol and debug information. ! + New [6]C++ support library and many C++ bug fixes, vastly improving our conformance to the ISO C++ standard. ! + New [7]inliner for C++. + Rewritten C preprocessor, integrated into the C, C++ and Objective C compilers, with very many improvements including ! ISO C99 support and [8]improvements to dependency generation. ! + Support for more [9]ISO C99 features. + Many improvements to support for checking calls to format functions such as printf and scanf, including support for ISO C99 format features, extensions from the Single Unix *************** http://gcc.gnu.org/gcc-3.0/features.html *** 111,117 **** included in -Wall. + Additional warning option -Wfloat-equal. + Improvements to -Wtraditional. ! + Fortran improvements are listed in [9]the Fortran documentation. * New Targets and Target Specific Improvements: + New x86 back-end, generating much improved code. --- 123,129 ---- included in -Wall. + Additional warning option -Wfloat-equal. + Improvements to -Wtraditional. ! + Fortran improvements are listed in [10]the Fortran documentation. * New Targets and Target Specific Improvements: + New x86 back-end, generating much improved code. *************** http://gcc.gnu.org/gcc-3.0/features.html *** 159,165 **** GNATS bug tracking number has been received, should be submitted again to the bug tracking database using gccbug if you can reproduce the problem with GCC 3.0.) ! + The internal libgcc library is [10]built as a shared library on systems that support it. + Extensive testsuite included with GCC, with many new tests. In addition to tests for GCC bugs that have been fixed, many --- 171,177 ---- GNATS bug tracking number has been received, should be submitted again to the bug tracking database using gccbug if you can reproduce the problem with GCC 3.0.) ! + The internal libgcc library is [11]built as a shared library on systems that support it. + Extensive testsuite included with GCC, with many new tests. In addition to tests for GCC bugs that have been fixed, many *************** http://gcc.gnu.org/gcc-3.0/features.html *** 169,189 **** -Wpadded, -Wunreachable-code and -Wdisabled-optimization. + Target-independent options -falign-functions, -falign-loops and -falign-jumps. ! * Plus a great many bugfixes and almost all the [11]features found in GCC 2.95. _________________________________________________________________ ! Please send FSF & GNU inquiries & questions to [12]gnu@gnu.org. ! There are also [13]other ways to contact the FSF. ! These pages are maintained by [14]The GCC team. Please send comments on these web pages and GCC to ! [15]gcc@gcc.gnu.org, send other questions to [16]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-06-13. References --- 181,201 ---- -Wpadded, -Wunreachable-code and -Wdisabled-optimization. + Target-independent options -falign-functions, -falign-loops and -falign-jumps. ! * Plus a great many bugfixes and almost all the [12]features found in GCC 2.95. _________________________________________________________________ ! Please send FSF & GNU inquiries & questions to [13]gnu@gnu.org. ! There are also [14]other ways to contact the FSF. ! These pages are maintained by [15]The GCC team. Please send comments on these web pages and GCC to ! [16]gcc@gcc.gnu.org, send other questions to [17]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-08-19. References *************** References *** 191,208 **** 2. http://gcc.gnu.org/news/ssa.html 3. http://gcc.gnu.org/news/null.html 4. http://gcc.gnu.org/news/unify.html ! 5. http://gcc.gnu.org/libstdc++/ ! 6. http://gcc.gnu.org/news/inlining.html ! 7. http://gcc.gnu.org/news/dependencies.html ! 8. http://gcc.gnu.org/gcc-3.0/c99status.html ! 9. http://gcc.gnu.org/onlinedocs/g77_news.html ! 10. http://gcc.gnu.org/gcc-3.0/libgcc.html ! 11. http://gcc.gnu.org/gcc-2.95/features.html ! 12. mailto:gnu@gnu.org ! 13. http://www.gnu.org/home.html#ContactInfo ! 14. http://gcc.gnu.org/about.html ! 15. mailto:gcc@gcc.gnu.org ! 16. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/gcc-3.0/caveats.html --- 203,221 ---- 2. http://gcc.gnu.org/news/ssa.html 3. http://gcc.gnu.org/news/null.html 4. http://gcc.gnu.org/news/unify.html ! 5. http://gcc.gnu.org/gcc-3.0/c++features.html ! 6. http://gcc.gnu.org/libstdc++/ ! 7. http://gcc.gnu.org/news/inlining.html ! 8. http://gcc.gnu.org/news/dependencies.html ! 9. http://gcc.gnu.org/gcc-3.0/c99status.html ! 10. http://gcc.gnu.org/onlinedocs/g77_news.html ! 11. http://gcc.gnu.org/gcc-3.0/libgcc.html ! 12. http://gcc.gnu.org/gcc-2.95/features.html ! 13. mailto:gnu@gnu.org ! 14. http://www.gnu.org/home.html#ContactInfo ! 15. http://gcc.gnu.org/about.html ! 16. mailto:gcc@gcc.gnu.org ! 17. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/gcc-3.0/caveats.html *************** http://gcc.gnu.org/gcc-3.0/caveats.html *** 228,257 **** * Certain non-standard iostream methods from earlier versions of libstdc++ are not included in libstdc++ v3, i.e. filebuf::attach, ostream::form, and istream::gets. Here are workaround hints for: ! [1]ostream::form, [2]filebuf::at tach. _________________________________________________________________ ! Please send FSF & GNU inquiries & questions to [3]gnu@gnu.org. There ! are also [4]other ways to contact the FSF. ! These pages are maintained by [5]The GCC team. Please send comments on these web pages and GCC to ! [6]gcc@gcc.gnu.org, send other questions to [7]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-06-13. References 1. http://gcc.gnu.org/onlinedocs/libstdc++/21_strings/howto.html 2. http://gcc.gnu.org/onlinedocs/libstdc++/ext/howto.html ! 3. mailto:gnu@gnu.org ! 4. http://www.gnu.org/home.html#ContactInfo ! 5. http://gcc.gnu.org/about.html ! 6. mailto:gcc@gcc.gnu.org ! 7. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/gcc-2.95/gcc-2.95.3.html --- 241,277 ---- * Certain non-standard iostream methods from earlier versions of libstdc++ are not included in libstdc++ v3, i.e. filebuf::attach, ostream::form, and istream::gets. Here are workaround hints for: ! [1]ostream::form, [2]filebuf::attach. ! * The new C++ ABI is not yet fully supported by current (as of ! 2001-07-01) releases and development versions of GDB, or any ! earlier versions. There is a problem setting breakpoints by line ! number, and other related issues that have been fixed in GCC 3.0 ! but not yet handled in GDB: ! [3]http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html _________________________________________________________________ ! Please send FSF & GNU inquiries & questions to [4]gnu@gnu.org. There ! are also [5]other ways to contact the FSF. ! These pages are maintained by [6]The GCC team. Please send comments on these web pages and GCC to ! [7]gcc@gcc.gnu.org, send other questions to [8]gnu@gnu.org. Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-08-19. References 1. http://gcc.gnu.org/onlinedocs/libstdc++/21_strings/howto.html 2. http://gcc.gnu.org/onlinedocs/libstdc++/ext/howto.html ! 3. http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html ! 4. mailto:gnu@gnu.org ! 5. http://www.gnu.org/home.html#ContactInfo ! 6. http://gcc.gnu.org/about.html ! 7. mailto:gcc@gcc.gnu.org ! 8. mailto:gnu@gnu.org ====================================================================== http://gcc.gnu.org/gcc-2.95/gcc-2.95.3.html *************** http://gcc.gnu.org/gcc-2.95/gcc-2.95.3.h *** 333,339 **** Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-06-07. References --- 353,359 ---- Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-08-19. References *************** http://gcc.gnu.org/gcc-2.95/gcc-2.95.2.h *** 493,499 **** Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-05-04. References --- 513,519 ---- Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-08-19. References *************** http://gcc.gnu.org/gcc-2.95/gcc-2.95.1.h *** 627,633 **** Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-05-04. References --- 647,653 ---- Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-08-19. References *************** http://gcc.gnu.org/gcc-2.95/gcc-2.95.htm *** 706,712 **** Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-05-04. References --- 726,732 ---- Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-08-19. References *************** http://gcc.gnu.org/gcc-2.95/features.htm *** 807,813 **** Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-05-04. References --- 827,833 ---- Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-08-19. References *************** http://gcc.gnu.org/gcc-2.95/caveats.html *** 889,895 **** Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-05-04. References --- 909,915 ---- Suite 330, Boston, MA 02111, USA. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! Last modified 2001-08-19. References diff -Nrc3pad gcc-3.0/gcc/aclocal.m4 gcc-3.0.1/gcc/aclocal.m4 *** gcc-3.0/gcc/aclocal.m4 Fri May 25 22:43:41 2001 --- gcc-3.0.1/gcc/aclocal.m4 Wed Jul 18 09:59:15 2001 *************** else *** 1152,1154 **** --- 1152,1224 ---- gcc_cv_prog_$2_modern=no fi ]) + + #serial AM2 + + dnl From Bruno Haible. + + AC_DEFUN([AM_ICONV], + [ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + + AC_ARG_WITH([libiconv-prefix], + [ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib], [ + for dir in `echo "$withval" | tr : ' '`; do + if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi + if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi + done + ]) + + AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include + #include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_func_iconv=yes) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS -liconv" + AC_TRY_LINK([#include + #include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_lib_iconv=yes + am_cv_func_iconv=yes) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(am_cv_proto_iconv, [ + AC_TRY_COMPILE([ + #include + #include + extern + #ifdef __cplusplus + "C" + #endif + #if defined(__STDC__) || defined(__cplusplus) + size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); + #else + size_t iconv(); + #endif + ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([$]{ac_t:- + }[$]am_cv_proto_iconv) + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi + LIBICONV= + if test "$am_cv_lib_iconv" = yes; then + LIBICONV="-liconv" + fi + AC_SUBST(LIBICONV) + ]) diff -Nrc3pad gcc-3.0/gcc/builtins.c gcc-3.0.1/gcc/builtins.c *** gcc-3.0/gcc/builtins.c Tue May 22 13:04:09 2001 --- gcc-3.0.1/gcc/builtins.c Fri Aug 3 17:24:13 2001 *************** expand_builtin_longjmp (buf_addr, value) *** 698,704 **** /* We have to pass a value to the nonlocal_goto pattern that will get copied into the static_chain pointer, but it does not matter what that value is, because builtin_setjmp does not use it. */ ! emit_insn (gen_nonlocal_goto (value, fp, stack, lab)); else #endif { --- 698,704 ---- /* We have to pass a value to the nonlocal_goto pattern that will get copied into the static_chain pointer, but it does not matter what that value is, because builtin_setjmp does not use it. */ ! emit_insn (gen_nonlocal_goto (value, lab, stack, fp)); else #endif { *************** fold_builtin_constant_p (arglist) *** 3665,3674 **** has side effects, show we don't know it to be a constant. Likewise if it's a pointer or aggregate type since in those case we only want literals, since those are only optimized ! when generating RTL, not later. */ if (TREE_SIDE_EFFECTS (arglist) || cse_not_expected || AGGREGATE_TYPE_P (TREE_TYPE (arglist)) ! || POINTER_TYPE_P (TREE_TYPE (arglist))) return integer_zero_node; return 0; --- 3665,3678 ---- has side effects, show we don't know it to be a constant. Likewise if it's a pointer or aggregate type since in those case we only want literals, since those are only optimized ! when generating RTL, not later. ! And finally, if we are compiling an initializer, not code, we ! need to return a definite result now; there's not going to be any ! more optimization done. */ if (TREE_SIDE_EFFECTS (arglist) || cse_not_expected || AGGREGATE_TYPE_P (TREE_TYPE (arglist)) ! || POINTER_TYPE_P (TREE_TYPE (arglist)) ! || cfun == 0) return integer_zero_node; return 0; diff -Nrc3pad gcc-3.0/gcc/c-common.c gcc-3.0.1/gcc/c-common.c *** gcc-3.0/gcc/c-common.c Tue Jun 5 00:46:56 2001 --- gcc-3.0.1/gcc/c-common.c Fri Jun 22 12:23:23 2001 *************** verify_tree (x, pbefore_sp, pno_sp, writ *** 1443,1448 **** --- 1443,1453 ---- enum tree_code code; char class; + /* X may be NULL if it is the operand of an empty statement expression + ({ }). */ + if (x == NULL) + return; + restart: code = TREE_CODE (x); class = TREE_CODE_CLASS (code); diff -Nrc3pad gcc-3.0/gcc/c-parse.c gcc-3.0.1/gcc/c-parse.c *** gcc-3.0/gcc/c-parse.c Sun Jun 17 12:51:11 2001 --- gcc-3.0.1/gcc/c-parse.c Sun Aug 19 17:53:44 2001 *************** *** 1,6 **** /* A Bison parser, made from c-parse.y ! by GNU Bison version 1.28 */ #define YYBISON 1 /* Identify Bison output. */ --- 1,7 ---- /* A Bison parser, made from c-parse.y ! by GNU Bison version 1.27 ! */ #define YYBISON 1 /* Identify Bison output. */ *************** static const short yycheck[] = { 38, *** 1314,1320 **** }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/lib/bison.simple" ! /* This file comes from bison-1.28. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. --- 1315,1321 ---- }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/lib/bison.simple" ! /* This file comes from bison-1.27. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. *************** __yy_memcpy (char *to, char *from, unsig *** 1527,1533 **** #endif #endif ! #line 217 "/usr/lib/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. --- 1528,1534 ---- #endif #endif ! #line 216 "/usr/lib/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. *************** case 425: *** 3729,3735 **** break;} } /* the action file gets copied in in place of this dollarsign */ ! #line 543 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; --- 3730,3736 ---- break;} } /* the action file gets copied in in place of this dollarsign */ ! #line 542 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; diff -Nrc3pad gcc-3.0/gcc/c-pragma.h gcc-3.0.1/gcc/c-pragma.h *** gcc-3.0/gcc/c-pragma.h Sat Nov 25 11:28:42 2000 --- gcc-3.0.1/gcc/c-pragma.h Tue Jul 17 05:51:29 2001 *************** *** 1,5 **** /* Pragma related interfaces. ! Copyright (C) 1995, 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of GNU CC. --- 1,5 ---- /* Pragma related interfaces. ! Copyright (C) 1995, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GNU CC. *************** Boston, MA 02111-1307, USA. */ *** 22,30 **** #define _C_PRAGMA_H #ifdef HANDLE_SYSV_PRAGMA ! /* Support #pragma weak iff ASM_WEAKEN_LABEL and ASM_OUTPUT_DEF are defined. */ ! #if defined (ASM_WEAKEN_LABEL) && defined (ASM_OUTPUT_DEF) #define HANDLE_PRAGMA_WEAK SUPPORTS_WEAK #endif --- 22,30 ---- #define _C_PRAGMA_H #ifdef HANDLE_SYSV_PRAGMA ! /* Support #pragma weak iff ASM_WEAKEN_LABEL and ASM_OUTPUT_WEAK_ALIAS are defined. */ ! #if defined (ASM_WEAKEN_LABEL) && defined (ASM_OUTPUT_WEAK_ALIAS) #define HANDLE_PRAGMA_WEAK SUPPORTS_WEAK #endif diff -Nrc3pad gcc-3.0/gcc/calls.c gcc-3.0.1/gcc/calls.c *** gcc-3.0/gcc/calls.c Sat Jun 9 12:22:25 2001 --- gcc-3.0.1/gcc/calls.c Tue Jul 10 18:06:33 2001 *************** expand_call (exp, target, ignore) *** 3445,3451 **** /* Output a library call to function FUN (a SYMBOL_REF rtx). The RETVAL parameter specifies whether return value needs to be saved, other ! parameters are documented in the emit_library_call function bellow. */ static rtx emit_library_call_value_1 (retval, orgfun, value, fn_type, outmode, nargs, p) int retval; --- 3445,3451 ---- /* Output a library call to function FUN (a SYMBOL_REF rtx). The RETVAL parameter specifies whether return value needs to be saved, other ! parameters are documented in the emit_library_call function below. */ static rtx emit_library_call_value_1 (retval, orgfun, value, fn_type, outmode, nargs, p) int retval; diff -Nrc3pad gcc-3.0/gcc/combine.c gcc-3.0.1/gcc/combine.c *** gcc-3.0/gcc/combine.c Sat Jun 9 12:22:25 2001 --- gcc-3.0.1/gcc/combine.c Fri Jul 13 09:39:35 2001 *************** try_combine (i3, i2, i1, new_direct_jump *** 2238,2243 **** --- 2238,2244 ---- appeared to be a memory address. This is a kludge. */ if (split_code == MULT && GET_CODE (XEXP (*split, 1)) == CONST_INT + && INTVAL (XEXP (*split, 1)) > 0 && (i = exact_log2 (INTVAL (XEXP (*split, 1)))) >= 0) { SUBST (*split, gen_rtx_combine (ASHIFT, split_mode, diff -Nrc3pad gcc-3.0/gcc/config/alpha/alpha.c gcc-3.0.1/gcc/config/alpha/alpha.c *** gcc-3.0/gcc/config/alpha/alpha.c Mon Jun 11 09:25:36 2001 --- gcc-3.0.1/gcc/config/alpha/alpha.c Sun Jul 15 09:01:46 2001 *************** alpha_emit_xfloating_compare (code, op0, *** 2336,2345 **** operands[1] = op1; out = gen_reg_rtx (DImode); ! /* ??? Strange equiv cause what's actually returned is -1,0,1, not a ! proper boolean value. */ ! alpha_emit_xfloating_libcall (func, out, operands, 2, ! gen_rtx_COMPARE (TFmode, op0, op1)); return out; } --- 2336,2345 ---- operands[1] = op1; out = gen_reg_rtx (DImode); ! /* ??? Strange mode for equiv because what's actually returned ! is -1,0,1, not a proper boolean value. */ ! alpha_emit_xfloating_libcall (func, out, operands, 2, ! gen_rtx_fmt_ee (code, CCmode, op0, op1)); return out; } diff -Nrc3pad gcc-3.0/gcc/config/alpha/osf.h gcc-3.0.1/gcc/config/alpha/osf.h *** gcc-3.0/gcc/config/alpha/osf.h Mon Jun 11 09:15:19 2001 --- gcc-3.0.1/gcc/config/alpha/osf.h Sun Aug 12 13:22:19 2001 *************** __enable_execute_stack (addr) \ *** 183,185 **** --- 183,208 ---- (TARGET_GAS \ ? (((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_sdata4) \ : DW_EH_PE_aligned) + + /* This is how we tell the assembler that a symbol is weak. */ + + #define ASM_OUTPUT_WEAK_ALIAS(FILE, NAME, VALUE) \ + do \ + { \ + ASM_GLOBALIZE_LABEL (FILE, NAME); \ + fputs ("\t.weakext\t", FILE); \ + assemble_name (FILE, NAME); \ + if (VALUE) \ + { \ + fputc (' ', FILE); \ + assemble_name (FILE, VALUE); \ + } \ + fputc ('\n', FILE); \ + } \ + while (0) + + #define ASM_WEAKEN_LABEL(FILE, NAME) ASM_OUTPUT_WEAK_ALIAS(FILE, NAME, 0) + + /* Handle #pragma weak and #pragma pack. */ + #undef HANDLE_SYSV_PRAGMA + #define HANDLE_SYSV_PRAGMA 1 diff -Nrc3pad gcc-3.0/gcc/config/arm/rtems-elf.h gcc-3.0.1/gcc/config/arm/rtems-elf.h *** gcc-3.0/gcc/config/arm/rtems-elf.h Wed Dec 6 18:42:01 2000 --- gcc-3.0.1/gcc/config/arm/rtems-elf.h Thu Aug 16 17:21:00 2001 *************** Boston, MA 02111-1307, USA. */ *** 26,32 **** #include "unknown-elf.h" #undef CPP_PREDEFINES ! #define CPP_PREDEFINES "-Darm -Darm_elf -Drtems -D__rtems__ -D__ELF__ \ -Asystem(rtems) -Acpu(arm) -Amachine(arm)" /*#undef INVOKE_main*/ --- 26,32 ---- #include "unknown-elf.h" #undef CPP_PREDEFINES ! #define CPP_PREDEFINES "-Drtems -D__rtems__ -D__ELF__ \ -Asystem(rtems) -Acpu(arm) -Amachine(arm)" /*#undef INVOKE_main*/ diff -Nrc3pad gcc-3.0/gcc/config/avr/avr.c gcc-3.0.1/gcc/config/avr/avr.c *** gcc-3.0/gcc/config/avr/avr.c Sat May 12 13:32:41 2001 --- gcc-3.0.1/gcc/config/avr/avr.c Wed Jun 27 14:35:37 2001 *************** legitimate_address_p (mode, x, strict) *** 802,808 **** rtx x; int strict; { ! int r = 0; if (TARGET_ALL_DEBUG) { fprintf (stderr, "mode: (%s) %s %s %s %s:", --- 802,809 ---- rtx x; int strict; { ! enum reg_class r = NO_REGS; ! if (TARGET_ALL_DEBUG) { fprintf (stderr, "mode: (%s) %s %s %s %s:", *************** legitimate_address_p (mode, x, strict) *** 824,832 **** } if (REG_P (x) && (strict ? REG_OK_FOR_BASE_STRICT_P (x) : REG_OK_FOR_BASE_NOSTRICT_P (x))) ! r = 'R'; else if (CONSTANT_ADDRESS_P (x)) ! r = 'S'; else if (GET_CODE (x) == PLUS && REG_P (XEXP (x, 0)) && GET_CODE (XEXP (x, 1)) == CONST_INT --- 825,833 ---- } if (REG_P (x) && (strict ? REG_OK_FOR_BASE_STRICT_P (x) : REG_OK_FOR_BASE_NOSTRICT_P (x))) ! r = POINTER_REGS; else if (CONSTANT_ADDRESS_P (x)) ! r = ALL_REGS; else if (GET_CODE (x) == PLUS && REG_P (XEXP (x, 0)) && GET_CODE (XEXP (x, 1)) == CONST_INT *************** legitimate_address_p (mode, x, strict) *** 838,863 **** if (! strict || REGNO (XEXP (x,0)) == REG_Y || REGNO (XEXP (x,0)) == REG_Z) ! r = 'Q'; if (XEXP (x,0) == frame_pointer_rtx || XEXP (x,0) == arg_pointer_rtx) ! r = 'Q'; } else if (frame_pointer_needed && XEXP (x,0) == frame_pointer_rtx) ! r = 'U'; } else if ((GET_CODE (x) == PRE_DEC || GET_CODE (x) == POST_INC) && REG_P (XEXP (x, 0)) && (strict ? REG_OK_FOR_BASE_STRICT_P (XEXP (x, 0)) : REG_OK_FOR_BASE_NOSTRICT_P (XEXP (x, 0)))) { ! r = 'T'; } if (TARGET_ALL_DEBUG) { fprintf (stderr, " ret = %c\n", r); } ! return r; } /* Attempts to replace X with a valid --- 839,864 ---- if (! strict || REGNO (XEXP (x,0)) == REG_Y || REGNO (XEXP (x,0)) == REG_Z) ! r = BASE_POINTER_REGS; if (XEXP (x,0) == frame_pointer_rtx || XEXP (x,0) == arg_pointer_rtx) ! r = BASE_POINTER_REGS; } else if (frame_pointer_needed && XEXP (x,0) == frame_pointer_rtx) ! r = POINTER_Y_REGS; } else if ((GET_CODE (x) == PRE_DEC || GET_CODE (x) == POST_INC) && REG_P (XEXP (x, 0)) && (strict ? REG_OK_FOR_BASE_STRICT_P (XEXP (x, 0)) : REG_OK_FOR_BASE_NOSTRICT_P (XEXP (x, 0)))) { ! r = POINTER_REGS; } if (TARGET_ALL_DEBUG) { fprintf (stderr, " ret = %c\n", r); } ! return r == NO_REGS ? 0 : (int)r; } /* Attempts to replace X with a valid diff -Nrc3pad gcc-3.0/gcc/config/avr/avr.md gcc-3.0.1/gcc/config/avr/avr.md *** gcc-3.0/gcc/config/avr/avr.md Sat Jan 20 23:08:46 2001 --- gcc-3.0.1/gcc/config/avr/avr.md Wed Jun 27 14:35:37 2001 *************** *** 475,485 **** (set_attr "cc" "clobber,clobber")]) (define_expand "strlenhi" ! [(parallel ! [(set (match_dup 4) ! (unspec:HI [(match_operand:BLK 1 "memory_operand" "") ! (match_operand:QI 2 "const_int_operand" "") ! (match_operand:HI 3 "immediate_operand" "")] 0))]) (set (match_dup 4) (plus:HI (match_dup 4) (const_int -1))) (set (match_operand:HI 0 "register_operand" "") --- 475,484 ---- (set_attr "cc" "clobber,clobber")]) (define_expand "strlenhi" ! [(set (match_dup 4) ! (unspec:HI [(match_operand:BLK 1 "memory_operand" "") ! (match_operand:QI 2 "const_int_operand" "") ! (match_operand:HI 3 "immediate_operand" "")] 0)) (set (match_dup 4) (plus:HI (match_dup 4) (const_int -1))) (set (match_operand:HI 0 "register_operand" "") diff -Nrc3pad gcc-3.0/gcc/config/h8300/h8300.c gcc-3.0.1/gcc/config/h8300/h8300.c *** gcc-3.0/gcc/config/h8300/h8300.c Sat May 12 13:32:43 2001 --- gcc-3.0.1/gcc/config/h8300/h8300.c Wed Jul 4 14:56:14 2001 *************** get_shift_alg (shift_type, shift_mode, c *** 2238,2244 **** { if (count == 15 && shift_type == SHIFT_ASHIFTRT) { ! info->special = "shll\t%t0,%t0\n\tsubx\t%t0,%t0\n\tmov.b\t%t0,%s0"; info->cc_valid_p = 0; return SHIFT_SPECIAL; } --- 2238,2244 ---- { if (count == 15 && shift_type == SHIFT_ASHIFTRT) { ! info->special = "shll\t%t0\n\tsubx\t%t0,%t0\n\tmov.b\t%t0,%s0"; info->cc_valid_p = 0; return SHIFT_SPECIAL; } diff -Nrc3pad gcc-3.0/gcc/config/h8300/t-h8300 gcc-3.0.1/gcc/config/h8300/t-h8300 *** gcc-3.0/gcc/config/h8300/t-h8300 Wed Aug 4 20:27:47 1999 --- gcc-3.0.1/gcc/config/h8300/t-h8300 Mon Jul 9 15:03:17 2001 *************** *** 1,6 **** CROSS_LIBGCC1 = libgcc1-asm.a LIB1ASMSRC = h8300/lib1funcs.asm ! LIB1ASMFUNCS = _cmpsi2 _ucmpsi2 _divhi3 _divsi3 _mulhi3 _mulsi3 # We do not have DF or DI types, so fake out the libgcc2 compilation. TARGET_LIBGCC2_CFLAGS = -DDF=SF -DDI=SI --- 1,7 ---- CROSS_LIBGCC1 = libgcc1-asm.a LIB1ASMSRC = h8300/lib1funcs.asm ! LIB1ASMFUNCS = _cmpsi2 _ucmpsi2 _divhi3 _divsi3 _mulhi3 _mulsi3 \ ! _floatdisf _fixsfdi # We do not have DF or DI types, so fake out the libgcc2 compilation. TARGET_LIBGCC2_CFLAGS = -DDF=SF -DDI=SI diff -Nrc3pad gcc-3.0/gcc/config/i386/freebsd-aout.h gcc-3.0.1/gcc/config/i386/freebsd-aout.h *** gcc-3.0/gcc/config/i386/freebsd-aout.h Sun May 20 12:49:17 2001 --- gcc-3.0.1/gcc/config/i386/freebsd-aout.h Sun Jul 22 13:50:46 2001 *************** Boston, MA 02111-1307, USA. */ *** 34,39 **** --- 34,46 ---- #define TARGET_DEFAULT \ (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS | MASK_NO_FANCY_MATH_387) + /* The macro defined in i386.h doesn't work with the old gas of + FreeBSD 2.x. The definition in sco.h and sol2.h appears to work, + but it turns out that, even though the assembler doesn't complain, + we get incorrect results. Fortunately, the definition in + defaults.h works. */ + #undef ASM_PREFERRED_EH_DATA_FORMAT + #undef CPP_PREDEFINES #define CPP_PREDEFINES "-Dunix -D__FreeBSD__\ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" diff -Nrc3pad gcc-3.0/gcc/config/i386/i386.c gcc-3.0.1/gcc/config/i386/i386.c *** gcc-3.0/gcc/config/i386/i386.c Tue Jun 12 16:17:43 2001 --- gcc-3.0.1/gcc/config/i386/i386.c Mon Aug 6 14:26:24 2001 *************** const int x86_cmove = m_PPRO | m_ATHLON; *** 195,201 **** const int x86_deep_branch = m_PPRO | m_K6 | m_ATHLON; const int x86_use_sahf = m_PPRO | m_K6; const int x86_partial_reg_stall = m_PPRO; ! const int x86_use_loop = m_K6; const int x86_use_fiop = ~(m_PPRO | m_ATHLON | m_PENT); const int x86_use_mov0 = m_K6; const int x86_use_cltd = ~(m_PENT | m_K6); --- 195,202 ---- const int x86_deep_branch = m_PPRO | m_K6 | m_ATHLON; const int x86_use_sahf = m_PPRO | m_K6; const int x86_partial_reg_stall = m_PPRO; ! const int x86_use_loop = 0; /* Should be set to K6 and i386, but is broken ! and temporarily disabled for 3.0.x. */ const int x86_use_fiop = ~(m_PPRO | m_ATHLON | m_PENT); const int x86_use_mov0 = m_K6; const int x86_use_cltd = ~(m_PENT | m_K6); *************** ix86_expand_setcc (code, dest) *** 5537,5545 **** emit subreg setcc, zero extend. 2 -- destination is in QImode: emit setcc only. - */ ! type = 0; if (GET_MODE (dest) == QImode) type = 2; --- 5538,5549 ---- emit subreg setcc, zero extend. 2 -- destination is in QImode: emit setcc only. ! We don't use mode 0 early in compilation because it confuses CSE. ! There are peepholes to turn mode 1 into mode 0 if things work out ! nicely after reload. */ ! ! type = cse_not_expected ? 0 : 1; if (GET_MODE (dest) == QImode) type = 2; diff -Nrc3pad gcc-3.0/gcc/config/i386/i386.h gcc-3.0.1/gcc/config/i386/i386.h *** gcc-3.0/gcc/config/i386/i386.h Wed May 30 13:28:42 2001 --- gcc-3.0.1/gcc/config/i386/i386.h Mon Aug 6 14:26:25 2001 *************** extern int ix86_arch; *** 511,516 **** --- 511,523 ---- aligned; the compiler cannot rely on having this alignment. */ #define PREFERRED_STACK_BOUNDARY ix86_preferred_stack_boundary + /* As of July 2001, many runtimes to not align the stack properly when + entering main. This causes expand_main_function to forcably align + the stack, which results in aligned frames for functions called from + main, though it does nothing for the alignment of main itself. */ + #define FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN \ + (ix86_preferred_stack_boundary > STACK_BOUNDARY) + /* Allocation boundary for the code of a function. */ #define FUNCTION_BOUNDARY \ (1 << ((ix86_align_funcs >= 0 ? ix86_align_funcs : -ix86_align_funcs) + 3)) diff -Nrc3pad gcc-3.0/gcc/config/i386/i386.md gcc-3.0.1/gcc/config/i386/i386.md *** gcc-3.0/gcc/config/i386/i386.md Tue Jun 12 16:17:46 2001 --- gcc-3.0.1/gcc/config/i386/i386.md Mon Aug 6 13:33:40 2001 *************** *** 9594,9599 **** --- 9594,9618 ---- (match_dup 0) (pc)))] "") + + ;; Convert setcc + movzbl to xor + setcc if operands don't overlap. + + (define_peephole2 + [(set (reg 17) (match_operand 0 "" "")) + (set (match_operand:QI 1 "register_operand" "") + (match_operator:QI 2 "ix86_comparison_operator" + [(reg 17) (const_int 0)])) + (set (match_operand 3 "q_regs_operand" "") + (zero_extend (match_dup 1)))] + "peep2_reg_dead_p (3, operands[1]) + && ! reg_overlap_mentioned_p (operands[3], operands[0])" + [(parallel [(set (match_dup 3) (const_int 0)) + (clobber (reg:CC 17))]) + (set (match_dup 4) (match_dup 0)) + (set (strict_low_part (match_dup 5)) + (match_dup 2))] + "operands[4] = gen_rtx_REG (GET_MODE (operands[0]), 17); + operands[5] = gen_rtx_REG (QImode, REGNO (operands[3]));") ;; Call instructions. *************** *** 12577,12582 **** --- 12596,12620 ---- (const_int 128))) (clobber (match_dup 0))])] "") + + ;; Convert setcc + movzbl to xor + setcc if operands don't overlap. + + (define_peephole2 + [(set (reg 17) (match_operand 0 "" "")) + (set (match_operand:QI 1 "register_operand" "") + (match_operator:QI 2 "ix86_comparison_operator" + [(reg 17) (const_int 0)])) + (set (match_operand 3 "q_regs_operand" "") + (zero_extend (match_dup 1)))] + "peep2_reg_dead_p (3, operands[1]) + && ! reg_overlap_mentioned_p (operands[3], operands[0])" + [(parallel [(set (match_dup 3) (const_int 0)) + (clobber (reg:CC 17))]) + (set (match_dup 4) (match_dup 0)) + (set (strict_low_part (match_dup 5)) + (match_dup 2))] + "operands[4] = gen_rtx_REG (GET_MODE (operands[0]), 17); + operands[5] = gen_rtx_REG (QImode, REGNO (operands[3]));") ;; Call-value patterns last so that the wildcard operand does not ;; disrupt insn-recog's switch tables. diff -Nrc3pad gcc-3.0/gcc/config/i386/openbsd.h gcc-3.0.1/gcc/config/i386/openbsd.h *** gcc-3.0/gcc/config/i386/openbsd.h Sun May 20 12:49:17 2001 --- gcc-3.0.1/gcc/config/i386/openbsd.h Fri Jul 13 11:01:42 2001 *************** Boston, MA 02111-1307, USA. */ *** 114,119 **** --- 114,121 ---- configuration files... */ #define DWARF2_UNWIND_INFO 0 + #undef ASM_PREFERRED_EH_DATA_FORMAT + /* Assembler format: alignment output. */ /* A C statement to output to the stdio stream FILE an assembler *************** Boston, MA 02111-1307, USA. */ *** 133,135 **** --- 135,141 ---- #endif /* Note that we pick up ASM_OUTPUT_MI_THUNK from unix.h. */ + + #undef ASM_COMMENT_START + #define ASM_COMMENT_START ";#" + diff -Nrc3pad gcc-3.0/gcc/config/i386/sco5.h gcc-3.0.1/gcc/config/i386/sco5.h *** gcc-3.0/gcc/config/i386/sco5.h Tue May 22 10:13:48 2001 --- gcc-3.0.1/gcc/config/i386/sco5.h Sat Jul 28 23:47:53 2001 *************** do { \ *** 536,546 **** --- 536,548 ---- #define DBX_REGISTER_NUMBER(n) \ ((TARGET_ELF) ? svr4_dbx_register_map[n] : dbx_register_map[n]) + #undef DWARF2_DEBUGGING_INFO #undef DWARF_DEBUGGING_INFO #undef SDB_DEBUGGING_INFO #undef DBX_DEBUGGING_INFO #undef PREFERRED_DEBUGGING_TYPE + #define DWARF2_DEBUGGING_INFO 1 #define DWARF_DEBUGGING_INFO 1 #define SDB_DEBUGGING_INFO 1 #define DBX_DEBUGGING_INFO 1 diff -Nrc3pad gcc-3.0/gcc/config/i386/sol2.h gcc-3.0.1/gcc/config/i386/sol2.h *** gcc-3.0/gcc/config/i386/sol2.h Thu Nov 2 15:29:10 2000 --- gcc-3.0.1/gcc/config/i386/sol2.h Tue Jul 3 05:33:09 2001 *************** *** 1,5 **** /* Target definitions for GNU compiler for Intel 80386 running Solaris 2 ! Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. Contributed by Fred Fish (fnf@cygnus.com). --- 1,5 ---- /* Target definitions for GNU compiler for Intel 80386 running Solaris 2 ! Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. Contributed by Fred Fish (fnf@cygnus.com). *************** Boston, MA 02111-1307, USA. */ *** 61,76 **** #define FORCE_INIT_SECTION_ALIGN asm (ALIGN_ASM_OP ## "16") #define FORCE_FINI_SECTION_ALIGN FORCE_INIT_SECTION_ALIGN /* Add "sun" to the list of symbols defined for SVR4. */ #undef CPP_PREDEFINES #define CPP_PREDEFINES \ "-Dunix -D__svr4__ -D__SVR4 -Dsun -Asystem=svr4" #undef CPP_SPEC ! #define CPP_SPEC "%(cpp_cpu) \ ! %{pthreads:-D_REENTRANT -D_PTHREADS} \ ! %{!pthreads:%{threads:-D_REENTRANT -D_SOLARIS_THREADS}} \ ! %{compat-bsd:-iwithprefixbefore ucbinclude -I/usr/ucbinclude}" #undef LIB_SPEC #define LIB_SPEC \ --- 61,87 ---- #define FORCE_INIT_SECTION_ALIGN asm (ALIGN_ASM_OP ## "16") #define FORCE_FINI_SECTION_ALIGN FORCE_INIT_SECTION_ALIGN + /* Select a format to encode pointers in exception handling data. CODE + is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is + true if the symbol may be affected by dynamic relocations. */ + #undef ASM_PREFERRED_EH_DATA_FORMAT + #define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \ + (flag_pic ? (GLOBAL ? DW_EH_PE_indirect : 0) | DW_EH_PE_datarel \ + : DW_EH_PE_absptr) + /* Add "sun" to the list of symbols defined for SVR4. */ #undef CPP_PREDEFINES #define CPP_PREDEFINES \ "-Dunix -D__svr4__ -D__SVR4 -Dsun -Asystem=svr4" + /* Solaris 2/Intel as chokes on #line directives. */ #undef CPP_SPEC ! #define CPP_SPEC \ ! "%{.S:-P} \ ! %(cpp_cpu) \ ! %{pthreads:-D_REENTRANT -D_PTHREADS} \ ! %{!pthreads:%{threads:-D_REENTRANT -D_SOLARIS_THREADS}} \ ! %{compat-bsd:-iwithprefixbefore ucbinclude -I/usr/ucbinclude}" #undef LIB_SPEC #define LIB_SPEC \ diff -Nrc3pad gcc-3.0/gcc/config/i386/t-cygwin gcc-3.0.1/gcc/config/i386/t-cygwin *** gcc-3.0/gcc/config/i386/t-cygwin Fri Feb 9 12:06:15 2001 --- gcc-3.0.1/gcc/config/i386/t-cygwin Wed Aug 8 19:26:11 2001 *************** LIBGCC2_INCLUDES = -I$(srcdir)/../winsup *** 16,20 **** -I$(srcdir)/../winsup/cygwin/include \ -I$(srcdir)/../winsup/w32api/include ! winnt.o: $(srcdir)/config/i386/winnt.c $(RTL_H) $(TREE_H) $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/config/i386/winnt.c --- 16,20 ---- -I$(srcdir)/../winsup/cygwin/include \ -I$(srcdir)/../winsup/w32api/include ! winnt.o: $(srcdir)/config/i386/winnt.c $(RTL_H) $(TREE_H) $(CONFIG_H) $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/config/i386/winnt.c diff -Nrc3pad gcc-3.0/gcc/config/i386/t-openbsd gcc-3.0.1/gcc/config/i386/t-openbsd *** gcc-3.0/gcc/config/i386/t-openbsd Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/config/i386/t-openbsd Fri Jul 13 11:01:42 2001 *************** *** 0 **** --- 1,6 ---- + # gdb gets confused if pic code is linked with non pic + # We cope by building variants of libgcc. + MULTILIB_OPTIONS = fpic + MULTILIB_MATCHES=fpic=fPIC + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib diff -Nrc3pad gcc-3.0/gcc/config/i960/i960.h gcc-3.0.1/gcc/config/i960/i960.h *** gcc-3.0/gcc/config/i960/i960.h Thu Nov 2 15:29:10 2000 --- gcc-3.0.1/gcc/config/i960/i960.h Tue Jul 24 18:56:47 2001 *************** Boston, MA 02111-1307, USA. */ *** 39,44 **** --- 39,45 ---- %{mmc:-D__i960MC}\ %{mca:-D__i960CA}%{mcc:-D__i960CC}\ %{mcf:-D__i960CF}}\ + %{msoft-float:-D_SOFT_FLOAT}\ %{mka:-D__i960KA__ -D__i960_KA__}\ %{mkb:-D__i960KB__ -D__i960_KB__}\ %{msa:-D__i960SA__ -D__i960_SA__}\ diff -Nrc3pad gcc-3.0/gcc/config/ia64/crtbegin.asm gcc-3.0.1/gcc/config/ia64/crtbegin.asm *** gcc-3.0/gcc/config/ia64/crtbegin.asm Thu Feb 22 15:01:01 2001 --- gcc-3.0.1/gcc/config/ia64/crtbegin.asm Thu Aug 9 09:19:52 2001 *************** __DTOR_LIST__: *** 32,45 **** dtor_ptr: data8 __DTOR_LIST__# + 8 - #ifndef SHARED - .type __ia64_app_header#,@object - .size __ia64_app_header#,8 - .global __ia64_app_header - __ia64_app_header: - data8 @segrel(.Lsegrel_ref#) - #endif - /* A handle for __cxa_finalize to manage c++ local destructors. */ .global __dso_handle# .type __dso_handle#,@object --- 32,37 ---- *************** __dso_handle: *** 84,113 **** br.call.sptk.many b0 = b6 ;; } - - #ifndef SHARED - /* - * Fragment of the ELF _init routine that sets up __ia64_app_header - */ - - .section .init,"ax","progbits" - .Lsegrel_ref: - { .mmi - addl r2 = @gprel(__ia64_app_header), gp - mov r16 = ip - ;; - } - { .mmi - ld8 r3 = [r2] - ;; - sub r16 = r16, r3 - ;; - } - { .mfb - st8 [r2] = r16 - ;; - } - #endif .section .text .align 16 --- 76,81 ---- diff -Nrc3pad gcc-3.0/gcc/config/ia64/fde-glibc.c gcc-3.0.1/gcc/config/ia64/fde-glibc.c *** gcc-3.0/gcc/config/ia64/fde-glibc.c Sun May 13 00:10:10 2001 --- gcc-3.0.1/gcc/config/ia64/fde-glibc.c Thu Aug 9 09:19:52 2001 *************** *** 1,4 **** ! /* Copyright (C) 2000 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of GNU CC. --- 1,4 ---- ! /* Copyright (C) 2000, 2001 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of GNU CC. *************** *** 28,84 **** /* Locate the FDE entry for a given address, using glibc ld.so routines to avoid register/deregister calls at DSO load/unload. */ #include #include - #include #include "unwind-ia64.h" ! /* Initialized by crtbegin from the main application. */ ! extern Elf64_Ehdr *__ia64_app_header; ! ! /* ??? A redeclaration of the lock in ld.so. Perhaps this should ! appear in in a new glibc version. */ ! __libc_lock_define (extern, _dl_load_lock) ! ! /* This always exists, even in a static application. */ ! extern struct link_map *_dl_loaded; ! static struct unw_table_entry * ! find_fde_for_dso (Elf64_Addr pc, Elf64_Ehdr *ehdr, ! unsigned long *pseg_base, unsigned long *pgp) { ! Elf64_Phdr *phdr, *p_unwind, *p_dynamic; long n, match; Elf64_Addr load_base, seg_base; struct unw_table_entry *f_base, *f; size_t lo, hi; ! /* Verify that we are looking at an ELF header. */ ! if (ehdr->e_ident[0] != 0x7f ! || ehdr->e_ident[1] != 'E' ! || ehdr->e_ident[2] != 'L' ! || ehdr->e_ident[3] != 'F' ! || ehdr->e_ident[EI_CLASS] != ELFCLASS64 ! || ehdr->e_ident[EI_DATA] != ELFDATA2LSB ! || ehdr->e_machine != EM_IA_64) ! abort (); match = 0; ! phdr = (Elf64_Phdr *)((char *)ehdr + ehdr->e_phoff); ! load_base = (ehdr->e_type == ET_DYN ? (Elf64_Addr)ehdr : 0); p_unwind = NULL; p_dynamic = NULL; /* See if PC falls into one of the loaded segments. Find the unwind segment at the same time. */ ! for (n = ehdr->e_phnum; --n >= 0; phdr++) { if (phdr->p_type == PT_LOAD) { Elf64_Addr vaddr = phdr->p_vaddr + load_base; ! if (pc >= vaddr && pc < vaddr + phdr->p_memsz) match = 1; } else if (phdr->p_type == PT_IA_64_UNWIND) p_unwind = phdr; --- 28,88 ---- /* Locate the FDE entry for a given address, using glibc ld.so routines to avoid register/deregister calls at DSO load/unload. */ + #ifndef _GNU_SOURCE + #define _GNU_SOURCE + #endif + #include "config.h" + #include #include #include #include "unwind-ia64.h" + #if __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 2) \ + || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && !defined(DT_CONFIG)) + # error You need GLIBC 2.2.4 or later on IA-64 Linux + #endif ! struct unw_ia64_callback_data ! { ! Elf64_Addr pc; ! unsigned long *segment_base; ! unsigned long *gp; ! struct unw_table_entry *ret; ! }; ! static int ! _Unwind_IteratePhdrCallback (struct dl_phdr_info *info, size_t size, void *ptr) { ! struct unw_ia64_callback_data *data = (struct unw_ia64_callback_data *) ptr; ! const Elf64_Phdr *phdr, *p_unwind, *p_dynamic; long n, match; Elf64_Addr load_base, seg_base; struct unw_table_entry *f_base, *f; size_t lo, hi; ! /* Make sure struct dl_phdr_info is at least as big as we need. */ ! if (size < offsetof (struct dl_phdr_info, dlpi_phnum) ! + sizeof (info->dlpi_phnum)) ! return -1; match = 0; ! phdr = info->dlpi_phdr; ! load_base = info->dlpi_addr; p_unwind = NULL; p_dynamic = NULL; + seg_base = ~(Elf64_Addr) 0; /* See if PC falls into one of the loaded segments. Find the unwind segment at the same time. */ ! for (n = info->dlpi_phnum; --n >= 0; phdr++) { if (phdr->p_type == PT_LOAD) { Elf64_Addr vaddr = phdr->p_vaddr + load_base; ! if (data->pc >= vaddr && data->pc < vaddr + phdr->p_memsz) match = 1; + if (vaddr < seg_base) + seg_base = vaddr; } else if (phdr->p_type == PT_IA_64_UNWIND) p_unwind = phdr; *************** find_fde_for_dso (Elf64_Addr pc, Elf64_E *** 86,97 **** p_dynamic = phdr; } if (!match || !p_unwind) ! return NULL; /* Search for the FDE within the unwind segment. */ f_base = (struct unw_table_entry *) (p_unwind->p_vaddr + load_base); - seg_base = (Elf64_Addr) ehdr; lo = 0; hi = p_unwind->p_memsz / sizeof (struct unw_table_entry); --- 90,100 ---- p_dynamic = phdr; } if (!match || !p_unwind) ! return 0; /* Search for the FDE within the unwind segment. */ f_base = (struct unw_table_entry *) (p_unwind->p_vaddr + load_base); lo = 0; hi = p_unwind->p_memsz / sizeof (struct unw_table_entry); *************** find_fde_for_dso (Elf64_Addr pc, Elf64_E *** 100,117 **** size_t mid = (lo + hi) / 2; f = f_base + mid; ! if (pc < f->start_offset + seg_base) hi = mid; ! else if (pc >= f->end_offset + seg_base) lo = mid + 1; else goto found; } ! return NULL; found: ! *pseg_base = seg_base; ! *pgp = 0; if (p_dynamic) { --- 103,121 ---- size_t mid = (lo + hi) / 2; f = f_base + mid; ! if (data->pc < f->start_offset + seg_base) hi = mid; ! else if (data->pc >= f->end_offset + seg_base) lo = mid + 1; else goto found; } ! return 0; found: ! *data->segment_base = seg_base; ! *data->gp = 0; ! data->ret = f; if (p_dynamic) { *************** find_fde_for_dso (Elf64_Addr pc, Elf64_E *** 121,128 **** for (; dyn->d_tag != DT_NULL ; dyn++) if (dyn->d_tag == DT_PLTGOT) { ! /* ??? Glibc seems to have relocated this already. */ ! *pgp = dyn->d_un.d_ptr; break; } } --- 125,132 ---- for (; dyn->d_tag != DT_NULL ; dyn++) if (dyn->d_tag == DT_PLTGOT) { ! /* On IA-64, _DYNAMIC is writable and GLIBC has relocated it. */ ! *data->gp = dyn->d_un.d_ptr; break; } } *************** find_fde_for_dso (Elf64_Addr pc, Elf64_E *** 131,140 **** /* Otherwise this is a static executable with no _DYNAMIC. The gp is constant program-wide. */ register unsigned long gp __asm__("gp"); ! *pgp = gp; } ! return f; } /* Return a pointer to the unwind table entry for the function --- 135,144 ---- /* Otherwise this is a static executable with no _DYNAMIC. The gp is constant program-wide. */ register unsigned long gp __asm__("gp"); ! *data->gp = gp; } ! return 1; } /* Return a pointer to the unwind table entry for the function *************** struct unw_table_entry * *** 144,177 **** _Unwind_FindTableEntry (void *pc, unsigned long *segment_base, unsigned long *gp) { ! struct unw_table_entry *ret; ! struct link_map *map; ! ! /* Check the main application first, hoping that most of the user's ! code is there instead of in some library. */ ! ret = find_fde_for_dso ((Elf64_Addr)pc, __ia64_app_header, ! segment_base, gp); ! if (ret) ! return ret; ! ! /* Glibc is probably unique in that we can (with certain restrictions) ! dynamicly load libraries into staticly linked applications. Thus ! we _always_ check _dl_loaded. */ ! ! __libc_lock_lock (_dl_load_lock); ! for (map = _dl_loaded; map ; map = map->l_next) ! { ! /* Skip the main application's entry. */ ! if (map->l_name[0] == 0) ! continue; ! ret = find_fde_for_dso ((Elf64_Addr)pc, (Elf64_Ehdr *)map->l_addr, ! segment_base, gp); ! if (ret) ! break; ! } ! __libc_lock_unlock (_dl_load_lock); ! return ret; } --- 148,162 ---- _Unwind_FindTableEntry (void *pc, unsigned long *segment_base, unsigned long *gp) { ! struct unw_ia64_callback_data data; ! data.pc = (Elf64_Addr) pc; ! data.segment_base = segment_base; ! data.gp = gp; ! data.ret = NULL; ! if (dl_iterate_phdr (_Unwind_IteratePhdrCallback, &data) < 0) ! return NULL; ! return data.ret; } diff -Nrc3pad gcc-3.0/gcc/config/ia64/ia64.h gcc-3.0.1/gcc/config/ia64/ia64.h *** gcc-3.0/gcc/config/ia64/ia64.h Fri Jun 8 10:10:35 2001 --- gcc-3.0.1/gcc/config/ia64/ia64.h Wed Jul 25 06:24:46 2001 *************** do { \ *** 1971,1977 **** that encode section info. */ #define STRIP_NAME_ENCODING(VAR, SYMBOL_NAME) \ ! (VAR) = (SYMBOL_NAME) + ((SYMBOL_NAME)[0] == SDATA_NAME_FLAG_CHAR) /* Position Independent Code. */ --- 1971,1979 ---- that encode section info. */ #define STRIP_NAME_ENCODING(VAR, SYMBOL_NAME) \ ! (VAR) = ((SYMBOL_NAME) \ ! + (*(SYMBOL_NAME) == '*' || *(SYMBOL_NAME) == SDATA_NAME_FLAG_CHAR)) ! /* Position Independent Code. */ diff -Nrc3pad gcc-3.0/gcc/config/ia64/ia64.md gcc-3.0.1/gcc/config/ia64/ia64.md *** gcc-3.0/gcc/config/ia64/ia64.md Tue May 22 13:04:11 2001 --- gcc-3.0.1/gcc/config/ia64/ia64.md Wed Jul 25 06:35:00 2001 *************** *** 4972,4980 **** { emit_library_call (gen_rtx_SYMBOL_REF (Pmode, \"__ia64_nonlocal_goto\"), LCT_NORETURN, VOIDmode, 3, ! operands[3], Pmode, copy_to_reg (XEXP (operands[2], 0)), Pmode, ! operands[1], Pmode); emit_barrier (); DONE; }") --- 4972,4980 ---- { emit_library_call (gen_rtx_SYMBOL_REF (Pmode, \"__ia64_nonlocal_goto\"), LCT_NORETURN, VOIDmode, 3, ! operands[1], Pmode, copy_to_reg (XEXP (operands[2], 0)), Pmode, ! operands[3], Pmode); emit_barrier (); DONE; }") diff -Nrc3pad gcc-3.0/gcc/config/m68hc11/larith.asm gcc-3.0.1/gcc/config/m68hc11/larith.asm *** gcc-3.0/gcc/config/m68hc11/larith.asm Fri May 4 13:58:19 2001 --- gcc-3.0.1/gcc/config/m68hc11/larith.asm Fri Aug 3 14:05:49 2001 *************** __premain: *** 179,191 **** ;; ;; Exit operation. Just loop forever and wait for interrupts. ;; (no other place to go) ;; ! .sect .text ! .globl _exit .globl exit .weak exit exit: _exit: fatal: cli wai --- 179,204 ---- ;; ;; Exit operation. Just loop forever and wait for interrupts. ;; (no other place to go) + ;; This operation is split in several pieces collected together by + ;; the linker script. This allows to support destructors at the + ;; exit stage while not impacting program sizes when there is no + ;; destructors. ;; ! ;; _exit: ! ;; *(.fini0) /* Beginning of finish code (_exit symbol). */ ! ;; *(.fini1) /* Place holder for applications. */ ! ;; *(.fini2) /* C++ destructors. */ ! ;; *(.fini3) /* Place holder for applications. */ ! ;; *(.fini4) /* Runtime exit. */ ! ;; ! .sect .fini0,"ax",@progbits ! .globl _exit .globl exit .weak exit exit: _exit: + + .sect .fini4,"ax",@progbits fatal: cli wai *************** A_low_B_low: *** 1035,1041 **** #ifdef L_map_data ! .sect .install3,"ax",@progbits .globl __map_data_section __map_data_section: --- 1048,1054 ---- #ifdef L_map_data ! .sect .install2,"ax",@progbits .globl __map_data_section __map_data_section: *************** Done: *** 1063,1069 **** #ifdef L_init_bss ! .sect .install3,"ax",@progbits .globl __init_bss_section __init_bss_section: --- 1076,1082 ---- #ifdef L_init_bss ! .sect .install2,"ax",@progbits .globl __init_bss_section __init_bss_section: *************** Loop: *** 1083,1089 **** Done: #endif ! ;----------------------------------------- ; end required gcclib code ;----------------------------------------- --- 1096,1153 ---- Done: #endif ! ! #ifdef L_ctor ! ! ; End of constructor table ! .sect .install3,"ax",@progbits ! .globl __do_global_ctors ! ! __do_global_ctors: ! ; Start from the end - sizeof(void*) ! ldx #__CTOR_END__-2 ! ctors_loop: ! cpx #__CTOR_LIST__ ! blt ctors_done ! pshx ! ldx 0,x ! jsr 0,x ! pulx ! dex ! dex ! bra ctors_loop ! ctors_done: ! ! #endif ! ! #ifdef L_dtor ! ! .sect .fini3,"ax",@progbits ! .globl __do_global_dtors ! ! ;; ! ;; This piece of code is inserted in the _exit() code by the linker. ! ;; ! __do_global_dtors: ! pshb ; Save exit code ! psha ! ldx #__DTOR_LIST__ ! dtors_loop: ! cpx #__DTOR_END__ ! bge dtors_done ! pshx ! ldx 0,x ! jsr 0,x ! pulx ! inx ! inx ! bra dtors_loop ! dtors_done: ! pula ; Restore exit code ! pulb ! ! #endif ! ;----------------------------------------- ; end required gcclib code ;----------------------------------------- diff -Nrc3pad gcc-3.0/gcc/config/m68hc11/m68hc11.c gcc-3.0.1/gcc/config/m68hc11/m68hc11.c *** gcc-3.0/gcc/config/m68hc11/m68hc11.c Mon Jun 11 15:15:11 2001 --- gcc-3.0.1/gcc/config/m68hc11/m68hc11.c Fri Jul 20 12:38:15 2001 *************** m68hc11_initial_elimination_offset (from *** 1254,1260 **** if (from == FRAME_POINTER_REGNUM && to == HARD_FRAME_POINTER_REGNUM) { ! return 0; } /* Push any 2 byte pseudo hard registers that we need to save. */ --- 1254,1260 ---- if (from == FRAME_POINTER_REGNUM && to == HARD_FRAME_POINTER_REGNUM) { ! return m68hc11_sp_correction; } /* Push any 2 byte pseudo hard registers that we need to save. */ *************** m68hc11_initial_elimination_offset (from *** 1273,1279 **** if (from == FRAME_POINTER_REGNUM && to == HARD_SP_REGNUM) { ! return size - m68hc11_sp_correction; } return 0; } --- 1273,1279 ---- if (from == FRAME_POINTER_REGNUM && to == HARD_SP_REGNUM) { ! return size; } return 0; } *************** m68hc11_gen_highpart (mode, x) *** 1939,1956 **** } /* gen_highpart crashes when it is called with a SUBREG. */ ! if (GET_CODE (x) == SUBREG && SUBREG_WORD (x) != 0) { return gen_rtx (SUBREG, mode, XEXP (x, 0), XEXP (x, 1)); } ! x = gen_highpart (mode, x); - /* Return a different rtx to avoid to share it in several insns - (when used by a split pattern). Sharing addresses within - a MEM breaks the Z register replacement (and reloading). */ if (GET_CODE (x) == MEM) ! x = copy_rtx (x); ! return x; } --- 1939,1968 ---- } /* gen_highpart crashes when it is called with a SUBREG. */ ! if (GET_CODE (x) == SUBREG) { return gen_rtx (SUBREG, mode, XEXP (x, 0), XEXP (x, 1)); } ! if (GET_CODE (x) == REG) ! { ! if (REGNO (x) < FIRST_PSEUDO_REGISTER) ! return gen_rtx (REG, mode, REGNO (x)); ! else ! return gen_rtx_SUBREG (mode, x, 0); ! } if (GET_CODE (x) == MEM) ! { ! x = change_address (x, mode, 0); ! ! /* Return a different rtx to avoid to share it in several insns ! (when used by a split pattern). Sharing addresses within ! a MEM breaks the Z register replacement (and reloading). */ ! if (GET_CODE (x) == MEM) ! x = copy_rtx (x); ! return x; ! } ! abort (); } diff -Nrc3pad gcc-3.0/gcc/config/m68hc11/m68hc11.h gcc-3.0.1/gcc/config/m68hc11/m68hc11.h *** gcc-3.0/gcc/config/m68hc11/m68hc11.h Mon Jun 11 15:15:11 2001 --- gcc-3.0.1/gcc/config/m68hc11/m68hc11.h Fri Aug 3 14:05:49 2001 *************** extern enum reg_class m68hc11_tmp_regs_c *** 877,884 **** If FRAME_GROWS_DOWNWARD, this is the offset to the END of the first local allocated. Otherwise, it is the offset to the BEGINNING of the first local allocated. */ ! extern int m68hc11_sp_correction; ! #define STARTING_FRAME_OFFSET m68hc11_sp_correction /* Offset of first parameter from the argument pointer register value. */ --- 877,883 ---- If FRAME_GROWS_DOWNWARD, this is the offset to the END of the first local allocated. Otherwise, it is the offset to the BEGINNING of the first local allocated. */ ! #define STARTING_FRAME_OFFSET 0 /* Offset of first parameter from the argument pointer register value. */ *************** extern int m68hc11_sp_correction; *** 894,903 **** #define INCOMING_RETURN_ADDR_RTX \ gen_rtx_MEM (VOIDmode, gen_rtx_REG (VOIDmode, STACK_POINTER_REGNUM)) ! /* After the prologue, RA is at -2(AP) in the current frame. */ #define RETURN_ADDR_RTX(COUNT, FRAME) \ ((COUNT) == 0 \ ! ? gen_rtx_MEM (Pmode, plus_constant (arg_pointer_rtx, -2))\ : 0) /* Before the prologue, the top of the frame is at 2(sp). */ --- 893,902 ---- #define INCOMING_RETURN_ADDR_RTX \ gen_rtx_MEM (VOIDmode, gen_rtx_REG (VOIDmode, STACK_POINTER_REGNUM)) ! /* After the prologue, RA is at 0(AP) in the current frame. */ #define RETURN_ADDR_RTX(COUNT, FRAME) \ ((COUNT) == 0 \ ! ? gen_rtx_MEM (Pmode, arg_pointer_rtx) \ : 0) /* Before the prologue, the top of the frame is at 2(sp). */ *************** do { *** 1613,1618 **** --- 1612,1663 ---- /* Output before uninitialized data. */ #define BSS_SECTION_ASM_OP ("\t.sect\t.bss") + + /* This is the pseudo-op used to generate a reference to a specific + symbol in some section. It is only used in machine-specific + configuration files, typically only in ASM_OUTPUT_CONSTRUCTOR and + ASM_OUTPUT_DESTRUCTOR. This is the same for all known svr4 + assemblers, except those in targets that don't use 32-bit pointers. + Those should override INT_ASM_OP. Yes, the name of the macro is + misleading. */ + #undef INT_ASM_OP + #define INT_ASM_OP "\t.word\t" + + /* Define the pseudo-ops used to switch to the .ctors and .dtors sections. + + Same as config/elfos.h but don't mark these section SHF_WRITE since + there is no shared library problem. */ + #undef CTORS_SECTION_ASM_OP + #define CTORS_SECTION_ASM_OP "\t.section\t.ctors,\"a\"" + + #undef DTORS_SECTION_ASM_OP + #define DTORS_SECTION_ASM_OP "\t.section\t.dtors,\"a\"" + + #undef CTORS_SECTION_FUNCTION + #define CTORS_SECTION_FUNCTION \ + void \ + ctors_section () \ + { \ + if (in_section != in_ctors) \ + { \ + fprintf (asm_out_file, "\t.globl\t__do_global_ctors\n"); \ + fprintf (asm_out_file, "%s\n", CTORS_SECTION_ASM_OP); \ + in_section = in_ctors; \ + } \ + } + + #undef DTORS_SECTION_FUNCTION + #define DTORS_SECTION_FUNCTION \ + void \ + dtors_section () \ + { \ + if (in_section != in_dtors) \ + { \ + fprintf (asm_out_file, "\t.globl\t__do_global_dtors\n"); \ + fprintf (asm_out_file, "%s\n", DTORS_SECTION_ASM_OP); \ + in_section = in_dtors; \ + } \ + } /* This is how to begin an assembly language file. Most svr4 assemblers want at least a .file directive to come first, and some want to see a .version diff -Nrc3pad gcc-3.0/gcc/config/m68hc11/m68hc11.md gcc-3.0.1/gcc/config/m68hc11/m68hc11.md *** gcc-3.0/gcc/config/m68hc11/m68hc11.md Mon Jun 11 15:04:55 2001 --- gcc-3.0.1/gcc/config/m68hc11/m68hc11.md Sat Aug 4 04:30:00 2001 *************** *** 303,315 **** (define_insn "cmphi_1" [(set (cc0) (compare (match_operand:HI 0 "tst_operand" ! "xy,d,?xy,d,dxy,dxy,dxy") (match_operand:HI 1 "cmp_operand" ! "i,i,m,m,?*d*A,?u,!*w")))] "" "* { ! if (H_REG_P (operands[1])) return \"#\"; else return \"cp%0\\t%1\"; --- 303,320 ---- (define_insn "cmphi_1" [(set (cc0) (compare (match_operand:HI 0 "tst_operand" ! "x,dy,xyd,?xy,d,m,!u,dxy,dxy") (match_operand:HI 1 "cmp_operand" ! "i,i,!u,m,m,dxy,dxy,?*d*A,!*w")))] "" "* { ! if (H_REG_P (operands[1]) && !H_REG_P (operands[0])) ! { ! cc_status.flags |= CC_REVERSED; ! return \"cp%1\\t%0\"; ! } ! else if (H_REG_P (operands[1])) return \"#\"; else return \"cp%0\\t%1\"; *************** *** 317,334 **** (define_insn "cmphi_z_used" [(set (cc0) ! (compare (match_operand:HI 0 "hard_reg_operand" "dxy") ! (match_operand:HI 1 "cmp_operand" "m"))) ! (use (match_operand:HI 2 "hard_reg_operand" "dxy")) (use (reg:HI 11))] "" "#") (define_split /* "cmphi_z_used" */ [(set (cc0) ! (compare (match_operand:HI 0 "hard_reg_operand" "dxy") ! (match_operand:HI 1 "cmp_operand" "m"))) ! (use (match_operand:HI 2 "hard_reg_operand" "dxy")) (use (reg:HI 11))] "z_replacement_completed == 2" [(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM))) (match_dup 2)) --- 322,339 ---- (define_insn "cmphi_z_used" [(set (cc0) ! (compare (match_operand:HI 0 "tst_operand" "dxy,m") ! (match_operand:HI 1 "cmp_operand" "m,dxy"))) ! (use (match_operand:HI 2 "hard_reg_operand" "dxy,dxy")) (use (reg:HI 11))] "" "#") (define_split /* "cmphi_z_used" */ [(set (cc0) ! (compare (match_operand:HI 0 "tst_operand" "dxy,m") ! (match_operand:HI 1 "cmp_operand" "m,dxy"))) ! (use (match_operand:HI 2 "hard_reg_operand" "dxy,dxy")) (use (reg:HI 11))] "z_replacement_completed == 2" [(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM))) (match_dup 2)) *************** *** 385,412 **** (define_insn "bitcmpqi" [(set (cc0) ! (and:QI (match_operand:QI 0 "tst_operand" "d,d,d") ! (match_operand:QI 1 "cmp_operand" "im,*A,u")))] "" "@ ! bitb\\t%1 # ! bitb\\t%1") ! (define_insn "bitcmpqi_z_used" [(set (cc0) (and:QI (match_operand:QI 0 "tst_operand" "d") ! (match_operand:QI 1 "cmp_operand" "m"))) ! (use (match_operand:HI 2 "hard_reg_operand" "xy")) (use (reg:HI 11))] "" "#") (define_split /* "bitcmpqi_z_used" */ [(set (cc0) ! (and:QI (match_operand:QI 0 "tst_operand" "d") ! (match_operand:QI 1 "cmp_operand" "m"))) ! (use (match_operand:HI 2 "hard_reg_operand" "xy")) (use (reg:HI 11))] "z_replacement_completed == 2" [(set (mem:HI (pre_dec:HI (reg:HI 3))) (match_dup 2)) --- 390,430 ---- (define_insn "bitcmpqi" [(set (cc0) ! (and:QI (match_operand:QI 0 "tst_operand" "d,d,d,m,!u") ! (match_operand:QI 1 "cmp_operand" "im,*B,u,d,d")))] "" "@ ! bitb\\t%b1 # ! bitb\\t%b1 ! bitb\\t%b0 ! bitb\\t%b0") ! (define_split /* "bitcmpqi" */ [(set (cc0) (and:QI (match_operand:QI 0 "tst_operand" "d") ! (match_operand:QI 1 "hard_addr_reg_operand" "xy")))] ! "z_replacement_completed == 2 && GET_MODE (operands[0]) == QImode" ! [(set (match_dup 3) (match_dup 2)) ! (set (cc0) (and:QI (match_dup 0) (match_dup 4)))] ! "operands[2] = gen_rtx (REG, HImode, REGNO (operands[1])); ! operands[3] = gen_rtx (REG, HImode, SOFT_TMP_REGNUM); ! operands[4] = gen_rtx (REG, QImode, SOFT_TMP_REGNUM);") ! ! (define_insn "bitcmpqi_z_used" ! [(set (cc0) ! (and:QI (match_operand:QI 0 "tst_operand" "d,m") ! (match_operand:QI 1 "cmp_operand" "m,d"))) ! (use (match_operand:HI 2 "hard_reg_operand" "xy,xy")) (use (reg:HI 11))] "" "#") (define_split /* "bitcmpqi_z_used" */ [(set (cc0) ! (and:QI (match_operand:QI 0 "tst_operand" "d,m") ! (match_operand:QI 1 "cmp_operand" "m,d"))) ! (use (match_operand:HI 2 "hard_reg_operand" "xy,xy")) (use (reg:HI 11))] "z_replacement_completed == 2" [(set (mem:HI (pre_dec:HI (reg:HI 3))) (match_dup 2)) *************** *** 466,494 **** (define_insn "cmpqi_1" [(set (cc0) ! (compare (match_operand:QI 0 "tst_operand" "d,d,*x*y,*x*y") ! (match_operand:QI 1 "cmp_operand" "im,!u,!u,?dim*x*y")))] "" ! "@ ! cmpb\\t%1 ! cmpb\\t%b1 ! # ! #") (define_insn "cmpqi_z_used" [(set (cc0) ! (compare (match_operand:QI 0 "hard_reg_operand" "dxy") ! (match_operand:QI 1 "cmp_operand" "m"))) ! (use (match_operand:HI 2 "hard_reg_operand" "dxy")) (use (reg:HI 11))] "" "#") (define_split /* cmpqi_z_used */ [(set (cc0) ! (compare (match_operand:QI 0 "hard_reg_operand" "dxy") ! (match_operand:QI 1 "cmp_operand" "m"))) ! (use (match_operand:HI 2 "hard_reg_operand" "dxy")) (use (reg:HI 11))] "z_replacement_completed == 2" [(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM))) (match_dup 2)) --- 484,520 ---- (define_insn "cmpqi_1" [(set (cc0) ! (compare (match_operand:QI 0 "tst_operand" "d,m,d,!u,*B,d") ! (match_operand:QI 1 "cmp_operand" "im,d,!u,d,?dim*B,*u")))] "" ! "* ! { ! if (A_REG_P (operands[0]) || A_REG_P (operands[1])) ! { ! return \"#\"; ! } ! else if (D_REG_P (operands[0])) ! { ! return \"cmpb\\t%b1\"; ! } ! cc_status.flags |= CC_REVERSED; ! return \"cmpb\\t%b0\"; ! }") (define_insn "cmpqi_z_used" [(set (cc0) ! (compare (match_operand:QI 0 "tst_operand" "dxy,m") ! (match_operand:QI 1 "cmp_operand" "m,dxy"))) ! (use (match_operand:HI 2 "hard_reg_operand" "dxy,dxy")) (use (reg:HI 11))] "" "#") (define_split /* cmpqi_z_used */ [(set (cc0) ! (compare (match_operand:QI 0 "tst_operand" "dxy,m") ! (match_operand:QI 1 "cmp_operand" "m,dxy"))) ! (use (match_operand:HI 2 "hard_reg_operand" "dxy,dxy")) (use (reg:HI 11))] "z_replacement_completed == 2" [(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM))) (match_dup 2)) *************** *** 587,593 **** ;; The insn will be split in one or several memory moves (movw). ;; [SCz: this does not work ?? So, I switched temporary to 'd' reg] ;;-------------------------------------------------------------------- ! (define_insn "movdi" [(set (match_operand:DI 0 "nonimmediate_operand" "=U,!u,U,m,m,!u") (match_operand:DI 1 "general_operand" "iU,iU,!u,mi,!u,!mu")) (clobber (match_scratch:HI 2 "=&d,&d,&d,&d,&d,&d"))] --- 613,640 ---- ;; The insn will be split in one or several memory moves (movw). ;; [SCz: this does not work ?? So, I switched temporary to 'd' reg] ;;-------------------------------------------------------------------- ! (define_expand "movdi" ! [(parallel [(set (match_operand:DI 0 "nonimmediate_operand" "") ! (match_operand:DI 1 "general_operand" "")) ! (clobber (match_scratch:HI 2 ""))])] ! "" ! " ! /* For push/pop, emit a REG_INC note to make sure the reload ! inheritance and reload CSE pass notice the change of the stack ! pointer. */ ! if (IS_STACK_PUSH (operands[0]) || IS_STACK_POP (operands[1])) ! { ! rtx insn; ! ! insn = emit_insn (gen_movdi_internal (operands[0], operands[1])); ! REG_NOTES (insn) = alloc_EXPR_LIST (REG_INC, ! stack_pointer_rtx, ! REG_NOTES (insn)); ! DONE; ! } ! ") ! ! (define_insn "movdi_internal" [(set (match_operand:DI 0 "nonimmediate_operand" "=U,!u,U,m,m,!u") (match_operand:DI 1 "general_operand" "iU,iU,!u,mi,!u,!mu")) (clobber (match_scratch:HI 2 "=&d,&d,&d,&d,&d,&d"))] *************** *** 603,609 **** "m68hc11_split_move (operands[0], operands[1], operands[2]); DONE;") ! (define_insn "movdf" [(set (match_operand:DF 0 "nonimmediate_operand" "=U,!u,U,m,m,!u") (match_operand:DF 1 "general_operand" "iU,iU,!u,mi,!u,!mu")) (clobber (match_scratch:HI 2 "=&d,&d,&d,&d,&d,&d"))] --- 650,676 ---- "m68hc11_split_move (operands[0], operands[1], operands[2]); DONE;") ! (define_expand "movdf" ! [(parallel [(set (match_operand:DF 0 "nonimmediate_operand" "") ! (match_operand:DF 1 "general_operand" "")) ! (clobber (match_scratch:HI 2 ""))])] ! "" ! "/* For push/pop, emit a REG_INC note to make sure the reload ! inheritance and reload CSE pass notice the change of the stack ! pointer. */ ! if (IS_STACK_PUSH (operands[0]) || IS_STACK_POP (operands[1])) ! { ! rtx insn; ! ! insn = emit_insn (gen_movdf_internal (operands[0], operands[1])); ! REG_NOTES (insn) = alloc_EXPR_LIST (REG_INC, ! stack_pointer_rtx, ! REG_NOTES (insn)); ! DONE; ! } ! ") ! ! (define_insn "movdf_internal" [(set (match_operand:DF 0 "nonimmediate_operand" "=U,!u,U,m,m,!u") (match_operand:DF 1 "general_operand" "iU,iU,!u,mi,!u,!mu")) (clobber (match_scratch:HI 2 "=&d,&d,&d,&d,&d,&d"))] *************** *** 618,624 **** [(const_int 0)] "m68hc11_split_move (operands[0], operands[1], operands[2]); DONE;") ! ;;-------------------------------------------------------------------- ;;- 32-bit Move Operations. ;; The movsi and movsf patterns are identical except for the mode. --- 685,691 ---- [(const_int 0)] "m68hc11_split_move (operands[0], operands[1], operands[2]); DONE;") ! ;;-------------------------------------------------------------------- ;;- 32-bit Move Operations. ;; The movsi and movsf patterns are identical except for the mode. *************** *** 628,634 **** ;; pass does not give us a register that dies in the insn and is used ;; for input/output operands. ;;-------------------------------------------------------------------- ! (define_insn "movsi" [(set (match_operand:SI 0 "nonimmediate_operand" "=mu,?D,m,?D,?u,?u,!u,D") (match_operand:SI 1 "general_operand" "imu,im,?D,!u,?D,mi,!u,!D")) (clobber (match_scratch:HI 2 "=&d,X,X,X,X,&d,&d,X"))] --- 695,721 ---- ;; pass does not give us a register that dies in the insn and is used ;; for input/output operands. ;;-------------------------------------------------------------------- ! (define_expand "movsi" ! [(parallel [(set (match_operand:SI 0 "nonimmediate_operand" "") ! (match_operand:SI 1 "general_operand" "")) ! (clobber (match_scratch:HI 2 ""))])] ! "" ! "/* For push/pop, emit a REG_INC note to make sure the reload ! inheritance and reload CSE pass notice the change of the stack ! pointer. */ ! if (IS_STACK_PUSH (operands[0]) || IS_STACK_POP (operands[1])) ! { ! rtx insn; ! ! insn = emit_insn (gen_movsi_internal (operands[0], operands[1])); ! REG_NOTES (insn) = alloc_EXPR_LIST (REG_INC, ! stack_pointer_rtx, ! REG_NOTES (insn)); ! DONE; ! } ! ") ! ! (define_insn "movsi_internal" [(set (match_operand:SI 0 "nonimmediate_operand" "=mu,?D,m,?D,?u,?u,!u,D") (match_operand:SI 1 "general_operand" "imu,im,?D,!u,?D,mi,!u,!D")) (clobber (match_scratch:HI 2 "=&d,X,X,X,X,&d,&d,X"))] *************** *** 644,650 **** "m68hc11_split_move (operands[0], operands[1], operands[2]); DONE;") ! (define_insn "movsf" [(set (match_operand:SF 0 "nonimmediate_operand" "=m,D,m,D,!u,!u,!u,D") (match_operand:SF 1 "general_operand" "im,im,D,!u,D,mi,!u,!D")) (clobber (match_scratch:HI 2 "=&d,X,X,X,X,&d,&d,X"))] --- 731,757 ---- "m68hc11_split_move (operands[0], operands[1], operands[2]); DONE;") ! (define_expand "movsf" ! [(parallel [(set (match_operand:SF 0 "nonimmediate_operand" "") ! (match_operand:SF 1 "general_operand" "")) ! (clobber (match_scratch:HI 2 ""))])] ! "" ! "/* For push/pop, emit a REG_INC note to make sure the reload ! inheritance and reload CSE pass notice the change of the stack ! pointer. */ ! if (IS_STACK_PUSH (operands[0]) || IS_STACK_POP (operands[1])) ! { ! rtx insn; ! ! insn = emit_insn (gen_movsf_internal (operands[0], operands[1])); ! REG_NOTES (insn) = alloc_EXPR_LIST (REG_INC, ! stack_pointer_rtx, ! REG_NOTES (insn)); ! DONE; ! } ! ") ! ! (define_insn "movsf_internal" [(set (match_operand:SF 0 "nonimmediate_operand" "=m,D,m,D,!u,!u,!u,D") (match_operand:SF 1 "general_operand" "im,im,D,!u,D,mi,!u,!D")) (clobber (match_scratch:HI 2 "=&d,X,X,X,X,&d,&d,X"))] *************** *** 739,744 **** --- 846,864 ---- operands[1] = force_reg (HImode, operands[1]); } } + /* For push/pop, emit a REG_INC note to make sure the reload + inheritance and reload CSE pass notice the change of the stack + pointer. */ + if (IS_STACK_PUSH (operands[0]) || IS_STACK_POP (operands[1])) + { + rtx insn; + + insn = emit_insn (gen_rtx (SET, VOIDmode, operands[0], operands[1])); + REG_NOTES (insn) = alloc_EXPR_LIST (REG_INC, + stack_pointer_rtx, + REG_NOTES (insn)); + DONE; + } }") (define_insn "movhi_const0" *************** *** 866,871 **** --- 986,1004 ---- operands[1] = force_reg (QImode, operands[1]); } } + /* For push/pop, emit a REG_INC note to make sure the reload + inheritance and reload CSE pass notice the change of the stack + pointer. */ + if (IS_STACK_PUSH (operands[0]) || IS_STACK_POP (operands[1])) + { + rtx insn; + + insn = emit_insn (gen_rtx (SET, VOIDmode, operands[0], operands[1])); + REG_NOTES (insn) = alloc_EXPR_LIST (REG_INC, + stack_pointer_rtx, + REG_NOTES (insn)); + DONE; + } }") (define_insn "*movqi_68hc12" *************** *** 1445,1451 **** (define_insn "extendhisi2" [(set (match_operand:SI 0 "register_operand" "=D,D,D") ! (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "m,!r,0")))] "" "* { --- 1578,1584 ---- (define_insn "extendhisi2" [(set (match_operand:SI 0 "register_operand" "=D,D,D") ! (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "m,!r,dA")))] "" "* { *************** *** 2176,2182 **** (define_insn "*addhi3" [(set (match_operand:HI 0 "hard_reg_operand" "=A,d,!A,d*A,!d") (plus:HI (match_operand:HI 1 "general_operand" "%0,0,0,0,0") ! (match_operand:HI 2 "general_operand" "N,i,I,umi*A*d,!*d*w")))] "TARGET_M6811" "* { --- 2309,2315 ---- (define_insn "*addhi3" [(set (match_operand:HI 0 "hard_reg_operand" "=A,d,!A,d*A,!d") (plus:HI (match_operand:HI 1 "general_operand" "%0,0,0,0,0") ! (match_operand:HI 2 "general_operand" "N,i,I,mi*A*d,!u*d*w")))] "TARGET_M6811" "* { *************** *** 2514,2520 **** (define_insn "*subhi3_sp" [(set (match_operand:HI 0 "stack_register_operand" "=w,w") (minus:HI (match_operand:HI 1 "register_operand" "0,0") ! (match_operand:HI 2 "general_operand" "uim*d,!*A"))) (clobber (match_scratch:HI 3 "=A*d,A*d"))] "" "* --- 2647,2653 ---- (define_insn "*subhi3_sp" [(set (match_operand:HI 0 "stack_register_operand" "=w,w") (minus:HI (match_operand:HI 1 "register_operand" "0,0") ! (match_operand:HI 2 "general_operand" "im*d,!u*A"))) (clobber (match_scratch:HI 3 "=A*d,A*d"))] "" "* *************** *** 2563,2571 **** (define_insn "*subhi3" ! [(set (match_operand:HI 0 "register_operand" "=d,*A") ! (minus:HI (match_operand:HI 1 "register_operand" "0,0") ! (match_operand:HI 2 "general_operand" "uim*A*d,uim*d*A")))] "" "* { --- 2696,2704 ---- (define_insn "*subhi3" ! [(set (match_operand:HI 0 "register_operand" "=d,*A,d*A") ! (minus:HI (match_operand:HI 1 "register_operand" "0,0,0") ! (match_operand:HI 2 "general_operand" "im*A*d,im*d*A,!u")))] "" "* { *************** *** 2993,2999 **** (define_insn "andqi3" [(set (match_operand:QI 0 "register_operand" "=d,!u,d,d,?*A,?*A,!*q") (and:QI (match_operand:QI 1 "register_operand" "%0,0,0,0,0,0,0") ! (match_operand:QI 2 "general_operand" "i,i,!um,?*A,i!um,?*A,i!um*A")))] "" "* { --- 3126,3132 ---- (define_insn "andqi3" [(set (match_operand:QI 0 "register_operand" "=d,!u,d,d,?*A,?*A,!*q") (and:QI (match_operand:QI 1 "register_operand" "%0,0,0,0,0,0,0") ! (match_operand:QI 2 "general_operand" "i,i,!um,?*A,!ium,?*A*d,!ium*A")))] "" "* { *************** *** 3100,3106 **** (define_insn "iorqi3" [(set (match_operand:QI 0 "register_operand" "=d,!u,d,d,?*A,?*A,!*q") (ior:QI (match_operand:QI 1 "register_operand" "%0,0,0,0,0,0,0") ! (match_operand:QI 2 "general_operand" "i,i,!um,!*A,i!um,!*A,i!um*A")))] "" "* { --- 3233,3239 ---- (define_insn "iorqi3" [(set (match_operand:QI 0 "register_operand" "=d,!u,d,d,?*A,?*A,!*q") (ior:QI (match_operand:QI 1 "register_operand" "%0,0,0,0,0,0,0") ! (match_operand:QI 2 "general_operand" "i,i,!um,!*A,!ium,?*A*d,!ium*A")))] "" "* { *************** *** 3194,3202 **** }") (define_insn "xorqi3" ! [(set (match_operand:QI 0 "register_operand" "=d,d,!*u*A,!*u*A,!*q") ! (xor:QI (match_operand:QI 1 "register_operand" "%0,0,0,0,0") ! (match_operand:QI 2 "general_operand" "ium,!*A,ium,!*A,ium*A*u")))] "" "* { --- 3327,3335 ---- }") (define_insn "xorqi3" ! [(set (match_operand:QI 0 "register_operand" "=d,d,d,?*A,?*A,!*q") ! (xor:QI (match_operand:QI 1 "register_operand" "%0,0,0,0,0,0") ! (match_operand:QI 2 "general_operand" "i,!um,!*A,!ium,?*A*d,!ium*A")))] "" "* { *************** *** 4190,4197 **** is true for 68hc11 only, we save temporary the value of Y. */ if (!Y_REG_P (operands[2])) { output_asm_insn (\"pshy\", operands); ! output_asm_insn (\"ldy\\t%1\", operands); output_asm_insn (\"bsr\\t___ashlsi3\", operands); return \"puly\"; } --- 4323,4337 ---- is true for 68hc11 only, we save temporary the value of Y. */ if (!Y_REG_P (operands[2])) { + rtx ops[1]; + + ops[0] = operands[1]; output_asm_insn (\"pshy\", operands); ! if (reg_mentioned_p (stack_pointer_rtx, operands[1])) ! { ! ops[0] = adj_offsettable_operand (operands[1], 2); ! } ! output_asm_insn (\"ldy\\t%0\", ops); output_asm_insn (\"bsr\\t___ashlsi3\", operands); return \"puly\"; } *************** *** 4591,4598 **** is true for 68hc11 only, we save temporary the value of Y. */ if (!Y_REG_P (operands[2])) { output_asm_insn (\"pshy\", operands); ! output_asm_insn (\"ldy\\t%1\", operands); output_asm_insn (\"bsr\\t___ashrsi3\", operands); return \"puly\"; } --- 4731,4745 ---- is true for 68hc11 only, we save temporary the value of Y. */ if (!Y_REG_P (operands[2])) { + rtx ops[1]; + + ops[0] = operands[1]; output_asm_insn (\"pshy\", operands); ! if (reg_mentioned_p (stack_pointer_rtx, operands[1])) ! { ! ops[0] = adj_offsettable_operand (operands[1], 2); ! } ! output_asm_insn (\"ldy\\t%0\", ops); output_asm_insn (\"bsr\\t___ashrsi3\", operands); return \"puly\"; } *************** *** 4928,4935 **** is true for 68hc11 only, we save temporary the value of Y. */ if (!Y_REG_P (operands[2])) { output_asm_insn (\"pshy\", operands); ! output_asm_insn (\"ldy\\t%1\", operands); output_asm_insn (\"bsr\\t___lshrsi3\", operands); return \"puly\"; } --- 5075,5089 ---- is true for 68hc11 only, we save temporary the value of Y. */ if (!Y_REG_P (operands[2])) { + rtx ops[1]; + + ops[0] = operands[1]; output_asm_insn (\"pshy\", operands); ! if (reg_mentioned_p (stack_pointer_rtx, operands[1])) ! { ! ops[0] = adj_offsettable_operand (operands[1], 2); ! } ! output_asm_insn (\"ldy\\t%0\", ops); output_asm_insn (\"bsr\\t___lshrsi3\", operands); return \"puly\"; } diff -Nrc3pad gcc-3.0/gcc/config/m68hc11/t-m68hc11-gas gcc-3.0.1/gcc/config/m68hc11/t-m68hc11-gas *** gcc-3.0/gcc/config/m68hc11/t-m68hc11-gas Fri May 4 13:58:19 2001 --- gcc-3.0.1/gcc/config/m68hc11/t-m68hc11-gas Fri Aug 3 14:05:49 2001 *************** LIB1ASMFUNCS = _mulsi3 \ *** 25,31 **** _regs_d3_4 _regs_d5_6 _regs_d7_8 _regs_d9_16 _regs_d17_32 \ _premain __exit _abort _cleanup \ _adddi3 _subdi3 _notdi2 \ ! _ashrhi3 _lshrhi3 _lshlhi3 _ashrqi3 _lshlqi3 _map_data _init_bss TARGET_LIBGCC2_CFLAGS = -DUSE_GAS -DIN_GCC --- 25,32 ---- _regs_d3_4 _regs_d5_6 _regs_d7_8 _regs_d9_16 _regs_d17_32 \ _premain __exit _abort _cleanup \ _adddi3 _subdi3 _notdi2 \ ! _ashrhi3 _lshrhi3 _lshlhi3 _ashrqi3 _lshlqi3 _map_data _init_bss \ ! _ctor _dtor TARGET_LIBGCC2_CFLAGS = -DUSE_GAS -DIN_GCC diff -Nrc3pad gcc-3.0/gcc/config/m68k/linux-aout.h gcc-3.0.1/gcc/config/m68k/linux-aout.h *** gcc-3.0/gcc/config/m68k/linux-aout.h Thu Nov 2 15:29:10 2000 --- gcc-3.0.1/gcc/config/m68k/linux-aout.h Mon Jul 30 14:32:28 2001 *************** Boston, MA 02111-1307, USA. */ *** 41,47 **** #endif #undef SUBTARGET_SWITCHES ! #define SUBTARGET_SWITCHES {"ieee-fp", 0}, #undef ASM_SPEC #define ASM_SPEC \ --- 41,48 ---- #endif #undef SUBTARGET_SWITCHES ! #define SUBTARGET_SWITCHES {"ieee-fp", 0, \ ! N_("Use IEEE math for fp comparisons") }, #undef ASM_SPEC #define ASM_SPEC \ diff -Nrc3pad gcc-3.0/gcc/config/m68k/linux.h gcc-3.0.1/gcc/config/m68k/linux.h *** gcc-3.0/gcc/config/m68k/linux.h Thu Nov 2 15:29:10 2000 --- gcc-3.0.1/gcc/config/m68k/linux.h Mon Jul 30 14:32:28 2001 *************** Boston, MA 02111-1307, USA. */ *** 42,48 **** #define STRICT_ALIGNMENT 0 #undef SUBTARGET_SWITCHES ! #define SUBTARGET_SWITCHES {"ieee-fp", 0}, /* Here are four prefixes that are used by asm_fprintf to facilitate customization for alternate assembler syntaxes. --- 42,49 ---- #define STRICT_ALIGNMENT 0 #undef SUBTARGET_SWITCHES ! #define SUBTARGET_SWITCHES {"ieee-fp", 0, \ ! N_("Use IEEE math for fp comparisons")}, /* Here are four prefixes that are used by asm_fprintf to facilitate customization for alternate assembler syntaxes. diff -Nrc3pad gcc-3.0/gcc/config/m68k/m68k.c gcc-3.0.1/gcc/config/m68k/m68k.c *** gcc-3.0/gcc/config/m68k/m68k.c Sat May 12 13:32:50 2001 --- gcc-3.0.1/gcc/config/m68k/m68k.c Mon Jul 30 23:18:33 2001 *************** Boston, MA 02111-1307, USA. */ *** 33,38 **** --- 33,40 ---- #include "insn-attr.h" #include "recog.h" #include "toplev.h" + #include "expr.h" + #include "reload.h" #include "tm_p.h" /* Needed for use_return_insn. */ *************** not_sp_operand (op, mode) *** 877,883 **** register rtx op; enum machine_mode mode; { ! return op != stack_pointer_rtx && general_operand (op, mode); } /* Return TRUE if X is a valid comparison operator for the dbcc --- 879,885 ---- register rtx op; enum machine_mode mode; { ! return op != stack_pointer_rtx && nonimmediate_operand (op, mode); } /* Return TRUE if X is a valid comparison operator for the dbcc diff -Nrc3pad gcc-3.0/gcc/config/m68k/m68k.h gcc-3.0.1/gcc/config/m68k/m68k.h *** gcc-3.0/gcc/config/m68k/m68k.h Mon Jan 1 12:35:31 2001 --- gcc-3.0.1/gcc/config/m68k/m68k.h Mon Jul 30 14:32:28 2001 *************** extern int target_flags; *** 147,209 **** where VALUE is the bits to set or minus the bits to clear. An empty string NAME is used to identify the default VALUE. */ ! #define TARGET_SWITCHES \ ! { { "68020", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY)}, \ ! { "c68020", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY)}, \ ! { "68020", (MASK_68020|MASK_BITFIELD)}, \ ! { "c68020", (MASK_68020|MASK_BITFIELD)}, \ { "68000", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY \ ! |MASK_68020|MASK_BITFIELD|MASK_68881)}, \ { "c68000", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY \ ! |MASK_68020|MASK_BITFIELD|MASK_68881)}, \ ! { "bitfield", MASK_BITFIELD}, \ ! { "nobitfield", - MASK_BITFIELD}, \ ! { "rtd", MASK_RTD}, \ ! { "nortd", - MASK_RTD}, \ ! { "short", MASK_SHORT}, \ ! { "noshort", - MASK_SHORT}, \ ! { "fpa", -(MASK_SKY|MASK_68040_ONLY|MASK_68881)}, \ ! { "fpa", MASK_FPA}, \ ! { "nofpa", - MASK_FPA}, \ ! { "sky", -(MASK_FPA|MASK_68040_ONLY|MASK_68881)}, \ ! { "sky", MASK_SKY}, \ ! { "nosky", - MASK_SKY}, \ ! { "68881", - (MASK_FPA|MASK_SKY)}, \ ! { "68881", MASK_68881}, \ ! { "soft-float", - (MASK_FPA|MASK_SKY|MASK_68040_ONLY|MASK_68881)}, \ ! { "68020-40", -(MASK_5200|MASK_68060|MASK_68040_ONLY)}, \ ! { "68020-40", (MASK_BITFIELD|MASK_68881|MASK_68020|MASK_68040)}, \ ! { "68020-60", -(MASK_5200|MASK_68040_ONLY)}, \ { "68020-60", (MASK_BITFIELD|MASK_68881|MASK_68020|MASK_68040 \ ! |MASK_68060)}, \ ! { "68030", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY)}, \ ! { "68030", (MASK_68020|MASK_BITFIELD)}, \ ! { "68040", - (MASK_5200|MASK_68060)}, \ { "68040", (MASK_68020|MASK_68881|MASK_BITFIELD \ ! |MASK_68040_ONLY|MASK_68040)}, \ ! { "68060", - (MASK_5200|MASK_68040)}, \ { "68060", (MASK_68020|MASK_68881|MASK_BITFIELD \ ! |MASK_68040_ONLY|MASK_68060)}, \ { "5200", - (MASK_68060|MASK_68040|MASK_68040_ONLY|MASK_68020 \ ! |MASK_BITFIELD|MASK_68881)}, \ ! { "5200", (MASK_5200)}, \ ! { "68851", 0}, \ ! { "no-68851", 0}, \ { "68302", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY \ ! |MASK_68020|MASK_BITFIELD|MASK_68881)}, \ { "68332", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY \ ! |MASK_BITFIELD|MASK_68881)}, \ ! { "68332", MASK_68020}, \ { "cpu32", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY \ ! |MASK_BITFIELD|MASK_68881)}, \ ! { "cpu32", MASK_68020}, \ ! { "align-int", MASK_ALIGN_INT }, \ ! { "no-align-int", -MASK_ALIGN_INT }, \ ! { "pcrel", MASK_PCREL}, \ ! { "strict-align", -MASK_NO_STRICT_ALIGNMENT}, \ ! { "no-strict-align", MASK_NO_STRICT_ALIGNMENT}, \ SUBTARGET_SWITCHES \ ! { "", TARGET_DEFAULT}} /* TARGET_DEFAULT is defined in sun*.h and isi.h, etc. */ /* This macro is similar to `TARGET_SWITCHES' but defines names of --- 147,242 ---- where VALUE is the bits to set or minus the bits to clear. An empty string NAME is used to identify the default VALUE. */ ! #define TARGET_SWITCHES \ ! { { "68020", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY), \ ! N_("Generate code for a 68020") }, \ ! { "c68020", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY), \ ! N_("Generate code for a 68020") }, \ ! { "68020", (MASK_68020|MASK_BITFIELD), "" }, \ ! { "c68020", (MASK_68020|MASK_BITFIELD), "" }, \ { "68000", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY \ ! |MASK_68020|MASK_BITFIELD|MASK_68881), \ ! N_("Generate code for a 68000") }, \ { "c68000", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY \ ! |MASK_68020|MASK_BITFIELD|MASK_68881), \ ! N_("Generate code for a 68000") }, \ ! { "bitfield", MASK_BITFIELD, \ ! N_("Use the bit-field instructions") }, \ ! { "nobitfield", - MASK_BITFIELD, \ ! N_("Do not use the bit-field instructions") }, \ ! { "rtd", MASK_RTD, \ ! N_("Use different calling convention using 'rtd'") }, \ ! { "nortd", - MASK_RTD, \ ! N_("Use normal calling convention") }, \ ! { "short", MASK_SHORT, \ ! N_("Consider type `int' to be 16 bits wide") }, \ ! { "noshort", - MASK_SHORT, \ ! N_("Consider type `int' to be 32 bits wide") }, \ ! { "fpa", -(MASK_SKY|MASK_68040_ONLY|MASK_68881), \ ! N_("Generate code for a Sun FPA") }, \ ! { "fpa", MASK_FPA, "" }, \ ! { "nofpa", - MASK_FPA, \ ! N_("Do not generate code for a Sun FPA") }, \ ! { "sky", -(MASK_FPA|MASK_68040_ONLY|MASK_68881), \ ! N_("") }, \ ! { "sky", MASK_SKY, \ ! N_("") }, \ ! { "nosky", - MASK_SKY, \ ! N_("") }, \ ! { "68881", - (MASK_FPA|MASK_SKY), \ ! N_("Generate code for a 68881") }, \ ! { "68881", MASK_68881, "" }, \ ! { "soft-float", - (MASK_FPA|MASK_SKY|MASK_68040_ONLY|MASK_68881), \ ! N_("Generate code with library calls for floating point") }, \ ! { "68020-40", -(MASK_5200|MASK_68060|MASK_68040_ONLY), \ ! N_("Generate code for a 68040, without any new instructions") }, \ ! { "68020-40", (MASK_BITFIELD|MASK_68881|MASK_68020|MASK_68040), ""},\ ! { "68020-60", -(MASK_5200|MASK_68040_ONLY), \ ! N_("Generate code for a 68060, without any new instructions") }, \ { "68020-60", (MASK_BITFIELD|MASK_68881|MASK_68020|MASK_68040 \ ! |MASK_68060), "" }, \ ! { "68030", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY), \ ! N_("Generate code for a 68030") }, \ ! { "68030", (MASK_68020|MASK_BITFIELD), "" }, \ ! { "68040", - (MASK_5200|MASK_68060), \ ! N_("Generate code for a 68040") }, \ { "68040", (MASK_68020|MASK_68881|MASK_BITFIELD \ ! |MASK_68040_ONLY|MASK_68040), "" }, \ ! { "68060", - (MASK_5200|MASK_68040), \ ! N_("Generate code for a 68060") }, \ { "68060", (MASK_68020|MASK_68881|MASK_BITFIELD \ ! |MASK_68040_ONLY|MASK_68060), "" }, \ { "5200", - (MASK_68060|MASK_68040|MASK_68040_ONLY|MASK_68020 \ ! |MASK_BITFIELD|MASK_68881), \ ! N_("Generate code for a 520X") }, \ ! { "5200", (MASK_5200), "" }, \ ! { "68851", 0, \ ! N_("Generate code for a 68851") }, \ ! { "no-68851", 0, \ ! N_("Do no generate code for a 68851") }, \ { "68302", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY \ ! |MASK_68020|MASK_BITFIELD|MASK_68881), \ ! N_("Generate code for a 68302") }, \ { "68332", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY \ ! |MASK_BITFIELD|MASK_68881), \ ! N_("Generate code for a 68332") }, \ ! { "68332", MASK_68020, "" }, \ { "cpu32", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY \ ! |MASK_BITFIELD|MASK_68881), \ ! N_("Generate code for a cpu32") }, \ ! { "cpu32", MASK_68020, "" }, \ ! { "align-int", MASK_ALIGN_INT, \ ! N_("Align variables on a 32-bit boundary") }, \ ! { "no-align-int", -MASK_ALIGN_INT, \ ! N_("Align variables on a 16-bit boundary") }, \ ! { "pcrel", MASK_PCREL, \ ! N_("Generate pc-relative code") }, \ ! { "strict-align", -MASK_NO_STRICT_ALIGNMENT, \ ! N_("Do not use unaligned memory references") }, \ ! { "no-strict-align", MASK_NO_STRICT_ALIGNMENT, \ ! N_("Use unaligned memory references") }, \ SUBTARGET_SWITCHES \ ! { "", TARGET_DEFAULT, "" }} /* TARGET_DEFAULT is defined in sun*.h and isi.h, etc. */ /* This macro is similar to `TARGET_SWITCHES' but defines names of *************** extern int target_flags; *** 216,224 **** option if the fixed part matches. The actual option name is made by appending `-m' to the specified name. */ #define TARGET_OPTIONS \ ! { { "align-loops=", &m68k_align_loops_string }, \ ! { "align-jumps=", &m68k_align_jumps_string }, \ ! { "align-functions=", &m68k_align_funcs_string }, \ SUBTARGET_OPTIONS \ } --- 249,260 ---- option if the fixed part matches. The actual option name is made by appending `-m' to the specified name. */ #define TARGET_OPTIONS \ ! { { "align-loops=", &m68k_align_loops_string, \ ! N_("Loop code aligned to this power of 2") }, \ ! { "align-jumps=", &m68k_align_jumps_string, \ ! N_("Jump targets are aligned to this power of 2") }, \ ! { "align-functions=", &m68k_align_funcs_string, \ ! N_("Function starts are aligned to this power of 2") }, \ SUBTARGET_OPTIONS \ } diff -Nrc3pad gcc-3.0/gcc/config/m68k/m68k.md gcc-3.0.1/gcc/config/m68k/m68k.md *** gcc-3.0/gcc/config/m68k/m68k.md Sat Jun 9 12:09:57 2001 --- gcc-3.0.1/gcc/config/m68k/m68k.md Mon Jul 30 23:18:33 2001 *************** *** 885,891 **** ;This is never used. ;(define_insn "swapsi" ! ; [(set (match_operand:SI 0 "general_operand" "+r") ; (match_operand:SI 1 "general_operand" "+r")) ; (set (match_dup 1) (match_dup 0))] ; "" --- 885,891 ---- ;This is never used. ;(define_insn "swapsi" ! ; [(set (match_operand:SI 0 "nonimmediate_operand" "+r") ; (match_operand:SI 1 "general_operand" "+r")) ; (set (match_dup 1) (match_dup 0))] ; "" *************** *** 896,902 **** ;; into a data reg with moveq in order to store it elsewhere. (define_insn "movsi_const0" ! [(set (match_operand:SI 0 "general_operand" "=g") (const_int 0))] ;; clr insns on 68000 read before writing. ;; This isn't so on the 68010, but we have no TARGET_68010. --- 896,902 ---- ;; into a data reg with moveq in order to store it elsewhere. (define_insn "movsi_const0" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=g") (const_int 0))] ;; clr insns on 68000 read before writing. ;; This isn't so on the 68010, but we have no TARGET_68010. *************** *** 943,949 **** ;; In both the PIC and non-PIC cases the patterns generated will ;; matched by the next define_insn. (define_expand "movsi" ! [(set (match_operand:SI 0 "general_operand" "") (match_operand:SI 1 "general_operand" ""))] "" " --- 943,949 ---- ;; In both the PIC and non-PIC cases the patterns generated will ;; matched by the next define_insn. (define_expand "movsi" ! [(set (match_operand:SI 0 "nonimmediate_operand" "") (match_operand:SI 1 "general_operand" ""))] "" " *************** *** 977,983 **** ;; Notes: make sure no alternative allows g vs g. ;; We don't allow f-regs since fixed point cannot go in them. ;; We do allow y and x regs since fixed point is allowed in them. ! [(set (match_operand:SI 0 "general_operand" "=g,d,a<,y,!*x*r*m") (match_operand:SI 1 "general_src_operand" "daymSKT,n,i,g,*x*r*m"))] "!TARGET_5200" --- 977,983 ---- ;; Notes: make sure no alternative allows g vs g. ;; We don't allow f-regs since fixed point cannot go in them. ;; We do allow y and x regs since fixed point is allowed in them. ! [(set (match_operand:SI 0 "nonimmediate_operand" "=g,d,a<,y,!*x*r*m") (match_operand:SI 1 "general_src_operand" "daymSKT,n,i,g,*x*r*m"))] "!TARGET_5200" *************** *** 991,997 **** }") (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=r,g") (match_operand:SI 1 "general_operand" "g,r"))] "TARGET_5200" "* return output_move_simode (operands);") --- 991,997 ---- }") (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=r,g") (match_operand:SI 1 "general_operand" "g,r"))] "TARGET_5200" "* return output_move_simode (operands);") *************** *** 999,1005 **** ;; Special case of fullword move, where we need to get a non-GOT PIC ;; reference into an address register. (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=a<") (match_operand:SI 1 "pcrel_address" ""))] "TARGET_PCREL" "* --- 999,1005 ---- ;; Special case of fullword move, where we need to get a non-GOT PIC ;; reference into an address register. (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=a<") (match_operand:SI 1 "pcrel_address" ""))] "TARGET_PCREL" "* *************** *** 1010,1096 **** }") (define_expand "movhi" ! [(set (match_operand:HI 0 "general_operand" "") (match_operand:HI 1 "general_operand" ""))] "" "") (define_insn "" ! [(set (match_operand:HI 0 "general_operand" "=g") (match_operand:HI 1 "general_src_operand" "gS"))] "!TARGET_5200" "* return output_move_himode (operands);") (define_insn "" ! [(set (match_operand:HI 0 "general_operand" "=r,g") (match_operand:HI 1 "general_operand" "g,r"))] "TARGET_5200" "* return output_move_himode (operands);") (define_expand "movstricthi" ! [(set (strict_low_part (match_operand:HI 0 "general_operand" "")) (match_operand:HI 1 "general_src_operand" ""))] "" "") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "general_operand" "+dm")) (match_operand:HI 1 "general_src_operand" "rmSn"))] "!TARGET_5200" "* return output_move_stricthi (operands);") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "general_operand" "+d,m")) (match_operand:HI 1 "general_src_operand" "rmn,r"))] "TARGET_5200" "* return output_move_stricthi (operands);") (define_expand "movqi" ! [(set (match_operand:QI 0 "general_operand" "") (match_operand:QI 1 "general_src_operand" ""))] "" "") (define_insn "" ! [(set (match_operand:QI 0 "general_operand" "=d,*a,m") (match_operand:QI 1 "general_src_operand" "dmSi*a,di*a,dmSi"))] "!TARGET_5200" "* return output_move_qimode (operands);") (define_insn "" ! [(set (match_operand:QI 0 "general_operand" "=d,dm,d*a") (match_operand:QI 1 "general_src_operand" "dmi,d,di*a"))] "TARGET_5200" "* return output_move_qimode (operands);") (define_expand "movstrictqi" ! [(set (strict_low_part (match_operand:QI 0 "general_operand" "")) (match_operand:QI 1 "general_src_operand" ""))] "" "") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "general_operand" "+dm")) (match_operand:QI 1 "general_src_operand" "dmSn"))] "!TARGET_5200" "* return output_move_strictqi (operands);") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "general_operand" "+d,m")) (match_operand:QI 1 "general_src_operand" "dmn,d"))] "TARGET_5200" "* return output_move_strictqi (operands);") (define_expand "movsf" ! [(set (match_operand:SF 0 "general_operand" "") (match_operand:SF 1 "general_operand" ""))] "" "") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=rmf,x,y,rm,!x,!rm") (match_operand:SF 1 "general_operand" "rmfF,xH,rmF,y,rm,x"))] ! ; [(set (match_operand:SF 0 "general_operand" "=rmf") ; (match_operand:SF 1 "general_operand" "rmfF"))] "!TARGET_5200" "* --- 1010,1096 ---- }") (define_expand "movhi" ! [(set (match_operand:HI 0 "nonimmediate_operand" "") (match_operand:HI 1 "general_operand" ""))] "" "") (define_insn "" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=g") (match_operand:HI 1 "general_src_operand" "gS"))] "!TARGET_5200" "* return output_move_himode (operands);") (define_insn "" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=r,g") (match_operand:HI 1 "general_operand" "g,r"))] "TARGET_5200" "* return output_move_himode (operands);") (define_expand "movstricthi" ! [(set (strict_low_part (match_operand:HI 0 "nonimmediate_operand" "")) (match_operand:HI 1 "general_src_operand" ""))] "" "") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "nonimmediate_operand" "+dm")) (match_operand:HI 1 "general_src_operand" "rmSn"))] "!TARGET_5200" "* return output_move_stricthi (operands);") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "nonimmediate_operand" "+d,m")) (match_operand:HI 1 "general_src_operand" "rmn,r"))] "TARGET_5200" "* return output_move_stricthi (operands);") (define_expand "movqi" ! [(set (match_operand:QI 0 "nonimmediate_operand" "") (match_operand:QI 1 "general_src_operand" ""))] "" "") (define_insn "" ! [(set (match_operand:QI 0 "nonimmediate_operand" "=d,*a,m") (match_operand:QI 1 "general_src_operand" "dmSi*a,di*a,dmSi"))] "!TARGET_5200" "* return output_move_qimode (operands);") (define_insn "" ! [(set (match_operand:QI 0 "nonimmediate_operand" "=d,dm,d*a") (match_operand:QI 1 "general_src_operand" "dmi,d,di*a"))] "TARGET_5200" "* return output_move_qimode (operands);") (define_expand "movstrictqi" ! [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "")) (match_operand:QI 1 "general_src_operand" ""))] "" "") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+dm")) (match_operand:QI 1 "general_src_operand" "dmSn"))] "!TARGET_5200" "* return output_move_strictqi (operands);") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+d,m")) (match_operand:QI 1 "general_src_operand" "dmn,d"))] "TARGET_5200" "* return output_move_strictqi (operands);") (define_expand "movsf" ! [(set (match_operand:SF 0 "nonimmediate_operand" "") (match_operand:SF 1 "general_operand" ""))] "" "") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=rmf,x,y,rm,!x,!rm") (match_operand:SF 1 "general_operand" "rmfF,xH,rmF,y,rm,x"))] ! ; [(set (match_operand:SF 0 "nonimmediate_operand" "=rmf") ; (match_operand:SF 1 "general_operand" "rmfF"))] "!TARGET_5200" "* *************** *** 1170,1192 **** }") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=r,g") (match_operand:SF 1 "general_operand" "g,r"))] "TARGET_5200" "* return \"move%.l %1,%0\";") (define_expand "movdf" ! [(set (match_operand:DF 0 "general_operand" "") (match_operand:DF 1 "general_operand" ""))] "" "") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=*rm,*rf,*rf,&*rof<>,y,*rm,x,!x,!*rm") (match_operand:DF 1 "general_operand" "*rf,m,0,*rofE<>,*rmE,y,xH,*rm,x"))] ! ; [(set (match_operand:DF 0 "general_operand" "=rm,&rf,&rof<>") ; (match_operand:DF 1 "general_operand" "rf,m,rofF<>"))] "!TARGET_5200" "* --- 1170,1192 ---- }") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=r,g") (match_operand:SF 1 "general_operand" "g,r"))] "TARGET_5200" "* return \"move%.l %1,%0\";") (define_expand "movdf" ! [(set (match_operand:DF 0 "nonimmediate_operand" "") (match_operand:DF 1 "general_operand" ""))] "" "") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=*rm,*rf,*rf,&*rof<>,y,*rm,x,!x,!*rm") (match_operand:DF 1 "general_operand" "*rf,m,0,*rofE<>,*rmE,y,xH,*rm,x"))] ! ; [(set (match_operand:DF 0 "nonimmediate_operand" "=rm,&rf,&rof<>") ; (match_operand:DF 1 "general_operand" "rf,m,rofF<>"))] "!TARGET_5200" "* *************** *** 1239,1245 **** }") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=r,g") (match_operand:DF 1 "general_operand" "g,r"))] "TARGET_5200" "* return output_move_double (operands);") --- 1239,1245 ---- }") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=r,g") (match_operand:DF 1 "general_operand" "g,r"))] "TARGET_5200" "* return output_move_double (operands);") *************** *** 1359,1365 **** (define_expand "movdi" ;; Let's see if it really still needs to handle fp regs, and, if so, why. ! [(set (match_operand:DI 0 "general_operand" "") (match_operand:DI 1 "general_operand" ""))] "" "") --- 1359,1365 ---- (define_expand "movdi" ;; Let's see if it really still needs to handle fp regs, and, if so, why. ! [(set (match_operand:DI 0 "nonimmediate_operand" "") (match_operand:DI 1 "general_operand" ""))] "" "") *************** *** 1367,1377 **** ;; movdi can apply to fp regs in some cases (define_insn "" ;; Let's see if it really still needs to handle fp regs, and, if so, why. ! [(set (match_operand:DI 0 "general_operand" "=rm,r,&ro<>,y,rm,!*x,!rm") (match_operand:DI 1 "general_operand" "rF,m,roi<>F,rmiF,y,rmF,*x"))] ! ; [(set (match_operand:DI 0 "general_operand" "=rm,&r,&ro<>,!&rm,!&f,y,rm,x,!x,!rm") ; (match_operand:DI 1 "general_operand" "r,m,roi<>,fF,rfmF,rmi,y,rm,x"))] ! ; [(set (match_operand:DI 0 "general_operand" "=rm,&rf,&ro<>,!&rm,!&f") ; (match_operand:DI 1 "general_operand" "r,m,roi<>,fF,rfF"))] "!TARGET_5200" "* --- 1367,1377 ---- ;; movdi can apply to fp regs in some cases (define_insn "" ;; Let's see if it really still needs to handle fp regs, and, if so, why. ! [(set (match_operand:DI 0 "nonimmediate_operand" "=rm,r,&ro<>,y,rm,!*x,!rm") (match_operand:DI 1 "general_operand" "rF,m,roi<>F,rmiF,y,rmF,*x"))] ! ; [(set (match_operand:DI 0 "nonimmediate_operand" "=rm,&r,&ro<>,!&rm,!&f,y,rm,x,!x,!rm") ; (match_operand:DI 1 "general_operand" "r,m,roi<>,fF,rfmF,rmi,y,rm,x"))] ! ; [(set (match_operand:DI 0 "nonimmediate_operand" "=rm,&rf,&ro<>,!&rm,!&f") ; (match_operand:DI 1 "general_operand" "r,m,roi<>,fF,rfF"))] "!TARGET_5200" "* *************** *** 1411,1417 **** }") (define_insn "" ! [(set (match_operand:DI 0 "general_operand" "=r,g") (match_operand:DI 1 "general_operand" "g,r"))] "TARGET_5200" "* return output_move_double (operands);") --- 1411,1417 ---- }") (define_insn "" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=r,g") (match_operand:DI 1 "general_operand" "g,r"))] "TARGET_5200" "* return output_move_double (operands);") *************** *** 1429,1435 **** ;; truncation instructions (define_insn "truncsiqi2" ! [(set (match_operand:QI 0 "general_operand" "=dm,d") (truncate:QI (match_operand:SI 1 "general_src_operand" "doJS,i")))] "" --- 1429,1435 ---- ;; truncation instructions (define_insn "truncsiqi2" ! [(set (match_operand:QI 0 "nonimmediate_operand" "=dm,d") (truncate:QI (match_operand:SI 1 "general_src_operand" "doJS,i")))] "" *************** *** 1448,1454 **** }") (define_insn "trunchiqi2" ! [(set (match_operand:QI 0 "general_operand" "=dm,d") (truncate:QI (match_operand:HI 1 "general_src_operand" "doJS,i")))] "" --- 1448,1454 ---- }") (define_insn "trunchiqi2" ! [(set (match_operand:QI 0 "nonimmediate_operand" "=dm,d") (truncate:QI (match_operand:HI 1 "general_src_operand" "doJS,i")))] "" *************** *** 1476,1482 **** }") (define_insn "truncsihi2" ! [(set (match_operand:HI 0 "general_operand" "=dm,d") (truncate:HI (match_operand:SI 1 "general_src_operand" "roJS,i")))] "" --- 1476,1482 ---- }") (define_insn "truncsihi2" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=dm,d") (truncate:HI (match_operand:SI 1 "general_src_operand" "roJS,i")))] "" *************** *** 1497,1503 **** ;; zero extension instructions (define_insn "zero_extendqidi2" ! [(set (match_operand:DI 0 "general_operand" "=&d") (zero_extend:DI (match_operand:QI 1 "general_operand" "dm")))] "" "* --- 1497,1503 ---- ;; zero extension instructions (define_insn "zero_extendqidi2" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=&d") (zero_extend:DI (match_operand:QI 1 "general_operand" "dm")))] "" "* *************** *** 1508,1514 **** }") (define_insn "zero_extendhidi2" ! [(set (match_operand:DI 0 "general_operand" "=&d") (zero_extend:DI (match_operand:HI 1 "general_operand" "rm")))] "" "* --- 1508,1514 ---- }") (define_insn "zero_extendhidi2" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=&d") (zero_extend:DI (match_operand:HI 1 "general_operand" "rm")))] "" "* *************** *** 1520,1526 **** ;; this is the canonical form for (lshiftrt:DI x 32) (define_insn "zero_extendsidi2" ! [(set (match_operand:DI 0 "general_operand" "=rm") (zero_extend:DI (match_operand:SI 1 "general_operand" "rm")))] "" "* --- 1520,1526 ---- ;; this is the canonical form for (lshiftrt:DI x 32) (define_insn "zero_extendsidi2" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=rm") (zero_extend:DI (match_operand:SI 1 "general_operand" "rm")))] "" "* *************** *** 1597,1603 **** ;; of this case will result in worse code than the uncombined patterns. (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=do<>,d<") (zero_extend:SI (match_operand:HI 1 "nonimmediate_src_operand" "r,mS")))] "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" "* --- 1597,1603 ---- ;; of this case will result in worse code than the uncombined patterns. (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=do<>,d<") (zero_extend:SI (match_operand:HI 1 "nonimmediate_src_operand" "r,mS")))] "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" "* *************** *** 1626,1632 **** }") (define_insn "" ! [(set (match_operand:HI 0 "general_operand" "=do<>,d") (zero_extend:HI (match_operand:QI 1 "nonimmediate_src_operand" "d,mS")))] "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" "* --- 1626,1632 ---- }") (define_insn "" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=do<>,d") (zero_extend:HI (match_operand:QI 1 "nonimmediate_src_operand" "d,mS")))] "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" "* *************** *** 1667,1673 **** }") (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=do<>,d") (zero_extend:SI (match_operand:QI 1 "nonimmediate_src_operand" "d,mS")))] "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" "* --- 1667,1673 ---- }") (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=do<>,d") (zero_extend:SI (match_operand:QI 1 "nonimmediate_src_operand" "d,mS")))] "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" "* *************** *** 1720,1726 **** ;; sign extension instructions (define_insn "extendqidi2" ! [(set (match_operand:DI 0 "general_operand" "=d") (sign_extend:DI (match_operand:QI 1 "general_src_operand" "rmS")))] "" "* --- 1720,1726 ---- ;; sign extension instructions (define_insn "extendqidi2" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=d") (sign_extend:DI (match_operand:QI 1 "general_src_operand" "rmS")))] "" "* *************** *** 1734,1740 **** }") (define_insn "extendhidi2" ! [(set (match_operand:DI 0 "general_operand" "=d") (sign_extend:DI (match_operand:HI 1 "general_src_operand" "rmS")))] "" --- 1734,1740 ---- }") (define_insn "extendhidi2" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=d") (sign_extend:DI (match_operand:HI 1 "general_src_operand" "rmS")))] "" *************** *** 1749,1755 **** }") (define_insn "extendsidi2" ! [(set (match_operand:DI 0 "general_operand" "=d") (sign_extend:DI (match_operand:SI 1 "general_operand" "rm")))] "" --- 1749,1755 ---- }") (define_insn "extendsidi2" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=d") (sign_extend:DI (match_operand:SI 1 "general_operand" "rm")))] "" *************** *** 1796,1802 **** }") (define_insn "extendhisi2" ! [(set (match_operand:SI 0 "general_operand" "=*d,a") (sign_extend:SI (match_operand:HI 1 "nonimmediate_src_operand" "0,rmS")))] "" --- 1796,1802 ---- }") (define_insn "extendhisi2" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=*d,a") (sign_extend:SI (match_operand:HI 1 "nonimmediate_src_operand" "0,rmS")))] "" *************** *** 1808,1820 **** }") (define_insn "extendqihi2" ! [(set (match_operand:HI 0 "general_operand" "=d") (sign_extend:HI (match_operand:QI 1 "nonimmediate_operand" "0")))] "" "ext%.w %0") (define_insn "extendqisi2" ! [(set (match_operand:SI 0 "general_operand" "=d") (sign_extend:SI (match_operand:QI 1 "nonimmediate_operand" "0")))] "TARGET_68020 || TARGET_5200" "extb%.l %0") --- 1808,1820 ---- }") (define_insn "extendqihi2" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=d") (sign_extend:HI (match_operand:QI 1 "nonimmediate_operand" "0")))] "" "ext%.w %0") (define_insn "extendqisi2" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=d") (sign_extend:SI (match_operand:QI 1 "nonimmediate_operand" "0")))] "TARGET_68020 || TARGET_5200" "extb%.l %0") *************** *** 1822,1842 **** ;; Conversions between float and double. (define_expand "extendsfdf2" ! [(set (match_operand:DF 0 "general_operand" "") (float_extend:DF (match_operand:SF 1 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=x,y") (float_extend:DF (match_operand:SF 1 "general_operand" "xH,rmF")))] "TARGET_FPA" "fpstod %w1,%0") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=*fdm,f") (float_extend:DF (match_operand:SF 1 "general_operand" "f,dmF")))] "TARGET_68881" --- 1822,1842 ---- ;; Conversions between float and double. (define_expand "extendsfdf2" ! [(set (match_operand:DF 0 "nonimmediate_operand" "") (float_extend:DF (match_operand:SF 1 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=x,y") (float_extend:DF (match_operand:SF 1 "general_operand" "xH,rmF")))] "TARGET_FPA" "fpstod %w1,%0") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=*fdm,f") (float_extend:DF (match_operand:SF 1 "general_operand" "f,dmF")))] "TARGET_68881" *************** *** 1869,1882 **** ;; sure of truncating in that case. ;; But on the Sun FPA, we can be sure. (define_expand "truncdfsf2" ! [(set (match_operand:SF 0 "general_operand" "") (float_truncate:SF (match_operand:DF 1 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=x,y") (float_truncate:SF (match_operand:DF 1 "general_operand" "xH,rmF")))] "TARGET_FPA" --- 1869,1882 ---- ;; sure of truncating in that case. ;; But on the Sun FPA, we can be sure. (define_expand "truncdfsf2" ! [(set (match_operand:SF 0 "nonimmediate_operand" "") (float_truncate:SF (match_operand:DF 1 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=x,y") (float_truncate:SF (match_operand:DF 1 "general_operand" "xH,rmF")))] "TARGET_FPA" *************** *** 1884,1890 **** ;; On the '040 we can truncate in a register accurately and easily. (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f") (float_truncate:SF (match_operand:DF 1 "general_operand" "fmG")))] "TARGET_68040_ONLY" --- 1884,1890 ---- ;; On the '040 we can truncate in a register accurately and easily. (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (float_truncate:SF (match_operand:DF 1 "general_operand" "fmG")))] "TARGET_68040_ONLY" *************** *** 1896,1902 **** }") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=dm") (float_truncate:SF (match_operand:DF 1 "general_operand" "f")))] "TARGET_68881" --- 1896,1902 ---- }") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=dm") (float_truncate:SF (match_operand:DF 1 "general_operand" "f")))] "TARGET_68881" *************** *** 1911,1971 **** ;; rather than as QImode or HImode. (define_expand "floatsisf2" ! [(set (match_operand:SF 0 "general_operand" "") (float:SF (match_operand:SI 1 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=y,x") (float:SF (match_operand:SI 1 "general_operand" "rmi,x")))] "TARGET_FPA" "fpltos %1,%0") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f") (float:SF (match_operand:SI 1 "general_operand" "dmi")))] "TARGET_68881" "f%$move%.l %1,%0") (define_expand "floatsidf2" ! [(set (match_operand:DF 0 "general_operand" "") (float:DF (match_operand:SI 1 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=y,x") (float:DF (match_operand:SI 1 "general_operand" "rmi,x")))] "TARGET_FPA" "fpltod %1,%0") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=f") (float:DF (match_operand:SI 1 "general_operand" "dmi")))] "TARGET_68881" "f%&move%.l %1,%0") (define_insn "floathisf2" ! [(set (match_operand:SF 0 "general_operand" "=f") (float:SF (match_operand:HI 1 "general_operand" "dmn")))] "TARGET_68881" "f%$move%.w %1,%0") (define_insn "floathidf2" ! [(set (match_operand:DF 0 "general_operand" "=f") (float:DF (match_operand:HI 1 "general_operand" "dmn")))] "TARGET_68881" "fmove%.w %1,%0") (define_insn "floatqisf2" ! [(set (match_operand:SF 0 "general_operand" "=f") (float:SF (match_operand:QI 1 "general_operand" "dmn")))] "TARGET_68881" "fmove%.b %1,%0") (define_insn "floatqidf2" ! [(set (match_operand:DF 0 "general_operand" "=f") (float:DF (match_operand:QI 1 "general_operand" "dmn")))] "TARGET_68881" "f%&move%.b %1,%0") --- 1911,1971 ---- ;; rather than as QImode or HImode. (define_expand "floatsisf2" ! [(set (match_operand:SF 0 "nonimmediate_operand" "") (float:SF (match_operand:SI 1 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=y,x") (float:SF (match_operand:SI 1 "general_operand" "rmi,x")))] "TARGET_FPA" "fpltos %1,%0") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (float:SF (match_operand:SI 1 "general_operand" "dmi")))] "TARGET_68881" "f%$move%.l %1,%0") (define_expand "floatsidf2" ! [(set (match_operand:DF 0 "nonimmediate_operand" "") (float:DF (match_operand:SI 1 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=y,x") (float:DF (match_operand:SI 1 "general_operand" "rmi,x")))] "TARGET_FPA" "fpltod %1,%0") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (float:DF (match_operand:SI 1 "general_operand" "dmi")))] "TARGET_68881" "f%&move%.l %1,%0") (define_insn "floathisf2" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (float:SF (match_operand:HI 1 "general_operand" "dmn")))] "TARGET_68881" "f%$move%.w %1,%0") (define_insn "floathidf2" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (float:DF (match_operand:HI 1 "general_operand" "dmn")))] "TARGET_68881" "fmove%.w %1,%0") (define_insn "floatqisf2" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (float:SF (match_operand:QI 1 "general_operand" "dmn")))] "TARGET_68881" "fmove%.b %1,%0") (define_insn "floatqidf2" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (float:DF (match_operand:QI 1 "general_operand" "dmn")))] "TARGET_68881" "f%&move%.b %1,%0") *************** *** 1976,1982 **** ;; than calling the subroutines fixsfsi or fixdfsi. (define_insn "fix_truncdfsi2" ! [(set (match_operand:SI 0 "general_operand" "=dm") (fix:SI (fix:DF (match_operand:DF 1 "register_operand" "f")))) (clobber (match_scratch:SI 2 "=d")) (clobber (match_scratch:SI 3 "=d"))] --- 1976,1982 ---- ;; than calling the subroutines fixsfsi or fixdfsi. (define_insn "fix_truncdfsi2" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=dm") (fix:SI (fix:DF (match_operand:DF 1 "register_operand" "f")))) (clobber (match_scratch:SI 2 "=d")) (clobber (match_scratch:SI 3 "=d"))] *************** *** 1988,1994 **** }") (define_insn "fix_truncdfhi2" ! [(set (match_operand:HI 0 "general_operand" "=dm") (fix:HI (fix:DF (match_operand:DF 1 "register_operand" "f")))) (clobber (match_scratch:SI 2 "=d")) (clobber (match_scratch:SI 3 "=d"))] --- 1988,1994 ---- }") (define_insn "fix_truncdfhi2" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=dm") (fix:HI (fix:DF (match_operand:DF 1 "register_operand" "f")))) (clobber (match_scratch:SI 2 "=d")) (clobber (match_scratch:SI 3 "=d"))] *************** *** 2000,2006 **** }") (define_insn "fix_truncdfqi2" ! [(set (match_operand:QI 0 "general_operand" "=dm") (fix:QI (fix:DF (match_operand:DF 1 "register_operand" "f")))) (clobber (match_scratch:SI 2 "=d")) (clobber (match_scratch:SI 3 "=d"))] --- 2000,2006 ---- }") (define_insn "fix_truncdfqi2" ! [(set (match_operand:QI 0 "nonimmediate_operand" "=dm") (fix:QI (fix:DF (match_operand:DF 1 "register_operand" "f")))) (clobber (match_scratch:SI 2 "=d")) (clobber (match_scratch:SI 3 "=d"))] *************** *** 2015,2021 **** ;; This is the first stage of converting it to an integer type. (define_insn "ftruncdf2" ! [(set (match_operand:DF 0 "general_operand" "=f") (fix:DF (match_operand:DF 1 "general_operand" "fFm")))] "TARGET_68881 && !TARGET_68040" "* --- 2015,2021 ---- ;; This is the first stage of converting it to an integer type. (define_insn "ftruncdf2" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (fix:DF (match_operand:DF 1 "general_operand" "fFm")))] "TARGET_68881 && !TARGET_68040" "* *************** *** 2026,2032 **** }") (define_insn "ftruncsf2" ! [(set (match_operand:SF 0 "general_operand" "=f") (fix:SF (match_operand:SF 1 "general_operand" "dfFm")))] "TARGET_68881 && !TARGET_68040" "* --- 2026,2032 ---- }") (define_insn "ftruncsf2" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (fix:SF (match_operand:SF 1 "general_operand" "dfFm")))] "TARGET_68881 && !TARGET_68040" "* *************** *** 2039,2075 **** ;; Convert a float whose value is an integer ;; to an actual integer. Second stage of converting float to integer type. (define_insn "fixsfqi2" ! [(set (match_operand:QI 0 "general_operand" "=dm") (fix:QI (match_operand:SF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.b %1,%0") (define_insn "fixsfhi2" ! [(set (match_operand:HI 0 "general_operand" "=dm") (fix:HI (match_operand:SF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.w %1,%0") (define_insn "fixsfsi2" ! [(set (match_operand:SI 0 "general_operand" "=dm") (fix:SI (match_operand:SF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.l %1,%0") (define_insn "fixdfqi2" ! [(set (match_operand:QI 0 "general_operand" "=dm") (fix:QI (match_operand:DF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.b %1,%0") (define_insn "fixdfhi2" ! [(set (match_operand:HI 0 "general_operand" "=dm") (fix:HI (match_operand:DF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.w %1,%0") (define_insn "fixdfsi2" ! [(set (match_operand:SI 0 "general_operand" "=dm") (fix:SI (match_operand:DF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.l %1,%0") --- 2039,2075 ---- ;; Convert a float whose value is an integer ;; to an actual integer. Second stage of converting float to integer type. (define_insn "fixsfqi2" ! [(set (match_operand:QI 0 "nonimmediate_operand" "=dm") (fix:QI (match_operand:SF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.b %1,%0") (define_insn "fixsfhi2" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=dm") (fix:HI (match_operand:SF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.w %1,%0") (define_insn "fixsfsi2" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=dm") (fix:SI (match_operand:SF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.l %1,%0") (define_insn "fixdfqi2" ! [(set (match_operand:QI 0 "nonimmediate_operand" "=dm") (fix:QI (match_operand:DF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.b %1,%0") (define_insn "fixdfhi2" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=dm") (fix:HI (match_operand:DF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.w %1,%0") (define_insn "fixdfsi2" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=dm") (fix:SI (match_operand:DF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.l %1,%0") *************** *** 2078,2090 **** ;; On the Sun FPA, this is done in one step. (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=x,y") (fix:SI (fix:SF (match_operand:SF 1 "general_operand" "xH,rmF"))))] "TARGET_FPA" "fpstol %w1,%0") (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=x,y") (fix:SI (fix:DF (match_operand:DF 1 "general_operand" "xH,rmF"))))] "TARGET_FPA" "fpdtol %y1,%0") --- 2078,2090 ---- ;; On the Sun FPA, this is done in one step. (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=x,y") (fix:SI (fix:SF (match_operand:SF 1 "general_operand" "xH,rmF"))))] "TARGET_FPA" "fpstol %w1,%0") (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=x,y") (fix:SI (fix:DF (match_operand:DF 1 "general_operand" "xH,rmF"))))] "TARGET_FPA" "fpdtol %y1,%0") *************** *** 2092,2098 **** ;; add instructions (define_insn "adddi_lshrdi_63" ! [(set (match_operand:DI 0 "general_operand" "=d") (plus:DI (lshiftrt:DI (match_operand:DI 1 "general_operand" "rm") (const_int 63)) (match_dup 1))) --- 2092,2098 ---- ;; add instructions (define_insn "adddi_lshrdi_63" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=d") (plus:DI (lshiftrt:DI (match_operand:DI 1 "general_operand" "rm") (const_int 63)) (match_dup 1))) *************** *** 2126,2132 **** }") (define_insn "adddi_sexthishl32" ! [(set (match_operand:DI 0 "general_operand" "=o,a,*d,*d") (plus:DI (ashift:DI (sign_extend:DI (match_operand:HI 1 "general_operand" "rm,rm,rm,rm")) (const_int 32)) --- 2126,2132 ---- }") (define_insn "adddi_sexthishl32" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=o,a,*d,*d") (plus:DI (ashift:DI (sign_extend:DI (match_operand:HI 1 "general_operand" "rm,rm,rm,rm")) (const_int 32)) *************** *** 2145,2151 **** } ") (define_insn "adddi_dilshr32" ! [(set (match_operand:DI 0 "general_operand" "=d,o") ;; (plus:DI (match_operand:DI 2 "general_operand" "%0") ;; (lshiftrt:DI (match_operand:DI 1 "general_operand" "ro") ;; (const_int 32))))] --- 2145,2151 ---- } ") (define_insn "adddi_dilshr32" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=d,o") ;; (plus:DI (match_operand:DI 2 "general_operand" "%0") ;; (lshiftrt:DI (match_operand:DI 1 "general_operand" "ro") ;; (const_int 32))))] *************** *** 2164,2170 **** } ") (define_insn "adddi_dishl32" ! [(set (match_operand:DI 0 "general_operand" "=r,o") ;; (plus:DI (match_operand:DI 2 "general_operand" "%0") ;; (ashift:DI (match_operand:DI 1 "general_operand" "ro") ;; (const_int 32))))] --- 2164,2170 ---- } ") (define_insn "adddi_dishl32" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o") ;; (plus:DI (match_operand:DI 2 "general_operand" "%0") ;; (ashift:DI (match_operand:DI 1 "general_operand" "ro") ;; (const_int 32))))] *************** *** 2183,2189 **** } ") (define_insn "adddi3" ! [(set (match_operand:DI 0 "general_operand" "=<,o<>,d,d,d") (plus:DI (match_operand:DI 1 "general_operand" "%0,0,0,0,0") (match_operand:DI 2 "general_operand" "<,d,no>,d,a"))) (clobber (match_scratch:SI 3 "=X,&d,&d,X,&d"))] --- 2183,2189 ---- } ") (define_insn "adddi3" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=<,o<>,d,d,d") (plus:DI (match_operand:DI 1 "general_operand" "%0,0,0,0,0") (match_operand:DI 2 "general_operand" "<,d,no>,d,a"))) (clobber (match_scratch:SI 3 "=X,&d,&d,X,&d"))] *************** *** 2275,2281 **** } ") (define_insn "addsi_lshrsi_31" ! [(set (match_operand:SI 0 "general_operand" "=dm") (plus:SI (lshiftrt:SI (match_operand:SI 1 "general_operand" "rm") (const_int 31)) (match_dup 1)))] --- 2275,2281 ---- } ") (define_insn "addsi_lshrsi_31" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=dm") (plus:SI (lshiftrt:SI (match_operand:SI 1 "general_operand" "rm") (const_int 31)) (match_dup 1)))] *************** *** 2308,2314 **** }") (define_expand "addsi3" ! [(set (match_operand:SI 0 "general_operand" "") (plus:SI (match_operand:SI 1 "general_operand" "") (match_operand:SI 2 "general_src_operand" "")))] "" --- 2308,2314 ---- }") (define_expand "addsi3" ! [(set (match_operand:SI 0 "nonimmediate_operand" "") (plus:SI (match_operand:SI 1 "general_operand" "") (match_operand:SI 2 "general_src_operand" "")))] "" *************** *** 2319,2325 **** ;; This is needed since they are not themselves reloaded, ;; so commutativity won't apply to them. (define_insn "*addsi3_internal" ! [(set (match_operand:SI 0 "general_operand" "=m,?a,?a,d,a") (plus:SI (match_operand:SI 1 "general_operand" "%0,a,rJK,0,0") (match_operand:SI 2 "general_src_operand" "dIKLT,rJK,a,mSrIKLT,mSrIKLs")))] --- 2319,2325 ---- ;; This is needed since they are not themselves reloaded, ;; so commutativity won't apply to them. (define_insn "*addsi3_internal" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=m,?a,?a,d,a") (plus:SI (match_operand:SI 1 "general_operand" "%0,a,rJK,0,0") (match_operand:SI 2 "general_src_operand" "dIKLT,rJK,a,mSrIKLT,mSrIKLs")))] *************** *** 2328,2341 **** "* return output_addsi3 (operands);") (define_insn "*addsi3_5200" ! [(set (match_operand:SI 0 "general_operand" "=m,?a,?a,r") (plus:SI (match_operand:SI 1 "general_operand" "%0,a,rJK,0") (match_operand:SI 2 "general_src_operand" "d,rJK,a,mrIKLs")))] "TARGET_5200" "* return output_addsi3 (operands);") (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=a") (plus:SI (match_operand:SI 1 "general_operand" "0") (sign_extend:SI (match_operand:HI 2 "nonimmediate_src_operand" "rmS"))))] --- 2328,2341 ---- "* return output_addsi3 (operands);") (define_insn "*addsi3_5200" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=m,?a,?a,r") (plus:SI (match_operand:SI 1 "general_operand" "%0,a,rJK,0") (match_operand:SI 2 "general_src_operand" "d,rJK,a,mrIKLs")))] "TARGET_5200" "* return output_addsi3 (operands);") (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=a") (plus:SI (match_operand:SI 1 "general_operand" "0") (sign_extend:SI (match_operand:HI 2 "nonimmediate_src_operand" "rmS"))))] *************** *** 2343,2349 **** "add%.w %2,%0") (define_insn "addhi3" ! [(set (match_operand:HI 0 "general_operand" "=m,r") (plus:HI (match_operand:HI 1 "general_operand" "%0,0") (match_operand:HI 2 "general_src_operand" "dn,rmSn")))] "!TARGET_5200" --- 2343,2349 ---- "add%.w %2,%0") (define_insn "addhi3" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=m,r") (plus:HI (match_operand:HI 1 "general_operand" "%0,0") (match_operand:HI 2 "general_src_operand" "dn,rmSn")))] "!TARGET_5200" *************** *** 2405,2411 **** ;; operand in both positions. (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "general_operand" "+m,d")) (plus:HI (match_dup 0) (match_operand:HI 1 "general_src_operand" "dn,rmSn")))] "!TARGET_5200" --- 2405,2411 ---- ;; operand in both positions. (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "nonimmediate_operand" "+m,d")) (plus:HI (match_dup 0) (match_operand:HI 1 "general_src_operand" "dn,rmSn")))] "!TARGET_5200" *************** *** 2461,2467 **** }") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "general_operand" "+m,d")) (plus:HI (match_operand:HI 1 "general_src_operand" "dn,rmSn") (match_dup 0)))] "!TARGET_5200" --- 2461,2467 ---- }") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "nonimmediate_operand" "+m,d")) (plus:HI (match_operand:HI 1 "general_src_operand" "dn,rmSn") (match_dup 0)))] "!TARGET_5200" *************** *** 2517,2523 **** }") (define_insn "addqi3" ! [(set (match_operand:QI 0 "general_operand" "=m,d") (plus:QI (match_operand:QI 1 "general_operand" "%0,0") (match_operand:QI 2 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" --- 2517,2523 ---- }") (define_insn "addqi3" ! [(set (match_operand:QI 0 "nonimmediate_operand" "=m,d") (plus:QI (match_operand:QI 1 "general_operand" "%0,0") (match_operand:QI 2 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" *************** *** 2543,2549 **** }") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "general_operand" "+m,d")) (plus:QI (match_dup 0) (match_operand:QI 1 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" --- 2543,2549 ---- }") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+m,d")) (plus:QI (match_dup 0) (match_operand:QI 1 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" *************** *** 2569,2575 **** }") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "general_operand" "+m,d")) (plus:QI (match_operand:QI 1 "general_src_operand" "dn,dmSn") (match_dup 0)))] "!TARGET_5200" --- 2569,2575 ---- }") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+m,d")) (plus:QI (match_operand:QI 1 "general_src_operand" "dn,dmSn") (match_dup 0)))] "!TARGET_5200" *************** *** 2595,2608 **** }") (define_expand "adddf3" ! [(set (match_operand:DF 0 "general_operand" "") (plus:DF (match_operand:DF 1 "general_operand" "") (match_operand:DF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=x,y") (plus:DF (match_operand:DF 1 "general_operand" "%xH,y") (match_operand:DF 2 "general_operand" "xH,dmF")))] "TARGET_FPA" --- 2595,2608 ---- }") (define_expand "adddf3" ! [(set (match_operand:DF 0 "nonimmediate_operand" "") (plus:DF (match_operand:DF 1 "general_operand" "") (match_operand:DF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=x,y") (plus:DF (match_operand:DF 1 "general_operand" "%xH,y") (match_operand:DF 2 "general_operand" "xH,dmF")))] "TARGET_FPA" *************** *** 2618,2645 **** }") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=f") (plus:DF (float:DF (match_operand:SI 2 "general_operand" "dmi")) (match_operand:DF 1 "general_operand" "0")))] "TARGET_68881" "f%&add%.l %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=f") (plus:DF (float:DF (match_operand:HI 2 "general_operand" "dmn")) (match_operand:DF 1 "general_operand" "0")))] "TARGET_68881" "f%&add%.w %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=f") (plus:DF (float:DF (match_operand:QI 2 "general_operand" "dmn")) (match_operand:DF 1 "general_operand" "0")))] "TARGET_68881" "f%&add%.b %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=f") (plus:DF (match_operand:DF 1 "general_operand" "%0") (match_operand:DF 2 "general_operand" "fmG")))] "TARGET_68881" --- 2618,2645 ---- }") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (plus:DF (float:DF (match_operand:SI 2 "general_operand" "dmi")) (match_operand:DF 1 "general_operand" "0")))] "TARGET_68881" "f%&add%.l %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (plus:DF (float:DF (match_operand:HI 2 "general_operand" "dmn")) (match_operand:DF 1 "general_operand" "0")))] "TARGET_68881" "f%&add%.w %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (plus:DF (float:DF (match_operand:QI 2 "general_operand" "dmn")) (match_operand:DF 1 "general_operand" "0")))] "TARGET_68881" "f%&add%.b %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (plus:DF (match_operand:DF 1 "general_operand" "%0") (match_operand:DF 2 "general_operand" "fmG")))] "TARGET_68881" *************** *** 2651,2664 **** }") (define_expand "addsf3" ! [(set (match_operand:SF 0 "general_operand" "") (plus:SF (match_operand:SF 1 "general_operand" "") (match_operand:SF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=x,y") (plus:SF (match_operand:SF 1 "general_operand" "%xH,y") (match_operand:SF 2 "general_operand" "xH,rmF")))] "TARGET_FPA" --- 2651,2664 ---- }") (define_expand "addsf3" ! [(set (match_operand:SF 0 "nonimmediate_operand" "") (plus:SF (match_operand:SF 1 "general_operand" "") (match_operand:SF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=x,y") (plus:SF (match_operand:SF 1 "general_operand" "%xH,y") (match_operand:SF 2 "general_operand" "xH,rmF")))] "TARGET_FPA" *************** *** 2674,2701 **** }") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f") (plus:SF (float:SF (match_operand:SI 2 "general_operand" "dmi")) (match_operand:SF 1 "general_operand" "0")))] "TARGET_68881" "f%$add%.l %2,%0") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f") (plus:SF (float:SF (match_operand:HI 2 "general_operand" "dmn")) (match_operand:SF 1 "general_operand" "0")))] "TARGET_68881" "f%$add%.w %2,%0") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f") (plus:SF (float:SF (match_operand:QI 2 "general_operand" "dmn")) (match_operand:SF 1 "general_operand" "0")))] "TARGET_68881" "f%$add%.b %2,%0") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f") (plus:SF (match_operand:SF 1 "general_operand" "%0") (match_operand:SF 2 "general_operand" "fdmF")))] "TARGET_68881" --- 2674,2701 ---- }") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (plus:SF (float:SF (match_operand:SI 2 "general_operand" "dmi")) (match_operand:SF 1 "general_operand" "0")))] "TARGET_68881" "f%$add%.l %2,%0") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (plus:SF (float:SF (match_operand:HI 2 "general_operand" "dmn")) (match_operand:SF 1 "general_operand" "0")))] "TARGET_68881" "f%$add%.w %2,%0") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (plus:SF (float:SF (match_operand:QI 2 "general_operand" "dmn")) (match_operand:SF 1 "general_operand" "0")))] "TARGET_68881" "f%$add%.b %2,%0") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (plus:SF (match_operand:SF 1 "general_operand" "%0") (match_operand:SF 2 "general_operand" "fdmF")))] "TARGET_68881" *************** *** 2709,2715 **** ;; subtract instructions (define_insn "subdi_sexthishl32" ! [(set (match_operand:DI 0 "general_operand" "=o,a,*d,*d") (minus:DI (match_operand:DI 1 "general_operand" "0,0,0,0") (ashift:DI (sign_extend:DI (match_operand:HI 2 "general_operand" "rm,rm,rm,rm")) (const_int 32)))) --- 2709,2715 ---- ;; subtract instructions (define_insn "subdi_sexthishl32" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=o,a,*d,*d") (minus:DI (match_operand:DI 1 "general_operand" "0,0,0,0") (ashift:DI (sign_extend:DI (match_operand:HI 2 "general_operand" "rm,rm,rm,rm")) (const_int 32)))) *************** *** 2727,2733 **** } ") (define_insn "subdi_dishl32" ! [(set (match_operand:DI 0 "general_operand" "+ro") (minus:DI (match_dup 0) (ashift:DI (match_operand:DI 1 "general_operand" "ro") (const_int 32))))] --- 2727,2733 ---- } ") (define_insn "subdi_dishl32" ! [(set (match_operand:DI 0 "nonimmediate_operand" "+ro") (minus:DI (match_dup 0) (ashift:DI (match_operand:DI 1 "general_operand" "ro") (const_int 32))))] *************** *** 2743,2749 **** } ") (define_insn "subdi3" ! [(set (match_operand:DI 0 "general_operand" "=<,o<>,d,d,d") (minus:DI (match_operand:DI 1 "general_operand" "0,0,0,0,0") (match_operand:DI 2 "general_operand" "<,d,no>,d,a"))) (clobber (match_scratch:SI 3 "=X,&d,&d,X,&d"))] --- 2743,2749 ---- } ") (define_insn "subdi3" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=<,o<>,d,d,d") (minus:DI (match_operand:DI 1 "general_operand" "0,0,0,0,0") (match_operand:DI 2 "general_operand" "<,d,no>,d,a"))) (clobber (match_scratch:SI 3 "=X,&d,&d,X,&d"))] *************** *** 2837,2850 **** } ") (define_insn "subsi3" ! [(set (match_operand:SI 0 "general_operand" "=m,d,a") (minus:SI (match_operand:SI 1 "general_operand" "0,0,0") (match_operand:SI 2 "general_src_operand" "dT,mSrT,mSrs")))] "" "sub%.l %2,%0") (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=a") (minus:SI (match_operand:SI 1 "general_operand" "0") (sign_extend:SI (match_operand:HI 2 "nonimmediate_src_operand" "rmS"))))] --- 2837,2850 ---- } ") (define_insn "subsi3" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=m,d,a") (minus:SI (match_operand:SI 1 "general_operand" "0,0,0") (match_operand:SI 2 "general_src_operand" "dT,mSrT,mSrs")))] "" "sub%.l %2,%0") (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=a") (minus:SI (match_operand:SI 1 "general_operand" "0") (sign_extend:SI (match_operand:HI 2 "nonimmediate_src_operand" "rmS"))))] *************** *** 2852,2893 **** "sub%.w %2,%0") (define_insn "subhi3" ! [(set (match_operand:HI 0 "general_operand" "=m,r") (minus:HI (match_operand:HI 1 "general_operand" "0,0") (match_operand:HI 2 "general_src_operand" "dn,rmSn")))] "!TARGET_5200" "sub%.w %2,%0") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "general_operand" "+m,d")) (minus:HI (match_dup 0) (match_operand:HI 1 "general_src_operand" "dn,rmSn")))] "!TARGET_5200" "sub%.w %1,%0") (define_insn "subqi3" ! [(set (match_operand:QI 0 "general_operand" "=m,d") (minus:QI (match_operand:QI 1 "general_operand" "0,0") (match_operand:QI 2 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "sub%.b %2,%0") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "general_operand" "+m,d")) (minus:QI (match_dup 0) (match_operand:QI 1 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "sub%.b %1,%0") (define_expand "subdf3" ! [(set (match_operand:DF 0 "general_operand" "") (minus:DF (match_operand:DF 1 "general_operand" "") (match_operand:DF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=x,y,y") (minus:DF (match_operand:DF 1 "general_operand" "xH,y,dmF") (match_operand:DF 2 "general_operand" "xH,dmF,0")))] "TARGET_FPA" --- 2852,2893 ---- "sub%.w %2,%0") (define_insn "subhi3" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=m,r") (minus:HI (match_operand:HI 1 "general_operand" "0,0") (match_operand:HI 2 "general_src_operand" "dn,rmSn")))] "!TARGET_5200" "sub%.w %2,%0") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "nonimmediate_operand" "+m,d")) (minus:HI (match_dup 0) (match_operand:HI 1 "general_src_operand" "dn,rmSn")))] "!TARGET_5200" "sub%.w %1,%0") (define_insn "subqi3" ! [(set (match_operand:QI 0 "nonimmediate_operand" "=m,d") (minus:QI (match_operand:QI 1 "general_operand" "0,0") (match_operand:QI 2 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "sub%.b %2,%0") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+m,d")) (minus:QI (match_dup 0) (match_operand:QI 1 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "sub%.b %1,%0") (define_expand "subdf3" ! [(set (match_operand:DF 0 "nonimmediate_operand" "") (minus:DF (match_operand:DF 1 "general_operand" "") (match_operand:DF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=x,y,y") (minus:DF (match_operand:DF 1 "general_operand" "xH,y,dmF") (match_operand:DF 2 "general_operand" "xH,dmF,0")))] "TARGET_FPA" *************** *** 2903,2930 **** }") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=f") (minus:DF (match_operand:DF 1 "general_operand" "0") (float:DF (match_operand:SI 2 "general_operand" "dmi"))))] "TARGET_68881" "f%&sub%.l %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=f") (minus:DF (match_operand:DF 1 "general_operand" "0") (float:DF (match_operand:HI 2 "general_operand" "dmn"))))] "TARGET_68881" "f%&sub%.w %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=f") (minus:DF (match_operand:DF 1 "general_operand" "0") (float:DF (match_operand:QI 2 "general_operand" "dmn"))))] "TARGET_68881" "f%&sub%.b %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=f") (minus:DF (match_operand:DF 1 "general_operand" "0") (match_operand:DF 2 "general_operand" "fmG")))] "TARGET_68881" --- 2903,2930 ---- }") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (minus:DF (match_operand:DF 1 "general_operand" "0") (float:DF (match_operand:SI 2 "general_operand" "dmi"))))] "TARGET_68881" "f%&sub%.l %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (minus:DF (match_operand:DF 1 "general_operand" "0") (float:DF (match_operand:HI 2 "general_operand" "dmn"))))] "TARGET_68881" "f%&sub%.w %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (minus:DF (match_operand:DF 1 "general_operand" "0") (float:DF (match_operand:QI 2 "general_operand" "dmn"))))] "TARGET_68881" "f%&sub%.b %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (minus:DF (match_operand:DF 1 "general_operand" "0") (match_operand:DF 2 "general_operand" "fmG")))] "TARGET_68881" *************** *** 2936,2949 **** }") (define_expand "subsf3" ! [(set (match_operand:SF 0 "general_operand" "") (minus:SF (match_operand:SF 1 "general_operand" "") (match_operand:SF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=x,y,y") (minus:SF (match_operand:SF 1 "general_operand" "xH,y,rmF") (match_operand:SF 2 "general_operand" "xH,rmF,0")))] "TARGET_FPA" --- 2936,2949 ---- }") (define_expand "subsf3" ! [(set (match_operand:SF 0 "nonimmediate_operand" "") (minus:SF (match_operand:SF 1 "general_operand" "") (match_operand:SF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=x,y,y") (minus:SF (match_operand:SF 1 "general_operand" "xH,y,rmF") (match_operand:SF 2 "general_operand" "xH,rmF,0")))] "TARGET_FPA" *************** *** 2959,2986 **** }") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f") (minus:SF (match_operand:SF 1 "general_operand" "0") (float:SF (match_operand:SI 2 "general_operand" "dmi"))))] "TARGET_68881" "f%$sub%.l %2,%0") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f") (minus:SF (match_operand:SF 1 "general_operand" "0") (float:SF (match_operand:HI 2 "general_operand" "dmn"))))] "TARGET_68881" "f%$sub%.w %2,%0") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f") (minus:SF (match_operand:SF 1 "general_operand" "0") (float:SF (match_operand:QI 2 "general_operand" "dmn"))))] "TARGET_68881" "f%$sub%.b %2,%0") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f") (minus:SF (match_operand:SF 1 "general_operand" "0") (match_operand:SF 2 "general_operand" "fdmF")))] "TARGET_68881" --- 2959,2986 ---- }") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (minus:SF (match_operand:SF 1 "general_operand" "0") (float:SF (match_operand:SI 2 "general_operand" "dmi"))))] "TARGET_68881" "f%$sub%.l %2,%0") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (minus:SF (match_operand:SF 1 "general_operand" "0") (float:SF (match_operand:HI 2 "general_operand" "dmn"))))] "TARGET_68881" "f%$sub%.w %2,%0") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (minus:SF (match_operand:SF 1 "general_operand" "0") (float:SF (match_operand:QI 2 "general_operand" "dmn"))))] "TARGET_68881" "f%$sub%.b %2,%0") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (minus:SF (match_operand:SF 1 "general_operand" "0") (match_operand:SF 2 "general_operand" "fdmF")))] "TARGET_68881" *************** *** 2994,3000 **** ;; multiply instructions (define_insn "mulhi3" ! [(set (match_operand:HI 0 "general_operand" "=d") (mult:HI (match_operand:HI 1 "general_operand" "%0") (match_operand:HI 2 "general_src_operand" "dmSn")))] "" --- 2994,3000 ---- ;; multiply instructions (define_insn "mulhi3" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=d") (mult:HI (match_operand:HI 1 "general_operand" "%0") (match_operand:HI 2 "general_src_operand" "dmSn")))] "" *************** *** 3008,3014 **** }") (define_insn "mulhisi3" ! [(set (match_operand:SI 0 "general_operand" "=d") (mult:SI (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "%0")) (sign_extend:SI --- 3008,3014 ---- }") (define_insn "mulhisi3" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=d") (mult:SI (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "%0")) (sign_extend:SI *************** *** 3024,3030 **** }") (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=d") (mult:SI (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "%0")) (match_operand:SI 2 "const_int_operand" "n")))] --- 3024,3030 ---- }") (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=d") (mult:SI (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "%0")) (match_operand:SI 2 "const_int_operand" "n")))] *************** *** 3039,3052 **** }") (define_expand "mulsi3" ! [(set (match_operand:SI 0 "general_operand" "") (mult:SI (match_operand:SI 1 "general_operand" "") (match_operand:SI 2 "general_operand" "")))] "TARGET_68020 || TARGET_5200" "") (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=d") (mult:SI (match_operand:SI 1 "general_operand" "%0") (match_operand:SI 2 "general_src_operand" "dmSTK")))] --- 3039,3052 ---- }") (define_expand "mulsi3" ! [(set (match_operand:SI 0 "nonimmediate_operand" "") (mult:SI (match_operand:SI 1 "general_operand" "") (match_operand:SI 2 "general_operand" "")))] "TARGET_68020 || TARGET_5200" "") (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=d") (mult:SI (match_operand:SI 1 "general_operand" "%0") (match_operand:SI 2 "general_src_operand" "dmSTK")))] *************** *** 3054,3067 **** "muls%.l %2,%0") (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=d") (mult:SI (match_operand:SI 1 "general_operand" "%0") (match_operand:SI 2 "general_operand" "d")))] "TARGET_5200" "muls%.l %2,%0") (define_insn "umulhisi3" ! [(set (match_operand:SI 0 "general_operand" "=d") (mult:SI (zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "%0")) (zero_extend:SI --- 3054,3067 ---- "muls%.l %2,%0") (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=d") (mult:SI (match_operand:SI 1 "general_operand" "%0") (match_operand:SI 2 "general_operand" "d")))] "TARGET_5200" "muls%.l %2,%0") (define_insn "umulhisi3" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=d") (mult:SI (zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "%0")) (zero_extend:SI *************** *** 3077,3083 **** }") (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=d") (mult:SI (zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "%0")) (match_operand:SI 2 "const_int_operand" "n")))] --- 3077,3083 ---- }") (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=d") (mult:SI (zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "%0")) (match_operand:SI 2 "const_int_operand" "n")))] *************** *** 3262,3275 **** "muls%.l %3,%0:%1") (define_expand "muldf3" ! [(set (match_operand:DF 0 "general_operand" "") (mult:DF (match_operand:DF 1 "general_operand" "") (match_operand:DF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=x,y") (mult:DF (match_operand:DF 1 "general_operand" "%xH,y") (match_operand:DF 2 "general_operand" "xH,rmF")))] "TARGET_FPA" --- 3262,3275 ---- "muls%.l %3,%0:%1") (define_expand "muldf3" ! [(set (match_operand:DF 0 "nonimmediate_operand" "") (mult:DF (match_operand:DF 1 "general_operand" "") (match_operand:DF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=x,y") (mult:DF (match_operand:DF 1 "general_operand" "%xH,y") (match_operand:DF 2 "general_operand" "xH,rmF")))] "TARGET_FPA" *************** *** 3287,3314 **** }") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=f") (mult:DF (float:DF (match_operand:SI 2 "general_operand" "dmi")) (match_operand:DF 1 "general_operand" "0")))] "TARGET_68881" "f%&mul%.l %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=f") (mult:DF (float:DF (match_operand:HI 2 "general_operand" "dmn")) (match_operand:DF 1 "general_operand" "0")))] "TARGET_68881" "f%&mul%.w %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=f") (mult:DF (float:DF (match_operand:QI 2 "general_operand" "dmn")) (match_operand:DF 1 "general_operand" "0")))] "TARGET_68881" "f%&mul%.b %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=f") (mult:DF (match_operand:DF 1 "general_operand" "%0") (match_operand:DF 2 "general_operand" "fmG")))] "TARGET_68881" --- 3287,3314 ---- }") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (mult:DF (float:DF (match_operand:SI 2 "general_operand" "dmi")) (match_operand:DF 1 "general_operand" "0")))] "TARGET_68881" "f%&mul%.l %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (mult:DF (float:DF (match_operand:HI 2 "general_operand" "dmn")) (match_operand:DF 1 "general_operand" "0")))] "TARGET_68881" "f%&mul%.w %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (mult:DF (float:DF (match_operand:QI 2 "general_operand" "dmn")) (match_operand:DF 1 "general_operand" "0")))] "TARGET_68881" "f%&mul%.b %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (mult:DF (match_operand:DF 1 "general_operand" "%0") (match_operand:DF 2 "general_operand" "fmG")))] "TARGET_68881" *************** *** 3327,3340 **** }") (define_expand "mulsf3" ! [(set (match_operand:SF 0 "general_operand" "") (mult:SF (match_operand:SF 1 "general_operand" "") (match_operand:SF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=x,y") (mult:SF (match_operand:SF 1 "general_operand" "%xH,y") (match_operand:SF 2 "general_operand" "xH,rmF")))] "TARGET_FPA" --- 3327,3340 ---- }") (define_expand "mulsf3" ! [(set (match_operand:SF 0 "nonimmediate_operand" "") (mult:SF (match_operand:SF 1 "general_operand" "") (match_operand:SF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=x,y") (mult:SF (match_operand:SF 1 "general_operand" "%xH,y") (match_operand:SF 2 "general_operand" "xH,rmF")))] "TARGET_FPA" *************** *** 3352,3358 **** }") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f") (mult:SF (float:SF (match_operand:SI 2 "general_operand" "dmi")) (match_operand:SF 1 "general_operand" "0")))] "TARGET_68881" --- 3352,3358 ---- }") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (mult:SF (float:SF (match_operand:SI 2 "general_operand" "dmi")) (match_operand:SF 1 "general_operand" "0")))] "TARGET_68881" *************** *** 3364,3370 **** }") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f") (mult:SF (float:SF (match_operand:HI 2 "general_operand" "dmn")) (match_operand:SF 1 "general_operand" "0")))] "TARGET_68881" --- 3364,3370 ---- }") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (mult:SF (float:SF (match_operand:HI 2 "general_operand" "dmn")) (match_operand:SF 1 "general_operand" "0")))] "TARGET_68881" *************** *** 3376,3382 **** }") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f") (mult:SF (float:SF (match_operand:QI 2 "general_operand" "dmn")) (match_operand:SF 1 "general_operand" "0")))] "TARGET_68881" --- 3376,3382 ---- }") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (mult:SF (float:SF (match_operand:QI 2 "general_operand" "dmn")) (match_operand:SF 1 "general_operand" "0")))] "TARGET_68881" *************** *** 3388,3394 **** }") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f") (mult:SF (match_operand:SF 1 "general_operand" "%0") (match_operand:SF 2 "general_operand" "fdmF")))] "TARGET_68881" --- 3388,3394 ---- }") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (mult:SF (match_operand:SF 1 "general_operand" "%0") (match_operand:SF 2 "general_operand" "fdmF")))] "TARGET_68881" *************** *** 3413,3426 **** ;; divide instructions (define_expand "divdf3" ! [(set (match_operand:DF 0 "general_operand" "") (div:DF (match_operand:DF 1 "general_operand" "") (match_operand:DF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=x,y,y") (div:DF (match_operand:DF 1 "general_operand" "xH,y,rmF") (match_operand:DF 2 "general_operand" "xH,rmF,0")))] "TARGET_FPA" --- 3413,3426 ---- ;; divide instructions (define_expand "divdf3" ! [(set (match_operand:DF 0 "nonimmediate_operand" "") (div:DF (match_operand:DF 1 "general_operand" "") (match_operand:DF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=x,y,y") (div:DF (match_operand:DF 1 "general_operand" "xH,y,rmF") (match_operand:DF 2 "general_operand" "xH,rmF,0")))] "TARGET_FPA" *************** *** 3436,3463 **** }") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=f") (div:DF (match_operand:DF 1 "general_operand" "0") (float:DF (match_operand:SI 2 "general_operand" "dmi"))))] "TARGET_68881" "f%&div%.l %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=f") (div:DF (match_operand:DF 1 "general_operand" "0") (float:DF (match_operand:HI 2 "general_operand" "dmn"))))] "TARGET_68881" "f%&div%.w %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=f") (div:DF (match_operand:DF 1 "general_operand" "0") (float:DF (match_operand:QI 2 "general_operand" "dmn"))))] "TARGET_68881" "f%&div%.b %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=f") (div:DF (match_operand:DF 1 "general_operand" "0") (match_operand:DF 2 "general_operand" "fmG")))] "TARGET_68881" --- 3436,3463 ---- }") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (div:DF (match_operand:DF 1 "general_operand" "0") (float:DF (match_operand:SI 2 "general_operand" "dmi"))))] "TARGET_68881" "f%&div%.l %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (div:DF (match_operand:DF 1 "general_operand" "0") (float:DF (match_operand:HI 2 "general_operand" "dmn"))))] "TARGET_68881" "f%&div%.w %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (div:DF (match_operand:DF 1 "general_operand" "0") (float:DF (match_operand:QI 2 "general_operand" "dmn"))))] "TARGET_68881" "f%&div%.b %2,%0") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (div:DF (match_operand:DF 1 "general_operand" "0") (match_operand:DF 2 "general_operand" "fmG")))] "TARGET_68881" *************** *** 3469,3482 **** }") (define_expand "divsf3" ! [(set (match_operand:SF 0 "general_operand" "") (div:SF (match_operand:SF 1 "general_operand" "") (match_operand:SF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=x,y,y") (div:SF (match_operand:SF 1 "general_operand" "xH,y,rmF") (match_operand:SF 2 "general_operand" "xH,rmF,0")))] "TARGET_FPA" --- 3469,3482 ---- }") (define_expand "divsf3" ! [(set (match_operand:SF 0 "nonimmediate_operand" "") (div:SF (match_operand:SF 1 "general_operand" "") (match_operand:SF 2 "general_operand" "")))] "TARGET_68881 || TARGET_FPA" "") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=x,y,y") (div:SF (match_operand:SF 1 "general_operand" "xH,y,rmF") (match_operand:SF 2 "general_operand" "xH,rmF,0")))] "TARGET_FPA" *************** *** 3492,3498 **** }") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f") (div:SF (match_operand:SF 1 "general_operand" "0") (float:SF (match_operand:SI 2 "general_operand" "dmi"))))] "TARGET_68881" --- 3492,3498 ---- }") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (div:SF (match_operand:SF 1 "general_operand" "0") (float:SF (match_operand:SI 2 "general_operand" "dmi"))))] "TARGET_68881" *************** *** 3504,3510 **** }") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f") (div:SF (match_operand:SF 1 "general_operand" "0") (float:SF (match_operand:HI 2 "general_operand" "dmn"))))] "TARGET_68881" --- 3504,3510 ---- }") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (div:SF (match_operand:SF 1 "general_operand" "0") (float:SF (match_operand:HI 2 "general_operand" "dmn"))))] "TARGET_68881" *************** *** 3516,3522 **** }") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f") (div:SF (match_operand:SF 1 "general_operand" "0") (float:SF (match_operand:QI 2 "general_operand" "dmn"))))] "TARGET_68881" --- 3516,3522 ---- }") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (div:SF (match_operand:SF 1 "general_operand" "0") (float:SF (match_operand:QI 2 "general_operand" "dmn"))))] "TARGET_68881" *************** *** 3528,3534 **** }") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f") (div:SF (match_operand:SF 1 "general_operand" "0") (match_operand:SF 2 "general_operand" "fdmF")))] "TARGET_68881" --- 3528,3534 ---- }") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (div:SF (match_operand:SF 1 "general_operand" "0") (match_operand:SF 2 "general_operand" "fdmF")))] "TARGET_68881" *************** *** 3553,3562 **** ;; Remainder instructions. (define_insn "divmodsi4" ! [(set (match_operand:SI 0 "general_operand" "=d") (div:SI (match_operand:SI 1 "general_operand" "0") (match_operand:SI 2 "general_src_operand" "dmSTK"))) ! (set (match_operand:SI 3 "general_operand" "=d") (mod:SI (match_dup 1) (match_dup 2)))] "TARGET_68020 && !TARGET_5200" "* --- 3553,3562 ---- ;; Remainder instructions. (define_insn "divmodsi4" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=d") (div:SI (match_operand:SI 1 "general_operand" "0") (match_operand:SI 2 "general_src_operand" "dmSTK"))) ! (set (match_operand:SI 3 "nonimmediate_operand" "=d") (mod:SI (match_dup 1) (match_dup 2)))] "TARGET_68020 && !TARGET_5200" "* *************** *** 3568,3577 **** }") (define_insn "udivmodsi4" ! [(set (match_operand:SI 0 "general_operand" "=d") (udiv:SI (match_operand:SI 1 "general_operand" "0") (match_operand:SI 2 "general_src_operand" "dmSTK"))) ! (set (match_operand:SI 3 "general_operand" "=d") (umod:SI (match_dup 1) (match_dup 2)))] "TARGET_68020 && !TARGET_5200" "* --- 3568,3577 ---- }") (define_insn "udivmodsi4" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=d") (udiv:SI (match_operand:SI 1 "general_operand" "0") (match_operand:SI 2 "general_src_operand" "dmSTK"))) ! (set (match_operand:SI 3 "nonimmediate_operand" "=d") (umod:SI (match_dup 1) (match_dup 2)))] "TARGET_68020 && !TARGET_5200" "* *************** *** 3583,3592 **** }") (define_insn "divmodhi4" ! [(set (match_operand:HI 0 "general_operand" "=d") (div:HI (match_operand:HI 1 "general_operand" "0") (match_operand:HI 2 "general_src_operand" "dmSKT"))) ! (set (match_operand:HI 3 "general_operand" "=d") (mod:HI (match_dup 1) (match_dup 2)))] "!TARGET_5200" "* --- 3583,3592 ---- }") (define_insn "divmodhi4" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=d") (div:HI (match_operand:HI 1 "general_operand" "0") (match_operand:HI 2 "general_src_operand" "dmSKT"))) ! (set (match_operand:HI 3 "nonimmediate_operand" "=d") (mod:HI (match_dup 1) (match_dup 2)))] "!TARGET_5200" "* *************** *** 3606,3615 **** }") (define_insn "udivmodhi4" ! [(set (match_operand:HI 0 "general_operand" "=d") (udiv:HI (match_operand:HI 1 "general_operand" "0") (match_operand:HI 2 "general_src_operand" "dmSKT"))) ! (set (match_operand:HI 3 "general_operand" "=d") (umod:HI (match_dup 1) (match_dup 2)))] "!TARGET_5200" "* --- 3606,3615 ---- }") (define_insn "udivmodhi4" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=d") (udiv:HI (match_operand:HI 1 "general_operand" "0") (match_operand:HI 2 "general_src_operand" "dmSKT"))) ! (set (match_operand:HI 3 "nonimmediate_operand" "=d") (umod:HI (match_dup 1) (match_dup 2)))] "!TARGET_5200" "* *************** *** 3632,3638 **** ;; "anddi3" is mainly here to help combine(). (define_insn "anddi3" ! [(set (match_operand:DI 0 "general_operand" "=o,d") (and:DI (match_operand:DI 1 "general_operand" "%0,0") (match_operand:DI 2 "general_operand" "dn,don")))] "!TARGET_5200" --- 3632,3638 ---- ;; "anddi3" is mainly here to help combine(). (define_insn "anddi3" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=o,d") (and:DI (match_operand:DI 1 "general_operand" "%0,0") (match_operand:DI 2 "general_operand" "dn,don")))] "!TARGET_5200" *************** *** 3726,3767 **** "and%.l %2,%0") (define_insn "andhi3" ! [(set (match_operand:HI 0 "general_operand" "=m,d") (and:HI (match_operand:HI 1 "general_operand" "%0,0") (match_operand:HI 2 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "and%.w %2,%0") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "general_operand" "+m,d")) (and:HI (match_dup 0) (match_operand:HI 1 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "and%.w %1,%0") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "general_operand" "+m,d")) (and:HI (match_operand:HI 1 "general_src_operand" "dn,dmSn") (match_dup 0)))] "!TARGET_5200" "and%.w %1,%0") (define_insn "andqi3" ! [(set (match_operand:QI 0 "general_operand" "=m,d") (and:QI (match_operand:QI 1 "general_operand" "%0,0") (match_operand:QI 2 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "and%.b %2,%0") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "general_operand" "+m,d")) (and:QI (match_dup 0) (match_operand:QI 1 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "and%.b %1,%0") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "general_operand" "+m,d")) (and:QI (match_operand:QI 1 "general_src_operand" "dn,dmSn") (match_dup 0)))] "!TARGET_5200" --- 3726,3767 ---- "and%.l %2,%0") (define_insn "andhi3" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=m,d") (and:HI (match_operand:HI 1 "general_operand" "%0,0") (match_operand:HI 2 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "and%.w %2,%0") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "nonimmediate_operand" "+m,d")) (and:HI (match_dup 0) (match_operand:HI 1 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "and%.w %1,%0") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "nonimmediate_operand" "+m,d")) (and:HI (match_operand:HI 1 "general_src_operand" "dn,dmSn") (match_dup 0)))] "!TARGET_5200" "and%.w %1,%0") (define_insn "andqi3" ! [(set (match_operand:QI 0 "nonimmediate_operand" "=m,d") (and:QI (match_operand:QI 1 "general_operand" "%0,0") (match_operand:QI 2 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "and%.b %2,%0") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+m,d")) (and:QI (match_dup 0) (match_operand:QI 1 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "and%.b %1,%0") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+m,d")) (and:QI (match_operand:QI 1 "general_src_operand" "dn,dmSn") (match_dup 0)))] "!TARGET_5200" *************** *** 3770,3776 **** ;; inclusive-or instructions (define_insn "iordi_zext" ! [(set (match_operand:DI 0 "general_operand" "=o,d") (ior:DI (zero_extend:DI (match_operand 1 "general_operand" "dn,dmn")) (match_operand:DI 2 "general_operand" "0,0")))] "!TARGET_5200" --- 3770,3776 ---- ;; inclusive-or instructions (define_insn "iordi_zext" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=o,d") (ior:DI (zero_extend:DI (match_operand 1 "general_operand" "dn,dmn")) (match_operand:DI 2 "general_operand" "0,0")))] "!TARGET_5200" *************** *** 3796,3802 **** ;; "iordi3" is mainly here to help combine(). (define_insn "iordi3" ! [(set (match_operand:DI 0 "general_operand" "=o,d") (ior:DI (match_operand:DI 1 "general_operand" "%0,0") (match_operand:DI 2 "general_operand" "dn,don")))] "!TARGET_5200" --- 3796,3802 ---- ;; "iordi3" is mainly here to help combine(). (define_insn "iordi3" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=o,d") (ior:DI (match_operand:DI 1 "general_operand" "%0,0") (match_operand:DI 2 "general_operand" "dn,don")))] "!TARGET_5200" *************** *** 3866,3879 **** }") (define_expand "iorsi3" ! [(set (match_operand:SI 0 "general_operand" "") (ior:SI (match_operand:SI 1 "general_operand" "") (match_operand:SI 2 "general_src_operand" "")))] "" "") (define_insn "iorsi3_internal" ! [(set (match_operand:SI 0 "general_operand" "=m,d") (ior:SI (match_operand:SI 1 "general_operand" "%0,0") (match_operand:SI 2 "general_src_operand" "dKT,dmSMT")))] "! TARGET_5200" --- 3866,3879 ---- }") (define_expand "iorsi3" ! [(set (match_operand:SI 0 "nonimmediate_operand" "") (ior:SI (match_operand:SI 1 "general_operand" "") (match_operand:SI 2 "general_src_operand" "")))] "" "") (define_insn "iorsi3_internal" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=m,d") (ior:SI (match_operand:SI 1 "general_operand" "%0,0") (match_operand:SI 2 "general_src_operand" "dKT,dmSMT")))] "! TARGET_5200" *************** *** 3883,3931 **** }") (define_insn "iorsi3_5200" ! [(set (match_operand:SI 0 "general_operand" "=m,d") (ior:SI (match_operand:SI 1 "general_operand" "%0,0") (match_operand:SI 2 "general_src_operand" "d,dmsK")))] "TARGET_5200" "or%.l %2,%0") (define_insn "iorhi3" ! [(set (match_operand:HI 0 "general_operand" "=m,d") (ior:HI (match_operand:HI 1 "general_operand" "%0,0") (match_operand:HI 2 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "or%.w %2,%0") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "general_operand" "+m,d")) (ior:HI (match_dup 0) (match_operand:HI 1 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "or%.w %1,%0") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "general_operand" "+m,d")) (ior:HI (match_operand:HI 1 "general_src_operand" "dn,dmSn") (match_dup 0)))] "!TARGET_5200" "or%.w %1,%0") (define_insn "iorqi3" ! [(set (match_operand:QI 0 "general_operand" "=m,d") (ior:QI (match_operand:QI 1 "general_operand" "%0,0") (match_operand:QI 2 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "or%.b %2,%0") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "general_operand" "+m,d")) (ior:QI (match_dup 0) (match_operand:QI 1 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "or%.b %1,%0") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "general_operand" "+m,d")) (ior:QI (match_operand:QI 1 "general_src_operand" "dn,dmSn") (match_dup 0)))] "!TARGET_5200" --- 3883,3931 ---- }") (define_insn "iorsi3_5200" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=m,d") (ior:SI (match_operand:SI 1 "general_operand" "%0,0") (match_operand:SI 2 "general_src_operand" "d,dmsK")))] "TARGET_5200" "or%.l %2,%0") (define_insn "iorhi3" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=m,d") (ior:HI (match_operand:HI 1 "general_operand" "%0,0") (match_operand:HI 2 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "or%.w %2,%0") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "nonimmediate_operand" "+m,d")) (ior:HI (match_dup 0) (match_operand:HI 1 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "or%.w %1,%0") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "nonimmediate_operand" "+m,d")) (ior:HI (match_operand:HI 1 "general_src_operand" "dn,dmSn") (match_dup 0)))] "!TARGET_5200" "or%.w %1,%0") (define_insn "iorqi3" ! [(set (match_operand:QI 0 "nonimmediate_operand" "=m,d") (ior:QI (match_operand:QI 1 "general_operand" "%0,0") (match_operand:QI 2 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "or%.b %2,%0") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+m,d")) (ior:QI (match_dup 0) (match_operand:QI 1 "general_src_operand" "dn,dmSn")))] "!TARGET_5200" "or%.b %1,%0") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+m,d")) (ior:QI (match_operand:QI 1 "general_src_operand" "dn,dmSn") (match_dup 0)))] "!TARGET_5200" *************** *** 3935,3941 **** ;; See also ashlsi_16, ashrsi_16 and lshrsi_16. (define_insn "iorsi_zexthi_ashl16" ! [(set (match_operand:SI 0 "general_operand" "=&d") (ior:SI (zero_extend:SI (match_operand:HI 1 "general_operand" "rmn")) (ashift:SI (match_operand:SI 2 "general_operand" "or") (const_int 16))))] --- 3935,3941 ---- ;; See also ashlsi_16, ashrsi_16 and lshrsi_16. (define_insn "iorsi_zexthi_ashl16" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=&d") (ior:SI (zero_extend:SI (match_operand:HI 1 "general_operand" "rmn")) (ashift:SI (match_operand:SI 2 "general_operand" "or") (const_int 16))))] *************** *** 3952,3958 **** }") (define_insn "iorsi_zext" ! [(set (match_operand:SI 0 "general_operand" "=o,d") (ior:SI (zero_extend:SI (match_operand 1 "general_operand" "dn,dmn")) (match_operand:SI 2 "general_operand" "0,0")))] "!TARGET_5200" --- 3952,3958 ---- }") (define_insn "iorsi_zext" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=o,d") (ior:SI (zero_extend:SI (match_operand 1 "general_operand" "dn,dmn")) (match_operand:SI 2 "general_operand" "0,0")))] "!TARGET_5200" *************** *** 3974,3980 **** ;; "xordi3" is mainly here to help combine(). (define_insn "xordi3" ! [(set (match_operand:DI 0 "general_operand" "=od") (xor:DI (match_operand:DI 1 "general_operand" "%0") (match_operand:DI 2 "general_operand" "dn")))] "!TARGET_5200" --- 3974,3980 ---- ;; "xordi3" is mainly here to help combine(). (define_insn "xordi3" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=od") (xor:DI (match_operand:DI 1 "general_operand" "%0") (match_operand:DI 2 "general_operand" "dn")))] "!TARGET_5200" *************** *** 4047,4060 **** }") (define_expand "xorsi3" ! [(set (match_operand:SI 0 "general_operand" "") (xor:SI (match_operand:SI 1 "general_operand" "") (match_operand:SI 2 "general_operand" "")))] "" "") (define_insn "xorsi3_internal" ! [(set (match_operand:SI 0 "general_operand" "=do,m") (xor:SI (match_operand:SI 1 "general_operand" "%0,0") (match_operand:SI 2 "general_operand" "di,dKT")))] --- 4047,4060 ---- }") (define_expand "xorsi3" ! [(set (match_operand:SI 0 "nonimmediate_operand" "") (xor:SI (match_operand:SI 1 "general_operand" "") (match_operand:SI 2 "general_operand" "")))] "" "") (define_insn "xorsi3_internal" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=do,m") (xor:SI (match_operand:SI 1 "general_operand" "%0,0") (match_operand:SI 2 "general_operand" "di,dKT")))] *************** *** 4065,4113 **** }") (define_insn "xorsi3_5200" ! [(set (match_operand:SI 0 "general_operand" "=dm,d") (xor:SI (match_operand:SI 1 "general_operand" "%0,0") (match_operand:SI 2 "general_operand" "d,Ks")))] "TARGET_5200" "eor%.l %2,%0") (define_insn "xorhi3" ! [(set (match_operand:HI 0 "general_operand" "=dm") (xor:HI (match_operand:HI 1 "general_operand" "%0") (match_operand:HI 2 "general_operand" "dn")))] "!TARGET_5200" "eor%.w %2,%0") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "general_operand" "+dm")) (xor:HI (match_dup 0) (match_operand:HI 1 "general_operand" "dn")))] "!TARGET_5200" "eor%.w %1,%0") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "general_operand" "+dm")) (xor:HI (match_operand:HI 1 "general_operand" "dn") (match_dup 0)))] "!TARGET_5200" "eor%.w %1,%0") (define_insn "xorqi3" ! [(set (match_operand:QI 0 "general_operand" "=dm") (xor:QI (match_operand:QI 1 "general_operand" "%0") (match_operand:QI 2 "general_operand" "dn")))] "!TARGET_5200" "eor%.b %2,%0") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "general_operand" "+dm")) (xor:QI (match_dup 0) (match_operand:QI 1 "general_operand" "dn")))] "!TARGET_5200" "eor%.b %1,%0") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "general_operand" "+dm")) (xor:QI (match_operand:QI 1 "general_operand" "dn") (match_dup 0)))] "!TARGET_5200" --- 4065,4113 ---- }") (define_insn "xorsi3_5200" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=dm,d") (xor:SI (match_operand:SI 1 "general_operand" "%0,0") (match_operand:SI 2 "general_operand" "d,Ks")))] "TARGET_5200" "eor%.l %2,%0") (define_insn "xorhi3" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=dm") (xor:HI (match_operand:HI 1 "general_operand" "%0") (match_operand:HI 2 "general_operand" "dn")))] "!TARGET_5200" "eor%.w %2,%0") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "nonimmediate_operand" "+dm")) (xor:HI (match_dup 0) (match_operand:HI 1 "general_operand" "dn")))] "!TARGET_5200" "eor%.w %1,%0") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "nonimmediate_operand" "+dm")) (xor:HI (match_operand:HI 1 "general_operand" "dn") (match_dup 0)))] "!TARGET_5200" "eor%.w %1,%0") (define_insn "xorqi3" ! [(set (match_operand:QI 0 "nonimmediate_operand" "=dm") (xor:QI (match_operand:QI 1 "general_operand" "%0") (match_operand:QI 2 "general_operand" "dn")))] "!TARGET_5200" "eor%.b %2,%0") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+dm")) (xor:QI (match_dup 0) (match_operand:QI 1 "general_operand" "dn")))] "!TARGET_5200" "eor%.b %1,%0") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+dm")) (xor:QI (match_operand:QI 1 "general_operand" "dn") (match_dup 0)))] "!TARGET_5200" *************** *** 4116,4122 **** ;; negation instructions (define_expand "negdi2" ! [(set (match_operand:DI 0 "general_operand" "") (neg:DI (match_operand:DI 1 "general_operand" "")))] "" " --- 4116,4122 ---- ;; negation instructions (define_expand "negdi2" ! [(set (match_operand:DI 0 "nonimmediate_operand" "") (neg:DI (match_operand:DI 1 "general_operand" "")))] "" " *************** *** 4129,4135 **** }") (define_insn "negdi2_internal" ! [(set (match_operand:DI 0 "general_operand" "=<,do,!*a") (neg:DI (match_operand:DI 1 "general_operand" "0,0,0")))] "!TARGET_5200" "* --- 4129,4135 ---- }") (define_insn "negdi2_internal" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=<,do,!*a") (neg:DI (match_operand:DI 1 "general_operand" "0,0,0")))] "!TARGET_5200" "* *************** *** 4147,4153 **** } ") (define_insn "negdi2_5200" ! [(set (match_operand:DI 0 "general_operand" "=d") (neg:DI (match_operand:DI 1 "general_operand" "0")))] "TARGET_5200" "* --- 4147,4153 ---- } ") (define_insn "negdi2_5200" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=d") (neg:DI (match_operand:DI 1 "general_operand" "0")))] "TARGET_5200" "* *************** *** 4157,4163 **** } ") (define_expand "negsi2" ! [(set (match_operand:SI 0 "general_operand" "") (neg:SI (match_operand:SI 1 "general_operand" "")))] "" " --- 4157,4163 ---- } ") (define_expand "negsi2" ! [(set (match_operand:SI 0 "nonimmediate_operand" "") (neg:SI (match_operand:SI 1 "general_operand" "")))] "" " *************** *** 4170,4206 **** }") (define_insn "negsi2_internal" ! [(set (match_operand:SI 0 "general_operand" "=dm") (neg:SI (match_operand:SI 1 "general_operand" "0")))] "!TARGET_5200" "neg%.l %0") (define_insn "negsi2_5200" ! [(set (match_operand:SI 0 "general_operand" "=d") (neg:SI (match_operand:SI 1 "general_operand" "0")))] "TARGET_5200" "neg%.l %0") (define_insn "neghi2" ! [(set (match_operand:HI 0 "general_operand" "=dm") (neg:HI (match_operand:HI 1 "general_operand" "0")))] "!TARGET_5200" "neg%.w %0") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "general_operand" "+dm")) (neg:HI (match_dup 0)))] "!TARGET_5200" "neg%.w %0") (define_insn "negqi2" ! [(set (match_operand:QI 0 "general_operand" "=dm") (neg:QI (match_operand:QI 1 "general_operand" "0")))] "!TARGET_5200" "neg%.b %0") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "general_operand" "+dm")) (neg:QI (match_dup 0)))] "!TARGET_5200" "neg%.b %0") --- 4170,4206 ---- }") (define_insn "negsi2_internal" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=dm") (neg:SI (match_operand:SI 1 "general_operand" "0")))] "!TARGET_5200" "neg%.l %0") (define_insn "negsi2_5200" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=d") (neg:SI (match_operand:SI 1 "general_operand" "0")))] "TARGET_5200" "neg%.l %0") (define_insn "neghi2" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=dm") (neg:HI (match_operand:HI 1 "general_operand" "0")))] "!TARGET_5200" "neg%.w %0") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "nonimmediate_operand" "+dm")) (neg:HI (match_dup 0)))] "!TARGET_5200" "neg%.w %0") (define_insn "negqi2" ! [(set (match_operand:QI 0 "nonimmediate_operand" "=dm") (neg:QI (match_operand:QI 1 "general_operand" "0")))] "!TARGET_5200" "neg%.b %0") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+dm")) (neg:QI (match_dup 0)))] "!TARGET_5200" "neg%.b %0") *************** *** 4208,4214 **** ;; If using software floating point, just flip the sign bit. (define_expand "negsf2" ! [(set (match_operand:SF 0 "general_operand" "") (neg:SF (match_operand:SF 1 "general_operand" "")))] "" " --- 4208,4214 ---- ;; If using software floating point, just flip the sign bit. (define_expand "negsf2" ! [(set (match_operand:SF 0 "nonimmediate_operand" "") (neg:SF (match_operand:SF 1 "general_operand" "")))] "" " *************** *** 4235,4247 **** }") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=x,y") (neg:SF (match_operand:SF 1 "general_operand" "xH,rmF")))] "TARGET_FPA" "fpneg%.s %w1,%0") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f,d") (neg:SF (match_operand:SF 1 "general_operand" "fdmF,0")))] "TARGET_68881" "* --- 4235,4247 ---- }") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=x,y") (neg:SF (match_operand:SF 1 "general_operand" "xH,rmF")))] "TARGET_FPA" "fpneg%.s %w1,%0") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f,d") (neg:SF (match_operand:SF 1 "general_operand" "fdmF,0")))] "TARGET_68881" "* *************** *** 4257,4263 **** }") (define_expand "negdf2" ! [(set (match_operand:DF 0 "general_operand" "") (neg:DF (match_operand:DF 1 "general_operand" "")))] "" " --- 4257,4263 ---- }") (define_expand "negdf2" ! [(set (match_operand:DF 0 "nonimmediate_operand" "") (neg:DF (match_operand:DF 1 "general_operand" "")))] "" " *************** *** 4291,4303 **** }") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=x,y") (neg:DF (match_operand:DF 1 "general_operand" "xH,rmF")))] "TARGET_FPA" "fpneg%.d %y1, %0") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=f,d") (neg:DF (match_operand:DF 1 "general_operand" "fmF,0")))] "TARGET_68881" "* --- 4291,4303 ---- }") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=x,y") (neg:DF (match_operand:DF 1 "general_operand" "xH,rmF")))] "TARGET_FPA" "fpneg%.d %y1, %0") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f,d") (neg:DF (match_operand:DF 1 "general_operand" "fmF,0")))] "TARGET_68881" "* *************** *** 4315,4321 **** ;; Sqrt instruction for the 68881 (define_insn "sqrtsf2" ! [(set (match_operand:SF 0 "general_operand" "=f") (sqrt:SF (match_operand:SF 1 "general_operand" "fm")))] "TARGET_68881" "* --- 4315,4321 ---- ;; Sqrt instruction for the 68881 (define_insn "sqrtsf2" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (sqrt:SF (match_operand:SF 1 "general_operand" "fm")))] "TARGET_68881" "* *************** *** 4327,4333 **** }") (define_insn "sqrtdf2" ! [(set (match_operand:DF 0 "general_operand" "=f") (sqrt:DF (match_operand:DF 1 "general_operand" "fm")))] "TARGET_68881" "* --- 4327,4333 ---- }") (define_insn "sqrtdf2" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (sqrt:DF (match_operand:DF 1 "general_operand" "fm")))] "TARGET_68881" "* *************** *** 4342,4348 **** ;; If using software floating point, just zero the sign bit. (define_expand "abssf2" ! [(set (match_operand:SF 0 "general_operand" "") (abs:SF (match_operand:SF 1 "general_operand" "")))] "" " --- 4342,4348 ---- ;; If using software floating point, just zero the sign bit. (define_expand "abssf2" ! [(set (match_operand:SF 0 "nonimmediate_operand" "") (abs:SF (match_operand:SF 1 "general_operand" "")))] "" " *************** *** 4369,4381 **** }") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=x,y") (abs:SF (match_operand:SF 1 "general_operand" "xH,rmF")))] "TARGET_FPA" "fpabs%.s %y1,%0") (define_insn "" ! [(set (match_operand:SF 0 "general_operand" "=f") (abs:SF (match_operand:SF 1 "general_operand" "fdmF")))] "TARGET_68881" "* --- 4369,4381 ---- }") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=x,y") (abs:SF (match_operand:SF 1 "general_operand" "xH,rmF")))] "TARGET_FPA" "fpabs%.s %y1,%0") (define_insn "" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (abs:SF (match_operand:SF 1 "general_operand" "fdmF")))] "TARGET_68881" "* *************** *** 4386,4392 **** }") (define_expand "absdf2" ! [(set (match_operand:DF 0 "general_operand" "") (abs:DF (match_operand:DF 1 "general_operand" "")))] "" " --- 4386,4392 ---- }") (define_expand "absdf2" ! [(set (match_operand:DF 0 "nonimmediate_operand" "") (abs:DF (match_operand:DF 1 "general_operand" "")))] "" " *************** *** 4420,4432 **** }") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=x,y") (abs:DF (match_operand:DF 1 "general_operand" "xH,rmF")))] "TARGET_FPA" "fpabs%.d %y1,%0") (define_insn "" ! [(set (match_operand:DF 0 "general_operand" "=f") (abs:DF (match_operand:DF 1 "general_operand" "fmF")))] "TARGET_68881" "* --- 4420,4432 ---- }") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=x,y") (abs:DF (match_operand:DF 1 "general_operand" "xH,rmF")))] "TARGET_FPA" "fpabs%.d %y1,%0") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (abs:DF (match_operand:DF 1 "general_operand" "fmF")))] "TARGET_68881" "* *************** *** 4440,4446 **** ;; "one_cmpldi2" is mainly here to help combine(). (define_insn "one_cmpldi2" ! [(set (match_operand:DI 0 "general_operand" "=dm") (not:DI (match_operand:DI 1 "general_operand" "0")))] "!TARGET_5200" "* --- 4440,4446 ---- ;; "one_cmpldi2" is mainly here to help combine(). (define_insn "one_cmpldi2" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=dm") (not:DI (match_operand:DI 1 "general_operand" "0")))] "!TARGET_5200" "* *************** *** 4457,4463 **** }") (define_expand "one_cmplsi2" ! [(set (match_operand:SI 0 "general_operand" "") (not:SI (match_operand:SI 1 "general_operand" "")))] "" " --- 4457,4463 ---- }") (define_expand "one_cmplsi2" ! [(set (match_operand:SI 0 "nonimmediate_operand" "") (not:SI (match_operand:SI 1 "general_operand" "")))] "" " *************** *** 4470,4506 **** }") (define_insn "one_cmplsi2_internal" ! [(set (match_operand:SI 0 "general_operand" "=dm") (not:SI (match_operand:SI 1 "general_operand" "0")))] "!TARGET_5200" "not%.l %0") (define_insn "one_cmplsi2_5200" ! [(set (match_operand:SI 0 "general_operand" "=d") (not:SI (match_operand:SI 1 "general_operand" "0")))] "TARGET_5200" "not%.l %0") (define_insn "one_cmplhi2" ! [(set (match_operand:HI 0 "general_operand" "=dm") (not:HI (match_operand:HI 1 "general_operand" "0")))] "!TARGET_5200" "not%.w %0") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "general_operand" "+dm")) (not:HI (match_dup 0)))] "!TARGET_5200" "not%.w %0") (define_insn "one_cmplqi2" ! [(set (match_operand:QI 0 "general_operand" "=dm") (not:QI (match_operand:QI 1 "general_operand" "0")))] "!TARGET_5200" "not%.b %0") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "general_operand" "+dm")) (not:QI (match_dup 0)))] "!TARGET_5200" "not%.b %0") --- 4470,4506 ---- }") (define_insn "one_cmplsi2_internal" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=dm") (not:SI (match_operand:SI 1 "general_operand" "0")))] "!TARGET_5200" "not%.l %0") (define_insn "one_cmplsi2_5200" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=d") (not:SI (match_operand:SI 1 "general_operand" "0")))] "TARGET_5200" "not%.l %0") (define_insn "one_cmplhi2" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=dm") (not:HI (match_operand:HI 1 "general_operand" "0")))] "!TARGET_5200" "not%.w %0") (define_insn "" ! [(set (strict_low_part (match_operand:HI 0 "nonimmediate_operand" "+dm")) (not:HI (match_dup 0)))] "!TARGET_5200" "not%.w %0") (define_insn "one_cmplqi2" ! [(set (match_operand:QI 0 "nonimmediate_operand" "=dm") (not:QI (match_operand:QI 1 "general_operand" "0")))] "!TARGET_5200" "not%.b %0") (define_insn "" ! [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+dm")) (not:QI (match_dup 0)))] "!TARGET_5200" "not%.b %0") *************** *** 4509,4515 **** ;; We don't need the shift memory by 1 bit instruction (define_insn "ashldi_extsi" ! [(set (match_operand:DI 0 "general_operand" "=ro") (ashift:DI (match_operator:DI 2 "extend_operator" [(match_operand:SI 1 "general_operand" "rm")]) --- 4509,4515 ---- ;; We don't need the shift memory by 1 bit instruction (define_insn "ashldi_extsi" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=ro") (ashift:DI (match_operator:DI 2 "extend_operator" [(match_operand:SI 1 "general_operand" "rm")]) *************** *** 4529,4535 **** } ") (define_insn "ashldi_sexthi" ! [(set (match_operand:DI 0 "general_operand" "=m,a*d") (ashift:DI (sign_extend:DI (match_operand:HI 1 "general_operand" "rm,rm")) (const_int 32))) (clobber (match_scratch:SI 2 "=a,X"))] --- 4529,4535 ---- } ") (define_insn "ashldi_sexthi" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=m,a*d") (ashift:DI (sign_extend:DI (match_operand:HI 1 "general_operand" "rm,rm")) (const_int 32))) (clobber (match_scratch:SI 2 "=a,X"))] *************** *** 4556,4562 **** } ") (define_insn "ashldi_const32" ! [(set (match_operand:DI 0 "general_operand" "=rm") (ashift:DI (match_operand:DI 1 "general_operand" "ro") (const_int 32)))] "" --- 4556,4562 ---- } ") (define_insn "ashldi_const32" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=rm") (ashift:DI (match_operand:DI 1 "general_operand" "ro") (const_int 32)))] "" *************** *** 4583,4589 **** ;; The predicate below must be general_operand, because ashldi3 allows that (define_insn "ashldi_const" ! [(set (match_operand:DI 0 "general_operand" "=d") (ashift:DI (match_operand:DI 1 "general_operand" "0") (match_operand 2 "const_int_operand" "n")))] "(!TARGET_5200 --- 4583,4589 ---- ;; The predicate below must be general_operand, because ashldi3 allows that (define_insn "ashldi_const" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=d") (ashift:DI (match_operand:DI 1 "general_operand" "0") (match_operand 2 "const_int_operand" "n")))] "(!TARGET_5200 *************** *** 4615,4621 **** } ") (define_expand "ashldi3" ! [(set (match_operand:DI 0 "general_operand" "") (ashift:DI (match_operand:DI 1 "general_operand" "") (match_operand 2 "const_int_operand" "")))] "!TARGET_5200" --- 4615,4621 ---- } ") (define_expand "ashldi3" ! [(set (match_operand:DI 0 "nonimmediate_operand" "") (ashift:DI (match_operand:DI 1 "general_operand" "") (match_operand 2 "const_int_operand" "")))] "!TARGET_5200" *************** *** 4729,4735 **** }") (define_insn "subreghi1ashrdi_const32" ! [(set (match_operand:HI 0 "general_operand" "=rm") (subreg:HI (ashiftrt:DI (match_operand:DI 1 "general_operand" "ro") (const_int 32)) 1))] "" --- 4729,4735 ---- }") (define_insn "subreghi1ashrdi_const32" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=rm") (subreg:HI (ashiftrt:DI (match_operand:DI 1 "general_operand" "ro") (const_int 32)) 1))] "" *************** *** 4741,4747 **** } ") (define_insn "subregsi1ashrdi_const32" ! [(set (match_operand:SI 0 "general_operand" "=rm") (subreg:SI (ashiftrt:DI (match_operand:DI 1 "general_operand" "ro") (const_int 32)) 1))] "" --- 4741,4747 ---- } ") (define_insn "subregsi1ashrdi_const32" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=rm") (subreg:SI (ashiftrt:DI (match_operand:DI 1 "general_operand" "ro") (const_int 32)) 1))] "" *************** *** 4766,4772 **** } ") (define_insn "ashrdi_const32_mem" ! [(set (match_operand:DI 0 "general_operand" "=o,<") (ashiftrt:DI (match_operand:DI 1 "general_operand" "ro,ro") (const_int 32))) (clobber (match_scratch:SI 2 "=d,d"))] --- 4766,4772 ---- } ") (define_insn "ashrdi_const32_mem" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=o,<") (ashiftrt:DI (match_operand:DI 1 "general_operand" "ro,ro") (const_int 32))) (clobber (match_scratch:SI 2 "=d,d"))] *************** *** 4786,4792 **** ;; The predicate below must be general_operand, because ashrdi3 allows that (define_insn "ashrdi_const" ! [(set (match_operand:DI 0 "general_operand" "=d") (ashiftrt:DI (match_operand:DI 1 "general_operand" "0") (match_operand 2 "const_int_operand" "n")))] "(!TARGET_5200 --- 4786,4792 ---- ;; The predicate below must be general_operand, because ashrdi3 allows that (define_insn "ashrdi_const" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=d") (ashiftrt:DI (match_operand:DI 1 "general_operand" "0") (match_operand 2 "const_int_operand" "n")))] "(!TARGET_5200 *************** *** 4826,4832 **** } ") (define_expand "ashrdi3" ! [(set (match_operand:DI 0 "general_operand" "") (ashiftrt:DI (match_operand:DI 1 "general_operand" "") (match_operand 2 "const_int_operand" "")))] "!TARGET_5200" --- 4826,4832 ---- } ") (define_expand "ashrdi3" ! [(set (match_operand:DI 0 "nonimmediate_operand" "") (ashiftrt:DI (match_operand:DI 1 "general_operand" "") (match_operand 2 "const_int_operand" "")))] "!TARGET_5200" *************** *** 4895,4901 **** ;; [(set (cc0) ;; (subreg:SI (lshiftrt:DI (match_operand:DI 0 "general_operand" "ro") ;; (const_int 32)) 1)) ! ;; (set (match_operand:SI 1 "general_operand" "=dm") ;; (subreg:SI (lshiftrt:DI (match_dup 0) ;; (const_int 32)) 1))] ;; "" --- 4895,4901 ---- ;; [(set (cc0) ;; (subreg:SI (lshiftrt:DI (match_operand:DI 0 "general_operand" "ro") ;; (const_int 32)) 1)) ! ;; (set (match_operand:SI 1 "nonimmediate_operand" "=dm") ;; (subreg:SI (lshiftrt:DI (match_dup 0) ;; (const_int 32)) 1))] ;; "" *************** *** 4908,4914 **** ;; [(set (cc0) ;; (subreg:SI (lshiftrt:DI (match_operand:DI 0 "general_operand" "ro") ;; (const_int 32)) 0)) ! ;; (set (match_operand:DI 1 "general_operand" "=do") ;; (lshiftrt:DI (match_dup 0) ;; (const_int 32)))] ;; "" --- 4908,4914 ---- ;; [(set (cc0) ;; (subreg:SI (lshiftrt:DI (match_operand:DI 0 "general_operand" "ro") ;; (const_int 32)) 0)) ! ;; (set (match_operand:DI 1 "nonimmediate_operand" "=do") ;; (lshiftrt:DI (match_dup 0) ;; (const_int 32)))] ;; "" *************** *** 4922,4928 **** ;;} ") (define_insn "subreg1lshrdi_const32" ! [(set (match_operand:SI 0 "general_operand" "=rm") (subreg:SI (lshiftrt:DI (match_operand:DI 1 "general_operand" "ro") (const_int 32)) 1))] "" --- 4922,4928 ---- ;;} ") (define_insn "subreg1lshrdi_const32" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=rm") (subreg:SI (lshiftrt:DI (match_operand:DI 1 "general_operand" "ro") (const_int 32)) 1))] "" *************** *** 4932,4938 **** } ") (define_insn "lshrdi_const32" ! [(set (match_operand:DI 0 "general_operand" "=ro,<,>") (lshiftrt:DI (match_operand:DI 1 "general_operand" "ro,ro,ro") (const_int 32)))] "" --- 4932,4938 ---- } ") (define_insn "lshrdi_const32" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=ro,<,>") (lshiftrt:DI (match_operand:DI 1 "general_operand" "ro,ro,ro") (const_int 32)))] "" *************** *** 4959,4965 **** ;; The predicate below must be general_operand, because lshrdi3 allows that (define_insn "lshrdi_const" ! [(set (match_operand:DI 0 "general_operand" "=d") (lshiftrt:DI (match_operand:DI 1 "general_operand" "0") (match_operand 2 "const_int_operand" "n")))] "(!TARGET_5200 --- 4959,4965 ---- ;; The predicate below must be general_operand, because lshrdi3 allows that (define_insn "lshrdi_const" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=d") (lshiftrt:DI (match_operand:DI 1 "general_operand" "0") (match_operand 2 "const_int_operand" "n")))] "(!TARGET_5200 *************** *** 4994,5000 **** } ") (define_expand "lshrdi3" ! [(set (match_operand:DI 0 "general_operand" "") (lshiftrt:DI (match_operand:DI 1 "general_operand" "") (match_operand 2 "const_int_operand" "")))] "!TARGET_5200" --- 4994,5000 ---- } ") (define_expand "lshrdi3" ! [(set (match_operand:DI 0 "nonimmediate_operand" "") (lshiftrt:DI (match_operand:DI 1 "general_operand" "") (match_operand 2 "const_int_operand" "")))] "!TARGET_5200" *************** *** 5328,5334 **** ; than an odd byte aligned bit field instruction. ; (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=rm") (zero_extract:SI (match_operand:QI 1 "memory_src_operand" "oS") (const_int 32) (match_operand:SI 2 "const_int_operand" "n")))] --- 5328,5334 ---- ; than an odd byte aligned bit field instruction. ; (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=rm") (zero_extract:SI (match_operand:QI 1 "memory_src_operand" "oS") (const_int 32) (match_operand:SI 2 "const_int_operand" "n")))] *************** *** 5344,5350 **** }") (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=&d") (zero_extract:SI (match_operand:SI 1 "register_operand" "do") (match_operand:SI 2 "const_int_operand" "n") (match_operand:SI 3 "const_int_operand" "n")))] --- 5344,5350 ---- }") (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=&d") (zero_extract:SI (match_operand:SI 1 "register_operand" "do") (match_operand:SI 2 "const_int_operand" "n") (match_operand:SI 3 "const_int_operand" "n")))] *************** *** 5382,5388 **** ; than an odd byte aligned bit field instruction. ; (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=rm") (sign_extract:SI (match_operand:QI 1 "memory_src_operand" "oS") (const_int 32) (match_operand:SI 2 "const_int_operand" "n")))] --- 5382,5388 ---- ; than an odd byte aligned bit field instruction. ; (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=rm") (sign_extract:SI (match_operand:QI 1 "memory_src_operand" "oS") (const_int 32) (match_operand:SI 2 "const_int_operand" "n")))] *************** *** 5398,5404 **** }") (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=d") (sign_extract:SI (match_operand:SI 1 "register_operand" "do") (match_operand:SI 2 "const_int_operand" "n") (match_operand:SI 3 "const_int_operand" "n")))] --- 5398,5404 ---- }") (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=d") (sign_extract:SI (match_operand:SI 1 "register_operand" "do") (match_operand:SI 2 "const_int_operand" "n") (match_operand:SI 3 "const_int_operand" "n")))] *************** *** 5428,5434 **** ;; so that its address is reloaded. (define_expand "extv" ! [(set (match_operand:SI 0 "general_operand" "") (sign_extract:SI (match_operand:SI 1 "general_operand" "") (match_operand:SI 2 "general_operand" "") (match_operand:SI 3 "general_operand" "")))] --- 5428,5434 ---- ;; so that its address is reloaded. (define_expand "extv" ! [(set (match_operand:SI 0 "nonimmediate_operand" "") (sign_extract:SI (match_operand:SI 1 "general_operand" "") (match_operand:SI 2 "general_operand" "") (match_operand:SI 3 "general_operand" "")))] *************** *** 5436,5442 **** "") (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=d") (sign_extract:SI (match_operand:QI 1 "memory_operand" "o") (match_operand:SI 2 "general_operand" "di") (match_operand:SI 3 "general_operand" "di")))] --- 5436,5442 ---- "") (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=d") (sign_extract:SI (match_operand:QI 1 "memory_operand" "o") (match_operand:SI 2 "general_operand" "di") (match_operand:SI 3 "general_operand" "di")))] *************** *** 5444,5450 **** "bfexts %1{%b3:%b2},%0") (define_expand "extzv" ! [(set (match_operand:SI 0 "general_operand" "") (zero_extract:SI (match_operand:SI 1 "general_operand" "") (match_operand:SI 2 "general_operand" "") (match_operand:SI 3 "general_operand" "")))] --- 5444,5450 ---- "bfexts %1{%b3:%b2},%0") (define_expand "extzv" ! [(set (match_operand:SI 0 "nonimmediate_operand" "") (zero_extract:SI (match_operand:SI 1 "general_operand" "") (match_operand:SI 2 "general_operand" "") (match_operand:SI 3 "general_operand" "")))] *************** *** 5452,5458 **** "") (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=d,d") (zero_extract:SI (match_operand:QI 1 "memory_operand" "o,d") (match_operand:SI 2 "general_operand" "di,di") (match_operand:SI 3 "general_operand" "di,di")))] --- 5452,5458 ---- "") (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=d,d") (zero_extract:SI (match_operand:QI 1 "memory_operand" "o,d") (match_operand:SI 2 "general_operand" "di,di") (match_operand:SI 3 "general_operand" "di,di")))] *************** *** 5512,5518 **** }") (define_expand "insv" ! [(set (zero_extract:SI (match_operand:SI 0 "general_operand" "") (match_operand:SI 1 "general_operand" "") (match_operand:SI 2 "general_operand" "")) (match_operand:SI 3 "register_operand" ""))] --- 5512,5518 ---- }") (define_expand "insv" ! [(set (zero_extract:SI (match_operand:SI 0 "nonimmediate_operand" "") (match_operand:SI 1 "general_operand" "") (match_operand:SI 2 "general_operand" "")) (match_operand:SI 3 "register_operand" ""))] *************** *** 5531,5537 **** ;; (or at least were intended to do so). (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=d") (sign_extract:SI (match_operand:SI 1 "register_operand" "d") (match_operand:SI 2 "general_operand" "di") (match_operand:SI 3 "general_operand" "di")))] --- 5531,5537 ---- ;; (or at least were intended to do so). (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=d") (sign_extract:SI (match_operand:SI 1 "register_operand" "d") (match_operand:SI 2 "general_operand" "di") (match_operand:SI 3 "general_operand" "di")))] *************** *** 5539,5545 **** "bfexts %1{%b3:%b2},%0") (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=d") (zero_extract:SI (match_operand:SI 1 "register_operand" "d") (match_operand:SI 2 "general_operand" "di") (match_operand:SI 3 "general_operand" "di")))] --- 5539,5545 ---- "bfexts %1{%b3:%b2},%0") (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=d") (zero_extract:SI (match_operand:SI 1 "register_operand" "d") (match_operand:SI 2 "general_operand" "di") (match_operand:SI 3 "general_operand" "di")))] *************** *** 5654,5660 **** }") (define_insn "scc0_di" ! [(set (match_operand:QI 0 "general_operand" "=dm") (match_operator 1 "valid_dbcc_comparison_p" [(match_operand:DI 2 "general_operand" "ro") (const_int 0)]))] "! TARGET_5200" --- 5654,5660 ---- }") (define_insn "scc0_di" ! [(set (match_operand:QI 0 "nonimmediate_operand" "=dm") (match_operator 1 "valid_dbcc_comparison_p" [(match_operand:DI 2 "general_operand" "ro") (const_int 0)]))] "! TARGET_5200" *************** *** 5664,5670 **** } ") (define_insn "scc0_di_5200" ! [(set (match_operand:QI 0 "general_operand" "=d") (match_operator 1 "valid_dbcc_comparison_p" [(match_operand:DI 2 "general_operand" "ro") (const_int 0)]))] "TARGET_5200" --- 5664,5670 ---- } ") (define_insn "scc0_di_5200" ! [(set (match_operand:QI 0 "nonimmediate_operand" "=d") (match_operator 1 "valid_dbcc_comparison_p" [(match_operand:DI 2 "general_operand" "ro") (const_int 0)]))] "TARGET_5200" *************** *** 5674,5680 **** } ") (define_insn "scc_di" ! [(set (match_operand:QI 0 "general_operand" "=dm,dm") (match_operator 1 "valid_dbcc_comparison_p" [(match_operand:DI 2 "general_operand" "ro,r") (match_operand:DI 3 "general_operand" "r,ro")]))] --- 5674,5680 ---- } ") (define_insn "scc_di" ! [(set (match_operand:QI 0 "nonimmediate_operand" "=dm,dm") (match_operator 1 "valid_dbcc_comparison_p" [(match_operand:DI 2 "general_operand" "ro,r") (match_operand:DI 3 "general_operand" "r,ro")]))] *************** *** 5685,5691 **** } ") (define_insn "scc_di_5200" ! [(set (match_operand:QI 0 "general_operand" "=d,d") (match_operator 1 "valid_dbcc_comparison_p" [(match_operand:DI 2 "general_operand" "ro,r") (match_operand:DI 3 "general_operand" "r,ro")]))] --- 5685,5691 ---- } ") (define_insn "scc_di_5200" ! [(set (match_operand:QI 0 "nonimmediate_operand" "=d,d") (match_operator 1 "valid_dbcc_comparison_p" [(match_operand:DI 2 "general_operand" "ro,r") (match_operand:DI 3 "general_operand" "r,ro")]))] *************** *** 6560,6566 **** (define_insn "" [(set (pc) (if_then_else ! (ne (match_operand:HI 0 "general_operand" "+d*g") (const_int 0)) (label_ref (match_operand 1 "" "")) (pc))) --- 6560,6566 ---- (define_insn "" [(set (pc) (if_then_else ! (ne (match_operand:HI 0 "nonimmediate_operand" "+d*g") (const_int 0)) (label_ref (match_operand 1 "" "")) (pc))) *************** *** 6603,6609 **** (define_insn "" [(set (pc) (if_then_else ! (ne (match_operand:SI 0 "general_operand" "+d*g") (const_int 0)) (label_ref (match_operand 1 "" "")) (pc))) --- 6603,6609 ---- (define_insn "" [(set (pc) (if_then_else ! (ne (match_operand:SI 0 "nonimmediate_operand" "+d*g") (const_int 0)) (label_ref (match_operand 1 "" "")) (pc))) *************** *** 6649,6655 **** (define_insn "" [(set (pc) (if_then_else ! (ge (plus:HI (match_operand:HI 0 "general_operand" "+d*am") (const_int -1)) (const_int 0)) (label_ref (match_operand 1 "" "")) --- 6649,6655 ---- (define_insn "" [(set (pc) (if_then_else ! (ge (plus:HI (match_operand:HI 0 "nonimmediate_operand" "+d*am") (const_int -1)) (const_int 0)) (label_ref (match_operand 1 "" "")) *************** *** 6694,6700 **** (define_expand "decrement_and_branch_until_zero" [(parallel [(set (pc) (if_then_else ! (ge (plus:SI (match_operand:SI 0 "general_operand" "") (const_int -1)) (const_int 0)) (label_ref (match_operand 1 "" "")) --- 6694,6700 ---- (define_expand "decrement_and_branch_until_zero" [(parallel [(set (pc) (if_then_else ! (ge (plus:SI (match_operand:SI 0 "nonimmediate_operand" "") (const_int -1)) (const_int 0)) (label_ref (match_operand 1 "" "")) *************** *** 6708,6714 **** (define_insn "" [(set (pc) (if_then_else ! (ge (plus:SI (match_operand:SI 0 "general_operand" "+d*am") (const_int -1)) (const_int 0)) (label_ref (match_operand 1 "" "")) --- 6708,6714 ---- (define_insn "" [(set (pc) (if_then_else ! (ge (plus:SI (match_operand:SI 0 "nonimmediate_operand" "+d*am") (const_int -1)) (const_int 0)) (label_ref (match_operand 1 "" "")) *************** *** 6997,7003 **** ;; This should not be used unless the add/sub insns can't be. (define_insn "" ! [(set (match_operand:SI 0 "general_operand" "=a") (match_operand:QI 1 "address_operand" "p"))] "" "* --- 6997,7003 ---- ;; This should not be used unless the add/sub insns can't be. (define_insn "" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=a") (match_operand:QI 1 "address_operand" "p"))] "" "* *************** *** 7464,7470 **** }") (define_insn "extendsfxf2" ! [(set (match_operand:XF 0 "general_operand" "=fm,f") (float_extend:XF (match_operand:SF 1 "general_operand" "f,rmF")))] "TARGET_68881" "* --- 7464,7470 ---- }") (define_insn "extendsfxf2" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=fm,f") (float_extend:XF (match_operand:SF 1 "general_operand" "f,rmF")))] "TARGET_68881" "* *************** *** 7496,7502 **** (define_insn "extenddfxf2" ! [(set (match_operand:XF 0 "general_operand" "=fm,f") (float_extend:XF (match_operand:DF 1 "general_operand" "f,rmE")))] "TARGET_68881" --- 7496,7502 ---- (define_insn "extenddfxf2" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=fm,f") (float_extend:XF (match_operand:DF 1 "general_operand" "f,rmE")))] "TARGET_68881" *************** *** 7532,7538 **** }") (define_insn "truncxfdf2" ! [(set (match_operand:DF 0 "general_operand" "=m,!r") (float_truncate:DF (match_operand:XF 1 "general_operand" "f,f")))] "TARGET_68881" --- 7532,7538 ---- }") (define_insn "truncxfdf2" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=m,!r") (float_truncate:DF (match_operand:XF 1 "general_operand" "f,f")))] "TARGET_68881" *************** *** 7548,7579 **** }") (define_insn "truncxfsf2" ! [(set (match_operand:SF 0 "general_operand" "=dm") (float_truncate:SF (match_operand:XF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.s %f1,%0") (define_insn "floatsixf2" ! [(set (match_operand:XF 0 "general_operand" "=f") (float:XF (match_operand:SI 1 "general_operand" "dmi")))] "TARGET_68881" "fmove%.l %1,%0") (define_insn "floathixf2" ! [(set (match_operand:XF 0 "general_operand" "=f") (float:XF (match_operand:HI 1 "general_operand" "dmn")))] "TARGET_68881" "fmove%.w %1,%0") (define_insn "floatqixf2" ! [(set (match_operand:XF 0 "general_operand" "=f") (float:XF (match_operand:QI 1 "general_operand" "dmn")))] "TARGET_68881" "fmove%.b %1,%0") (define_insn "ftruncxf2" ! [(set (match_operand:XF 0 "general_operand" "=f") (fix:XF (match_operand:XF 1 "general_operand" "fFm")))] "TARGET_68881" "* --- 7548,7579 ---- }") (define_insn "truncxfsf2" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=dm") (float_truncate:SF (match_operand:XF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.s %f1,%0") (define_insn "floatsixf2" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (float:XF (match_operand:SI 1 "general_operand" "dmi")))] "TARGET_68881" "fmove%.l %1,%0") (define_insn "floathixf2" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (float:XF (match_operand:HI 1 "general_operand" "dmn")))] "TARGET_68881" "fmove%.w %1,%0") (define_insn "floatqixf2" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (float:XF (match_operand:QI 1 "general_operand" "dmn")))] "TARGET_68881" "fmove%.b %1,%0") (define_insn "ftruncxf2" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (fix:XF (match_operand:XF 1 "general_operand" "fFm")))] "TARGET_68881" "* *************** *** 7584,7629 **** }") (define_insn "fixxfqi2" ! [(set (match_operand:QI 0 "general_operand" "=dm") (fix:QI (match_operand:XF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.b %1,%0") (define_insn "fixxfhi2" ! [(set (match_operand:HI 0 "general_operand" "=dm") (fix:HI (match_operand:XF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.w %1,%0") (define_insn "fixxfsi2" ! [(set (match_operand:SI 0 "general_operand" "=dm") (fix:SI (match_operand:XF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.l %1,%0") (define_insn "" ! [(set (match_operand:XF 0 "general_operand" "=f") (plus:XF (float:XF (match_operand:SI 2 "general_operand" "dmi")) (match_operand:XF 1 "nonimmediate_operand" "0")))] "TARGET_68881" "fadd%.l %2,%0") (define_insn "" ! [(set (match_operand:XF 0 "general_operand" "=f") (plus:XF (float:XF (match_operand:HI 2 "general_operand" "dmn")) (match_operand:XF 1 "nonimmediate_operand" "0")))] "TARGET_68881" "fadd%.w %2,%0") (define_insn "" ! [(set (match_operand:XF 0 "general_operand" "=f") (plus:XF (float:XF (match_operand:QI 2 "general_operand" "dmn")) (match_operand:XF 1 "general_operand" "0")))] "TARGET_68881" "fadd%.b %2,%0") (define_insn "addxf3" ! [(set (match_operand:XF 0 "general_operand" "=f") (plus:XF (match_operand:XF 1 "nonimmediate_operand" "%0") (match_operand:XF 2 "nonimmediate_operand" "fm")))] "TARGET_68881" --- 7584,7629 ---- }") (define_insn "fixxfqi2" ! [(set (match_operand:QI 0 "nonimmediate_operand" "=dm") (fix:QI (match_operand:XF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.b %1,%0") (define_insn "fixxfhi2" ! [(set (match_operand:HI 0 "nonimmediate_operand" "=dm") (fix:HI (match_operand:XF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.w %1,%0") (define_insn "fixxfsi2" ! [(set (match_operand:SI 0 "nonimmediate_operand" "=dm") (fix:SI (match_operand:XF 1 "general_operand" "f")))] "TARGET_68881" "fmove%.l %1,%0") (define_insn "" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (plus:XF (float:XF (match_operand:SI 2 "general_operand" "dmi")) (match_operand:XF 1 "nonimmediate_operand" "0")))] "TARGET_68881" "fadd%.l %2,%0") (define_insn "" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (plus:XF (float:XF (match_operand:HI 2 "general_operand" "dmn")) (match_operand:XF 1 "nonimmediate_operand" "0")))] "TARGET_68881" "fadd%.w %2,%0") (define_insn "" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (plus:XF (float:XF (match_operand:QI 2 "general_operand" "dmn")) (match_operand:XF 1 "general_operand" "0")))] "TARGET_68881" "fadd%.b %2,%0") (define_insn "addxf3" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (plus:XF (match_operand:XF 1 "nonimmediate_operand" "%0") (match_operand:XF 2 "nonimmediate_operand" "fm")))] "TARGET_68881" *************** *** 7635,7662 **** }") (define_insn "" ! [(set (match_operand:XF 0 "general_operand" "=f") (minus:XF (match_operand:XF 1 "nonimmediate_operand" "0") (float:XF (match_operand:SI 2 "general_operand" "dmi"))))] "TARGET_68881" "fsub%.l %2,%0") (define_insn "" ! [(set (match_operand:XF 0 "general_operand" "=f") (minus:XF (match_operand:XF 1 "nonimmediate_operand" "0") (float:XF (match_operand:HI 2 "general_operand" "dmn"))))] "TARGET_68881" "fsub%.w %2,%0") (define_insn "" ! [(set (match_operand:XF 0 "general_operand" "=f") (minus:XF (match_operand:XF 1 "nonimmediate_operand" "0") (float:XF (match_operand:QI 2 "general_operand" "dmn"))))] "TARGET_68881" "fsub%.b %2,%0") (define_insn "subxf3" ! [(set (match_operand:XF 0 "general_operand" "=f") (minus:XF (match_operand:XF 1 "nonimmediate_operand" "0") (match_operand:XF 2 "nonimmediate_operand" "fm")))] "TARGET_68881" --- 7635,7662 ---- }") (define_insn "" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (minus:XF (match_operand:XF 1 "nonimmediate_operand" "0") (float:XF (match_operand:SI 2 "general_operand" "dmi"))))] "TARGET_68881" "fsub%.l %2,%0") (define_insn "" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (minus:XF (match_operand:XF 1 "nonimmediate_operand" "0") (float:XF (match_operand:HI 2 "general_operand" "dmn"))))] "TARGET_68881" "fsub%.w %2,%0") (define_insn "" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (minus:XF (match_operand:XF 1 "nonimmediate_operand" "0") (float:XF (match_operand:QI 2 "general_operand" "dmn"))))] "TARGET_68881" "fsub%.b %2,%0") (define_insn "subxf3" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (minus:XF (match_operand:XF 1 "nonimmediate_operand" "0") (match_operand:XF 2 "nonimmediate_operand" "fm")))] "TARGET_68881" *************** *** 7668,7695 **** }") (define_insn "" ! [(set (match_operand:XF 0 "general_operand" "=f") (mult:XF (float:XF (match_operand:SI 2 "general_operand" "dmi")) (match_operand:XF 1 "nonimmediate_operand" "0")))] "TARGET_68881" "fmul%.l %2,%0") (define_insn "" ! [(set (match_operand:XF 0 "general_operand" "=f") (mult:XF (float:XF (match_operand:HI 2 "general_operand" "dmn")) (match_operand:XF 1 "nonimmediate_operand" "0")))] "TARGET_68881" "fmul%.w %2,%0") (define_insn "" ! [(set (match_operand:XF 0 "general_operand" "=f") (mult:XF (float:XF (match_operand:QI 2 "general_operand" "dmn")) (match_operand:XF 1 "nonimmediate_operand" "0")))] "TARGET_68881" "fmul%.b %2,%0") (define_insn "mulxf3" ! [(set (match_operand:XF 0 "general_operand" "=f") (mult:XF (match_operand:XF 1 "nonimmediate_operand" "%0") (match_operand:XF 2 "nonimmediate_operand" "fm")))] "TARGET_68881" --- 7668,7695 ---- }") (define_insn "" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (mult:XF (float:XF (match_operand:SI 2 "general_operand" "dmi")) (match_operand:XF 1 "nonimmediate_operand" "0")))] "TARGET_68881" "fmul%.l %2,%0") (define_insn "" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (mult:XF (float:XF (match_operand:HI 2 "general_operand" "dmn")) (match_operand:XF 1 "nonimmediate_operand" "0")))] "TARGET_68881" "fmul%.w %2,%0") (define_insn "" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (mult:XF (float:XF (match_operand:QI 2 "general_operand" "dmn")) (match_operand:XF 1 "nonimmediate_operand" "0")))] "TARGET_68881" "fmul%.b %2,%0") (define_insn "mulxf3" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (mult:XF (match_operand:XF 1 "nonimmediate_operand" "%0") (match_operand:XF 2 "nonimmediate_operand" "fm")))] "TARGET_68881" *************** *** 7701,7728 **** }") (define_insn "" ! [(set (match_operand:XF 0 "general_operand" "=f") (div:XF (match_operand:XF 1 "nonimmediate_operand" "0") (float:XF (match_operand:SI 2 "general_operand" "dmi"))))] "TARGET_68881" "fdiv%.l %2,%0") (define_insn "" ! [(set (match_operand:XF 0 "general_operand" "=f") (div:XF (match_operand:XF 1 "nonimmediate_operand" "0") (float:XF (match_operand:HI 2 "general_operand" "dmn"))))] "TARGET_68881" "fdiv%.w %2,%0") (define_insn "" ! [(set (match_operand:XF 0 "general_operand" "=f") (div:XF (match_operand:XF 1 "nonimmediate_operand" "0") (float:XF (match_operand:QI 2 "general_operand" "dmn"))))] "TARGET_68881" "fdiv%.b %2,%0") (define_insn "divxf3" ! [(set (match_operand:XF 0 "general_operand" "=f") (div:XF (match_operand:XF 1 "nonimmediate_operand" "0") (match_operand:XF 2 "nonimmediate_operand" "fm")))] "TARGET_68881" --- 7701,7728 ---- }") (define_insn "" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (div:XF (match_operand:XF 1 "nonimmediate_operand" "0") (float:XF (match_operand:SI 2 "general_operand" "dmi"))))] "TARGET_68881" "fdiv%.l %2,%0") (define_insn "" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (div:XF (match_operand:XF 1 "nonimmediate_operand" "0") (float:XF (match_operand:HI 2 "general_operand" "dmn"))))] "TARGET_68881" "fdiv%.w %2,%0") (define_insn "" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (div:XF (match_operand:XF 1 "nonimmediate_operand" "0") (float:XF (match_operand:QI 2 "general_operand" "dmn"))))] "TARGET_68881" "fdiv%.b %2,%0") (define_insn "divxf3" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (div:XF (match_operand:XF 1 "nonimmediate_operand" "0") (match_operand:XF 2 "nonimmediate_operand" "fm")))] "TARGET_68881" *************** *** 7734,7740 **** }") (define_expand "negxf2" ! [(set (match_operand:XF 0 "general_operand" "") (neg:XF (match_operand:XF 1 "nonimmediate_operand" "")))] "" " --- 7734,7740 ---- }") (define_expand "negxf2" ! [(set (match_operand:XF 0 "nonimmediate_operand" "") (neg:XF (match_operand:XF 1 "nonimmediate_operand" "")))] "" " *************** *** 7772,7778 **** }") (define_insn "negxf2_68881" ! [(set (match_operand:XF 0 "general_operand" "=f") (neg:XF (match_operand:XF 1 "nonimmediate_operand" "fm")))] "TARGET_68881" "* --- 7772,7778 ---- }") (define_insn "negxf2_68881" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (neg:XF (match_operand:XF 1 "nonimmediate_operand" "fm")))] "TARGET_68881" "* *************** *** 7783,7789 **** }") (define_expand "absxf2" ! [(set (match_operand:XF 0 "general_operand" "") (abs:XF (match_operand:XF 1 "nonimmediate_operand" "")))] "" " --- 7783,7789 ---- }") (define_expand "absxf2" ! [(set (match_operand:XF 0 "nonimmediate_operand" "") (abs:XF (match_operand:XF 1 "nonimmediate_operand" "")))] "" " *************** *** 7821,7827 **** }") (define_insn "absxf2_68881" ! [(set (match_operand:XF 0 "general_operand" "=f") (abs:XF (match_operand:XF 1 "nonimmediate_operand" "fm")))] "TARGET_68881" "* --- 7821,7827 ---- }") (define_insn "absxf2_68881" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (abs:XF (match_operand:XF 1 "nonimmediate_operand" "fm")))] "TARGET_68881" "* *************** *** 7832,7844 **** }") (define_insn "sqrtxf2" ! [(set (match_operand:XF 0 "general_operand" "=f") (sqrt:XF (match_operand:XF 1 "nonimmediate_operand" "fm")))] "TARGET_68881" "fsqrt%.x %1,%0") (define_insn "sinsf2" ! [(set (match_operand:SF 0 "general_operand" "=f") (unspec:SF [(match_operand:SF 1 "general_operand" "fm")] 1))] "TARGET_68881 && flag_fast_math" "* --- 7832,7844 ---- }") (define_insn "sqrtxf2" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (sqrt:XF (match_operand:XF 1 "nonimmediate_operand" "fm")))] "TARGET_68881" "fsqrt%.x %1,%0") (define_insn "sinsf2" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (unspec:SF [(match_operand:SF 1 "general_operand" "fm")] 1))] "TARGET_68881 && flag_fast_math" "* *************** *** 7850,7856 **** }") (define_insn "sindf2" ! [(set (match_operand:DF 0 "general_operand" "=f") (unspec:DF [(match_operand:DF 1 "general_operand" "fm")] 1))] "TARGET_68881 && flag_fast_math" "* --- 7850,7856 ---- }") (define_insn "sindf2" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (unspec:DF [(match_operand:DF 1 "general_operand" "fm")] 1))] "TARGET_68881 && flag_fast_math" "* *************** *** 7862,7874 **** }") (define_insn "sinxf2" ! [(set (match_operand:XF 0 "general_operand" "=f") (unspec:XF [(match_operand:XF 1 "nonimmediate_operand" "fm")] 1))] "TARGET_68881 && flag_fast_math" "fsin%.x %1,%0") (define_insn "cossf2" ! [(set (match_operand:SF 0 "general_operand" "=f") (unspec:SF [(match_operand:SF 1 "general_operand" "fm")] 2))] "TARGET_68881 && flag_fast_math" "* --- 7862,7874 ---- }") (define_insn "sinxf2" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (unspec:XF [(match_operand:XF 1 "nonimmediate_operand" "fm")] 1))] "TARGET_68881 && flag_fast_math" "fsin%.x %1,%0") (define_insn "cossf2" ! [(set (match_operand:SF 0 "nonimmediate_operand" "=f") (unspec:SF [(match_operand:SF 1 "general_operand" "fm")] 2))] "TARGET_68881 && flag_fast_math" "* *************** *** 7880,7886 **** }") (define_insn "cosdf2" ! [(set (match_operand:DF 0 "general_operand" "=f") (unspec:DF [(match_operand:DF 1 "general_operand" "fm")] 2))] "TARGET_68881 && flag_fast_math" "* --- 7880,7886 ---- }") (define_insn "cosdf2" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=f") (unspec:DF [(match_operand:DF 1 "general_operand" "fm")] 2))] "TARGET_68881 && flag_fast_math" "* *************** *** 7892,7898 **** }") (define_insn "cosxf2" ! [(set (match_operand:XF 0 "general_operand" "=f") (unspec:XF [(match_operand:XF 1 "nonimmediate_operand" "fm")] 2))] "TARGET_68881 && flag_fast_math" "fcos%.x %1,%0") --- 7892,7898 ---- }") (define_insn "cosxf2" ! [(set (match_operand:XF 0 "nonimmediate_operand" "=f") (unspec:XF [(match_operand:XF 1 "nonimmediate_operand" "fm")] 2))] "TARGET_68881 && flag_fast_math" "fcos%.x %1,%0") diff -Nrc3pad gcc-3.0/gcc/config/m68k/t-openbsd gcc-3.0.1/gcc/config/m68k/t-openbsd *** gcc-3.0/gcc/config/m68k/t-openbsd Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/config/m68k/t-openbsd Fri Jul 13 11:01:43 2001 *************** *** 0 **** --- 1,5 ---- + # gdb gets confused if pic code is linked with non pic + # We cope by building all variants of libgcc. + MULTILIB_OPTIONS = fpic/fPIC + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib diff -Nrc3pad gcc-3.0/gcc/config/mips/iris5.h gcc-3.0.1/gcc/config/mips/iris5.h *** gcc-3.0/gcc/config/mips/iris5.h Thu Mar 15 10:55:59 2001 --- gcc-3.0.1/gcc/config/mips/iris5.h Tue Jul 17 05:51:31 2001 *************** *** 1,5 **** /* Definitions of target machine for GNU compiler. Iris version 5. ! Copyright (C) 1993, 1995, 1996, 1998, 2000 Free Software Foundation, Inc. This file is part of GNU CC. --- 1,6 ---- /* Definitions of target machine for GNU compiler. Iris version 5. ! Copyright (C) 1993, 1995, 1996, 1998, 2000, ! 2001 Free Software Foundation, Inc. This file is part of GNU CC. *************** do { \ *** 154,159 **** --- 155,164 ---- fputs (" .text\n", FILE); \ } while (0) + /* To get unaligned data, we have to turn off auto alignment. */ + #define UNALIGNED_SHORT_ASM_OP "\t.align 0\n\t.half\t" + #define UNALIGNED_INT_ASM_OP "\t.align 0\n\t.word\t" + /* Also do this for libcalls. */ #define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN) \ mips_output_external_libcall (FILE, XSTR (FUN, 0)) *************** do { \ *** 165,167 **** --- 170,195 ---- tree name_tree = get_identifier (NAME); \ TREE_ASM_WRITTEN (name_tree) = 1; \ } while (0) + + /* This is how we tell the assembler that a symbol is weak. */ + + #define ASM_OUTPUT_WEAK_ALIAS(FILE, NAME, VALUE) \ + do \ + { \ + ASM_GLOBALIZE_LABEL (FILE, NAME); \ + fputs ("\t.weakext\t", FILE); \ + assemble_name (FILE, NAME); \ + if (VALUE) \ + { \ + fputc (' ', FILE); \ + assemble_name (FILE, VALUE); \ + } \ + fputc ('\n', FILE); \ + } \ + while (0) + + #define ASM_WEAKEN_LABEL(FILE, NAME) ASM_OUTPUT_WEAK_ALIAS(FILE, NAME, 0) + + /* Handle #pragma weak and #pragma pack. */ + #undef HANDLE_SYSV_PRAGMA + #define HANDLE_SYSV_PRAGMA 1 diff -Nrc3pad gcc-3.0/gcc/config/mips/iris6.h gcc-3.0.1/gcc/config/mips/iris6.h *** gcc-3.0/gcc/config/mips/iris6.h Mon Jun 11 13:29:43 2001 --- gcc-3.0.1/gcc/config/mips/iris6.h Tue Jul 17 05:51:31 2001 *************** Boston, MA 02111-1307, USA. */ *** 155,160 **** --- 155,162 ---- #undef ASM_OUTPUT_UNDEF_FUNCTION #undef ASM_OUTPUT_EXTERNAL_LIBCALL #undef ASM_DECLARE_FUNCTION_SIZE + #undef UNALIGNED_SHORT_ASM_OP + #undef UNALIGNED_INT_ASM_OP /* Stuff we need for Irix 6 that isn't in Irix 5. */ *************** Boston, MA 02111-1307, USA. */ *** 204,226 **** #define TYPE_ASM_OP "\t.type\t" #define SIZE_ASM_OP "\t.size\t" - - /* This is how we tell the assembler that a symbol is weak. */ - - #define ASM_OUTPUT_WEAK_ALIAS(FILE,NAME,VALUE) \ - do { \ - ASM_GLOBALIZE_LABEL (FILE, NAME); \ - fputs ("\t.weakext\t", FILE); \ - assemble_name (FILE, NAME); \ - if (VALUE) \ - { \ - fputc (' ', FILE); \ - assemble_name (FILE, VALUE); \ - } \ - fputc ('\n', FILE); \ - } while (0) - - #define ASM_WEAKEN_LABEL(FILE,NAME) ASM_OUTPUT_WEAK_ALIAS(FILE,NAME,0) /* Irix assembler does not support the init_priority C++ attribute. */ #undef SUPPORTS_INIT_PRIORITY --- 206,211 ---- diff -Nrc3pad gcc-3.0/gcc/config/mips/irix6-libc-compat.c gcc-3.0.1/gcc/config/mips/irix6-libc-compat.c *** gcc-3.0/gcc/config/mips/irix6-libc-compat.c Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/config/mips/irix6-libc-compat.c Tue Jul 24 05:06:17 2001 *************** *** 0 **** --- 1,140 ---- + /* Compensate for inconsistent structure passing conventions on IRIX 6. */ + /* Compile this one with gcc. */ + /* Copyright (C) 2001 Free Software Foundation, Inc. + + This file is part of GNU CC. + + GNU CC is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + In addition to the permissions in the GNU General Public License, the + Free Software Foundation gives you unlimited permission to link the + compiled version of this file into combinations with other programs, + and to distribute those combinations without any restriction coming + from the use of this file. (The General Public License restrictions + do apply in other respects; for example, they cover modification of + the file, and distribution when not linked into a combine + executable.) + + GNU CC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU CC; see the file COPYING. If not, write to + the Free Software Foundation, 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + + /* GCC doesn't correctly implement the structure and union passing and return + conventions of the N32 and N64 ABIs on IRIX 6, as described in the + MIPSpro N32 ABI Handbook, ch. 2, Calling Convention Implementations, p.7. + The ABI requires that structures (or trailing parts of structures) smaller + than 8 bytes (a 64-bit register) are left-justified, whereas GCC + right-justifies them. + + While GCC is internally consistent, calling routines compiled with a + compiler that does implement the documented ABI (like SGIs MIPSpro C + compiler) doesn't work. This is primarily an issue for system libraries + like libc. Fortunately, there exist only very few routines that take + structure value arguments or return structures by value, so until the + underlying bug is fixed, it is possible to work around it by providing + wrapper functions for the few affected routines that compensate for the + inconsistent alignment. + + These wrappers rely on the fact that e.g. libc contains weak versions of + those routines, and the real implementation is provided by _-prefixed + variants. So we can provide our own versions, which will only be linked + if the application uses any of the affected functions, calling the private + variants after shifting the arguments or results as required. + + This is a rewrite of code created by Andy Polyakov. */ + + #include "config.h" + #include "system.h" + + /* This must only be used for the N32 and N64 ABIs. O32 is correct. */ + + #if _MIPS_SIM == _ABIN32 || _MIPS_SIM == _ABI64 + + /* The affected arguments need to be shifted by + + BITS_PER_WORD - (sizeof (arg) * BITS_PER_UNIT). + + Since only 32-bit args and results are involved, the shift count is + always 32. */ + #define SHIFT_BITS 32 + + extern machreg_t _inet_ntoa PARAMS ((machreg_t)); + extern machreg_t _inet_lnaof PARAMS ((machreg_t)); + extern machreg_t _inet_netof PARAMS ((machreg_t)); + extern machreg_t _inet_makeaddr PARAMS ((machreg_t, machreg_t)); + + /* has + + char *inet_ntoa (struct in_addr); + + on both IRIX 6.2 and 6.5, with struct in_addr containing a 32-bit int. */ + + machreg_t + inet_ntoa (machreg_t in) + { + return _inet_ntoa (in << SHIFT_BITS); + } + + /* has + + unsigned long inet_lnaof (struct in_addr); (IRIX 6.2) + in_addr_t inet_lnaof (struct in_addr); (IRIX 6.5) + + in_addr_t is a 32-bit int. */ + + machreg_t + inet_lnaof (machreg_t in) + { + return _inet_lnaof (in << SHIFT_BITS); + } + + /* has + + unsigned long inet_netof (struct in_addr); (IRIX 6.2) + in_addr_t inet_netof (struct in_addr); (IRIX 6.5) */ + + machreg_t + inet_netof (machreg_t in) + { + return _inet_netof (in << SHIFT_BITS); + } + + /* has + + struct in_addr inet_makeaddr (int, int); (IRIX 6.2) + struct in_addr inet_makeaddr (in_addr_t, in_addr_t); (IRIX 6.5) */ + + machreg_t + inet_makeaddr (machreg_t net, machreg_t lna) + { + return _inet_makeaddr (net, lna) >> SHIFT_BITS; + } + + #if _MIPS_SIM == _ABIN32 + extern machreg_t _semctl PARAMS ((machreg_t, machreg_t, machreg_t, machreg_t)); + + /* has + + int semctl (int, int, int, ...); + + where the variadic argument is union semun if used. union semun contains + an int and two pointers, so the union is already 64 bits wide under the + N64 ABI and alignment is not an issue. */ + + machreg_t + semctl (machreg_t semid, machreg_t semnum, machreg_t cmd, machreg_t arg) + { + return _semctl(semid, semnum, cmd, arg << SHIFT_BITS); + } + #endif /* _ABIN32 */ + + #endif /* _ABIN32 || _ABI64 */ diff -Nrc3pad gcc-3.0/gcc/config/mips/linux.h gcc-3.0.1/gcc/config/mips/linux.h *** gcc-3.0/gcc/config/mips/linux.h Thu Apr 26 09:04:14 2001 --- gcc-3.0.1/gcc/config/mips/linux.h Wed Aug 1 10:22:35 2001 *************** Boston, MA 02111-1307, USA. */ *** 109,114 **** --- 109,121 ---- %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} \ %{pthread:-D_REENTRANT}" + /* The GNU C++ standard library requires that these macros be defined. */ + #undef CPLUSPLUS_CPP_SPEC + #define CPLUSPLUS_CPP_SPEC "\ + -D__LANGUAGE_C_PLUS_PLUS -D_LANGUAGE_C_PLUS_PLUS \ + -D_GNU_SOURCE %(cpp) \ + " + /* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add the GNU/Linux magical crtbegin.o file (see crtstuff.c) which provides part of the support for getting C++ file-scope static *************** Boston, MA 02111-1307, USA. */ *** 174,179 **** --- 181,202 ---- #undef SET_ASM_OP #define SET_ASM_OP "\t.dummy\t" + #undef ASM_OUTPUT_SOURCE_LINE + #define ASM_OUTPUT_SOURCE_LINE(FILE, LINE) \ + do \ + { \ + static int sym_lineno = 1; \ + fprintf (FILE, "%sLM%d:\n\t%s 68,0,%d,%sLM%d", \ + LOCAL_LABEL_PREFIX, sym_lineno, ASM_STABN_OP, \ + LINE, LOCAL_LABEL_PREFIX, sym_lineno); \ + putc ('-', FILE); \ + assemble_name (FILE, \ + XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0));\ + putc ('\n', FILE); \ + sym_lineno++; \ + } \ + while (0) + /* This is how we tell the assembler that two symbols have the same value. */ #undef ASM_OUTPUT_DEF *************** Boston, MA 02111-1307, USA. */ *** 196,198 **** --- 219,259 ---- fputc ('-', FILE); \ assemble_name (FILE, LO); \ } while (0) + + #undef ASM_DECLARE_FUNCTION_NAME + #define ASM_DECLARE_FUNCTION_NAME(STREAM, NAME, DECL) \ + do { \ + if (!flag_inhibit_size_directive) \ + { \ + fputs ("\t.ent\t", STREAM); \ + assemble_name (STREAM, NAME); \ + putc ('\n', STREAM); \ + } \ + fprintf (STREAM, "\t%s\t ", TYPE_ASM_OP); \ + assemble_name (STREAM, NAME); \ + putc (',', STREAM); \ + fprintf (STREAM, TYPE_OPERAND_FMT, "function"); \ + putc ('\n', STREAM); \ + assemble_name (STREAM, NAME); \ + fputs (":\n", STREAM); \ + } while (0) + + #undef ASM_DECLARE_FUNCTION_SIZE + #define ASM_DECLARE_FUNCTION_SIZE(STREAM, NAME, DECL) \ + do { \ + if (!flag_inhibit_size_directive) \ + { \ + fputs ("\t.end\t", STREAM); \ + assemble_name (STREAM, NAME); \ + putc ('\n', STREAM); \ + } \ + } while (0) + + /* Tell function_prologue in mips.c that we have already output the .ent/.end + pseudo-ops. */ + #define FUNCTION_NAME_ALREADY_DECLARED + + /* Output #ident as a .ident. */ + #undef ASM_OUTPUT_IDENT + #define ASM_OUTPUT_IDENT(FILE, NAME) \ + fprintf (FILE, "\t%s\t\"%s\"\n", IDENT_ASM_OP, NAME); diff -Nrc3pad gcc-3.0/gcc/config/mips/t-iris6 gcc-3.0.1/gcc/config/mips/t-iris6 *** gcc-3.0/gcc/config/mips/t-iris6 Tue Jun 12 22:05:41 2001 --- gcc-3.0.1/gcc/config/mips/t-iris6 Tue Jul 24 05:06:17 2001 *************** fp-bit.c: $(srcdir)/config/fp-bit.c *** 53,55 **** --- 53,59 ---- echo '#define FLOAT' > fp-bit.c echo '#undef US_SOFTWARE_GOFAST' >> fp-bit.c cat $(srcdir)/config/fp-bit.c >> fp-bit.c + + # This is only needed in the static libgcc as a band-aid until gcc correctly + # implements the N32/N64 ABI structure passing conventions + LIB2FUNCS_STATIC_EXTRA = $(srcdir)/config/mips/irix6-libc-compat.c diff -Nrc3pad gcc-3.0/gcc/config/mn10200/t-mn10200 gcc-3.0.1/gcc/config/mn10200/t-mn10200 *** gcc-3.0/gcc/config/mn10200/t-mn10200 Thu Nov 30 00:25:59 2000 --- gcc-3.0.1/gcc/config/mn10200/t-mn10200 Mon Jul 9 15:03:17 2001 *************** LIB1ASMFUNCS = _divhi3 \ *** 28,34 **** _prologue \ _epilogue_a0 \ _epilogue_d0 \ ! _epilogue_noreturn # We do not have DF or DI types, so fake out the libgcc2 compilation. --- 28,36 ---- _prologue \ _epilogue_a0 \ _epilogue_d0 \ ! _epilogue_noreturn \ ! _floatdisf \ ! _fixsfdi # We do not have DF or DI types, so fake out the libgcc2 compilation. diff -Nrc3pad gcc-3.0/gcc/config/openbsd.h gcc-3.0.1/gcc/config/openbsd.h *** gcc-3.0/gcc/config/openbsd.h Mon Sep 25 04:45:51 2000 --- gcc-3.0.1/gcc/config/openbsd.h Fri Jul 13 11:01:42 2001 *************** Boston, MA 02111-1307, USA. */ *** 78,89 **** since all code must be compiled with -pthread to work. This two-stage defines makes it easy to pick that for targets that have subspecs. */ #define OBSD_CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_POSIX_THREADS}" /* LIB_SPEC appropriate for OpenBSD. Select the appropriate libc, depending on profiling and threads. Basically, -lc(_r)?(_p)?, select _r for threads, and _p for p or pg. */ ! #define OBSD_LIB_SPEC "-lc%{pthread:_r}%{p:_p}%{!p:%{pg:_p}}" #ifndef OBSD_HAS_CORRECT_SPECS --- 78,93 ---- since all code must be compiled with -pthread to work. This two-stage defines makes it easy to pick that for targets that have subspecs. */ + #ifdef CPP_CPU_SPEC + #define OBSD_CPP_SPEC "%(cpp_cpu) %{posix:-D_POSIX_SOURCE} %{pthread:-D_POSIX_THREADS}" + #else #define OBSD_CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_POSIX_THREADS}" + #endif /* LIB_SPEC appropriate for OpenBSD. Select the appropriate libc, depending on profiling and threads. Basically, -lc(_r)?(_p)?, select _r for threads, and _p for p or pg. */ ! #define OBSD_LIB_SPEC "%{!shared:-lc%{pthread:_r}%{p:_p}%{!p:%{pg:_p}}}" #ifndef OBSD_HAS_CORRECT_SPECS *************** Boston, MA 02111-1307, USA. */ *** 103,108 **** --- 107,113 ---- pic code. */ #undef ASM_SPEC #define ASM_SPEC "%{fpic:-k} %{fPIC:-k -K} %|" + #else /* Since we use gas, stdin -> - is a good idea, but we don't want to override native specs just for that. */ *************** Boston, MA 02111-1307, USA. */ *** 116,125 **** #undef LINK_SPEC #ifdef OBSD_NO_DYNAMIC_LIBRARIES #define LINK_SPEC \ ! "%{!nostdlib:%{!r*:%{!e*:-e start}}} -dc -dp %{assert*}" #else #define LINK_SPEC \ ! "%{!shared:%{!nostdlib:%{!r*:%{!e*:-e start}}}} %{shared:-Bshareable -x} -dc -dp %{R*} %{static:-Bstatic} %{assert*}" #endif #undef LIB_SPEC --- 121,130 ---- #undef LINK_SPEC #ifdef OBSD_NO_DYNAMIC_LIBRARIES #define LINK_SPEC \ ! "%{g:%{!nostdlib:-L/usr/lib/debug}} %{!nostdlib:%{!r*:%{!e*:-e start}}} -dc -dp %{assert*}" #else #define LINK_SPEC \ ! "%{g:%{!nostdlib:-L/usr/lib/debug}} %{!shared:%{!nostdlib:%{!r*:%{!e*:-e start}}}} %{shared:-Bshareable -x} -dc -dp %{R*} %{static:-Bstatic} %{assert*}" #endif #undef LIB_SPEC diff -Nrc3pad gcc-3.0/gcc/config/rs6000/rs6000-protos.h gcc-3.0.1/gcc/config/rs6000/rs6000-protos.h *** gcc-3.0/gcc/config/rs6000/rs6000-protos.h Fri May 18 12:34:18 2001 --- gcc-3.0.1/gcc/config/rs6000/rs6000-protos.h Sat Jul 14 15:50:31 2001 *************** extern int reg_or_neg_short_operand PARA *** 42,52 **** --- 42,55 ---- extern int reg_or_u_short_operand PARAMS ((rtx, enum machine_mode)); extern int reg_or_cint_operand PARAMS ((rtx, enum machine_mode)); extern int reg_or_arith_cint_operand PARAMS ((rtx, enum machine_mode)); + extern int reg_or_add_cint64_operand PARAMS ((rtx, enum machine_mode)); + extern int reg_or_sub_cint64_operand PARAMS ((rtx, enum machine_mode)); extern int reg_or_logical_cint_operand PARAMS ((rtx, enum machine_mode)); extern int got_operand PARAMS ((rtx, enum machine_mode)); extern int got_no_const_operand PARAMS ((rtx, enum machine_mode)); extern int num_insns_constant PARAMS ((rtx, enum machine_mode)); extern int easy_fp_constant PARAMS ((rtx, enum machine_mode)); + extern int zero_fp_constant PARAMS ((rtx, enum machine_mode)); extern int volatile_mem_operand PARAMS ((rtx, enum machine_mode)); extern int offsettable_mem_operand PARAMS ((rtx, enum machine_mode)); extern int mem_or_easy_const_operand PARAMS ((rtx, enum machine_mode)); *************** extern int scc_comparison_operator PARAM *** 79,84 **** --- 82,88 ---- extern int trap_comparison_operator PARAMS ((rtx, enum machine_mode)); extern int boolean_operator PARAMS ((rtx, enum machine_mode)); extern int boolean_or_operator PARAMS ((rtx, enum machine_mode)); + extern int min_max_operator PARAMS ((rtx, enum machine_mode)); extern int includes_lshift_p PARAMS ((rtx, rtx)); extern int includes_rshift_p PARAMS ((rtx, rtx)); extern int includes_lshift64_p PARAMS ((rtx, rtx)); *************** extern enum rtx_code rs6000_reverse_cond *** 94,99 **** --- 98,105 ---- extern void rs6000_emit_sCOND PARAMS ((enum rtx_code, rtx)); extern void rs6000_emit_cbranch PARAMS ((enum rtx_code, rtx)); extern char * output_cbranch PARAMS ((rtx, const char *, int, rtx)); + extern int rs6000_emit_cmove PARAMS ((rtx, rtx, rtx, rtx)); + extern void rs6000_emit_minmax PARAMS ((rtx, enum rtx_code, rtx, rtx)); extern void output_toc PARAMS ((FILE *, rtx, int, enum machine_mode)); extern int rs6000_adjust_cost PARAMS ((rtx, rtx, rtx, int)); extern int rs6000_adjust_priority PARAMS ((rtx, int)); diff -Nrc3pad gcc-3.0/gcc/config/rs6000/rs6000.c gcc-3.0.1/gcc/config/rs6000/rs6000.c *** gcc-3.0/gcc/config/rs6000/rs6000.c Fri May 18 12:15:11 2001 --- gcc-3.0.1/gcc/config/rs6000/rs6000.c Sat Jul 14 15:50:30 2001 *************** reg_or_arith_cint_operand (op, mode) *** 674,680 **** || (GET_CODE (op) == CONST_INT #if HOST_BITS_PER_WIDE_INT != 32 && ((unsigned HOST_WIDE_INT) (INTVAL (op) + 0x80000000) ! < 0x100000000u) #endif )); } --- 674,716 ---- || (GET_CODE (op) == CONST_INT #if HOST_BITS_PER_WIDE_INT != 32 && ((unsigned HOST_WIDE_INT) (INTVAL (op) + 0x80000000) ! < 0x100000000ll) ! #endif ! )); ! } ! ! /* Return 1 is the operand is either a non-special register or a 32-bit ! signed constant integer valid for 64-bit addition. */ ! ! int ! reg_or_add_cint64_operand (op, mode) ! register rtx op; ! enum machine_mode mode; ! { ! return (gpc_reg_operand (op, mode) ! || (GET_CODE (op) == CONST_INT ! && INTVAL (op) < 0x7fff8000 ! #if HOST_BITS_PER_WIDE_INT != 32 ! && ((unsigned HOST_WIDE_INT) (INTVAL (op) + 0x80008000) ! < 0x100000000ll) ! #endif ! )); ! } ! ! /* Return 1 is the operand is either a non-special register or a 32-bit ! signed constant integer valid for 64-bit subtraction. */ ! ! int ! reg_or_sub_cint64_operand (op, mode) ! register rtx op; ! enum machine_mode mode; ! { ! return (gpc_reg_operand (op, mode) ! || (GET_CODE (op) == CONST_INT ! && (- INTVAL (op)) < 0x7fff8000 ! #if HOST_BITS_PER_WIDE_INT != 32 ! && ((unsigned HOST_WIDE_INT) ((- INTVAL (op)) + 0x80008000) ! < 0x100000000ll) #endif )); } *************** easy_fp_constant (op, mode) *** 905,910 **** --- 941,955 ---- abort (); } + /* Return 1 if the operand is 0.0. */ + int + zero_fp_constant (op, mode) + register rtx op; + register enum machine_mode mode; + { + return GET_MODE_CLASS (mode) == MODE_FLOAT && op == CONST0_RTX (mode); + } + /* Return 1 if the operand is in volatile memory. Note that during the RTL generation phase, memory_operand does not return TRUE for volatile memory references. So this function allows us to *************** add_operand (op, mode) *** 964,972 **** register rtx op; enum machine_mode mode; { ! return (reg_or_short_operand (op, mode) ! || (GET_CODE (op) == CONST_INT ! && CONST_OK_FOR_LETTER_P (INTVAL(op), 'L'))); } /* Return 1 if OP is a constant but not a valid add_operand. */ --- 1009,1019 ---- register rtx op; enum machine_mode mode; { ! if (GET_CODE (op) == CONST_INT) ! return (CONST_OK_FOR_LETTER_P (INTVAL(op), 'I') ! || CONST_OK_FOR_LETTER_P (INTVAL(op), 'L')); ! ! return gpc_reg_operand (op, mode); } /* Return 1 if OP is a constant but not a valid add_operand. */ *************** boolean_or_operator (op, mode) *** 3394,3399 **** --- 3441,3455 ---- enum rtx_code code = GET_CODE (op); return (code == IOR || code == XOR); } + + int + min_max_operator (op, mode) + rtx op; + enum machine_mode mode ATTRIBUTE_UNUSED; + { + enum rtx_code code = GET_CODE (op); + return (code == SMIN || code == SMAX || code == UMIN || code == UMAX); + } /* Return 1 if ANDOP is a mask that has no bits on that are not in the mask required to convert the result of a rotate insn into a shift *************** print_operand (file, x, code) *** 4028,4033 **** --- 4084,4090 ---- case 'p': /* X is a CONST_INT that is a power of two. Output the logarithm. */ if (! INT_P (x) + || INT_LOWPART (x) < 0 || (i = exact_log2 (INT_LOWPART (x))) < 0) output_operand_lossage ("invalid %%p value"); else *************** output_cbranch (op, label, reversed, ins *** 4624,4635 **** { /* Not all of these are actually distinct opcodes, but we distinguish them for clarity of the resulting assembler. */ ! case NE: ccode = "ne"; break; ! case EQ: ccode = "eq"; break; ! case GE: case GEU: ccode = "ge"; break; ! case GT: case GTU: ccode = "gt"; break; ! case LE: case LEU: ccode = "le"; break; ! case LT: case LTU: ccode = "lt"; break; case UNORDERED: ccode = "un"; break; case ORDERED: ccode = "nu"; break; case UNGE: ccode = "nl"; break; --- 4681,4698 ---- { /* Not all of these are actually distinct opcodes, but we distinguish them for clarity of the resulting assembler. */ ! case NE: case LTGT: ! ccode = "ne"; break; ! case EQ: case UNEQ: ! ccode = "eq"; break; ! case GE: case GEU: ! ccode = "ge"; break; ! case GT: case GTU: case UNGT: ! ccode = "gt"; break; ! case LE: case LEU: ! ccode = "le"; break; ! case LT: case LTU: case UNLT: ! ccode = "lt"; break; case UNORDERED: ccode = "un"; break; case ORDERED: ccode = "nu"; break; case UNGE: ccode = "nl"; break; *************** output_cbranch (op, label, reversed, ins *** 4678,4683 **** --- 4741,4921 ---- } return string; + } + + /* Emit a conditional move: move TRUE_COND to DEST if OP of the + operands of the last comparison is nonzero/true, FALSE_COND if it + is zero/false. Return 0 if the hardware has no such operation. */ + int + rs6000_emit_cmove (dest, op, true_cond, false_cond) + rtx dest; + rtx op; + rtx true_cond; + rtx false_cond; + { + enum rtx_code code = GET_CODE (op); + rtx op0 = rs6000_compare_op0; + rtx op1 = rs6000_compare_op1; + REAL_VALUE_TYPE c1; + enum machine_mode mode = GET_MODE (op0); + rtx temp; + + /* First, work out if the hardware can do this at all, or + if it's too slow... */ + /* If the comparison is an integer one, since we only have fsel + it'll be cheaper to use a branch. */ + if (! rs6000_compare_fp_p) + return 0; + + /* Eliminate half of the comparisons by switching operands, this + makes the remaining code simpler. */ + if (code == UNLT || code == UNGT || code == UNORDERED || code == NE + || code == LTGT || code == LT) + { + code = reverse_condition_maybe_unordered (code); + temp = true_cond; + true_cond = false_cond; + false_cond = temp; + } + + /* UNEQ and LTGT take four instructions for a comparison with zero, + it'll probably be faster to use a branch here too. */ + if (code == UNEQ) + return 0; + + if (GET_CODE (op1) == CONST_DOUBLE) + REAL_VALUE_FROM_CONST_DOUBLE (c1, op1); + + /* We're going to try to implement comparions by performing + a subtract, then comparing against zero. Unfortunately, + Inf - Inf is NaN which is not zero, and so if we don't + know that the the operand is finite and the comparison + would treat EQ different to UNORDERED, we can't do it. */ + if (! flag_fast_math + && code != GT && code != UNGE + && (GET_CODE (op1) != CONST_DOUBLE || target_isinf (c1)) + /* Constructs of the form (a OP b ? a : b) are safe. */ + && ((! rtx_equal_p (op0, false_cond) && ! rtx_equal_p (op1, false_cond)) + || (! rtx_equal_p (op0, true_cond) + && ! rtx_equal_p (op1, true_cond)))) + return 0; + /* At this point we know we can use fsel. */ + + /* Reduce the comparison to a comparison against zero. */ + temp = gen_reg_rtx (mode); + emit_insn (gen_rtx_SET (VOIDmode, temp, + gen_rtx_MINUS (mode, op0, op1))); + op0 = temp; + op1 = CONST0_RTX (mode); + + /* If we don't care about NaNs we can reduce some of the comparisons + down to faster ones. */ + if (flag_fast_math) + switch (code) + { + case GT: + code = LE; + temp = true_cond; + true_cond = false_cond; + false_cond = temp; + break; + case UNGE: + code = GE; + break; + case UNEQ: + code = EQ; + break; + default: + break; + } + + /* Now, reduce everything down to a GE. */ + switch (code) + { + case GE: + break; + + case LE: + temp = gen_reg_rtx (mode); + emit_insn (gen_rtx_SET (VOIDmode, temp, gen_rtx_NEG (mode, op0))); + op0 = temp; + break; + + case ORDERED: + temp = gen_reg_rtx (mode); + emit_insn (gen_rtx_SET (VOIDmode, temp, gen_rtx_ABS (mode, op0))); + op0 = temp; + break; + + case EQ: + temp = gen_reg_rtx (mode); + emit_insn (gen_rtx_SET (VOIDmode, temp, + gen_rtx_NEG (mode, + gen_rtx_ABS (mode, op0)))); + op0 = temp; + break; + + case UNGE: + temp = gen_reg_rtx (mode); + emit_insn (gen_rtx_SET (VOIDmode, temp, + gen_rtx_IF_THEN_ELSE (mode, + gen_rtx_GE (VOIDmode, + op0, op1), + true_cond, false_cond))); + false_cond = temp; + true_cond = false_cond; + + temp = gen_reg_rtx (mode); + emit_insn (gen_rtx_SET (VOIDmode, temp, gen_rtx_NEG (mode, op0))); + op0 = temp; + break; + + case GT: + temp = gen_reg_rtx (mode); + emit_insn (gen_rtx_SET (VOIDmode, temp, + gen_rtx_IF_THEN_ELSE (mode, + gen_rtx_GE (VOIDmode, + op0, op1), + true_cond, false_cond))); + true_cond = temp; + false_cond = true_cond; + + temp = gen_reg_rtx (mode); + emit_insn (gen_rtx_SET (VOIDmode, temp, gen_rtx_NEG (mode, op0))); + op0 = temp; + break; + + default: + abort (); + } + + emit_insn (gen_rtx_SET (VOIDmode, dest, + gen_rtx_IF_THEN_ELSE (mode, + gen_rtx_GE (VOIDmode, + op0, op1), + true_cond, false_cond))); + return 1; + } + + void + rs6000_emit_minmax (dest, code, op0, op1) + rtx dest; + enum rtx_code code; + rtx op0; + rtx op1; + { + enum machine_mode mode = GET_MODE (op0); + rtx target; + if (code == SMAX || code == UMAX) + target = emit_conditional_move (dest, GE, op0, op1, mode, + op0, op1, mode, 0); + else + target = emit_conditional_move (dest, GE, op0, op1, mode, + op1, op0, mode, 0); + if (target == NULL_RTX) + abort (); + if (target != dest) + emit_move_insn (dest, target); } /* This page contains routines that are used to determine what the function diff -Nrc3pad gcc-3.0/gcc/config/rs6000/rs6000.h gcc-3.0.1/gcc/config/rs6000/rs6000.h *** gcc-3.0/gcc/config/rs6000/rs6000.h Thu May 17 16:31:19 2001 --- gcc-3.0.1/gcc/config/rs6000/rs6000.h Sat Jul 14 15:50:30 2001 *************** enum reg_class *** 1044,1050 **** `K' is a constant with only the low-order 16 bits non-zero `L' is a signed 16-bit constant shifted left 16 bits `M' is a constant that is greater than 31 ! `N' is a constant that is an exact power of two `O' is the constant zero `P' is a constant whose negation is a signed 16-bit constant */ --- 1044,1050 ---- `K' is a constant with only the low-order 16 bits non-zero `L' is a signed 16-bit constant shifted left 16 bits `M' is a constant that is greater than 31 ! `N' is a positive constant that is an exact power of two `O' is the constant zero `P' is a constant whose negation is a signed 16-bit constant */ *************** enum reg_class *** 1055,1061 **** : (C) == 'L' ? (((VALUE) & 0xffff) == 0 \ && ((VALUE) >> 31 == -1 || (VALUE) >> 31 == 0)) \ : (C) == 'M' ? (VALUE) > 31 \ ! : (C) == 'N' ? exact_log2 (VALUE) >= 0 \ : (C) == 'O' ? (VALUE) == 0 \ : (C) == 'P' ? (unsigned HOST_WIDE_INT) ((- (VALUE)) + 0x8000) < 0x10000 \ : 0) --- 1055,1061 ---- : (C) == 'L' ? (((VALUE) & 0xffff) == 0 \ && ((VALUE) >> 31 == -1 || (VALUE) >> 31 == 0)) \ : (C) == 'M' ? (VALUE) > 31 \ ! : (C) == 'N' ? (VALUE) > 0 && exact_log2 (VALUE) >= 0 \ : (C) == 'O' ? (VALUE) == 0 \ : (C) == 'P' ? (unsigned HOST_WIDE_INT) ((- (VALUE)) + 0x8000) < 0x10000 \ : 0) *************** do { \ *** 2675,2684 **** --- 2675,2687 ---- {"reg_or_u_short_operand", {SUBREG, REG, CONST_INT}}, \ {"reg_or_cint_operand", {SUBREG, REG, CONST_INT}}, \ {"reg_or_arith_cint_operand", {SUBREG, REG, CONST_INT}}, \ + {"reg_or_add_cint64_operand", {SUBREG, REG, CONST_INT}}, \ + {"reg_or_sub_cint64_operand", {SUBREG, REG, CONST_INT}}, \ {"reg_or_logical_cint_operand", {SUBREG, REG, CONST_INT, CONST_DOUBLE}}, \ {"got_operand", {SYMBOL_REF, CONST, LABEL_REF}}, \ {"got_no_const_operand", {SYMBOL_REF, LABEL_REF}}, \ {"easy_fp_constant", {CONST_DOUBLE}}, \ + {"zero_fp_constant", {CONST_DOUBLE}}, \ {"reg_or_mem_operand", {SUBREG, MEM, REG}}, \ {"lwa_operand", {SUBREG, MEM, REG}}, \ {"volatile_mem_operand", {MEM}}, \ *************** do { \ *** 2714,2720 **** {"trap_comparison_operator", {EQ, NE, LE, LT, GE, \ GT, LEU, LTU, GEU, GTU}}, \ {"boolean_operator", {AND, IOR, XOR}}, \ ! {"boolean_or_operator", {IOR, XOR}}, /* uncomment for disabling the corresponding default options */ /* #define MACHINE_no_sched_interblock */ --- 2717,2724 ---- {"trap_comparison_operator", {EQ, NE, LE, LT, GE, \ GT, LEU, LTU, GEU, GTU}}, \ {"boolean_operator", {AND, IOR, XOR}}, \ ! {"boolean_or_operator", {IOR, XOR}}, \ ! {"min_max_operator", {SMIN, SMAX, UMIN, UMAX}}, /* uncomment for disabling the corresponding default options */ /* #define MACHINE_no_sched_interblock */ diff -Nrc3pad gcc-3.0/gcc/config/rs6000/rs6000.md gcc-3.0.1/gcc/config/rs6000/rs6000.md *** gcc-3.0/gcc/config/rs6000/rs6000.md Thu May 17 22:41:19 2001 --- gcc-3.0.1/gcc/config/rs6000/rs6000.md Sat Jul 14 15:50:31 2001 *************** *** 1422,1437 **** rtx tmp = ((no_new_pseudos || rtx_equal_p (operands[0], operands[1])) ? operands[0] : gen_reg_rtx (SImode)); ! HOST_WIDE_INT low = INTVAL (operands[2]) & 0xffff; ! HOST_WIDE_INT high = INTVAL (operands[2]) & (~ (HOST_WIDE_INT) 0xffff); ! ! if (low & 0x8000) ! high += 0x10000, low |= ((HOST_WIDE_INT) -1) << 16; /* The ordering here is important for the prolog expander. When space is allocated from the stack, adding 'low' first may produce a temporary deallocation (which would be bad). */ ! emit_insn (gen_addsi3 (tmp, operands[1], GEN_INT (high))); emit_insn (gen_addsi3 (operands[0], tmp, GEN_INT (low))); DONE; } --- 1422,1435 ---- rtx tmp = ((no_new_pseudos || rtx_equal_p (operands[0], operands[1])) ? operands[0] : gen_reg_rtx (SImode)); ! HOST_WIDE_INT val = INTVAL (operands[2]); ! HOST_WIDE_INT low = (val & 0xffff) - 2 * (val & 0x8000); ! HOST_WIDE_INT rest = trunc_int_for_mode (val - low, SImode); /* The ordering here is important for the prolog expander. When space is allocated from the stack, adding 'low' first may produce a temporary deallocation (which would be bad). */ ! emit_insn (gen_addsi3 (tmp, operands[1], GEN_INT (rest))); emit_insn (gen_addsi3 (operands[0], tmp, GEN_INT (low))); DONE; } *************** *** 1525,1537 **** (set (match_dup 0) (plus:SI (match_dup 0) (match_dup 4)))] " { ! HOST_WIDE_INT low = INTVAL (operands[2]) & 0xffff; ! HOST_WIDE_INT high = INTVAL (operands[2]) & (~ (HOST_WIDE_INT) 0xffff); ! ! if (low & 0x8000) ! high += 0x10000, low |= ((HOST_WIDE_INT) -1) << 16; ! operands[3] = GEN_INT (high); operands[4] = GEN_INT (low); }") --- 1523,1533 ---- (set (match_dup 0) (plus:SI (match_dup 0) (match_dup 4)))] " { ! HOST_WIDE_INT val = INTVAL (operands[2]); ! HOST_WIDE_INT low = (val & 0xffff) - 2 * (val & 0x8000); ! HOST_WIDE_INT rest = trunc_int_for_mode (val - low, SImode); ! operands[3] = GEN_INT (rest); operands[4] = GEN_INT (low); }") *************** *** 2263,2268 **** --- 2259,2265 ---- " { if (GET_CODE (operands[2]) == CONST_INT + && INTVAL (operands[2]) > 0 && exact_log2 (INTVAL (operands[2])) >= 0) ; else if (TARGET_POWERPC) *************** *** 2314,2325 **** rtx temp1; rtx temp2; ! if (GET_CODE (operands[2]) != CONST_INT) ! FAIL; ! ! i = exact_log2 (INTVAL (operands[2])); ! ! if (i < 0) FAIL; temp1 = gen_reg_rtx (SImode); --- 2311,2319 ---- rtx temp1; rtx temp2; ! if (GET_CODE (operands[2]) != CONST_INT ! || INTVAL (operands[2]) < 0 ! || (i = exact_log2 (INTVAL (operands[2]))) < 0) FAIL; temp1 = gen_reg_rtx (SImode); *************** *** 2335,2341 **** [(set (match_operand:SI 0 "gpc_reg_operand" "=r") (div:SI (match_operand:SI 1 "gpc_reg_operand" "r") (match_operand:SI 2 "const_int_operand" "N")))] ! "exact_log2 (INTVAL (operands[2])) >= 0" "{srai|srawi} %0,%1,%p2\;{aze|addze} %0,%0" [(set_attr "length" "8")]) --- 2329,2335 ---- [(set (match_operand:SI 0 "gpc_reg_operand" "=r") (div:SI (match_operand:SI 1 "gpc_reg_operand" "r") (match_operand:SI 2 "const_int_operand" "N")))] ! "INTVAL (operands[2]) > 0 && exact_log2 (INTVAL (operands[2])) >= 0" "{srai|srawi} %0,%1,%p2\;{aze|addze} %0,%0" [(set_attr "length" "8")]) *************** *** 2345,2351 **** (match_operand:SI 2 "const_int_operand" "N,N")) (const_int 0))) (clobber (match_scratch:SI 3 "=r,r"))] ! "exact_log2 (INTVAL (operands[2])) >= 0" "@ {srai|srawi} %3,%1,%p2\;{aze.|addze.} %3,%3 #" --- 2339,2345 ---- (match_operand:SI 2 "const_int_operand" "N,N")) (const_int 0))) (clobber (match_scratch:SI 3 "=r,r"))] ! "INTVAL (operands[2]) > 0 && exact_log2 (INTVAL (operands[2])) >= 0" "@ {srai|srawi} %3,%1,%p2\;{aze.|addze.} %3,%3 #" *************** *** 2358,2364 **** (match_operand:SI 2 "const_int_operand" "")) (const_int 0))) (clobber (match_scratch:SI 3 ""))] ! "exact_log2 (INTVAL (operands[2])) >= 0 && reload_completed" [(set (match_dup 3) (div:SI (match_dup 1) (match_dup 2))) (set (match_dup 0) --- 2352,2359 ---- (match_operand:SI 2 "const_int_operand" "")) (const_int 0))) (clobber (match_scratch:SI 3 ""))] ! "INTVAL (operands[2]) > 0 && exact_log2 (INTVAL (operands[2])) >= 0 ! && reload_completed" [(set (match_dup 3) (div:SI (match_dup 1) (match_dup 2))) (set (match_dup 0) *************** *** 2373,2379 **** (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "=r,r") (div:SI (match_dup 1) (match_dup 2)))] ! "exact_log2 (INTVAL (operands[2])) >= 0" "@ {srai|srawi} %0,%1,%p2\;{aze.|addze.} %0,%0 #" --- 2368,2374 ---- (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "=r,r") (div:SI (match_dup 1) (match_dup 2)))] ! "INTVAL (operands[2]) > 0 && exact_log2 (INTVAL (operands[2])) >= 0" "@ {srai|srawi} %0,%1,%p2\;{aze.|addze.} %0,%0 #" *************** *** 2387,2393 **** (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") (div:SI (match_dup 1) (match_dup 2)))] ! "exact_log2 (INTVAL (operands[2])) >= 0 && reload_completed" [(set (match_dup 0) (div:SI (match_dup 1) (match_dup 2))) (set (match_dup 3) --- 2382,2389 ---- (const_int 0))) (set (match_operand:SI 0 "gpc_reg_operand" "") (div:SI (match_dup 1) (match_dup 2)))] ! "INTVAL (operands[2]) > 0 && exact_log2 (INTVAL (operands[2])) >= 0 ! && reload_completed" [(set (match_dup 0) (div:SI (match_dup 1) (match_dup 2))) (set (match_dup 3) *************** *** 4808,4867 **** ;; single DEFINE_INSN for fsel and the define_splits to make them if made by ;; combine. (define_expand "maxsf3" - [(set (match_dup 3) - (minus:SF (match_operand:SF 1 "gpc_reg_operand" "") - (match_operand:SF 2 "gpc_reg_operand" ""))) - (set (match_operand:SF 0 "gpc_reg_operand" "") - (if_then_else:SF (ge (match_dup 3) - (const_int 0)) - (match_dup 1) - (match_dup 2)))] - "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" - " - { operands[3] = gen_reg_rtx (SFmode); }") - - (define_split [(set (match_operand:SF 0 "gpc_reg_operand" "") ! (smax:SF (match_operand:SF 1 "gpc_reg_operand" "") ! (match_operand:SF 2 "gpc_reg_operand" ""))) ! (clobber (match_operand:SF 3 "gpc_reg_operand" ""))] ! "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" ! [(set (match_dup 3) ! (minus:SF (match_dup 1) (match_dup 2))) ! (set (match_dup 0) ! (if_then_else:SF (ge (match_dup 3) ! (const_int 0)) (match_dup 1) (match_dup 2)))] ! "") (define_expand "minsf3" ! [(set (match_dup 3) ! (minus:SF (match_operand:SF 2 "gpc_reg_operand" "") ! (match_operand:SF 1 "gpc_reg_operand" ""))) ! (set (match_operand:SF 0 "gpc_reg_operand" "") ! (if_then_else:SF (ge (match_dup 3) ! (const_int 0)) ! (match_dup 1) ! (match_dup 2)))] "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" ! " ! { operands[3] = gen_reg_rtx (SFmode); }") (define_split [(set (match_operand:SF 0 "gpc_reg_operand" "") ! (smin:SF (match_operand:SF 1 "gpc_reg_operand" "") ! (match_operand:SF 2 "gpc_reg_operand" ""))) ! (clobber (match_operand:SF 3 "gpc_reg_operand" ""))] "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" ! [(set (match_dup 3) ! (minus:SF (match_dup 2) (match_dup 1))) ! (set (match_dup 0) ! (if_then_else:SF (ge (match_dup 3) ! (const_int 0)) ! (match_dup 1) ! (match_dup 2)))] ! "") (define_expand "movsfcc" [(set (match_operand:SF 0 "gpc_reg_operand" "") --- 4804,4838 ---- ;; single DEFINE_INSN for fsel and the define_splits to make them if made by ;; combine. (define_expand "maxsf3" [(set (match_operand:SF 0 "gpc_reg_operand" "") ! (if_then_else:SF (ge (match_operand:SF 1 "gpc_reg_operand" "") ! (match_operand:SF 2 "gpc_reg_operand" "")) (match_dup 1) (match_dup 2)))] ! "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" ! "{ rs6000_emit_minmax (operands[0], SMAX, operands[1], operands[2]); DONE;}") (define_expand "minsf3" ! [(set (match_operand:SF 0 "gpc_reg_operand" "") ! (if_then_else:SF (ge (match_operand:SF 1 "gpc_reg_operand" "") ! (match_operand:SF 2 "gpc_reg_operand" "")) ! (match_dup 2) ! (match_dup 1)))] "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" ! "{ rs6000_emit_minmax (operands[0], SMIN, operands[1], operands[2]); DONE;}") (define_split [(set (match_operand:SF 0 "gpc_reg_operand" "") ! (match_operator:SF 3 "min_max_operator" ! [(match_operand:SF 1 "gpc_reg_operand" "") ! (match_operand:SF 2 "gpc_reg_operand" "")]))] "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" ! [(const_int 0)] ! " ! { rs6000_emit_minmax (operands[0], GET_CODE (operands[3]), ! operands[1], operands[2]); ! DONE; ! }") (define_expand "movsfcc" [(set (match_operand:SF 0 "gpc_reg_operand" "") *************** *** 4871,4942 **** "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" " { ! rtx temp, op0, op1; ! enum rtx_code code = GET_CODE (operands[1]); ! if (! rs6000_compare_fp_p) ! FAIL; ! switch (code) ! { ! case GE: case EQ: ! op0 = rs6000_compare_op0; ! op1 = rs6000_compare_op1; ! break; ! case GT: ! op0 = rs6000_compare_op1; ! op1 = rs6000_compare_op0; ! temp = operands[2]; operands[2] = operands[3]; operands[3] = temp; ! break; ! case LE: ! op0 = rs6000_compare_op1; ! op1 = rs6000_compare_op0; ! break; ! case LT: ! op0 = rs6000_compare_op0; ! op1 = rs6000_compare_op1; ! temp = operands[2]; operands[2] = operands[3]; operands[3] = temp; ! break; ! default: ! FAIL; ! } ! if (GET_MODE (rs6000_compare_op0) == DFmode) ! { ! temp = gen_reg_rtx (DFmode); ! emit_insn (gen_subdf3 (temp, op0, op1)); ! emit_insn (gen_fseldfsf4 (operands[0], temp, operands[2], operands[3])); ! if (code == EQ) ! { ! emit_insn (gen_negdf2 (temp, temp)); ! emit_insn (gen_fseldfsf4 (operands[0], temp, operands[0], operands[3])); ! } ! } else ! { ! temp = gen_reg_rtx (SFmode); ! emit_insn (gen_subsf3 (temp, op0, op1)); ! emit_insn (gen_fselsfsf4 (operands[0], temp, operands[2], operands[3])); ! if (code == EQ) ! { ! emit_insn (gen_negsf2 (temp, temp)); ! emit_insn (gen_fselsfsf4 (operands[0], temp, operands[0], operands[3])); ! } ! } ! DONE; }") ! (define_insn "fselsfsf4" [(set (match_operand:SF 0 "gpc_reg_operand" "=f") (if_then_else:SF (ge (match_operand:SF 1 "gpc_reg_operand" "f") ! (const_int 0)) (match_operand:SF 2 "gpc_reg_operand" "f") (match_operand:SF 3 "gpc_reg_operand" "f")))] "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" "fsel %0,%1,%2,%3" [(set_attr "type" "fp")]) ! (define_insn "fseldfsf4" [(set (match_operand:SF 0 "gpc_reg_operand" "=f") (if_then_else:SF (ge (match_operand:DF 1 "gpc_reg_operand" "f") ! (const_int 0)) (match_operand:SF 2 "gpc_reg_operand" "f") (match_operand:SF 3 "gpc_reg_operand" "f")))] "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" --- 4842,4867 ---- "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" " { ! if (rs6000_emit_cmove (operands[0], operands[1], operands[2], operands[3])) ! DONE; else ! FAIL; }") ! (define_insn "*fselsfsf4" [(set (match_operand:SF 0 "gpc_reg_operand" "=f") (if_then_else:SF (ge (match_operand:SF 1 "gpc_reg_operand" "f") ! (match_operand:SF 4 "zero_fp_constant" "F")) (match_operand:SF 2 "gpc_reg_operand" "f") (match_operand:SF 3 "gpc_reg_operand" "f")))] "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" "fsel %0,%1,%2,%3" [(set_attr "type" "fp")]) ! (define_insn "*fseldfsf4" [(set (match_operand:SF 0 "gpc_reg_operand" "=f") (if_then_else:SF (ge (match_operand:DF 1 "gpc_reg_operand" "f") ! (match_operand:DF 4 "zero_fp_constant" "F")) (match_operand:SF 2 "gpc_reg_operand" "f") (match_operand:SF 3 "gpc_reg_operand" "f")))] "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" *************** *** 5039,5104 **** "fsqrt %0,%1" [(set_attr "type" "dsqrt")]) ! ;; For MIN, MAX, and conditional move, we use DEFINE_EXPAND's that involve a ! ;; fsel instruction and some auxiliary computations. Then we just have a ! ;; single DEFINE_INSN for fsel and the define_splits to make them if made by ! ;; combine. (define_expand "maxdf3" - [(set (match_dup 3) - (minus:DF (match_operand:DF 1 "gpc_reg_operand" "") - (match_operand:DF 2 "gpc_reg_operand" ""))) - (set (match_operand:DF 0 "gpc_reg_operand" "") - (if_then_else:DF (ge (match_dup 3) - (const_int 0)) - (match_dup 1) - (match_dup 2)))] - "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" - " - { operands[3] = gen_reg_rtx (DFmode); }") - - (define_split [(set (match_operand:DF 0 "gpc_reg_operand" "") ! (smax:DF (match_operand:DF 1 "gpc_reg_operand" "") ! (match_operand:DF 2 "gpc_reg_operand" ""))) ! (clobber (match_operand:DF 3 "gpc_reg_operand" ""))] ! "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" ! [(set (match_dup 3) ! (minus:DF (match_dup 1) (match_dup 2))) ! (set (match_dup 0) ! (if_then_else:DF (ge (match_dup 3) ! (const_int 0)) (match_dup 1) (match_dup 2)))] ! "") (define_expand "mindf3" ! [(set (match_dup 3) ! (minus:DF (match_operand:DF 2 "gpc_reg_operand" "") ! (match_operand:DF 1 "gpc_reg_operand" ""))) ! (set (match_operand:DF 0 "gpc_reg_operand" "") ! (if_then_else:DF (ge (match_dup 3) ! (const_int 0)) ! (match_dup 1) ! (match_dup 2)))] "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" ! " ! { operands[3] = gen_reg_rtx (DFmode); }") (define_split [(set (match_operand:DF 0 "gpc_reg_operand" "") ! (smin:DF (match_operand:DF 1 "gpc_reg_operand" "") ! (match_operand:DF 2 "gpc_reg_operand" ""))) ! (clobber (match_operand:DF 3 "gpc_reg_operand" ""))] "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" ! [(set (match_dup 3) ! (minus:DF (match_dup 2) (match_dup 1))) ! (set (match_dup 0) ! (if_then_else:DF (ge (match_dup 3) ! (const_int 0)) ! (match_dup 1) ! (match_dup 2)))] ! "") (define_expand "movdfcc" [(set (match_operand:DF 0 "gpc_reg_operand" "") --- 4964,5002 ---- "fsqrt %0,%1" [(set_attr "type" "dsqrt")]) ! ;; The conditional move instructions allow us to perform max and min ! ;; operations even when (define_expand "maxdf3" [(set (match_operand:DF 0 "gpc_reg_operand" "") ! (if_then_else:DF (ge (match_operand:DF 1 "gpc_reg_operand" "") ! (match_operand:DF 2 "gpc_reg_operand" "")) (match_dup 1) (match_dup 2)))] ! "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" ! "{ rs6000_emit_minmax (operands[0], SMAX, operands[1], operands[2]); DONE;}") (define_expand "mindf3" ! [(set (match_operand:DF 0 "gpc_reg_operand" "") ! (if_then_else:DF (ge (match_operand:DF 1 "gpc_reg_operand" "") ! (match_operand:DF 2 "gpc_reg_operand" "")) ! (match_dup 2) ! (match_dup 1)))] "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" ! "{ rs6000_emit_minmax (operands[0], SMIN, operands[1], operands[2]); DONE;}") (define_split [(set (match_operand:DF 0 "gpc_reg_operand" "") ! (match_operator:DF 3 "min_max_operator" ! [(match_operand:DF 1 "gpc_reg_operand" "") ! (match_operand:DF 2 "gpc_reg_operand" "")]))] "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" ! [(const_int 0)] ! " ! { rs6000_emit_minmax (operands[0], GET_CODE (operands[3]), ! operands[1], operands[2]); ! DONE; ! }") (define_expand "movdfcc" [(set (match_operand:DF 0 "gpc_reg_operand" "") *************** *** 5108,5179 **** "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" " { ! rtx temp, op0, op1; ! enum rtx_code code = GET_CODE (operands[1]); ! if (! rs6000_compare_fp_p) ! FAIL; ! switch (code) ! { ! case GE: case EQ: ! op0 = rs6000_compare_op0; ! op1 = rs6000_compare_op1; ! break; ! case GT: ! op0 = rs6000_compare_op1; ! op1 = rs6000_compare_op0; ! temp = operands[2]; operands[2] = operands[3]; operands[3] = temp; ! break; ! case LE: ! op0 = rs6000_compare_op1; ! op1 = rs6000_compare_op0; ! break; ! case LT: ! op0 = rs6000_compare_op0; ! op1 = rs6000_compare_op1; ! temp = operands[2]; operands[2] = operands[3]; operands[3] = temp; ! break; ! default: ! FAIL; ! } ! if (GET_MODE (rs6000_compare_op0) == DFmode) ! { ! temp = gen_reg_rtx (DFmode); ! emit_insn (gen_subdf3 (temp, op0, op1)); ! emit_insn (gen_fseldfdf4 (operands[0], temp, operands[2], operands[3])); ! if (code == EQ) ! { ! emit_insn (gen_negdf2 (temp, temp)); ! emit_insn (gen_fseldfdf4 (operands[0], temp, operands[0], operands[3])); ! } ! } else ! { ! temp = gen_reg_rtx (SFmode); ! emit_insn (gen_subsf3 (temp, op0, op1)); ! emit_insn (gen_fselsfdf4 (operands[0], temp, operands[2], operands[3])); ! if (code == EQ) ! { ! emit_insn (gen_negsf2 (temp, temp)); ! emit_insn (gen_fselsfdf4 (operands[0], temp, operands[0], operands[3])); ! } ! } ! DONE; }") ! (define_insn "fseldfdf4" [(set (match_operand:DF 0 "gpc_reg_operand" "=f") (if_then_else:DF (ge (match_operand:DF 1 "gpc_reg_operand" "f") ! (const_int 0)) (match_operand:DF 2 "gpc_reg_operand" "f") (match_operand:DF 3 "gpc_reg_operand" "f")))] "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" "fsel %0,%1,%2,%3" [(set_attr "type" "fp")]) ! (define_insn "fselsfdf4" [(set (match_operand:DF 0 "gpc_reg_operand" "=f") (if_then_else:DF (ge (match_operand:SF 1 "gpc_reg_operand" "f") ! (const_int 0)) (match_operand:DF 2 "gpc_reg_operand" "f") (match_operand:DF 3 "gpc_reg_operand" "f")))] "TARGET_PPC_GFXOPT" --- 5006,5031 ---- "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" " { ! if (rs6000_emit_cmove (operands[0], operands[1], operands[2], operands[3])) ! DONE; else ! FAIL; }") ! (define_insn "*fseldfdf4" [(set (match_operand:DF 0 "gpc_reg_operand" "=f") (if_then_else:DF (ge (match_operand:DF 1 "gpc_reg_operand" "f") ! (match_operand:DF 4 "zero_fp_constant" "F")) (match_operand:DF 2 "gpc_reg_operand" "f") (match_operand:DF 3 "gpc_reg_operand" "f")))] "TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT" "fsel %0,%1,%2,%3" [(set_attr "type" "fp")]) ! (define_insn "*fselsfdf4" [(set (match_operand:DF 0 "gpc_reg_operand" "=f") (if_then_else:DF (ge (match_operand:SF 1 "gpc_reg_operand" "f") ! (match_operand:SF 4 "zero_fp_constant" "F")) (match_operand:DF 2 "gpc_reg_operand" "f") (match_operand:DF 3 "gpc_reg_operand" "f")))] "TARGET_PPC_GFXOPT" *************** *** 5719,5725 **** (define_expand "adddi3" [(set (match_operand:DI 0 "gpc_reg_operand" "") (plus:DI (match_operand:DI 1 "gpc_reg_operand" "") ! (match_operand:DI 2 "reg_or_arith_cint_operand" "")))] "" " { --- 5571,5577 ---- (define_expand "adddi3" [(set (match_operand:DI 0 "gpc_reg_operand" "") (plus:DI (match_operand:DI 1 "gpc_reg_operand" "") ! (match_operand:DI 2 "reg_or_add_cint64_operand" "")))] "" " { *************** *** 5735,5747 **** rtx tmp = ((no_new_pseudos || rtx_equal_p (operands[0], operands[1])) ? operands[0] : gen_reg_rtx (DImode)); ! HOST_WIDE_INT low = INTVAL (operands[2]) & 0xffff; ! HOST_WIDE_INT high = INTVAL (operands[2]) & (~ (HOST_WIDE_INT) 0xffff); ! if (low & 0x8000) ! high += 0x10000, low |= ((HOST_WIDE_INT) -1) << 16; ! emit_insn (gen_adddi3 (tmp, operands[1], GEN_INT (high))); emit_insn (gen_adddi3 (operands[0], tmp, GEN_INT (low))); DONE; } --- 5587,5603 ---- rtx tmp = ((no_new_pseudos || rtx_equal_p (operands[0], operands[1])) ? operands[0] : gen_reg_rtx (DImode)); ! HOST_WIDE_INT val = INTVAL (operands[2]); ! HOST_WIDE_INT low = (val & 0xffff) - 2 * (val & 0x8000); ! HOST_WIDE_INT rest = trunc_int_for_mode (val - low, DImode); ! if (!CONST_OK_FOR_LETTER_P (rest, 'L')) ! FAIL; ! /* The ordering here is important for the prolog expander. ! When space is allocated from the stack, adding 'low' first may ! produce a temporary deallocation (which would be bad). */ ! emit_insn (gen_adddi3 (tmp, operands[1], GEN_INT (rest))); emit_insn (gen_adddi3 (operands[0], tmp, GEN_INT (low))); DONE; } *************** *** 5834,5847 **** (set (match_dup 0) (plus:DI (match_dup 0) (match_dup 4)))] " { ! HOST_WIDE_INT low = INTVAL (operands[2]) & 0xffff; ! HOST_WIDE_INT high = INTVAL (operands[2]) & (~ (HOST_WIDE_INT) 0xffff); ! ! if (low & 0x8000) ! high+=0x10000, low |= ((HOST_WIDE_INT) -1) << 16; - operands[3] = GEN_INT (high); operands[4] = GEN_INT (low); }") (define_insn "one_cmpldi2" --- 5690,5711 ---- (set (match_dup 0) (plus:DI (match_dup 0) (match_dup 4)))] " { ! HOST_WIDE_INT val = INTVAL (operands[2]); ! HOST_WIDE_INT low = (val & 0xffff) - 2 * (val & 0x8000); ! HOST_WIDE_INT rest = trunc_int_for_mode (val - low, DImode); operands[4] = GEN_INT (low); + if (CONST_OK_FOR_LETTER_P (rest, 'L')) + operands[3] = GEN_INT (rest); + else if (! no_new_pseudos) + { + operands[3] = gen_reg_rtx (DImode); + emit_move_insn (operands[3], operands[2]); + emit_insn (gen_adddi3 (operands[0], operands[1], operands[3])); + DONE; + } + else + FAIL; }") (define_insn "one_cmpldi2" *************** *** 5970,5976 **** (define_expand "subdi3" [(set (match_operand:DI 0 "gpc_reg_operand" "") (minus:DI (match_operand:DI 1 "reg_or_short_operand" "") ! (match_operand:DI 2 "reg_or_arith_cint_operand" "")))] "" " { --- 5834,5840 ---- (define_expand "subdi3" [(set (match_operand:DI 0 "gpc_reg_operand" "") (minus:DI (match_operand:DI 1 "reg_or_short_operand" "") ! (match_operand:DI 2 "reg_or_sub_cint64_operand" "")))] "" " { *************** *** 6129,6134 **** --- 5993,5999 ---- " { if (GET_CODE (operands[2]) == CONST_INT + && INTVAL (operands[2]) > 0 && exact_log2 (INTVAL (operands[2])) >= 0) ; else *************** *** 6142,6152 **** "TARGET_POWERPC64" " { ! int i = exact_log2 (INTVAL (operands[2])); rtx temp1; rtx temp2; ! if (GET_CODE (operands[2]) != CONST_INT || i < 0) FAIL; temp1 = gen_reg_rtx (DImode); --- 6007,6019 ---- "TARGET_POWERPC64" " { ! int i; rtx temp1; rtx temp2; ! if (GET_CODE (operands[2]) != CONST_INT ! || INTVAL (operands[2]) <= 0 ! || (i = exact_log2 (INTVAL (operands[2]))) < 0) FAIL; temp1 = gen_reg_rtx (DImode); *************** *** 6162,6168 **** [(set (match_operand:DI 0 "gpc_reg_operand" "=r") (div:DI (match_operand:DI 1 "gpc_reg_operand" "r") (match_operand:DI 2 "const_int_operand" "N")))] ! "TARGET_POWERPC64 && exact_log2 (INTVAL (operands[2])) >= 0" "sradi %0,%1,%p2\;addze %0,%0" [(set_attr "length" "8")]) --- 6029,6036 ---- [(set (match_operand:DI 0 "gpc_reg_operand" "=r") (div:DI (match_operand:DI 1 "gpc_reg_operand" "r") (match_operand:DI 2 "const_int_operand" "N")))] ! "TARGET_POWERPC64 && INTVAL (operands[2]) > 0 ! && exact_log2 (INTVAL (operands[2])) >= 0" "sradi %0,%1,%p2\;addze %0,%0" [(set_attr "length" "8")]) *************** *** 6172,6178 **** (match_operand:DI 2 "const_int_operand" "N,N")) (const_int 0))) (clobber (match_scratch:DI 3 "=r,r"))] ! "TARGET_POWERPC64 && exact_log2 (INTVAL (operands[2])) >= 0" "@ sradi %3,%1,%p2\;addze. %3,%3 #" --- 6040,6047 ---- (match_operand:DI 2 "const_int_operand" "N,N")) (const_int 0))) (clobber (match_scratch:DI 3 "=r,r"))] ! "TARGET_POWERPC64 && INTVAL (operands[2]) > 0 ! && exact_log2 (INTVAL (operands[2])) >= 0" "@ sradi %3,%1,%p2\;addze. %3,%3 #" *************** *** 6185,6191 **** (match_operand:DI 2 "const_int_operand" "")) (const_int 0))) (clobber (match_scratch:DI 3 ""))] ! "TARGET_POWERPC64 && exact_log2 (INTVAL (operands[2])) >= 0 && reload_completed" [(set (match_dup 3) (div:DI (match_dup 1) (match_dup 2))) (set (match_dup 0) --- 6054,6061 ---- (match_operand:DI 2 "const_int_operand" "")) (const_int 0))) (clobber (match_scratch:DI 3 ""))] ! "TARGET_POWERPC64 && INTVAL (operands[2]) > 0 ! && exact_log2 (INTVAL (operands[2])) >= 0 && reload_completed" [(set (match_dup 3) (div:DI (match_dup 1) (match_dup 2))) (set (match_dup 0) *************** *** 6200,6206 **** (const_int 0))) (set (match_operand:DI 0 "gpc_reg_operand" "=r,r") (div:DI (match_dup 1) (match_dup 2)))] ! "TARGET_POWERPC64 && exact_log2 (INTVAL (operands[2])) >= 0" "@ sradi %0,%1,%p2\;addze. %0,%0 #" --- 6070,6077 ---- (const_int 0))) (set (match_operand:DI 0 "gpc_reg_operand" "=r,r") (div:DI (match_dup 1) (match_dup 2)))] ! "TARGET_POWERPC64 && INTVAL (operands[2]) > 0 ! && exact_log2 (INTVAL (operands[2])) >= 0" "@ sradi %0,%1,%p2\;addze. %0,%0 #" *************** *** 6214,6220 **** (const_int 0))) (set (match_operand:DI 0 "gpc_reg_operand" "") (div:DI (match_dup 1) (match_dup 2)))] ! "TARGET_POWERPC64 && exact_log2 (INTVAL (operands[2])) >= 0 && reload_completed" [(set (match_dup 0) (div:DI (match_dup 1) (match_dup 2))) (set (match_dup 3) --- 6085,6092 ---- (const_int 0))) (set (match_operand:DI 0 "gpc_reg_operand" "") (div:DI (match_dup 1) (match_dup 2)))] ! "TARGET_POWERPC64 && INTVAL (operands[2]) > 0 ! && exact_log2 (INTVAL (operands[2])) >= 0 && reload_completed" [(set (match_dup 0) (div:DI (match_dup 1) (match_dup 2))) (set (match_dup 3) diff -Nrc3pad gcc-3.0/gcc/config/rs6000/rtems.h gcc-3.0.1/gcc/config/rs6000/rtems.h *** gcc-3.0/gcc/config/rs6000/rtems.h Tue Jan 9 12:46:11 2001 --- gcc-3.0.1/gcc/config/rs6000/rtems.h Thu Aug 16 17:21:00 2001 *************** Boston, MA 02111-1307, USA. */ *** 31,34 **** #endif #undef STARTFILE_DEFAULT_SPEC ! #define STARTFILE_DEFAULT_SPEC "crt0.o%s" --- 31,40 ---- #endif #undef STARTFILE_DEFAULT_SPEC ! #define STARTFILE_DEFAULT_SPEC "ecrti.o%s crt0.o%s" ! ! #undef ENDFILE_DEFAULT_SPEC ! #define ENDFILE_DEFAULT_SPEC "ecrtn.o%s" ! ! /* Get machine-independent configuration parameters for RTEMS. */ ! #include diff -Nrc3pad gcc-3.0/gcc/config/s390/fixdfdi.h gcc-3.0.1/gcc/config/s390/fixdfdi.h *** gcc-3.0/gcc/config/s390/fixdfdi.h Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/config/s390/fixdfdi.h Fri Aug 3 11:50:11 2001 *************** *** 0 **** --- 1,301 ---- + /* Definitions of target machine for GNU compiler, for IBM S/390 + Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. + Contributed by Hartmut Penner (hpenner@de.ibm.com) and + Ulrich Weigand (uweigand@de.ibm.com). + + This file is part of GNU CC. + + GNU CC is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GNU CC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU CC; see the file COPYING. If not, write to + the Free Software Foundation, 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + + #ifdef L_fixunsdfdi + #define EXPD(fp) (((fp.l.upper) >> 20) & 0x7FF) + #define EXCESSD 1022 + #define SIGNBIT 0x80000000 + #define SIGND(fp) ((fp.l.upper) & SIGNBIT) + #define MANTD_LL(fp) ((fp.ll & (HIDDEND_LL-1)) | HIDDEND_LL) + #define FRACD_LL(fp) (fp.ll & (HIDDEND_LL-1)) + #define HIDDEND_LL ((UDItype_x)1 << 52) + + typedef int DItype_x __attribute__ ((mode (DI))); + typedef unsigned int UDItype_x __attribute__ ((mode (DI))); + typedef int SItype_x __attribute__ ((mode (SI))); + typedef unsigned int USItype_x __attribute__ ((mode (SI))); + + union double_long { + double d; + struct { + SItype_x upper; + USItype_x lower; + } l; + UDItype_x ll; + }; + + + /* convert double to unsigned int */ + UDItype_x + __fixunsdfdi (double a1) + { + register union double_long dl1; + register int exp; + register UDItype_x l; + + dl1.d = a1; + + /* +/- 0, denormalized, negativ */ + + if (!EXPD (dl1) || SIGND(dl1)) + return 0; + + exp = EXPD (dl1) - EXCESSD - 53; + + /* number < 1 */ + + if (exp < -53) + return 0; + + /* NaN */ + + if ((EXPD(dl1) == 0x7ff) && (FRACD_LL(dl1) != 0)) /* NaN */ + return 0x0ULL; + + /* Number big number & + inf */ + + if (exp >= 12) { + return 0xFFFFFFFFFFFFFFFFULL; + } + + l = MANTD_LL(dl1); + + /* shift down until exp < 12 or l = 0 */ + if (exp > 0) + l <<= exp; + else + l >>= -exp; + + return l; + } + #define __fixunsdfdi ___fixunsdfdi + #endif + #undef L_fixunsdfdi + + #ifdef L_fixdfdi + #define EXPD(fp) (((fp.l.upper) >> 20) & 0x7FF) + #define EXCESSD 1022 + #define SIGNBIT 0x80000000 + #define SIGND(fp) ((fp.l.upper) & SIGNBIT) + #define MANTD_LL(fp) ((fp.ll & (HIDDEND_LL-1)) | HIDDEND_LL) + #define FRACD_LL(fp) (fp.ll & (HIDDEND_LL-1)) + #define HIDDEND_LL ((UDItype_x)1 << 52) + + typedef int DItype_x __attribute__ ((mode (DI))); + typedef unsigned int UDItype_x __attribute__ ((mode (DI))); + typedef int SItype_x __attribute__ ((mode (SI))); + typedef unsigned int USItype_x __attribute__ ((mode (SI))); + + union double_long { + double d; + struct { + SItype_x upper; + USItype_x lower; + } l; + UDItype_x ll; + }; + + /* convert double to int */ + DItype_x + __fixdfdi (double a1) + { + register union double_long dl1; + register int exp; + register DItype_x l; + + dl1.d = a1; + + /* +/- 0, denormalized */ + + if (!EXPD (dl1)) + return 0; + + exp = EXPD (dl1) - EXCESSD - 53; + + /* number < 1 */ + + if (exp < -53) + return 0; + + /* NaN */ + + if ((EXPD(dl1) == 0x7ff) && (FRACD_LL(dl1) != 0)) /* NaN */ + return 0x8000000000000000ULL; + + /* Number big number & +/- inf */ + + if (exp >= 11) { + l = (long long)1<<63; + if (!SIGND(dl1)) + l--; + return l; + } + + l = MANTD_LL(dl1); + + /* shift down until exp < 12 or l = 0 */ + if (exp > 0) + l <<= exp; + else + l >>= -exp; + + return (SIGND (dl1) ? -l : l); + } + #define __fixdfdi ___fixdfdi + #endif + #undef L_fixdfdi + + #ifdef L_fixunssfdi + #define EXP(fp) (((fp.l) >> 23) & 0xFF) + #define EXCESS 126 + #define SIGNBIT 0x80000000 + #define SIGN(fp) ((fp.l) & SIGNBIT) + #define HIDDEN (1 << 23) + #define MANT(fp) (((fp.l) & 0x7FFFFF) | HIDDEN) + #define FRAC(fp) ((fp.l) & 0x7FFFFF) + + typedef int DItype_x __attribute__ ((mode (DI))); + typedef unsigned int UDItype_x __attribute__ ((mode (DI))); + typedef int SItype_x __attribute__ ((mode (SI))); + typedef unsigned int USItype_x __attribute__ ((mode (SI))); + + union float_long + { + float f; + USItype_x l; + }; + + /* convert float to unsigned int */ + UDItype_x + __fixunssfdi (float a1) + { + register union float_long fl1; + register int exp; + register UDItype_x l; + + fl1.f = a1; + + /* +/- 0, denormalized, negativ */ + + if (!EXP (fl1) || SIGN(fl1)) + return 0; + + exp = EXP (fl1) - EXCESS - 24; + + /* number < 1 */ + + if (exp < -24) + return 0; + + /* NaN */ + + if ((EXP(fl1) == 0xff) && (FRAC(fl1) != 0)) /* NaN */ + return 0x0ULL; + + /* Number big number & + inf */ + + if (exp >= 41) { + return 0xFFFFFFFFFFFFFFFFULL; + } + + l = MANT(fl1); + + if (exp > 0) + l <<= exp; + else + l >>= -exp; + + return l; + } + #define __fixunssfdi ___fixunssfdi + #endif + #undef L_fixunssfdi + + #ifdef L_fixsfdi + #define EXP(fp) (((fp.l) >> 23) & 0xFF) + #define EXCESS 126 + #define SIGNBIT 0x80000000 + #define SIGN(fp) ((fp.l) & SIGNBIT) + #define HIDDEN (1 << 23) + #define MANT(fp) (((fp.l) & 0x7FFFFF) | HIDDEN) + #define FRAC(fp) ((fp.l) & 0x7FFFFF) + + typedef int DItype_x __attribute__ ((mode (DI))); + typedef unsigned int UDItype_x __attribute__ ((mode (DI))); + typedef int SItype_x __attribute__ ((mode (SI))); + typedef unsigned int USItype_x __attribute__ ((mode (SI))); + + union float_long + { + float f; + USItype_x l; + }; + + /* convert double to int */ + DItype_x + __fixsfdi (float a1) + { + register union float_long fl1; + register int exp; + register DItype_x l; + + fl1.f = a1; + + /* +/- 0, denormalized */ + + if (!EXP (fl1)) + return 0; + + exp = EXP (fl1) - EXCESS - 24; + + /* number < 1 */ + + if (exp < -24) + return 0; + + /* NaN */ + + if ((EXP(fl1) == 0xff) && (FRAC(fl1) != 0)) /* NaN */ + return 0x8000000000000000ULL; + + /* Number big number & +/- inf */ + + if (exp >= 40) { + l = (long long)1<<63; + if (!SIGN(fl1)) + l--; + return l; + } + + l = MANT(fl1); + + if (exp > 0) + l <<= exp; + else + l >>= -exp; + + return (SIGN (fl1) ? -l : l); + } + #define __fixsfdi ___fixsfdi + #endif + #undef L_fixsfdi + diff -Nrc3pad gcc-3.0/gcc/config/s390/linux.h gcc-3.0.1/gcc/config/s390/linux.h *** gcc-3.0/gcc/config/s390/linux.h Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/config/s390/linux.h Fri Aug 3 11:50:11 2001 *************** *** 0 **** --- 1,381 ---- + /* Definitions for Linux for S/390. + Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. + Contributed by Hartmut Penner (hpenner@de.ibm.com) and + Ulrich Weigand (uweigand@de.ibm.com). + + This file is part of GNU CC. + + GNU CC is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GNU CC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU CC; see the file COPYING. If not, write to + the Free Software Foundation, 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + + #ifndef _LINUX_H + #define _LINUX_H + + #undef SIZE_TYPE /* use default */ + + #undef TARGET_VERSION + #define TARGET_VERSION fprintf (stderr, " (Linux for S/390)"); + + /* Names to predefine in the preprocessor for this target machine. */ + + #define CPP_PREDEFINES "-Dlinux -Asystem(linux) -Acpu(s390) -Amachine(s390) -D__s390__ -Asystem(unix) -Dunix -D__ELF__" + + /* + * Caller save not (always) working in gcc-2.95.2 + */ + + #undef CC1_SPEC + #define CC1_SPEC "-fno-caller-saves" + #define CC1PLUS_SPEC "-fno-caller-saves" + + #undef LINK_SPEC + #ifdef CROSS_COMPILE + #define LINK_SPEC "-m elf_s390 %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker /lib/ld.so.1 \ + -rpath-link=/usr/local/s390-ibm-linux/lib}} \ + %{static:-static}}}" + #else + #define LINK_SPEC "-m elf_s390 %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ + %{static:-static}}}" + #endif + + /* Need to define this. Otherwise define to BITS_PER_WORD in cexp.c. + But BITS_PER_WORD depends on target flags, which are not defined in + cexpc.c. */ + + #undef WCHAR_TYPE + #define WCHAR_TYPE "int" + #undef WCHAR_TYPE_SIZE + #define WCHAR_TYPE_SIZE 32 + #define MAX_LONG_TYPE_SIZE 64 + + /* Character to start a comment. */ + + #define ASM_COMMENT_START "#" + + + /* Assembler pseudos to introduce constants of various size. */ + + #define ASM_SHORT "\t.word" + #define ASM_LONG "\t.long" + #define ASM_QUAD "\t.quad" + #define ASM_DOUBLE "\t.double" + + + /* Prefix for internally generated assembler labels. */ + #define LPREFIX ".L" + + #define ASM_OUTPUT_LABELREF(FILE, NAME) \ + fprintf (FILE, "%s", NAME); + + + /* This is how to output the definition of a user-level label named NAME, + such as the label on a static function or variable NAME. */ + + #undef ASM_OUTPUT_LABEL + #define ASM_OUTPUT_LABEL(FILE, NAME) \ + (assemble_name (FILE, NAME), fputs (":\n", FILE)) + + /* This is how to output an assembler line defining a `double' constant. */ + + + /* This is how to output an assembler line defining a `double' constant. */ + + #undef ASM_OUTPUT_DOUBLE + #define ASM_OUTPUT_DOUBLE(FILE, VALUE) \ + { \ + long t[2]; \ + REAL_VALUE_TO_TARGET_DOUBLE ((VALUE), t); \ + fprintf (FILE, "\t.long 0x%lx\n\t.long 0x%lx\n", \ + t[0] & 0xffffffff, t[1] & 0xffffffff); \ + } + + /* This is how to output an assembler line defining a `float' constant. */ + + #undef ASM_OUTPUT_FLOAT + #define ASM_OUTPUT_FLOAT(FILE, VALUE) \ + { \ + long t; \ + REAL_VALUE_TO_TARGET_SINGLE ((VALUE), t); \ + fprintf (FILE, "\t.long 0x%lx\n", t & 0xffffffff); \ + } + + /* Store in OUTPUT a string (made with alloca) containing + an assembler-name for a local static variable named NAME. + LABELNO is an integer which is different for each call. */ + + #undef ASM_FORMAT_PRIVATE_NAME + #define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO) \ + ( (OUTPUT) = (char *) alloca (strlen ((NAME)) + 10), \ + sprintf ((OUTPUT), "%s.%d", (NAME), (LABELNO))) + + + #define ASM_OUTPUT_DOUBLE_INT(FILE, VALUE) \ + do { fprintf (FILE, "%s\t", ASM_QUAD); \ + output_addr_const (FILE, (VALUE)); \ + putc ('\n',FILE); \ + } while (0) + + + /* This is how to output an assembler line defining an `int' constant. */ + + #undef ASM_OUTPUT_INT + #define ASM_OUTPUT_INT(FILE, VALUE) \ + do { fprintf (FILE, "%s\t", ASM_LONG); \ + output_addr_const (FILE, (VALUE)); \ + putc ('\n',FILE); \ + } while (0) + + /* Likewise for `char' and `short' constants. + is this supposed to do align too?? */ + + #define ASM_OUTPUT_SHORT(FILE, VALUE) \ + ( fprintf (FILE, "%s ", ASM_SHORT), \ + output_addr_const (FILE, (VALUE)), \ + putc ('\n',FILE)) + + #define ASM_OUTPUT_CHAR(FILE, VALUE) \ + ( fprintf (FILE, "%s ", ASM_BYTE_OP), \ + output_addr_const (FILE, (VALUE)), \ + putc ('\n', FILE)) + + /* This is how to output an assembler line for a numeric constant byte. */ + + #define ASM_OUTPUT_BYTE(FILE, VALUE) \ + fprintf ((FILE), "%s 0x%x\n", ASM_BYTE_OP, (VALUE)) + + /* internal macro to output long */ + #define _ASM_OUTPUT_LONG(FILE, VALUE) \ + fprintf (FILE, "\t.long\t0x%lX\n", VALUE); + + + /* This is how to output an element of a case-vector that is absolute. */ + + #define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \ + fprintf (FILE, "%s\t%s%d\n", TARGET_64BIT?ASM_QUAD:ASM_LONG, \ + LPREFIX, VALUE) + + /* This is how to output an element of a case-vector that is relative. */ + + #define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \ + fprintf (FILE, "%s\t%s%d-%s%d\n", TARGET_64BIT?ASM_QUAD:ASM_LONG, \ + LPREFIX, VALUE, LPREFIX, REL) + + + /* Define the parentheses used to group arithmetic operations + in assembler code. */ + + #undef ASM_OPEN_PAREN + #undef ASM_CLOSE_PAREN + #define ASM_OPEN_PAREN "" + #define ASM_CLOSE_PAREN "" + + + + /* This is how to output an assembler line + that says to advance the location counter + to a multiple of 2**LOG bytes. */ + + #define ASM_OUTPUT_ALIGN(FILE, LOG) \ + if ((LOG)!=0) fprintf ((FILE), "\t.align %d\n", 1<<(LOG)) + + /* This is how to output an assembler line + that says to advance the location counter by SIZE bytes. */ + + #undef ASM_OUTPUT_SKIP + #define ASM_OUTPUT_SKIP(FILE, SIZE) \ + fprintf ((FILE), "\t.set .,.+%u\n", (SIZE)) + + /* This is how to output an assembler line + that says to advance the location counter + to a multiple of 2**LOG bytes. */ + + #define ASM_OUTPUT_ALIGN(FILE, LOG) \ + if ((LOG)!=0) fprintf ((FILE), "\t.align %d\n", 1<<(LOG)) + + /* This is how to output an assembler line + that says to advance the location counter by SIZE bytes. */ + + #define ASM_OUTPUT_SKIP(FILE, SIZE) \ + fprintf ((FILE), "\t.set .,.+%u\n", (SIZE)) + + /* The routine used to output sequences of byte values. We use a special + version of this for most svr4 targets because doing so makes the + generated assembly code more compact (and thus faster to assemble) + as well as more readable. Note that if we find subparts of the + character sequence which end with NUL (and which are shorter than + STRING_LIMIT) we output those using ASM_OUTPUT_LIMITED_STRING. */ + + #undef ASM_OUTPUT_ASCII + #define ASM_OUTPUT_ASCII(FILE, STR, LENGTH) \ + do { \ + register unsigned char *_ascii_bytes = (unsigned char *) (STR); \ + register unsigned char *limit = _ascii_bytes + (LENGTH); \ + register unsigned bytes_in_chunk = 0; \ + for (; _ascii_bytes < limit; _ascii_bytes++) \ + { \ + register unsigned char *p; \ + if (bytes_in_chunk >= 64) \ + { \ + fputc ('\n', (FILE)); \ + bytes_in_chunk = 0; \ + } \ + for (p = _ascii_bytes; p < limit && *p != '\0'; p++) \ + continue; \ + if (p < limit && (p - _ascii_bytes) <= STRING_LIMIT) \ + { \ + if (bytes_in_chunk > 0) \ + { \ + fputc ('\n', (FILE)); \ + bytes_in_chunk = 0; \ + } \ + ASM_OUTPUT_LIMITED_STRING ((FILE), _ascii_bytes); \ + _ascii_bytes = p; \ + } \ + else \ + { \ + if (bytes_in_chunk == 0) \ + fprintf ((FILE), "%s\t", ASM_BYTE_OP); \ + else \ + fputc (',', (FILE)); \ + fprintf ((FILE), "0x%02x", *_ascii_bytes); \ + bytes_in_chunk += 5; \ + } \ + } \ + if (bytes_in_chunk > 0) \ + fprintf ((FILE), "\n"); \ + } while (0) + + /* Output before read-only data. */ + + #define TEXT_SECTION_ASM_OP ".text" + + /* Output before writable (initialized) data. */ + + #define DATA_SECTION_ASM_OP ".data" + + /* Output before writable (uninitialized) data. */ + + #define BSS_SECTION_ASM_OP ".bss" + + /* This is how to output a command to make the user-level label named NAME + defined for reference from other files. */ + + #define ASM_GLOBALIZE_LABEL(FILE, NAME) \ + (fputs (".globl ", FILE), assemble_name (FILE, NAME), fputs ("\n", FILE)) + + #define DBX_REGISTER_NUMBER(REGNO) (REGNO) + + /* + * This macro generates the assembly code for function entry. + */ + + #define FUNCTION_PROLOGUE(FILE, LSIZE) s390_function_prologue (FILE, LSIZE) + + /* This macro generates the assembly code for function exit, on machines + that need it. If FUNCTION_EPILOGUE is not defined then individual + return instructions are generated for each return statement. Args are + same as for FUNCTION_PROLOGUE. + + The function epilogue should not depend on the current stack pointer! + It should use the frame pointer only. This is mandatory because + of alloca; we also take advantage of it to omit stack adjustments + before returning. */ + + #define FUNCTION_EPILOGUE(FILE, LSIZE) s390_function_epilogue(FILE, LSIZE) + + /* Select section for constant in constant pool. + We are in the right section. + undef for 64 bit mode (linux64.h). + */ + + #undef SELECT_RTX_SECTION + #define SELECT_RTX_SECTION(MODE, X) + + + /* Output code to add DELTA to the first argument, and then jump to FUNCTION. + Used for C++ multiple inheritance. */ + #define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION) \ + do { \ + if (TARGET_64BIT) \ + { \ + if (flag_pic) \ + { \ + fprintf (FILE, "\tlarl 1,0f\n"); \ + fprintf (FILE, "\tagf %d,0(1)\n", \ + aggregate_value_p (TREE_TYPE \ + (TREE_TYPE (FUNCTION))) ? 3 :2 ); \ + fprintf (FILE, "\tlarl 1,"); \ + assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \ + fprintf (FILE, "@GOTENT\n"); \ + fprintf (FILE, "\tlg 1,0(1)\n"); \ + fprintf (FILE, "\tbr 1\n"); \ + fprintf (FILE, "0:\t.long %d\n",DELTA); \ + } \ + else \ + { \ + fprintf (FILE, "\tlarl 1,0f\n"); \ + fprintf (FILE, "\tagf %d,0(1)\n", \ + aggregate_value_p (TREE_TYPE \ + (TREE_TYPE (FUNCTION))) ? 3 :2 ); \ + fprintf (FILE, "\tjg "); \ + assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \ + fprintf (FILE, "\n"); \ + fprintf (FILE, "0:\t.long %d\n",DELTA); \ + } \ + } \ + else \ + { \ + if (flag_pic) \ + { \ + fprintf (FILE, "\tbras 1,0f\n"); \ + fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_-.\n"); \ + fprintf (FILE, "\t.long "); \ + assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \ + fprintf (FILE, "@GOT\n"); \ + fprintf (FILE, "\t.long %d\n",DELTA); \ + fprintf (FILE, "0:\tal %d,8(1)\n", \ + aggregate_value_p (TREE_TYPE \ + (TREE_TYPE (FUNCTION))) ? 3 : 2 ); \ + fprintf (FILE, "\tl 0,4(1)\n"); \ + fprintf (FILE, "\tal 1,0(1)\n"); \ + fprintf (FILE, "\talr 1,0\n"); \ + fprintf (FILE, "\tl 1,0(1)\n"); \ + fprintf (FILE, "\tbr 1\n"); \ + } else { \ + fprintf (FILE, "\tbras 1,0f\n"); \ + fprintf (FILE, "\t.long "); \ + assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \ + fprintf (FILE, "-.\n"); \ + fprintf (FILE, "\t.long %d\n",DELTA); \ + fprintf (FILE, "0:\tal %d,4(1)\n", \ + aggregate_value_p (TREE_TYPE \ + (TREE_TYPE (FUNCTION))) ? 3 : 2 ); \ + fprintf (FILE, "\tal 1,0(1)\n"); \ + fprintf (FILE, "\tbr 1\n"); \ + } \ + } \ + } while (0) + + #endif diff -Nrc3pad gcc-3.0/gcc/config/s390/linux64.h gcc-3.0.1/gcc/config/s390/linux64.h *** gcc-3.0/gcc/config/s390/linux64.h Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/config/s390/linux64.h Tue Aug 14 16:04:36 2001 *************** *** 0 **** --- 1,80 ---- + /* Definitions for Linux for S/390 64bit. + Copyright (C) 2000 Free Software Foundation, Inc. + Contributed by Hartmut Penner + + This file is part of GNU CC. + + GNU CC is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GNU CC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU CC; see the file COPYING. If not, write to + the Free Software Foundation, 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + + #ifndef _LINUX64_H + #define _LINUX64_H + + #undef PTRDIFF_TYPE + #define PTRDIFF_TYPE "long int" + + #undef TARGET_DEFAULT + #define TARGET_DEFAULT 0x13 + + #undef TARGET_VERSION + #define TARGET_VERSION fprintf (stderr, " (Linux for S/390 zSeries 64 bit)"); + + /* Names to predefine in the preprocessor for this target machine. */ + + #undef CPP_PREDEFINES + #define CPP_PREDEFINES "-Dlinux -Asystem(linux) -Acpu(s390) -Amachine(s390) -D__s390__ -D__s390x__ -Asystem(unix) -Dunix -D__ELF__" + + + #undef LINK_SPEC + #ifdef CROSS_COMPILE + #define LINK_SPEC "-m elf64_s390 %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker /lib/ld64.so.1 \ + -rpath-link=/usr/local/s390x-ibm-linux/lib}} \ + %{static:-static}}}" + #else + #define LINK_SPEC "-m elf64_s390 %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker /lib/ld64.so.1}} \ + %{static:-static}}}" + #endif + + #undef INT_ASM_OP + #define INT_ASM_OP "\t.quad\t" + + #undef PROMOTE_PROTOTYPES + #undef MASK_RETURN_ADDR + #undef SELECT_SECTION + + /* With 64 bit new linkage for floating point registers. */ + #undef CALL_USED_REGISTERS + #define CALL_USED_REGISTERS \ + { 1, 1, 1, 1, \ + 1, 1, 0, 0, \ + 0, 0, 0, 0, \ + 0, 1, 1, 1, \ + 1, 1, 1, 1, \ + 1, 1, 1, 1, \ + 0, 0, 0, 0, \ + 0, 0, 0, 0, \ + 1, 1 } + + #endif diff -Nrc3pad gcc-3.0/gcc/config/s390/s390-protos.h gcc-3.0.1/gcc/config/s390/s390-protos.h *** gcc-3.0/gcc/config/s390/s390-protos.h Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/config/s390/s390-protos.h Fri Aug 3 11:50:11 2001 *************** *** 0 **** --- 1,85 ---- + /* Definitions of target machine for GNU compiler, for IBM S/390. + Copyright (C) 2000 Free Software Foundation, Inc. + Contributed by Hartmut Penner (hpenner@de.ibm.com) + + This file is part of GNU CC. + + GNU CC is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GNU CC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU CC; see the file COPYING. If not, write to + the Free Software Foundation, 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + + /* Declare functions in s390.c and linux.c */ + + #ifdef RTX_CODE + + #ifdef TREE_CODE + extern void init_cumulative_args PARAMS ((CUMULATIVE_ARGS *, tree, rtx, int)); + extern void s390_va_start PARAMS ((int, tree, rtx)); + + #endif /* TREE_CODE */ + + extern int fp_operand PARAMS ((rtx, enum machine_mode)); + extern int s_operand PARAMS ((rtx, enum machine_mode)); + extern int r_or_im8_operand PARAMS ((rtx, enum machine_mode)); + extern int r_or_s_operand PARAMS ((rtx, enum machine_mode)); + extern int r_or_s_or_im8_operand PARAMS ((rtx, enum machine_mode)); + extern int r_or_x_or_im16_operand PARAMS ((rtx, enum machine_mode)); + extern int bras_sym_operand PARAMS ((rtx, enum machine_mode)); + extern int dead_p PARAMS ((rtx, rtx)); + extern void print_operand PARAMS ((FILE *, rtx, char)); + extern void print_operand_address PARAMS ((FILE *, rtx)); + extern int legitimate_pic_operand_p PARAMS ((rtx)); + extern int legitimate_constant_p PARAMS ((rtx)); + + extern int unsigned_comparison_operator PARAMS ((rtx)); + extern int unsigned_jump_follows_p PARAMS ((rtx)); + + extern void update_cc PARAMS ((rtx, rtx)); + + extern void s390_initialize_trampoline PARAMS ((rtx, rtx, rtx)); + extern void s390_output_symbolic_const PARAMS ((FILE *, rtx)); + extern int s390_adjust_cost PARAMS ((rtx, rtx, rtx, int)); + + extern int s390_stop_dump_lit_p PARAMS ((rtx)); + extern void s390_dump_literal_pool PARAMS ((rtx, rtx)); + extern void s390_expand_eh_epilogue PARAMS ((rtx, rtx, rtx)); + extern void s390_asm_output_external_libcall PARAMS ((FILE *, rtx)); + + #endif /* RTX_CODE */ + + #ifdef TREE_CODE + extern void s390_function_arg_advance PARAMS ((CUMULATIVE_ARGS *, + enum machine_mode, + tree, int)); + extern struct rtx_def *s390_function_arg PARAMS ((CUMULATIVE_ARGS *, + enum machine_mode, tree, int)); + extern int s390_function_arg_partial_nregs PARAMS ((CUMULATIVE_ARGS *, + enum machine_mode, tree, int)); + extern int s390_function_arg_pass_by_reference PARAMS ((enum machine_mode, tree)); + extern void setup_incoming_varargs PARAMS ((CUMULATIVE_ARGS *, + enum machine_mode, tree, + int *, int)); + extern struct rtx_def *s390_va_arg PARAMS ((tree, tree)); + extern union tree_node *s390_build_va_list PARAMS ((void)); + extern void s390_asm_output_pool_prologue PARAMS ((FILE *, char *, tree, int)); + extern void encode_section_info PARAMS ((tree)); + + #endif /* TREE_CODE */ + + + extern void s390_trampoline_template PARAMS ((FILE *)); + extern int s390_function_prologue PARAMS ((FILE *, int)); + extern int s390_function_epilogue PARAMS ((FILE *, int)); + extern void s390_final_chunkify PARAMS ((int)); + extern int s390_arg_frame_offset PARAMS ((void)); diff -Nrc3pad gcc-3.0/gcc/config/s390/s390.c gcc-3.0.1/gcc/config/s390/s390.c *** gcc-3.0/gcc/config/s390/s390.c Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/config/s390/s390.c Fri Aug 10 15:19:19 2001 *************** *** 0 **** --- 1,3118 ---- + /* Subroutines used for code generation on IBM S/390 and zSeries + Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. + Contributed by Hartmut Penner (hpenner@de.ibm.com) and + Ulrich Weigand (uweigand@de.ibm.com). + + This file is part of GNU CC. + + GNU CC is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GNU CC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU CC; see the file COPYING. If not, write to + the Free Software Foundation, 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + + #include "config.h" + #include "system.h" + #include "rtl.h" + #include "expr.h" + #include "tree.h" + #include "regs.h" + #include "hard-reg-set.h" + #include "real.h" + #include "insn-config.h" + #include "conditions.h" + #include "insn-flags.h" + #include "output.h" + #include "insn-attr.h" + #include "flags.h" + #include "recog.h" + #include "math.h" + #include "obstack.h" + #include "except.h" + #include "function.h" + #include "toplev.h" + + #include "tm_p.h" + + extern int reload_completed; + + /* Function count for creating unique internal labels in a compile unit. */ + int s390_function_count = 0; + + /* Save information from a "cmpxx" operation until the branch or scc is + emitted. */ + rtx s390_compare_op0, s390_compare_op1; + + /* Return TRUE or FALSE depending on whether every SET in INSN that + set the CC register has source and destination with matching CC modes, + and that the CC mode is at least as constrained as REQ_MODE. */ + + static int + s390_match_ccmode_set (set, req_mode) + rtx set; + int req_mode; + { + int set_mode; + + if (GET_CODE (set) != SET) + abort (); + + if (GET_CODE (SET_DEST (set)) != REG || !CC_REGNO_P (REGNO (SET_DEST (set)))) + return 1; + + set_mode = GET_MODE (SET_DEST (set)); + switch (set_mode) + { + case CCmode: + return 0; + + case CCSmode: + if (req_mode != CCSmode) + return 0; + break; + case CCUmode: + if (req_mode != CCUmode) + return 0; + break; + case CCZmode: + if (req_mode != CCSmode && req_mode != CCUmode && req_mode != CCTmode) + return 0; + break; + + default: + abort (); + } + + return (GET_MODE (SET_SRC (set)) == set_mode); + } + + int + s390_match_ccmode (insn, req_mode) + rtx insn; + int req_mode; + { + int i; + + if (GET_CODE (PATTERN (insn)) == SET) + return s390_match_ccmode_set (PATTERN (insn), req_mode); + + if (GET_CODE (PATTERN (insn)) == PARALLEL) + for (i = 0; i < XVECLEN (PATTERN (insn), 0); i++) + { + rtx set = XVECEXP (PATTERN (insn), 0, i); + if (GET_CODE (set) == SET) + if (!s390_match_ccmode_set (set, req_mode)) + return 0; + } + + return 1; + } + + + void + optimization_options (level, size) + int level; + int size ATTRIBUTE_UNUSED; + { + #ifdef HAVE_decrement_and_branch_on_count + /* When optimizing, enable use of BRCT instruction. */ + if (level >= 1) + flag_branch_on_count_reg = 1; + #endif + } + + + /* Map for smallest class containing reg regno. */ + + enum reg_class regclass_map[FIRST_PSEUDO_REGISTER] = + { GENERAL_REGS, ADDR_REGS, ADDR_REGS, ADDR_REGS, + ADDR_REGS, ADDR_REGS, ADDR_REGS, ADDR_REGS, + ADDR_REGS, ADDR_REGS, ADDR_REGS, ADDR_REGS, + ADDR_REGS, ADDR_REGS, ADDR_REGS, ADDR_REGS, + FP_REGS, FP_REGS, FP_REGS, FP_REGS, + FP_REGS, FP_REGS, FP_REGS, FP_REGS, + FP_REGS, FP_REGS, FP_REGS, FP_REGS, + FP_REGS, FP_REGS, FP_REGS, FP_REGS, + ADDR_REGS, NO_REGS + }; + + + /* Match exactly zero. */ + + int + const0_operand (op, mode) + register rtx op; + enum machine_mode mode; + { + return op == CONST0_RTX (mode); + } + + /* Match exactly one. */ + + int + const1_operand (op, mode) + register rtx op; + enum machine_mode mode; + { + return op == CONST1_RTX (mode); + } + + + /* Return 1 if OP needs base and index register. */ + + static int + base_n_index_p (rtx op) + { + if ((GET_CODE (op) == PLUS) && + (GET_CODE (XEXP (op, 0)) == PLUS || + GET_CODE (XEXP (op, 1)) == PLUS || + GET_CODE (XEXP (op, 1)) == REG )) + return 1; + return 0; + } + + /* Check mode and mode of op, set it to mode of op, if VOIDmode. */ + + static int + check_mode (op, mode) + register rtx op; + enum machine_mode *mode; + { + if (*mode == VOIDmode) + *mode = GET_MODE (op); + else + { + if (GET_MODE (op) != VOIDmode && GET_MODE (op) != *mode) + return 0; + } + return 1; + } + + + /* Return 1 if OP a valid operand for the LARL instruction. + OP is the current operation. + MODE is the current operation mode. */ + + int + larl_operand (op, mode) + register rtx op; + enum machine_mode mode; + { + rtx sym; + register enum rtx_code code = GET_CODE (op); + + if (! check_mode (op, &mode)) + return 0; + + /* Allow labels and local symbols. */ + if (GET_CODE (op) == LABEL_REF) + return 1; + if (GET_CODE (op) == SYMBOL_REF + && (!flag_pic || SYMBOL_REF_FLAG (op) + || CONSTANT_POOL_ADDRESS_P (op))) + return 1; + + /* Everything else must have a CONST, so strip it. */ + if (GET_CODE (op) != CONST) + return 0; + op = XEXP (op, 0); + + /* Allow adding *even* constants. */ + if (GET_CODE (op) == PLUS) + { + if (GET_CODE (XEXP (op, 1)) != CONST_INT + || (INTVAL (XEXP (op, 1)) & 1) != 0) + return 0; + op = XEXP (op, 0); + } + + /* Labels and local symbols allowed here as well. */ + if (GET_CODE (op) == LABEL_REF) + return 1; + if (GET_CODE (op) == SYMBOL_REF + && (!flag_pic || SYMBOL_REF_FLAG (op) + || CONSTANT_POOL_ADDRESS_P (op))) + return 1; + + /* Now we must have a @GOTENT offset or @PLT stub. */ + if (GET_CODE (op) == UNSPEC + && XINT (op, 1) == 111) + return 1; + if (GET_CODE (op) == UNSPEC + && XINT (op, 1) == 113) + return 1; + + return 0; + } + + /* Return 1 if OP is a valid FP-Register. + OP is the current operation. + MODE is the current operation mode. */ + + int + fp_operand (op, mode) + register rtx op; + enum machine_mode mode; + { + register enum rtx_code code = GET_CODE (op); + if (! check_mode (op, &mode)) + return 0; + if (code == REG && REGNO_OK_FOR_FP_P (REGNO (op))) + return 1; + else + return 0; + } + + /* Return 1 if OP is a valid S operand for an RS, SI or SS type instruction. */ + + int + s_operand (op, mode) + register rtx op; + enum machine_mode mode; + { + register enum rtx_code code = GET_CODE (op); + + if (! check_mode (op,&mode)) + return 0; + + if (code == MEM) { + if (base_n_index_p (XEXP (op, 0))) + return 0; + } + + return memory_operand (op, mode); + } + + /* Return 1 if OP is a valid R or S operand for an RS, SI or SS type + instruction. */ + + int + r_or_s_operand (op, mode) + register rtx op; + enum machine_mode mode; + { + register enum rtx_code code = GET_CODE (op); + + if (!general_operand (op, mode)) + return 0; + + if (code == MEM) { + if (base_n_index_p (XEXP (op, 0))) + return 0; + else + return memory_operand (op, mode); + } + return register_operand (op, mode); + } + + /* Return 1 if OP is a valid R or S or immediate operand for + RS, SI or SS type instruction. */ + + int + r_or_s_or_im8_operand (op, mode) + register rtx op; + enum machine_mode mode; + { + register enum rtx_code code = GET_CODE (op); + + if (!general_operand (op, mode)) + return 0; + + if (code == MEM) { + if (base_n_index_p (XEXP (op, 0))) + return 0; + else + return memory_operand (op, mode); + } + return register_operand (op, mode) || immediate_operand (op, mode); + } + + /* Return 1 if OP is a valid R or X or 16 bit immediate operand for + RX, RR or RI type instruction. */ + + int + r_or_x_or_im16_operand (op, mode) + register rtx op; + enum machine_mode mode; + { + + if (! general_operand (op, mode)) + return 0; + + if (GET_CODE (op) == CONST_INT) + return (CONST_OK_FOR_LETTER_P (INTVAL (op), 'K')); + return register_operand (op, mode) || memory_operand (op, mode); + } + + /* Return 1 if OP is a valid R or 8 bit immediate operand for + !!!!!!! type instruction. */ + + int + r_or_im8_operand (op, mode) + register rtx op; + enum machine_mode mode; + { + + if (!general_operand (op, mode)) + return 0; + + if (GET_CODE (op) == CONST_INT) + return (CONST_OK_FOR_LETTER_P (INTVAL (op), 'J')); + return register_operand (op, mode) || memory_operand (op, mode); + } + + /* Return 1 if OP is a valid operand for the 'test under mask' + instruction with 16 bit immediate. + The value should only have set bits in one halfword. */ + + int + tmxx_operand (op, mode) + register rtx op; + enum machine_mode mode; + { + rtx con; + if (GET_CODE (op) == CONST_INT) + return (CONST_OK_FOR_LETTER_P (INTVAL (op), 'L')); + if (GET_CODE (op) == MEM && GET_CODE (XEXP (op, 0)) == SYMBOL_REF && + CONSTANT_POOL_ADDRESS_P (XEXP (op, 0))) + { + con = get_pool_constant (XEXP (op, 0)); + + if (GET_CODE (con) == CONST_INT) + { + unsigned HOST_WIDEST_INT c; + + c = (unsigned HOST_WIDEST_INT) INTVAL (con); + + return ((c & 0xffff) ? ((c & 0xffffffffffff0000ULL)==0) : + (c & 0xffff0000) ? ((c & 0xffffffff0000ffffULL)==0) : + (c & 0xffff00000000ULL) ? ((c & 0xffff0000ffffffffULL)==0) : + (c & 0xffff000000000000ULL) ? ((c & 0xffffffffffffULL)==0) : 1); + + } + } + return 0; + } + + + /* Return 1 if valid operand for BRAS + OP is the current operation. + MODE is the current operation mode. */ + + int + bras_sym_operand (op, mode) + register rtx op; + enum machine_mode mode; + { + register enum rtx_code code = GET_CODE (op); + + /* Allow SYMBOL_REFs. */ + if (code == SYMBOL_REF) + return 1; + + /* Allow @PLT stubs. */ + if (code == CONST + && GET_CODE (XEXP (op, 0)) == UNSPEC + && XINT (XEXP (op, 0), 1) == 113) + return 1; + return 0; + } + + + /* Return 1 if OP is a load multiple operation. It is known to be a + PARALLEL and the first section will be tested. */ + + int + load_multiple_operation (op, mode) + rtx op; + enum machine_mode mode ATTRIBUTE_UNUSED; + { + int count = XVECLEN (op, 0); + unsigned int dest_regno; + rtx src_addr; + int i; + + + /* Perform a quick check so we don't blow up below. */ + if (count <= 1 + || GET_CODE (XVECEXP (op, 0, 0)) != SET + || GET_CODE (SET_DEST (XVECEXP (op, 0, 0))) != REG + || GET_CODE (SET_SRC (XVECEXP (op, 0, 0))) != MEM) + return 0; + + dest_regno = REGNO (SET_DEST (XVECEXP (op, 0, 0))); + src_addr = XEXP (SET_SRC (XVECEXP (op, 0, 0)), 0); + + for (i = 1; i < count; i++) + { + rtx elt = XVECEXP (op, 0, i); + + if (GET_CODE (elt) != SET + || GET_CODE (SET_DEST (elt)) != REG + || GET_MODE (SET_DEST (elt)) != Pmode + || REGNO (SET_DEST (elt)) != dest_regno + i + || GET_CODE (SET_SRC (elt)) != MEM + || GET_MODE (SET_SRC (elt)) != Pmode + || GET_CODE (XEXP (SET_SRC (elt), 0)) != PLUS + || ! rtx_equal_p (XEXP (XEXP (SET_SRC (elt), 0), 0), src_addr) + || GET_CODE (XEXP (XEXP (SET_SRC (elt), 0), 1)) != CONST_INT + || INTVAL (XEXP (XEXP (SET_SRC (elt), 0), 1)) != i * 4) + return 0; + } + + return 1; + } + + /* Similar, but tests for store multiple. */ + + int + store_multiple_operation (op, mode) + rtx op; + enum machine_mode mode ATTRIBUTE_UNUSED; + { + int count = XVECLEN (op, 0) - 1; + unsigned int src_regno; + rtx dest_addr; + int i; + + /* Perform a quick check so we don't blow up below. */ + if (count <= 1 + || GET_CODE (XVECEXP (op, 0, 0)) != SET + || GET_CODE (SET_DEST (XVECEXP (op, 0, 0))) != MEM + || GET_CODE (SET_SRC (XVECEXP (op, 0, 0))) != REG) + return 0; + + src_regno = REGNO (SET_SRC (XVECEXP (op, 0, 0))); + dest_addr = XEXP (SET_DEST (XVECEXP (op, 0, 0)), 0); + + for (i = 1; i < count; i++) + { + rtx elt = XVECEXP (op, 0, i); + + if (GET_CODE (elt) != SET + || GET_CODE (SET_SRC (elt)) != REG + || GET_MODE (SET_SRC (elt)) != Pmode + || REGNO (SET_SRC (elt)) != src_regno + i + || GET_CODE (SET_DEST (elt)) != MEM + || GET_MODE (SET_DEST (elt)) != Pmode + || GET_CODE (XEXP (SET_DEST (elt), 0)) != PLUS + || ! rtx_equal_p (XEXP (XEXP (SET_DEST (elt), 0), 0), dest_addr) + || GET_CODE (XEXP (XEXP (SET_DEST (elt), 0), 1)) != CONST_INT + || INTVAL (XEXP (XEXP (SET_DEST (elt), 0), 1)) != i * 4) + return 0; + } + return 1; + } + + + /* Returns 1 if OP contains a symbol reference */ + + int + symbolic_reference_mentioned_p (op) + rtx op; + { + register char *fmt; + register int i; + + if (GET_CODE (op) == SYMBOL_REF || GET_CODE (op) == LABEL_REF) + return 1; + + fmt = GET_RTX_FORMAT (GET_CODE (op)); + for (i = GET_RTX_LENGTH (GET_CODE (op)) - 1; i >= 0; i--) + { + if (fmt[i] == 'E') + { + register int j; + + for (j = XVECLEN (op, i) - 1; j >= 0; j--) + if (symbolic_reference_mentioned_p (XVECEXP (op, i, j))) + return 1; + } + + else if (fmt[i] == 'e' && symbolic_reference_mentioned_p (XEXP (op, i))) + return 1; + } + + return 0; + } + + + /* Returns 1 if OP is a legitimate general operand when + generating PIC code. It is given that flag_pic is on + and that OP satisfies CONSTANT_P or is a CONST_DOUBLE. */ + + int + legitimate_pic_operand_p (op) + register rtx op; + { + /* All non-symbolic constants that made it + up to here are fine. */ + if (!SYMBOLIC_CONST (op)) + return 1; + + /* Accept immediate LARL operands. */ + if (TARGET_64BIT) + return larl_operand (op, VOIDmode); + + /* Reject everything else; must be handled + via emit_pic_move. */ + return 0; + } + + /* Returns 1 if the constant value OP is a legitimate general operand. + It is given that OP satisfies CONSTANT_P or is a CONST_DOUBLE. */ + + int + legitimate_constant_p (op) + register rtx op; + { + /* Reject doubles and integers out of range. */ + if (GET_CODE (op) == CONST_DOUBLE || + (GET_CODE (op) == CONST_INT && + (INTVAL (op) < -32768 || INTVAL (op) > 32767))) + return 0; + + /* Accept all other non-symbolic constants. */ + if (!SYMBOLIC_CONST (op)) + return 1; + + /* In the PIC case, symbolic constants must *not* be + forced into the literal pool. We accept them here, + so that they will be handled by emit_pic_move. */ + if (flag_pic) + return 1; + + /* Even in the non-PIC case, we can accept immediate + LARL operands here. */ + if (TARGET_64BIT) + return larl_operand (op, VOIDmode); + + /* All remaining non-PIC symbolic constants are + forced into the literal pool. */ + return 0; + } + + + /* Structure used to hold the components of a S/390 memory + address. A legitimate address on S/390 is of the general + form + base + index + displacement + where any of the components is optional. + + base and index are registers of the class ADDR_REGS, + displacement is an unsigned 12-bit immediate constant. */ + + struct s390_address + { + rtx base; + rtx indx; + rtx disp; + }; + + /* Decompose a RTL expression ADDR for a memory address into + its components, returned in OUT. The boolean STRICT + specifies whether strict register checking applies. + Returns 0 if ADDR is not a valid memory address, nonzero + otherwise. If OUT is NULL, don't return the components, + but check for validity only. + + Note: Only addresses in canonical form are recognized. + LEGITIMIZE_ADDRESS should convert non-canonical forms to the + canonical form so that they will be recognized. */ + + static int + s390_decompose_address (addr, out, strict) + register rtx addr; + struct s390_address *out; + int strict; + { + rtx base = NULL_RTX; + rtx indx = NULL_RTX; + rtx disp = NULL_RTX; + + /* Decompose address into base + index + displacement. */ + + if (GET_CODE (addr) == REG || GET_CODE (addr) == UNSPEC) + base = addr; + + else if (GET_CODE (addr) == PLUS) + { + rtx op0 = XEXP (addr, 0); + rtx op1 = XEXP (addr, 1); + enum rtx_code code0 = GET_CODE (op0); + enum rtx_code code1 = GET_CODE (op1); + + if (code0 == REG || code0 == UNSPEC) + { + if (code1 == REG || code1 == UNSPEC) + { + indx = op0; /* index + base */ + base = op1; + } + + else + { + base = op0; /* base + displacement */ + disp = op1; + } + } + + else if (code0 == PLUS) + { + indx = XEXP (op0, 0); /* index + base + disp */ + base = XEXP (op0, 1); + disp = op1; + } + + else + { + return FALSE; + } + } + + else + disp = addr; /* displacement */ + + + /* Validate base register. */ + if (base) + { + if (GET_CODE (base) == UNSPEC) + { + if (XVECLEN (base, 0) != 1 || XINT (base, 1) != 101) + return FALSE; + base = XVECEXP (base, 0, 0); + } + + if (GET_CODE (base) != REG || GET_MODE (base) != Pmode) + return FALSE; + + if ((strict && ! REG_OK_FOR_BASE_STRICT_P (base)) + || (! strict && ! REG_OK_FOR_BASE_NONSTRICT_P (base))) + return FALSE; + } + + /* Validate index register. */ + if (indx) + { + if (GET_CODE (indx) == UNSPEC) + { + if (XVECLEN (indx, 0) != 1 || XINT (indx, 1) != 101) + return FALSE; + indx = XVECEXP (indx, 0, 0); + } + + if (GET_CODE (indx) != REG || GET_MODE (indx) != Pmode) + return FALSE; + + if ((strict && ! REG_OK_FOR_BASE_STRICT_P (indx)) + || (! strict && ! REG_OK_FOR_BASE_NONSTRICT_P (indx))) + return FALSE; + } + + /* Validate displacement. */ + if (disp) + { + /* Allow integer constant in range. */ + if (GET_CODE (disp) == CONST_INT) + { + if (INTVAL (disp) < 0 || INTVAL (disp) >= 4096) + return FALSE; + } + + /* In the small-PIC case, the linker converts @GOT12 + offsets to possible displacements. */ + else if (GET_CODE (disp) == CONST + && GET_CODE (XEXP (disp, 0)) == UNSPEC + && XINT (XEXP (disp, 0), 1) == 110) + { + if (flag_pic != 1) + return FALSE; + } + + /* We can convert literal pool addresses to + displacements by basing them off the base register. */ + else + { + /* In some cases, we can accept an additional + small constant offset. Split these off here. */ + + int offset = 0; + + if (GET_CODE (disp) == CONST + && GET_CODE (XEXP (disp, 0)) == PLUS + && GET_CODE (XEXP (XEXP (disp, 0), 1)) == CONST_INT) + { + offset = INTVAL (XEXP (XEXP (disp, 0), 1)); + disp = XEXP (XEXP (disp, 0), 0); + } + + /* Now we must have a literal pool address. */ + if (GET_CODE (disp) != SYMBOL_REF + || !CONSTANT_POOL_ADDRESS_P (disp)) + return FALSE; + + /* In 64-bit PIC mode we cannot accept symbolic + constants in the constant pool. */ + if (TARGET_64BIT && flag_pic + && SYMBOLIC_CONST (get_pool_constant (disp))) + return FALSE; + + /* If we have an offset, make sure it does not + exceed the size of the constant pool entry. */ + if (offset && offset >= GET_MODE_SIZE (get_pool_mode (disp))) + return FALSE; + + /* Either base or index must be free to + hold the base register. */ + if (base && indx) + return FALSE; + + /* Convert the address. */ + if (base) + indx = gen_rtx_REG (Pmode, BASE_REGISTER); + else + base = gen_rtx_REG (Pmode, BASE_REGISTER); + + disp = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, disp), 100); + disp = gen_rtx_CONST (Pmode, disp); + + if (offset) + disp = plus_constant (disp, offset); + } + } + + if (out) + { + out->base = base; + out->indx = indx; + out->disp = disp; + } + + return TRUE; + } + + /* Returns nonzero if ADDR is a valid memory address. + STRICT specifies whether strict register checking applies. */ + + int + legitimate_address_p (mode, addr, strict) + enum machine_mode mode; + register rtx addr; + int strict; + { + return s390_decompose_address (addr, NULL, strict); + } + + /* Return a legitimate reference for ORIG (an address) using the + register REG. If REG is 0, a new pseudo is generated. + + There are two types of references that must be handled: + + 1. Global data references must load the address from the GOT, via + the PIC reg. An insn is emitted to do this load, and the reg is + returned. + + 2. Static data references, constant pool addresses, and code labels + compute the address as an offset from the GOT, whose base is in + the PIC reg. Static data objects have SYMBOL_REF_FLAG set to + differentiate them from global data objects. The returned + address is the PIC reg + an unspec constant. + + GO_IF_LEGITIMATE_ADDRESS rejects symbolic references unless the PIC + reg also appears in the address. */ + + rtx + legitimize_pic_address (orig, reg) + rtx orig; + rtx reg; + { + rtx addr = orig; + rtx new = orig; + rtx base; + + if (GET_CODE (addr) == LABEL_REF + || (GET_CODE (addr) == SYMBOL_REF + && (SYMBOL_REF_FLAG (addr) + || CONSTANT_POOL_ADDRESS_P (addr)))) + { + /* This is a local symbol. */ + if (TARGET_64BIT) + { + /* Access local symbols PC-relative via LARL. + This is the same as in the non-PIC case, so it is + handled automatically ... */ + } + else + { + /* Access local symbols relative to the literal pool. */ + + rtx temp = reg? reg : gen_reg_rtx (Pmode); + + addr = gen_rtx_UNSPEC (SImode, gen_rtvec (1, addr), 100); + addr = gen_rtx_CONST (SImode, addr); + addr = force_const_mem (SImode, addr); + emit_move_insn (temp, addr); + + base = gen_rtx_REG (Pmode, BASE_REGISTER); + base = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, base), 101); + new = gen_rtx_PLUS (Pmode, base, temp); + + if (reg != 0) + { + emit_move_insn (reg, new); + new = reg; + } + } + } + else if (GET_CODE (addr) == SYMBOL_REF) + { + if (reg == 0) + reg = gen_reg_rtx (Pmode); + + if (flag_pic == 1) + { + /* Assume GOT offset < 4k. This is handled the same way + in both 31- and 64-bit code (@GOT12). */ + + current_function_uses_pic_offset_table = 1; + + new = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, addr), 110); + new = gen_rtx_CONST (Pmode, new); + new = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, new); + new = gen_rtx_MEM (Pmode, new); + RTX_UNCHANGING_P (new) = 1; + emit_move_insn (reg, new); + new = reg; + } + else if (TARGET_64BIT) + { + /* If the GOT offset might be >= 4k, we determine the position + of the GOT entry via a PC-relative LARL (@GOTENT). */ + + rtx temp = gen_reg_rtx (Pmode); + + new = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, addr), 111); + new = gen_rtx_CONST (Pmode, new); + emit_move_insn (temp, new); + + new = gen_rtx_MEM (Pmode, temp); + RTX_UNCHANGING_P (new) = 1; + emit_move_insn (reg, new); + new = reg; + } + else + { + /* If the GOT offset might be >= 4k, we have to load it + from the literal pool (@GOT). */ + + rtx temp = gen_reg_rtx (Pmode); + + current_function_uses_pic_offset_table = 1; + + addr = gen_rtx_UNSPEC (SImode, gen_rtvec (1, addr), 112); + addr = gen_rtx_CONST (SImode, addr); + addr = force_const_mem (SImode, addr); + emit_move_insn (temp, addr); + + new = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, temp); + new = gen_rtx_MEM (Pmode, new); + RTX_UNCHANGING_P (new) = 1; + emit_move_insn (reg, new); + new = reg; + } + } + else + { + if (GET_CODE (addr) == CONST) + { + addr = XEXP (addr, 0); + if (GET_CODE (addr) == UNSPEC) + { + if (XVECLEN (addr, 0) != 1) + abort (); + switch (XINT (addr, 1)) + { + /* If someone moved an @GOT or lt-relative UNSPEC + out of the literal pool, force them back in. */ + case 100: + case 112: + case 114: + new = force_const_mem (SImode, orig); + break; + + /* @GOTENT is OK as is. */ + case 111: + break; + + /* @PLT is OK as is on 64-bit, must be converted to + lt-relative PLT on 31-bit. */ + case 113: + if (!TARGET_64BIT) + { + rtx temp = reg? reg : gen_reg_rtx (Pmode); + + addr = XVECEXP (addr, 0, 0); + addr = gen_rtx_UNSPEC (SImode, gen_rtvec (1, addr), 114); + addr = gen_rtx_CONST (SImode, addr); + addr = force_const_mem (SImode, addr); + emit_move_insn (temp, addr); + + base = gen_rtx_REG (Pmode, BASE_REGISTER); + base = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, base), 101); + new = gen_rtx_PLUS (Pmode, base, temp); + + if (reg != 0) + { + emit_move_insn (reg, new); + new = reg; + } + } + break; + + /* Everything else cannot happen. */ + default: + abort (); + } + } + else if (GET_CODE (addr) != PLUS) + abort (); + } + if (GET_CODE (addr) == PLUS) + { + rtx op0 = XEXP (addr, 0), op1 = XEXP (addr, 1); + /* Check first to see if this is a constant offset + from a local symbol reference. */ + if ((GET_CODE (op0) == LABEL_REF + || (GET_CODE (op0) == SYMBOL_REF + && (SYMBOL_REF_FLAG (op0) + || CONSTANT_POOL_ADDRESS_P (op0)))) + && GET_CODE (op1) == CONST_INT) + { + if (TARGET_64BIT) + { + if (INTVAL (op1) & 1) + { + /* LARL can't handle odd offsets, so emit a + pair of LARL and LA. */ + rtx temp = reg? reg : gen_reg_rtx (Pmode); + + if (INTVAL (op1) < 0 || INTVAL (op1) >= 4096) + { + int even = INTVAL (op1) - 1; + op0 = gen_rtx_PLUS (Pmode, op0, GEN_INT (even)); + op1 = GEN_INT (1); + } + + emit_move_insn (temp, op0); + new = gen_rtx_PLUS (Pmode, temp, op1); + + if (reg != 0) + { + emit_move_insn (reg, new); + new = reg; + } + } + else + { + /* If the offset is even, we can just use LARL. + This will happen automatically. */ + } + } + else + { + /* Access local symbols relative to the literal pool. */ + + rtx temp = reg? reg : gen_reg_rtx (Pmode); + + addr = gen_rtx_UNSPEC (SImode, gen_rtvec (1, op0), 100); + addr = gen_rtx_PLUS (SImode, addr, op1); + addr = gen_rtx_CONST (SImode, addr); + addr = force_const_mem (SImode, addr); + emit_move_insn (temp, addr); + + base = gen_rtx_REG (Pmode, BASE_REGISTER); + base = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, base), 101); + new = gen_rtx_PLUS (Pmode, base, temp); + + if (reg != 0) + { + emit_move_insn (reg, new); + new = reg; + } + } + } + + /* Now, check whether it is an LT-relative symbol plus offset + that was pulled out of the literal pool. Force it back in. */ + + else if (GET_CODE (op0) == UNSPEC + && GET_CODE (op1) == CONST_INT) + { + if (XVECLEN (op0, 0) != 1) + abort (); + if (XINT (op0, 1) != 100) + abort (); + + new = force_const_mem (SImode, orig); + } + + /* Otherwise, compute the sum. */ + else + { + base = legitimize_pic_address (XEXP (addr, 0), reg); + new = legitimize_pic_address (XEXP (addr, 1), + base == reg ? NULL_RTX : reg); + if (GET_CODE (new) == CONST_INT) + new = plus_constant (base, INTVAL (new)); + else + { + if (GET_CODE (new) == PLUS && CONSTANT_P (XEXP (new, 1))) + { + base = gen_rtx_PLUS (Pmode, base, XEXP (new, 0)); + new = XEXP (new, 1); + } + new = gen_rtx_PLUS (Pmode, base, new); + } + + if (GET_CODE (new) == CONST) + new = XEXP (new, 0); + new = force_operand (new, 0); + } + } + } + return new; + } + + /* Emit insns to move operands[1] into operands[0]. */ + + void + emit_pic_move (operands, mode) + rtx *operands; + enum machine_mode mode ATTRIBUTE_UNUSED; + { + rtx temp = reload_in_progress ? operands[0] : gen_reg_rtx (Pmode); + + if (GET_CODE (operands[0]) == MEM && SYMBOLIC_CONST (operands[1])) + operands[1] = force_reg (Pmode, operands[1]); + else + operands[1] = legitimize_pic_address (operands[1], temp); + } + + /* Try machine-dependent ways of modifying an illegitimate address + to be legitimate. If we find one, return the new, valid address. + This macro is used in only one place: `memory_address' in explow.c. + + OLDX is the address as it was before break_out_memory_refs was called. + In some cases it is useful to look at this to decide what needs to be done. + + MODE and WIN are passed so that this macro can use + GO_IF_LEGITIMATE_ADDRESS. + + It is always safe for this macro to do nothing. It exists to recognize + opportunities to optimize the output. + + When -fpic is used, special handling is needed for symbolic references. + See comments by legitimize_pic_address for details. */ + + rtx + legitimize_address (x, oldx, mode) + register rtx x; + register rtx oldx ATTRIBUTE_UNUSED; + enum machine_mode mode; + { + if (flag_pic && SYMBOLIC_CONST (x)) + return legitimize_pic_address (x, 0); + + return x; + } + + + /* Output branch condition code of RTX code in assembler + syntax to stdio stream FILE. */ + + static void + output_branch_condition (FILE *file, rtx code) + { + switch (GET_CODE (code)) + { + case EQ: + fprintf (file, "e"); + break; + case NE: + fprintf (file, "ne"); + break; + case GT: + case GTU: + fprintf (file, "h"); + break; + case LT: + case LTU: + fprintf (file, "l"); + break; + case GE: + case GEU: + fprintf (file, "he"); + break; + case LE: + case LEU: + fprintf (file, "le"); + break; + default: + fatal_insn ("Unknown CC code", code); + } + } + + /* Output the inverse of the branch condition code of RTX code + in assembler syntax to stdio stream FILE. */ + + static void + output_inverse_branch_condition (FILE *file, rtx code) + { + switch (GET_CODE (code)) + { + case EQ: + fprintf (file, "ne"); + break; + case NE: + fprintf (file, "e"); + break; + case GT: + case GTU: + fprintf (file, "nh"); + break; + case LT: + case LTU: + fprintf (file, "nl"); + break; + case GE: + case GEU: + fprintf (file, "nhe"); + break; + case LE: + case LEU: + fprintf (file, "nle"); + break; + default: + fatal_insn ("Unknown CC code", code); + } + } + + /* Output symbolic constant X in assembler syntax to + stdio stream FILE. */ + + void + s390_output_symbolic_const (FILE *file, rtx x) + { + switch (GET_CODE (x)) + { + case CONST: + case ZERO_EXTEND: + case SIGN_EXTEND: + s390_output_symbolic_const (file, XEXP (x, 0)); + break; + + case PLUS: + s390_output_symbolic_const (file, XEXP (x, 0)); + fprintf (file, "+"); + s390_output_symbolic_const (file, XEXP (x, 1)); + break; + + case MINUS: + s390_output_symbolic_const (file, XEXP (x, 0)); + fprintf (file, "-"); + s390_output_symbolic_const (file, XEXP (x, 1)); + break; + + case CONST_INT: + output_addr_const (file, x); + break; + + case LABEL_REF: + case CODE_LABEL: + output_addr_const (file, x); + break; + + case SYMBOL_REF: + output_addr_const (file, x); + if (CONSTANT_POOL_ADDRESS_P (x) && s390_pool_count != 0) + fprintf (file, "_%X", s390_pool_count); + break; + + case UNSPEC: + if (XVECLEN (x, 0) != 1) + output_operand_lossage ("invalid UNSPEC as operand (1)"); + switch (XINT (x, 1)) + { + case 100: + s390_output_symbolic_const (file, XVECEXP (x, 0, 0)); + fprintf (file, "-.LT%X_%X", + s390_function_count, s390_pool_count); + break; + case 110: + s390_output_symbolic_const (file, XVECEXP (x, 0, 0)); + fprintf (file, "@GOT12"); + break; + case 111: + s390_output_symbolic_const (file, XVECEXP (x, 0, 0)); + fprintf (file, "@GOTENT"); + break; + case 112: + s390_output_symbolic_const (file, XVECEXP (x, 0, 0)); + fprintf (file, "@GOT"); + break; + case 113: + s390_output_symbolic_const (file, XVECEXP (x, 0, 0)); + fprintf (file, "@PLT"); + break; + case 114: + s390_output_symbolic_const (file, XVECEXP (x, 0, 0)); + fprintf (file, "@PLT-.LT%X_%X", + s390_function_count, s390_pool_count); + break; + default: + output_operand_lossage ("invalid UNSPEC as operand (2)"); + break; + } + break; + + default: + fatal_insn ("UNKNOWN in s390_output_symbolic_const !?", x); + break; + } + } + + /* Output address operand ADDR in assembler syntax to + stdio stream FILE. */ + + void + print_operand_address (FILE *file, rtx addr) + { + struct s390_address ad; + + if (!s390_decompose_address (addr, &ad, TRUE)) + output_operand_lossage ("Cannot decompose address.\n"); + + if (ad.disp) + s390_output_symbolic_const (file, ad.disp); + else + fprintf (file, "0"); + + if (ad.base && ad.indx) + fprintf (file, "(%s,%s)", reg_names[REGNO (ad.indx)], + reg_names[REGNO (ad.base)]); + else if (ad.base) + fprintf (file, "(%s)", reg_names[REGNO (ad.base)]); + } + + /* Output operand X in assembler syntax to stdio stream FILE. + The following format flags are recognized as CODE: + + 'C': print opcode suffix for branch condition. + 'D': print opcode suffix for inverse branch condition. + 'Y': print current constant pool address (pc-relative). + 'y': print current constant pool address (absolute). + 'O': print only the displacement of a memory reference. + 'R': print only the base register of a memory reference. + 'N': print the second word of a DImode operand. + 'M': print the second word of a TImode operand. + + 'b': print integer X as if it's a unsigned byte. + 'x': print integer X as if it's a unsigned word. + 'h': print integer X as if it's a signed word. */ + + void + print_operand (FILE *file, rtx x, char code) + { + switch (code) + { + case 'C': + output_branch_condition (file, x); + return; + + case 'D': + output_inverse_branch_condition (file, x); + return; + + case 'Y': + fprintf (file, ".LT%X_%X-.", s390_function_count, s390_pool_count); + return; + + case 'y': + fprintf (file, ".LT%X_%X", s390_function_count, s390_pool_count); + return; + + case 'O': + { + struct s390_address ad; + + if (GET_CODE (x) != MEM + || !s390_decompose_address (XEXP (x, 0), &ad, TRUE) + || ad.indx) + abort (); + + if (ad.disp) + s390_output_symbolic_const (file, ad.disp); + else + fprintf (file, "0"); + } + return; + + case 'R': + { + struct s390_address ad; + + if (GET_CODE (x) != MEM + || !s390_decompose_address (XEXP (x, 0), &ad, TRUE) + || ad.indx) + abort (); + + if (ad.base) + fprintf (file, "%s", reg_names[REGNO (ad.base)]); + else + fprintf (file, "0"); + } + return; + + case 'N': + if (GET_CODE (x) == REG) + x = gen_rtx_REG (GET_MODE (x), REGNO (x) + 1); + else if (GET_CODE (x) == MEM) + x = change_address (x, VOIDmode, plus_constant (XEXP (x, 0), 4)); + else + abort (); + break; + + case 'M': + if (GET_CODE (x) == REG) + x = gen_rtx_REG (GET_MODE (x), REGNO (x) + 1); + else if (GET_CODE (x) == MEM) + x = change_address (x, VOIDmode, plus_constant (XEXP (x, 0), 8)); + else + abort (); + break; + } + + switch (GET_CODE (x)) + { + case REG: + fprintf (file, "%s", reg_names[REGNO (x)]); + break; + + case MEM: + output_address (XEXP (x, 0)); + break; + + case CONST: + case CODE_LABEL: + case LABEL_REF: + case SYMBOL_REF: + s390_output_symbolic_const (file, x); + break; + + case CONST_INT: + if (code == 'b') + fprintf (file, "%d", INTVAL (x) & 0xff); + else if (code == 'X') + fprintf (file, "%d", INTVAL (x) & 0xff); + else if (code == 'x') + fprintf (file, "0x%x", INTVAL (x) & 0xffff); + else if (code == 'h') + fprintf (file, "%d", (INTVAL (x) << 16) >> 16); + else + fprintf (file, "%d", INTVAL (x)); + break; + + default: + fatal_insn ("UNKNOWN in print_operand !?", x); + break; + } + } + + #define DEBUG_SCHED 0 + + /* Returns true if register REGNO is used for forming + a memory address in expression X. */ + + static int + reg_used_in_mem_p (int regno, rtx x) + { + enum rtx_code code = GET_CODE (x); + int i, j; + const char *fmt; + + if (code == MEM) + { + if (refers_to_regno_p (regno, regno+1, + XEXP (x, 0), 0)) + return 1; + } + + fmt = GET_RTX_FORMAT (code); + for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--) + { + if (fmt[i] == 'e' + && reg_used_in_mem_p (regno, XEXP (x, i))) + return 1; + + else if (fmt[i] == 'E') + for (j = 0; j < XVECLEN (x, i); j++) + if (reg_used_in_mem_p (regno, XVECEXP (x, i, j))) + return 1; + } + return 0; + } + + /* Returns true if expression DEP_RTX sets a address register + used by instruction INSN to address memory. */ + + static int + addr_generation_dependency_p (rtx dep_rtx, rtx insn) + { + rtx target; + + if (GET_CODE (dep_rtx) == SET) + { + target = SET_DEST (dep_rtx); + + if (GET_CODE (target) == REG) + { + int regno = REGNO (target); + + if (get_attr_type (insn) == TYPE_LA) + return refers_to_regno_p (regno, regno+1, + SET_SRC (PATTERN (insn)), 0); + else if (get_attr_atype (insn) == ATYPE_MEM) + return reg_used_in_mem_p (regno, PATTERN (insn)); + } + } + return 0; + } + + + /* Data dependencies are all handled without delay. But if an register + is changed for a memory access, at least 4 cycle need to be put + between the set of the register and the use. Because of that, + the delays specified in the .md file needs to check and adjust + to the right cost. */ + + int + s390_adjust_cost (rtx insn, rtx link, rtx dep_insn, int cost) + { + rtx dep_rtx, dest, x; + int i; + + /* If the dependence is an anti-dependence, there is no cost. For an + output dependence, there is sometimes a cost, but it doesn't seem + worth handling those few cases. */ + + if (REG_NOTE_KIND (link) != 0) + return 0; + + /* If we can't recognize the insns, we can't really do anything. */ + if (recog_memoized (insn) < 0 || recog_memoized (dep_insn) < 0) + return cost; + + /* If cost equal 1 nothing needs to be checked. */ + + if (cost == 1) + { + return cost; + } + + dep_rtx = PATTERN (dep_insn); + + if (GET_CODE (dep_rtx) == SET) + { + if (addr_generation_dependency_p (dep_rtx, insn)) + { + if (DEBUG_SCHED) + { + fprintf (stderr, "\n\nAddress dependency detected: cost %d\n", + cost); + debug_rtx (dep_insn); + debug_rtx (insn); + } + return cost; + } + } + + else if (GET_CODE (dep_rtx) == PARALLEL) + { + for (i = 0; i < XVECLEN (dep_rtx, 0); i++) + { + if (addr_generation_dependency_p (XVECEXP (dep_rtx, 0, i), + insn)) + { + if (DEBUG_SCHED) + { + fprintf (stderr, "\n\nAddress dependency detected: cost %d\n" + ,cost); + debug_rtx (dep_insn); + debug_rtx (insn); + } + return cost; + } + } + } + + /* default cost. */ + return 1; + } + + /* Pool concept for Linux 390: + - Function prologue saves used register + - literal pool is dumped in prologue and jump across with bras + - If function has more than 4 k literals, at about every + S390_CHUNK_MAX offset in the function a literal pool will be + dumped + - in this case, a branch from one chunk to other chunk needs + a reload of base register at the code label branched to. */ + + rtx s390_pool_start_insn = NULL_RTX; + + /* Count of actual pool in function (-1 -> before function). */ + + int s390_pool_count = -1; + + static int pool_stop_uid; + + /* Called from the ASM_OUTPUT_POOL_PROLOGUE macro to + prepare for printing a literal pool chunk. */ + + void + s390_asm_output_pool_prologue (FILE *file, char *fname, tree fndecl, int size) + { + + if (s390_pool_count>0) { + /* + * We are in an internal pool, branch over + */ + if (TARGET_64BIT) + { + fprintf (file, "\tlarl\t%s,.LT%X_%X\n", + reg_names[BASE_REGISTER], + s390_function_count, s390_pool_count); + readonly_data_section (); + ASM_OUTPUT_ALIGN (file, floor_log2 (3)); + fprintf (file, ".LT%X_%X:\t# Pool %d\n", + s390_function_count, s390_pool_count, s390_pool_count); + } + else + fprintf (file,"\t.align 4\n\tbras\t%s,0f\n.LT%X_%X:\t# Pool %d \n", + reg_names[BASE_REGISTER], + s390_function_count, s390_pool_count, s390_pool_count); + } + if (!TARGET_64BIT) + function_section (fndecl); + } + + /* Return 1 if OTHER_ADDR is in different chunk than MY_ADDR. + LTORG points to a list of all literal pools inserted + into the current function. */ + + static int + other_chunk (int *ltorg, int my_addr, int other_addr) + { + int ad, i=0, j=0; + + while ((ad = ltorg[i++])) { + if (INSN_ADDRESSES (ad) >= my_addr) + break; + } + + while ((ad = ltorg[j++])) { + if (INSN_ADDRESSES (ad) > other_addr) + break; + } + + if (i==j) + return 0; + + return 1; + } + + /* Return 1 if OTHER_ADDR is too far away from MY_ADDR + to use a relative branch instruction. */ + + static int + far_away (int my_addr, int other_addr) + { + /* In 64 bit mode we can jump +- 4GB. */ + if (TARGET_64BIT) + return 0; + if (abs (my_addr - other_addr) > S390_REL_MAX) + return 1; + return 0; + } + + /* Go through all insns in the current function (starting + at INSN), replacing branch insn if necessary. A branch + needs to be modified if either the distance to the + target is too far to use a relative branch, or if the + target uses a different literal pool than the origin. + LTORG_UIDS points to a list of all literal pool insns + that have been inserted. */ + + static rtx + check_and_change_labels (rtx insn, int *ltorg_uids) + { + rtx temp_reg = gen_rtx_REG (Pmode, RETURN_REGNUM); + rtx target, jump; + rtx pattern, tmp, body, label1; + int addr0, addr1; + + if (GET_CODE (insn) != JUMP_INSN) + return insn; + + pattern = PATTERN (insn); + + addr0 = INSN_ADDRESSES (INSN_UID (insn)); + if (GET_CODE (pattern) == SET) + { + body = XEXP (pattern, 1); + if (GET_CODE (body) == LABEL_REF) + { + addr1 = INSN_ADDRESSES (INSN_UID (XEXP (body, 0))); + + if (other_chunk (ltorg_uids, addr0, addr1)) + { + SYMBOL_REF_USED (XEXP (body, 0)) = 1; + } + if (far_away (addr0, addr1)) + { + if (flag_pic) + { + target = gen_rtx_UNSPEC (SImode, gen_rtvec (1, body), 100); + target = gen_rtx_CONST (SImode, target); + target = force_const_mem (SImode, target); + jump = gen_rtx_REG (Pmode, BASE_REGISTER); + jump = gen_rtx_PLUS (Pmode, jump, temp_reg); + } + else + { + target = force_const_mem (Pmode, body); + jump = temp_reg; + } + + emit_insn_before (gen_movsi (temp_reg, target), insn); + tmp = emit_jump_insn_before (gen_indirect_jump (jump), insn); + remove_insn (insn); + INSN_ADDRESSES_NEW (tmp, -1); + return tmp; + } + } + else if (GET_CODE (body) == IF_THEN_ELSE) + { + if (GET_CODE (XEXP (body, 1)) == LABEL_REF) + { + addr1 = INSN_ADDRESSES (INSN_UID (XEXP (XEXP (body, 1), 0))); + + if (other_chunk (ltorg_uids, addr0, addr1)) + { + SYMBOL_REF_USED (XEXP (XEXP (body, 1), 0)) = 1; + } + + if (far_away (addr0, addr1)) + { + if (flag_pic) + { + target = gen_rtx_UNSPEC (SImode, gen_rtvec (1, XEXP (body, 1)), 100); + target = gen_rtx_CONST (SImode, target); + target = force_const_mem (SImode, target); + jump = gen_rtx_REG (Pmode, BASE_REGISTER); + jump = gen_rtx_PLUS (Pmode, jump, temp_reg); + } + else + { + target = force_const_mem (Pmode, XEXP (body, 1)); + jump = temp_reg; + } + + label1 = gen_label_rtx (); + emit_jump_insn_before (gen_icjump (label1, XEXP (body, 0)), insn); + emit_insn_before (gen_movsi (temp_reg, target), insn); + tmp = emit_jump_insn_before (gen_indirect_jump (jump), insn); + INSN_ADDRESSES_NEW (emit_label_before (label1, insn), -1); + remove_insn (insn); + return tmp; + } + } + else if (GET_CODE (XEXP (body, 2)) == LABEL_REF) + { + addr1 = INSN_ADDRESSES (INSN_UID (XEXP (XEXP (body, 2), 0))); + + if (other_chunk (ltorg_uids, addr0, addr1)) + { + SYMBOL_REF_USED (XEXP (XEXP (body, 2), 0)) = 1; + } + + if (far_away (addr0, addr1)) + { + if (flag_pic) + { + target = gen_rtx_UNSPEC (SImode, gen_rtvec (1, XEXP (body, 2)), 100); + target = gen_rtx_CONST (SImode, target); + target = force_const_mem (SImode, target); + jump = gen_rtx_REG (Pmode, BASE_REGISTER); + jump = gen_rtx_PLUS (Pmode, jump, temp_reg); + } + else + { + target = force_const_mem (Pmode, XEXP (body, 2)); + jump = temp_reg; + } + + label1 = gen_label_rtx (); + emit_jump_insn_before (gen_cjump (label1, XEXP (body, 0)), insn); + emit_insn_before (gen_movsi (temp_reg, target), insn); + tmp = emit_jump_insn_before (gen_indirect_jump (jump), insn); + INSN_ADDRESSES_NEW (emit_label_before (label1, insn), -1); + remove_insn (insn); + return tmp; + } + } + } + } + else if (GET_CODE (pattern) == ADDR_VEC || + GET_CODE (pattern) == ADDR_DIFF_VEC) + { + int i, diff_vec_p = GET_CODE (pattern) == ADDR_DIFF_VEC; + int len = XVECLEN (pattern, diff_vec_p); + + for (i = 0; i < len; i++) + { + addr1 = INSN_ADDRESSES (INSN_UID (XEXP (XVECEXP (pattern, diff_vec_p, i), 0))); + if (other_chunk (ltorg_uids, addr0, addr1)) + { + SYMBOL_REF_USED (XEXP (XVECEXP (pattern, diff_vec_p, i), 0)) = 1; + } + } + } + return insn; + } + + static int chunk_max=0; + + + /* Called from s390_function_prologue to make final adjustments + before outputting code. CHUNKIFY specifies whether we need + to use multiple literal pools (because the total size of the + literals exceeds 4K). */ + + void + s390_final_chunkify (int chunkify) + { + rtx insn, ninsn, tmp; + int addr, naddr, uids; + + const char *asms; + + int size = insn_current_address; + + int *ltorg_uids; + int max_ltorg=0; + + ltorg_uids = alloca (size / 1024 + 1024); + memset (ltorg_uids, 0, size / 1024 + 1024); + + if (chunkify == 1) + { + chunk_max = size * 2048 / get_pool_size (); + chunk_max = chunk_max > S390_CHUNK_MAX + ? S390_CHUNK_MAX : chunk_max; + } + + for (insn=get_insns (); insn;insn = next_real_insn (insn)) + { + if (GET_RTX_CLASS (GET_CODE (insn)) != 'i') + continue; + + addr = INSN_ADDRESSES (INSN_UID (insn)); + if ((ninsn = next_real_insn (insn))) + { + naddr = INSN_ADDRESSES (INSN_UID (ninsn)); + } + + if (chunkify && (addr / chunk_max != naddr / chunk_max)) + { + for (tmp = insn; tmp; tmp = NEXT_INSN (tmp)) + { + if (GET_CODE (tmp) == CODE_LABEL && + GET_CODE (NEXT_INSN (tmp)) != JUMP_INSN) + { + ltorg_uids[max_ltorg++] = INSN_UID (prev_real_insn (tmp)); + break; + } + if (GET_CODE (tmp) == CALL_INSN) + { + ltorg_uids[max_ltorg++] = INSN_UID (tmp); + break; + } + if (INSN_ADDRESSES (INSN_UID (tmp)) - naddr > S390_CHUNK_OV) + { + debug_rtx (insn); + debug_rtx (tmp); + fprintf (stderr, "s390 multiple literalpool support:" + "\n No code label between this insn %X %X", + naddr, INSN_ADDRESSES (INSN_UID (tmp))); + abort (); + } + } + if (tmp == NULL) + { + warning ("no code label found"); + } + } + else if (GET_CODE (PATTERN (insn)) == ASM_INPUT && !TARGET_64BIT) + { + asms = XSTR (PATTERN (insn),0); + + if ((memcmp (asms,".section",8) == 0) || + (memcmp (asms,".text",5) == 0) || + (memcmp (asms,"\t.section",9) == 0) || + (memcmp (asms,"\t.text",6) == 0)) { + ltorg_uids[max_ltorg++] = INSN_UID (insn); + INSN_ADDRESSES_NEW (emit_insn_before (gen_rtx_ASM_INPUT (VOIDmode, + ".align 4"), insn), -1); + } + } + } + ltorg_uids[max_ltorg] = 0; + for (insn=get_insns (),uids=0; insn;insn = next_real_insn (insn)) + { + if (GET_RTX_CLASS (GET_CODE (insn)) != 'i') + continue; + if (INSN_UID (insn) == ltorg_uids[uids]) + { + INSN_ADDRESSES_NEW (emit_insn_after (gen_ltorg ( + gen_rtx_CONST_INT (Pmode, ltorg_uids[++uids])), + insn), -1); + } + if (GET_CODE (insn) == JUMP_INSN) + { + insn = check_and_change_labels (insn, ltorg_uids); + } + } + if (chunkify) + { + for (insn=get_insns (); insn;insn = next_insn (insn)) + { + if (GET_CODE (insn) == CODE_LABEL) + { + if (SYMBOL_REF_USED (insn)) + { + INSN_ADDRESSES_NEW (emit_insn_after (gen_reload_base ( + gen_rtx_LABEL_REF (Pmode, XEXP (insn, 0))), insn), -1); + } + } + } + } + pool_stop_uid = ltorg_uids[0]; + } + + /* Return 1 if next literal pool is reached (check for ltorg insn) + maybe should use unspec insn. */ + + int + s390_stop_dump_lit_p (rtx insn) + { + rtx body=PATTERN (insn); + if (GET_CODE (body) == PARALLEL + && GET_CODE (XVECEXP (body, 0, 0)) == SET + && GET_CODE (XVECEXP (body, 0, 1)) == USE + && GET_CODE (XEXP ((XVECEXP (body, 0, 1)),0)) == CONST_INT + && GET_CODE (SET_DEST (XVECEXP (body, 0, 0))) == REG + && REGNO (SET_DEST (XVECEXP (body, 0, 0))) == BASE_REGISTER + && SET_SRC (XVECEXP (body, 0, 0)) == pc_rtx) { + return 1; + } + else + return 0; + } + + /* Output literal pool chunk to be used for insns + between ACT_INSN and STOP. */ + + void + s390_dump_literal_pool (rtx act_insn, rtx stop) + { + s390_pool_start_insn = act_insn; + pool_stop_uid = INTVAL (stop); + s390_pool_count++; + output_constant_pool (current_function_name, current_function_decl); + function_section (current_function_decl); + } + + + #ifdef DWARF2_DEBUGGING_INFO + extern char *dwarf2out_cfi_label PARAMS ((void)); + #endif + + /* Flag set in prologue, used in epilog to know + if stack is allocated or not. */ + + static int leaf_function_flag; + rtx s390_got_label; + rtx s390_profile[10]; + int s390_nr_constants; + + /* Returns 1 if floating point registers need to be saved. */ + + static int + save_fprs_p () + { + int i; + if (!TARGET_64BIT) + return 0; + for (i=24; i<=31; i++) + { + if (regs_ever_live[i] == 1) + return 1; + } + return 0; + } + + /* Current function is a leaf function, without automatics, + alloca or vararg stuff. */ + + static int + cur_is_leaf_function () + { + int lsize = get_frame_size () + current_function_outgoing_args_size + + save_fprs_p () * 64; + + if (leaf_function_p () && ((lsize) == 0) && + ! (current_function_calls_alloca) && + ! (current_function_stdarg) && ! (current_function_varargs)) + return 1; + return 0; + } + + /* Calculate offset between argument pointer and frame pointer + initialy after prologue. */ + + int + s390_arg_frame_offset () + { + int lsize = get_frame_size () + current_function_outgoing_args_size + + save_fprs_p () * 64; + + if (cur_is_leaf_function ()) + return STACK_POINTER_OFFSET; + else + return 2*STACK_POINTER_OFFSET + lsize; + } + + /* Output code to stdio stream FILE to save floating point + registers on current stack, at offset OFFSET to the frame + pointer register FP. */ + + static int + save_fprs (FILE *file, long offset, int fp) + { + int i; + + if (!TARGET_64BIT) + return 0; + + for (i=24; i<=31; i++) + { + if (regs_ever_live[i] == 1) + { + fprintf (file, "\tstd\t%s,%d(%s)\n", reg_names[i], + (i-24) * 8 + offset, reg_names[fp]); + } + } + } + + /* Output code to stdio stream FILE to restore floating point + registers from current stack, at offset OFFSET to the frame + pointer register FP. */ + + static int + restore_fprs (FILE *file, long offset, int fp) + { + int i; + + if (!TARGET_64BIT) + return 0; + + if (!save_fprs_p ()) + return 0; + + if (offset < 0) + { + fp = 1; + offset = 0; + fprintf (file, "\tlgr\t%s,%s\n", reg_names[fp], + reg_names[STACK_POINTER_REGNUM]); + fprintf (file, "\taghi\t%s,-64\n", reg_names[fp]); + } + + for (i=24; i<=31; i++) + { + if (regs_ever_live[i] == 1) + { + fprintf (file, "\tld\t%s,%d(%s)\n", reg_names[i], + (i-24) * 8 + offset, reg_names[fp]); + } + } + } + + /* Output constant pool in function prologue (31 bit) or in readonly section. */ + + static int + s390_output_constant_pool (FILE* file) + { + /* Output constant pool. */ + if (s390_nr_constants || regs_ever_live[BASE_REGISTER]) + { + s390_pool_count = 0; + if (TARGET_64BIT) + { + fprintf (file, "\tlarl\t%s,.LT%X_%X\n", reg_names[BASE_REGISTER], + s390_function_count, s390_pool_count); + readonly_data_section (); + ASM_OUTPUT_ALIGN (file, floor_log2 (3)); + } + else + { + fprintf (file, "\tbras\t%s,.LTN%X_%X\n", reg_names[BASE_REGISTER], + s390_function_count, s390_pool_count); + } + fprintf (file, ".LT%X_%X:\n", s390_function_count, s390_pool_count); + output_constant_pool (current_function_name, current_function_decl); + fprintf (file, ".LTN%X_%X:\n", s390_function_count, + s390_pool_count); + if (TARGET_64BIT) + function_section (current_function_decl); + + regs_ever_live[BASE_REGISTER] = 1; + } + } + + /* Add constant CTX to the constant pool at a late time + (after the initial pass to count the number of constants + was already done). Returns the resulting constant + pool reference. */ + + static rtx + s390_force_const_mem_late (rtx cst) + { + cst = force_const_mem (Pmode, cst); + + s390_nr_constants++; + regs_ever_live[BASE_REGISTER] = 1; + + emit_insn_before (gen_rtx (USE, Pmode, cst), get_insns ()); + + return cst; + } + + /* Add a reference to the symbol NAME to the constant pool. + FUNC specifies whether NAME refers to a function, while + GLOBAL specifies whether NAME is a global symbol. Depending + on these flags, the appopriate PLT or GOT references are + generated. Returns the constant pool reference. */ + + static rtx + s390_force_const_mem_symbol (char *name, int func, int global) + { + rtx symbol; + + if (TARGET_64BIT) + abort (); + + symbol = gen_rtx (SYMBOL_REF, Pmode, name); + SYMBOL_REF_FLAG (symbol) = !global; + + if (flag_pic) + { + if (global) + { + current_function_uses_pic_offset_table = 1; + symbol = gen_rtx_UNSPEC (VOIDmode, gen_rtvec (1, symbol), func? 114 : 112); + symbol = gen_rtx_CONST (VOIDmode, symbol); + } + else + { + symbol = gen_rtx_UNSPEC (VOIDmode, gen_rtvec (1, symbol), 100); + symbol = gen_rtx_CONST (VOIDmode, symbol); + } + } + + return s390_force_const_mem_late (symbol); + } + + /* Output the function prologue assembly code to the + stdio stream FILE. The local frame size is passed + in LSIZE. */ + + int + s390_function_prologue (FILE * file, int lsize) + { + extern int profile_label_no; + int i, j; + long frame_size; + rtx stack_label = 0, got_label = 0, tmp; + char *l; + char b64[2] = " "; + b64[0] = TARGET_64BIT ? 'g' : '\0'; + + /* Check for too large size of local variables */ + + if (lsize > 0x7fff0000) + fatal_error ("Total size of local variables exceeds architecture limit."); + /* Profile code (-p, -a, -ax needs some literals). */ + + if (profile_block_flag && !TARGET_64BIT) + { + s390_profile[0] = s390_force_const_mem_symbol ("__bb_init_func", 1, 1); + s390_profile[1] = s390_force_const_mem_symbol ("__bb_init_trace_func", 1, 1); + s390_profile[2] = s390_force_const_mem_symbol ("__bb_trace_func", 1, 1); + s390_profile[3] = s390_force_const_mem_symbol ("__bb_trace_ret", 1, 1); + s390_profile[5] = s390_force_const_mem_symbol ("__bb", 0, 1); + s390_profile[6] = s390_force_const_mem_symbol (".LPBX0", 0, 0); + s390_profile[7] = s390_force_const_mem_symbol (".LPBX2", 0, 0); + } + + if (profile_flag && !TARGET_64BIT) + { + static char label[128]; + sprintf (label, "%sP%d", LPREFIX, profile_label_no); + + s390_profile[4] = s390_force_const_mem_symbol ("_mcount", 1, 1); + s390_profile[9] = s390_force_const_mem_symbol (label, 0, 0); + } + + if (get_pool_size () > S390_POOL_MAX) + s390_final_chunkify (1); + else + s390_final_chunkify (0); + + if (current_function_uses_pic_offset_table) + regs_ever_live[12] = 1; + + if (!TARGET_64BIT && current_function_uses_pic_offset_table) + { + got_label = s390_force_const_mem_symbol ("_GLOBAL_OFFSET_TABLE_", 0, 0); + } + + if ((frame_size = + STARTING_FRAME_OFFSET + lsize + save_fprs_p () * 64) > 0x7fff) + { + stack_label = s390_force_const_mem_late (GEN_INT (frame_size)); + } + + if (!optimize) + { + /* Stupid register allocation is stupid ... + It does not always recognize the base register is used. */ + + regs_ever_live[BASE_REGISTER] = 1; + } + + if (cur_is_leaf_function ()) + { + leaf_function_flag = 1; + fprintf (file, "%s\tleaf function\n", ASM_COMMENT_START); + fprintf (file, "%s\thas varargs %d\n", ASM_COMMENT_START, + current_function_stdarg); + fprintf (file, "%s\tincoming args (stack) %d\n", ASM_COMMENT_START, + current_function_args_size); + fprintf (file, "%s\tfunction length %d\n", ASM_COMMENT_START, + insn_current_address); + fprintf (file, "%s\tregister live ", ASM_COMMENT_START); + for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) + fprintf (file, "%d", regs_ever_live[i]); + fputc ('\n',file); + + /* Save gprs 6 - 15 and fprs 4 and 6. */ + for (i = 6; i < 13 && (regs_ever_live[i] == 0); i++); + + if (s390_nr_constants || regs_ever_live[13] || i != 13) + { + fprintf (file, "\tstm%s\t%s,%s,%d(%s)\n", + b64, reg_names[i], reg_names[13], + i * UNITS_PER_WORD, + reg_names[STACK_POINTER_REGNUM]); + #ifdef INCOMING_RETURN_ADDR_RTX + if (dwarf2out_do_frame ()) + { + l = dwarf2out_cfi_label (); + dwarf2out_def_cfa (l, STACK_POINTER_REGNUM, + STACK_POINTER_OFFSET); + for (j = i; j <= 14; j++) + dwarf2out_reg_save (l, j, (TARGET_64BIT ? (j-20) : (j-24)) + * UNITS_PER_WORD); + if (regs_ever_live[18]) + dwarf2out_reg_save (l, 18, -16); + if (regs_ever_live[19]) + dwarf2out_reg_save (l, 19, -8); + } + #endif + } + + s390_output_constant_pool (file); + + /* Save fprs. */ + + if (!TARGET_64BIT) + { + if (regs_ever_live[18]) + fprintf (file, "\tstd\t4,80(%s)\n", reg_names[STACK_POINTER_REGNUM]); + if (regs_ever_live[19]) + fprintf (file, "\tstd\t6,88(%s)\n", reg_names[STACK_POINTER_REGNUM]); + } + } + else + { /* No leaf function. */ + fprintf (file, "%s\tleaf function %d\n", ASM_COMMENT_START, + leaf_function_p ()); + fprintf (file, "%s\tautomatics %d\n", ASM_COMMENT_START, + lsize); + fprintf (file, "%s\toutgoing args %d\n", ASM_COMMENT_START, + current_function_outgoing_args_size); + fprintf (file, "%s\tneed frame pointer %d\n", ASM_COMMENT_START, + frame_pointer_needed); + fprintf (file, "%s\tcall alloca %d\n", ASM_COMMENT_START, + current_function_calls_alloca); + fprintf (file, "%s\thas varargs %d\n", ASM_COMMENT_START, + current_function_stdarg || current_function_varargs); + fprintf (file, "%s\tincoming args (stack) %d\n", ASM_COMMENT_START, + current_function_args_size); + fprintf (file, "%s\tfunction length %d\n", ASM_COMMENT_START, + insn_current_address); + fprintf (file, "%s\tregister live ", ASM_COMMENT_START); + for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) + fprintf (file, "%d", regs_ever_live[i]); + fputc ('\n',file); + + /* Save gprs 6 - 15 and fprs 4 and 6. */ + + if (current_function_stdarg || current_function_varargs) + { + i = 2; + } + else + { + for (i = 6; i < 13 && (regs_ever_live[i] == 0); i++); + } + + fprintf (file, "\tstm%s\t%s,%s,%d(%s)\n", + b64, reg_names[i], reg_names[15], i * UNITS_PER_WORD, + reg_names[STACK_POINTER_REGNUM]); + + #ifdef INCOMING_RETURN_ADDR_RTX + if (dwarf2out_do_frame ()) + { + l = dwarf2out_cfi_label (); + dwarf2out_def_cfa (l, STACK_POINTER_REGNUM, STACK_POINTER_OFFSET); + for (j = i; j <= 15; j++) + dwarf2out_reg_save (l, j, (TARGET_64BIT ? (j-20) : (j-24)) * + UNITS_PER_WORD); + if (regs_ever_live[18]) + dwarf2out_reg_save (l, 18, -16); + if (regs_ever_live[19]) + dwarf2out_reg_save (l, 19, -8); + } + #endif + + s390_output_constant_pool (file); + + /* Save fprs. */ + + if (current_function_stdarg || current_function_varargs) + { + fprintf (file, "\tstd\t%s,%d(%s)\n", + reg_names[16], + STACK_POINTER_OFFSET-32, + reg_names[STACK_POINTER_REGNUM]); + fprintf (file, "\tstd\t%s,%d(%s)\n", + reg_names[17], + STACK_POINTER_OFFSET-24, + reg_names[STACK_POINTER_REGNUM]); + if (TARGET_64BIT) + { + fprintf (file, "\tstd\t%s,%d(%s)\n", + reg_names[18], + STACK_POINTER_OFFSET-16, + reg_names[STACK_POINTER_REGNUM]); + fprintf (file, "\tstd\t%s,%d(%s)\n", + reg_names[19], + STACK_POINTER_OFFSET-8, + reg_names[STACK_POINTER_REGNUM]); + } + } + if (!TARGET_64BIT) + { + if (regs_ever_live[18]) + fprintf (file, "\tstd\t%s,%d(%s)\n", + reg_names[18], + STACK_POINTER_OFFSET-16, + reg_names[STACK_POINTER_REGNUM]); + if (regs_ever_live[19]) + fprintf (file, "\tstd\t%s,%d(%s)\n", + reg_names[19], + STACK_POINTER_OFFSET-8, + reg_names[STACK_POINTER_REGNUM]); + } + + + if (save_fprs_p () && frame_size > 4095) + { + int fp = 1; + int offset = 0; + fprintf (file, "\tlgr\t%s,%s\n", reg_names[fp], + reg_names[STACK_POINTER_REGNUM]); + fprintf (file, "\taghi\t%s,-64\n", reg_names[fp]); + save_fprs (file, 0, fp); + } + + /* Decrement stack. */ + + if (TARGET_BACKCHAIN || (STARTING_FRAME_OFFSET + + lsize + STACK_POINTER_OFFSET > 4095 + || frame_pointer_needed + || current_function_calls_alloca)) + { + + fprintf (file, "\tl%sr\t%s,%s\n", b64, + reg_names[1], reg_names[STACK_POINTER_REGNUM]); + } + + if (stack_label) + { + rtx operands[2]; + + operands[0] = stack_pointer_rtx; + operands[1] = stack_label; + if (TARGET_64BIT) + output_asm_insn ("sg\t%0,%1", operands); + else + output_asm_insn ("s\t%0,%1", operands); + } + else + { + fprintf (file, "\ta%shi\t%s,-%d\n",b64, + reg_names[STACK_POINTER_REGNUM], frame_size); + } + #ifdef INCOMING_RETURN_ADDR_RTX + if (dwarf2out_do_frame ()) + { + if (frame_pointer_needed) + dwarf2out_def_cfa ("", HARD_FRAME_POINTER_REGNUM, + STACK_POINTER_OFFSET+frame_size); + else + dwarf2out_def_cfa ("", STACK_POINTER_REGNUM, + STACK_POINTER_OFFSET+frame_size); + } + #endif + + + /* Generate backchain. */ + + if (TARGET_BACKCHAIN || (STARTING_FRAME_OFFSET + + lsize + STACK_POINTER_OFFSET > 4095 + || frame_pointer_needed + || current_function_calls_alloca)) + { + fprintf (file, "\tst%s\t%s,0(%s)\n", + b64, reg_names[1], reg_names[STACK_POINTER_REGNUM]); + } + } + + if (frame_pointer_needed) + { + fprintf (file, "\tl%sr\t%s,%s\n", b64, + reg_names[FRAME_POINTER_REGNUM], + reg_names[STACK_POINTER_REGNUM]); + } + + /* Load GOT if used and emit use insn that optimizer does not + erase literal pool entry. */ + + if (current_function_uses_pic_offset_table) + { + rtx operands[3]; + if (TARGET_64BIT) + { + fprintf (file, "\tlarl\t%s,_GLOBAL_OFFSET_TABLE_\n", + reg_names[PIC_OFFSET_TABLE_REGNUM]); + } + else + { + operands[0] = gen_rtx (REG, Pmode, PIC_OFFSET_TABLE_REGNUM); + operands[1] = got_label; + operands[2] = gen_rtx (REG, Pmode, BASE_REGISTER); + output_asm_insn ("l\t%0,%1\n\tar\t%0,%2", operands); + } + } + /* Save FPRs below save area. */ + + if (frame_size <= 4095) + save_fprs (file, frame_size - 64, STACK_POINTER_REGNUM); + + return 0; + } + + /* Output the function epilogue assembly code to the + stdio stream FILE. The local frame size is passed + in LSIZE. */ + + int + s390_function_epilogue (FILE * file, int lsize) + { + /* Register is call clobbered and not used for eh or return. */ + #define FREE_REG 4 + + int i; + long frame_size; + int return_reg = RETURN_REGNUM; + int fp, offset; + char b64[2] = " "; + + b64[0] = TARGET_64BIT ? 'g' : '\0'; + frame_size = STARTING_FRAME_OFFSET + lsize + save_fprs_p () * 64; + + if (current_function_uses_pic_offset_table) + regs_ever_live[PIC_OFFSET_TABLE_REGNUM] = 1; + + if (leaf_function_flag) + { + for (i = 6; i < 13 && (regs_ever_live[i] == 0); i++); + + if (s390_nr_constants || regs_ever_live[13] || i != 13) + { + fprintf (file, "\tlm%s\t%s,%s,%d(%s)\n", b64, + reg_names[i], reg_names[13], + UNITS_PER_WORD * i, + reg_names[STACK_POINTER_REGNUM]); + } + if (!TARGET_64BIT) + { + if (regs_ever_live[18]) + fprintf (file, "\tld\t%s,%d(%s)\n", + reg_names[18], + STACK_POINTER_OFFSET-16, + reg_names[STACK_POINTER_REGNUM]); + if (regs_ever_live[19]) + fprintf (file, "\tld\t%s,%d(%s)\n", + reg_names[19], + STACK_POINTER_OFFSET-8, + reg_names[STACK_POINTER_REGNUM]); + } + } + else + { + for (i = 6; i < 13 && (regs_ever_live[i] == 0); i++); + + if (frame_size + STACK_POINTER_OFFSET > 4095) + { + offset = 0; + fp = STACK_POINTER_REGNUM; + } + else if (frame_pointer_needed || current_function_calls_alloca) + { + offset = frame_size; + fp = FRAME_POINTER_REGNUM; + } + else + { + offset = frame_size; + fp = STACK_POINTER_REGNUM; + } + + /* Restore from offset below save area. */ + + if (offset == 0) + fprintf (file, "\tl%s\t%s,0(%s)\n", b64, + reg_names[fp], reg_names[fp]); + restore_fprs (file, offset-64, fp); + return_reg = FREE_REG; + fprintf (file, "\tl%s\t%s,%d(%s)\n", b64, reg_names[return_reg], + UNITS_PER_WORD*RETURN_REGNUM+offset, reg_names[fp]); + if (!TARGET_64BIT) + { + if (regs_ever_live[18]) + fprintf (file, "\tld\t%s,%d(%s)\n", + reg_names[18], + offset+STACK_POINTER_OFFSET-16, reg_names[fp]); + if (regs_ever_live[19]) + fprintf (file, "\tld\t%s,%d(%s)\n", + reg_names[19], + offset+STACK_POINTER_OFFSET-8, reg_names[fp]); + } + fprintf (file, "\tlm%s\t%s,%s,%d(%s)\n", b64, + reg_names[i], reg_names[15], + (UNITS_PER_WORD * i) + offset, reg_names[fp]); + } + + fprintf (file, "\tbr\t%s\n", reg_names[return_reg]); + + current_function_uses_pic_offset_table = 0; + leaf_function_flag = 0; + s390_pool_start_insn = NULL_RTX; + s390_pool_count = -1; + s390_function_count++; + return 0; + } + + /* This is epilogue code, maybe should use generic in except.c. */ + + void + s390_expand_eh_epilogue (rtx reg1, rtx reg2, rtx reg3) + { + abort (); + } + + + /* Return the size in bytes of a function argument of + type TYPE and/or mode MODE. At least one of TYPE or + MODE must be specified. */ + + static int + s390_function_arg_size (enum machine_mode mode, tree type) + { + if (type) + return int_size_in_bytes (type); + + /* No type info available for some library calls ... */ + if (mode != BLKmode) + return GET_MODE_SIZE (mode); + + /* If we have neither type nor mode, abort */ + abort (); + } + + /* Return 1 if a function argument of type TYPE and mode MODE + is to be passed by reference. The ABI specifies that only + structures of size 1, 2, 4, or 8 bytes are passed by value, + all other structures (and complex numbers) are passed by + reference. */ + + int + s390_function_arg_pass_by_reference (enum machine_mode mode, tree type) + { + int size = s390_function_arg_size (mode, type); + + if (type) + { + if (AGGREGATE_TYPE_P (type) && + size != 1 && size != 2 && size != 4 && size != 8) + return 1; + + if (TREE_CODE (type) == COMPLEX_TYPE) + return 1; + } + return 0; + + } + + /* Update the data in CUM to advance over an argument of mode MODE and + data type TYPE. (TYPE is null for libcalls where that information + may not be available.). */ + + void + s390_function_arg_advance (CUMULATIVE_ARGS * cum, + enum machine_mode mode, tree type, int named) + { + if (! TARGET_SOFT_FLOAT && (mode == DFmode || mode == SFmode)) + { + cum->fprs++; + } + else if (s390_function_arg_pass_by_reference (mode, type)) + { + cum->gprs += 1; + } + else + { + int size = s390_function_arg_size (mode, type); + cum->gprs += ((size + UNITS_PER_WORD-1) / UNITS_PER_WORD); + } + } + + /* Define where to put the arguments to a function. + Value is zero to push the argument on the stack, + or a hard register in which to store the argument. + + MODE is the argument's machine mode. + TYPE is the data type of the argument (as a tree). + This is null for libcalls where that information may + not be available. + CUM is a variable of type CUMULATIVE_ARGS which gives info about + the preceding args and about the function being called. + NAMED is nonzero if this argument is a named parameter + (otherwise it is an extra parameter matching an ellipsis). + + On S/390, we use general purpose registers 2 through 6 to + pass integer, pointer, and certain structure arguments, and + floating point registers 0 and 2 (0, 2, 4, and 6 on 64-bit) + to pass floating point arguments. All remaining arguments + are pushed to the stack. */ + + rtx + s390_function_arg (CUMULATIVE_ARGS * cum, + enum machine_mode mode, tree type, int named) + { + if (s390_function_arg_pass_by_reference (mode, type)) + return 0; + + if (! TARGET_SOFT_FLOAT && (mode == DFmode || mode == SFmode)) + { + if (cum->fprs + 1 > (TARGET_64BIT? 4 : 2)) + return 0; + else + return gen_rtx (REG, mode, cum->fprs + 16); + } + else + { + int size = s390_function_arg_size (mode, type); + int n_gprs = (size + UNITS_PER_WORD-1) / UNITS_PER_WORD; + + if (cum->gprs + n_gprs > 5) + return 0; + else + return gen_rtx (REG, mode, cum->gprs + 2); + } + } + + + /* Create the va_list datatype. + + On S/390, va_list is a structure of four elements: + + __gpr: number of general purpose registers used for arguments + __fpr: number of floating point registers used for arguments + __overflow_arg_area: + address of area holding arguments that are not + passed in a register + __reg_save_area: + address of register save area; the function prologue + saves all registers used for argument passing into this + area, if the function uses variable arguments. */ + + tree + s390_build_va_list () + { + tree f_gpr, f_fpr, f_ovf, f_sav, record, type_decl; + + record = make_lang_type (RECORD_TYPE); + + type_decl = + build_decl (TYPE_DECL, get_identifier ("__va_list_tag"), record); + + f_gpr = build_decl (FIELD_DECL, get_identifier ("__gpr"), + long_integer_type_node); + f_fpr = build_decl (FIELD_DECL, get_identifier ("__fpr"), + long_integer_type_node); + f_ovf = build_decl (FIELD_DECL, get_identifier ("__overflow_arg_area"), + ptr_type_node); + f_sav = build_decl (FIELD_DECL, get_identifier ("__reg_save_area"), + ptr_type_node); + + DECL_FIELD_CONTEXT (f_gpr) = record; + DECL_FIELD_CONTEXT (f_fpr) = record; + DECL_FIELD_CONTEXT (f_ovf) = record; + DECL_FIELD_CONTEXT (f_sav) = record; + + TREE_CHAIN (record) = type_decl; + TYPE_NAME (record) = type_decl; + TYPE_FIELDS (record) = f_gpr; + TREE_CHAIN (f_gpr) = f_fpr; + TREE_CHAIN (f_fpr) = f_ovf; + TREE_CHAIN (f_ovf) = f_sav; + + layout_type (record); + + /* The correct type is an array type of one element. */ + return build_array_type (record, build_index_type (size_zero_node)); + } + + /* Implement va_start. + + The following global variables are used to initalize + the va_list structure: + + current_function_args_info: + holds number of gprs and fprs used for arguments. + current_function_arg_offset_rtx: + holds the offset to the overflow argument area on the stack + (relative to the virtual arg pointer). */ + + void + s390_va_start (int stdarg_p, tree valist, rtx nextarg) + { + HOST_WIDE_INT n_gpr, n_fpr; + int off; + tree f_gpr, f_fpr, f_ovf, f_sav; + tree gpr, fpr, ovf, sav, t; + + f_gpr = TYPE_FIELDS (TREE_TYPE (va_list_type_node)); + f_fpr = TREE_CHAIN (f_gpr); + f_ovf = TREE_CHAIN (f_fpr); + f_sav = TREE_CHAIN (f_ovf); + + valist = build1 (INDIRECT_REF, TREE_TYPE (TREE_TYPE (valist)), valist); + gpr = build (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr); + fpr = build (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr); + ovf = build (COMPONENT_REF, TREE_TYPE (f_ovf), valist, f_ovf); + sav = build (COMPONENT_REF, TREE_TYPE (f_sav), valist, f_sav); + + /* Count number of gp and fp argument registers used. */ + + n_gpr = current_function_args_info.gprs; + n_fpr = current_function_args_info.fprs; + + t = build (MODIFY_EXPR, TREE_TYPE (gpr), gpr, build_int_2 (n_gpr, 0)); + TREE_SIDE_EFFECTS (t) = 1; + expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL); + + t = build (MODIFY_EXPR, TREE_TYPE (fpr), fpr, build_int_2 (n_fpr, 0)); + TREE_SIDE_EFFECTS (t) = 1; + expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL); + + /* Find the overflow area. */ + t = make_tree (TREE_TYPE (ovf), virtual_incoming_args_rtx); + + off = INTVAL (current_function_arg_offset_rtx); + off = off < 0 ? 0 : off; + if (! stdarg_p) + off = off > 0 ? off - UNITS_PER_WORD : off; + if (TARGET_DEBUG_ARG) + fprintf (stderr, "va_start: n_gpr = %d, n_fpr = %d off %d\n", + n_gpr, n_fpr, off); + + t = build (PLUS_EXPR, TREE_TYPE (ovf), t, build_int_2 (off, 0)); + + t = build (MODIFY_EXPR, TREE_TYPE (ovf), ovf, t); + TREE_SIDE_EFFECTS (t) = 1; + expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL); + + /* Find the register save area. */ + t = make_tree (TREE_TYPE (sav), virtual_incoming_args_rtx); + t = build (PLUS_EXPR, TREE_TYPE (sav), t, + build_int_2 (-STACK_POINTER_OFFSET, -1)); + t = build (MODIFY_EXPR, TREE_TYPE (sav), sav, t); + TREE_SIDE_EFFECTS (t) = 1; + expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL); + } + + /* Implement va_arg. + + Generates code equivalent to: + + if (integral value) { + if (size <= 4 && args.gpr < 5 || + size > 4 && args.gpr < 4 ) + ret = args.reg_save_area[args.gpr+8] + else + ret = *args.overflow_arg_area++; + } else if (float value) { + if (args.fgpr < 2) + ret = args.reg_save_area[args.fpr+64] + else + ret = *args.overflow_arg_area++; + } else if (aggregate value) { + if (args.gpr < 5) + ret = *args.reg_save_area[args.gpr] + else + ret = **args.overflow_arg_area++; + } */ + + rtx + s390_va_arg (tree valist, tree type) + { + tree f_gpr, f_fpr, f_ovf, f_sav; + tree gpr, fpr, ovf, sav, reg, t, u; + int indirect_p, size, n_reg, sav_ofs, sav_scale, max_reg; + rtx lab_false, lab_over, addr_rtx, r; + + f_gpr = TYPE_FIELDS (TREE_TYPE (va_list_type_node)); + f_fpr = TREE_CHAIN (f_gpr); + f_ovf = TREE_CHAIN (f_fpr); + f_sav = TREE_CHAIN (f_ovf); + + valist = build1 (INDIRECT_REF, TREE_TYPE (TREE_TYPE (valist)), valist); + gpr = build (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr); + fpr = build (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr); + ovf = build (COMPONENT_REF, TREE_TYPE (f_ovf), valist, f_ovf); + sav = build (COMPONENT_REF, TREE_TYPE (f_sav), valist, f_sav); + + size = int_size_in_bytes (type); + + if (s390_function_arg_pass_by_reference (TYPE_MODE (type), type)) + { + if (TARGET_DEBUG_ARG) + { + fprintf (stderr, "va_arg: aggregate type"); + debug_tree (type); + } + + /* Aggregates are passed by reference. */ + indirect_p = 1; + reg = gpr; + n_reg = 1; + sav_ofs = 2 * UNITS_PER_WORD; + sav_scale = UNITS_PER_WORD; + size = UNITS_PER_WORD; + max_reg = 4; + } + else if (FLOAT_TYPE_P (type) && ! TARGET_SOFT_FLOAT) + { + if (TARGET_DEBUG_ARG) + { + fprintf (stderr, "va_arg: float type"); + debug_tree (type); + } + + /* FP args go in FP registers, if present. */ + indirect_p = 0; + reg = fpr; + n_reg = 1; + sav_ofs = 16 * UNITS_PER_WORD; + sav_scale = 8; + /* TARGET_64BIT has up to 4 parameter in fprs */ + max_reg = TARGET_64BIT ? 3 : 1; + } + else + { + if (TARGET_DEBUG_ARG) + { + fprintf (stderr, "va_arg: other type"); + debug_tree (type); + } + + /* Otherwise into GP registers. */ + indirect_p = 0; + reg = gpr; + n_reg = (size + UNITS_PER_WORD - 1) / UNITS_PER_WORD; + sav_ofs = 2 * UNITS_PER_WORD; + if (TARGET_64BIT) + sav_ofs += TYPE_MODE (type) == SImode ? 4 : + TYPE_MODE (type) == HImode ? 6 : + TYPE_MODE (type) == QImode ? 7 : 0; + else + sav_ofs += TYPE_MODE (type) == HImode ? 2 : + TYPE_MODE (type) == QImode ? 3 : 0; + + sav_scale = UNITS_PER_WORD; + if (n_reg > 1) + max_reg = 3; + else + max_reg = 4; + } + + /* Pull the value out of the saved registers ... */ + + lab_false = gen_label_rtx (); + lab_over = gen_label_rtx (); + addr_rtx = gen_reg_rtx (Pmode); + + emit_cmp_and_jump_insns (expand_expr (reg, NULL_RTX, Pmode, EXPAND_NORMAL), + GEN_INT (max_reg), + GT, const1_rtx, Pmode, 0, 1, lab_false); + + if (sav_ofs) + t = build (PLUS_EXPR, ptr_type_node, sav, build_int_2 (sav_ofs, 0)); + else + t = sav; + + u = build (MULT_EXPR, long_integer_type_node, + reg, build_int_2 (sav_scale, 0)); + TREE_SIDE_EFFECTS (u) = 1; + + t = build (PLUS_EXPR, ptr_type_node, t, u); + TREE_SIDE_EFFECTS (t) = 1; + + r = expand_expr (t, addr_rtx, Pmode, EXPAND_NORMAL); + if (r != addr_rtx) + emit_move_insn (addr_rtx, r); + + + emit_jump_insn (gen_jump (lab_over)); + emit_barrier (); + emit_label (lab_false); + + /* ... Otherwise out of the overflow area. */ + + t = save_expr (ovf); + + + /* In 64 BIT for each argument on stack, a full 64 bit slot is allocated. */ + if (size < UNITS_PER_WORD) + { + t = build (PLUS_EXPR, TREE_TYPE (t), t, build_int_2 (UNITS_PER_WORD-size, 0)); + t = build (MODIFY_EXPR, TREE_TYPE (ovf), ovf, t); + TREE_SIDE_EFFECTS (t) = 1; + expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL); + + t = save_expr (ovf); + } + + r = expand_expr (t, addr_rtx, Pmode, EXPAND_NORMAL); + if (r != addr_rtx) + emit_move_insn (addr_rtx, r); + + t = build (PLUS_EXPR, TREE_TYPE (t), t, build_int_2 (size, 0)); + t = build (MODIFY_EXPR, TREE_TYPE (ovf), ovf, t); + TREE_SIDE_EFFECTS (t) = 1; + expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL); + + emit_label (lab_over); + + /* If less than max_regs a registers are retrieved out + of register save area, increment. */ + + u = build (PREINCREMENT_EXPR, TREE_TYPE (reg), reg, + build_int_2 (n_reg, 0)); + TREE_SIDE_EFFECTS (u) = 1; + expand_expr (u, const0_rtx, VOIDmode, EXPAND_NORMAL); + + if (indirect_p) + { + r = gen_rtx_MEM (Pmode, addr_rtx); + MEM_ALIAS_SET (r) = get_varargs_alias_set (); + emit_move_insn (addr_rtx, r); + } + + + return addr_rtx; + } + + /* Do what is necessary for `va_start'. The argument is ignored; + we look at the current function to determine if stdarg or varargs + is used. */ + + rtx + s390_builtin_saveregs (arglist) + tree arglist ATTRIBUTE_UNUSED; + { + rtx off, block, dest, tmp; + tree fntype = TREE_TYPE (current_function_decl); + + int stdarg = (TYPE_ARG_TYPES (fntype) != 0 + && (TREE_VALUE (tree_last (TYPE_ARG_TYPES (fntype))) + != void_type_node)); + + /* Allocate the va_list block. */ + + block = assign_stack_local (BLKmode, 4 * UNITS_PER_WORD, BITS_PER_WORD); + RTX_UNCHANGING_P (block) = 1; + RTX_UNCHANGING_P (XEXP (block, 0)) = 1; + + /* Store the # of named gpr and fpr in 1st and 2nd word of va_list. */ + + dest = change_address (block, ptr_mode, + plus_constant (XEXP (block, 0), 0)); + emit_move_insn (dest, GEN_INT (current_function_args_info.gprs)); + dest = change_address (block, ptr_mode, + plus_constant (XEXP (block, 0), UNITS_PER_WORD)); + emit_move_insn (dest, GEN_INT (current_function_args_info.fprs)); + + /* Store the address of the overflow area in 3rd word of va_list. */ + + if (stdarg) + off = current_function_arg_offset_rtx; + else + { + if (GET_CODE (current_function_arg_offset_rtx) != CONST_INT) + { + debug_rtx (current_function_arg_offset_rtx); + abort (); + } + + if (INTVAL (current_function_arg_offset_rtx) != 0) + off = gen_rtx_CONST_INT (Pmode, + INTVAL (current_function_arg_offset_rtx)- + UNITS_PER_WORD); + else + off = current_function_arg_offset_rtx; + } + + dest = change_address (block, ptr_mode, + plus_constant (XEXP (block, 0), + 2 * UNITS_PER_WORD)); + + tmp = expand_binop (Pmode, add_optab, virtual_incoming_args_rtx, + off, + dest, 0, OPTAB_WIDEN); + if (tmp != dest) + emit_move_insn (dest, tmp); + + /* Store the address of the register save area in 4th word of va_list. */ + + dest = change_address (block, ptr_mode, + plus_constant (XEXP (block, 0), + 3 * UNITS_PER_WORD)); + + tmp = expand_binop (Pmode, add_optab, virtual_incoming_args_rtx, + GEN_INT (-STACK_POINTER_OFFSET), + dest, 0, OPTAB_WIDEN); + if (tmp != dest) + emit_move_insn (dest, tmp); + + /* Return the address of the va_list block. */ + + return XEXP (block, 0); + } + + + /* Output assembly code for the trampoline template to + stdio stream FILE. + + On S/390, we use gpr 1 internally in the trampoline code; + gpr 0 is used to hold the static chain. */ + + void + s390_trampoline_template (FILE * file) + { + if (TARGET_64BIT) + { + fprintf (file, "larl\t%s,0f\n", reg_names[1]); + fprintf (file, "lg\t%s,0(%s)\n", reg_names[0], reg_names[1]); + fprintf (file, "lg\t%s,8(%s)\n", reg_names[1], reg_names[1]); + fprintf (file, "br\t%s\n", reg_names[1]); + fprintf (file, "0:\t.quad\t0\n"); + fprintf (file, ".quad\t0\n"); + } + else + { + fprintf (file, "basr\t%s,0\n", reg_names[1]); + fprintf (file, "l\t%s,10(%s)\n", reg_names[0], reg_names[1]); + fprintf (file, "l\t%s,14(%s)\n", reg_names[1], reg_names[1]); + fprintf (file, "br\t%s\n", reg_names[1]); + fprintf (file, ".long\t0\n"); + fprintf (file, ".long\t0\n"); + } + } + + /* Emit RTL insns to initialize the variable parts of a trampoline. + FNADDR is an RTX for the address of the function's pure code. + CXT is an RTX for the static chain value for the function. */ + + void + s390_initialize_trampoline (addr, fnaddr, cxt) + rtx addr; + rtx fnaddr; + rtx cxt; + { + emit_move_insn (gen_rtx + (MEM, Pmode, + memory_address (Pmode, + plus_constant (addr, (TARGET_64BIT ? 20 : 12) ))), cxt); + emit_move_insn (gen_rtx + (MEM, Pmode, + memory_address (Pmode, + plus_constant (addr, (TARGET_64BIT ? 28 : 16) ))), fnaddr); + } diff -Nrc3pad gcc-3.0/gcc/config/s390/s390.h gcc-3.0.1/gcc/config/s390/s390.h *** gcc-3.0/gcc/config/s390/s390.h Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/config/s390/s390.h Fri Aug 10 15:19:19 2001 *************** *** 0 **** --- 1,1881 ---- + /* Definitions of target machine for GNU compiler, for IBM S/390 + Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. + Contributed by Hartmut Penner (hpenner@de.ibm.com) and + Ulrich Weigand (uweigand@de.ibm.com). + This file is part of GNU CC. + + GNU CC is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GNU CC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU CC; see the file COPYING. If not, write to + the Free Software Foundation, 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + + #ifndef _S390_H + #define _S390_H + + #define TARGET_VERSION fprintf (stderr, " (S/390)"); + + extern int flag_pic; + + /* Run-time compilation parameters selecting different hardware subsets. */ + + extern int target_flags; + + /* Target macros checked at runtime of compiler. */ + + #define TARGET_HARD_FLOAT (target_flags & 1) + #define TARGET_BACKCHAIN (target_flags & 2) + #define TARGET_SMALL_EXEC (target_flags & 4) + #define TARGET_DEBUG_ARG (target_flags & 8) + #define TARGET_64BIT (target_flags & 16) + #define TARGET_MVCLE (target_flags & 32) + + #define TARGET_DEFAULT 0x3 + #define TARGET_SOFT_FLOAT (!(target_flags & 1)) + + /* Macro to define tables used to set the flags. This is a list in braces + of pairs in braces, each pair being { "NAME", VALUE } + where VALUE is the bits to set or minus the bits to clear. + An empty string NAME is used to identify the default VALUE. */ + + #define TARGET_SWITCHES \ + { { "hard-float", 1, N_("Use hardware fp")}, \ + { "soft-float", -1, N_("Don't use hardware fp")}, \ + { "backchain", 2, N_("Set backchain")}, \ + { "no-backchain", -2, N_("Don't set backchain (faster, but debug harder")}, \ + { "small-exec", 4, N_("Use bras for execucable < 64k")}, \ + { "no-small-exec",-4, N_("Don't use bras")}, \ + { "debug", 8, N_("Additional debug prints")}, \ + { "no-debug", -8, N_("Don't print additional debug prints")}, \ + { "64", 16, N_("64 bit mode")}, \ + { "31", -16, N_("31 bit mode")}, \ + { "mvcle", 32, N_("mvcle use")}, \ + { "no-mvcle", -32, N_("mvc&ex")}, \ + { "", TARGET_DEFAULT, 0 } } + + /* Define this to change the optimizations performed by default. */ + #define OPTIMIZATION_OPTIONS(LEVEL, SIZE) optimization_options(LEVEL, SIZE) + + /* Defines for REAL_ARITHMETIC. */ + #define IEEE_FLOAT 1 + #define TARGET_IBM_FLOAT 0 + #define TARGET_IEEE_FLOAT 1 + + /* The current function count for create unique internal labels. */ + + extern int s390_function_count; + + /* The amount of space used for outgoing arguments. */ + + extern int current_function_outgoing_args_size; + + /* Target machine storage layout. */ + + /* Define this if most significant bit is lowest numbered in instructions + that operate on numbered bit-fields. */ + + #define BITS_BIG_ENDIAN 1 + + /* Define this if most significant byte of a word is the lowest numbered. */ + + #define BYTES_BIG_ENDIAN 1 + + /* Define this if MS word of a multiword is the lowest numbered. */ + + #define WORDS_BIG_ENDIAN 1 + + /* Number of bits in an addressable storage unit. */ + + #define BITS_PER_UNIT 8 + + /* Width in bits of a "word", which is the contents of a machine register. */ + + #define BITS_PER_WORD (TARGET_64BIT ? 64 : 32) + #define MAX_BITS_PER_WORD 64 + + /* Width of a word, in units (bytes). */ + + #define UNITS_PER_WORD (TARGET_64BIT ? 8 : 4) + #define MIN_UNITS_PER_WORD 4 + + /* Width in bits of a pointer. See also the macro `Pmode' defined below. */ + + #define POINTER_SIZE (TARGET_64BIT ? 64 : 32) + + /* A C expression for the size in bits of the type `short' on the + target machine. If you don't define this, the default is half a + word. (If this would be less than one storage unit, it is + rounded up to one unit.) */ + #define SHORT_TYPE_SIZE 16 + + /* A C expression for the size in bits of the type `int' on the + target machine. If you don't define this, the default is one + word. */ + #define INT_TYPE_SIZE 32 + + /* A C expression for the size in bits of the type `long' on the + target machine. If you don't define this, the default is one + word. */ + #define LONG_TYPE_SIZE (TARGET_64BIT ? 64 : 32) + #define MAX_LONG_TYPE_SIZE 64 + + /* A C expression for the size in bits of the type `long long' on the + target machine. If you don't define this, the default is two + words. */ + #define LONG_LONG_TYPE_SIZE 64 + + /* Right now we only support two floating point formats, the + 32 and 64 bit ieee formats. */ + + #define FLOAT_TYPE_SIZE 32 + #define DOUBLE_TYPE_SIZE 64 + #define LONG_DOUBLE_TYPE_SIZE 64 + + /* Define this macro if it is advisable to hold scalars in registers + in a wider mode than that declared by the program. In such cases, + the value is constrained to be within the bounds of the declared + type, but kept valid in the wider mode. The signedness of the + extension may differ from that of the type. */ + + #define PROMOTE_MODE(MODE, UNSIGNEDP, TYPE) \ + if (INTEGRAL_MODE_P (MODE) && \ + GET_MODE_SIZE (MODE) < UNITS_PER_WORD) { \ + (MODE) = Pmode; \ + } + + /* Defining PROMOTE_FUNCTION_ARGS eliminates some unnecessary zero/sign + extensions applied to char/short functions arguments. Defining + PROMOTE_FUNCTION_RETURN does the same for function returns. */ + + #define PROMOTE_FUNCTION_ARGS + #define PROMOTE_FUNCTION_RETURN + #define PROMOTE_FOR_CALL_ONLY + + /* Allocation boundary (in *bits*) for storing pointers in memory. */ + + #define POINTER_BOUNDARY 32 + + /* Allocation boundary (in *bits*) for storing arguments in argument list. */ + + #define PARM_BOUNDARY (TARGET_64BIT ? 64 : 32) + + /* Boundary (in *bits*) on which stack pointer should be aligned. */ + + #define STACK_BOUNDARY 64 + + /* Allocation boundary (in *bits*) for the code of a function. */ + + #define FUNCTION_BOUNDARY 32 + + /* There is no point aligning anything to a rounder boundary than this. */ + + #define BIGGEST_ALIGNMENT 64 + + /* Alignment of field after `int : 0' in a structure. */ + + #define EMPTY_FIELD_BOUNDARY 32 + + /* Alignment on even adresses for LARL instruction. */ + + #define CONSTANT_ALIGNMENT(EXP, ALIGN) (ALIGN) < 16 ? 16 : (ALIGN) + + #define DATA_ALIGNMENT(TYPE, ALIGN) (ALIGN) < 16 ? 16 : (ALIGN) + + /* Define this if move instructions will actually fail to work when given + unaligned data. */ + + #define STRICT_ALIGNMENT 0 + + /* real arithmetic */ + + #define REAL_ARITHMETIC + + /* Define target floating point format. */ + + #undef TARGET_FLOAT_FORMAT + #ifdef IEEE_FLOAT + #define TARGET_FLOAT_FORMAT IEEE_FLOAT_FORMAT + #else + #define TARGET_FLOAT_FORMAT IBM_FLOAT_FORMAT + #endif + + /* Define if special allocation order desired. */ + + #define REG_ALLOC_ORDER \ + { 1, 2, 3, 4, 5, 0, 14, 13, 12, 11, 10, 9, 8, 7, 6, \ + 16, 17, 18, 19, 20, 21, 22, 23, \ + 24, 25, 26, 27, 28, 29, 30, 31, \ + 15, 32, 33 } + + /* Standard register usage. */ + + #define INT_REGNO_P(N) ( (N) >= 0 && (N) < 16 ) + #ifdef IEEE_FLOAT + #define FLOAT_REGNO_P(N) ( (N) >= 16 && (N) < 32 ) + #else + #define FLOAT_REGNO_P(N) ( (N) >= 16 && (N) < 20 ) + #endif + #define CC_REGNO_P(N) ( (N) == 33 ) + + /* Number of actual hardware registers. The hardware registers are + assigned numbers for the compiler from 0 to just below + FIRST_PSEUDO_REGISTER. + All registers that the compiler knows about must be given numbers, + even those that are not normally considered general registers. + For the 390, we give the data registers numbers 0-15, + and the floating point registers numbers 16-19. + G5 and following have 16 IEEE floating point register, + which get numbers 16-31. */ + + #define FIRST_PSEUDO_REGISTER 34 + + /* The following register have a fix usage + GPR 12: GOT register points to the GOT, setup in prologue, + GOT contains pointer to variables in shared libraries + GPR 13: Base register setup in prologue to point to the + literal table of each function + GPR 14: Return registers holds the return address + GPR 15: Stack pointer */ + + #define PIC_OFFSET_TABLE_REGNUM 12 + #define BASE_REGISTER 13 + #define RETURN_REGNUM 14 + #define STACK_POINTER_REGNUM 15 + + #define FIXED_REGISTERS \ + { 0, 0, 0, 0, \ + 0, 0, 0, 0, \ + 0, 0, 0, 0, \ + 0, 1, 1, 1, \ + 0, 0, 0, 0, \ + 0, 0, 0, 0, \ + 0, 0, 0, 0, \ + 0, 0, 0, 0, \ + 1, 1 } + + /* 1 for registers not available across function calls. These must include + the FIXED_REGISTERS and also any registers that can be used without being + saved. + The latter must include the registers where values are returned + and the register where structure-value addresses are passed. */ + + #define CALL_USED_REGISTERS \ + { 1, 1, 1, 1, \ + 1, 1, 0, 0, \ + 0, 0, 0, 0, \ + 0, 1, 1, 1, \ + 1, 1, 0, 0, \ + 1, 1, 1, 1, \ + 1, 1, 1, 1, \ + 1, 1, 1, 1, \ + 1, 1 } + + /* If not pic code, gpr 12 can be used. */ + + #define CONDITIONAL_REGISTER_USAGE \ + do \ + { \ + if (flag_pic) \ + { \ + fixed_regs[PIC_OFFSET_TABLE_REGNUM] = 1; \ + call_used_regs[PIC_OFFSET_TABLE_REGNUM] = 1; \ + } \ + } while (0) + + /* The following register have a special usage + GPR 11: Frame pointer if needed to point to automatic variables. + GPR 32: In functions with more the 5 args this register + points to that arguments, it is always eliminated + with stack- or frame-pointer. + GPR 33: Condition code 'register' */ + + #define FRAME_POINTER_REGNUM 11 + + #define ARG_POINTER_REGNUM 32 + + #define CC_REGNUM 33 + + /* We use the register %r0 to pass the static chain to a nested function. + + Note: It is assumed that this register is call-clobbered! + We can't use any of the function-argument registers either, + and register 1 is needed by the trampoline code, so we have + no other choice but using this one ... */ + + #define STATIC_CHAIN_REGNUM 0 + + /* Return number of consecutive hard regs needed starting at reg REGNO + to hold something of mode MODE. + This is ordinarily the length in words of a value of mode MODE + but can be less for certain modes in special long registers. */ + + #define HARD_REGNO_NREGS(REGNO, MODE) \ + (FLOAT_REGNO_P(REGNO)? \ + (GET_MODE_CLASS(MODE) == MODE_COMPLEX_FLOAT ? 2 : 1) : \ + INT_REGNO_P(REGNO)? \ + ((GET_MODE_SIZE(MODE)+UNITS_PER_WORD-1) / UNITS_PER_WORD) : \ + 1) + + /* Value is 1 if hard register REGNO can hold a value of machine-mode MODE. + The gprs can hold QI, HI, SI, SF, DF, SC and DC. + Even gprs can hold DI. + The floating point registers can hold DF, SF, DC and SC. */ + + #define HARD_REGNO_MODE_OK(REGNO, MODE) \ + (FLOAT_REGNO_P(REGNO)? \ + (GET_MODE_CLASS(MODE) == MODE_FLOAT || \ + GET_MODE_CLASS(MODE) == MODE_COMPLEX_FLOAT) : \ + INT_REGNO_P(REGNO)? \ + (HARD_REGNO_NREGS(REGNO, MODE) == 1 || !((REGNO) & 1)) : \ + CC_REGNO_P(REGNO)? \ + GET_MODE_CLASS (MODE) == MODE_CC : \ + 0) + + /* Value is 1 if it is a good idea to tie two pseudo registers when one has + mode MODE1 and one has mode MODE2. + If HARD_REGNO_MODE_OK could produce different values for MODE1 and MODE2, + for any hard reg, then this must be 0 for correct output. */ + + #define MODES_TIEABLE_P(MODE1, MODE2) \ + (((MODE1) == SFmode || (MODE1) == DFmode) \ + == ((MODE2) == SFmode || (MODE2) == DFmode)) + + + /* Define this macro if references to a symbol must be treated + differently depending on something about the variable or + function named by the symbol (such as what section it is in). + + On s390, if using PIC, mark a SYMBOL_REF for a non-global symbol + so that we may access it directly in the GOT. */ + + #define ENCODE_SECTION_INFO(DECL) \ + do \ + { \ + if (flag_pic) \ + { \ + rtx rtl = (TREE_CODE_CLASS (TREE_CODE (DECL)) != 'd' \ + ? TREE_CST_RTL (DECL) : DECL_RTL (DECL)); \ + \ + if (GET_CODE (rtl) == MEM) \ + { \ + SYMBOL_REF_FLAG (XEXP (rtl, 0)) \ + = (TREE_CODE_CLASS (TREE_CODE (DECL)) != 'd' \ + || ! TREE_PUBLIC (DECL)); \ + } \ + } \ + } \ + while (0) + + + /* This is an array of structures. Each structure initializes one pair + of eliminable registers. The "from" register number is given first, + followed by "to". Eliminations of the same "from" register are listed + in order of preference. */ + + #define ELIMINABLE_REGS \ + {{ FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}, \ + { ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, \ + { ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM}} + + #define CAN_ELIMINATE(FROM, TO) (1) + + #define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \ + { if ((FROM) == FRAME_POINTER_REGNUM && (TO) == STACK_POINTER_REGNUM) \ + { (OFFSET) = 0; } \ + else if ((FROM) == ARG_POINTER_REGNUM && (TO) == FRAME_POINTER_REGNUM) \ + { (OFFSET) = s390_arg_frame_offset (); } \ + else if ((FROM) == ARG_POINTER_REGNUM && (TO) == STACK_POINTER_REGNUM) \ + { (OFFSET) = s390_arg_frame_offset (); } \ + } + + #define CAN_DEBUG_WITHOUT_FP + + /* Value should be nonzero if functions must have frame pointers. + Zero means the frame pointer need not be set up (and parms may be + accessed via the stack pointer) in functions that seem suitable. + This is computed in `reload', in reload1.c. */ + + #define FRAME_POINTER_REQUIRED 0 + + /* Define the classes of registers for register constraints in the + machine description. Also define ranges of constants. + + One of the classes must always be named ALL_REGS and include all hard regs. + If there is more than one class, another class must be named NO_REGS + and contain no registers. + + The name GENERAL_REGS must be the name of a class (or an alias for + another name such as ALL_REGS). This is the class of registers + that is allowed by "g" or "r" in a register constraint. + Also, registers outside this class are allocated only when + instructions express preferences for them. + + The classes must be numbered in nondecreasing order; that is, + a larger-numbered class must never be contained completely + in a smaller-numbered class. + + For any two classes, it is very desirable that there be another + class that represents their union. */ + + /*#define SMALL_REGISTER_CLASSES 1*/ + + enum reg_class + { + NO_REGS, ADDR_REGS, GENERAL_REGS, + FP_REGS, ALL_REGS, LIM_REG_CLASSES + }; + + #define N_REG_CLASSES (int) LIM_REG_CLASSES + + /* Give names of register classes as strings for dump file. */ + + #define REG_CLASS_NAMES \ + { "NO_REGS","ADDR_REGS", "GENERAL_REGS", "FP_REGS", "ALL_REGS" } + + /* Define which registers fit in which classes. This is an initializer for + a vector of HARD_REG_SET of length N_REG_CLASSES. + G5 and latter have 16 register and support IEEE floating point operations. */ + + #define REG_CLASS_CONTENTS \ + { \ + { 0x00000000, 0x00000000 }, /* NO_REGS */ \ + { 0x0000fffe, 0x00000001 }, /* ADDR_REGS */ \ + { 0x0000ffff, 0x00000001 }, /* GENERAL_REGS */ \ + { 0xffff0000, 0x00000000 }, /* FP_REGS */ \ + { 0xffffffff, 0x00000003 }, /* ALL_REGS */ \ + } + + + /* The same information, inverted: + Return the class number of the smallest class containing + reg number REGNO. This could be a conditional expression + or could index an array. */ + + #define REGNO_REG_CLASS(REGNO) (regclass_map[REGNO]) + + extern enum reg_class regclass_map[]; /* smalled class containing REGNO */ + + /* The class value for index registers, and the one for base regs. */ + + #define INDEX_REG_CLASS ADDR_REGS + #define BASE_REG_CLASS ADDR_REGS + + /* Get reg_class from a letter such as appears in the machine description. */ + + #define REG_CLASS_FROM_LETTER(C) \ + ((C) == 'a' ? ADDR_REGS : \ + (C) == 'd' ? GENERAL_REGS : \ + (C) == 'f' ? FP_REGS : NO_REGS) + + /* The letters I, J, K, L and M in a register constraint string can be used + to stand for particular ranges of immediate operands. + This macro defines what the ranges are. + C is the letter, and VALUE is a constant value. + Return 1 if VALUE is in the range specified by C. */ + + #define CONST_OK_FOR_LETTER_P(VALUE, C) \ + ((C) == 'I' ? (unsigned long) (VALUE) < 256 : \ + (C) == 'J' ? (unsigned long) (VALUE) < 4096 : \ + (C) == 'K' ? (VALUE) >= -32768 && (VALUE) < 32768 : \ + (C) == 'L' ? (unsigned long) (VALUE) < 65536 : 0) + + /* Similar, but for floating constants, and defining letters G and H. + Here VALUE is the CONST_DOUBLE rtx itself. */ + + #define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) 1 + + /* 'Q' means a memory-reference for a S-type operand. */ + + #define EXTRA_CONSTRAINT(OP, C) \ + ((C) == 'Q' ? s_operand (OP, GET_MODE (OP)) : \ + (C) == 'S' ? larl_operand (OP, GET_MODE (OP)) : 0) + + /* Given an rtx X being reloaded into a reg required to be in class CLASS, + return the class of reg to actually use. In general this is just CLASS; + but on some machines in some cases it is preferable to use a more + restrictive class. */ + + #define PREFERRED_RELOAD_CLASS(X, CLASS) \ + (GET_CODE (X) == CONST_DOUBLE ? \ + (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT ? FP_REGS : ADDR_REGS) :\ + (GET_CODE (X) == CONST_INT ? \ + (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT ? FP_REGS : ADDR_REGS) :\ + GET_CODE (X) == PLUS || \ + GET_CODE (X) == LABEL_REF || \ + GET_CODE (X) == SYMBOL_REF || \ + GET_CODE (X) == CONST ? ADDR_REGS : (CLASS))) + + /* Return the maximum number of consecutive registers needed to represent + mode MODE in a register of class CLASS. */ + + #define CLASS_MAX_NREGS(CLASS, MODE) \ + ((CLASS) == FP_REGS ? \ + (GET_MODE_CLASS (MODE) == MODE_COMPLEX_FLOAT ? 2 : 1) : \ + (GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) + + /* If we are copying between FP registers and anything else, we need a memory + location. */ + + #define SECONDARY_MEMORY_NEEDED(CLASS1, CLASS2, MODE) \ + ((CLASS1) != (CLASS2) && ((CLASS1) == FP_REGS || (CLASS2) == FP_REGS)) + + /* Get_secondary_mem widens its argument to BITS_PER_WORD which loses on 64bit + because the movsi and movsf patterns don't handle r/f moves. */ + + #define SECONDARY_MEMORY_NEEDED_MODE(MODE) \ + (GET_MODE_BITSIZE (MODE) < 32 \ + ? mode_for_size (32, GET_MODE_CLASS (MODE), 0) \ + : MODE) + + + /* A C expression whose value is nonzero if pseudos that have been + assigned to registers of class CLASS would likely be spilled + because registers of CLASS are needed for spill registers. + + The default value of this macro returns 1 if CLASS has exactly one + register and zero otherwise. On most machines, this default + should be used. Only define this macro to some other expression + if pseudo allocated by `local-alloc.c' end up in memory because + their hard registers were needed for spill registers. If this + macro returns nonzero for those classes, those pseudos will only + be allocated by `global.c', which knows how to reallocate the + pseudo to another register. If there would not be another + register available for reallocation, you should not change the + definition of this macro since the only effect of such a + definition would be to slow down register allocation. */ + + /* Stack layout; function entry, exit and calling. */ + + /* The current return address is on Offset 56 of the current frame + if we are in an leaf_function. Otherwise we have to go one stack + back. + The return address of anything farther back is accessed normally + at an offset of 56 from the frame pointer. + + FIXME: builtin_return_addr does not work correctly in a leaf + function, we need to find way to find out, if we + are in a leaf function + */ + + #define _RETURN_ADDR_OFFSET (TARGET_64BIT ? 112 : 56) + + #define RETURN_ADDR_RTX(count, frame) \ + gen_rtx (MEM, Pmode, \ + memory_address (Pmode, \ + plus_constant ( \ + copy_to_reg (gen_rtx (MEM, Pmode, \ + memory_address (Pmode, frame))), \ + _RETURN_ADDR_OFFSET))); + + /* The following macros will turn on dwarf2 exception hndling + Other code location for this exception handling are + in s390.md (eh_return insn) and in linux.c in the prologue. */ + + #define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (Pmode, RETURN_REGNUM) + + /* We have 31 bit mode. */ + + #define MASK_RETURN_ADDR (GEN_INT (0x7fffffff)) + + /* Location, from where return address to load. */ + + #define DWARF_FRAME_RETURN_COLUMN 14 + + /* Describe how we implement __builtin_eh_return. */ + #define EH_RETURN_DATA_REGNO(N) ((N) < 4 ? (N) + 6 : INVALID_REGNUM) + #define EH_RETURN_STACKADJ_RTX gen_rtx_REG (Pmode, 10) + #define EH_RETURN_HANDLER_RTX \ + gen_rtx_MEM (Pmode, plus_constant (arg_pointer_rtx, \ + TARGET_64BIT? -48 : -40)) + + /* Define this if pushing a word on the stack makes the stack pointer a + smaller address. */ + + #define STACK_GROWS_DOWNWARD + + /* Define this if the nominal address of the stack frame is at the + high-address end of the local variables; that is, each additional local + variable allocated goes at a more negative offset in the frame. */ + + /* #define FRAME_GROWS_DOWNWARD */ + + /* Offset from stack-pointer to first location of outgoing args. */ + + #define STACK_POINTER_OFFSET (TARGET_64BIT ? 160 : 96) + + /* Offset within stack frame to start allocating local variables at. + If FRAME_GROWS_DOWNWARD, this is the offset to the END of the + first local allocated. Otherwise, it is the offset to the BEGINNING + of the first local allocated. */ + + #define STARTING_FRAME_OFFSET \ + (STACK_POINTER_OFFSET + current_function_outgoing_args_size) + + #define INITIAL_FRAME_POINTER_OFFSET(DEPTH) (DEPTH) = 0 + + /* If we generate an insn to push BYTES bytes, this says how many the stack + pointer really advances by. On S/390, we have no push instruction. */ + + /* #define PUSH_ROUNDING(BYTES) */ + + /* Accumulate the outgoing argument count so we can request the right + DSA size and determine stack offset. */ + + #define ACCUMULATE_OUTGOING_ARGS 1 + + /* Offset from the stack pointer register to an item dynamically + allocated on the stack, e.g., by `alloca'. + + The default value for this macro is `STACK_POINTER_OFFSET' plus the + length of the outgoing arguments. The default is correct for most + machines. See `function.c' for details. */ + #define STACK_DYNAMIC_OFFSET(FUNDECL) (STARTING_FRAME_OFFSET) + + /* Offset of first parameter from the argument pointer register value. + On the S/390, we define the argument pointer to the start of the fixed + area. */ + #define FIRST_PARM_OFFSET(FNDECL) 0 + + /* Define this if stack space is still allocated for a parameter passed + in a register. The value is the number of bytes allocated to this + area. */ + /* #define REG_PARM_STACK_SPACE(FNDECL) 32 */ + + /* Define this if the above stack space is to be considered part of the + space allocated by the caller. */ + /* #define OUTGOING_REG_PARM_STACK_SPACE */ + + /* 1 if N is a possible register number for function argument passing. + On S390, general registers 2 - 6 and floating point register 0 and 2 + are used in this way. */ + + #define FUNCTION_ARG_REGNO_P(N) (((N) >=2 && (N) <7) || \ + (N) == 16 || (N) == 17) + + /* Define a data type for recording info about an argument list during + the scan of that argument list. This data type should hold all + necessary information about the function itself and about the args + processed so far, enough to enable macros such as FUNCTION_ARG to + determine where the next arg should go. */ + + typedef struct s390_arg_structure + { + int gprs; /* gpr so far */ + int fprs; /* fpr so far */ + } + CUMULATIVE_ARGS; + + + /* Initialize a variable CUM of type CUMULATIVE_ARGS for a call to + a function whose data type is FNTYPE. + For a library call, FNTYPE is 0. */ + + #define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, NN) \ + ((CUM).gprs=0, (CUM).fprs=0) + + /* Update the data in CUM to advance over an argument of mode MODE and + data type TYPE. (TYPE is null for libcalls where that information + may not be available.) */ + + #define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED) \ + s390_function_arg_advance (&CUM, MODE, TYPE, NAMED) + + /* Define where to put the arguments to a function. Value is zero to push + the argument on the stack, or a hard register in which to store the + argument. */ + + #define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \ + s390_function_arg (&CUM, MODE, TYPE, NAMED) + + /* Define where to expect the arguments of a function. Value is zero, if + the argument is on the stack, or a hard register in which the argument + is stored. It is the same like FUNCTION_ARG, except for unnamed args + That means, that all in case of varargs used, the arguments are expected + from the stack. + S/390 has already space on the stack for args coming in registers, + they are pushed in prologue, if needed. */ + + + /* Define the `__builtin_va_list' type. */ + + #define BUILD_VA_LIST_TYPE(VALIST) \ + (VALIST) = s390_build_va_list () + + /* Implement `va_start' for varargs and stdarg. */ + + #define EXPAND_BUILTIN_VA_START(stdarg, valist, nextarg) \ + s390_va_start (stdarg, valist, nextarg) + + /* Implement `va_arg'. */ + + #define EXPAND_BUILTIN_VA_ARG(valist, type) \ + s390_va_arg (valist, type) + + /* For an arg passed partly in registers and partly in memory, this is the + number of registers used. For args passed entirely in registers or + entirely in memory, zero. */ + + #define FUNCTION_ARG_PARTIAL_NREGS(CUM, MODE, TYPE, NAMED) 0 + + + /* Define if returning from a function call automatically pops the + arguments described by the number-of-args field in the call. */ + + #define RETURN_POPS_ARGS(FUNDECL, FUNTYPE, SIZE) 0 + + + /* Define how to find the value returned by a function. VALTYPE is the + data type of the value (as a tree). + If the precise function being called is known, FUNC is its FUNCTION_DECL; + otherwise, FUNC is 15. */ + + #define RET_REG(MODE) ((GET_MODE_CLASS (MODE) == MODE_INT \ + || TARGET_SOFT_FLOAT ) ? 2 : 16) + + + /* for structs the address is passed, and the Callee makes a + copy, only if needed */ + + #define FUNCTION_ARG_PASS_BY_REFERENCE(CUM, MODE, TYPE, NAMED) \ + s390_function_arg_pass_by_reference (MODE, TYPE) + + + /* Register 2 (and 3) for integral values + or floating point register 0 (and 2) for fp values are used. */ + + #define FUNCTION_VALUE(VALTYPE, FUNC) \ + gen_rtx_REG ((INTEGRAL_TYPE_P (VALTYPE) \ + && TYPE_PRECISION (VALTYPE) < BITS_PER_WORD) \ + || POINTER_TYPE_P (VALTYPE) \ + ? word_mode : TYPE_MODE (VALTYPE), \ + TREE_CODE (VALTYPE) == REAL_TYPE && TARGET_HARD_FLOAT ? 16 : 2) + + /* Define how to find the value returned by a library function assuming + the value has mode MODE. */ + + #define LIBCALL_VALUE(MODE) gen_rtx (REG, MODE, RET_REG (MODE)) + + /* 1 if N is a possible register number for a function value. */ + + #define FUNCTION_VALUE_REGNO_P(N) ((N) == 2 || (N) == 16) + + /* The definition of this macro implies that there are cases where + a scalar value cannot be returned in registers. */ + + #define RETURN_IN_MEMORY(type) \ + (TYPE_MODE (type) == BLKmode || \ + GET_MODE_CLASS (TYPE_MODE (type)) == MODE_COMPLEX_INT || \ + GET_MODE_CLASS (TYPE_MODE (type)) == MODE_COMPLEX_FLOAT) + + /* Mode of stack savearea. + FUNCTION is VOIDmode because calling convention maintains SP. + BLOCK needs Pmode for SP. + NONLOCAL needs twice Pmode to maintain both backchain and SP. */ + + #define STACK_SAVEAREA_MODE(LEVEL) \ + (LEVEL == SAVE_FUNCTION ? VOIDmode \ + : LEVEL == SAVE_NONLOCAL ? (TARGET_64BIT ? TImode : DImode) : Pmode) + + /* Structure value address is passed as invisible first argument (gpr 2). */ + + #define STRUCT_VALUE 0 + + /* This macro definition sets up a default value for `main' to return. */ + + #define DEFAULT_MAIN_RETURN c_expand_return (integer_zero_node) + + /* Length in units of the trampoline for entering a nested function. */ + + #define TRAMPOLINE_SIZE (TARGET_64BIT ? 36 : 20) + + /* Initialize the dynamic part of trampoline. */ + + #define INITIALIZE_TRAMPOLINE(ADDR, FNADDR, CXT) \ + s390_initialize_trampoline ((ADDR), (FNADDR), (CXT)) + + /* Template for constant part of trampoline. */ + + #define TRAMPOLINE_TEMPLATE(FILE) \ + s390_trampoline_template (FILE) + + /* Output assembler code to FILE to increment profiler label # LABELNO + for profiling a function entry. */ + + #define FUNCTION_PROFILER(FILE, LABELNO) \ + do { \ + extern rtx s390_profile[]; \ + extern s390_pool_count; \ + rtx tmp; \ + static char label[128]; \ + fprintf (FILE, "# function profiler \n"); \ + if (TARGET_64BIT) \ + { \ + rtx tmp[1]; \ + output_asm_insn ("stg\t14,8(15)", tmp); \ + sprintf (label, "%sP%d", LPREFIX, LABELNO); \ + tmp[0] = gen_rtx_SYMBOL_REF (Pmode, label); \ + SYMBOL_REF_FLAG (tmp[0]) = 1; \ + output_asm_insn ("larl\t1,%0", tmp); \ + tmp[0] = gen_rtx_SYMBOL_REF (Pmode, "_mcount"); \ + if (flag_pic) \ + { \ + tmp[0] = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, tmp[0]), 113); \ + tmp[0] = gen_rtx_CONST (Pmode, tmp[0]); \ + } \ + output_asm_insn ("brasl\t14,%0", tmp); \ + output_asm_insn ("lg\t14,8(15)", tmp); \ + } \ + else \ + { \ + output_asm_insn ("l 14,4(15)", s390_profile); \ + s390_pool_count = 0; \ + output_asm_insn ("st 14,4(15)", s390_profile); \ + output_asm_insn ("l 14,%4", s390_profile); \ + output_asm_insn ("l 1,%9", s390_profile); \ + if (flag_pic) \ + { \ + output_asm_insn ("ar 1,13", s390_profile); \ + output_asm_insn ("bas 14,0(14,13)", s390_profile); \ + } \ + else \ + { \ + output_asm_insn ("basr 14,14", s390_profile); \ + } \ + output_asm_insn ("l 14,4(15)", s390_profile); \ + } \ + } while (0) + + /* #define PROFILE_BEFORE_PROLOGUE */ + + /* There are three profiling modes for basic blocks available. + The modes are selected at compile time by using the options + -a or -ax of the gnu compiler. + The variable `profile_block_flag' will be set according to the + selected option. + + profile_block_flag == 0, no option used: + + No profiling done. + + profile_block_flag == 1, -a option used. + + Count frequency of execution of every basic block. + + profile_block_flag == 2, -ax option used. + + Generate code to allow several different profiling modes at run time. + Available modes are: + Produce a trace of all basic blocks. + Count frequency of jump instructions executed. + In every mode it is possible to start profiling upon entering + certain functions and to disable profiling of some other functions. + + The result of basic-block profiling will be written to a file `bb.out'. + If the -ax option is used parameters for the profiling will be read + from file `bb.in'. + + */ + + /* The following macro shall output assembler code to FILE + to initialize basic-block profiling. + + If profile_block_flag == 2 + + Output code to call the subroutine `__bb_init_trace_func' + and pass two parameters to it. The first parameter is + the address of a block allocated in the object module. + The second parameter is the number of the first basic block + of the function. + + The name of the block is a local symbol made with this statement: + + ASM_GENERATE_INTERNAL_LABEL (BUFFER, "LPBX", 0); + + Of course, since you are writing the definition of + `ASM_GENERATE_INTERNAL_LABEL' as well as that of this macro, you + can take a short cut in the definition of this macro and use the + name that you know will result. + + The number of the first basic block of the function is + passed to the macro in BLOCK_OR_LABEL. + + If described in a virtual assembler language the code to be + output looks like: + + parameter1 <- LPBX0 + parameter2 <- BLOCK_OR_LABEL + call __bb_init_trace_func + + else if profile_block_flag != 0 + + Output code to call the subroutine `__bb_init_func' + and pass one single parameter to it, which is the same + as the first parameter to `__bb_init_trace_func'. + + The first word of this parameter is a flag which will be nonzero if + the object module has already been initialized. So test this word + first, and do not call `__bb_init_func' if the flag is nonzero. + Note: When profile_block_flag == 2 the test need not be done + but `__bb_init_trace_func' *must* be called. + + BLOCK_OR_LABEL may be used to generate a label number as a + branch destination in case `__bb_init_func' will not be called. + + If described in a virtual assembler language the code to be + output looks like: + + cmp (LPBX0),0 + jne local_label + parameter1 <- LPBX0 + call __bb_init_func + local_label: + + */ + + #undef FUNCTION_BLOCK_PROFILER + #define FUNCTION_BLOCK_PROFILER(FILE, BLOCK_OR_LABEL) \ + do \ + { \ + if (TARGET_64BIT) \ + { \ + rtx tmp[1]; \ + fprintf (FILE, "# function block profiler %d \n", profile_block_flag); \ + output_asm_insn ("ipm 0", tmp); \ + output_asm_insn ("aghi 15,-224", tmp); \ + output_asm_insn ("stmg 14,5,160(15)", tmp); \ + output_asm_insn ("larl 2,.LPBX0", tmp); \ + switch (profile_block_flag) \ + { \ + case 2: \ + if (BLOCK_OR_LABEL < 0x10000) { \ + tmp[0] = gen_rtx_CONST_INT (Pmode, (BLOCK_OR_LABEL)); \ + output_asm_insn ("llill 3,%x0", tmp); \ + } else { \ + int bo = BLOCK_OR_LABEL; \ + tmp[0] = gen_rtx_CONST_INT (Pmode, bo&0x7fff); \ + output_asm_insn ("llill 3,%x0", tmp); \ + tmp[0] = gen_rtx_CONST_INT (Pmode, (bo&0xffff0000)>>16); \ + output_asm_insn ("iilh 3,%x0", tmp); \ + } \ + tmp[0] = gen_rtx_SYMBOL_REF (Pmode, "__bb_init_trace_func"); \ + if (flag_pic) \ + { \ + tmp[0] = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, tmp[0]), 113); \ + tmp[0] = gen_rtx_CONST (Pmode, tmp[0]); \ + } \ + output_asm_insn ("brasl\t14,%0", tmp); \ + break; \ + default: \ + output_asm_insn ("cli 7(2),0", tmp); \ + output_asm_insn ("jne 2f", tmp); \ + tmp[0] = gen_rtx_SYMBOL_REF (Pmode, "__bb_init_func"); \ + if (flag_pic) \ + { \ + tmp[0] = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, tmp[0]), 113); \ + tmp[0] = gen_rtx_CONST (Pmode, tmp[0]); \ + } \ + output_asm_insn ("brasl\t14,%0", tmp); \ + break; \ + } \ + output_asm_insn ("2:", tmp); \ + output_asm_insn ("lmg 14,5,160(15)", tmp); \ + output_asm_insn ("aghi 15,224", tmp); \ + output_asm_insn ("spm 0", tmp); \ + } \ + else \ + { \ + extern rtx s390_profile[]; \ + fprintf (FILE, "# function block profiler %d \n", profile_block_flag); \ + output_asm_insn ("ipm 0", s390_profile); \ + output_asm_insn ("ahi 15,-128", s390_profile); \ + output_asm_insn ("stm 14,5,96(15)", s390_profile); \ + output_asm_insn ("l 2,%6", s390_profile); \ + if (flag_pic) \ + output_asm_insn ("ar 2,13", s390_profile); \ + switch (profile_block_flag) \ + { \ + case 2: \ + output_asm_insn ("l 4,%1", s390_profile); \ + if (BLOCK_OR_LABEL < 0x8000) { \ + s390_profile[8] = gen_rtx_CONST_INT (Pmode, (BLOCK_OR_LABEL)); \ + output_asm_insn ("lhi 3,%8", s390_profile); \ + } else { \ + int bo = BLOCK_OR_LABEL; \ + s390_profile[8] = gen_rtx_CONST_INT (Pmode, (bo&0xffff8000)>>15); \ + output_asm_insn ("lhi 3,%8", s390_profile); \ + output_asm_insn ("sll 3,15", s390_profile); \ + s390_profile[8] = gen_rtx_CONST_INT (Pmode, bo&0x7fff); \ + output_asm_insn ("ahi 3,%8", s390_profile); \ + } \ + break; \ + default: \ + output_asm_insn ("l 4,%0", s390_profile); \ + output_asm_insn ("cli 3(2),0", s390_profile); \ + output_asm_insn ("jne 2f", s390_profile); \ + break; \ + } \ + if (flag_pic) \ + output_asm_insn ("bas 14,0(4,13)", s390_profile); \ + else \ + output_asm_insn ("basr 14,4", s390_profile); \ + output_asm_insn ("2:", s390_profile); \ + output_asm_insn ("lm 14,5,96(15)", s390_profile); \ + output_asm_insn ("ahi 15,128", s390_profile); \ + output_asm_insn ("spm 0", s390_profile); \ + } \ + } while (0) + + /* The following macro shall output assembler code to FILE + to increment a counter associated with basic block number BLOCKNO. + + If profile_block_flag == 2 + + Output code to initialize the global structure `__bb' and + call the function `__bb_trace_func' which will increment the + counter. + + `__bb' consists of two words. In the first word the number + of the basic block has to be stored. In the second word + the address of a block allocated in the object module + has to be stored. + + The basic block number is given by BLOCKNO. + + The address of the block is given by the label created with + + ASM_GENERATE_INTERNAL_LABEL (BUFFER, "LPBX", 0); + + by FUNCTION_BLOCK_PROFILER. + + Of course, since you are writing the definition of + `ASM_GENERATE_INTERNAL_LABEL' as well as that of this macro, you + can take a short cut in the definition of this macro and use the + name that you know will result. + + If described in a virtual assembler language the code to be + output looks like: + + move BLOCKNO -> (__bb) + move LPBX0 -> (__bb+4) + call __bb_trace_func + + Note that function `__bb_trace_func' must not change the + machine state, especially the flag register. To grant + this, you must output code to save and restore registers + either in this macro or in the macros MACHINE_STATE_SAVE + and MACHINE_STATE_RESTORE. The last two macros will be + used in the function `__bb_trace_func', so you must make + sure that the function prologue does not change any + register prior to saving it with MACHINE_STATE_SAVE. + + else if profile_block_flag != 0 + + Output code to increment the counter directly. + Basic blocks are numbered separately from zero within each + compiled object module. The count associated with block number + BLOCKNO is at index BLOCKNO in an array of words; the name of + this array is a local symbol made with this statement: + + ASM_GENERATE_INTERNAL_LABEL (BUFFER, "LPBX", 2); + + Of course, since you are writing the definition of + `ASM_GENERATE_INTERNAL_LABEL' as well as that of this macro, you + can take a short cut in the definition of this macro and use the + name that you know will result. + + If described in a virtual assembler language the code to be + output looks like: + + inc (LPBX2+4*BLOCKNO) + + */ + + #define BLOCK_PROFILER(FILE, BLOCKNO) \ + do \ + { \ + if (TARGET_64BIT) \ + { \ + rtx tmp[1]; \ + fprintf (FILE, "# block profiler %d block %d \n", \ + profile_block_flag, BLOCKNO); \ + output_asm_insn ("ipm 14", tmp); \ + output_asm_insn ("aghi 15,-224", tmp); \ + output_asm_insn ("stmg 14,5,160(15)", tmp); \ + output_asm_insn ("larl 2,_bb", tmp); \ + if ((BLOCKNO*8) < 0x10000) { \ + tmp[0] = gen_rtx_CONST_INT (Pmode, (BLOCKNO*8)); \ + output_asm_insn ("llill 3,%x0", tmp); \ + } else { \ + int bo = BLOCKNO*8; \ + tmp[0] = gen_rtx_CONST_INT (Pmode, bo&0xffff); \ + output_asm_insn ("llill 3,%x0", tmp); \ + tmp[0] = gen_rtx_CONST_INT (Pmode, (bo&0xffff0000)>>16); \ + output_asm_insn ("iilh 3,%x0", tmp); \ + } \ + switch (profile_block_flag) \ + { \ + case 2: \ + output_asm_insn ("stg 3,0(2)", tmp); \ + output_asm_insn ("larl 3,.LPBX0", tmp); \ + output_asm_insn ("stg 3,0(2)", tmp); \ + tmp[0] = gen_rtx_SYMBOL_REF (Pmode, "__bb_trace_func"); \ + if (flag_pic) \ + { \ + tmp[0] = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, tmp[0]), 113); \ + tmp[0] = gen_rtx_CONST (Pmode, tmp[0]); \ + } \ + output_asm_insn ("brasl\t14,%0", tmp); \ + break; \ + default: \ + output_asm_insn ("larl 2,.LPBX2", tmp); \ + output_asm_insn ("la 2,0(2,3)", tmp); \ + output_asm_insn ("lg 3,0(2)", tmp); \ + output_asm_insn ("aghi 3,1", tmp); \ + output_asm_insn ("stg 3,0(2)", tmp); \ + break; \ + } \ + output_asm_insn ("lmg 14,5,160(15)", tmp); \ + output_asm_insn ("ahi 15,224", tmp); \ + output_asm_insn ("spm 14", tmp); \ + } \ + else \ + { \ + extern rtx s390_profile[]; \ + fprintf (FILE, "# block profiler %d block %d \n", \ + profile_block_flag,BLOCKNO); \ + output_asm_insn ("ipm 14", s390_profile); \ + output_asm_insn ("ahi 15,-128", s390_profile); \ + output_asm_insn ("stm 14,5,96(15)", s390_profile); \ + switch (profile_block_flag) \ + { \ + case 2: \ + output_asm_insn ("l 4,%2", s390_profile); \ + output_asm_insn ("l 2,%5", s390_profile); \ + if (flag_pic) \ + output_asm_insn ("ar 2,13", s390_profile); \ + if (BLOCKNO < 0x8000) { \ + s390_profile[7] = gen_rtx_CONST_INT (Pmode, (BLOCKNO)*4); \ + output_asm_insn ("lhi 3,%8", s390_profile); \ + } else { \ + int bo = BLOCKNO; \ + s390_profile[8] = gen_rtx_CONST_INT (Pmode, (bo&0xffff8000)>>15); \ + output_asm_insn ("lhi 3,%8", s390_profile); \ + output_asm_insn ("sll 3,15", s390_profile); \ + s390_profile[8] = gen_rtx_CONST_INT (Pmode, bo&0x7fff); \ + output_asm_insn ("ahi 3,%7", s390_profile); \ + } \ + output_asm_insn ("st 3,0(2)", s390_profile); \ + output_asm_insn ("mvc 0(4,2),%5", s390_profile); \ + if (flag_pic) \ + output_asm_insn ("bas 14,0(4,13)", s390_profile); \ + else \ + output_asm_insn ("basr 14,4", s390_profile); \ + break; \ + default: \ + if (BLOCKNO < 0x2000) { \ + s390_profile[8] = gen_rtx_CONST_INT (Pmode, (BLOCKNO)*4); \ + output_asm_insn ("lhi 2,%8", s390_profile); \ + } else { \ + int bo = BLOCKNO*4; \ + s390_profile[8] = gen_rtx_CONST_INT (Pmode, (bo&0xffff8000)>>15); \ + output_asm_insn ("lhi 2,%8", s390_profile); \ + output_asm_insn ("sll 2,15", s390_profile); \ + s390_profile[8] = gen_rtx_CONST_INT (Pmode, bo&0x7fff); \ + output_asm_insn ("ahi 2,%8", s390_profile); \ + } \ + output_asm_insn ("a 2,%7", s390_profile); \ + if (flag_pic) \ + output_asm_insn ("l 3,0(2,13)", s390_profile); \ + else \ + output_asm_insn ("l 3,0(2)", s390_profile); \ + output_asm_insn ("ahi 3,1", s390_profile); \ + if (flag_pic) \ + output_asm_insn ("st 3,0(2,13)", s390_profile); \ + else \ + output_asm_insn ("st 3,0(2)", s390_profile); \ + break; \ + } \ + output_asm_insn ("lm 14,5,96(15)", s390_profile); \ + output_asm_insn ("ahi 15,128", s390_profile); \ + output_asm_insn ("spm 14", s390_profile); \ + } \ + } while (0) + + + /* The following macro shall output assembler code to FILE + to indicate a return from function during basic-block profiling. + + If profiling_block_flag == 2: + + Output assembler code to call function `__bb_trace_ret'. + + Note that function `__bb_trace_ret' must not change the + machine state, especially the flag register. To grant + this, you must output code to save and restore registers + either in this macro or in the macros MACHINE_STATE_SAVE_RET + and MACHINE_STATE_RESTORE_RET. The last two macros will be + used in the function `__bb_trace_ret', so you must make + sure that the function prologue does not change any + register prior to saving it with MACHINE_STATE_SAVE_RET. + + else if profiling_block_flag != 0: + + The macro will not be used, so it need not distinguish + these cases. + */ + + #define FUNCTION_BLOCK_PROFILER_EXIT(FILE) \ + do { \ + if (TARGET_64BIT) \ + { \ + rtx tmp[1]; \ + fprintf (FILE, "# block profiler exit \n"); \ + output_asm_insn ("ipm 14", tmp); \ + output_asm_insn ("aghi 15,-224", tmp); \ + output_asm_insn ("stmg 14,5,160(15)", tmp); \ + tmp[0] = gen_rtx_SYMBOL_REF (Pmode, "__bb_trace_ret"); \ + if (flag_pic) \ + { \ + tmp[0] = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, tmp[0]), 113); \ + tmp[0] = gen_rtx_CONST (Pmode, tmp[0]); \ + } \ + output_asm_insn ("brasl 14,%0", tmp); \ + output_asm_insn ("lmg 14,5,160(15)", tmp); \ + output_asm_insn ("aghi 15,224", tmp); \ + output_asm_insn ("spm 14", tmp); \ + } \ + else \ + { \ + extern rtx s390_profile[]; \ + fprintf (FILE, "# block profiler exit \n"); \ + output_asm_insn ("ipm 14", s390_profile); \ + output_asm_insn ("ahi 15,-128", s390_profile); \ + output_asm_insn ("stm 14,5,96(15)", s390_profile); \ + output_asm_insn ("l 4,%3", s390_profile); \ + if (flag_pic) \ + output_asm_insn ("bas 14,0(4,13)", s390_profile); \ + else \ + output_asm_insn ("basr 14,4", s390_profile); \ + output_asm_insn ("lm 14,5,96(15)", s390_profile); \ + output_asm_insn ("ahi 15,128", s390_profile); \ + output_asm_insn ("spm 14", s390_profile); \ + } \ + } while (0) + + /* The function `__bb_trace_func' is called in every basic block + and is not allowed to change the machine state. Saving (restoring) + the state can either be done in the BLOCK_PROFILER macro, + before calling function (rsp. after returning from function) + `__bb_trace_func', or it can be done inside the function by + defining the macros: + + MACHINE_STATE_SAVE(ID) + MACHINE_STATE_RESTORE(ID) + + In the latter case care must be taken, that the prologue code + of function `__bb_trace_func' does not already change the + state prior to saving it with MACHINE_STATE_SAVE. + + The parameter `ID' is a string identifying a unique macro use. + + On the s390 all save/restore is done in macros above + */ + + /* + #define MACHINE_STATE_SAVE(ID) \ + fprintf (FILE, "\tahi 15,-128 # save state\n"); \ + fprintf (FILE, "\tstm 14,5,96(15)\n"); \ + + #define MACHINE_STATE_RESTORE(ID) \ + fprintf (FILE, "\tlm 14,5,96(15) # restore state\n"); \ + fprintf (FILE, "\tahi 15,128\n"); \ + */ + + + /* Define EXIT_IGNORE_STACK if, when returning from a function, the stack + pointer does not matter (provided there is a frame pointer). */ + + #define EXIT_IGNORE_STACK 1 + + /* Addressing modes, and classification of registers for them. */ + + /* #define HAVE_POST_INCREMENT */ + /* #define HAVE_POST_DECREMENT */ + + /* #define HAVE_PRE_DECREMENT */ + /* #define HAVE_PRE_INCREMENT */ + + /* These assume that REGNO is a hard or pseudo reg number. They give + nonzero only if REGNO is a hard reg of the suitable class or a pseudo + reg currently allocated to a suitable hard reg. + These definitions are NOT overridden anywhere. */ + + #define REGNO_OK_FOR_INDEX_P(REGNO) \ + (((REGNO) > 0 && (REGNO) < 16) || (REGNO) == ARG_POINTER_REGNUM \ + /* || (REGNO) == FRAME_POINTER_REGNUM */ \ + || (reg_renumber[REGNO] > 0 && reg_renumber[REGNO] < 16)) + + #define REGNO_OK_FOR_BASE_P(REGNO) REGNO_OK_FOR_INDEX_P (REGNO) + + #define REGNO_OK_FOR_DATA_P(REGNO) \ + ((REGNO) < 16 || (unsigned) reg_renumber[REGNO] < 16) + + #define REGNO_OK_FOR_FP_P(REGNO) \ + FLOAT_REGNO_P (REGNO) + + /* Now macros that check whether X is a register and also, + strictly, whether it is in a specified class. */ + + /* 1 if X is a data register. */ + + #define DATA_REG_P(X) (REG_P (X) && REGNO_OK_FOR_DATA_P (REGNO (X))) + + /* 1 if X is an fp register. */ + + #define FP_REG_P(X) (REG_P (X) && REGNO_OK_FOR_FP_P (REGNO (X))) + + /* 1 if X is an address register. */ + + #define ADDRESS_REG_P(X) (REG_P (X) && REGNO_OK_FOR_BASE_P (REGNO (X))) + + /* Maximum number of registers that can appear in a valid memory address. */ + + #define MAX_REGS_PER_ADDRESS 2 + + /* Recognize any constant value that is a valid address. */ + + #define CONSTANT_ADDRESS_P(X) 0 + + #define SYMBOLIC_CONST(X) \ + (GET_CODE (X) == SYMBOL_REF \ + || GET_CODE (X) == LABEL_REF \ + || (GET_CODE (X) == CONST && symbolic_reference_mentioned_p (X))) + + /* General operand is everything except SYMBOL_REF, CONST and CONST_DOUBLE + they have to be forced to constant pool + CONST_INT have to be forced into constant pool, if greater than + 64k. Depending on the insn they have to be force into constant pool + for smaller value; in this case we have to work with nonimmediate operand. */ + + #define LEGITIMATE_PIC_OPERAND_P(X) \ + legitimate_pic_operand_p (X) + + /* Nonzero if the constant value X is a legitimate general operand. + It is given that X satisfies CONSTANT_P or is a CONST_DOUBLE. */ + + #define LEGITIMATE_CONSTANT_P(X) \ + legitimate_constant_p (X) + + /* The macros REG_OK_FOR..._P assume that the arg is a REG rtx and check + its validity for a certain class. We have two alternate definitions + for each of them. The usual definition accepts all pseudo regs; the + other rejects them all. The symbol REG_OK_STRICT causes the latter + definition to be used. + + Most source files want to accept pseudo regs in the hope that they will + get allocated to the class that the insn wants them to be in. + Some source files that are used after register allocation + need to be strict. */ + + /* + * Nonzero if X is a hard reg that can be used as an index or if it is + * a pseudo reg. + */ + + #define REG_OK_FOR_INDEX_NONSTRICT_P(X) \ + ((GET_MODE (X) == Pmode) && \ + ((REGNO (X) > 0 && REGNO (X) < 16) || \ + (REGNO (X) == ARG_POINTER_REGNUM) || \ + (REGNO (X) >= FIRST_PSEUDO_REGISTER))) + + /* Nonzero if X is a hard reg that can be used as a base reg or if it is + a pseudo reg. */ + + #define REG_OK_FOR_BASE_NONSTRICT_P(X) REG_OK_FOR_INDEX_NONSTRICT_P (X) + + /* Nonzero if X is a hard reg that can be used as an index. */ + + #define REG_OK_FOR_INDEX_STRICT_P(X) \ + ((GET_MODE (X) == Pmode) && (REGNO_OK_FOR_INDEX_P (REGNO (X)))) + + /* Nonzero if X is a hard reg that can be used as a base reg. */ + + #define REG_OK_FOR_BASE_STRICT_P(X) \ + ((GET_MODE (X) == Pmode) && (REGNO_OK_FOR_BASE_P (REGNO (X)))) + + + #ifndef REG_OK_STRICT + #define REG_OK_FOR_INDEX_P(X) REG_OK_FOR_INDEX_NONSTRICT_P(X) + #define REG_OK_FOR_BASE_P(X) REG_OK_FOR_BASE_NONSTRICT_P(X) + #else + #define REG_OK_FOR_INDEX_P(X) REG_OK_FOR_INDEX_STRICT_P(X) + #define REG_OK_FOR_BASE_P(X) REG_OK_FOR_BASE_STRICT_P(X) + #endif + + + /* GO_IF_LEGITIMATE_ADDRESS recognizes an RTL expression that is a + valid memory address for an instruction. + The MODE argument is the machine mode for the MEM expression + that wants to use this address. + + The other macros defined here are used only in GO_IF_LEGITIMATE_ADDRESS, + except for CONSTANT_ADDRESS_P which is actually machine-independent. */ + + #ifdef REG_OK_STRICT + #define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \ + { \ + if (legitimate_address_p (MODE, X, 1)) \ + goto ADDR; \ + } + #else + #define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \ + { \ + if (legitimate_address_p (MODE, X, 0)) \ + goto ADDR; \ + } + #endif + + + /* S/390 has no mode dependent addresses. */ + + #define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL) + + /* Try machine-dependent ways of modifying an illegitimate address + to be legitimate. If we find one, return the new, valid address. + This macro is used in only one place: `memory_address' in explow.c. */ + + #define LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN) \ + { \ + (X) = legitimize_address (X, OLDX, MODE); \ + if (memory_address_p (MODE, X)) \ + goto WIN; \ + } + + /* Specify the machine mode that this machine uses for the index in the + tablejump instruction. */ + + #define CASE_VECTOR_MODE (TARGET_64BIT ? DImode : SImode) + + /* Define this if the tablejump instruction expects the table to contain + offsets from the address of the table. + Do not define this if the table should contain absolute addresses. */ + + /* #define CASE_VECTOR_PC_RELATIVE */ + + /* Load from integral MODE < SI from memory into register makes sign_extend + or zero_extend + In our case sign_extension happens for Halfwords, other no extension. */ + + #define LOAD_EXTEND_OP(MODE) \ + (TARGET_64BIT ? ((MODE) == QImode ? ZERO_EXTEND : \ + (MODE) == HImode ? SIGN_EXTEND : NIL) \ + : ((MODE) == HImode ? SIGN_EXTEND : NIL)) + + /* Specify the tree operation to be used to convert reals to integers. */ + + #define IMPLICIT_FIX_EXPR FIX_ROUND_EXPR + + /* Define this if fixuns_trunc is the same as fix_trunc. */ + + /* #define FIXUNS_TRUNC_LIKE_FIX_TRUNC */ + + /* We use "unsigned char" as default. */ + + #define DEFAULT_SIGNED_CHAR 0 + + /* This is the kind of divide that is easiest to do in the general case. */ + + #define EASY_DIV_EXPR TRUNC_DIV_EXPR + + /* Max number of bytes we can move from memory to memory in one reasonably + fast instruction. */ + + #define MOVE_MAX 256 + + /* Define this if zero-extension is slow (more than one real instruction). */ + + #define SLOW_ZERO_EXTEND + + /* Nonzero if access to memory by bytes is slow and undesirable. */ + + #define SLOW_BYTE_ACCESS 1 + + /* Define if shifts truncate the shift count which implies one can omit + a sign-extension or zero-extension of a shift count. */ + + /* #define SHIFT_COUNT_TRUNCATED */ + + /* Value is 1 if truncating an integer of INPREC bits to OUTPREC bits + is done just by pretending it is already truncated. */ + + #define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) 1 + + /* We assume that the store-condition-codes instructions store 0 for false + and some other value for true. This is the value stored for true. */ + + /* #define STORE_FLAG_VALUE -1 */ + + /* When a prototype says `char' or `short', really pass an `int'. */ + + #define PROMOTE_PROTOTYPES 1 + + /* Don't perform CSE on function addresses. */ + + #define NO_FUNCTION_CSE + + /* Specify the machine mode that pointers have. + After generation of rtl, the compiler makes no further distinction + between pointers and any other objects of this machine mode. */ + + #define Pmode (TARGET_64BIT ? DImode : SImode) + + /* A function address in a call instruction is a byte address (for + indexing purposes) so give the MEM rtx a byte's mode. */ + + #define FUNCTION_MODE QImode + + + /* A part of a C `switch' statement that describes the relative costs + of constant RTL expressions. It must contain `case' labels for + expression codes `const_int', `const', `symbol_ref', `label_ref' + and `const_double'. Each case must ultimately reach a `return' + statement to return the relative cost of the use of that kind of + constant value in an expression. The cost may depend on the + precise value of the constant, which is available for examination + in X, and the rtx code of the expression in which it is contained, + found in OUTER_CODE. + + CODE is the expression code--redundant, since it can be obtained + with `GET_CODE (X)'. */ + /* Force_const_mem does not work out of reload, because the saveable_obstack + is set to reload_obstack, which does not live long enough. + Because of this we cannot use force_const_mem in addsi3. + This leads to problems with gen_add2_insn with a constant greater + than a short. Because of that we give a addition of greater + constants a cost of 3 (reload1.c 10096). */ + + + #define CONST_COSTS(RTX, CODE, OUTER_CODE) \ + case CONST: \ + if ((GET_CODE (XEXP (RTX, 0)) == MINUS) && \ + (GET_CODE (XEXP (XEXP (RTX, 0), 1)) != CONST_INT)) \ + return 1000; \ + case CONST_INT: \ + if ((OUTER_CODE == PLUS) && \ + ((INTVAL (RTX) > 32767) || \ + (INTVAL (RTX) < -32768))) \ + return COSTS_N_INSNS (3); \ + case LABEL_REF: \ + case SYMBOL_REF: \ + case CONST_DOUBLE: \ + return 0; \ + + + /* Like `CONST_COSTS' but applies to nonconstant RTL expressions. + This can be used, for example, to indicate how costly a multiply + instruction is. In writing this macro, you can use the construct + `COSTS_N_INSNS (N)' to specify a cost equal to N fast + instructions. OUTER_CODE is the code of the expression in which X + is contained. + + This macro is optional; do not define it if the default cost + assumptions are adequate for the target machine. */ + + #define RTX_COSTS(X, CODE, OUTER_CODE) \ + case ASHIFT: \ + case ASHIFTRT: \ + case LSHIFTRT: \ + case PLUS: \ + case AND: \ + case IOR: \ + case XOR: \ + case MINUS: \ + case NEG: \ + case NOT: \ + return 1; \ + case MULT: \ + if (GET_MODE (XEXP (X, 0)) == DImode) \ + return 40; \ + else \ + return 7; \ + case DIV: \ + case UDIV: \ + case MOD: \ + case UMOD: \ + return 33; + + + /* An expression giving the cost of an addressing mode that contains + ADDRESS. If not defined, the cost is computed from the ADDRESS + expression and the `CONST_COSTS' values. + + For most CISC machines, the default cost is a good approximation + of the true cost of the addressing mode. However, on RISC + machines, all instructions normally have the same length and + execution time. Hence all addresses will have equal costs. + + In cases where more than one form of an address is known, the form + with the lowest cost will be used. If multiple forms have the + same, lowest, cost, the one that is the most complex will be used. + + For example, suppose an address that is equal to the sum of a + register and a constant is used twice in the same basic block. + When this macro is not defined, the address will be computed in a + register and memory references will be indirect through that + register. On machines where the cost of the addressing mode + containing the sum is no higher than that of a simple indirect + reference, this will produce an additional instruction and + possibly require an additional register. Proper specification of + this macro eliminates this overhead for such machines. + + Similar use of this macro is made in strength reduction of loops. + + ADDRESS need not be valid as an address. In such a case, the cost + is not relevant and can be any value; invalid addresses need not be + assigned a different cost. + + On machines where an address involving more than one register is as + cheap as an address computation involving only one register, + defining `ADDRESS_COST' to reflect this can cause two registers to + be live over a region of code where only one would have been if + `ADDRESS_COST' were not defined in that manner. This effect should + be considered in the definition of this macro. Equivalent costs + should probably only be given to addresses with different numbers + of registers on machines with lots of registers. + + This macro will normally either not be defined or be defined as a + constant. + + On s390 symbols are expensive if compiled with fpic + lifetimes. */ + + #define ADDRESS_COST(RTX) \ + ((flag_pic && GET_CODE (RTX) == SYMBOL_REF) ? 2 : 1) + + /* On s390, copy between fprs and gprs is expensive. */ + + #define REGISTER_MOVE_COST(MODE, CLASS1, CLASS2) \ + (((CLASS1 != CLASS2) && \ + (CLASS1 == FP_REGS || CLASS2 == FP_REGS)) ? 10 : 1) + + + /* A C expression for the cost of moving data of mode M between a + register and memory. A value of 2 is the default; this cost is + relative to those in `REGISTER_MOVE_COST'. + + If moving between registers and memory is more expensive than + between two registers, you should define this macro to express the + relative cost. */ + + #define MEMORY_MOVE_COST(M, C, I) 1 + + /* A C expression for the cost of a branch instruction. A value of 1 + is the default; other values are interpreted relative to that. */ + + #define BRANCH_COST 1 + + /* Add any extra modes needed to represent the condition code. */ + #define EXTRA_CC_MODES \ + CC (CCZmode, "CCZ") \ + CC (CCAmode, "CCA") \ + CC (CCUmode, "CCU") \ + CC (CCSmode, "CCS") \ + CC (CCTmode, "CCT") + + /* Given a comparison code (EQ, NE, etc.) and the first operand of a COMPARE, + return the mode to be used for the comparison. */ + + #define SELECT_CC_MODE(OP, X, Y) \ + ( (OP) == EQ || (OP) == NE ? CCZmode \ + : (OP) == LE || (OP) == LT || \ + (OP) == GE || (OP) == GT ? CCSmode \ + : (OP) == LEU || (OP) == LTU || \ + (OP) == GEU || (OP) == GTU ? CCUmode \ + : CCmode ) + + + /* Define the information needed to generate branch and scc insns. This is + stored from the compare operation. Note that we can't use "rtx" here + since it hasn't been defined! */ + + extern struct rtx_def *s390_compare_op0, *s390_compare_op1; + + extern int s390_match_ccmode PARAMS ((struct rtx_def *, int)); + + + /* How to refer to registers in assembler output. This sequence is + indexed by compiler's hard-register-number (see above). */ + + #define REGISTER_NAMES \ + { "%r0", "%r1", "%r2", "%r3", "%r4", "%r5", "%r6", "%r7", \ + "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15", \ + "%f0", "%f2", "%f4", "%f6", "%f1", "%f3", "%f5", "%f7", \ + "%f8", "%f10", "%f12", "%f14", "%f9", "%f11", "%f13", "%f15", \ + "%ap", "%cc" \ + } + + /* implicit call of memcpy, not bcopy */ + + #define TARGET_MEM_FUNCTIONS + + + /* Define results of standard character escape sequences. */ + + #define TARGET_BELL (0x07) + #define TARGET_BS (0x08) + #define TARGET_TAB (0x09) + #define TARGET_NEWLINE (0x0A) + #define TARGET_VT 11 + #define TARGET_FF 12 + #define TARGET_CR 13 + + /* Print operand X (an rtx) in assembler syntax to file FILE. + CODE is a letter or dot (`z' in `%z0') or 0 if no letter was specified. + For `%' followed by punctuation, CODE is the punctuation and X is null. */ + + #define PRINT_OPERAND(FILE, X, CODE) print_operand (FILE, X, CODE) + + #define PRINT_OPERAND_ADDRESS(FILE, ADDR) print_operand_address (FILE, ADDR) + + + /* Define the codes that are matched by predicates in aux-output.c. */ + + #define PREDICATE_CODES \ + {"s_operand", { MEM }}, \ + {"bras_sym_operand",{ SYMBOL_REF, CONST }}, \ + {"r_or_s_operand", { MEM, SUBREG, REG }}, \ + {"r_or_im8_operand", { CONST_INT, SUBREG, REG }}, \ + {"r_or_s_or_im8_operand", { MEM, SUBREG, REG, CONST_INT }}, \ + {"r_or_x_or_im16_operand", { MEM, SUBREG, REG, CONST_INT }}, \ + {"const0_operand", { CONST_INT, CONST_DOUBLE }}, \ + {"const1_operand", { CONST_INT, CONST_DOUBLE }}, \ + {"tmxx_operand", { CONST_INT, MEM }}, + + + /* A C statement (sans semicolon) to update the integer variable COST + based on the relationship between INSN that is dependent on + DEP_INSN through the dependence LINK. The default is to make no + adjustment to COST. This can be used for example to specify to + the scheduler that an output- or anti-dependence does not incur + the same cost as a data-dependence. */ + + #define ADJUST_COST(insn, link, dep_insn, cost) \ + (cost) = s390_adjust_cost (insn, link, dep_insn, cost) + + + /* Constant Pool for all symbols operands which are changed with + force_const_mem during insn generation (expand_insn). */ + + extern struct rtx_def *s390_pool_start_insn; + extern int s390_pool_count; + extern int s390_nr_constants; + + /* Function is splitted in chunk, if literal pool could overflow + Value need to be lowered, if problems with displacement overflow. */ + + #define S390_REL_MAX 55000 + #define S390_CHUNK_MAX 0x2000 + #define S390_CHUNK_OV 0x8000 + #define S390_POOL_MAX 0xe00 + + #define ASM_OUTPUT_POOL_PROLOGUE(FILE, FUNNAME, fndecl, size) \ + { \ + register rtx insn; \ + struct pool_constant *pool; \ + \ + if (s390_pool_count == -1) \ + { \ + s390_nr_constants = 0; \ + for (pool = first_pool; pool; pool = pool->next) \ + if (pool->mark) s390_nr_constants++; \ + return; \ + } \ + if (first_pool == 0) { \ + s390_asm_output_pool_prologue (FILE, FUNNAME, fndecl, size); \ + return; \ + } \ + for (pool = first_pool; pool; pool = pool->next) \ + pool->mark = 0; \ + \ + insn = s390_pool_start_insn; \ + \ + if (insn==NULL_RTX) \ + insn = get_insns (); \ + else \ + insn = NEXT_INSN (insn); \ + for (; insn; insn = NEXT_INSN (insn)) { \ + if (GET_RTX_CLASS (GET_CODE (insn)) == 'i') { \ + if (s390_stop_dump_lit_p (insn)) { \ + mark_constants (PATTERN (insn)); \ + break; \ + } else \ + mark_constants (PATTERN (insn)); \ + } \ + } \ + \ + /* Mark entries referenced by other entries */ \ + for (pool = first_pool; pool; pool = pool->next) \ + if (pool->mark) \ + mark_constants (pool->constant); \ + \ + s390_asm_output_pool_prologue (FILE, FUNNAME, fndecl, size); \ + } + + /* We need to return, because otherwise the pool is deleted of the + constant pool after the first output. */ + + #define ASM_OUTPUT_POOL_EPILOGUE(FILE, FUNNAME, fndecl, size) return; + + #define ASM_OUTPUT_SPECIAL_POOL_ENTRY(FILE, EXP, MODE, ALIGN, LABELNO, WIN) \ + { \ + if ((s390_pool_count == 0) || (s390_pool_count > 0 && LABELNO >= 0)) \ + { \ + fprintf (FILE, ".LC%d:\n", LABELNO); \ + LABELNO = ~LABELNO; \ + } \ + if (s390_pool_count > 0) \ + { \ + fprintf (FILE, ".LC%d_%X:\n", ~LABELNO, s390_pool_count); \ + } \ + \ + /* Output the value of the constant itself. */ \ + switch (GET_MODE_CLASS (pool->mode)) \ + { \ + case MODE_FLOAT: \ + if (GET_CODE (x) != CONST_DOUBLE) \ + abort (); \ + \ + memcpy ((char *) &u, (char *) &CONST_DOUBLE_LOW (x), sizeof u); \ + assemble_real (u.d, pool->mode); \ + break; \ + \ + case MODE_INT: \ + case MODE_PARTIAL_INT: \ + if (flag_pic && (GET_CODE (x) == CONST || \ + GET_CODE (x) == SYMBOL_REF || \ + GET_CODE (x) == LABEL_REF )) \ + { \ + fprintf (FILE, "%s\t",TARGET_64BIT ? ASM_QUAD : ASM_LONG); \ + s390_output_symbolic_const (FILE, x); \ + fputc ('\n', (FILE)); \ + } \ + else \ + assemble_integer (x, GET_MODE_SIZE (pool->mode), 1); \ + break; \ + \ + default: \ + abort (); \ + } \ + goto WIN; \ + } + + #endif diff -Nrc3pad gcc-3.0/gcc/config/s390/s390.md gcc-3.0.1/gcc/config/s390/s390.md *** gcc-3.0/gcc/config/s390/s390.md Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/config/s390/s390.md Fri Aug 10 15:19:19 2001 *************** *** 0 **** --- 1,5882 ---- + ;;- Machine description for GNU compiler -- S/390 / zSeries version. + ;; Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. + ;; Contributed by Hartmut Penner (hpenner@de.ibm.com) and + ;; Ulrich Weigand (uweigand@de.ibm.com). + ;; This file is part of GNU CC. + + ;; GNU CC is free software; you can redistribute it and/or modify + ;; it under the terms of the GNU General Public License as published by + ;; the Free Software Foundation; either version 2, or (at your option) + ;; any later version. + + ;; GNU CC is distributed in the hope that it will be useful, + ;; but WITHOUT ANY WARRANTY; without even the implied warranty of + ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ;; GNU General Public License for more details. + + ;; You should have received a copy of the GNU General Public License + ;; along with GNU CC; see the file COPYING. If not, write to + ;; the Free Software Foundation, 59 Temple Place - Suite 330, + ;; Boston, MA 02111-1307, USA. + + ;; + ;; Special constraints for s/390 machine description: + ;; + ;; a -- Any address register from 1 to 15. + ;; d -- Any register from 0 to 15. + ;; I -- An 8-bit constant (0..255). + ;; J -- A 12-bit constant (0..4095). + ;; K -- A 16-bit constant (-32768..32767). + ;; Q -- A memory reference without index-register. + ;; S -- Valid operand for the LARL instruction. + ;; + ;; Special formats used for outputting 390 instructions. + ;; + ;; %b -- Print a constant byte integer. xy + ;; %h -- Print a signed 16-bit. wxyz + ;; %N -- Print next register (second word of a DImode reg) or next word. + ;; %M -- Print next register (second word of a TImode reg) or next word. + ;; %O -- Print the offset of a memory reference (PLUS (REG) (CONST_INT)). + ;; %R -- Print the register of a memory reference (PLUS (REG) (CONST_INT)). + ;; + ;; We have a special constraint for pattern matching. + ;; + ;; s_operand -- Matches a valid S operand in a RS, SI or SS type instruction. + ;; + ;; r_or_s_operand -- Matches a register or a valid S operand in a RS, SI + ;; or SS type instruction or a register + ;; + + ;; Insn type. Used to default other attribute values. + + ; + ; Insn are devide in two classes: + ; mem: Use of base and/or index register for address generation + ; reg: Use of second and third register not for address generation + ; + + (define_attr "atype" "mem,reg" (const_string "reg")) + + ; + ; Insn may take 1,2,3 or many cycles + ; For the scheduling it does not matter, if a instruction has + ; a issue_delay from 4 or more cycles, since the address dependency + ; between two insns needs at least 4 cycles. + ; + + (define_attr "cycle" "1,2,3,n" (const_string "1")) + + ; + ; There are three classes of insns: + ; set: instruction setting a (potential) address relevant register + ; xset: instruction setting no address relevant register + ; la: instruction setting a (potential) address relevant register, + ; but behave 'better' on the pipeline + ; + + (define_attr "type" "set,xset,la" (const_string "xset")) + + ; + ; Set operations changing a target register, which could be used for + ; address generation. Adjust cost will check, if realy applicable. + ; + + (define_function_unit "memory" 1 0 + (and (eq_attr "type" "set") + (eq_attr "cycle" "1")) + 5 1 [(eq_attr "atype" "mem")] ) + + (define_function_unit "memory" 1 0 + (and (eq_attr "type" "set") + (eq_attr "cycle" "2")) 5 2) + + (define_function_unit "memory" 1 0 + (and (eq_attr "type" "set") + (eq_attr "cycle" "3")) 5 3) + + (define_function_unit "memory" 1 0 + (and (eq_attr "type" "set") + (eq_attr "cycle" "n")) 5 4) + + (define_function_unit "memory" 1 0 + (eq_attr "type" "la") 2 1) + + ; + ; xset insns, which don't set any valid address register. + ; Only the issue delay matters. + ; + + (define_function_unit "memory" 1 0 + (and (eq_attr "type" "xset") + (eq_attr "cycle" "1")) 1 1) + + (define_function_unit "memory" 1 0 + (and (eq_attr "type" "xset") + (eq_attr "cycle" "2")) 1 2) + + (define_function_unit "memory" 1 0 + (and (eq_attr "type" "xset") + (eq_attr "cycle" "3")) 1 3) + + (define_function_unit "memory" 1 0 + (and (eq_attr "type" "xset") + (eq_attr "cycle" "n")) 1 4) + + ; Operand type. Used to default length attribute values + + (define_attr "op_type" + "NN,E,RR,RRE,RX,RS,RSI,RI,SI,S,SS,SSE,RXE,RSE,RIL,RIE" + (const_string "RX")) + + ;; Length in bytes. + + (define_attr "length" "" + (cond [ (eq_attr "op_type" "E") (const_int 2) + (eq_attr "op_type" "RR") (const_int 2) + (eq_attr "op_type" "RX") (const_int 4) + (eq_attr "op_type" "RI") (const_int 4) + (eq_attr "op_type" "RRE") (const_int 4) + (eq_attr "op_type" "RS") (const_int 4) + (eq_attr "op_type" "RSI") (const_int 4) + (eq_attr "op_type" "RX") (const_int 4) + (eq_attr "op_type" "S") (const_int 4) + (eq_attr "op_type" "SI") (const_int 4) + (eq_attr "op_type" "SS") (const_int 6) + (eq_attr "op_type" "SSE") (const_int 6) + (eq_attr "op_type" "RXE") (const_int 6) + (eq_attr "op_type" "RSE") (const_int 6) + (eq_attr "op_type" "RIL") (const_int 6)] + (const_int 4))) + + ;; Define attributes for `asm' insns. + + (define_asm_attributes [(set_attr "type" "xset") + (set_attr "op_type" "NN")]) + + ;; + ;; Condition Codes + ;; + ; + ; CCL: Zero Nonzero Zero Nonzero (AL, ALR, SL, SLR, N, NC, NI, NR, O, OC, OI, OR, X, XC, XI, XR) + ; CCA: Zero Zero Overflow (A, AR, AH, AHI, S, SR, SH, SHI, LTR, LCR, LNR, LPR, SLA, SLDA, SLA, SRDA) + ; CCU: Equal ULess UGreater -- (CL, CLR, CLI, CLM) + ; CCS: Equal SLess SGreater -- (C, CR, CH, CHI, ICM) + ; CCT: Zero Mixed Mixed Ones (TM, TMH, TML) + + ; CCZ -> CCL / CCZ1 + ; CCZ1 -> CCA/CCU/CCS/CCT + ; CCS -> CCA + + ; String: CLC, CLCL, CLCLE, CLST, CUSE, MVCL, MVCLE, MVPG, MVST, SRST + ; Clobber: CKSM, CFC, CS, CDS, CUUTF, CUTFU, PLO, SPM, STCK, STCKE, TS, TRT, TRE, UPT + + + ;; + ;;- Compare instructions. + ;; + + (define_expand "cmpdi" + [(set (reg:CC 33) + (compare:CC (match_operand:DI 0 "register_operand" "") + (match_operand:DI 1 "general_operand" "")))] + "TARGET_64BIT" + " + { + s390_compare_op0 = operands[0]; + s390_compare_op1 = operands[1]; + DONE; + }") + + (define_expand "cmpsi" + [(set (reg:CC 33) + (compare:CC (match_operand:SI 0 "register_operand" "") + (match_operand:SI 1 "general_operand" "")))] + "" + " + { + s390_compare_op0 = operands[0]; + s390_compare_op1 = operands[1]; + DONE; + }") + + ;(define_expand "cmphi" + ; [(set (reg:CC 33) + ; (compare:CC (match_operand:HI 0 "register_operand" "") + ; (match_operand:HI 1 "general_operand" "")))] + ; "" + ; " + ;{ + ; s390_compare_op0 = operands[0]; + ; s390_compare_op1 = operands[1]; + ; DONE; + ;}") + + ;(define_expand "cmpqi" + ; [(set (reg:CC 33) + ; (compare:CC (match_operand:QI 0 "register_operand" "") + ; (match_operand:QI 1 "general_operand" "")))] + ; "" + ; " + ;{ + ; s390_compare_op0 = operands[0]; + ; s390_compare_op1 = operands[1]; + ; DONE; + ;}") + + (define_expand "cmpdf" + [(set (reg:CC 33) + (compare:CC (match_operand:DF 0 "register_operand" "") + (match_operand:DF 1 "general_operand" "")))] + "TARGET_HARD_FLOAT" + " + { + s390_compare_op0 = operands[0]; + s390_compare_op1 = operands[1]; + DONE; + }") + + (define_expand "cmpsf" + [(set (reg:CC 33) + (compare:CC (match_operand:SF 0 "register_operand" "") + (match_operand:SF 1 "general_operand" "")))] + "TARGET_HARD_FLOAT" + " + { + s390_compare_op0 = operands[0]; + s390_compare_op1 = operands[1]; + DONE; + }") + + + ; DI instructions + + (define_insn "*cmpdi_tm2" + [(set (reg 33) + (compare (zero_extract:DI (match_operand:DI 0 "register_operand" "d") + (match_operand:DI 1 "const1_operand" "") + (match_operand:DI 2 "immediate_operand" "I")) + (const_int 0)))] + "s390_match_ccmode(insn, CCTmode) && + INTVAL(operands[2]) >= 0 && INTVAL(operands[2]) < 64" + "* + { + if (INTVAL (operands[2]) > 47) + { + operands[1] = GEN_INT (1 << (63 - INTVAL(operands[2]))); + return \"tmll\\t%0,%x1\"; + } + else if (INTVAL (operands[2]) > 31) + { + operands[1] = GEN_INT (1 << (47 - INTVAL(operands[2]))); + return \"tmlh\\t%0,%x1\"; + } + else if (INTVAL (operands[2]) > 15) + { + operands[1] = GEN_INT (1 << (31 - INTVAL(operands[2]))); + return \"tmhl\\t%0,%x1\"; + } + operands[1] = GEN_INT (1 << (15 - INTVAL(operands[2]))); + return \"tmhh\\t%0,%x1\"; + }" + [(set_attr "op_type" "RX") + (set_attr "type" "xset")]) + + + (define_insn "*cmpdi_tm" + [(set (reg 33) + (compare (and:DI (match_operand:DI 0 "register_operand" "%d") + (match_operand:DI 1 "tmxx_operand" "Lm")) + (const_int 0)))] + "s390_match_ccmode(insn, CCTmode)" + "* + { + unsigned HOST_WIDEST_INT i; + if (GET_CODE (operands[1]) == MEM && + GET_CODE (XEXP (operands[1],0)) == SYMBOL_REF && + CONSTANT_POOL_ADDRESS_P (XEXP (operands[1],0))) + { + operands[1] = get_pool_constant (XEXP (operands[1],0)); + } + + i = (unsigned HOST_WIDEST_INT) INTVAL (operands[1]); + + if (i >= 0x1000000000000ULL) + { + operands[1] = GEN_INT (i >> 48); + return \"tmhh\\t%0,%x1\"; + } + else if (i > 0x100000000ULL) + { + operands[1] = GEN_INT (i >> 32); + return \"tmhl\\t%0,%x1\"; + } + else if (i >= 0x10000ULL) + { + operands[1] = GEN_INT (i >> 16); + return \"tmlh\\t%0,%x1\"; + } + else + return \"tmll\\t%0,%x1\"; + }" + [(set_attr "op_type" "RX") + (set_attr "type" "xset")]) + + + (define_insn "*ltgr" + [(set (reg 33) + (compare (match_operand:DI 0 "register_operand" "d") + (match_operand:DI 1 "const0_operand" ""))) + (set (match_operand:DI 2 "register_operand" "=d") + (match_dup 0))] + "s390_match_ccmode(insn, CCSmode) && TARGET_64BIT" + "ltgr\\t%2,%0" + [(set_attr "op_type" "RRE") + (set_attr "type" "set")]) + + (define_insn "*cmpdi_ccs_0_64" + [(set (reg 33) + (compare (match_operand:DI 0 "register_operand" "d") + (match_operand:DI 1 "const0_operand" "")))] + "s390_match_ccmode(insn, CCSmode) && TARGET_64BIT" + "ltgr\\t%0,%0" + [(set_attr "op_type" "RRE") + (set_attr "type" "set")]) + + (define_insn "*cmpdi_ccs_0_31" + [(set (reg 33) + (compare (match_operand:DI 0 "register_operand" "d") + (match_operand:DI 1 "const0_operand" "")))] + "s390_match_ccmode(insn, CCSmode)" + "srda\\t%0,0" + [(set_attr "op_type" "RS") + (set_attr "type" "set")]) + + (define_insn "*cmpdi_ccs" + [(set (reg 33) + (compare (match_operand:DI 0 "register_operand" "d,d,d") + (match_operand:DI 1 "general_operand" "d,K,m")))] + "s390_match_ccmode(insn, CCSmode) && TARGET_64BIT" + "@ + cgr\\t%0,%1 + cghi\\t%0,%c1 + cg\\t%0,%1" + [(set_attr "op_type" "RRE,RI,RXE") + (set_attr "atype" "reg,reg,mem")]) + + (define_insn "*cmpdi_ccu" + [(set (reg 33) + (compare (match_operand:DI 0 "register_operand" "d,d") + (match_operand:DI 1 "general_operand" "d,m")))] + "s390_match_ccmode(insn, CCUmode) && TARGET_64BIT" + "@ + clgr\\t%0,%1 + clg\\t%0,%1" + [(set_attr "op_type" "RRE,RXE") + (set_attr "atype" "reg,mem")]) + + (define_insn "*cmpdi_ccu_mem" + [(set (reg 33) + (compare (match_operand:DI 0 "s_operand" "oQ") + (match_operand:DI 1 "s_operand" "oQ")))] + "s390_match_ccmode(insn, CCUmode)" + "clc\\t%O0(8,%R0),%1" + [(set_attr "op_type" "SS") + (set_attr "atype" "mem")]) + + ; SI instructions + + (define_insn "*cmpsi_cct" + [(set (reg 33) + (compare (zero_extract:SI (match_operand:SI 0 "register_operand" "%d") + (match_operand:SI 1 "const1_operand" "") + (match_operand:SI 2 "immediate_operand" "I")) + (const_int 0)))] + "s390_match_ccmode(insn, CCTmode) && + INTVAL(operands[2]) >= 0 && INTVAL(operands[2]) < 32" + "* + { + if (INTVAL (operands[2]) > 15) + { + operands[1] = GEN_INT (1 << (31 - INTVAL(operands[2]))); + return \"tml\\t%0,%x1\"; + } + operands[1] = GEN_INT (1 << (15 - INTVAL(operands[2]))); + return \"tmh\\t%0,%x1\"; + }" + [(set_attr "op_type" "RI") + (set_attr "type" "xset")]) + + (define_insn "*cmpsi_tm" + [(set (reg 33) + (compare (and:SI (match_operand:SI 0 "register_operand" "%d") + (match_operand:SI 1 "tmxx_operand" "Lm")) + (const_int 0)))] + "s390_match_ccmode(insn, CCTmode)" + "* + { + unsigned long i; + if (GET_CODE (operands[1]) == MEM && + GET_CODE (XEXP (operands[1],0)) == SYMBOL_REF && + CONSTANT_POOL_ADDRESS_P (XEXP (operands[1],0))) + { + operands[1] = get_pool_constant (XEXP (operands[1],0)); + } + + i = (unsigned long) INTVAL (operands[1]); + if (i > 0xffff) + { + operands[1] = GEN_INT (i / 0x10000); + return \"tmh\\t%0,%x1\"; + } + return \"tml\\t%0,%x1\"; + }" + [(set_attr "op_type" "RX") + (set_attr "type" "xset")]) + + + (define_insn "*ltr" + [(set (reg 33) + (compare (match_operand:SI 0 "register_operand" "d") + (match_operand:SI 1 "const0_operand" ""))) + (set (match_operand:SI 2 "register_operand" "=d") + (match_dup 0))] + "s390_match_ccmode(insn, CCSmode)" + "ltr\\t%2,%0" + [(set_attr "op_type" "RR") + (set_attr "type" "set")]) + + (define_insn "*icm15" + [(set (reg 33) + (compare (match_operand:SI 0 "s_operand" "Qo") + (match_operand:SI 1 "const0_operand" ""))) + (set (match_operand:SI 2 "register_operand" "=d") + (match_dup 0))] + "s390_match_ccmode(insn, CCSmode)" + "icm\\t%2,15,%0" + [(set_attr "op_type" "RS") + (set_attr "atype" "mem") + (set_attr "type" "set")]) + + (define_insn "*icm15_cconly" + [(set (reg 33) + (compare (match_operand:SI 0 "s_operand" "Qo") + (match_operand:SI 1 "const0_operand" ""))) + (clobber (match_scratch:SI 2 "=d"))] + "s390_match_ccmode(insn, CCSmode)" + "icm\\t%2,15,%0" + [(set_attr "op_type" "RS") + (set_attr "atype" "mem") + (set_attr "type" "set")]) + + (define_insn "*cmpsi_ccs_0" + [(set (reg 33) + (compare (match_operand:SI 0 "register_operand" "d") + (match_operand:SI 1 "const0_operand" "")))] + "s390_match_ccmode(insn, CCSmode)" + "ltr\\t%0,%0" + [(set_attr "op_type" "RR") + (set_attr "type" "set")]) + + (define_insn "*cmpsidi_ccs" + [(set (reg 33) + (compare (match_operand:SI 0 "register_operand" "d") + (sign_extend:SI (match_operand:HI 1 "memory_operand" "m"))))] + "s390_match_ccmode(insn, CCSmode)" + "ch\\t%0,%1" + [(set_attr "op_type" "RR") + (set_attr "atype" "mem") + (set_attr "type" "xset")]) + + (define_insn "*cmpsi_ccs" + [(set (reg 33) + (compare (match_operand:SI 0 "register_operand" "d,d,d") + (match_operand:SI 1 "general_operand" "d,K,m")))] + "s390_match_ccmode(insn, CCSmode)" + "@ + cr\\t%0,%1 + chi\\t%0,%c1 + c\\t%0,%1" + [(set_attr "op_type" "RR,RI,RX") + (set_attr "atype" "reg,reg,mem") + (set_attr "type" "xset,xset,xset")]) + + (define_insn "*cmpsi_ccu" + [(set (reg 33) + (compare (match_operand:SI 0 "register_operand" "d,d") + (match_operand:SI 1 "general_operand" "d,m")))] + "s390_match_ccmode(insn, CCUmode)" + "@ + clr\\t%0,%1 + cl\\t%0,%1" + [(set_attr "op_type" "RR,RX") + (set_attr "atype" "reg,mem")]) + + (define_insn "*cmpsi_ccu_mem" + [(set (reg 33) + (compare (match_operand:SI 0 "s_operand" "oQ") + (match_operand:SI 1 "s_operand" "oQ")))] + "s390_match_ccmode(insn, CCUmode)" + "clc\\t%O0(4,%R0),%1" + [(set_attr "op_type" "SS") + (set_attr "atype" "mem") + (set_attr "type" "xset")]) + + + ; HI instructions + + (define_insn "*icm3" + [(set (reg 33) + (compare (match_operand:HI 0 "s_operand" "Qo") + (match_operand:HI 1 "const0_operand" ""))) + (set (match_operand:HI 2 "register_operand" "=d") + (match_dup 0))] + "s390_match_ccmode(insn, CCSmode)" + "icm\\t%2,3,%0" + [(set_attr "op_type" "RS") + (set_attr "atype" "mem") + (set_attr "type" "set")]) + + (define_insn "*cmphi_cct_0" + [(set (reg 33) + (compare (match_operand:HI 0 "register_operand" "d") + (match_operand:HI 1 "const0_operand" "")))] + "s390_match_ccmode(insn, CCTmode)" + "tml\\t%0,65535" + [(set_attr "op_type" "RX") + (set_attr "type" "xset")]) + + (define_insn "*cmphi_ccs_0" + [(set (reg 33) + (compare (match_operand:HI 0 "s_operand" "Qo") + (match_operand:HI 1 "const0_operand" ""))) + (clobber (match_scratch:HI 2 "=d"))] + "s390_match_ccmode(insn, CCSmode)" + "icm\\t%2,3,%0" + [(set_attr "op_type" "RS") + (set_attr "atype" "mem") + (set_attr "type" "set")]) + + (define_insn "*cmphi_ccu" + [(set (reg 33) + (compare (match_operand:HI 0 "register_operand" "d") + (match_operand:HI 1 "s_operand" "Qo")))] + "s390_match_ccmode(insn, CCUmode)" + "clm\\t%0,3,%1" + [(set_attr "op_type" "RS") + (set_attr "atype" "mem") + (set_attr "type" "xset")]) + + (define_insn "*cmphi_ccu_mem" + [(set (reg 33) + (compare (match_operand:HI 0 "s_operand" "oQ") + (match_operand:HI 1 "s_operand" "oQ")))] + "s390_match_ccmode(insn, CCUmode)" + "clc\\t%O0(2,%R0),%1" + [(set_attr "op_type" "SS") + (set_attr "atype" "mem") + (set_attr "type" "xset")]) + + + ; QI instructions + + (define_insn "*icm1" + [(set (reg 33) + (compare (match_operand:QI 0 "s_operand" "Qo") + (match_operand:QI 1 "const0_operand" ""))) + (set (match_operand:QI 2 "register_operand" "=d") + (match_dup 0))] + "s390_match_ccmode(insn, CCSmode)" + "icm\\t%2,1,%0" + [(set_attr "op_type" "RS") + (set_attr "atype" "mem") + (set_attr "type" "set")]) + + (define_insn "*tm_0" + [(set (reg 33) + (compare (zero_extend:SI (and:QI (match_operand:QI 0 "s_operand" "Qo") + (match_operand:QI 1 "immediate_operand" ""))) + (const_int 0)))] + "s390_match_ccmode(insn, CCTmode) && + INTVAL(operands[1]) >= 0 && INTVAL(operands[1]) < 256" + "tm\\t%0,%1" + [(set_attr "op_type" "RI") + (set_attr "atype" "mem") + (set_attr "type" "xset")]) + + (define_insn "*cmpqi_cct_0" + [(set (reg 33) + (compare (match_operand:QI 0 "register_operand" "d") + (match_operand:QI 1 "const0_operand" "")))] + "s390_match_ccmode(insn, CCTmode)" + "tml\\t%0,255" + [(set_attr "op_type" "RI") + (set_attr "type" "xset")]) + + (define_insn "*cmpqi_ccs_0" + [(set (reg 33) + (compare (match_operand:QI 0 "s_operand" "Qo") + (match_operand:QI 1 "const0_operand" ""))) + (clobber (match_scratch:QI 2 "=d"))] + "s390_match_ccmode(insn, CCSmode)" + "icm\\t%2,1,%0" + [(set_attr "op_type" "RS") + (set_attr "type" "xset")]) + + (define_insn "*cmpqi_ccu_0" + [(set (reg 33) + (compare (match_operand:QI 0 "s_operand" "Qo") + (match_operand:QI 1 "const0_operand" "")))] + "s390_match_ccmode(insn, CCUmode)" + "cli\\t%0,0" + [(set_attr "op_type" "SI") + (set_attr "atype" "mem") + (set_attr "type" "xset")]) + + (define_insn "*cmpqi_ccu" + [(set (reg 33) + (compare (match_operand:QI 0 "register_operand" "d") + (match_operand:QI 1 "s_operand" "Qo")))] + "s390_match_ccmode(insn, CCUmode)" + "clm\\t%0,1,%1" + [(set_attr "op_type" "RS") + (set_attr "atype" "mem") + (set_attr "type" "xset")]) + + (define_insn "*cmpqi_ccu_immed" + [(set (reg 33) + (compare (match_operand:QI 0 "s_operand" "Qo") + (match_operand:QI 1 "immediate_operand" "")))] + "s390_match_ccmode(insn, CCUmode) && + INTVAL(operands[1]) >= 0 && INTVAL(operands[1]) < 256" + "cli\\t%0,%1" + [(set_attr "op_type" "SI") + (set_attr "atype" "mem") + (set_attr "type" "xset")]) + + (define_insn "*cmpqi_ccu_mem" + [(set (reg 33) + (compare (match_operand:QI 0 "s_operand" "oQ") + (match_operand:QI 1 "s_operand" "oQ")))] + "s390_match_ccmode(insn, CCUmode)" + "clc\\t%O0(1,%R0),%1" + [(set_attr "op_type" "SS") + (set_attr "atype" "mem") + (set_attr "type" "xset")]) + + + ; DF instructions + + (define_insn "*cmpdf_ccs_0" + [(set (reg 33) + (compare (match_operand:DF 0 "register_operand" "f") + (match_operand:DF 1 "const0_operand" "")))] + "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "ltdbr\\t%0,%0" + [(set_attr "op_type" "RR") + (set_attr "type" "set")]) + + (define_insn "*cmpdf_ccs_0_ibm" + [(set (reg 33) + (compare (match_operand:DF 0 "register_operand" "f") + (match_operand:DF 1 "const0_operand" "")))] + "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "ltdr\\t%0,%0" + [(set_attr "op_type" "RR") + (set_attr "type" "set")]) + + (define_insn "*cmpdf_ccs" + [(set (reg 33) + (compare (match_operand:DF 0 "register_operand" "f,f") + (match_operand:DF 1 "nonimmediate_operand" "f,m")))] + "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "@ + cdbr\\t%0,%1 + cdb\\t%0,%1" + [(set_attr "op_type" "RR,RX") + (set_attr "atype" "reg,mem") + (set_attr "type" "xset,xset")]) + + (define_insn "*cmpdf_ccs_ibm" + [(set (reg 33) + (compare (match_operand:DF 0 "register_operand" "f,f") + (match_operand:DF 1 "nonimmediate_operand" "f,m")))] + "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "@ + cdr\\t%0,%1 + cd\\t%0,%1" + [(set_attr "op_type" "RR,RX") + (set_attr "atype" "reg,mem") + (set_attr "type" "xset,xset")]) + + + ; SF instructions + + (define_insn "*cmpsf_ccs_0" + [(set (reg 33) + (compare (match_operand:SF 0 "register_operand" "f") + (match_operand:SF 1 "const0_operand" "")))] + "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "ltebr\\t%0,%0" + [(set_attr "op_type" "RR") + (set_attr "type" "set")]) + + (define_insn "*cmpsf_ccs_0_ibm" + [(set (reg 33) + (compare (match_operand:SF 0 "register_operand" "f") + (match_operand:SF 1 "const0_operand" "")))] + "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "lter\\t%0,%0" + [(set_attr "op_type" "RR") + (set_attr "type" "set")]) + + (define_insn "*cmpsf_ccs" + [(set (reg 33) + (compare (match_operand:SF 0 "register_operand" "f,f") + (match_operand:SF 1 "nonimmediate_operand" "f,m")))] + "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "@ + cebr\\t%0,%1 + ceb\\t%0,%1" + [(set_attr "op_type" "RR,RX") + (set_attr "atype" "reg,mem") + (set_attr "type" "xset,xset")]) + + (define_insn "*cmpsf_ccs" + [(set (reg 33) + (compare (match_operand:SF 0 "register_operand" "f,f") + (match_operand:SF 1 "nonimmediate_operand" "f,m")))] + "s390_match_ccmode(insn, CCSmode) && TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "@ + cer\\t%0,%1 + ce\\t%0,%1" + [(set_attr "op_type" "RR,RX") + (set_attr "atype" "reg,mem") + (set_attr "type" "xset,xset")]) + + + ;; + ;;- Move instructions. + ;; + + ; + ; movti instruction pattern(s). + ; + + (define_insn "movti" + [(set (match_operand:TI 0 "nonimmediate_operand" "=d,d,d,m,Q") + (match_operand:TI 1 "general_operand" "d,K,m,d,Q"))] + "TARGET_64BIT" + "* + { + switch (which_alternative) + { + case 0: /* d <- d */ + if (REGNO (operands[0]) == REGNO (operands[1]) + 1) + return \"lgr\\t%M0,%M1\;lgr\\t%0,%1\"; + else + return \"lgr\\t%0,%1\;lgr\\t%M0,%M1\"; + + case 1: /* d <- K */ + if (INTVAL(operands[1]) < 0) + return \"lghi\\t%0,-1\;lghi\\t%M0,%h1\"; + else + return \"lghi\\t%0,0\;lghi\\t%M0,%h1\"; + + case 2: /* d <- m */ + if (s_operand (operands[1], GET_MODE (operands[1]))) + return \"lmg\\t%0,%M0,%1\"; + else + return \"la\\t%M0,%1\;lmg\\t%0,%M0,0(%M0)\"; + + case 3: /* m <- d */ + if (!s_operand (operands[0], GET_MODE (operands[0]))) + return \"stg\\t%1,%0\;stg\\t%M1,%M0\"; + else + return \"stmg\\t%1,%M1,%0\"; + + case 4: /* m <- m */ + return \"mvc\\t%O0(16,%R0),%1\"; + } + }" + [(set_attr "op_type" "NN,NN,RS,RS,SS") + (set_attr "atype" "reg,reg,mem,mem,mem") + (set_attr "type" "set") + (set_attr "length" "12,8,10,10,*")]) + + ; + ; movdi instruction pattern(s). + ; + + ;; If generating PIC code and operands[1] is a symbolic CONST, emit a + ;; move to get the address of the symbolic object from the GOT. + + (define_expand "movdi" + [(set (match_operand:DI 0 "general_operand" "") + (match_operand:DI 1 "general_operand" ""))] + "" + " + { + if (CONSTANT_P (operands[1]) + && !LEGITIMATE_CONSTANT_P (operands[1])) + operands[1] = force_const_mem (DImode, operands[1]); + + if (TARGET_64BIT && flag_pic && SYMBOLIC_CONST (operands[1])) + emit_pic_move (operands, DImode); + }") + + (define_insn "*movdi_64" + [(set (match_operand:DI 0 "nonimmediate_operand" "=d,d,d,d,m,Q") + (match_operand:DI 1 "general_operand" "d,K,S,m,d,Q"))] + "TARGET_64BIT" + "@ + lgr\\t%0,%1 + lghi\\t%0,%h1 + larl\\t%0,%1 + lg\\t%0,%1 + stg\\t%1,%0 + mvc\\t%O0(8,%R0),%1" + [(set_attr "op_type" "RRE,RI,RIL,RXE,RXE,SS") + (set_attr "atype" "reg,reg,reg,mem,mem,mem") + (set_attr "type" "set,set,la,set,set,set")]) + + (define_insn "*movdi_31" + [(set (match_operand:DI 0 "nonimmediate_operand" "=d,d,d,m,Q") + (match_operand:DI 1 "general_operand" "d,K,m,d,Q"))] + "!TARGET_64BIT" + "* + { + switch (which_alternative) + { + case 0: /* d <- d */ + if (REGNO (operands[0]) == REGNO (operands[1]) + 1) + return \"lr\\t%N0,%N1\;lr\\t%0,%1\"; + else + return \"lr\\t%0,%1\;lr\\t%N0,%N1\"; + + case 1: /* d <- K */ + if (INTVAL (operands[1]) < 0) + return \"lhi\\t%0,-1\;lhi\\t%N0,%h1\"; + else + return \"lhi\\t%0,0\;lhi\\t%N0,%h1\"; + + case 2: /* d <- m */ + if (s_operand (operands[1], GET_MODE (operands[1]))) + return \"lm\\t%0,%N0,%1\"; + else + return \"la\\t%N0,%1\;lm\\t%0,%N0,0(%N0)\"; + + case 3: /* m <- d */ + if (s_operand (operands[0], GET_MODE (operands[0]))) + return \"stm\\t%1,%N1,%0\"; + else + return \"st\\t%1,%0\;st\\t%N1,%N0\"; + + case 4: /* m <- m */ + return \"mvc\\t%O0(8,%R0),%1\"; + } + }" + [(set_attr "op_type" "NN,NN,RS,RS,SS") + (set_attr "atype" "reg,reg,mem,mem,mem") + (set_attr "type" "set") + (set_attr "length" "4,8,8,8,*")]) + + + ; + ; movsi instruction pattern(s). + ; + + ;; If generating PIC code and operands[1] is a symbolic CONST, emit a + ;; move to get the address of the symbolic object from the GOT. + + (define_expand "movsi" + [(set (match_operand:SI 0 "general_operand" "") + (match_operand:SI 1 "general_operand" ""))] + "" + " + { + if (CONSTANT_P (operands[1]) + && !LEGITIMATE_CONSTANT_P (operands[1])) + operands[1] = force_const_mem (SImode, operands[1]); + + if (flag_pic && SYMBOLIC_CONST (operands[1])) + emit_pic_move (operands, SImode); + }") + + (define_insn "*movsi" + [(set (match_operand:SI 0 "nonimmediate_operand" "=d,d,d,m,Q") + (match_operand:SI 1 "general_operand" "d,K,m,d,Q"))] + "" + "@ + lr\\t%0,%1 + lhi\\t%0,%h1 + l\\t%0,%1 + st\\t%1,%0 + mvc\\t%O0(4,%R0),%1" + [(set_attr "op_type" "RR,RI,RX,RX,SS") + (set_attr "atype" "reg,reg,mem,mem,mem") + (set_attr "type" "set")]) + + + ; + ; movhi instruction pattern(s). + ; + + (define_insn "movhi" + [(set (match_operand:HI 0 "nonimmediate_operand" "=d,d,d,m") + (match_operand:HI 1 "r_or_x_or_im16_operand" "d,K,m,d"))] + "" + "@ + lr\\t%0,%1 + lhi\\t%0,%h1 + lh\\t%0,%1 + sth\\t%1,%0" + [(set_attr "op_type" "RR,RI,RX,RX") + (set_attr "atype" "reg,reg,mem,mem") + (set_attr "type" "xset")]) + + + ; + ; movqi instruction pattern(s). + ; + + (define_insn "movqi_64" + [(set (match_operand:QI 0 "nonimmediate_operand" "=d,d,d,m,Q") + (match_operand:QI 1 "general_operand" "d,K,m,d,n"))] + "TARGET_64BIT" + "@ + lr\\t%0,%1 + llill\\t%0,%x1 + llgc\\t%0,%1 + stc\\t%1,%0 + mvi\\t%0,%b1" + [(set_attr "op_type" "RR,RI,RXE,RX,SI") + (set_attr "atype" "reg,reg,mem,mem,mem") + (set_attr "type" "xset")]) + + + (define_insn "movqi" + [(set (match_operand:QI 0 "nonimmediate_operand" "=d,d,d,m,Q") + (match_operand:QI 1 "r_or_x_or_im16_operand" "d,n,m,d,n"))] + "" + "@ + lr\\t%0,%1 + lhi\\t%0,%c1 + ic\\t%0,%1 + stc\\t%1,%0 + mvi\\t%0,%b1" + [(set_attr "op_type" "RR,RX,RX,RX,SI") + (set_attr "atype" "reg,reg,mem,mem,mem") + (set_attr "type" "xset")]) + + + ; + ; moveqstrictqi instruction pattern(s). + ; + + (define_insn "*movstrictqi" + [(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+d,m")) + (match_operand:QI 1 "nonimmediate_operand" "m,d"))] + "" + "@ + ic\\t%0,%1 + stc\\t%1,%0" + [(set_attr "op_type" "RX,RX") + (set_attr "atype" "mem,mem")]) + + + ; + ; movstricthi instruction pattern(s). + ; + + (define_insn "*movstricthi" + [(set (strict_low_part (match_operand:HI 0 "r_or_s_operand" "+d,Q")) + (match_operand:HI 1 "r_or_s_operand" "Q,d")) + (clobber (reg:CC 33))] + "" + "@ + icm\\t%0,3,%1 + stcm\\t%1,3,%0" + [(set_attr "op_type" "RS,RS") + (set_attr "atype" "mem") + (set_attr "type" "xset")]) + + + ; + ; movstrictsi instruction pattern(s). + ; + + (define_insn "movestrictsi" + [(set (strict_low_part (match_operand:SI 0 "nonimmediate_operand" "+d,d,m")) + (match_operand:SI 1 "nonimmediate_operand" "d,m,d"))] + "TARGET_64BIT" + "@ + lr\\t%0,%1 + l\\t%0,%1 + st\\t%1,%0" + [(set_attr "op_type" "RR,RS,RS") + (set_attr "atype" "reg,mem,mem") + (set_attr "type" "xset")]) + + + ; + ; movdf instruction pattern(s). + ; + + (define_expand "movdf" + [(set (match_operand:DF 0 "nonimmediate_operand" "") + (match_operand:DF 1 "general_operand" ""))] + "" + " + { + if (GET_CODE (operands[1]) == CONST_DOUBLE) + operands[1] = force_const_mem (DFmode, operands[1]); + }") + + (define_insn "*movdf_64" + [(set (match_operand:DF 0 "nonimmediate_operand" "=f,f,m,d,m,d,Q") + (match_operand:DF 1 "general_operand" "f,m,f,m,d,d,Q"))] + "TARGET_64BIT && TARGET_HARD_FLOAT" + "@ + ldr\\t%0,%1 + ld\\t%0,%1 + std\\t%1,%0 + lg\\t%0,%1 + stg\\t%1,%0 + lgr\\t%0,%1 + mvc\\t%O0(8,%R0),%1" + [(set_attr "op_type" "RR,RX,RX,RXE,RXE,RR,SS") + (set_attr "atype" "reg,mem,mem,mem,mem,mem,mem") + (set_attr "type" "xset")]) + + (define_insn "*movdf_31" + [(set (match_operand:DF 0 "nonimmediate_operand" "=f,f,m,d,m,d,Q") + (match_operand:DF 1 "general_operand" "f,m,f,m,d,d,Q"))] + "TARGET_HARD_FLOAT" + "* + { + switch (which_alternative) + { + case 0: /* f <- f */ + return \"ldr\\t%0,%1\"; + + case 1: /* f <- m */ + return \"ld\\t%0,%1\"; + + case 2: /* m <- f */ + return \"std\\t%1,%0\"; + + case 3: /* d <- m */ + if (s_operand (operands[1], GET_MODE (operands[1]))) + return \"lm\\t%0,%N0,%1\"; + else + return \"la\\t%N0,%1\;lm\\t%0,%N0,0(%N0)\"; + + case 4: /* m <- d */ + if (s_operand (operands[0], GET_MODE (operands[0]))) + return \"stm\\t%1,%N1,%0\"; + else + return \"st\\t%1,%0\;st\\t%N1,%N0\"; + + case 5: /* d <- d */ + if (REGNO (operands[0]) == REGNO (operands[1]) + 1) + return \"lr\\t%N0,%N1\;lr\\t%0,%1\"; + else + return \"lr\\t%0,%1\;lr\\t%N0,%N1\"; + + case 6: /* m <- m */ + return \"mvc\\t%O0(8,%R0),%1\"; + } + }" + [(set_attr "op_type" "RR,RX,RX,RS,RS,NN,SS") + (set_attr "atype" "reg,mem,mem,mem,mem,reg,mem") + (set_attr "length" "*,*,*,*,*,4,*")]) + + (define_insn "*movdf_soft_64" + [(set (match_operand:DF 0 "nonimmediate_operand" "=d,m,d,Q") + (match_operand:DF 1 "general_operand" "m,d,d,Q"))] + "TARGET_64BIT && TARGET_SOFT_FLOAT" + "@ + lg\\t%0,%1 + stg\\t%1,%0 + lgr\\t%0,%1 + mvc\\t%O0(8,%R0),%1" + [(set_attr "op_type" "RXE,RXE,RR,SS") + (set_attr "atype" "mem,mem,mem,mem") + (set_attr "type" "xset")]) + + (define_insn "*movdf_soft_31" + [(set (match_operand:DF 0 "nonimmediate_operand" "=!d,d,m,Q") + (match_operand:DF 1 "general_operand" "!d,m,d,Q"))] + "TARGET_SOFT_FLOAT" + "* + { + switch (which_alternative) + { + case 0: /* d <- d */ + if (REGNO (operands[0]) == REGNO (operands[1]) + 1) + return \"lr\\t%N0,%N1\;lr\\t%0,%1\"; + else + return \"lr\\t%0,%1\;lr\\t%N0,%N1\"; + + case 1: /* d <- m */ + if (s_operand (operands[1], GET_MODE (operands[1]))) + return \"lm\\t%0,%N0,%1\"; + else + return \"la\\t%N0,%1\;lm\\t%0,%N0,0(%N0)\"; + + case 2: /* m <- d */ + if (s_operand (operands[0], GET_MODE (operands[0]))) + return \"stm\\t%1,%N1,%0\"; + else + return \"st\\t%1,%0\;st\\t%N1,%N0\"; + + case 3: /* m <- m */ + return \"mvc\\t%O0(8,%R0),%1\"; + } + }" + [(set_attr "op_type" "NN,RS,RS,SS") + (set_attr "atype" "reg,mem,mem,mem") + (set_attr "length" "8,*,*,*")]) + + + ; + ; movsf instruction pattern(s). + ; + + (define_expand "movsf" + [(set (match_operand:SF 0 "nonimmediate_operand" "") + (match_operand:SF 1 "general_operand" ""))] + "" + " + { + if (GET_CODE (operands[1]) == CONST_DOUBLE) + operands[1] = force_const_mem (SFmode, operands[1]); + }") + + (define_insn "*movsf_64" + [(set (match_operand:SF 0 "nonimmediate_operand" "=f,f,m,d,m,d,Q") + (match_operand:SF 1 "general_operand" "f,m,f,m,d,d,Q"))] + "TARGET_64BIT && TARGET_HARD_FLOAT" + "@ + ler\\t%0,%1 + le\\t%0,%1 + ste\\t%1,%0 + llgf\\t%0,%1 + st\\t%1,%0 + lgr\\t%0,%1 + mvc\\t%O0(4,%R0),%1" + [(set_attr "op_type" "RR,RX,RX,RXE,RX,RR,SS") + (set_attr "atype" "reg,mem,mem,mem,mem,reg,mem")]) + + (define_insn "*movsf_31" + [(set (match_operand:SF 0 "nonimmediate_operand" "=f,f,m,d,m,d,Q") + (match_operand:SF 1 "general_operand" "f,m,f,m,d,d,Q"))] + "TARGET_HARD_FLOAT" + "@ + ler\\t%0,%1 + le\\t%0,%1 + ste\\t%1,%0 + l\\t%0,%1 + st\\t%1,%0 + lr\\t%0,%1 + mvc\\t%O0(4,%R0),%1" + [(set_attr "op_type" "RR,RX,RX,RX,RX,RR,SS") + (set_attr "atype" "reg,mem,mem,mem,mem,reg,mem")]) + + (define_insn "*movsf_soft" + [(set (match_operand:SF 0 "nonimmediate_operand" "=d,d,m,Q") + (match_operand:SF 1 "general_operand" "d,m,d,Q"))] + "TARGET_SOFT_FLOAT" + "@ + lr\\t%0,%1 + l\\t%0,%1 + st\\t%1,%0 + mvc\\t%O0(4,%R0),%1" + [(set_attr "op_type" "RR,RX,RX,SS") + (set_attr "atype" "reg,mem,mem,mem")]) + ; + ; load_multiple pattern(s). + ; + + (define_expand "load_multiple" + [(match_par_dup 3 [(set (match_operand 0 "" "") + (match_operand 1 "" "")) + (use (match_operand 2 "" ""))])] + "" + " + { + int regno; + int count; + rtx from; + int i; + + /* Support only loading a constant number of fixed-point registers from + memory and only bother with this if more than two */ + if (GET_CODE (operands[2]) != CONST_INT + || INTVAL (operands[2]) <= 2 + || INTVAL (operands[2]) > 16 + || GET_CODE (operands[1]) != MEM + || GET_CODE (operands[0]) != REG + || REGNO (operands[0]) >= 16) + FAIL; + + count = INTVAL (operands[2]); + regno = REGNO (operands[0]); + + operands[3] = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (count)); + from = force_reg (Pmode, XEXP (operands[1], 0)); + + for (i = 0; i < count; i++) + XVECEXP (operands[3], 0, i) + = gen_rtx_SET (VOIDmode, gen_rtx_REG (Pmode, regno + i), + change_address (operands[1], Pmode, + plus_constant (from, i * 4))); + }") + + (define_insn "*load_multiple_di" + [(match_parallel 0 "load_multiple_operation" + [(set (match_operand:DI 1 "register_operand" "=r") + (match_operand:DI 2 "s_operand" "oQ"))])] + "" + "* + { + int words = XVECLEN (operands[0], 0); + + if (XVECLEN (operands[0], 0) == 1) + return \"lg\\t%1,0(%2)\"; + + operands[0] = gen_rtx_REG (DImode, REGNO (operands[1]) + words - 1); + return \"lmg\\t%1,%0,%2\"; + }" + [(set_attr "op_type" "RXE") + (set_attr "atype" "mem") + (set_attr "type" "set")]) + + (define_insn "*load_multiple_si" + [(match_parallel 0 "load_multiple_operation" + [(set (match_operand:SI 1 "register_operand" "=r") + (match_operand:SI 2 "s_operand" "oQ"))])] + "" + "* + { + int words = XVECLEN (operands[0], 0); + + if (XVECLEN (operands[0], 0) == 1) + return \"l\\t%1,0(%2)\"; + + operands[0] = gen_rtx_REG (SImode, REGNO (operands[1]) + words - 1); + return \"lm\\t%1,%0,%2\"; + }" + [(set_attr "op_type" "RXE") + (set_attr "atype" "mem") + (set_attr "type" "set")]) + + ; + ; store multiple pattern(s). + ; + + (define_expand "store_multiple" + [(match_par_dup 3 [(set (match_operand 0 "" "") + (match_operand 1 "" "")) + (use (match_operand 2 "" ""))])] + "" + " + { + int regno; + int count; + rtx to; + int i; + + /* Support only storing a constant number of fixed-point registers to + memory and only bother with this if more than two. */ + if (GET_CODE (operands[2]) != CONST_INT + || INTVAL (operands[2]) <= 2 + || INTVAL (operands[2]) > 16 + || GET_CODE (operands[0]) != MEM + || GET_CODE (operands[1]) != REG + || REGNO (operands[1]) >= 16) + FAIL; + + count = INTVAL (operands[2]); + regno = REGNO (operands[1]); + + operands[3] = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (count)); + to = force_reg (Pmode, XEXP (operands[0], 0)); + + for (i = 0; i < count; i++) + XVECEXP (operands[3], 0, i) + = gen_rtx_SET (VOIDmode, + change_address (operands[0], Pmode, + plus_constant (to, i * 4)), + gen_rtx_REG (Pmode, regno + i)); + }") + + (define_insn "*store_multiple_di" + [(match_parallel 0 "store_multiple_operation" + [(set (match_operand:DI 1 "s_operand" "=oQ") + (match_operand:DI 2 "register_operand" "r"))])] + "" + "* + { + int words = XVECLEN (operands[0], 0); + + if (XVECLEN (operands[0], 0) == 1) + return \"stg\\t%1,0(%2)\"; + + operands[0] = gen_rtx_REG (DImode, REGNO (operands[2]) + words - 1); + return \"stmg\\t%2,%0,%1\"; + }" + [(set_attr "op_type" "RXE") + (set_attr "atype" "mem") + (set_attr "type" "xset")]) + + + (define_insn "*store_multiple_si" + [(match_parallel 0 "store_multiple_operation" + [(set (match_operand:SI 1 "s_operand" "=oQ") + (match_operand:SI 2 "register_operand" "r"))])] + "" + "* + { + int words = XVECLEN (operands[0], 0); + + if (XVECLEN (operands[0], 0) == 1) + return \"st\\t%1,0(%2)\"; + + operands[0] = gen_rtx_REG (SImode, REGNO (operands[2]) + words - 1); + return \"stm\\t%2,%0,%1\"; + }" + [(set_attr "op_type" "RXE") + (set_attr "atype" "mem") + (set_attr "type" "xset")]) + + ;; + ;; String instructions. + ;; + + ; + ; movstrdi instruction pattern(s). + ; + + (define_expand "movstrdi" + [(set (match_operand:BLK 0 "general_operand" "") + (match_operand:BLK 1 "general_operand" "")) + (use (match_operand:DI 2 "general_operand" "")) + (match_operand 3 "" "")] + "TARGET_64BIT" + " + { + rtx addr0, addr1; + + addr0 = force_operand (XEXP (operands[0], 0), NULL_RTX); + addr1 = force_operand (XEXP (operands[1], 0), NULL_RTX); + + if (GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) <= 256) + { + operands[0] = change_address (operands[0], VOIDmode, addr0); + operands[1] = change_address (operands[1], VOIDmode, addr1); + operands[2] = GEN_INT (INTVAL (operands[2]) - 1); + + emit_insn (gen_movstrsico (operands[0], operands[1], operands[2])); + DONE; + } + else + { + if (TARGET_MVCLE) + { + /* implementation suggested by Richard Henderson */ + rtx reg0 = gen_reg_rtx (TImode); + rtx reg1 = gen_reg_rtx (TImode); + rtx len = operands[2]; + + if (! CONSTANT_P (len)) + len = force_reg (DImode, len); + + /* Load up the address+length pairs. */ + + emit_move_insn (gen_rtx_SUBREG (DImode, reg0, 0), addr0); + emit_move_insn (gen_rtx_SUBREG (DImode, reg0, 1), len); + + emit_move_insn (gen_rtx_SUBREG (DImode, reg1, 0), addr1); + emit_move_insn (gen_rtx_SUBREG (DImode, reg1, 1), len); + + /* MOVE */ + emit_insn (gen_movstrdi_64 (reg0, reg1)); + DONE; + } + else + { + rtx label = gen_label_rtx (); + rtx reg0, reg1, len; + + reg0 = gen_reg_rtx (DImode); + reg1 = gen_reg_rtx (DImode); + len = gen_reg_rtx (DImode); + + emit_move_insn (len, operands[2]); + emit_insn (gen_cmpdi (len, const0_rtx)); + emit_jump_insn (gen_beq (label)); + emit_move_insn (reg0, addr0); + emit_move_insn (reg1, addr1); + emit_insn (gen_adddi3 (len, len, constm1_rtx)); + emit_insn (gen_movstrdix_64 (reg0, reg1, len)); + emit_label (label); + DONE; + } + } + }") + + ; + ; movstrsi instruction pattern(s). + ; + + (define_expand "movstrsi" + [(set (match_operand:BLK 0 "general_operand" "") + (match_operand:BLK 1 "general_operand" "")) + (use (match_operand:SI 2 "general_operand" "")) + (match_operand 3 "" "")] + "" + " + { + rtx addr0 = force_operand (XEXP (operands[0], 0), NULL_RTX); + rtx addr1 = force_operand (XEXP (operands[1], 0), NULL_RTX); + + if (GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) <= 256) + { + operands[0] = change_address (operands[0], VOIDmode, addr0); + operands[1] = change_address (operands[1], VOIDmode, addr1); + operands[2] = GEN_INT (INTVAL (operands[2]) - 1); + + emit_insn (gen_movstrsico (operands[0], operands[1], operands[2])); + DONE; + } + else + { + if (TARGET_64BIT) + FAIL; + + if (TARGET_MVCLE) + { + /* implementation suggested by Richard Henderson */ + rtx reg0 = gen_reg_rtx (DImode); + rtx reg1 = gen_reg_rtx (DImode); + rtx len = operands[2]; + + + if (! CONSTANT_P (len)) + len = force_reg (SImode, len); + + /* Load up the address+length pairs. */ + + emit_move_insn (gen_rtx_SUBREG (SImode, reg0, 0), addr0); + emit_move_insn (gen_rtx_SUBREG (SImode, reg0, 1), len); + + emit_move_insn (gen_rtx_SUBREG (SImode, reg1, 0), addr1); + emit_move_insn (gen_rtx_SUBREG (SImode, reg1, 1), len); + + /* MOVE */ + emit_insn (gen_movstrsi_31 (reg0, reg1)); + DONE; + } + else + { + rtx label = gen_label_rtx (); + rtx reg0, reg1, len; + + reg0 = gen_reg_rtx (SImode); + reg1 = gen_reg_rtx (SImode); + len = gen_reg_rtx (SImode); + + emit_move_insn (len, operands[2]); + emit_insn (gen_cmpsi (len, const0_rtx)); + emit_jump_insn (gen_beq (label)); + emit_move_insn (reg0, addr0); + emit_move_insn (reg1, addr1); + emit_insn (gen_addsi3 (len, len, constm1_rtx)); + emit_insn (gen_movstrsix_31 (reg0, reg1, len)); + emit_label (label); + DONE; + } + } + }") + + ; Move a block that is less than 256 bytes in length. + + (define_insn "movstrsico" + [(set (match_operand:BLK 0 "s_operand" "=oQ") + (match_operand:BLK 1 "s_operand" "oQ")) + (use (match_operand 2 "const_int_operand" "I"))] + "((unsigned) INTVAL (operands[2]) < 256)" + "mvc\\t%O0(%c2+1,%R0),%1" + [(set_attr "op_type" "SS") + (set_attr "atype" "mem")]) + + ; Move a block that is more than 256 bytes in lenght or length in register + + (define_insn "movstrdix_64" + [(set (mem:BLK (match_operand:DI 0 "register_operand" "a")) + (mem:BLK (match_operand:DI 1 "register_operand" "a"))) + (use (match_operand:DI 2 "register_operand" "a")) + (clobber (match_dup 0)) + (clobber (match_dup 1)) + (clobber (match_scratch:DI 3 "=&a")) + (clobber (reg:CC 33))] + "" + "* + { + rtx xop[4]; + xop[0] = gen_label_rtx (); + xop[1] = gen_label_rtx (); + xop[2] = gen_label_rtx (); + xop[3] = operands[3]; + output_asm_insn (\"srag\\t%3,%2,8\",operands); + output_asm_insn (\"jz\\t%l1\",xop); + ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, \"L\", + CODE_LABEL_NUMBER (xop[0])); + output_asm_insn (\"mvc\\t0(256,%0),0(%1)\",operands); + output_asm_insn (\"la\\t%0,256(%0)\",operands); + output_asm_insn (\"la\\t%1,256(%1)\",operands); + xop[3] = operands[3]; + output_asm_insn (\"brct\\t%3,%l0\",xop); + ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, \"L\", + CODE_LABEL_NUMBER (xop[1])); + xop[3] = operands[3]; + output_asm_insn (\"bras\\t%3,%l2\",xop); + output_asm_insn (\"mvc\\t0(1,%0),0(%1)\",operands); + ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, \"L\", + CODE_LABEL_NUMBER (xop[2])); + return \"ex\\t%2,0(%3)\"; + }" + [(set_attr "op_type" "NN") + (set_attr "atype" "mem") + (set_attr "length" "44")]) + + (define_insn "movstrsix_31" + [(set (mem:BLK (match_operand:SI 0 "register_operand" "a")) + (mem:BLK (match_operand:SI 1 "register_operand" "a"))) + (use (match_operand:SI 2 "register_operand" "a")) + (clobber (match_dup 0)) + (clobber (match_dup 1)) + (clobber (match_scratch:SI 3 "=&a")) + (clobber (reg:CC 33))] + "" + "* + { + rtx xop[4]; + xop[0] = gen_label_rtx (); + xop[1] = gen_label_rtx (); + xop[2] = gen_label_rtx (); + xop[3] = operands[3]; + output_asm_insn (\"lr\\t%3,%2\",operands); + output_asm_insn (\"sra\\t%3,8\",operands); + output_asm_insn (\"jz\\t%l1\",xop); + ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, \"L\", + CODE_LABEL_NUMBER (xop[0])); + output_asm_insn (\"mvc\\t0(256,%0),0(%1)\",operands); + output_asm_insn (\"la\\t%0,256(%0)\",operands); + output_asm_insn (\"la\\t%1,256(%1)\",operands); + xop[3] = operands[3]; + output_asm_insn (\"brct\\t%3,%l0\",xop); + ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, \"L\", + CODE_LABEL_NUMBER (xop[1])); + xop[3] = operands[3]; + output_asm_insn (\"bras\\t%3,%l2\",xop); + output_asm_insn (\"mvc\\t0(1,%0),0(%1)\",operands); + ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, \"L\", + CODE_LABEL_NUMBER (xop[2])); + return \"ex\\t%2,0(%3)\"; + }" + [(set_attr "op_type" "NN") + (set_attr "length" "42") + (set_attr "atype" "mem")]) + + ; Move a block that is larger than 255 bytes in length. + + (define_insn "movstrdi_64" + [(set (mem:BLK (subreg:DI (match_operand:TI 0 "register_operand" "d") 0)) + (mem:BLK (subreg:DI (match_operand:TI 1 "register_operand" "d") 0))) + (clobber (match_dup 0)) + (clobber (match_dup 1)) + (clobber (reg:CC 33))] + "" + "mvcle\\t%0,%1,0\;jo\\t.-4" + [(set_attr "op_type" "NN") + (set_attr "atype" "mem") + (set_attr "length" "8")]) + + (define_insn "movstrsi_31" + [(set (mem:BLK (subreg:SI (match_operand:DI 0 "register_operand" "d") 0)) + (mem:BLK (subreg:SI (match_operand:DI 1 "register_operand" "d") 0))) + (clobber (match_dup 0)) + (clobber (match_dup 1)) + (clobber (reg:CC 33))] + "" + "mvcle\\t%0,%1,0\;jo\\t.-4" + [(set_attr "op_type" "NN") + (set_attr "atype" "mem") + (set_attr "length" "8")]) + + ; + ; clrstrdi instruction pattern(s). + ; + + (define_expand "clrstrdi" + [(set (match_operand:BLK 0 "general_operand" "") + (const_int 0)) + (use (match_operand:DI 1 "general_operand" "")) + (match_operand 2 "" "")] + "TARGET_64BIT" + " + { + rtx addr = force_operand (XEXP (operands[0], 0), NULL_RTX); + + operands[0] = change_address (operands[0], VOIDmode, addr); + + if (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) < 256) + { + emit_insn (gen_clrstrsico (operands[0], operands[1])); + DONE; + } + else + { + rtx reg0 = gen_reg_rtx (TImode); + rtx reg1 = gen_reg_rtx (TImode); + rtx len = operands[1]; + + if (! CONSTANT_P (len)) + len = force_reg (DImode, len); + + /* Load up the address+length pairs. */ + + emit_move_insn (gen_rtx_SUBREG (DImode, reg0, 0), addr); + emit_move_insn (gen_rtx_SUBREG (DImode, reg0, 1), len); + + emit_move_insn (gen_rtx_SUBREG (DImode, reg1, 1), const0_rtx); + + /* Clear! */ + emit_insn (gen_clrstrsi_64 (reg0, reg1)); + DONE; + } + }") + + ; + ; clrstrsi instruction pattern(s). + ; + + (define_expand "clrstrsi" + [(set (match_operand:BLK 0 "general_operand" "") + (const_int 0)) + (use (match_operand:SI 1 "general_operand" "")) + (match_operand 2 "" "")] + "!TARGET_64BIT" + " + { + rtx addr = force_operand (XEXP (operands[0], 0), NULL_RTX); + + operands[0] = change_address (operands[0], VOIDmode, addr); + + if (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) < 256) + { + emit_insn (gen_clrstrsico (operands[0], operands[1])); + DONE; + } + else + { + rtx reg0 = gen_reg_rtx (DImode); + rtx reg1 = gen_reg_rtx (DImode); + rtx len = operands[1]; + + if (! CONSTANT_P (len)) + len = force_reg (SImode, len); + + /* Load up the address+length pairs. */ + + emit_move_insn (gen_rtx_SUBREG (SImode, reg0, 0), addr); + emit_move_insn (gen_rtx_SUBREG (SImode, reg0, 1), len); + + emit_move_insn (gen_rtx_SUBREG (SImode, reg1, 1), const0_rtx); + + /* CLear! */ + emit_insn (gen_clrstrsi_31 (reg0, reg1)); + DONE; + } + }") + + ; Clear memory with length less than 256 bytes + + (define_insn "clrstrsico" + [(set (match_operand:BLK 0 "s_operand" "=Qo") + (const_int 0)) + (use (match_operand 1 "immediate_operand" "I")) + (clobber (reg:CC 33))] + "" + "xc\\t%O0(%1,%R0),%0" + [(set_attr "op_type" "RS") + (set_attr "atype" "mem")]) + + ; Clear memory with length greater 256 bytes or lenght not constant + + (define_insn "clrstrsi_64" + [(set (mem:BLK (subreg:DI (match_operand:TI 0 "register_operand" "d") 0)) + (const_int 0)) + (use (match_operand:TI 1 "register_operand" "d")) + (clobber (match_dup 0)) + (clobber (match_dup 1)) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "mvcle\\t%0,%1,0\;jo\\t.-4" + [(set_attr "op_type" "NN") + (set_attr "atype" "mem") + (set_attr "cycle" "n") + (set_attr "length" "8")]) + + (define_insn "clrstrsi_31" + [(set (mem:BLK (subreg:SI (match_operand:DI 0 "register_operand" "d") 0)) + (const_int 0)) + (use (match_operand:DI 1 "register_operand" "d")) + (clobber (match_dup 0)) + (clobber (match_dup 1)) + (clobber (reg:CC 33))] + "!TARGET_64BIT" + "mvcle\\t%0,%1,0\;jo\\t.-4" + [(set_attr "op_type" "NN") + (set_attr "atype" "mem") + (set_attr "cycle" "n") + (set_attr "length" "8")]) + + ; + ; cmpstrdi instruction pattern(s). + ; + + (define_expand "cmpstrdi" + [(set (match_operand:DI 0 "register_operand" "") + (compare:DI (match_operand:BLK 1 "s_operand" "") + (match_operand:BLK 2 "s_operand" "") ) ) + (use (match_operand:DI 3 "general_operand" "")) + (use (match_operand:DI 4 "" ""))] + "TARGET_64BIT" + " + { + rtx addr0, addr1; + + /* for pre/post increment */ + operands[1] = protect_from_queue (operands[1], 0); + operands[2] = protect_from_queue (operands[2], 0); + operands[3] = protect_from_queue (operands[3], 0); + + addr0 = force_operand (XEXP (operands[1], 0), NULL_RTX); + addr1 = force_operand (XEXP (operands[2], 0), NULL_RTX); + + if (GET_CODE (operands[3]) == CONST_INT && INTVAL (operands[3]) < 256) + { + if (INTVAL (operands[3]) == 0) { + emit_move_insn (operands[0], operands[3]); + DONE; + } + + operands[1] = change_address (operands[1], VOIDmode, addr0); + operands[2] = change_address (operands[2], VOIDmode, addr1); + + emit_insn (gen_cmpstr_const (operands[1], operands[2], operands[3])); + emit_insn (gen_cmpint_di (operands[0])); + DONE; + } + else + { + /* implementation suggested by Richard Henderson */ + rtx reg0 = gen_reg_rtx (TImode); + rtx reg1 = gen_reg_rtx (TImode); + rtx len = operands[3]; + + if (! CONSTANT_P (len)) + len = force_reg (DImode, len); + + /* Load up the address+length pairs. */ + emit_move_insn (gen_rtx_SUBREG (DImode, reg0, 0), addr0); + emit_move_insn (gen_rtx_SUBREG (DImode, reg0, 1), len); + + emit_move_insn (gen_rtx_SUBREG (DImode, reg1, 0), addr1); + emit_move_insn (gen_rtx_SUBREG (DImode, reg1, 1), len); + + /* Compare! */ + emit_insn (gen_cmpstr_64 (reg0, reg1)); + emit_insn (gen_cmpint_di (operands[0])); + DONE; + } + }") + + ; + ; cmpstrsi instruction pattern(s). + ; + + (define_expand "cmpstrsi" + [(set (match_operand:SI 0 "register_operand" "") + (compare:SI (match_operand:BLK 1 "s_operand" "") + (match_operand:BLK 2 "s_operand" "") ) ) + (use (match_operand:SI 3 "general_operand" "")) + (use (match_operand:SI 4 "" ""))] + "" + " + { + rtx addr0, addr1; + + /* for pre/post increment */ + operands[1] = protect_from_queue (operands[1], 0); + operands[2] = protect_from_queue (operands[2], 0); + operands[3] = protect_from_queue (operands[3], 0); + + addr0 = force_operand (XEXP (operands[1], 0), NULL_RTX); + addr1 = force_operand (XEXP (operands[2], 0), NULL_RTX); + + if (GET_CODE (operands[3]) == CONST_INT && INTVAL (operands[3]) < 256) + { + if (INTVAL (operands[3]) == 0) { + emit_move_insn (operands[0], operands[3]); + DONE; + } + + operands[1] = change_address (operands[1], VOIDmode, addr0); + operands[2] = change_address (operands[2], VOIDmode, addr1); + + emit_insn (gen_cmpstr_const (operands[1], operands[2], operands[3])); + emit_insn (gen_cmpint_si (operands[0])); + DONE; + } + else + { + /* implementation suggested by Richard Henderson */ + rtx reg0, reg1; + rtx len = operands[3]; + + if (TARGET_64BIT) + { + reg0 = gen_reg_rtx (TImode); + reg1 = gen_reg_rtx (TImode); + } + else + { + reg0 = gen_reg_rtx (DImode); + reg1 = gen_reg_rtx (DImode); + } + + if (! CONSTANT_P (len)) + len = force_reg (Pmode, len); + + /* Load up the address+length pairs. */ + emit_move_insn (gen_rtx_SUBREG (Pmode, reg0, 0), addr0); + emit_move_insn (gen_rtx_SUBREG (Pmode, reg0, 1), len); + + emit_move_insn (gen_rtx_SUBREG (Pmode, reg1, 0), addr1); + emit_move_insn (gen_rtx_SUBREG (Pmode, reg1, 1), len); + + /* Compare! */ + if (TARGET_64BIT) + emit_insn (gen_cmpstr_64 (reg0, reg1)); + else + emit_insn (gen_cmpstr_31 (reg0, reg1)); + + emit_insn (gen_cmpint_si (operands[0])); + DONE; + } + }") + + ; Compare a block that is less than 256 bytes in length. + + (define_insn "cmpstr_const" + [(set (reg:CCU 33) + (compare:CCU (match_operand:BLK 0 "s_operand" "oQ") + (match_operand:BLK 1 "s_operand" "oQ"))) + (use (match_operand 2 "immediate_operand" "I"))] + "(unsigned) INTVAL (operands[2]) < 256" + "clc\\t%O0(%c2,%R0),%1" + [(set_attr "op_type" "SS") + (set_attr "atype" "mem") + (set_attr "type" "xset")]) + + ; Compare a block that is larger than 255 bytes in length. + + (define_insn "cmpstr_64" + [(set (reg:CCU 33) + (compare:CCU (mem:BLK (subreg:DI (match_operand:TI 0 "register_operand" "d") 0)) + (mem:BLK (subreg:DI (match_operand:TI 1 "register_operand" "d") 0)))) + (clobber (subreg:DI (match_dup 0) 0)) + (clobber (subreg:DI (match_dup 0) 1)) + (clobber (subreg:DI (match_dup 1) 0)) + (clobber (subreg:DI (match_dup 1) 1))] + "TARGET_64BIT" + "clcl\\t%0,%1" + [(set_attr "op_type" "RR") + (set_attr "atype" "mem") + (set_attr "type" "xset")]) + + (define_insn "cmpstr_31" + [(set (reg:CCU 33) + (compare:CCU (mem:BLK (subreg:SI (match_operand:DI 0 "register_operand" "d") 0)) + (mem:BLK (subreg:SI (match_operand:DI 1 "register_operand" "d") 0)))) + (clobber (subreg:SI (match_dup 0) 0)) + (clobber (subreg:SI (match_dup 0) 1)) + (clobber (subreg:SI (match_dup 1) 0)) + (clobber (subreg:SI (match_dup 1) 1))] + "!TARGET_64BIT" + "clcl\\t%0,%1" + [(set_attr "op_type" "RR") + (set_attr "atype" "mem") + (set_attr "type" "xset")]) + + ; Convert condition code to integer in range (-1, 0, 1) + + (define_insn "cmpint_si" + [(set (match_operand:SI 0 "register_operand" "=d") + (compare:SI (reg:CCU 33) (const_int 0)))] + "" + "* + { + output_asm_insn (\"lhi\\t%0,1\", operands); + output_asm_insn (\"jh\\t.+12\", operands); + output_asm_insn (\"jl\\t.+6\", operands); + output_asm_insn (\"sr\\t%0,%0\", operands); + return \"lcr\\t%0,%0\"; + }" + [(set_attr "op_type" "NN") + (set_attr "length" "16") + (set_attr "atype" "reg") + (set_attr "type" "xset")]) + + (define_insn "cmpint_di" + [(set (match_operand:DI 0 "register_operand" "=d") + (compare:DI (reg:CCU 33) (const_int 0)))] + "TARGET_64BIT" + "* + { + output_asm_insn (\"lghi\\t%0,1\", operands); + output_asm_insn (\"jh\\t.+12\", operands); + output_asm_insn (\"jl\\t.+6\", operands); + output_asm_insn (\"sgr\\t%0,%0\", operands); + return \"lcgr\\t%0,%0\"; + }" + [(set_attr "op_type" "NN") + (set_attr "length" "22") + (set_attr "atype" "reg") + (set_attr "type" "xset")]) + + ;; + ;;- Conversion instructions. + ;; + + ; + ; extendsidi2 instruction pattern(s). + ; + + (define_insn "extendsidi2" + [(set (match_operand:DI 0 "register_operand" "=d,d") + (sign_extend:DI (match_operand:SI 1 "nonimmediate_operand" "d,m")))] + "TARGET_64BIT" + "@ + lgfr\\t%0,%1 + lgf\\t%0,%1" + [(set_attr "op_type" "RRE,RXE") + (set_attr "atype" "reg,mem") + (set_attr "type" "set")]) + + + ; + ; extendhidi2 instruction pattern(s). + ; + + (define_insn "extendhidi2" + [(set (match_operand:DI 0 "register_operand" "=d") + (sign_extend:DI (match_operand:HI 1 "register_operand" "d"))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "sllg\\t%0,%1,48\;srag\\t%0,%0,48" + [(set_attr "op_type" "NN") + (set_attr "length" "12") + (set_attr "cycle" "2") + (set_attr "type" "set")]) + + + ; + ; extendqidi2 instruction pattern(s). + ; + + (define_insn "extendqidi2" + [(set (match_operand:DI 0 "register_operand" "=d") + (sign_extend:DI (match_operand:QI 1 "register_operand" "d"))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "sllg\\t%0,%1,56\;srag\\t%0,%0,56" + [(set_attr "op_type" "NN") + (set_attr "length" "12") + (set_attr "cycle" "2") + (set_attr "type" "set")]) + + + ; + ; extendhisi2 instruction pattern(s). + ; + + (define_insn "extendhisi2" + [(set (match_operand:SI 0 "register_operand" "=d,!d,d") + (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "0,d,m"))) + (clobber (reg:CC 33))] + "" + "@ + sll\\t%1,16\;sra\\t%1,16 + lr\\t%0,%1\;sll\\t%0,16\;sra\\t%0,16 + lh\\t%0,%1" + [(set_attr "op_type" "NN,NN,RX") + (set_attr "cycle" "2,3,1") + (set_attr "atype" "reg,reg,mem") + (set_attr "type" "set") + (set_attr "length" "8,10,*")]) + + + ; + ; extendqisi2 instruction pattern(s). + ; + + (define_insn "extendqisi2" + [(set (match_operand:SI 0 "register_operand" "=d,d") + (sign_extend:SI (match_operand:QI 1 "r_or_s_operand" "0,Q"))) + (clobber (reg:CC 33))] + "" + "@ + sll\\t%0,24\;sra\\t%0,24 + icm\\t%0,8,%1\;sra\\t%0,24" + [(set_attr "op_type" "NN,NN") + (set_attr "cycle" "2") + (set_attr "atype" "reg,mem") + (set_attr "type" "set") + (set_attr "length" "8,8")]) + + + ; + ; extendqihi2 instruction pattern(s). + ; + + (define_insn "extendqihi2" + [(set (match_operand:HI 0 "register_operand" "=d,d") + (sign_extend:HI (match_operand:QI 1 "r_or_s_operand" "0,Q"))) + (clobber (reg:CC 33))] + "" + "@ + sll\\t%0,24\;sra\\t%0,24 + icm\\t%0,8,%1\;sra\\t%0,24" + [(set_attr "op_type" "NN,NN") + (set_attr "cycle" "2") + (set_attr "atype" "reg,mem") + (set_attr "type" "set") + (set_attr "length" "8,8")]) + + + ; + ; zero_extendsidi2 instruction pattern(s). + ; + + (define_insn "zero_extendsidi2" + [(set (match_operand:DI 0 "register_operand" "=d,d") + (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "d,m")))] + "TARGET_64BIT" + "@ + llgfr\\t%0,%1 + llgf\\t%0,%1" + [(set_attr "op_type" "RRE,RXE") + (set_attr "atype" "reg,mem") + (set_attr "type" "set")]) + + + ; + ; zero_extendhidi2 instruction pattern(s). + ; + + (define_insn "zero_extendhidi2" + [(set (match_operand:DI 0 "register_operand" "=!d,d") + (zero_extend:DI (match_operand:HI 1 "nonimmediate_operand" "d,m")))] + "TARGET_64BIT" + "@ + llgfr\\t%0,%1\;iilh\\t%0,0 + llgh\\t%0,%1" + [(set_attr "op_type" "NN,RXE") + (set_attr "cycle" "2,1") + (set_attr "atype" "reg,mem") + (set_attr "length" "12,*") + (set_attr "type" "set")]) + + + ; + ; zero_extendqidi2 instruction pattern(s) + ; + + (define_insn "zero_extendqidi2" + [(set (match_operand:DI 0 "register_operand" "=!d,d") + (zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "d,m"))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "@ + sllg\\t%0,%1,56\;srlg\\t%0,%0,56 + llgc\\t%0,%1" + [(set_attr "op_type" "NN,RXE") + (set_attr "cycle" "2,1") + (set_attr "atype" "reg,mem") + (set_attr "type" "set") + (set_attr "length" "12,*")]) + + + ; + ; zero_extendhisi2 instruction pattern(s). + ; + + (define_expand "zero_extendhisi2" + [(set (match_operand:SI 0 "register_operand" "") + (zero_extend:SI (match_operand:HI 1 "r_or_s_operand" "")))] + "" + " + { + if (!TARGET_64BIT) + { + emit_insn (gen_zero_extendhisi2_31 (operands[0], operands[1], + force_const_mem (SImode, const0_rtx))); + DONE; + } + }") + + (define_insn "*zero_extendhisi2_64" + [(set (match_operand:SI 0 "register_operand" "=d,d") + (zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "0,m")))] + "TARGET_64BIT" + "@ + iilh\\t%0,0 + llgh\\t%0,%1" + [(set_attr "op_type" "RI,RXE") + (set_attr "atype" "reg,mem")]) + + (define_insn "zero_extendhisi2_31" + [(set (match_operand:SI 0 "register_operand" "=d,d") + (zero_extend:SI (match_operand:HI 1 "r_or_s_operand" "0,Q"))) + (use (match_operand:SI 2 "memory_operand" "m,m")) + (clobber (reg:CC 33))] + "" + "@ + icm\\t%0,12,%2 + icm\\t%0,12,%1\;srl\\t%0,16" + [(set_attr "op_type" "RX,NN") + (set_attr "cycle" "1,2") + (set_attr "atype" "reg,mem") + (set_attr "type" "set") + (set_attr "length" "*,8")]) + + + ; + ; zero_extendqisi2 instruction pattern(s). + ; + + (define_insn "*zero_extendqisi2_mem_31" + [(set (match_operand:SI 0 "register_operand" "=&d") + (zero_extend:SI (match_operand:QI 1 "memory_operand" "m"))) + (use (match_operand:SI 2 "memory_operand" "m" )) + (clobber (reg:CC 33))] + "" + "sr\\t%0,%0\;ic\\t%0,%1" + [(set_attr "op_type" "NN") + (set_attr "cycle" "2") + (set_attr "atype" "mem") + (set_attr "type" "set") + (set_attr "length" "6")]) + + (define_insn "zero_extendqisi2_reg_31" + [(set (match_operand:SI 0 "register_operand" "=d") + (zero_extend:SI (match_operand:QI 1 "register_operand" "0"))) + (use (match_operand:SI 2 "memory_operand" "m" )) + (clobber (reg:CC 33))] + "" + "icm\\t%0,14,%2" + [(set_attr "op_type" "RX") + (set_attr "atype" "mem") + (set_attr "type" "set")]) + + (define_insn "*zero_extendqisi2_64" + [(set (match_operand:SI 0 "register_operand" "=!d,d") + (zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "d,m")))] + "TARGET_64BIT" + "@ + sllg\\t%0,%1,56\;srlg\\t%0,%0,56 + llgc\\t%0,%1" + [(set_attr "op_type" "NN,RXE") + (set_attr "cycle" "2,1") + (set_attr "atype" "reg,mem") + (set_attr "length" "12,*")]) + + (define_expand "zero_extendqisi2" + [(set (match_operand:SI 0 "register_operand" "") + (zero_extend:SI (match_operand:QI 1 "r_or_s_operand" "")))] + "" + " + { + if (!TARGET_64BIT) + { + emit_insn (gen_zero_extendqisi2_reg_31 (operands[0], operands[1], + force_const_mem (SImode, const0_rtx))); + DONE; + } + }") + + + ; + ; zero_extendqihi2 instruction pattern(s). + ; + + (define_insn "zero_extendqihi2_64" + [(set (match_operand:HI 0 "register_operand" "=d,d") + (zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "0,m"))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "@ + nill\\t%0,0x00FF + llgc\\t%0,%1" + [(set_attr "op_type" "RI,RXE") + (set_attr "atype" "reg,mem")]) + + (define_insn "zero_extendqihi2_31" + [(set (match_operand:HI 0 "register_operand" "=d,&d") + (zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "0,m"))) + (use (match_operand:SI 2 "memory_operand" "m,m")) + (clobber (reg:CC 33))] + "" + "@ + icm\\t%0,14,%2 + sr\\t%0,%0\;ic\\t%0,%1" + [(set_attr "op_type" "RX,NN") + (set_attr "atype" "reg,mem") + (set_attr "length" "*,8")]) + + (define_expand "zero_extendqihi2" + [(set (match_operand:HI 0 "register_operand" "") + (zero_extend:HI (match_operand:QI 1 "general_operand" "")))] + "" + " + { + if (!TARGET_64BIT) + { + emit_insn (gen_zero_extendqihi2_31 (operands[0], operands[1], + force_const_mem (SImode, const0_rtx))); + DONE; + } + else + { + emit_insn (gen_zero_extendqihi2_64 (operands[0], operands[1])); + DONE; + } + }") + + + ; + ; truncdisi2 instruction pattern(s). + ; + + (define_insn "truncdisi2" + [(set (match_operand:SI 0 "register_operand" "=d") + (truncate:SI (match_operand:DI 1 "register_operand" "d")))] + "TARGET_64BIT" + "llgfr\\t%0,%1" + [(set_attr "op_type" "RRE")]) + + + ; + ; truncdihi2 instruction pattern(s). + ; + + (define_insn "truncdihi2" + [(set (match_operand:HI 0 "register_operand" "=d") + (truncate:HI (match_operand:DI 1 "register_operand" "d")))] + "TARGET_64BIT" + "llgfr\\t%0,%1\;iilh\\t%0,0" + [(set_attr "op_type" "NN") + (set_attr "length" "10")]) + + + ; + ; truncdiqi2 instruction pattern(s). + ; + + (define_insn "truncdiqi2" + [(set (match_operand:QI 0 "register_operand" "=d") + (truncate:QI (match_operand:DI 1 "register_operand" "d"))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "sllg\\t%0,%1,56\;srlg\\t%0,%0,56" + [(set_attr "op_type" "NN") + (set_attr "cycle" "2") + (set_attr "length" "12")]) + + + ; + ; truncsihi2 instruction pattern(s). + ; + + (define_expand "truncsihi2" + [(set (match_operand:HI 0 "register_operand" "") + (truncate:HI (match_operand:SI 1 "register_operand" "")))] + "" + " + { + if (!TARGET_64BIT) + { + emit_insn (gen_do_truncsihi2 (operands[0], operands[1], + force_const_mem (SImode, const0_rtx))); + DONE; + } + }") + + + (define_insn "do_truncsihi2" + [(set (match_operand:HI 0 "register_operand" "=d") + (truncate:HI (match_operand:SI 1 "register_operand" "0"))) + (use (match_operand:SI 2 "memory_operand" "m")) + (clobber (reg:CC 33))] + "" + "icm\\t%0,12,%2" + [(set_attr "op_type" "RX")]) + + (define_insn "*truncsihi2_64" + [(set (match_operand:HI 0 "register_operand" "=d") + (truncate:HI (match_operand:SI 1 "register_operand" "0")))] + "TARGET_64BIT" + "iilh\\t%0,0" + [(set_attr "op_type" "RI")]) + + + ; + ; truncsiqi2 instruction pattern(s). + ; + + (define_insn "truncsiqi2" + [(set (match_operand:QI 0 "register_operand" "=d") + (truncate:QI (match_operand:SI 1 "register_operand" "0"))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "iilh\\t%0,0\;nill\\t%0,0x00FF" + [(set_attr "op_type" "NN") + (set_attr "cycle" "2") + (set_attr "length" "8")]) + + + ; + ; trunchiqi2 instruction pattern(s). + ; + + (define_insn "trunchiqi2" + [(set (match_operand:QI 0 "register_operand" "=d") + (truncate:QI (match_operand:HI 1 "register_operand" "0"))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "nill\\t%0,0x00FF" + [(set_attr "op_type" "RI")]) + + + ; + ; fixuns_truncdfdi2 and fix_truncdfsi2 instruction pattern(s). + ; + + (define_expand "fixuns_truncdfdi2" + [(set (match_operand:DI 0 "register_operand" "") + (unsigned_fix:DI (match_operand:DF 1 "register_operand" "")))] + "TARGET_64BIT && TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + " + { + rtx label1 = gen_label_rtx (); + rtx label2 = gen_label_rtx (); + rtx temp = gen_reg_rtx (DFmode); + operands[1] = force_reg (DFmode, operands[1]); + + emit_insn (gen_cmpdf (operands[1], force_const_mem (DFmode, + CONST_DOUBLE_FROM_REAL_VALUE (0x8000000000000000ULL, DFmode)))); + emit_jump_insn (gen_blt (label1)); + + emit_insn (gen_subdf3 (temp, operands[1], force_const_mem (DFmode, + CONST_DOUBLE_FROM_REAL_VALUE (0x10000000000000000ULL, DFmode)))); + emit_insn (gen_fix_truncdfdi2_ieee (operands[0], temp, GEN_INT(7))); + emit_jump_insn (gen_jump (label2)); + + emit_label (label1); + emit_insn (gen_fix_truncdfdi2_ieee (operands[0], operands[1], GEN_INT(5))); + emit_label (label2); + DONE; + }") + + (define_expand "fix_truncdfdi2" + [(set (match_operand:DI 0 "register_operand" "") + (fix:DI (match_operand:DF 1 "nonimmediate_operand" "")))] + "TARGET_64BIT && TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + " + { + operands[1] = force_reg (DFmode, operands[1]); + emit_insn (gen_fix_truncdfdi2_ieee (operands[0], operands[1], GEN_INT(5))); + DONE; + }") + + (define_insn "fix_truncdfdi2_ieee" + [(set (match_operand:DI 0 "register_operand" "=d") + (fix:DI (match_operand:DF 1 "register_operand" "f"))) + (unspec:DI [(match_operand:DI 2 "immediate_operand" "K")] 1) + (clobber (reg:CC 33))] + "TARGET_64BIT && TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "cgdbr\\t%0,%h2,%1" + [(set_attr "op_type" "RRE") + (set_attr "cycle" "n")]) + + ; + ; fixuns_truncdfsi2 and fix_truncdfsi2 instruction pattern(s). + ; + + (define_expand "fixuns_truncdfsi2" + [(set (match_operand:SI 0 "register_operand" "") + (unsigned_fix:SI (match_operand:DF 1 "register_operand" "")))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + " + { + rtx label1 = gen_label_rtx (); + rtx label2 = gen_label_rtx (); + rtx temp = gen_reg_rtx (DFmode); + + operands[1] = force_reg (DFmode,operands[1]); + emit_insn (gen_cmpdf (operands[1], force_const_mem (DFmode, + CONST_DOUBLE_FROM_REAL_VALUE (0x80000000, DFmode)))); + emit_jump_insn (gen_blt (label1)); + emit_insn (gen_subdf3 (temp, operands[1], force_const_mem (DFmode, + CONST_DOUBLE_FROM_REAL_VALUE (0x100000000ULL, DFmode)))); + emit_insn (gen_fix_truncdfsi2_ieee (operands[0], temp, GEN_INT (7))); + emit_jump_insn (gen_jump (label2)); + + emit_label (label1); + emit_insn (gen_fix_truncdfsi2_ieee (operands[0], operands[1], GEN_INT (5))); + emit_label (label2); + DONE; + }") + + (define_expand "fix_truncdfsi2" + [(set (match_operand:SI 0 "register_operand" "") + (fix:SI (match_operand:DF 1 "nonimmediate_operand" "")))] + "TARGET_HARD_FLOAT" + " + { + if (TARGET_IBM_FLOAT) + { + /* This is the algorithm from POP chapter A.5.7.2. */ + + rtx temp = assign_stack_local (BLKmode, 2 * UNITS_PER_WORD, BITS_PER_WORD); + rtx two31r = force_const_mem (DFmode, + gen_rtx (CONST_DOUBLE, VOIDmode, cc0_rtx, + 0x08000000, 0x4F000000)); + rtx two32 = force_const_mem (DFmode, + gen_rtx (CONST_DOUBLE, VOIDmode, cc0_rtx, + 0x0, 0x4E000001)); + + operands[1] = force_reg (DFmode, operands[1]); + emit_insn (gen_fix_truncdfsi2_ibm (operands[0], operands[1], + two31r, two32, temp)); + } + else + { + operands[1] = force_reg (DFmode, operands[1]); + emit_insn (gen_fix_truncdfsi2_ieee (operands[0], operands[1], GEN_INT (5))); + } + + DONE; + }") + + (define_insn "fix_truncdfsi2_ieee" + [(set (match_operand:SI 0 "register_operand" "=d") + (fix:SI (match_operand:DF 1 "register_operand" "f"))) + (unspec:SI [(match_operand:SI 2 "immediate_operand" "K")] 1) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "cfdbr\\t%0,%h2,%1" + [(set_attr "op_type" "RRE") + (set_attr "cycle" "n" )]) + + (define_insn "fix_truncdfsi2_ibm" + [(set (match_operand:SI 0 "register_operand" "=d") + (fix:SI (match_operand:DF 1 "nonimmediate_operand" "+f"))) + (use (match_operand:DF 2 "memory_operand" "m")) + (use (match_operand:DF 3 "memory_operand" "m")) + (use (match_operand:BLK 4 "memory_operand" "m")) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "* + { + output_asm_insn (\"sd\\t%1,%2\", operands); + output_asm_insn (\"aw\\t%1,%3\", operands); + output_asm_insn (\"std\\t%1,%4\", operands); + output_asm_insn (\"xi\\t%N4,128\", operands); + return \"l\\t%0,%N4\"; + }" + [(set_attr "op_type" "NN") + (set_attr "cycle" "n") + (set_attr "length" "20")]) + + ; + ; fixuns_truncsfdi2 and fix_truncsfdi2 instruction pattern(s). + ; + + (define_expand "fixuns_truncsfdi2" + [(set (match_operand:DI 0 "register_operand" "") + (unsigned_fix:DI (match_operand:SF 1 "register_operand" "")))] + "TARGET_64BIT && TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + " + { + rtx label1 = gen_label_rtx (); + rtx label2 = gen_label_rtx (); + rtx temp = gen_reg_rtx (SFmode); + + operands[1] = force_reg (SFmode, operands[1]); + emit_insn (gen_cmpsf (operands[1], force_const_mem (SFmode, + CONST_DOUBLE_FROM_REAL_VALUE (0x8000000000000000ULL, SFmode)))); + emit_jump_insn (gen_blt (label1)); + + emit_insn (gen_subsf3 (temp, operands[1], force_const_mem (SFmode, + CONST_DOUBLE_FROM_REAL_VALUE (0x10000000000000000ULL, SFmode)))); + emit_insn (gen_fix_truncsfdi2_ieee (operands[0], temp, GEN_INT(7))); + emit_jump_insn (gen_jump (label2)); + + emit_label (label1); + emit_insn (gen_fix_truncsfdi2_ieee (operands[0], operands[1], GEN_INT(5))); + emit_label (label2); + DONE; + }") + + (define_expand "fix_truncsfdi2" + [(set (match_operand:DI 0 "register_operand" "") + (fix:DI (match_operand:SF 1 "nonimmediate_operand" "")))] + "TARGET_64BIT && TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + " + { + operands[1] = force_reg (SFmode, operands[1]); + emit_insn (gen_fix_truncsfdi2_ieee (operands[0], operands[1], GEN_INT(5))); + DONE; + }") + + (define_insn "fix_truncsfdi2_ieee" + [(set (match_operand:DI 0 "register_operand" "=d") + (fix:DI (match_operand:SF 1 "register_operand" "f"))) + (unspec:DI [(match_operand:DI 2 "immediate_operand" "K")] 1) + (clobber (reg:CC 33))] + "TARGET_64BIT && TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "cgebr\\t%0,%h2,%1" + [(set_attr "op_type" "RRE") + (set_attr "cycle" "n")]) + + ; + ; fixuns_truncsfsi2 and fix_truncsfsi2 instruction pattern(s). + ; + + (define_expand "fixuns_truncsfsi2" + [(set (match_operand:SI 0 "register_operand" "") + (unsigned_fix:SI (match_operand:SF 1 "register_operand" "")))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + " + { + rtx label1 = gen_label_rtx (); + rtx label2 = gen_label_rtx (); + rtx temp = gen_reg_rtx (SFmode); + + operands[1] = force_reg (SFmode, operands[1]); + emit_insn (gen_cmpsf (operands[1], force_const_mem (SFmode, + CONST_DOUBLE_FROM_REAL_VALUE (0x80000000, SFmode)))); + emit_jump_insn (gen_blt (label1)); + emit_insn (gen_subsf3 (temp, operands[1], force_const_mem (SFmode, + CONST_DOUBLE_FROM_REAL_VALUE (0x100000000ULL, SFmode)))); + emit_insn (gen_fix_truncsfsi2_ieee (operands[0], temp, GEN_INT (7))); + emit_jump_insn (gen_jump (label2)); + + emit_label (label1); + emit_insn (gen_fix_truncsfsi2_ieee (operands[0], operands[1], GEN_INT (5))); + emit_label (label2); + DONE; + }") + + (define_expand "fix_truncsfsi2" + [(set (match_operand:SI 0 "register_operand" "") + (fix:SI (match_operand:SF 1 "nonimmediate_operand" "")))] + "TARGET_HARD_FLOAT" + " + { + if (TARGET_IBM_FLOAT) + { + /* Convert to DFmode and then use the POP algorithm. */ + rtx temp = gen_reg_rtx (DFmode); + emit_insn (gen_extendsfdf2 (temp, operands[1])); + emit_insn (gen_fix_truncdfsi2 (operands[0], temp)); + } + else + { + operands[1] = force_reg (SFmode, operands[1]); + emit_insn (gen_fix_truncsfsi2_ieee (operands[0], operands[1], GEN_INT (5))); + } + + DONE; + }") + + (define_insn "fix_truncsfsi2_ieee" + [(set (match_operand:SI 0 "register_operand" "=d") + (fix:SI (match_operand:SF 1 "register_operand" "f"))) + (unspec:SI [(match_operand:SI 2 "immediate_operand" "K")] 1) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "cfebr\\t%0,%h2,%1" + [(set_attr "op_type" "RRE") + (set_attr "cycle" "n")]) + + ; + ; floatdidf2 instruction pattern(s). + ; + + (define_insn "floatdidf2" + [(set (match_operand:DF 0 "register_operand" "=f") + (float:DF (match_operand:DI 1 "register_operand" "d")))] + "TARGET_64BIT && TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "cdgbr\\t%0,%1" + [(set_attr "op_type" "RRE") + (set_attr "cycle" "n" )]) + + ; + ; floatdisf2 instruction pattern(s). + ; + + (define_insn "floatdisf2" + [(set (match_operand:SF 0 "register_operand" "=f") + (float:SF (match_operand:DI 1 "register_operand" "d")))] + "TARGET_64BIT && TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "cegbr\\t%0,%1" + [(set_attr "op_type" "RRE") + (set_attr "cycle" "n" )]) + + ; + ; floatsidf2 instruction pattern(s). + ; + + (define_expand "floatsidf2" + [(set (match_operand:DF 0 "register_operand" "") + (float:DF (match_operand:SI 1 "register_operand" "")))] + "TARGET_HARD_FLOAT" + " + { + if (TARGET_IBM_FLOAT) + { + /* This is the algorithm from POP chapter A.5.7.1. */ + + rtx temp = assign_stack_local (BLKmode, 2 * UNITS_PER_WORD, BITS_PER_WORD); + rtx two31 = force_const_mem (DFmode, + gen_rtx (CONST_DOUBLE, VOIDmode, cc0_rtx, + 0x80000000, 0x4E000000)); + + emit_insn (gen_floatsidf2_ibm (operands[0], operands[1], two31, temp)); + DONE; + } + }") + + (define_insn "floatsidf2_ieee" + [(set (match_operand:DF 0 "register_operand" "=f") + (float:DF (match_operand:SI 1 "register_operand" "d")))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "cdfbr\\t%0,%1" + [(set_attr "op_type" "RRE") + (set_attr "cycle" "n" )]) + + (define_insn "floatsidf2_ibm" + [(set (match_operand:DF 0 "register_operand" "=f") + (float:DF (match_operand:SI 1 "register_operand" "d"))) + (use (match_operand:DF 2 "memory_operand" "m")) + (use (match_operand:BLK 3 "memory_operand" "m")) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "* + { + output_asm_insn (\"st\\t%0,%N3\", operands); + output_asm_insn (\"xi\\t%N3,128\", operands); + output_asm_insn (\"mvc\\t%O3(4,%R3),%2\", operands); + output_asm_insn (\"ld\\t%0,%3\", operands); + return \"sd\\t%0,%2\"; + }" + [(set_attr "op_type" "NN") + (set_attr "cycle" "n" ) + (set_attr "length" "20")]) + + ; + ; floatsisf2 instruction pattern(s). + ; + + (define_expand "floatsisf2" + [(set (match_operand:SF 0 "register_operand" "") + (float:SF (match_operand:SI 1 "register_operand" "")))] + "TARGET_HARD_FLOAT" + " + { + if (TARGET_IBM_FLOAT) + { + /* Use the POP algorithm to convert to DFmode and then truncate. */ + rtx temp = gen_reg_rtx (DFmode); + emit_insn (gen_floatsidf2 (temp, operands[1])); + emit_insn (gen_truncdfsf2 (operands[0], temp)); + DONE; + } + }") + + (define_insn "floatsisf2_ieee" + [(set (match_operand:SF 0 "register_operand" "=f") + (float:SF (match_operand:SI 1 "register_operand" "d")))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "cefbr\\t%0,%1" + [(set_attr "op_type" "RRE") + (set_attr "cycle" "n" )]) + + ; + ; truncdfsf2 instruction pattern(s). + ; + + (define_expand "truncdfsf2" + [(set (match_operand:SF 0 "register_operand" "") + (float_truncate:SF (match_operand:DF 1 "general_operand" "")))] + "TARGET_HARD_FLOAT" + " + { + if (CONSTANT_P(operands[1])) + operands[1] = force_const_mem (DFmode, operands[1]); + }") + + (define_insn "truncdfsf2_ieee" + [(set (match_operand:SF 0 "register_operand" "=f") + (float_truncate:SF (match_operand:DF 1 "nonimmediate_operand" "f")))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "ledbr\\t%0,%1" + [(set_attr "op_type" "RR")]) + + (define_insn "truncdfsf2_ibm" + [(set (match_operand:SF 0 "register_operand" "=f,f") + (float_truncate:SF (match_operand:DF 1 "nonimmediate_operand" "f,m")))] + "TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "@ + lrer\\t%0,%1 + le\\t%0,%1" + [(set_attr "op_type" "RR,RX")]) + + ; + ; extendsfdf2 instruction pattern(s). + ; + + (define_expand "extendsfdf2" + [(set (match_operand:DF 0 "register_operand" "") + (float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "")))] + "TARGET_HARD_FLOAT" + " + { + if (TARGET_IBM_FLOAT) + { + emit_insn (gen_extendsfdf2_ibm (operands[0], operands[1])); + DONE; + } + }") + + (define_insn "extendsfdf2_ieee" + [(set (match_operand:DF 0 "register_operand" "=f,f") + (float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "f,m")))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "@ + ldebr\\t%0,%1 + ldeb\\t%0,%1" + [(set_attr "op_type" "RRE,RXE")]) + + (define_insn "extendsfdf2_ibm" + [(set (match_operand:DF 0 "register_operand" "=f,f") + (float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "@ + sdr\\t%0,%0\;ler\\t%0,%1 + sdr\\t%0,%0\;le\\t%0,%1" + [(set_attr "op_type" "RRE,RXE")]) + + + ;; + ;; ARITHMETRIC OPERATIONS + ;; + ; arithmetric operations set the ConditionCode, + ; because of unpredictable Bits in Register for Halfword and Byte + ; the ConditionCode can be set wrong in operations for Halfword and Byte + + ;; + ;;- Add instructions. + ;; + + ; + ; adddi3 instruction pattern(s). + ; + + (define_insn "addaddr_esame" + [(set (match_operand:DI 0 "register_operand" "=a,a") + (plus:DI (match_operand:DI 1 "register_operand" "%a,a") + (match_operand:DI 2 "nonmemory_operand" "J,a")))] + "TARGET_64BIT && (((REGNO (operands[1]) == STACK_POINTER_REGNUM ) || + (REGNO (operands[1]) == BASE_REGISTER)) && + (GET_CODE (operands[2]) == REG || + CONST_OK_FOR_LETTER_P (INTVAL (operands[2]),'J')))" + "@ + la\\t%0,%c2(,%1) + la\\t%0,0(%1,%2)" + [(set_attr "op_type" "RX") + (set_attr "atype" "mem") + (set_attr "type" "la")]) + + (define_insn "adddi3_64" + [(set (match_operand:DI 0 "register_operand" "=d,d,d") + (plus:DI (match_operand:DI 1 "register_operand" "%0,0,0") + (match_operand:DI 2 "general_operand" "d,K,m") ) ) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "@ + agr\\t%0,%2 + aghi\\t%0,%h2 + ag\\t%0,%2" + [(set_attr "op_type" "RRE,RI,RXE") + (set_attr "atype" "reg,reg,mem") + (set_attr "type" "set")]) + + ; + ; For weakness of reload, need (set (reg x) (plus (reg y) (reg x))) + ; + + (define_insn "adddi3_inv_64" + [(set (match_operand:DI 0 "register_operand" "=d,d,d") + (plus:DI (match_operand:DI 1 "general_operand" "%d,K,m") + (match_operand:DI 2 "register_operand" "0,0,0") ) ) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "@ + agr\\t%0,%1 + aghi\\t%0,%h1 + ag\\t%0,%1" + [(set_attr "op_type" "RRE,RI,RXE") + (set_attr "atype" "reg,reg,mem") + (set_attr "type" "set")]) + + (define_insn "adddi3_31" + [(set (match_operand:DI 0 "register_operand" "=d,d") + (plus:DI (match_operand:DI 1 "register_operand" "0,0") + (match_operand:DI 2 "general_operand" "d,m") ) ) + (clobber (reg:CC 33))] + "!TARGET_64BIT" + "* + { + switch(which_alternative) + { + case 0: /* d <- d */ + output_asm_insn (\"ar\\t%0,%2\", operands); + output_asm_insn (\"alr\\t%N0,%N2\", operands); + break; + + case 1: /* d <- m */ + output_asm_insn (\"a\\t%0,%2\", operands); + output_asm_insn (\"al\\t%N0,%N2\", operands); + break; + } + + output_asm_insn (\"brc\\t12,.+8\", operands); + return \"ahi\\t%0,1\"; + }" + [(set_attr "op_type" "NN,NN") + (set_attr "atype" "reg,mem") + (set_attr "length" "12,16")]) + + (define_expand "adddi3" + [(set (match_operand:DI 0 "register_operand" "") + (plus:DI (match_operand:DI 1 "register_operand" "") + (match_operand:DI 2 "general_operand" "")))] + "" + " + { + if (TARGET_64BIT) + emit_insn(gen_adddi3_64 (operands[0],operands[1],operands[2])); + else + emit_insn(gen_adddi3_31 (operands[0],operands[1],operands[2])); + DONE; + }") + + (define_insn "reload_load_address" + [(set (match_operand:DI 0 "register_operand" "=a") + (match_operand:QI 1 "address_operand" "p"))] + "TARGET_64BIT" + "la\\t%0,%a1" + [(set_attr "op_type" "RX") + (set_attr "atype" "mem") + (set_attr "type" "la")]) + + (define_insn "*reload_load_address_reg_0" + [(set (match_operand:DI 0 "register_operand" "=d") + (plus:DI (match_operand:DI 1 "register_operand" "%0") + (match_operand:DI 2 "register_operand" "d")))] + "TARGET_64BIT" + "brxlg\\t%0,%2,.+6" + [(set_attr "op_type" "RIE") + (set_attr "atype" "reg") + (set_attr "type" "set")]) + + (define_insn "*reload_la_64" + [(set (match_operand:DI 0 "register_operand" "=d") + (plus:DI (match_operand:DI 1 "general_operand" "g") + (match_operand:DI 2 "general_operand" "g")))] + "TARGET_64BIT && reload_in_progress" + "#") + + (define_split + [(set (match_operand:DI 0 "register_operand" "") + (plus:DI (match_operand:DI 1 "general_operand" "") + (match_operand:DI 2 "register_operand" "")))] + "TARGET_64BIT && reload_completed + && !address_operand (gen_rtx_PLUS (DImode, operands[1], operands[2]), QImode) + && !rtx_equal_p (operands[0], operands[1]) + && !rtx_equal_p (operands[0], operands[2])" + [(set (match_dup 0) (match_dup 1)) + (set (match_dup 0) (plus:DI (match_dup 0) (match_dup 2)))] + "") + + (define_split + [(set (match_operand:DI 0 "register_operand" "") + (plus:DI (match_operand:DI 1 "register_operand" "") + (match_operand:DI 2 "general_operand" "")))] + "TARGET_64BIT && reload_completed + && !address_operand (gen_rtx_PLUS (DImode, operands[1], operands[2]), QImode) + && !rtx_equal_p (operands[0], operands[1]) + && !rtx_equal_p (operands[0], operands[2])" + [(set (match_dup 0) (match_dup 2)) + (set (match_dup 0) (plus:DI (match_dup 0) (match_dup 1)))] + "") + + ; + ; addsi3 instruction pattern(s). + ; + ; The following insn is used when it is known that operand one is the stack pointer, + ; and operand two is small enough to fit in the displacement field + ; In this case, the result will be a address + ; + + (define_insn "addaddr" + [(set (match_operand:SI 0 "register_operand" "=d,d") + (plus:SI (match_operand:SI 1 "register_operand" "%a,a") + (match_operand:SI 2 "nonmemory_operand" "J,a")))] + "(((REGNO (operands[1]) == STACK_POINTER_REGNUM ) || + (REGNO (operands[1]) == BASE_REGISTER)) && + (GET_CODE (operands[2]) == REG || + CONST_OK_FOR_LETTER_P (INTVAL (operands[2]),'J')))" + "@ + la\\t%0,%c2(,%1) + la\\t%0,0(%1,%2)" + [(set_attr "op_type" "RX") + (set_attr "atype" "mem") + (set_attr "type" "la")]) + + (define_insn "*addaddr_picR" + [(set (match_operand:SI 0 "register_operand" "=d") + (plus:SI (match_operand:SI 1 "register_operand" "a") + (unspec:SI [(match_operand:SI 2 "register_operand" "a")] 101)))] + "" + "la\\t%0,0(%1,%2)" + [(set_attr "op_type" "RX") + (set_attr "atype" "mem") + (set_attr "type" "la")]) + + (define_insn "*addaddr_picL" + [(set (match_operand:SI 0 "register_operand" "=d") + (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "a")] 101) + (match_operand:SI 1 "register_operand" "a")))] + "" + "la\\t%0,0(%1,%2)" + [(set_attr "op_type" "RX") + (set_attr "atype" "mem") + (set_attr "type" "la")]) + + (define_insn "*addaddr_picN" + [(set (match_operand:SI 0 "register_operand" "=d") + (unspec:SI [(match_operand:SI 1 "register_operand" "a")] 101))] + "" + "la\\t%0,0(%1)" + [(set_attr "op_type" "RX") + (set_attr "atype" "mem") + (set_attr "type" "la")]) + + (define_insn "*addsi3_cc" + [(set (reg 33) + (compare (plus:SI (match_operand:SI 1 "register_operand" "%0,0,0") + (match_operand:SI 2 "general_operand" "d,K,m")) + (const_int 0))) + (set (match_operand:SI 0 "register_operand" "=d,d,d") + (plus:SI (match_dup 1) (match_dup 2)))] + "s390_match_ccmode(insn, CCSmode)" + "@ + ar\\t%0,%2 + ahi\\t%0,%h2 + a\\t%0,%2" + [(set_attr "op_type" "RR,RI,RX") + (set_attr "atype" "reg,reg,mem") + (set_attr "type" "set")]) + + (define_insn "*addsi3_cconly" + [(set (reg 33) + (compare (plus:SI (match_operand:SI 1 "register_operand" "%0,0,0") + (match_operand:SI 2 "general_operand" "d,K,m")) + (const_int 0))) + (clobber (match_scratch:SI 0 "=d,d,d"))] + "s390_match_ccmode(insn, CCSmode)" + "@ + ar\\t%0,%2 + ahi\\t%0,%h2 + a\\t%0,%2" + [(set_attr "op_type" "RR,RI,RX") + (set_attr "atype" "reg,reg,mem") + (set_attr "type" "set")]) + + (define_insn "*addsi3_cconly2" + [(set (reg 33) + (compare (match_operand:SI 1 "register_operand" "%0,0,0") + (neg:SI (match_operand:SI 2 "general_operand" "d,K,m")))) + (clobber (match_scratch:SI 0 "=d,d,d"))] + "s390_match_ccmode(insn, CCSmode)" + "@ + ar\\t%0,%2 + ahi\\t%0,%h2 + a\\t%0,%2" + [(set_attr "op_type" "RR,RI,RX") + (set_attr "atype" "reg,reg,mem") + (set_attr "type" "set")]) + + (define_insn "addsi3" + [(set (match_operand:SI 0 "register_operand" "=d,d,d") + (plus:SI (match_operand:SI 1 "register_operand" "%0,0,0") + (match_operand:SI 2 "general_operand" "d,K,m"))) + (clobber (reg:CC 33))] + "" + "@ + ar\\t%0,%2 + ahi\\t%0,%h2 + a\\t%0,%2" + [(set_attr "op_type" "RR,RI,RX") + (set_attr "atype" "reg,reg,mem") + (set_attr "type" "set")]) + + (define_insn "do_la" + [(set (match_operand:SI 0 "register_operand" "=a") + (match_operand:QI 1 "address_operand" "p"))] + "volatile_ok" + "la\\t%0,%a1" + [(set_attr "op_type" "RX") + (set_attr "atype" "mem") + (set_attr "type" "la")]) + + (define_insn "*do_la_reg_0" + [(set (match_operand:SI 0 "register_operand" "=d") + (plus:SI (match_operand:SI 1 "register_operand" "%0") + (match_operand:SI 2 "register_operand" "d")))] + "" + "brxle\\t%0,%2,.+4" + [(set_attr "op_type" "RSI") + (set_attr "atype" "reg") + (set_attr "type" "set")]) + + (define_insn "*reload_la_31" + [(set (match_operand:SI 0 "register_operand" "=d") + (plus:SI (match_operand:SI 1 "general_operand" "g") + (match_operand:SI 2 "general_operand" "g")))] + "reload_in_progress" + "#") + + (define_split + [(set (match_operand:SI 0 "register_operand" "") + (plus:SI (match_operand:SI 1 "general_operand" "") + (match_operand:SI 2 "register_operand" "")))] + "reload_completed + && !address_operand (gen_rtx_PLUS (SImode, operands[1], operands[2]), QImode) + && !rtx_equal_p (operands[0], operands[1]) + && !rtx_equal_p (operands[0], operands[2])" + [(set (match_dup 0) (match_dup 1)) + (set (match_dup 0) (plus:SI (match_dup 0) (match_dup 2)))] + "") + + (define_split + [(set (match_operand:SI 0 "register_operand" "") + (plus:SI (match_operand:SI 1 "register_operand" "") + (match_operand:SI 2 "general_operand" "")))] + "reload_completed + && !address_operand (gen_rtx_PLUS (SImode, operands[1], operands[2]), QImode) + && !rtx_equal_p (operands[0], operands[1]) + && !rtx_equal_p (operands[0], operands[2])" + [(set (match_dup 0) (match_dup 2)) + (set (match_dup 0) (plus:SI (match_dup 0) (match_dup 1)))] + "") + + (define_insn "addsi_64" + [(set (match_operand:SI 0 "register_operand" "=d,d") + (plus:SI (match_operand:SI 1 "register_operand" "%a,a") + (match_operand:SI 2 "nonmemory_operand" "J,a")))] + "TARGET_64BIT" + "@ + la\\t%0,%c2(,%1) + la\\t%0,0(%1,%2)" + [(set_attr "op_type" "RX") + (set_attr "atype" "mem") + (set_attr "type" "la")]) + + ; + ; addhi3 instruction pattern(s). + ; + + (define_insn "addhi3" + [(set (match_operand:HI 0 "register_operand" "=d,d,d") + (plus:HI (match_operand:HI 1 "register_operand" "%0,0,0") + (match_operand:HI 2 "general_operand" "d,K,m"))) + (clobber (reg:CC 33))] + "" + "@ + ar\\t%0,%2 + ahi\\t%0,%h2 + ah\\t%0,%2" + [(set_attr "op_type" "RR,RI,RX") + (set_attr "atype" "reg,reg,mem")]) + + + ; + ; addqi3 instruction pattern(s). + ; + + (define_insn "addqi3" + [(set (match_operand:QI 0 "register_operand" "=d,d") + (plus:QI (match_operand:QI 1 "register_operand" "%0,0") + (match_operand:QI 2 "general_operand" "a,n"))) + (clobber (reg:CC 33))] + "" + "@ + ar\\t%0,%2 + ahi\\t%0,%h2" + [(set_attr "op_type" "RX,RX") + (set_attr "atype" "reg,mem")]) + + + ; + ; adddf3 instruction pattern(s). + ; + + (define_expand "adddf3" + [(parallel + [(set (match_operand:DF 0 "register_operand" "=f,f") + (plus:DF (match_operand:DF 1 "register_operand" "%0,0") + (match_operand:DF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))])] + "TARGET_HARD_FLOAT" + "") + + (define_insn "*adddf3" + [(set (match_operand:DF 0 "register_operand" "=f,f") + (plus:DF (match_operand:DF 1 "register_operand" "%0,0") + (match_operand:DF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "@ + adbr\\t%0,%2 + adb\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "atype" "reg,mem")]) + + (define_insn "*adddf3_ibm" + [(set (match_operand:DF 0 "register_operand" "=f,f") + (plus:DF (match_operand:DF 1 "register_operand" "%0,0") + (match_operand:DF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "@ + adr\\t%0,%2 + ad\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "atype" "reg,mem")]) + + ; + ; addsf3 instruction pattern(s). + ; + + (define_expand "addsf3" + [(parallel + [(set (match_operand:SF 0 "register_operand" "=f,f") + (plus:SF (match_operand:SF 1 "register_operand" "%0,0") + (match_operand:SF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))])] + "TARGET_HARD_FLOAT" + "") + + (define_insn "*addsf3" + [(set (match_operand:SF 0 "register_operand" "=f,f") + (plus:SF (match_operand:SF 1 "register_operand" "%0,0") + (match_operand:SF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "@ + aebr\\t%0,%2 + aeb\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "atype" "reg,mem")]) + + (define_insn "*addsf3" + [(set (match_operand:SF 0 "register_operand" "=f,f") + (plus:SF (match_operand:SF 1 "register_operand" "%0,0") + (match_operand:SF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "@ + aer\\t%0,%2 + ae\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "atype" "reg,mem")]) + + + ;; + ;;- Subtract instructions. + ;; + + ; + ; subdi3 instruction pattern(s). + ; + + (define_insn "*subdi3_64" + [(set (match_operand:DI 0 "register_operand" "=d,d") + (minus:DI (match_operand:DI 1 "register_operand" "0,0") + (match_operand:DI 2 "general_operand" "d,m") ) ) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "@ + sgr\\t%0,%2 + sg\\t%0,%2" + [(set_attr "op_type" "RRE,RRE") + (set_attr "atype" "reg,mem") + (set_attr "type" "set")]) + + (define_insn "subdi3" + [(set (match_operand:DI 0 "register_operand" "=d,d") + (minus:DI (match_operand:DI 1 "register_operand" "0,0") + (match_operand:DI 2 "nonimmediate_operand" "d,m"))) + (clobber (reg:CC 33))] + "" + "* + { + switch (which_alternative) + { + case 0: /* d <- d */ + output_asm_insn (\"sr\\t%0,%2\", operands); + output_asm_insn (\"slr\\t%N0,%N2\", operands); + break; + case 1: /* d <- m */ + output_asm_insn (\"s\\t%0,%2\", operands); + output_asm_insn (\"sl\\t%N0,%N2\", operands); + break; + } + + output_asm_insn (\"brc\\t11,.+8\", operands); + return \"ahi\\t%0,-1\"; + }" + [(set_attr "op_type" "NN,NN") + (set_attr "atype" "reg,mem") + (set_attr "length" "12,16")]) + + ; + ; subsi3 instruction pattern(s). + ; + + (define_insn "*subsi3_cc" + [(set (reg 33) + (compare (minus:SI (match_operand:SI 1 "register_operand" "0,0") + (match_operand:SI 2 "general_operand" "d,m")) + (const_int 0))) + (set (match_operand:SI 0 "register_operand" "=d,d") + (minus:SI (match_dup 1) (match_dup 2)))] + "s390_match_ccmode(insn, CCSmode)" + "@ + sr\\t%0,%2 + s\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "atype" "reg,mem") + (set_attr "type" "set")]) + + (define_insn "*subsi3_cconly" + [(set (reg 33) + (compare (minus:SI (match_operand:SI 1 "register_operand" "0,0") + (match_operand:SI 2 "general_operand" "d,m")) + (const_int 0))) + (clobber (match_scratch:SI 0 "=d,d"))] + "s390_match_ccmode(insn, CCSmode)" + "@ + sr\\t%0,%2 + s\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "atype" "reg,mem") + (set_attr "type" "set")]) + + (define_insn "subsi3" + [(set (match_operand:SI 0 "register_operand" "=d,d") + (minus:SI (match_operand:SI 1 "register_operand" "0,0") + (match_operand:SI 2 "general_operand" "d,m"))) + (clobber (reg:CC 33))] + "" + "@ + sr\\t%0,%2 + s\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "atype" "reg,mem") + (set_attr "type" "set")]) + + ; + ; subhi3 instruction pattern(s). + ; + + (define_insn "subhi3" + [(set (match_operand:HI 0 "register_operand" "=d,d,d") + (minus:HI (match_operand:HI 1 "register_operand" "0,0,0") + (match_operand:HI 2 "nonimmediate_operand" "d,K,m"))) + (clobber (reg:CC 33))] + "" + "@ + sr\\t%0,%2 + ahi\\t%0,-%h2 + sh\\t%0,%2" + [(set_attr "op_type" "RR,RI,RX") + (set_attr "atype" "reg,reg,mem")]) + + ; + ; subqi3 instruction pattern(s). + ; + + (define_insn "subqi3" + [(set (match_operand:QI 0 "register_operand" "=d") + (minus:QI (match_operand:QI 1 "register_operand" "0") + (match_operand:QI 2 "register_operand" "d"))) + (clobber (reg:CC 33))] + "" + "sr\\t%0,%2" + [(set_attr "op_type" "RR")]) + + ; + ; subdf3 instruction pattern(s). + ; + + (define_expand "subdf3" + [(parallel + [(set (match_operand:DF 0 "register_operand" "=f,f") + (minus:DF (match_operand:DF 1 "register_operand" "0,0") + (match_operand:DF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))])] + "TARGET_HARD_FLOAT" + "") + + (define_insn "*subdf3" + [(set (match_operand:DF 0 "register_operand" "=f,f") + (minus:DF (match_operand:DF 1 "register_operand" "0,0") + (match_operand:DF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "@ + sdbr\\t%0,%2 + sdb\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "atype" "reg,mem")]) + + (define_insn "*subdf3_ibm" + [(set (match_operand:DF 0 "register_operand" "=f,f") + (minus:DF (match_operand:DF 1 "register_operand" "0,0") + (match_operand:DF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "@ + sdr\\t%0,%2 + sd\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "atype" "reg,mem")]) + + ; + ; subsf3 instruction pattern(s). + ; + + (define_expand "subsf3" + [(parallel + [(set (match_operand:SF 0 "register_operand" "=f,f") + (minus:SF (match_operand:SF 1 "register_operand" "0,0") + (match_operand:SF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))])] + "TARGET_HARD_FLOAT" + "") + + (define_insn "*subsf3" + [(set (match_operand:SF 0 "register_operand" "=f,f") + (minus:SF (match_operand:SF 1 "register_operand" "0,0") + (match_operand:SF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "@ + sebr\\t%0,%2 + seb\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "atype" "reg,mem")]) + + (define_insn "*subsf3_ibm" + [(set (match_operand:SF 0 "register_operand" "=f,f") + (minus:SF (match_operand:SF 1 "register_operand" "0,0") + (match_operand:SF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "@ + ser\\t%0,%2 + se\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "atype" "reg,mem")]) + + + ;; + ;;- Multiply instructions. + ;; + + (define_expand "muldi3" + [(parallel + [(set (match_operand:DI 0 "register_operand" "") + (mult:DI (match_operand:DI 1 "register_operand" "") + (match_operand:DI 2 "register_operand" ""))) + (clobber (reg:CC 33))])] + "" + " + { + if (!TARGET_64BIT) + { + rtx label1 = gen_label_rtx (); + rtx label2 = gen_label_rtx (); + rtx op0_0 = operand_subword (operands[0], 0 ,1, DImode); + rtx op0_1 = operand_subword (operands[0], 1 ,1, DImode); + rtx temp1_0 = gen_reg_rtx (SImode); + rtx temp1_1 = gen_reg_rtx (SImode); + rtx temp2_0 = gen_reg_rtx (SImode); + rtx temp2_1 = gen_reg_rtx (SImode); + + emit_move_insn (temp1_0, operand_subword (operands[1], 0 ,1, DImode)); + emit_move_insn (temp1_1, operand_subword (operands[1], 1 ,1, DImode)); + emit_move_insn (temp2_0, operand_subword (operands[2], 0 ,1, DImode)); + emit_move_insn (temp2_1, operand_subword (operands[2], 1 ,1, DImode)); + emit_move_insn (op0_1, temp1_1); + emit_insn (gen_mulsi_6432 (operands[0], operands[0], temp2_1)); + + emit_insn (gen_cmpsi (temp1_1, const0_rtx)); + emit_jump_insn (gen_bge (label1)); + emit_insn (gen_addsi3 (op0_0, op0_0, temp2_1)); + emit_label (label1); + emit_insn (gen_cmpsi (temp2_1, const0_rtx)); + emit_jump_insn (gen_bge (label2)); + emit_insn (gen_addsi3 (op0_0, op0_0, temp1_1)); + emit_label (label2); + + emit_insn (gen_mulsi3 (temp2_1, temp2_1, temp1_0)); + emit_insn (gen_addsi3 (op0_0, op0_0, temp2_1)); + + emit_insn (gen_mulsi3 (temp1_1, temp1_1, temp2_0)); + emit_insn (gen_addsi3 (op0_0, op0_0, temp1_1)); + + DONE; + } + }") + + (define_insn "*muldi3_64" + [(set (match_operand:DI 0 "register_operand" "=d,d,d") + (mult:DI (match_operand:DI 1 "register_operand" "%0,0,0") + (match_operand:DI 2 "general_operand" "d,K,m"))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "@ + msgr\\t%0,%2 + mghi\\t%0,%h2 + msg\\t%0,%2" + [(set_attr "op_type" "RRE,RI,RX") + (set_attr "cycle" "n") + (set_attr "atype" "reg,reg,mem") + (set_attr "type" "set")]) + + ; + ; mulsi3 instruction pattern(s). + ; + + (define_insn "mulsi3" + [(set (match_operand:SI 0 "register_operand" "=d,d,d") + (mult:SI (match_operand:SI 1 "register_operand" "%0,0,0") + (match_operand:SI 2 "general_operand" "d,K,m"))) + (clobber (reg:CC 33))] + "" + "@ + msr\\t%0,%2 + mhi\\t%0,%h2 + ms\\t%0,%2" + [(set_attr "op_type" "RRE,RI,RX") + (set_attr "cycle" "n") + (set_attr "atype" "reg,reg,mem") + (set_attr "type" "set")]) + + (define_insn "mulsi_6432" + [(set (match_operand:DI 0 "register_operand" "=d,d") + (mult:DI (sign_extend:DI + (subreg:SI (match_operand:DI 1 "register_operand" "0,0") 1)) + (sign_extend:DI + (match_operand:SI 2 "general_operand" "d,m")))) + (clobber (reg:CC 33))] + "!TARGET_64BIT" + "@ + mr\\t%0,%2 + m\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "cycle" "n") + (set_attr "atype" "reg,mem") + (set_attr "type" "set")]) + + + ; + ; muldf3 instruction pattern(s). + ; + + (define_expand "muldf3" + [(parallel + [(set (match_operand:DF 0 "register_operand" "=f,f") + (mult:DF (match_operand:DF 1 "register_operand" "%0,0") + (match_operand:DF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))])] + "TARGET_HARD_FLOAT" + "") + + (define_insn "*muldf3" + [(set (match_operand:DF 0 "register_operand" "=f,f") + (mult:DF (match_operand:DF 1 "register_operand" "%0,0") + (match_operand:DF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "@ + mdbr\\t%0,%2 + mdb\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "cycle" "n") + (set_attr "atype" "reg,mem")]) + + (define_insn "*muldf3_ibm" + [(set (match_operand:DF 0 "register_operand" "=f,f") + (mult:DF (match_operand:DF 1 "register_operand" "%0,0") + (match_operand:DF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "@ + mdr\\t%0,%2 + md\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "cycle" "n") + (set_attr "atype" "reg,mem")]) + + ; + ; mulsf3 instruction pattern(s). + ; + + (define_expand "mulsf3" + [(parallel + [(set (match_operand:SF 0 "register_operand" "=f,f") + (mult:SF (match_operand:SF 1 "register_operand" "%0,0") + (match_operand:SF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))])] + "TARGET_HARD_FLOAT" + "") + + (define_insn "*mulsf3" + [(set (match_operand:SF 0 "register_operand" "=f,f") + (mult:SF (match_operand:SF 1 "register_operand" "%0,0") + (match_operand:SF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "@ + meebr\\t%0,%2 + meeb\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "cycle" "n") + (set_attr "atype" "reg,mem")]) + + (define_insn "*mulsf3_ibm" + [(set (match_operand:SF 0 "register_operand" "=f,f") + (mult:SF (match_operand:SF 1 "register_operand" "%0,0") + (match_operand:SF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "@ + mer\\t%0,%2 + me\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "cycle" "n") + (set_attr "atype" "reg,mem")]) + + + ;; + ;;- Divide and modulo instructions. + ;; + + ; + ; divdi3 and moddi3 instruction pattern(s). + ; + + (define_expand "divdi3" + [(set (match_operand:DI 0 "register_operand" "=d") + (div:DI (match_operand:DI 1 "register_operand" "d") + (match_operand:DI 2 "general_operand" "")))] + "TARGET_64BIT" + " + { + rtx op3 = gen_reg_rtx (TImode); + + if (CONSTANT_P (operands[2])) + operands[2] = force_const_mem (DImode, operands[2]); + + emit_move_insn (gen_rtx (SUBREG, DImode, op3, 0), const0_rtx); + emit_move_insn (gen_rtx (SUBREG, DImode, op3, 1), operands[1]); + emit_insn (gen_divmodtidi3 (op3, op3, operands[2])); + emit_move_insn (operands[0], gen_rtx (SUBREG, DImode, op3, 1)); + DONE; + }") + + (define_expand "moddi3" + [(set (match_operand:DI 0 "register_operand" "=d") + (mod:DI (match_operand:DI 1 "register_operand" "d") + (match_operand:DI 2 "general_operand" "")))] + "TARGET_64BIT" + " + { + rtx op3 = gen_reg_rtx (TImode); + + if (CONSTANT_P (operands[2])) + operands[2] = force_const_mem (DImode, operands[2]); + + emit_move_insn (gen_rtx (SUBREG, DImode, op3, 0), const0_rtx); + emit_move_insn (gen_rtx (SUBREG, DImode, op3, 1), operands[1]); + emit_insn (gen_divmodtidi3 (op3, op3, operands[2])); + emit_move_insn (operands[0], gen_rtx (SUBREG, DImode, op3, 0)); + DONE; + }") + + (define_insn "divmodtidi3" + [(set (subreg:DI (match_operand:TI 0 "register_operand" "=d,d") 0) + (truncate:DI + (mod:TI (match_operand:TI 1 "register_operand" "0,0") + (sign_extend:TI + (match_operand:DI 2 "nonimmediate_operand" "d,m"))))) + (set (subreg:DI (match_dup 0) 1) + (truncate:DI (div:TI (match_dup 1) (sign_extend:TI (match_dup 2))))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "@ + dsgr\\t%0,%2 + dsg\\t%0,%2" + [(set_attr "op_type" "RRE,RXE") + (set_attr "cycle" "n") + (set_attr "atype" "reg,mem")]) + + ; + ; udivdi3 and umoddi3 instruction pattern(s). + ; + + (define_expand "udivdi3" + [(set (match_operand:DI 0 "register_operand" "=d") + (udiv:DI (match_operand:DI 1 "register_operand" "d") + (match_operand:DI 2 "general_operand" "")))] + "TARGET_64BIT" + " + { + rtx op3 = gen_reg_rtx(TImode); + + if (CONSTANT_P (operands[2])) + operands[2] = force_const_mem (DImode, operands[2]); + + emit_move_insn (gen_rtx (SUBREG, DImode, op3, 0), const0_rtx); + emit_move_insn (gen_rtx (SUBREG, DImode, op3, 1), operands[1]); + emit_insn (gen_udivmodtidi3 (op3, op3, operands[2])); + emit_move_insn (operands[0], gen_rtx (SUBREG, DImode, op3, 1)); + DONE; + }") + + (define_expand "umoddi3" + [(set (match_operand:DI 0 "register_operand" "=d") + (umod:DI (match_operand:DI 1 "register_operand" "d") + (match_operand:DI 2 "general_operand" "")))] + "TARGET_64BIT" + " + { + rtx op3 = gen_reg_rtx (TImode); + + if (CONSTANT_P (operands[2])) + operands[2] = force_const_mem (DImode, operands[2]); + + emit_move_insn (gen_rtx (SUBREG, DImode, op3, 0), const0_rtx); + emit_move_insn (gen_rtx (SUBREG, DImode, op3, 1), operands[1]); + emit_insn (gen_udivmodtidi3 (op3, op3, operands[2])); + emit_move_insn (operands[0], gen_rtx (SUBREG, DImode, op3, 0)); + DONE; + }") + + (define_insn "udivmodtidi3" + [(set (subreg:DI (match_operand:TI 0 "register_operand" "=d,d") 0) + (truncate:DI + (umod:TI (match_operand:TI 1 "register_operand" "0,0") + (zero_extend:TI + (match_operand:DI 2 "nonimmediate_operand" "d,m"))))) + (set (subreg:DI (match_dup 0) 1) + (truncate:DI (udiv:TI (match_dup 1) (zero_extend:TI (match_dup 2))))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "@ + dlgr\\t%0,%2 + dlg\\t%0,%2" + [(set_attr "op_type" "RRE,RXE") + (set_attr "cycle" "n") + (set_attr "atype" "reg,mem")]) + + ; + ; divsi3 and modsi3 instruction pattern(s). + ; + + (define_expand "divsi3" + [(set (match_operand:SI 0 "register_operand" "=d") + (div:SI (match_operand:SI 1 "register_operand" "d") + (match_operand:SI 2 "nonimmediate_operand" "")))] + "!TARGET_64BIT" + " + { + rtx tmp = gen_reg_rtx (DImode); + + if (CONSTANT_P (operands[2])) + operands[2] = force_const_mem (SImode, operands[2]); + else + operands[2] = force_reg (SImode, operands[2]); + + emit_insn (gen_rtx_CLOBBER (SImode, gen_rtx_SUBREG (SImode, tmp, 1))); + emit_move_insn (gen_rtx_SUBREG (SImode, tmp, 0), operands[1]); + emit_insn (gen_ashrdi3 (tmp, tmp, GEN_INT (32))); + emit_insn (gen_divmoddisi3 (tmp, tmp, operands[2])); + emit_move_insn (operands[0], gen_rtx (SUBREG, SImode, tmp, 1)); + DONE; + }") + + (define_expand "modsi3" + [(set (match_operand:SI 0 "register_operand" "=d") + (mod:SI (match_operand:SI 1 "register_operand" "d") + (match_operand:SI 2 "nonimmediate_operand" "")))] + "!TARGET_64BIT" + " + { + rtx tmp = gen_reg_rtx (DImode); + + if (CONSTANT_P (operands[2])) + operands[2] = force_const_mem (SImode, operands[2]); + else + operands[2] = force_reg (SImode, operands[2]); + + emit_insn (gen_rtx_CLOBBER (SImode, gen_rtx_SUBREG (SImode, tmp, 1))); + emit_insn (gen_movsi (gen_rtx_SUBREG (SImode, tmp, 0), operands[1])); + emit_insn (gen_ashrdi3 (tmp, tmp, GEN_INT (32))); + emit_insn (gen_divmoddisi3 (tmp, tmp, operands[2])); + emit_move_insn (operands[0], gen_rtx (SUBREG, SImode, tmp, 0)); + DONE; + }") + + (define_insn "divmoddisi3" + [(set (subreg:SI (match_operand:DI 0 "register_operand" "=d,d") 0) + (truncate:SI + (mod:DI (match_operand:DI 1 "register_operand" "0,0") + (sign_extend:DI + (match_operand:SI 2 "nonimmediate_operand" "d,m"))))) + (set (subreg:SI (match_dup 0) 1) + (truncate:SI (div:DI (match_dup 1) (sign_extend:DI (match_dup 2))))) + (clobber (reg:CC 33))] + "!TARGET_64BIT" + "@ + dr\\t%0,%2 + d\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "cycle" "n") + (set_attr "atype" "reg,mem")]) + + ; + ; udivsi3 and umodsi3 instruction pattern(s). + ; + + (define_expand "udivsi3" + [(set (match_operand:SI 0 "register_operand" "=d") + (udiv:SI (match_operand:SI 1 "general_operand" "") + (match_operand:SI 2 "general_operand" "")))] + "!TARGET_64BIT" + " + { + rtx dr_0, dr_1, tmp; + + tmp = gen_reg_rtx (DImode); + dr_0 = gen_rtx (SUBREG, SImode, tmp, 0); + dr_1 = gen_rtx (SUBREG, SImode, tmp, 1); + + if (CONSTANT_P (operands[2])) + { + if (GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) < 0) + { + rtx label1 = gen_label_rtx (); + + emit_move_insn (dr_0, operands[1]); + emit_move_insn (dr_1, const0_rtx); + emit_insn (gen_cmpsi (dr_0, operands[2])); + emit_jump_insn (gen_bltu (label1)); + emit_move_insn (dr_1, const1_rtx); + emit_label (label1); + } + else + { + operands[2] = force_const_mem (SImode, operands[2]); + emit_move_insn (gen_rtx_SUBREG (SImode, tmp, 0), const0_rtx); + emit_move_insn (gen_rtx_SUBREG (SImode, tmp, 1), operands[1]); + emit_insn (gen_divmoddisi3 (tmp, tmp, operands[2])); + } + } + else + { + rtx label1 = gen_label_rtx (); + rtx label2 = gen_label_rtx (); + rtx label3 = gen_label_rtx (); + + operands[1] = force_reg (SImode, operands[1]); + operands[2] = force_reg (SImode, operands[2]); + + emit_move_insn (dr_1, const0_rtx); + emit_insn (gen_cmpsi (operands[2], operands[1])); + emit_jump_insn (gen_bgtu (label3)); + emit_insn (gen_cmpsi (operands[2], const1_rtx)); + emit_jump_insn (gen_blt (label2)); + emit_insn (gen_cmpsi (operands[2], const1_rtx)); + emit_jump_insn (gen_beq (label1)); + emit_move_insn (gen_rtx_SUBREG (SImode, tmp, 0), const0_rtx); + emit_move_insn (gen_rtx_SUBREG (SImode, tmp, 1), operands[1]); + emit_insn (gen_divmoddisi3 (tmp, tmp, operands[2])); + emit_jump_insn (gen_jump (label3)); + emit_label (label1); + emit_move_insn (dr_1, operands[1]); + emit_jump_insn (gen_jump (label3)); + emit_label (label2); + emit_move_insn (dr_1, const1_rtx); + emit_label (label3); + } + + emit_move_insn (operands[0], dr_1); + DONE; + }") + + (define_expand "umodsi3" + [(set (match_operand:SI 0 "register_operand" "=d") + (umod:SI (match_operand:SI 1 "nonimmediate_operand" "") + (match_operand:SI 2 "nonimmediate_operand" "")))] + "!TARGET_64BIT" + " + { + rtx dr_0, dr_1, tmp; + + tmp = gen_reg_rtx (DImode); + dr_0 = gen_rtx (SUBREG, SImode, tmp, 0); + dr_1 = gen_rtx (SUBREG, SImode, tmp, 1); + + if (CONSTANT_P (operands[2])) + { + if (GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) <= 0) + { + rtx label1 = gen_label_rtx (); + + emit_move_insn (dr_0, operands[1]); + emit_insn (gen_cmpsi (dr_0, operands[2])); + emit_jump_insn (gen_bltu (label1)); + emit_insn (gen_abssi2 (dr_0, operands[2])); + emit_insn (gen_addsi3 (dr_0,dr_0, operands[1])); + emit_label (label1); + } + else + { + operands[2] = force_const_mem (SImode, operands[2]); + emit_move_insn (gen_rtx_SUBREG (SImode, tmp, 0), const0_rtx); + emit_move_insn (gen_rtx_SUBREG (SImode, tmp, 1), operands[1]); + emit_insn (gen_divmoddisi3 (tmp, tmp, operands[2])); + } + } + else + { + rtx label1 = gen_label_rtx (); + rtx label2 = gen_label_rtx (); + rtx label3 = gen_label_rtx (); + + operands[1] = force_reg (SImode, operands[1]); + operands[2] = force_reg (SImode, operands[2]); + + emit_move_insn(dr_0, operands[1]); + emit_insn (gen_cmpsi (operands[2], dr_0)); + emit_jump_insn (gen_bgtu (label3)); + emit_insn (gen_cmpsi (operands[2], const1_rtx)); + emit_jump_insn (gen_blt (label2)); + emit_insn (gen_cmpsi (operands[2], const1_rtx)); + emit_jump_insn (gen_beq (label1)); + emit_move_insn (gen_rtx_SUBREG (SImode, tmp, 0), const0_rtx); + emit_move_insn (gen_rtx_SUBREG (SImode, tmp, 1), operands[1]); + emit_insn (gen_divmoddisi3 (tmp, tmp, operands[2])); + emit_jump_insn (gen_jump (label3)); + emit_label (label1); + emit_move_insn (dr_0, const0_rtx); + emit_jump_insn (gen_jump (label3)); + emit_label (label2); + emit_insn (gen_subsi3 (dr_0, dr_0, operands[2])); + emit_label (label3); + } + + emit_move_insn (operands[0], dr_0); + DONE; + }") + + ; + ; divdf3 instruction pattern(s). + ; + + (define_expand "divdf3" + [(parallel + [(set (match_operand:DF 0 "nonimmediate_operand" "=f,f") + (div:DF (match_operand:DF 1 "general_operand" "0,0") + (match_operand:DF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))])] + "TARGET_HARD_FLOAT" + "") + + (define_insn "*divdf3" + [(set (match_operand:DF 0 "nonimmediate_operand" "=f,f") + (div:DF (match_operand:DF 1 "general_operand" "0,0") + (match_operand:DF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "@ + ddbr\\t%0,%2 + ddb\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "cycle" "n") + (set_attr "atype" "reg,mem")]) + + (define_insn "*divdf3_ibm" + [(set (match_operand:DF 0 "nonimmediate_operand" "=f,f") + (div:DF (match_operand:DF 1 "general_operand" "0,0") + (match_operand:DF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "@ + ddr\\t%0,%2 + dd\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "cycle" "n") + (set_attr "atype" "reg,mem")]) + + ; + ; divsf3 instruction pattern(s). + ; + + (define_expand "divsf3" + [(parallel + [(set (match_operand:SF 0 "nonimmediate_operand" "=f,f") + (div:SF (match_operand:SF 1 "nonimmediate_operand" "0,0") + (match_operand:SF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))])] + "TARGET_HARD_FLOAT" + "") + + (define_insn "*divsf3" + [(set (match_operand:SF 0 "nonimmediate_operand" "=f,f") + (div:SF (match_operand:SF 1 "nonimmediate_operand" "0,0") + (match_operand:SF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "@ + debr\\t%0,%2 + deb\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "cycle" "n") + (set_attr "atype" "reg,mem")]) + + (define_insn "*divsf3" + [(set (match_operand:SF 0 "nonimmediate_operand" "=f,f") + (div:SF (match_operand:SF 1 "nonimmediate_operand" "0,0") + (match_operand:SF 2 "nonimmediate_operand" "f,m"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "@ + der\\t%0,%2 + de\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "cycle" "n") + (set_attr "atype" "reg,mem")]) + + + ;; + ;;- And instructions. + ;; + + ; + ; anddi3 instruction pattern(s). + ; + + (define_insn "*anddi3_cc" + [(set (reg 33) + (compare (and:DI (match_operand:DI 1 "r_or_s_operand" "%0,0,0") + (match_operand:DI 2 "r_or_s_operand" "d,m,Q")) + (const_int 0))) + (set (match_operand:DI 0 "r_or_s_operand" "=d,d,Q") + (and:DI (match_dup 1) (match_dup 2)))] + "s390_match_ccmode(insn, CCTmode) && TARGET_64BIT" + "@ + ngr\\t%0,%2 + ng\\t%0,%2 + nc\\t%O0(8,%R0),%2" + [(set_attr "op_type" "RR,RX,SS") + (set_attr "atype" "reg,mem,mem") + (set_attr "type" "set")]) + + (define_insn "*anddi3_cconly" + [(set (reg 33) + (compare (and:DI (match_operand:DI 1 "register_operand" "%0,0") + (match_operand:DI 2 "r_or_s_operand" "d,m")) + (const_int 0))) + (clobber (match_scratch:DI 0 "=d,d"))] + "s390_match_ccmode(insn, CCTmode) && TARGET_64BIT" + "@ + ngr\\t%0,%2 + ng\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "atype" "reg,mem") + (set_attr "type" "set")]) + + (define_insn "anddi3" + [(set (match_operand:DI 0 "r_or_s_operand" "=d,d,Q") + (and:DI (match_operand:DI 1 "r_or_s_operand" "%0,0,0") + (match_operand:DI 2 "r_or_s_operand" "d,m,Q"))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "@ + ngr\\t%0,%2 + ng\\t%0,%2 + nc\\t%O0(8,%R0),%2" + [(set_attr "op_type" "RR,RX,SS") + (set_attr "atype" "reg,mem,mem") + (set_attr "type" "set")]) + + ; + ; andsi3 instruction pattern(s). + ; + + (define_insn "*andsi3_cc" + [(set (reg 33) + (compare (and:SI (match_operand:SI 1 "r_or_s_operand" "%0,0,0") + (match_operand:SI 2 "r_or_s_operand" "d,m,Q")) + (const_int 0))) + (set (match_operand:SI 0 "r_or_s_operand" "=d,d,Q") + (and:SI (match_dup 1) (match_dup 2)))] + "s390_match_ccmode(insn, CCTmode)" + "@ + nr\\t%0,%2 + n\\t%0,%2 + nc\\t%O0(4,%R0),%2" + [(set_attr "op_type" "RR,RX,SS") + (set_attr "atype" "reg,mem,mem") + (set_attr "type" "set")]) + + (define_insn "*andsi3_cconly" + [(set (reg 33) + (compare (and:SI (match_operand:SI 1 "register_operand" "%0,0") + (match_operand:SI 2 "r_or_s_operand" "d,m")) + (const_int 0))) + (clobber (match_scratch:SI 0 "=d,d"))] + "s390_match_ccmode(insn, CCTmode)" + "@ + nr\\t%0,%2 + n\\t%0,%2" + [(set_attr "op_type" "RR,RX") + (set_attr "atype" "reg,mem") + (set_attr "type" "set")]) + + (define_insn "andsi3" + [(set (match_operand:SI 0 "r_or_s_operand" "=d,d,Q") + (and:SI (match_operand:SI 1 "r_or_s_operand" "%0,0,0") + (match_operand:SI 2 "r_or_s_operand" "d,m,Q"))) + (clobber (reg:CC 33))] + "" + "@ + nr\\t%0,%2 + n\\t%0,%2 + nc\\t%O0(4,%R0),%2" + [(set_attr "op_type" "RR,RX,SS") + (set_attr "atype" "reg,mem,mem") + (set_attr "type" "set")]) + + ; + ; andhi3 instruction pattern(s). + ; + + (define_expand "andhi3" + [(parallel + [(set (match_operand:HI 0 "r_or_s_operand" "") + (and:HI (match_operand:HI 1 "r_or_s_operand" "") + (match_operand:HI 2 "r_or_s_operand" ""))) + (clobber (reg:CC 33))])] + "" + " + { + if (CONSTANT_P (operands[2])) + operands[2] = force_const_mem (HImode, operands[2]); + }") + + (define_insn "*andhi3" + [(set (match_operand:HI 0 "r_or_s_operand" "=d,Q") + (and:HI (match_operand:HI 1 "r_or_s_operand" "%0,0") + (match_operand:HI 2 "r_or_s_operand" "d,Q"))) + (clobber (reg:CC 33))] + "" + "@ + nr\\t%0,%2 + nc\\t%O0(2,%R0),%2" + [(set_attr "op_type" "RR,SS") + (set_attr "atype" "reg,mem")]) + + ; + ; andqi3 instruction pattern(s). + ; + + (define_insn "andqi3" + [(set (match_operand:QI 0 "r_or_s_operand" "=d,Q,Q") + (and:QI (match_operand:QI 1 "r_or_s_operand" "%0,0,0") + (match_operand:QI 2 "r_or_s_or_im8_operand" "d,n,Q"))) + (clobber (reg:CC 33))] + "" + "@ + nr\\t%0,%2 + ni\\t%0,%b2 + nc\\t%O0(1,%R0),%2" + [(set_attr "op_type" "RR,SI,SS") + (set_attr "atype" "reg,mem,mem")]) + + + ;; + ;;- Bit set (inclusive or) instructions. + ;; + + ; + ; iordi3 instruction pattern(s). + ; + + (define_insn "iordi3" + [(set (match_operand:DI 0 "r_or_s_operand" "=d,d,Q,d") + (ior:DI (match_operand:DI 1 "r_or_s_operand" "%0,0,0,0") + (match_operand:DI 2 "r_or_s_operand" "d,m,Q,L"))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "@ + ogr\\t%0,%2 + og\\t%0,%2 + oc\\t%O0(8,%R0),%2 + oill\\t%0,%2" + [(set_attr "op_type" "RRE,RXE,SS,RI") + (set_attr "atype" "reg,mem,mem,reg") + (set_attr "type" "set")]) + + ; + ; iorsi3 instruction pattern(s). + ; + + (define_expand "iorsi3" + [(parallel + [(set (match_operand:SI 0 "r_or_s_operand" "") + (ior:SI (match_operand:SI 1 "r_or_s_operand" "") + (match_operand:SI 2 "r_or_s_operand" ""))) + (clobber (reg:CC 33))])] + "" + " + { + if (CONSTANT_P (operands[2])) + operands[2] = force_const_mem (SImode, operands[2]); + }") + + (define_insn "*iorsi3" + [(set (match_operand:SI 0 "r_or_s_operand" "=d,d,Q") + (ior:SI (match_operand:SI 1 "r_or_s_operand" "%0,0,0") + (match_operand:SI 2 "r_or_s_operand" "d,m,Q"))) + (clobber (reg:CC 33))] + "" + "@ + or\\t%0,%2 + o\\t%0,%2 + oc\\t%O0(4,%R0),%2" + [(set_attr "op_type" "RR,RX,SS") + (set_attr "atype" "reg,mem,mem") + (set_attr "type" "set")]) + + ; + ; iorhi3 instruction pattern(s). + ; + + (define_expand "iorhi3" + [(parallel + [(set (match_operand:HI 0 "r_or_s_operand" "") + (ior:HI (match_operand:HI 1 "r_or_s_operand" "") + (match_operand:HI 2 "r_or_s_operand" ""))) + (clobber (reg:CC 33))])] + "" + " + { + if (CONSTANT_P (operands[2])) + operands[2] = force_const_mem (HImode, operands[2]); + }") + + (define_insn "*iorhi3" + [(set (match_operand:HI 0 "r_or_s_operand" "=d,Q") + (ior:HI (match_operand:HI 1 "r_or_s_operand" "%0,0") + (match_operand:HI 2 "r_or_s_operand" "d,Q"))) + (clobber (reg:CC 33))] + "" + "@ + or\\t%0,%2 + oc\\t%O0(2,%R0),%2" + [(set_attr "op_type" "RR,SS") + (set_attr "atype" "reg,mem")]) + + ; + ; iorqi3 instruction pattern(s). + ; + + (define_insn "iorqi3" + [(set (match_operand:QI 0 "r_or_s_operand" "=d,Q,Q") + (ior:QI (match_operand:QI 1 "r_or_s_operand" "%0,0,0") + (match_operand:QI 2 "r_or_s_or_im8_operand" "d,n,Q"))) + (clobber (reg:CC 33))] + "" + "@ + or\\t%0,%2 + oi\\t%0,%b2 + oc\\t%O0(1,%R0),%2" + [(set_attr "op_type" "RR,SI,SS") + (set_attr "atype" "reg,mem,mem")]) + + + ;; + ;;- Xor instructions. + ;; + + ; + ; xordi3 instruction pattern(s). + ; + + (define_insn "xordi3" + [(set (match_operand:DI 0 "r_or_s_operand" "=d,d,Q") + (xor:DI (match_operand:DI 1 "r_or_s_operand" "%0,0,0") + (match_operand:DI 2 "r_or_s_operand" "d,m,Q"))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "@ + xgr\\t%0,%2 + xg\\t%0,%2 + xc\\t%O0(8,%R0),%2" + [(set_attr "op_type" "RRE,RXE,SS") + (set_attr "atype" "reg,mem,mem") + (set_attr "type" "set")]) + + ; + ; xorsi3 instruction pattern(s). + ; + + (define_expand "xorsi3" + [(parallel + [(set (match_operand:SI 0 "r_or_s_operand" "") + (xor:SI (match_operand:SI 1 "r_or_s_operand" "") + (match_operand:SI 2 "r_or_s_operand" ""))) + (clobber (reg:CC 33))])] + "" + " + { + if (CONSTANT_P (operands[2])) + operands[2] = force_const_mem (SImode, operands[2]); + }") + + (define_insn "*xorsi3" + [(set (match_operand:SI 0 "r_or_s_operand" "=d,d,Q") + (xor:SI (match_operand:SI 1 "r_or_s_operand" "%0,0,0") + (match_operand:SI 2 "r_or_s_operand" "d,m,Q"))) + (clobber (reg:CC 33))] + "" + "@ + xr\\t%0,%2 + x\\t%0,%2 + xc\\t%O0(4,%R0),%2" + [(set_attr "op_type" "RR,RX,SS") + (set_attr "atype" "reg,mem,mem") + (set_attr "type" "set")]) + + ; + ; xorhi3 instruction pattern(s). + ; + + (define_expand "xorhi3" + [(parallel + [(set (match_operand:HI 0 "r_or_s_operand" "") + (xor:HI (match_operand:HI 1 "r_or_s_operand" "") + (match_operand:HI 2 "r_or_s_operand" ""))) + (clobber (reg:CC 33))])] + "" + " + { + if (CONSTANT_P (operands[2])) + operands[2] = force_const_mem (HImode, operands[2]); + }") + + (define_insn "*xorhi3" + [(set (match_operand:HI 0 "r_or_s_operand" "=d,Q") + (xor:HI (match_operand:HI 1 "r_or_s_operand" "%0,0") + (match_operand:HI 2 "r_or_s_operand" "d,Q"))) + (clobber (reg:CC 33))] + "" + "@ + xr\\t%0,%2 + xc\\t%O0(2,%R0),%2" + [(set_attr "op_type" "RR,SS") + (set_attr "atype" "reg,mem")]) + + ; + ; xorqi3 instruction pattern(s). + ; + + (define_insn "xorqi3" + [(set (match_operand:QI 0 "r_or_s_operand" "=d,Q,Q") + (xor:QI (match_operand:QI 1 "r_or_s_operand" "0,0,0") + (match_operand:QI 2 "r_or_s_or_im8_operand" "d,n,Q"))) + (clobber (reg:CC 33))] + "" + "@ + xr\\t%0,%2 + xi\\t%0,%b2 + xc\\t%O0(1,%R0),%2" + [(set_attr "op_type" "RR,SI,SS") + (set_attr "atype" "reg,mem,mem")]) + + + ;; + ;;- Negate instructions. + ;; + + ; + ; negdi2 instruction pattern(s). + ; + + (define_expand "negdi2" + [(parallel + [(set (match_operand:DI 0 "register_operand" "=d") + (neg:DI (match_operand:DI 1 "register_operand" "d"))) + (clobber (reg:CC 33))])] + "" + "") + + (define_insn "*negdi2_64" + [(set (match_operand:DI 0 "register_operand" "=d") + (neg:DI (match_operand:DI 1 "register_operand" "d"))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "lcgr\\t%0,%1" + [(set_attr "op_type" "RR") + (set_attr "type" "set")]) + + (define_insn "*negdi2_31" + [(set (match_operand:DI 0 "register_operand" "=d") + (neg:DI (match_operand:DI 1 "register_operand" "d"))) + (clobber (reg:CC 33))] + "!TARGET_64BIT" + "* + { + rtx xop[1]; + xop[0] = gen_label_rtx (); + output_asm_insn (\"lcr\\t%0,%1\", operands); + output_asm_insn (\"lcr\\t%N0,%N1\", operands); + output_asm_insn (\"je\\t%l0\", xop); + output_asm_insn (\"bctr\\t%0,0\", operands); + ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, \"L\", + CODE_LABEL_NUMBER (xop[0])); + return \"\"; + }" + [(set_attr "op_type" "NN") + (set_attr "length" "10")]) + + ; + ; negsi2 instruction pattern(s). + ; + + (define_insn "negsi2" + [(set (match_operand:SI 0 "register_operand" "=d") + (neg:SI (match_operand:SI 1 "register_operand" "d"))) + (clobber (reg:CC 33))] + "" + "lcr\\t%0,%1" + [(set_attr "op_type" "RR") + (set_attr "type" "set")]) + + ; + ; negdf2 instruction pattern(s). + ; + + (define_expand "negdf2" + [(parallel + [(set (match_operand:DF 0 "register_operand" "=f") + (neg:DF (match_operand:DF 1 "register_operand" "f"))) + (clobber (reg:CC 33))])] + "TARGET_HARD_FLOAT" + "") + + (define_insn "*negdf2" + [(set (match_operand:DF 0 "register_operand" "=f") + (neg:DF (match_operand:DF 1 "register_operand" "f"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "lcdbr\\t%0,%1" + [(set_attr "op_type" "RR")]) + + (define_insn "*negdf2_ibm" + [(set (match_operand:DF 0 "register_operand" "=f") + (neg:DF (match_operand:DF 1 "register_operand" "f"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "lcdr\\t%0,%1" + [(set_attr "op_type" "RR")]) + + ; + ; negsf2 instruction pattern(s). + ; + + (define_expand "negsf2" + [(parallel + [(set (match_operand:SF 0 "register_operand" "=f") + (neg:SF (match_operand:SF 1 "register_operand" "f"))) + (clobber (reg:CC 33))])] + "TARGET_HARD_FLOAT" + "") + + (define_insn "*negsf2" + [(set (match_operand:SF 0 "register_operand" "=f") + (neg:SF (match_operand:SF 1 "register_operand" "f"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "lcebr\\t%0,%1" + [(set_attr "op_type" "RR")]) + + (define_insn "*negsf2" + [(set (match_operand:SF 0 "register_operand" "=f") + (neg:SF (match_operand:SF 1 "register_operand" "f"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "lcer\\t%0,%1" + [(set_attr "op_type" "RR")]) + + + ;; + ;;- Absolute value instructions. + ;; + + ; + ; absdi2 instruction pattern(s). + ; + + (define_insn "absdi2" + [(set (match_operand:DI 0 "register_operand" "=d") + (abs:DI (match_operand:DI 1 "register_operand" "d"))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "lpgr\\t%0,%1" + [(set_attr "op_type" "RRE") + (set_attr "type" "set")]) + + ; + ; abssi2 instruction pattern(s). + ; + + (define_insn "abssi2" + [(set (match_operand:SI 0 "register_operand" "=d") + (abs:SI (match_operand:SI 1 "register_operand" "d"))) + (clobber (reg:CC 33))] + "" + "lpr\\t%0,%1" + [(set_attr "op_type" "RR") + (set_attr "type" "set")]) + + ; + ; abshi2 instruction pattern(s). + ; + + (define_insn "abshi2" + [(set (match_operand:HI 0 "register_operand" "=d") + (abs:HI (match_operand:HI 1 "register_operand" "d"))) + (clobber (reg:CC 33))] + "" + "sll\\t%1,16\;sra\\t%1,16\;lpr\\t%0,%1" + [(set_attr "op_type" "NN") + (set_attr "cycle" "3") + (set_attr "length" "10")]) + + ; + ; absdf2 instruction pattern(s). + ; + + (define_expand "absdf2" + [(parallel + [(set (match_operand:DF 0 "register_operand" "=f") + (abs:DF (match_operand:DF 1 "register_operand" "f"))) + (clobber (reg:CC 33))])] + "TARGET_HARD_FLOAT" + "") + + (define_insn "*absdf2" + [(set (match_operand:DF 0 "register_operand" "=f") + (abs:DF (match_operand:DF 1 "register_operand" "f"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "lpdbr\\t%0,%1" + [(set_attr "op_type" "RR")]) + + (define_insn "*absdf2_ibm" + [(set (match_operand:DF 0 "register_operand" "=f") + (abs:DF (match_operand:DF 1 "register_operand" "f"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "lpdr\\t%0,%1" + [(set_attr "op_type" "RR")]) + + ; + ; abssf2 instruction pattern(s). + ; + + (define_expand "abssf2" + [(parallel + [(set (match_operand:SF 0 "register_operand" "=f") + (abs:SF (match_operand:SF 1 "register_operand" "f"))) + (clobber (reg:CC 33))])] + "TARGET_HARD_FLOAT" + "") + + (define_insn "*abssf2" + [(set (match_operand:SF 0 "register_operand" "=f") + (abs:SF (match_operand:SF 1 "register_operand" "f"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT" + "lpebr\\t%0,%1" + [(set_attr "op_type" "RR")]) + + (define_insn "*abssf2_ibm" + [(set (match_operand:SF 0 "register_operand" "=f") + (abs:SF (match_operand:SF 1 "register_operand" "f"))) + (clobber (reg:CC 33))] + "TARGET_HARD_FLOAT && TARGET_IBM_FLOAT" + "lper\\t%0,%1" + [(set_attr "op_type" "RR")]) + + + ;; + ;;- One complement instructions. + ;; + + ; + ; one_cmpldi2 instruction pattern(s). + ; + + (define_expand "one_cmpldi2" + [(parallel + [(set (match_operand:DI 0 "r_or_s_operand" "=d") + (not:DI (match_operand:DI 1 "r_or_s_operand" "0"))) + (use (match_dup 2)) + (clobber (reg:CC 33))])] + "TARGET_64BIT" + "{ operands[2] = force_const_mem (DImode, constm1_rtx); }") + + (define_insn "*one_cmpldi2" + [(set (match_operand:DI 0 "r_or_s_operand" "=d,Q") + (not:DI (match_operand:DI 1 "r_or_s_operand" "0,0"))) + (use (match_operand:DI 2 "memory_operand" "m,m")) + (clobber (reg:CC 33))] + "" + "@ + xg\\t%0,%2 + xc\\t%O0(8,%R0),%2" + [(set_attr "op_type" "RR,SS") + (set_attr "atype" "mem")]) + + ; + ; one_cmplsi2 instruction pattern(s). + ; + + (define_expand "one_cmplsi2" + [(parallel + [(set (match_operand:SI 0 "r_or_s_operand" "=d") + (not:SI (match_operand:SI 1 "r_or_s_operand" "0"))) + (use (match_dup 2)) + (clobber (reg:CC 33))])] + "" + "{ operands[2] = force_const_mem (SImode, constm1_rtx); }") + + (define_insn "*one_cmplsi2" + [(set (match_operand:SI 0 "r_or_s_operand" "=d,Q") + (not:SI (match_operand:SI 1 "r_or_s_operand" "0,0"))) + (use (match_operand:SI 2 "memory_operand" "m,m")) + (clobber (reg:CC 33))] + "" + "@ + x\\t%0,%2 + xc\\t%O0(4,%R0),%2" + [(set_attr "op_type" "RR,SS") + (set_attr "atype" "mem")]) + + ; + ; one_cmplhi2 instruction pattern(s). + ; + + (define_expand "one_cmplhi2" + [(parallel + [(set (match_operand:HI 0 "r_or_s_operand" "=d") + (not:HI (match_operand:HI 1 "r_or_s_operand" "0"))) + (use (match_dup 2)) + (clobber (reg:CC 33))])] + "" + "{ operands[2] = force_const_mem (SImode, constm1_rtx); }") + + (define_insn "*one_cmplhi2" + [(set (match_operand:HI 0 "r_or_s_operand" "=d,Q") + (not:HI (match_operand:HI 1 "r_or_s_operand" "0,0"))) + (use (match_operand:SI 2 "memory_operand" "m,m")) + (clobber (reg:CC 33))] + "" + "@ + x\\t%0,%2 + xc\\t%O0(2,%R0),%2" + [(set_attr "op_type" "RX,SS") + (set_attr "atype" "mem")]) + + ; + ; one_cmplqi2 instruction pattern(s). + ; + + (define_insn "one_cmpqi2" + [(set (match_operand:QI 0 "memory_operand" "=Q") + (not:QI (match_operand:QI 1 "memory_operand" "0"))) + (clobber (reg:CC 33))] + "" + "xi\\t%0,255" + [(set_attr "op_type" "SI")]) + + + ;; + ;;- Rotate instructions. + ;; + + ; + ; rotldi3 instruction pattern(s). + ; + + (define_insn "rotldi3" + [(set (match_operand:DI 0 "register_operand" "=d,d") + (rotate:DI (match_operand:DI 1 "register_operand" "d,d") + (match_operand:DI 2 "nonmemory_operand" "J,a"))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "@ + rllg\\t%0,%1,%c2 + rllg\\t%0,%1,0(%2)" + [(set_attr "op_type" "RSE") + (set_attr "type" "set")]) + + ; + ; rotlsi3 instruction pattern(s). + ; + + (define_insn "rotlsi3" + [(set (match_operand:SI 0 "register_operand" "=d,d") + (rotate:SI (match_operand:SI 1 "register_operand" "d,d") + (match_operand:SI 2 "nonmemory_operand" "J,a"))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "@ + rll\\t%0,%1,%c2 + rll\\t%0,%1,0(%2)" + [(set_attr "op_type" "RSE") + (set_attr "type" "set")]) + + + ;; + ;;- Arithmetic shift instructions. + ;; + ;; for left shifts always setal shifts are used (ANSI-C) + + ; + ; ashldi3 instruction pattern(s). + ; + + (define_expand "ashldi3" + [(parallel + [(set (match_operand:DI 0 "register_operand" "") + (ashift:DI (match_operand:DI 1 "register_operand" "") + (match_operand:SI 2 "nonmemory_operand" ""))) + (clobber (reg:CC 33))])] + "" + "") + + (define_insn "*ashldi3_31" + [(set (match_operand:DI 0 "register_operand" "=d,d") + (ashift:DI (match_operand:DI 1 "register_operand" "0,0") + (match_operand:SI 2 "nonmemory_operand" "J,a"))) + (clobber (reg:CC 33))] + "!TARGET_64BIT" + "@ + sldl\\t%0,%c2 + sldl\\t%0,0(%2)" + [(set_attr "op_type" "RS") + (set_attr "type" "set")]) + + (define_insn "*ashldi3_64" + [(set (match_operand:DI 0 "register_operand" "=d,d") + (ashift:DI (match_operand:DI 1 "register_operand" "d,d") + (match_operand:SI 2 "nonmemory_operand" "J,a"))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "@ + sllg\\t%0,%1,%2 + sllg\\t%0,%1,0(%2)" + [(set_attr "op_type" "RSE") + (set_attr "type" "set")]) + + ; + ; ashrdi3 instruction pattern(s). + ; + + (define_expand "ashrdi3" + [(parallel + [(set (match_operand:DI 0 "register_operand" "") + (ashiftrt:DI (match_operand:DI 1 "register_operand" "") + (match_operand:SI 2 "nonmemory_operand" ""))) + (clobber (reg:CC 33))])] + "" + "") + + (define_insn "*ashrdi3_31" + [(set (match_operand:DI 0 "register_operand" "=d,d") + (ashiftrt:DI (match_operand:DI 1 "register_operand" "0,0") + (match_operand:SI 2 "nonmemory_operand" "J,a"))) + (clobber (reg:CC 33))] + "!TARGET_64BIT" + "@ + srda\\t%0,%c2 + srda\\t%0,0(%2)" + [(set_attr "op_type" "RS")]) + + (define_insn "*ashrdi3_64" + [(set (match_operand:DI 0 "register_operand" "=d,d") + (ashiftrt:DI (match_operand:DI 1 "register_operand" "d,d") + (match_operand:SI 2 "nonmemory_operand" "J,a"))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "@ + srag\\t%0,%1,%c2 + srag\\t%0,%1,0(%2)" + [(set_attr "op_type" "RSE") + (set_attr "type" "set")]) + + ; + ; ashlsi3 instruction pattern(s). + ; + ; all 32 bits has to be shifted (testcase co750c) + + (define_insn "ashlsi3" + [(set (match_operand:SI 0 "register_operand" "=d,d") + (ashift:SI (match_operand:SI 1 "register_operand" "0,0") + (match_operand:SI 2 "r_or_im8_operand" "J,a"))) + (clobber (reg:CC 33))] + "" + "@ + sll\\t%0,%c2 + sll\\t%0,0(%2)" + [(set_attr "op_type" "RS") + (set_attr "type" "set")]) + + ; + ; ashrsi3 instruction pattern(s). + ; + + (define_insn "ashrsi3" + [(set (match_operand:SI 0 "register_operand" "=d,d") + (ashiftrt:SI (match_operand:SI 1 "register_operand" "0,0") + (match_operand:SI 2 "r_or_im8_operand" "J,a"))) + (clobber (reg:CC 33))] + "" + "@ + sra\\t%0,%c2 + sra\\t%0,0(%2)" + [(set_attr "op_type" "RS") + (set_attr "type" "set")]) + + ; + ; ashlhi3 instruction pattern(s). + ; + + (define_insn "ashlhi3" + [(set (match_operand:HI 0 "register_operand" "=d,d") + (ashift:HI (match_operand:HI 1 "register_operand" "0,0") + (match_operand:SI 2 "r_or_im8_operand" "J,a"))) + (clobber (reg:CC 33))] + "" + "@ + sll\\t%0,%c2 + sll\\t%0,0(%2)" + [(set_attr "op_type" "RS,RS")]) + + ; + ; ashrhi3 instruction pattern(s). + ; + + (define_insn "ashrhi3" + [(set (match_operand:HI 0 "register_operand" "=d,d") + (ashiftrt:HI (match_operand:HI 1 "register_operand" "0,0") + (match_operand:SI 2 "r_or_im8_operand" "J,a"))) + (clobber (reg:CC 33))] + "" + "@ + sll\\t%0,16\;sra\\t%0,16+%c2 + sll\\t%0,16\;sra\\t%0,16(%2)" + [(set_attr "op_type" "NN,NN") + (set_attr "length" "8,8")]) + + + ;; + ;;- logical shift instructions. + ;; + + ; + ; lshrdi3 instruction pattern(s). + ; + + (define_expand "lshrdi3" + [(parallel + [(set (match_operand:DI 0 "register_operand" "") + (lshiftrt:DI (match_operand:DI 1 "register_operand" "") + (match_operand:SI 2 "nonmemory_operand" ""))) + (clobber (reg:CC 33))])] + "" + "") + + (define_insn "*lshrdi3_31" + [(set (match_operand:DI 0 "register_operand" "=d,d") + (lshiftrt:DI (match_operand:DI 1 "register_operand" "0,0") + (match_operand:SI 2 "nonmemory_operand" "J,a"))) + (clobber (reg:CC 33))] + "!TARGET_64BIT" + "@ + srdl\\t%0,%c2 + srdl\\t%0,0(%2)" + [(set_attr "op_type" "RS,RS")]) + + (define_insn "*lshrdi3_64" + [(set (match_operand:DI 0 "register_operand" "=d,d") + (lshiftrt:DI (match_operand:DI 1 "register_operand" "d,d") + (match_operand:SI 2 "nonmemory_operand" "J,a"))) + (clobber (reg:CC 33))] + "TARGET_64BIT" + "@ + srlg\\t%0,%1,%c2 + srlg\\t%0,%1,0(%2)" + [(set_attr "op_type" "RS,RS") + (set_attr "type" "set")]) + + ; + ; lshrsi3 instruction pattern(s). + ; + + (define_insn "lshrsi3" + [(set (match_operand:SI 0 "register_operand" "=d,d") + (lshiftrt:SI (match_operand:SI 1 "register_operand" "0,0") + (match_operand:SI 2 "r_or_im8_operand" "J,a"))) + (clobber (reg:CC 33))] + "" + "@ + srl\\t%0,%c2 + srl\\t%0,0(%2)" + [(set_attr "op_type" "RS") + (set_attr "type" "set")]) + + ; + ; lshrhi3 instruction pattern(s). + ; + + (define_insn "lshrhi3" + [(set (match_operand:HI 0 "register_operand" "=d,d") + (lshiftrt:HI (match_operand:HI 1 "register_operand" "0,0") + (match_operand:SI 2 "r_or_im8_operand" "J,a"))) + (clobber (reg:CC 33))] + "" + "@ + sll\\t%0,16\;srl\\t%0,16+%c2 + sll\\t%0,16\;srl\\t%0,16(%2)" + [(set_attr "op_type" "NN,NN") + (set_attr "length" "8,8")]) + + + ;; + ;; Branch instruction patterns. + ;; + + (define_expand "beq" + [(set (reg:CCZ 33) (compare:CCZ (match_dup 1) (match_dup 2))) + (set (pc) + (if_then_else (eq (reg:CCZ 33) (const_int 0)) + (label_ref (match_operand 0 "" "")) + (pc)))] + "" + "{ operands[1] = s390_compare_op0; operands[2] = s390_compare_op1; }") + + (define_expand "bne" + [(set (reg:CCZ 33) (compare:CCZ (match_dup 1) (match_dup 2))) + (set (pc) + (if_then_else (ne (reg:CCZ 33) (const_int 0)) + (label_ref (match_operand 0 "" "")) + (pc)))] + "" + "{ operands[1] = s390_compare_op0; operands[2] = s390_compare_op1; }") + + (define_expand "bgt" + [(set (reg:CCS 33) (compare:CCS (match_dup 1) (match_dup 2))) + (set (pc) + (if_then_else (gt (reg:CCS 33) (const_int 0)) + (label_ref (match_operand 0 "" "")) + (pc)))] + "" + "{ operands[1] = s390_compare_op0; operands[2] = s390_compare_op1; }") + + (define_expand "bgtu" + [(set (reg:CCU 33) (compare:CCU (match_dup 1) (match_dup 2))) + (set (pc) + (if_then_else (gtu (reg:CCU 33) (const_int 0)) + (label_ref (match_operand 0 "" "")) + (pc)))] + "" + "{ operands[1] = s390_compare_op0; operands[2] = s390_compare_op1; }") + + (define_expand "blt" + [(set (reg:CCS 33) (compare:CCS (match_dup 1) (match_dup 2))) + (set (pc) + (if_then_else (lt (reg:CCS 33) (const_int 0)) + (label_ref (match_operand 0 "" "")) + (pc)))] + "" + "{ operands[1] = s390_compare_op0; operands[2] = s390_compare_op1; }") + + (define_expand "bltu" + [(set (reg:CCU 33) (compare:CCU (match_dup 1) (match_dup 2))) + (set (pc) + (if_then_else (ltu (reg:CCU 33) (const_int 0)) + (label_ref (match_operand 0 "" "")) + (pc)))] + "" + "{ operands[1] = s390_compare_op0; operands[2] = s390_compare_op1; }") + + (define_expand "bge" + [(set (reg:CCS 33) (compare:CCS (match_dup 1) (match_dup 2))) + (set (pc) + (if_then_else (ge (reg:CCS 33) (const_int 0)) + (label_ref (match_operand 0 "" "")) + (pc)))] + "" + "{ operands[1] = s390_compare_op0; operands[2] = s390_compare_op1; }") + + (define_expand "bgeu" + [(set (reg:CCU 33) (compare:CCU (match_dup 1) (match_dup 2))) + (set (pc) + (if_then_else (geu (reg:CCU 33) (const_int 0)) + (label_ref (match_operand 0 "" "")) + (pc)))] + "" + "{ operands[1] = s390_compare_op0; operands[2] = s390_compare_op1; }") + + (define_expand "ble" + [(set (reg:CCS 33) (compare:CCS (match_dup 1) (match_dup 2))) + (set (pc) + (if_then_else (le (reg:CCS 33) (const_int 0)) + (label_ref (match_operand 0 "" "")) + (pc)))] + "" + "{ operands[1] = s390_compare_op0; operands[2] = s390_compare_op1; }") + + (define_expand "bleu" + [(set (reg:CCU 33) (compare:CCU (match_dup 1) (match_dup 2))) + (set (pc) + (if_then_else (leu (reg:CCU 33) (const_int 0)) + (label_ref (match_operand 0 "" "")) + (pc)))] + "" + "{ operands[1] = s390_compare_op0; operands[2] = s390_compare_op1; }") + + + ;; + ;;- Conditional jump instructions. + ;; + + (define_insn "cjump" + [(set (pc) + (if_then_else + (match_operator 1 "comparison_operator" [(reg 33) (const_int 0)]) + (label_ref (match_operand 0 "" "")) + (pc)))] + "" + "* + { + if (get_attr_length (insn) == 4 || !TARGET_64BIT) + return \"j%C1\\t%l0\"; + else + return \"jg%C1\\t%l0\"; + }" + [(set_attr "op_type" "RI") + (set (attr "length") (if_then_else + (lt (abs (minus (pc) (match_dup 0))) (const_int 60000)) + (const_int 4) (const_int 6)))]) + + (define_insn "*cjump_long" + [(set (pc) + (if_then_else + (match_operator 1 "comparison_operator" [(reg 33) (const_int 0)]) + (match_operand 0 "address_operand" "p") + (pc)))] + "" + "* + { + if (get_attr_op_type (insn) == OP_TYPE_RR) + return \"b%C1r\\t%0\"; + else + return \"b%C1\\t%a0\"; + }" + [(set (attr "op_type") + (if_then_else (match_operand 0 "register_operand" "") + (const_string "RR") (const_string "RX"))) + (set_attr "atype" "mem")]) + + + ;; + ;;- Negated conditional jump instructions. + ;; + + (define_insn "icjump" + [(set (pc) + (if_then_else + (match_operator 1 "comparison_operator" [(reg 33) (const_int 0)]) + (pc) + (label_ref (match_operand 0 "" ""))))] + "" + "* + { + if (get_attr_length (insn) == 4 || !TARGET_64BIT) + return \"j%D1\\t%l0\"; + else + return \"jg%D1\\t%l0\"; + }" + [(set_attr "op_type" "RI") + (set (attr "length") (if_then_else + (lt (abs (minus (pc) (match_dup 0))) (const_int 60000)) + (const_int 4) (const_int 6)))]) + + (define_insn "*icjump_long" + [(set (pc) + (if_then_else + (match_operator 1 "comparison_operator" [(reg 33) (const_int 0)]) + (pc) + (match_operand 0 "address_operand" "p")))] + "" + "* + { + if (get_attr_op_type (insn) == OP_TYPE_RR) + return \"b%D1r\\t%0\"; + else + return \"b%D1\\t%a0\"; + }" + [(set (attr "op_type") + (if_then_else (match_operand 0 "register_operand" "") + (const_string "RR") (const_string "RX"))) + (set_attr "atype" "mem")]) + + + ;; + ;;- Subtract one and jump if not zero. + ;; + + ;(define_expand "decrement_and_branch_on_count" + ; [(use (match_operand 0 "register_operand" "")) + ; (use (label_ref (match_operand 1 "" "")))] + ; "" + ; " + ;{ + ;/* if (TARGET_64BIT) + ; emit_jump_insn (gen_brctdi (operands[0], operands[1])); + ; else */ + ; emit_jump_insn (gen_brctsi (operands[0], operands[1])); + ; DONE; + ;}") + ; + ;(define_insn "brctsi" + ; [(set (pc) + ; (if_then_else + ; (ne (match_operand:SI 0 "register_operand" "+a") + ; (const_int 1)) + ; (label_ref (match_operand 1 "" "")) + ; (pc))) + ; (set (match_dup 0) + ; (plus:SI (match_dup 0) (const_int -1)))] + ; "" + ; "brct\\t%0,%l1" + ; [(set_attr "op_type" "RI") + ; (set_attr "type" "branch")] + ;) + ; + ;(define_insn "ibrctsi" + ; [(set (pc) + ; (if_then_else + ; (eq (match_operand:SI 0 "register_operand" "+a") + ; (const_int 1)) + ; (pc) + ; (label_ref (match_operand 1 "" "")))) + ; (set (match_dup 0) + ; (plus:SI (match_dup 0) (const_int -1)))] + ; "" + ; "brct\\t%0,%l1" + ; [(set_attr "op_type" "RI") + ; (set_attr "type" "branch")] + ;) + + + ;; + ;;- Unconditional jump instructions. + ;; + + ; + ; jump instruction pattern(s). + ; + + (define_insn "jump" + [(set (pc) (label_ref (match_operand 0 "" "")))] + "" + "* + { + if (get_attr_length (insn) == 4 || !TARGET_64BIT) + return \"j\\t%l0\"; + else + return \"jg\\t%l0\"; + }" + [(set_attr "op_type" "RI") + (set (attr "length") (if_then_else + (lt (abs (minus (pc) (match_dup 0))) (const_int 60000)) + (const_int 4) (const_int 6)))]) + + ; + ; indirect-jump instruction pattern(s). + ; + + (define_insn "indirect_jump" + [(set (pc) (match_operand 0 "address_operand" "p"))] + "" + "* + { + if (get_attr_op_type (insn) == OP_TYPE_RR) + return \"br\\t%0\"; + else + return \"b\\t%a0\"; + }" + [(set (attr "op_type") + (if_then_else (match_operand 0 "register_operand" "") + (const_string "RR") (const_string "RX"))) + (set_attr "atype" "mem")]) + + ; + ; casesi instruction pattern(s). + ; + + (define_insn "casesi_jump" + [(set (pc) (match_operand 0 "address_operand" "p")) + (use (label_ref (match_operand 1 "" "")))] + "" + "* + { + if (get_attr_op_type (insn) == OP_TYPE_RR) + return \"br\\t%0\"; + else + return \"b\\t%a0\"; + }" + [(set (attr "op_type") + (if_then_else (match_operand 0 "register_operand" "") + (const_string "RR") (const_string "RX"))) + (set_attr "atype" "mem")]) + + (define_expand "casesi" + [(match_operand:SI 0 "general_operand" "") + (match_operand:SI 1 "general_operand" "") + (match_operand:SI 2 "general_operand" "") + (label_ref (match_operand 3 "" "")) + (label_ref (match_operand 4 "" ""))] + "" + " + { + rtx index = gen_reg_rtx (SImode); + rtx base = gen_reg_rtx (Pmode); + rtx target = gen_reg_rtx (Pmode); + + emit_move_insn (index, operands[0]); + emit_insn (gen_subsi3 (index, index, operands[1])); + emit_cmp_and_jump_insns (index, operands[2], GTU, NULL_RTX, SImode, 1, + 0, operands[4]); + + if (Pmode != SImode) + index = convert_to_mode (Pmode, index, 1); + if (GET_CODE (index) != REG) + index = copy_to_mode_reg (Pmode, index); + + if (TARGET_64BIT) + emit_insn (gen_ashldi3 (index, index, GEN_INT (3))); + else + emit_insn (gen_ashlsi3 (index, index, GEN_INT (2))); + + emit_move_insn (base, gen_rtx_LABEL_REF (Pmode, operands[3])); + + index = gen_rtx_MEM (Pmode, gen_rtx_PLUS (Pmode, base, index)); + emit_move_insn (target, index); + + if (flag_pic) + target = gen_rtx_PLUS (Pmode, base, target); + emit_jump_insn (gen_casesi_jump (target, operands[3])); + + DONE; + }") + + + ;; + ;;- Jump to subroutine. + ;; + ;; + + ; + ; untyped call instruction pattern(s). + ; + + ;; Call subroutine returning any type. + (define_expand "untyped_call" + [(parallel [(call (match_operand 0 "" "") + (const_int 0)) + (match_operand 1 "" "") + (match_operand 2 "" "")])] + "" + " + { + int i; + + emit_call_insn (gen_call (operands[0], const0_rtx, const0_rtx)); + + for (i = 0; i < XVECLEN (operands[2], 0); i++) + { + rtx set = XVECEXP (operands[2], 0, i); + emit_move_insn (SET_DEST (set), SET_SRC (set)); + } + + /* The optimizer does not know that the call sets the function value + registers we stored in the result block. We avoid problems by + claiming that all hard registers are used and clobbered at this + point. */ + emit_insn (gen_blockage ()); + + DONE; + }") + + ;; UNSPEC_VOLATILE is considered to use and clobber all hard registers and + ;; all of memory. This blocks insns from being moved across this point. + + (define_insn "blockage" + [(unspec_volatile [(const_int 0)] 0)] + "" + "") + + + ; + ; call instruction pattern(s). + ; + + (define_expand "call" + [(parallel [(call (match_operand 0 "" "") + (match_operand 1 "" "")) + (clobber (match_operand 2 "" ""))])] + "" + " + { + /* Abuse operand 2 to hold the return register. */ + operands[2] = gen_rtx_REG (Pmode, RETURN_REGNUM); + + /* In 31-bit, we must load the GOT register even if the + compiler doesn't know about it, because the PLT glue + code uses it. In 64-bit, this is not necessary. */ + if (flag_pic && !TARGET_64BIT) + current_function_uses_pic_offset_table = 1; + + /* Direct function calls need special treatment. */ + if (GET_CODE (XEXP (operands[0], 0)) == SYMBOL_REF) + { + rtx sym = XEXP (operands[0], 0); + + /* When calling a global routine in PIC mode, we must + replace the symbol itself with the PLT stub. */ + if (flag_pic && !SYMBOL_REF_FLAG(sym)) + { + sym = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, sym), 113); + sym = gen_rtx_CONST (Pmode, sym); + } + + /* Unless we can use the bras(l) insn, force the + routine address into a register. */ + if (!TARGET_SMALL_EXEC && !TARGET_64BIT) + { + rtx target = gen_reg_rtx (Pmode); + emit_move_insn (target, sym); + sym = target; + } + + operands[0] = gen_rtx_MEM (QImode, sym); + } + }") + + (define_insn "brasl" + [(call (mem:QI (match_operand:DI 0 "bras_sym_operand" "X")) + (match_operand:SI 1 "const_int_operand" "n")) + (clobber (match_operand:DI 2 "register_operand" "=r"))] + "TARGET_64BIT" + "brasl\\t%2,%0" + [(set_attr "op_type" "RIL") + (set_attr "cycle" "n")]) + + (define_insn "bras" + [(call (mem:QI (match_operand:SI 0 "bras_sym_operand" "X")) + (match_operand:SI 1 "const_int_operand" "n")) + (clobber (match_operand:SI 2 "register_operand" "=r"))] + "TARGET_SMALL_EXEC" + "bras\\t%2,%0" + [(set_attr "op_type" "RI") + (set_attr "cycle" "n")]) + + (define_insn "basr_64" + [(call (mem:QI (match_operand:DI 0 "register_operand" "a")) + (match_operand:SI 1 "const_int_operand" "n")) + (clobber (match_operand:DI 2 "register_operand" "=r"))] + "TARGET_64BIT" + "basr\\t%2,%0" + [(set_attr "op_type" "RR") + (set_attr "cycle" "n") + (set_attr "atype" "mem")]) + + (define_insn "basr_31" + [(call (mem:QI (match_operand:SI 0 "register_operand" "a")) + (match_operand:SI 1 "const_int_operand" "n")) + (clobber (match_operand:SI 2 "register_operand" "=r"))] + "!TARGET_64BIT" + "basr\\t%2,%0" + [(set_attr "op_type" "RR") + (set_attr "cycle" "n") + (set_attr "atype" "mem")]) + + (define_insn "bas_64" + [(call (mem:QI (match_operand:QI 0 "address_operand" "p")) + (match_operand:SI 1 "const_int_operand" "n")) + (clobber (match_operand:DI 2 "register_operand" "=r"))] + "TARGET_64BIT" + "bas\\t%2,%a0" + [(set_attr "op_type" "RX") + (set_attr "cycle" "n") + (set_attr "atype" "mem")]) + + (define_insn "bas_31" + [(call (mem:QI (match_operand:QI 0 "address_operand" "p")) + (match_operand:SI 1 "const_int_operand" "n")) + (clobber (match_operand:SI 2 "register_operand" "=r"))] + "!TARGET_64BIT" + "bas\\t%2,%a0" + [(set_attr "op_type" "RX") + (set_attr "cycle" "n") + (set_attr "atype" "mem")]) + + + ; + ; call_value instruction pattern(s). + ; + + (define_expand "call_value" + [(parallel [(set (match_operand 0 "" "") + (call (match_operand 1 "" "") + (match_operand 2 "" ""))) + (clobber (match_operand 3 "" ""))])] + "" + " + { + /* Abuse operand 3 to hold the return register. */ + operands[3] = gen_rtx_REG (Pmode, RETURN_REGNUM); + + /* In 31-bit, we must load the GOT register even if the + compiler doesn't know about it, because the PLT glue + code uses it. In 64-bit, this is not necessary. */ + if (flag_pic && !TARGET_64BIT) + current_function_uses_pic_offset_table = 1; + + /* Direct function calls need special treatment. */ + if (GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF) + { + rtx sym = XEXP (operands[1], 0); + + /* When calling a global routine in PIC mode, we must + replace the symbol itself with the PLT stub. */ + if (flag_pic && !SYMBOL_REF_FLAG(sym)) + { + sym = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, sym), 113); + sym = gen_rtx_CONST (Pmode, sym); + } + + /* Unless we can use the bras(l) insn, force the + routine address into a register. */ + if (!TARGET_SMALL_EXEC && !TARGET_64BIT) + { + rtx target = gen_reg_rtx (Pmode); + emit_move_insn (target, sym); + sym = target; + } + + operands[1] = gen_rtx_MEM (QImode, sym); + } + }") + + (define_insn "brasl_r" + [(set (match_operand 0 "register_operand" "=df") + (call (mem:QI (match_operand:DI 1 "bras_sym_operand" "X")) + (match_operand:SI 2 "const_int_operand" "n"))) + (clobber (match_operand:DI 3 "register_operand" "=r"))] + "TARGET_64BIT" + "brasl\\t%3,%1" + [(set_attr "op_type" "RIL") + (set_attr "cycle" "n")]) + + (define_insn "bras_r" + [(set (match_operand 0 "register_operand" "=df") + (call (mem:QI (match_operand:SI 1 "bras_sym_operand" "X")) + (match_operand:SI 2 "const_int_operand" "n"))) + (clobber (match_operand:SI 3 "register_operand" "=r"))] + "TARGET_SMALL_EXEC" + "bras\\t%3,%1" + [(set_attr "op_type" "RI") + (set_attr "cycle" "n")]) + + (define_insn "basr_r_64" + [(set (match_operand 0 "register_operand" "=df") + (call (mem:QI (match_operand:DI 1 "register_operand" "a")) + (match_operand:SI 2 "const_int_operand" "n"))) + (clobber (match_operand:DI 3 "register_operand" "=r"))] + "TARGET_64BIT" + "basr\\t%3,%1" + [(set_attr "op_type" "RR") + (set_attr "cycle" "n")]) + + (define_insn "basr_r_31" + [(set (match_operand 0 "register_operand" "=df") + (call (mem:QI (match_operand:SI 1 "register_operand" "a")) + (match_operand:SI 2 "const_int_operand" "n"))) + (clobber (match_operand:SI 3 "register_operand" "=r"))] + "!TARGET_64BIT" + "basr\\t%3,%1" + [(set_attr "op_type" "RR") + (set_attr "cycle" "n") + (set_attr "atype" "mem")]) + + (define_insn "bas_r_64" + [(set (match_operand 0 "register_operand" "=df") + (call (mem:QI (match_operand:QI 1 "address_operand" "p")) + (match_operand:SI 2 "const_int_operand" "n"))) + (clobber (match_operand:DI 3 "register_operand" "=r"))] + "TARGET_64BIT" + "bas\\t%3,%a1" + [(set_attr "op_type" "RX") + (set_attr "cycle" "n") + (set_attr "atype" "mem")]) + + (define_insn "bas_r_31" + [(set (match_operand 0 "register_operand" "=df") + (call (mem:QI (match_operand:QI 1 "address_operand" "p")) + (match_operand:SI 2 "const_int_operand" "n"))) + (clobber (match_operand:SI 3 "register_operand" "=r"))] + "!TARGET_64BIT" + "bas\\t%3,%a1" + [(set_attr "op_type" "RX") + (set_attr "cycle" "n") + (set_attr "atype" "mem")]) + + + ;; + ;;- Miscellaneous instructions. + ;; + + ; + ; allocate stack instruction pattern(s). + ; + + (define_expand "allocate_stack" + [(set (reg 15) + (plus (reg 15) (match_operand 1 "general_operand" ""))) + (set (match_operand 0 "general_operand" "") + (reg 15))] + "" + " + { + rtx stack = gen_rtx (REG, Pmode, STACK_POINTER_REGNUM); + rtx chain = gen_rtx (MEM, Pmode, stack); + rtx temp = gen_reg_rtx (Pmode); + + emit_move_insn (temp, chain); + + if (TARGET_64BIT) + emit_insn (gen_adddi3 (stack, stack, negate_rtx (Pmode, operands[1]))); + else + emit_insn (gen_addsi3 (stack, stack, negate_rtx (Pmode, operands[1]))); + + emit_move_insn (chain, temp); + + emit_move_insn (operands[0], virtual_stack_dynamic_rtx); + DONE; + }") + + + ; + ; setjmp/longjmp instruction pattern(s). + ; + + (define_expand "builtin_setjmp_setup" + [(unspec [(match_operand 0 "register_operand" "a")] 1)] + "" + " + { + rtx base = gen_rtx_MEM (Pmode, plus_constant (operands[0], 4 * GET_MODE_SIZE (Pmode))); + rtx basereg = gen_rtx_REG (Pmode, BASE_REGISTER); + + emit_move_insn (base, basereg); + DONE; + }") + + (define_expand "builtin_setjmp_receiver" + [(unspec_volatile [(label_ref (match_operand 0 "" ""))] 2)] + "flag_pic" + " + { + rtx gotreg = gen_rtx_REG (Pmode, PIC_OFFSET_TABLE_REGNUM); + rtx got = gen_rtx_SYMBOL_REF (Pmode, \"_GLOBAL_OFFSET_TABLE_\"); + SYMBOL_REF_FLAG (got) = 1; + + emit_move_insn (gotreg, got); + emit_insn (gen_rtx_USE (VOIDmode, gotreg)); + DONE; + }") + + (define_expand "builtin_longjmp" + [(unspec_volatile [(match_operand 0 "register_operand" "r")] 3)] + "" + " + { + /* The elements of the buffer are, in order: */ + rtx fp = gen_rtx_MEM (Pmode, operands[0]); + rtx lab = gen_rtx_MEM (Pmode, plus_constant (operands[0], GET_MODE_SIZE (Pmode))); + rtx stack = gen_rtx_MEM (Pmode, plus_constant (operands[0], 2 * GET_MODE_SIZE (Pmode))); + rtx base = gen_rtx_MEM (Pmode, plus_constant (operands[0], 4 * GET_MODE_SIZE (Pmode))); + rtx basereg = gen_rtx_REG (Pmode, BASE_REGISTER); + rtx jmp = gen_rtx_REG (Pmode, 14); + + emit_move_insn (jmp, lab); + emit_move_insn (basereg, base); + emit_stack_restore (SAVE_NONLOCAL, stack, NULL_RTX); + emit_move_insn (hard_frame_pointer_rtx, fp); + + emit_insn (gen_rtx_USE (VOIDmode, hard_frame_pointer_rtx)); + emit_insn (gen_rtx_USE (VOIDmode, stack_pointer_rtx)); + emit_insn (gen_rtx_USE (VOIDmode, basereg)); + emit_indirect_jump (jmp); + DONE; + }") + + + ;; These patterns say how to save and restore the stack pointer. We need not + ;; save the stack pointer at function level since we are careful to + ;; preserve the backchain. At block level, we have to restore the backchain + ;; when we restore the stack pointer. + ;; + ;; For nonlocal gotos, we must save both the stack pointer and its + ;; backchain and restore both. Note that in the nonlocal case, the + ;; save area is a memory location. + + (define_expand "save_stack_function" + [(match_operand 0 "general_operand" "") + (match_operand 1 "general_operand" "")] + "" + "DONE;") + + (define_expand "restore_stack_function" + [(match_operand 0 "general_operand" "") + (match_operand 1 "general_operand" "")] + "" + "DONE;") + + (define_expand "restore_stack_block" + [(use (match_operand 0 "register_operand" "")) + (set (match_dup 2) (match_dup 3)) + (set (match_dup 0) (match_operand 1 "register_operand" "")) + (set (match_dup 3) (match_dup 2))] + "" + " + { + operands[2] = gen_reg_rtx (Pmode); + operands[3] = gen_rtx_MEM (Pmode, operands[0]); + }") + + (define_expand "save_stack_nonlocal" + [(match_operand 0 "memory_operand" "") + (match_operand 1 "register_operand" "")] + "" + " + { + rtx temp = gen_reg_rtx (Pmode); + + /* Copy the backchain to the first word, sp to the second. */ + emit_move_insn (temp, gen_rtx_MEM (Pmode, operands[1])); + emit_move_insn (operand_subword (operands[0], 0, 0, + TARGET_64BIT ? TImode : DImode), + temp); + emit_move_insn (operand_subword (operands[0], 1, 0, + TARGET_64BIT ? TImode : DImode), + operands[1]); + DONE; + }") + + (define_expand "restore_stack_nonlocal" + [(match_operand 0 "register_operand" "") + (match_operand 1 "memory_operand" "")] + "" + " + { + rtx temp = gen_reg_rtx (Pmode); + + /* Restore the backchain from the first word, sp from the second. */ + emit_move_insn (temp, + operand_subword (operands[1], 0, 0, + TARGET_64BIT ? TImode : DImode)); + emit_move_insn (operands[0], + operand_subword (operands[1], 1, 0, + TARGET_64BIT ? TImode : DImode)); + emit_move_insn (gen_rtx_MEM (Pmode, operands[0]), temp); + DONE; + }") + + + (define_expand "eh_epilogue" + [(use (match_operand 0 "register_operand" "")) + (use (match_operand 1 "register_operand" "")) + (use (match_operand 2 "register_operand" ""))] + "" + " + { + s390_expand_eh_epilogue (operands[0], operands[1], operands[2]); + DONE; + }") + + + ; + ; nop instruction pattern(s). + ; + + (define_insn "nop" + [(const_int 0)] + "" + "lr\\t0,0" + [(set_attr "op_type" "RR")]) + + + ; + ; Special literal pool access instruction pattern(s). + ; + + (define_insn "reload_base" + [(parallel [(set (reg 13) (pc)) + (use (label_ref (match_operand 0 "" "")))])] + "" + "* + { + if (TARGET_64BIT) + return \"larl\\t13,%y0\"; + else + return \"basr\\t13,0\;ahi\\t13,%Y0\"; + }" + [(set_attr "op_type" "NN") + (set_attr "cycle" "2") + (set_attr "length" "8")]) + + (define_insn "ltorg" + [(parallel [(set (reg 13) (pc)) + (use (match_operand:SI 0 "const_int_operand" ""))])] + "" + "* + { + s390_dump_literal_pool (insn, operands[0]); + return \"0:\"; + }" + [(set_attr "op_type" "NN") + (set_attr "cycle" "n") + (set_attr "length" "4096")]) + + + ;; + ;; Peephole optimization patterns. + ;; + + (define_peephole + [(set (match_operand:SI 0 "memory_operand" "m") + (match_operand:SI 1 "register_operand" "d")) + (set (match_dup 1) + (match_dup 0))] + "" + "st\\t%1,%0") + + (define_peephole + [(set (match_operand:SI 0 "memory_operand" "m") + (match_operand:SI 1 "register_operand" "d")) + (set (match_dup 0) + (match_dup 1))] + "" + "st\\t%1,%0") + + (define_peephole + [(set (match_operand:SI 0 "register_operand" "") + (match_operand:SI 1 "register_operand" "")) + (parallel + [(set (match_dup 0) + (plus:SI (match_dup 0) + (match_operand:SI 2 "immediate_operand" ""))) + (clobber (reg:CC 33))])] + "(REGNO (operands[0]) == STACK_POINTER_REGNUM || + REGNO (operands[1]) == STACK_POINTER_REGNUM || + REGNO (operands[0]) == BASE_REGISTER || + REGNO (operands[1]) == BASE_REGISTER) && + INTVAL (operands[2]) > 0 && INTVAL (operands[2]) < 4096" + "la\\t%0,%c2(%1)") + + ; + ; peepholes for fast char instructions + ; + + ;(define_peephole + ; [(set (match_operand:QI 0 "register_operand" "d") + ; (match_operand:QI 1 "s_operand" "Q")) + ; (set (match_operand:SI 2 "register_operand" "0") + ; (zero_extend:SI (match_dup 0)))] + ; "REGNO(operands[0]) == REGNO(operands[2])" + ; "icm\\t%0,8,%1\;srl\\t%0,24") + + ;(define_peephole + ; [(set (match_operand:QI 0 "register_operand" "d") + ; (match_operand:QI 1 "s_operand" "Q")) + ; (set (match_operand:SI 2 "register_operand" "0") + ; (sign_extend:SI (match_dup 0)))] + ; "REGNO(operands[0]) == REGNO(operands[2])" + ; "icm\\t%0,8,%1\;sra\\t%0,24") + + (define_peephole + [(set (match_operand:QI 0 "register_operand" "d") + (match_operand:QI 1 "immediate_operand" "J")) + (set (match_operand:SI 2 "register_operand" "0" ) + (sign_extend:SI (match_dup 0) ) )] + "REGNO(operands[0]) == REGNO(operands[2])" + "lhi\\t%0,%h1") + + ; + ; peepholes for fast short instructions + ; + + ;(define_peephole + ; [(set (match_operand:HI 0 "register_operand" "d") + ; (match_operand:HI 1 "s_operand" "Q")) + ; (set (match_operand:SI 2 "register_operand" "0" ) + ; (zero_extend:SI (match_dup 0)))] + ; "REGNO(operands[0]) == REGNO(operands[2])" + ; "icm\\t%0,12,%1\;srl\\t%0,16") + + (define_peephole + [(set (match_operand:HI 0 "register_operand" "d") + (match_operand:HI 1 "memory_operand" "m")) + (set (match_operand:SI 2 "register_operand" "0" ) + (sign_extend:SI (match_dup 0)))] + "REGNO(operands[0]) == REGNO(operands[2])" + "lh\\t%0,%1") + + (define_peephole + [(set (match_operand:HI 0 "register_operand" "d") + (match_operand:HI 1 "immediate_operand" "K")) + (set (match_operand:SI 2 "register_operand" "0" ) + (sign_extend:SI (match_dup 0) ) )] + "REGNO(operands[0]) == REGNO(operands[2])" + "lhi\\t%0,%h1") + + ; + ; peepholes for divide instructions + ; + + (define_peephole + [(set (match_operand:DI 0 "register_operand" "d") + (match_operand:DI 1 "memory_operand" "m")) + (set (match_dup 0) + (lshiftrt:DI (match_dup 0) + (match_operand:SI 2 "immediate_operand" "J"))) + (set (match_dup 0) + (div:SI (match_dup 0) + (match_operand:SI 3 "nonimmediate_operand" "g"))) + (set (match_dup 1) + (match_dup 0))] + "" + "* + { + output_asm_insn (\"l\\t%0,%1\", operands); + output_asm_insn (\"srdl\\t%0,%b2\", operands); + + if (REG_P (operands[3])) + output_asm_insn (\"dr\\t%0,%3\", operands); + else + output_asm_insn (\"d\\t%0,%3\", operands); + + return \"st\\t%N0,%N1\"; + }") + + (define_peephole + [(set (match_operand:DI 0 "register_operand" "d") + (match_operand:DI 1 "memory_operand" "m")) + (set (match_dup 0) + (lshiftrt:DI (match_dup 0) + (match_operand:SI 2 "immediate_operand" "J"))) + (set (match_dup 0) + (mod:SI (match_dup 0) + (match_operand:SI 3 "nonimmediate_operand" "g"))) + (set (match_dup 1) + (match_dup 0))] + "" + "* + { + output_asm_insn (\"l\\t%0,%1\", operands); + output_asm_insn (\"srdl\\t%0,%b2\", operands); + + if (REG_P (operands[3])) + output_asm_insn (\"dr\\t%0,%3\", operands); + else + output_asm_insn (\"d\\t%0,%3\", operands); + + return \"st\\t%0,%1\"; + }") + diff -Nrc3pad gcc-3.0/gcc/config/s390/t-linux gcc-3.0.1/gcc/config/s390/t-linux *** gcc-3.0/gcc/config/s390/t-linux Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/config/s390/t-linux Fri Aug 3 11:50:12 2001 *************** *** 0 **** --- 1,6 ---- + # The crtbegin and crtend must not depend on a small GOT + CRTSTUFF_T_CFLAGS = -O2 -fPIC + + # Compile libgcc2.a with pic. + TARGET_LIBGCC2_CFLAGS = -fPIC -include $(srcdir)/config/s390/fixdfdi.h + diff -Nrc3pad gcc-3.0/gcc/config/s390/xm-s390.h gcc-3.0.1/gcc/config/s390/xm-s390.h *** gcc-3.0/gcc/config/s390/xm-s390.h Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/config/s390/xm-s390.h Fri Aug 3 11:50:12 2001 *************** *** 0 **** --- 1,41 ---- + /* Configuration for GNU C-compiler for S/390 + Copyright (C) 1999 Free Software Foundation, Inc. + Contributed by Hartmut Penner (hpenner@de.ibm.com). + + This file is part of GNU CC. + + GNU CC is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GNU CC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU CC; see the file COPYING. If not, write to + the Free Software Foundation, 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + + /* This describes the machine the compiler is hosted on. */ + + #define HOST_BITS_PER_CHAR 8 + #define HOST_BITS_PER_SHORT 16 + #define HOST_BITS_PER_INT 32 + #define HOST_BITS_PER_LONG 32 + #define HOST_BITS_PER_LONGLONG 64 + + #define HOST_WORDS_BIG_ENDIAN 1 + + /* Target machine dependencies. tm.h is a symbolic link to the actual + target specific file. */ + + #include "tm.h" + + /* Arguments to use with `exit'. */ + + #define SUCCESS_EXIT_CODE 0 + #define FATAL_EXIT_CODE 33 + diff -Nrc3pad gcc-3.0/gcc/config/s390/xm-s390x.h gcc-3.0.1/gcc/config/s390/xm-s390x.h *** gcc-3.0/gcc/config/s390/xm-s390x.h Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/config/s390/xm-s390x.h Fri Aug 3 11:50:12 2001 *************** *** 0 **** --- 1,41 ---- + /* Configuration for GNU C-compiler for S/390 + Copyright (C) 1999 Free Software Foundation, Inc. + Contributed by Hartmut Penner (hpenner@de.ibm.com). + + This file is part of GNU CC. + + GNU CC is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GNU CC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU CC; see the file COPYING. If not, write to + the Free Software Foundation, 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + + /* This describes the machine the compiler is hosted on. */ + + #define HOST_BITS_PER_CHAR 8 + #define HOST_BITS_PER_SHORT 16 + #define HOST_BITS_PER_INT 32 + #define HOST_BITS_PER_LONG 64 + #define HOST_BITS_PER_LONGLONG 64 + + #define HOST_WORDS_BIG_ENDIAN 1 + + /* Target machine dependencies. tm.h is a symbolic link to the actual + target specific file. */ + + #include "tm.h" + + /* Arguments to use with `exit'. */ + + #define SUCCESS_EXIT_CODE 0 + #define FATAL_EXIT_CODE 33 + diff -Nrc3pad gcc-3.0/gcc/config/sh/sh.c gcc-3.0.1/gcc/config/sh/sh.c *** gcc-3.0/gcc/config/sh/sh.c Sun Jun 3 17:21:00 2001 --- gcc-3.0.1/gcc/config/sh/sh.c Tue Jun 26 04:08:31 2001 *************** int code_for_indirect_jump_scratch = COD *** 43,48 **** --- 43,51 ---- #define MSW (TARGET_LITTLE_ENDIAN ? 1 : 0) #define LSW (TARGET_LITTLE_ENDIAN ? 0 : 1) + /* Set to 1 by expand_prologue() when the function is an interrupt handler. */ + int current_function_interrupt; + /* ??? The pragma interrupt support will not work for SH3. */ /* This is set by #pragma interrupt and #pragma trapa, and causes gcc to output code for the next function appropriate for an interrupt handler. */ *************** sh_expand_prologue () *** 4002,4007 **** --- 4005,4015 ---- int d, i; int live_regs_mask2; int save_flags = target_flags; + + current_function_interrupt + = lookup_attribute ("interrupt_handler", + DECL_MACHINE_ATTRIBUTES (current_function_decl)) + != NULL_TREE; /* We have pretend args if we had an object sent partially in registers and partially on the stack, e.g. a large structure. */ diff -Nrc3pad gcc-3.0/gcc/config/sh/sh.h gcc-3.0.1/gcc/config/sh/sh.h *** gcc-3.0/gcc/config/sh/sh.h Tue May 29 03:42:17 2001 --- gcc-3.0.1/gcc/config/sh/sh.h Tue Jun 26 04:08:32 2001 *************** extern enum mdep_reorg_phase_e mdep_reor *** 2298,2303 **** --- 2298,2307 ---- extern int pragma_interrupt; + /* Set when processing a function with interrupt attribute. */ + + extern int current_function_interrupt; + /* Set to an RTX containing the address of the stack to switch to for interrupt functions. */ extern struct rtx_def *sp_switch; diff -Nrc3pad gcc-3.0/gcc/config/sh/sh.md gcc-3.0.1/gcc/config/sh/sh.md *** gcc-3.0/gcc/config/sh/sh.md Sun Jun 3 17:21:00 2001 --- gcc-3.0.1/gcc/config/sh/sh.md Tue Jun 26 04:08:32 2001 *************** *** 547,553 **** (const_string "yes"))) (define_attr "interrupt_function" "no,yes" ! (const (symbol_ref "pragma_interrupt"))) (define_attr "in_delay_slot" "yes,no" (cond [(eq_attr "type" "cbranch") (const_string "no") --- 547,553 ---- (const_string "yes"))) (define_attr "interrupt_function" "no,yes" ! (const (symbol_ref "current_function_interrupt"))) (define_attr "in_delay_slot" "yes,no" (cond [(eq_attr "type" "cbranch") (const_string "no") *************** *** 577,583 **** (ior (and (eq_attr "interrupt_function" "no") (eq_attr "type" "!pload,prset")) (and (eq_attr "interrupt_function" "yes") ! (eq_attr "hit_stack" "no")))) (nil) (nil)]) ;; Since a call implicitly uses the PR register, we can't allow ;; a PR register store in a jsr delay slot. --- 577,585 ---- (ior (and (eq_attr "interrupt_function" "no") (eq_attr "type" "!pload,prset")) (and (eq_attr "interrupt_function" "yes") ! (ior ! (ne (symbol_ref "TARGET_SH3") (const_int 0)) ! (eq_attr "hit_stack" "no"))))) (nil) (nil)]) ;; Since a call implicitly uses the PR register, we can't allow ;; a PR register store in a jsr delay slot. diff -Nrc3pad gcc-3.0/gcc/config/sparc/openbsd.h gcc-3.0.1/gcc/config/sparc/openbsd.h *** gcc-3.0/gcc/config/sparc/openbsd.h Thu Nov 2 15:29:13 2000 --- gcc-3.0.1/gcc/config/sparc/openbsd.h Fri Jul 13 11:01:42 2001 *************** Boston, MA 02111-1307, USA. */ *** 64,68 **** configuration files... */ #define DWARF2_UNWIND_INFO 0 ! /* Default sparc.h does already define ASM_OUTPUT_MI_THUNK */ --- 64,69 ---- configuration files... */ #define DWARF2_UNWIND_INFO 0 ! #undef ASM_PREFERRED_EH_DATA_FORMAT + /* Default sparc.h does already define ASM_OUTPUT_MI_THUNK */ diff -Nrc3pad gcc-3.0/gcc/config/sparc/rtems.h gcc-3.0.1/gcc/config/sparc/rtems.h *** gcc-3.0/gcc/config/sparc/rtems.h Thu Nov 2 15:29:13 2000 --- gcc-3.0.1/gcc/config/sparc/rtems.h Tue Jul 24 18:54:05 2001 *************** Boston, MA 02111-1307, USA. */ *** 25,31 **** #undef CPP_PREDEFINES #define CPP_PREDEFINES "-Dsparc -D__GCC_NEW_VARARGS__ -Drtems -D__rtems__ \ ! -Asystem=rtems -Acpu=sparc -Amachine=sparc" /* Generate calls to memcpy, memcmp and memset. */ #ifndef TARGET_MEM_FUNCTIONS --- 25,31 ---- #undef CPP_PREDEFINES #define CPP_PREDEFINES "-Dsparc -D__GCC_NEW_VARARGS__ -Drtems -D__rtems__ \ ! -Asystem=rtems" /* Generate calls to memcpy, memcmp and memset. */ #ifndef TARGET_MEM_FUNCTIONS diff -Nrc3pad gcc-3.0/gcc/config/sparc/rtemself.h gcc-3.0.1/gcc/config/sparc/rtemself.h *** gcc-3.0/gcc/config/sparc/rtemself.h Mon Jan 1 05:19:20 2001 --- gcc-3.0.1/gcc/config/sparc/rtemself.h Tue Jul 24 18:54:05 2001 *************** *** 1,4 **** ! /* Definitions for rtems targeting a SPARC using a.out. Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc. Contributed by Joel Sherrill (joel@OARcorp.com). --- 1,4 ---- ! /* Definitions for rtems targeting a SPARC using ELF. Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc. Contributed by Joel Sherrill (joel@OARcorp.com). *************** Boston, MA 02111-1307, USA. */ *** 23,29 **** #undef CPP_PREDEFINES #define CPP_PREDEFINES "-Dsparc -D__GCC_NEW_VARARGS__ -Drtems -D__rtems__ \ ! -Asystem=rtems -Acpu=sparc -Amachine=sparc" /* Generate calls to memcpy, memcmp and memset. */ #ifndef TARGET_MEM_FUNCTIONS --- 23,29 ---- #undef CPP_PREDEFINES #define CPP_PREDEFINES "-Dsparc -D__GCC_NEW_VARARGS__ -Drtems -D__rtems__ \ ! -Asystem=rtems" /* Generate calls to memcpy, memcmp and memset. */ #ifndef TARGET_MEM_FUNCTIONS diff -Nrc3pad gcc-3.0/gcc/config/sparc/sparc.h gcc-3.0.1/gcc/config/sparc/sparc.h *** gcc-3.0/gcc/config/sparc/sparc.h Sun May 13 00:10:12 2001 --- gcc-3.0.1/gcc/config/sparc/sparc.h Tue Jul 24 18:54:05 2001 *************** Unrecognized value in TARGET_CPU_DEFAULT *** 223,228 **** --- 223,229 ---- /* Common CPP definitions used by CPP_SPEC amongst the various targets for handling -mcpu=xxx switches. */ #define CPP_CPU_SPEC "\ + %{msoft-float:-D_SOFT_FLOAT} \ %{mcypress:} \ %{msparclite:-D__sparclite__} \ %{mf930:-D__sparclite__} %{mf934:-D__sparclite__} \ diff -Nrc3pad gcc-3.0/gcc/config/sparc/sparc.md gcc-3.0.1/gcc/config/sparc/sparc.md *** gcc-3.0/gcc/config/sparc/sparc.md Sun May 13 00:10:12 2001 --- gcc-3.0.1/gcc/config/sparc/sparc.md Wed Jul 25 06:35:00 2001 *************** *** 8966,8974 **** #if 0 rtx chain = operands[0]; #endif ! rtx fp = operands[1]; rtx stack = operands[2]; ! rtx lab = operands[3]; rtx labreg; /* Trap instruction to flush all the register windows. */ --- 8966,8974 ---- #if 0 rtx chain = operands[0]; #endif ! rtx lab = operands[1]; rtx stack = operands[2]; ! rtx fp = operands[3]; rtx labreg; /* Trap instruction to flush all the register windows. */ diff -Nrc3pad gcc-3.0/gcc/config/sparc/t-openbsd gcc-3.0.1/gcc/config/sparc/t-openbsd *** gcc-3.0/gcc/config/sparc/t-openbsd Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/config/sparc/t-openbsd Fri Jul 13 11:01:42 2001 *************** *** 0 **** --- 1,5 ---- + # The native linker doesn't handle linking -fpic code with -fPIC code. Ugh. + # We cope by building both variants of libgcc. + MULTILIB_OPTIONS = fpic/fPIC + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib diff -Nrc3pad gcc-3.0/gcc/config/t-libgcc-pic gcc-3.0.1/gcc/config/t-libgcc-pic *** gcc-3.0/gcc/config/t-libgcc-pic Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/config/t-libgcc-pic Fri Jul 13 11:01:42 2001 *************** *** 0 **** --- 1,2 ---- + # Compile libgcc2.a with pic. + TARGET_LIBGCC2_CFLAGS = -fPIC diff -Nrc3pad gcc-3.0/gcc/config/v850/v850.c gcc-3.0.1/gcc/config/v850/v850.c *** gcc-3.0/gcc/config/v850/v850.c Sat May 12 13:32:52 2001 --- gcc-3.0.1/gcc/config/v850/v850.c Fri Jun 22 12:39:53 2001 *************** static void *** 2805,2811 **** v850_mark_machine_status (p) struct function * p; { ! ggc_mark_rtx (p->machine->ra_rtx); } static void --- 2805,2812 ---- v850_mark_machine_status (p) struct function * p; { ! if (p->machine) ! ggc_mark_rtx (p->machine->ra_rtx); } static void diff -Nrc3pad gcc-3.0/gcc/config.gcc gcc-3.0.1/gcc/config.gcc *** gcc-3.0/gcc/config.gcc Tue Jun 5 12:09:51 2001 --- gcc-3.0.1/gcc/config.gcc Mon Aug 13 08:34:14 2001 *************** case $machine in *** 287,293 **** ;; *-*-openbsd*) tm_file=${cpu_type}/openbsd.h ! tmake_file="t-libc-ok t-openbsd" # avoid surprises, always provide an xm-openbsd file xm_file=${cpu_type}/xm-openbsd.h # don't depend on processor x-fragments as well --- 287,293 ---- ;; *-*-openbsd*) tm_file=${cpu_type}/openbsd.h ! tmake_file="t-libc-ok t-openbsd t-libgcc-pic" # avoid surprises, always provide an xm-openbsd file xm_file=${cpu_type}/xm-openbsd.h # don't depend on processor x-fragments as well *************** arm*-*-rtems*) *** 545,551 **** if test x$enable_threads = xyes; then thread_file='rtems' fi - extra_parts="crtinit.o crtfini.o" ;; arc-*-elf*) extra_parts="crtinit.o crtfini.o" --- 545,550 ---- *************** i[34567]86-*-netbsd*) *** 1142,1147 **** --- 1141,1148 ---- use_collect2=yes ;; i[34567]86-*-openbsd*) + # needed to unconfuse gdb + tmake_file="t-libc-ok t-openbsd i386/t-openbsd" # we need collect2 until our bug is fixed... use_collect2=yes ;; *************** i960-wrs-vxworks*) *** 1610,1621 **** i960-*-coff*) tm_file="${tm_file} dbxcoff.h i960/i960-coff.h libgloss.h" tmake_file=i960/t-960bare - use_collect2=yes ;; i960-*-rtems) tmake_file="i960/t-960bare t-rtems" tm_file="${tm_file} dbxcoff.h i960/rtems.h" - use_collect2=yes if test x$enable_threads = xyes; then thread_file='rtems' fi --- 1611,1620 ---- *************** m68020-*-elf* | m68k-*-elf*) *** 2018,2023 **** --- 2017,2023 ---- xm_file=m68k/xm-m68kv.h tmake_file=m68k/t-m68kelf header_files=math-68881.h + extra_parts="crtbegin.o crtend.o" ;; m68k-*-lynxos*) if test x$gas = xyes *************** m68k*-*-netbsd*) *** 2039,2044 **** --- 2039,2046 ---- use_collect2=yes ;; m68k*-*-openbsd*) + # needed to unconfuse gdb + tmake_file="t-libc-ok t-openbsd m68k/t-openbsd" float_format=m68k # we need collect2 until our bug is fixed... use_collect2=yes *************** m68k-*-rtemself*|m68k-*-rtems*) *** 2114,2119 **** --- 2116,2122 ---- tm_file=m68k/rtemself.h extra_headers=math-68881.h float_format=m68k + extra_parts="crtbegin.o crtend.o" if test x$enable_threads = xyes; then thread_file='rtems' fi *************** rs6000-*-lynxos*) *** 2970,2975 **** --- 2973,3000 ---- xmake_file=rs6000/x-lynx use_collect2=yes ;; + s390-*-linux*) + tm_file="s390/s390.h linux.h s390/linux.h" + tmake_file="t-slibgcc-elf-ver t-linux s390/t-linux" + xmake_file=x-linux + extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o" + if test x$enable_threads = xyes; then + thread_file='posix' + fi + ;; + s390x-*-linux*) + tm_file="s390/s390.h linux.h s390/linux.h s390/linux64.h" + tm_p_file=s390/s390-protos.h + xm_file=s390/xm-s390x.h + md_file=s390/s390.md + out_file=s390/s390.c + tmake_file="t-slibgcc-elf-ver t-linux s390/t-linux" + xmake_file=x-linux + extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o" + if test x$enable_threads = xyes; then + thread_file='posix' + fi + ;; sh-*-elf*) tmake_file="sh/t-sh sh/t-elf" tm_file="sh/sh.h sh/elf.h" *************** sparc-*-netbsd*) *** 3030,3035 **** --- 3055,3062 ---- use_collect2=yes ;; sparc-*-openbsd*) + # needed to unconfuse gdb + tmake_file="t-libc-ok t-openbsd sparc/t-openbsd" # we need collect2 until our bug is fixed... use_collect2=yes ;; *************** powerpc*-*-* | rs6000-*-*) *** 3526,3532 **** | x601 | x602 | x603 | x603e | x604 | x604e | x620 \ | xec603e | x740 | x750 | x401 \ | x403 | x505 | x801 | x821 | x823 | x860) ! target_cpu_default2="\"$with_cpu\"" ;; xyes | xno) --- 3553,3559 ---- | x601 | x602 | x603 | x603e | x604 | x604e | x620 \ | xec603e | x740 | x750 | x401 \ | x403 | x505 | x801 | x821 | x823 | x860) ! target_cpu_default2="\\\"$with_cpu\\\"" ;; xyes | xno) diff -Nrc3pad gcc-3.0/gcc/config.in gcc-3.0.1/gcc/config.in *** gcc-3.0/gcc/config.in Sun Jun 17 12:49:45 2001 --- gcc-3.0.1/gcc/config.in Sun Aug 19 17:45:03 2001 *************** *** 147,155 **** /* Define if you have the gettimeofday function. */ #undef HAVE_GETTIMEOFDAY - /* Define if you have the iconv function. */ - #undef HAVE_ICONV - /* Define if you have the isascii function. */ #undef HAVE_ISASCII --- 147,152 ---- *************** *** 219,227 **** /* Define if you have the header file. */ #undef HAVE_FCNTL_H - /* Define if you have the header file. */ - #undef HAVE_ICONV_H - /* Define if you have the header file. */ #undef HAVE_LANGINFO_H --- 216,221 ---- *************** *** 347,352 **** --- 341,352 ---- /* Define if read-only mmap of a plain file works. */ #undef HAVE_MMAP_FILE + + /* Define if you have the iconv() function. */ + #undef HAVE_ICONV + + /* Define as const if the declaration of iconv() needs const. */ + #undef ICONV_CONST /* Define to 1 if we found this declaration otherwise define to 0. */ #undef HAVE_DECL_BCOPY diff -Nrc3pad gcc-3.0/gcc/configure gcc-3.0.1/gcc/configure *** gcc-3.0/gcc/configure Tue Jun 12 19:27:59 2001 --- gcc-3.0.1/gcc/configure Wed Aug 1 11:17:00 2001 *************** ac_help="$ac_help *** 55,60 **** --- 55,62 ---- ac_help="$ac_help --disable-shared don't provide a shared libgcc" ac_help="$ac_help + --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib" + ac_help="$ac_help --enable-nls use Native Language Support (default)" ac_help="$ac_help --disable-nls do not use Native Language Support" *************** program_suffix=NONE *** 105,111 **** program_transform_name=s,x,x, silent= site= - sitefile= srcdir= target=NONE verbose= --- 107,112 ---- *************** Configuration: *** 220,226 **** --help print this message --no-create do not create output files --quiet, --silent do not print \`checking...' messages - --site-file=FILE use FILE as the site file --version print the version of autoconf that created configure Directory and file names: --prefix=PREFIX install architecture-independent files in PREFIX --- 221,226 ---- *************** EOF *** 391,401 **** -site=* | --site=* | --sit=*) site="$ac_optarg" ;; - -site-file | --site-file | --site-fil | --site-fi | --site-f) - ac_prev=sitefile ;; - -site-file=* | --site-file=* | --site-fil=* | --site-fi=* | --site-f=*) - sitefile="$ac_optarg" ;; - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) --- 391,396 ---- *************** fi *** 561,576 **** srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` # Prefer explicitly selected file to automatically selected ones. ! if test -z "$sitefile"; then ! if test -z "$CONFIG_SITE"; then ! if test "x$prefix" != xNONE; then ! CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" ! else ! CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" ! fi fi - else - CONFIG_SITE="$sitefile" fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then --- 556,567 ---- srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` # Prefer explicitly selected file to automatically selected ones. ! if test -z "$CONFIG_SITE"; then ! if test "x$prefix" != xNONE; then ! CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" ! else ! CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then *************** copy=cp *** 625,631 **** # - two terminals occur directly after each other # - the path contains an element with a dot in it echo $ac_n "checking LIBRARY_PATH variable""... $ac_c" 1>&6 ! echo "configure:629: checking LIBRARY_PATH variable" >&5 case ${LIBRARY_PATH} in [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* ) library_path_setting="contains current directory" --- 616,622 ---- # - two terminals occur directly after each other # - the path contains an element with a dot in it echo $ac_n "checking LIBRARY_PATH variable""... $ac_c" 1>&6 ! echo "configure:620: checking LIBRARY_PATH variable" >&5 case ${LIBRARY_PATH} in [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* ) library_path_setting="contains current directory" *************** fi *** 650,656 **** # - two terminals occur directly after each other # - the path contains an element with a dot in it echo $ac_n "checking GCC_EXEC_PREFIX variable""... $ac_c" 1>&6 ! echo "configure:654: checking GCC_EXEC_PREFIX variable" >&5 case ${GCC_EXEC_PREFIX} in [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* ) gcc_exec_prefix_setting="contains current directory" --- 641,647 ---- # - two terminals occur directly after each other # - the path contains an element with a dot in it echo $ac_n "checking GCC_EXEC_PREFIX variable""... $ac_c" 1>&6 ! echo "configure:645: checking GCC_EXEC_PREFIX variable" >&5 case ${GCC_EXEC_PREFIX} in [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* ) gcc_exec_prefix_setting="contains current directory" *************** case x${enable_threads_flag} in *** 920,926 **** target_thread_file='' ;; xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \ ! xsolaris | xwin32 | xdce | xvxworks | xaix) target_thread_file=$enable_threads_flag ;; *) --- 911,917 ---- target_thread_file='' ;; xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \ ! xsolaris | xwin32 | xdce | xrtems| xvxworks | xaix) target_thread_file=$enable_threads_flag ;; *) *************** else { echo "configure: error: can not r *** 1023,1029 **** fi echo $ac_n "checking host system type""... $ac_c" 1>&6 ! echo "configure:1027: checking host system type" >&5 host_alias=$host case "$host_alias" in --- 1014,1020 ---- fi echo $ac_n "checking host system type""... $ac_c" 1>&6 ! echo "configure:1018: checking host system type" >&5 host_alias=$host case "$host_alias" in *************** host_os=`echo $host | sed 's/^\([^-]*\)- *** 1044,1050 **** echo "$ac_t""$host" 1>&6 echo $ac_n "checking target system type""... $ac_c" 1>&6 ! echo "configure:1048: checking target system type" >&5 target_alias=$target case "$target_alias" in --- 1035,1041 ---- echo "$ac_t""$host" 1>&6 echo $ac_n "checking target system type""... $ac_c" 1>&6 ! echo "configure:1039: checking target system type" >&5 target_alias=$target case "$target_alias" in *************** target_os=`echo $target | sed 's/^\([^-] *** 1062,1068 **** echo "$ac_t""$target" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6 ! echo "configure:1066: checking build system type" >&5 build_alias=$build case "$build_alias" in --- 1053,1059 ---- echo "$ac_t""$target" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6 ! echo "configure:1057: checking build system type" >&5 build_alias=$build case "$build_alias" in *************** test "$host_alias" != "$target_alias" && *** 1089,1095 **** # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1093: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1080,1086 ---- # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1084: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -z "$CC"; then *** 1119,1125 **** # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1123: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1110,1116 ---- # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1114: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1170,1176 **** # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1174: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1161,1167 ---- # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1165: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1202,1208 **** fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 ! echo "configure:1206: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. --- 1193,1199 ---- fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 ! echo "configure:1197: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. *************** cross_compiling=$ac_cv_prog_cc_cross *** 1213,1224 **** cat > conftest.$ac_ext << EOF ! #line 1217 "configure" #include "confdefs.h" main(){return(0);} EOF ! if { (eval echo configure:1222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then --- 1204,1215 ---- cat > conftest.$ac_ext << EOF ! #line 1208 "configure" #include "confdefs.h" main(){return(0);} EOF ! if { (eval echo configure:1213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then *************** if test $ac_cv_prog_cc_works = no; then *** 1244,1255 **** { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 ! echo "configure:1248: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ! echo "configure:1253: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1235,1246 ---- { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 ! echo "configure:1239: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ! echo "configure:1244: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1258,1264 **** yes; #endif EOF ! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1262: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no --- 1249,1255 ---- yes; #endif EOF ! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1253: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no *************** ac_test_CFLAGS="${CFLAGS+set}" *** 1277,1283 **** ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ! echo "configure:1281: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1268,1274 ---- ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ! echo "configure:1272: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1310,1319 **** if test "x$CC" != xcc; then echo $ac_n "checking whether $CC and cc understand -c and -o together""... $ac_c" 1>&6 ! echo "configure:1314: checking whether $CC and cc understand -c and -o together" >&5 else echo $ac_n "checking whether cc understands -c and -o together""... $ac_c" 1>&6 ! echo "configure:1317: checking whether cc understands -c and -o together" >&5 fi set dummy $CC; ac_cc="`echo $2 | sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`" --- 1301,1310 ---- if test "x$CC" != xcc; then echo $ac_n "checking whether $CC and cc understand -c and -o together""... $ac_c" 1>&6 ! echo "configure:1305: checking whether $CC and cc understand -c and -o together" >&5 else echo $ac_n "checking whether cc understands -c and -o together""... $ac_c" 1>&6 ! echo "configure:1308: checking whether cc understands -c and -o together" >&5 fi set dummy $CC; ac_cc="`echo $2 | sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`" *************** else *** 1325,1340 **** # We do the test twice because some compilers refuse to overwrite an # existing .o file with -o, though they will create one. ac_try='${CC-cc} -c conftest.c -o conftest.o 1>&5' ! if { (eval echo configure:1329: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && ! test -f conftest.o && { (eval echo configure:1330: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; then eval ac_cv_prog_cc_${ac_cc}_c_o=yes if test "x$CC" != xcc; then # Test first that cc exists at all. ! if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:1335: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then ac_try='cc -c conftest.c -o conftest.o 1>&5' ! if { (eval echo configure:1337: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && ! test -f conftest.o && { (eval echo configure:1338: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; then # cc works too. : --- 1316,1331 ---- # We do the test twice because some compilers refuse to overwrite an # existing .o file with -o, though they will create one. ac_try='${CC-cc} -c conftest.c -o conftest.o 1>&5' ! if { (eval echo configure:1320: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && ! test -f conftest.o && { (eval echo configure:1321: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; then eval ac_cv_prog_cc_${ac_cc}_c_o=yes if test "x$CC" != xcc; then # Test first that cc exists at all. ! if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:1326: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then ac_try='cc -c conftest.c -o conftest.o 1>&5' ! if { (eval echo configure:1328: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && ! test -f conftest.o && { (eval echo configure:1329: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; then # cc works too. : *************** fi *** 1370,1376 **** echo $ac_n "checking for long double""... $ac_c" 1>&6 ! echo "configure:1374: checking for long double" >&5 if eval "test \"`echo '$''{'gcc_cv_c_long_double'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1361,1367 ---- echo $ac_n "checking for long double""... $ac_c" 1>&6 ! echo "configure:1365: checking for long double" >&5 if eval "test \"`echo '$''{'gcc_cv_c_long_double'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1378,1384 **** gcc_cv_c_long_double=yes else cat > conftest.$ac_ext < conftest.$ac_ext <= sizeof(double)):; ; return 0; } EOF ! if { (eval echo configure:1392: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gcc_cv_c_long_double=yes else --- 1379,1385 ---- switch (0) case 0: case (sizeof(long double) >= sizeof(double)):; ; return 0; } EOF ! if { (eval echo configure:1383: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gcc_cv_c_long_double=yes else *************** EOF *** 1410,1428 **** fi echo $ac_n "checking for built-in _Bool""... $ac_c" 1>&6 ! echo "configure:1414: checking for built-in _Bool" >&5 if eval "test \"`echo '$''{'gcc_cv_c__bool'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gcc_cv_c__bool=yes else --- 1401,1419 ---- fi echo $ac_n "checking for built-in _Bool""... $ac_c" 1>&6 ! echo "configure:1405: checking for built-in _Bool" >&5 if eval "test \"`echo '$''{'gcc_cv_c__bool'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gcc_cv_c__bool=yes else *************** fi *** 1445,1465 **** echo $ac_n "checking whether ${CC-cc} accepts -Wno-long-long""... $ac_c" 1>&6 ! echo "configure:1449: checking whether ${CC-cc} accepts -Wno-long-long" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_no_long_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else save_CFLAGS="$CFLAGS" CFLAGS="-Wno-long-long" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_prog_cc_no_long_long=yes else --- 1436,1456 ---- echo $ac_n "checking whether ${CC-cc} accepts -Wno-long-long""... $ac_c" 1>&6 ! echo "configure:1440: checking whether ${CC-cc} accepts -Wno-long-long" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_no_long_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else save_CFLAGS="$CFLAGS" CFLAGS="-Wno-long-long" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_prog_cc_no_long_long=yes else *************** esac *** 1503,1509 **** echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 ! echo "configure:1507: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 1494,1500 ---- echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 ! echo "configure:1498: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** fi *** 1531,1537 **** echo $ac_n "checking whether a default assembler was specified""... $ac_c" 1>&6 ! echo "configure:1535: checking whether a default assembler was specified" >&5 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then if test x"$gas_flag" = x"no"; then echo "$ac_t""yes ($DEFAULT_ASSEMBLER)" 1>&6 --- 1522,1528 ---- echo $ac_n "checking whether a default assembler was specified""... $ac_c" 1>&6 ! echo "configure:1526: checking whether a default assembler was specified" >&5 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then if test x"$gas_flag" = x"no"; then echo "$ac_t""yes ($DEFAULT_ASSEMBLER)" 1>&6 *************** else *** 1543,1549 **** fi echo $ac_n "checking whether a default linker was specified""... $ac_c" 1>&6 ! echo "configure:1547: checking whether a default linker was specified" >&5 if test x"${DEFAULT_LINKER+set}" = x"set"; then if test x"$gnu_ld_flag" = x"no"; then echo "$ac_t""yes ($DEFAULT_LINKER)" 1>&6 --- 1534,1540 ---- fi echo $ac_n "checking whether a default linker was specified""... $ac_c" 1>&6 ! echo "configure:1538: checking whether a default linker was specified" >&5 if test x"${DEFAULT_LINKER+set}" = x"set"; then if test x"$gnu_ld_flag" = x"no"; then echo "$ac_t""yes ($DEFAULT_LINKER)" 1>&6 *************** else *** 1555,1566 **** fi echo $ac_n "checking for GNU C library""... $ac_c" 1>&6 ! echo "configure:1559: checking for GNU C library" >&5 if eval "test \"`echo '$''{'gcc_cv_glibc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { --- 1546,1557 ---- fi echo $ac_n "checking for GNU C library""... $ac_c" 1>&6 ! echo "configure:1550: checking for GNU C library" >&5 if eval "test \"`echo '$''{'gcc_cv_glibc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { *************** int main() { *** 1570,1576 **** #endif ; return 0; } EOF ! if { (eval echo configure:1574: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gcc_cv_glibc=yes else --- 1561,1567 ---- #endif ; return 0; } EOF ! if { (eval echo configure:1565: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gcc_cv_glibc=yes else *************** EOF *** 1591,1611 **** fi echo $ac_n "checking for inline""... $ac_c" 1>&6 ! echo "configure:1595: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else --- 1582,1602 ---- fi echo $ac_n "checking for inline""... $ac_c" 1>&6 ! echo "configure:1586: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else *************** do *** 1637,1643 **** # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1641: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1628,1634 ---- # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1632: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** test -n "$AWK" && break *** 1667,1673 **** done echo $ac_n "checking whether ln works""... $ac_c" 1>&6 ! echo "configure:1671: checking whether ln works" >&5 if eval "test \"`echo '$''{'gcc_cv_prog_LN'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1658,1664 ---- done echo $ac_n "checking whether ln works""... $ac_c" 1>&6 ! echo "configure:1662: checking whether ln works" >&5 if eval "test \"`echo '$''{'gcc_cv_prog_LN'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1699,1705 **** fi echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 ! echo "configure:1703: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'gcc_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1690,1696 ---- fi echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 ! echo "configure:1694: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'gcc_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1731,1749 **** fi echo $ac_n "checking for volatile""... $ac_c" 1>&6 ! echo "configure:1735: checking for volatile" >&5 if eval "test \"`echo '$''{'gcc_cv_c_volatile'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gcc_cv_c_volatile=yes else --- 1722,1740 ---- fi echo $ac_n "checking for volatile""... $ac_c" 1>&6 ! echo "configure:1726: checking for volatile" >&5 if eval "test \"`echo '$''{'gcc_cv_c_volatile'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gcc_cv_c_volatile=yes else *************** fi *** 1766,1772 **** # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1770: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1757,1763 ---- # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1761: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1804,1810 **** # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:1808: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 1795,1801 ---- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:1799: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** test -z "$INSTALL_DATA" && INSTALL_DATA= *** 1855,1861 **** echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 ! echo "configure:1859: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= --- 1846,1852 ---- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 ! echo "configure:1850: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= *************** else *** 1870,1882 **** # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1880: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : --- 1861,1873 ---- # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1871: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : *************** else *** 1887,1899 **** rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1897: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : --- 1878,1890 ---- rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1888: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : *************** else *** 1904,1916 **** rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1914: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : --- 1895,1907 ---- rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1905: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : *************** fi *** 1935,1946 **** echo "$ac_t""$CPP" 1>&6 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 ! echo "configure:1939: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include --- 1926,1937 ---- echo "$ac_t""$CPP" 1>&6 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 ! echo "configure:1930: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include *************** else *** 1948,1954 **** #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1952: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 1939,1945 ---- #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1943: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** rm -f conftest* *** 1965,1971 **** if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF --- 1956,1962 ---- if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF *************** fi *** 1983,1989 **** if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF --- 1974,1980 ---- if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF *************** if test "$cross_compiling" = yes; then *** 2004,2010 **** : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') --- 1995,2001 ---- : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') *************** if (XOR (islower (i), ISLOWER (i)) || to *** 2015,2021 **** exit (0); } EOF ! if { (eval echo configure:2019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else --- 2006,2012 ---- exit (0); } EOF ! if { (eval echo configure:2010: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else *************** EOF *** 2039,2050 **** fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 ! echo "configure:2043: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include --- 2030,2041 ---- fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 ! echo "configure:2034: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include *************** int main() { *** 2053,2059 **** struct tm *tp; ; return 0; } EOF ! if { (eval echo configure:2057: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else --- 2044,2050 ---- struct tm *tp; ; return 0; } EOF ! if { (eval echo configure:2048: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else *************** EOF *** 2074,2092 **** fi echo $ac_n "checking for working stdbool.h""... $ac_c" 1>&6 ! echo "configure:2078: checking for working stdbool.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdbool_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { bool foo = false; ; return 0; } EOF ! if { (eval echo configure:2090: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_stdbool_h=yes else --- 2065,2083 ---- fi echo $ac_n "checking for working stdbool.h""... $ac_c" 1>&6 ! echo "configure:2069: checking for working stdbool.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdbool_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { bool foo = false; ; return 0; } EOF ! if { (eval echo configure:2081: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_stdbool_h=yes else *************** EOF *** 2107,2118 **** fi echo $ac_n "checking whether string.h and strings.h may both be included""... $ac_c" 1>&6 ! echo "configure:2111: checking whether string.h and strings.h may both be included" >&5 if eval "test \"`echo '$''{'gcc_cv_header_string'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include --- 2098,2109 ---- fi echo $ac_n "checking whether string.h and strings.h may both be included""... $ac_c" 1>&6 ! echo "configure:2102: checking whether string.h and strings.h may both be included" >&5 if eval "test \"`echo '$''{'gcc_cv_header_string'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include *************** int main() { *** 2120,2126 **** ; return 0; } EOF ! if { (eval echo configure:2124: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gcc_cv_header_string=yes else --- 2111,2117 ---- ; return 0; } EOF ! if { (eval echo configure:2115: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gcc_cv_header_string=yes else *************** EOF *** 2141,2152 **** fi echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 ! echo "configure:2145: checking for sys/wait.h that is POSIX.1 compatible" >&5 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include --- 2132,2143 ---- fi echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 ! echo "configure:2136: checking for sys/wait.h that is POSIX.1 compatible" >&5 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include *************** wait (&s); *** 2162,2168 **** s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF ! if { (eval echo configure:2166: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else --- 2153,2159 ---- s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF ! if { (eval echo configure:2157: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else *************** fi *** 2185,2205 **** for ac_hdr in limits.h stddef.h string.h strings.h stdlib.h time.h \ fcntl.h unistd.h stab.h sys/file.h sys/time.h \ sys/resource.h sys/param.h sys/times.h sys/stat.h \ ! direct.h malloc.h langinfo.h iconv.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:2193: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2203: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 2176,2196 ---- for ac_hdr in limits.h stddef.h string.h strings.h stdlib.h time.h \ fcntl.h unistd.h stab.h sys/file.h sys/time.h \ sys/resource.h sys/param.h sys/times.h sys/stat.h \ ! direct.h malloc.h langinfo.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:2184: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2194: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** done *** 2229,2245 **** # Check for thread headers. ac_safe=`echo "thread.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for thread.h""... $ac_c" 1>&6 ! echo "configure:2233: checking for thread.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2243: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 2220,2236 ---- # Check for thread headers. ac_safe=`echo "thread.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for thread.h""... $ac_c" 1>&6 ! echo "configure:2224: checking for thread.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2234: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** fi *** 2263,2279 **** ac_safe=`echo "pthread.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for pthread.h""... $ac_c" 1>&6 ! echo "configure:2267: checking for pthread.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2277: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 2254,2270 ---- ac_safe=`echo "pthread.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for pthread.h""... $ac_c" 1>&6 ! echo "configure:2258: checking for pthread.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2268: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** fi *** 2300,2306 **** # Extract the first word of "gnatbind", so it can be a program name with args. set dummy gnatbind; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2304: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gnat'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2291,2297 ---- # Extract the first word of "gnatbind", so it can be a program name with args. set dummy gnatbind; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2295: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gnat'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 2332,2338 **** # Extract the first word of "mktemp", so it can be a program name with args. set dummy mktemp; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2336: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_have_mktemp_command'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2323,2329 ---- # Extract the first word of "mktemp", so it can be a program name with args. set dummy mktemp; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2327: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_have_mktemp_command'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 2371,2377 **** # Extract the first word of "makeinfo", so it can be a program name with args. set dummy makeinfo; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2375: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2362,2368 ---- # Extract the first word of "makeinfo", so it can be a program name with args. set dummy makeinfo; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2366: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 2400,2412 **** if test -n "$MAKEINFO"; then # Found it, now check the version. echo $ac_n "checking for modern makeinfo""... $ac_c" 1>&6 ! echo "configure:2404: checking for modern makeinfo" >&5 if eval "test \"`echo '$''{'gcc_cv_prog_makeinfo_modern'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'` ! echo "configure:2410: version of makeinfo is $ac_prog_version" >&5 case $ac_prog_version in '') gcc_cv_prog_makeinfo_modern=no;; 4.*) --- 2391,2403 ---- if test -n "$MAKEINFO"; then # Found it, now check the version. echo $ac_n "checking for modern makeinfo""... $ac_c" 1>&6 ! echo "configure:2395: checking for modern makeinfo" >&5 if eval "test \"`echo '$''{'gcc_cv_prog_makeinfo_modern'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'` ! echo "configure:2401: version of makeinfo is $ac_prog_version" >&5 case $ac_prog_version in '') gcc_cv_prog_makeinfo_modern=no;; 4.*) *************** fi *** 2434,2440 **** # Is pod2man recent enough to regenerate manpages? echo $ac_n "checking for recent Pod::Man""... $ac_c" 1>&6 ! echo "configure:2438: checking for recent Pod::Man" >&5 if perl -e 'use 1.10 Pod::Man' >/dev/null 2>&1; then echo "$ac_t""yes" 1>&6 GENERATED_MANPAGES=generated-manpages --- 2425,2431 ---- # Is pod2man recent enough to regenerate manpages? echo $ac_n "checking for recent Pod::Man""... $ac_c" 1>&6 ! echo "configure:2429: checking for recent Pod::Man" >&5 if perl -e 'use 1.10 Pod::Man' >/dev/null 2>&1; then echo "$ac_t""yes" 1>&6 GENERATED_MANPAGES=generated-manpages *************** else *** 2450,2456 **** # Extract the first word of "flex", so it can be a program name with args. set dummy flex; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2454: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2441,2447 ---- # Extract the first word of "flex", so it can be a program name with args. set dummy flex; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2445: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 2487,2493 **** # Extract the first word of "bison", so it can be a program name with args. set dummy bison; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2491: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2478,2484 ---- # Extract the first word of "bison", so it can be a program name with args. set dummy bison; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2482: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 2521,2532 **** echo $ac_n "checking for preprocessor stringizing operator""... $ac_c" 1>&6 ! echo "configure:2525: checking for preprocessor stringizing operator" >&5 if eval "test \"`echo '$''{'ac_cv_c_stringize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:2516: checking for preprocessor stringizing operator" >&5 if eval "test \"`echo '$''{'ac_cv_c_stringize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 *** 2559,2570 **** # Use only if it exists, # doesn't clash with , and declares intmax_t. echo $ac_n "checking for inttypes.h""... $ac_c" 1>&6 ! echo "configure:2563: checking for inttypes.h" >&5 if eval "test \"`echo '$''{'gcc_cv_header_inttypes_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include --- 2550,2561 ---- # Use only if it exists, # doesn't clash with , and declares intmax_t. echo $ac_n "checking for inttypes.h""... $ac_c" 1>&6 ! echo "configure:2554: checking for inttypes.h" >&5 if eval "test \"`echo '$''{'gcc_cv_header_inttypes_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include *************** int main() { *** 2572,2578 **** intmax_t i = -1; ; return 0; } EOF ! if { (eval echo configure:2576: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gcc_cv_header_inttypes_h=yes else --- 2563,2569 ---- intmax_t i = -1; ; return 0; } EOF ! if { (eval echo configure:2567: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gcc_cv_header_inttypes_h=yes else *************** fi *** 2597,2603 **** # be either signed or unsigned. # echo $ac_n "checking for unsigned enumerated bitfields""... $ac_c" 1>&6 ! echo "configure:2601: checking for unsigned enumerated bitfields" >&5 if eval "test \"`echo '$''{'gcc_cv_enum_bf_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2588,2594 ---- # be either signed or unsigned. # echo $ac_n "checking for unsigned enumerated bitfields""... $ac_c" 1>&6 ! echo "configure:2592: checking for unsigned enumerated bitfields" >&5 if eval "test \"`echo '$''{'gcc_cv_enum_bf_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 2605,2611 **** gcc_cv_enum_bf_unsigned=yes else cat > conftest.$ac_ext < enum t { BLAH = 128 } ; --- 2596,2602 ---- gcc_cv_enum_bf_unsigned=yes else cat > conftest.$ac_ext < enum t { BLAH = 128 } ; *************** int main(void) *** 2618,2624 **** } EOF ! if { (eval echo configure:2622: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then gcc_cv_enum_bf_unsigned=yes else --- 2609,2615 ---- } EOF ! if { (eval echo configure:2613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then gcc_cv_enum_bf_unsigned=yes else *************** fi *** 2643,2657 **** for ac_func in strtoul bsearch putenv popen bcopy \ strchr strrchr kill getrlimit setrlimit atoll atoq \ sysconf isascii gettimeofday strsignal putc_unlocked fputc_unlocked \ ! fputs_unlocked getrusage iconv nl_langinfo lstat do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:2650: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:2641: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 2665,2671 ---- ; return 0; } EOF ! if { (eval echo configure:2669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 2700,2711 **** echo $ac_n "checking for ssize_t""... $ac_c" 1>&6 ! echo "configure:2704: checking for ssize_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS --- 2691,2702 ---- echo $ac_n "checking for ssize_t""... $ac_c" 1>&6 ! echo "configure:2695: checking for ssize_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS *************** fi *** 2736,2747 **** # Try to determine the array type of the second argument of getgroups # for the target system (int or gid_t). echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 ! echo "configure:2740: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF --- 2727,2738 ---- # Try to determine the array type of the second argument of getgroups # for the target system (int or gid_t). echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 ! echo "configure:2731: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF *************** EOF *** 2770,2776 **** fi echo $ac_n "checking type of array argument to getgroups""... $ac_c" 1>&6 ! echo "configure:2774: checking type of array argument to getgroups" >&5 if eval "test \"`echo '$''{'ac_cv_type_getgroups'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2761,2767 ---- fi echo $ac_n "checking type of array argument to getgroups""... $ac_c" 1>&6 ! echo "configure:2765: checking type of array argument to getgroups" >&5 if eval "test \"`echo '$''{'ac_cv_type_getgroups'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 2778,2784 **** ac_cv_type_getgroups=cross else cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_type_getgroups=gid_t else --- 2794,2800 ---- } EOF ! if { (eval echo configure:2798: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_type_getgroups=gid_t else *************** fi *** 2817,2823 **** if test $ac_cv_type_getgroups = cross; then cat > conftest.$ac_ext < EOF --- 2808,2814 ---- if test $ac_cv_type_getgroups = cross; then cat > conftest.$ac_ext < EOF *************** fi *** 2858,2869 **** echo $ac_n "checking for vprintf""... $ac_c" 1>&6 ! echo "configure:2862: checking for vprintf" >&5 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:2853: checking for vprintf" >&5 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_vprintf=yes" else --- 2877,2883 ---- ; return 0; } EOF ! if { (eval echo configure:2881: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_vprintf=yes" else *************** fi *** 2910,2921 **** if test "$ac_cv_func_vprintf" != yes; then echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 ! echo "configure:2914: checking for _doprnt" >&5 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:2905: checking for _doprnt" >&5 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func__doprnt=yes" else --- 2929,2935 ---- ; return 0; } EOF ! if { (eval echo configure:2933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func__doprnt=yes" else *************** fi *** 2976,2987 **** for ac_func in strstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:2980: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:2971: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 2995,3001 ---- ; return 0; } EOF ! if { (eval echo configure:2999: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 3031,3037 **** echo $ac_n "checking whether the printf functions support %p""... $ac_c" 1>&6 ! echo "configure:3035: checking whether the printf functions support %p" >&5 if eval "test \"`echo '$''{'gcc_cv_func_printf_ptr'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 3022,3028 ---- echo $ac_n "checking whether the printf functions support %p""... $ac_c" 1>&6 ! echo "configure:3026: checking whether the printf functions support %p" >&5 if eval "test \"`echo '$''{'gcc_cv_func_printf_ptr'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 3039,3045 **** gcc_cv_func_printf_ptr=no else cat > conftest.$ac_ext < --- 3030,3036 ---- gcc_cv_func_printf_ptr=no else cat > conftest.$ac_ext < *************** int main() *** 3052,3058 **** return (p != q); } EOF ! if { (eval echo configure:3056: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then gcc_cv_func_printf_ptr=yes else --- 3043,3049 ---- return (p != q); } EOF ! if { (eval echo configure:3047: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then gcc_cv_func_printf_ptr=yes else *************** case "${host}" in *** 3084,3095 **** ;; esac echo $ac_n "checking for pid_t""... $ac_c" 1>&6 ! echo "configure:3088: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS --- 3075,3086 ---- ;; esac echo $ac_n "checking for pid_t""... $ac_c" 1>&6 ! echo "configure:3079: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS *************** fi *** 3118,3134 **** ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for vfork.h""... $ac_c" 1>&6 ! echo "configure:3122: checking for vfork.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:3132: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 3109,3125 ---- ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for vfork.h""... $ac_c" 1>&6 ! echo "configure:3113: checking for vfork.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:3123: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** else *** 3153,3170 **** fi echo $ac_n "checking for working vfork""... $ac_c" 1>&6 ! echo "configure:3157: checking for working vfork" >&5 if eval "test \"`echo '$''{'ac_cv_func_vfork_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then echo $ac_n "checking for vfork""... $ac_c" 1>&6 ! echo "configure:3163: checking for vfork" >&5 if eval "test \"`echo '$''{'ac_cv_func_vfork'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:3148: checking for working vfork" >&5 if eval "test \"`echo '$''{'ac_cv_func_vfork_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then echo $ac_n "checking for vfork""... $ac_c" 1>&6 ! echo "configure:3154: checking for vfork" >&5 if eval "test \"`echo '$''{'ac_cv_func_vfork'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_vfork=yes" else --- 3178,3184 ---- ; return 0; } EOF ! if { (eval echo configure:3182: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_vfork=yes" else *************** fi *** 3209,3215 **** ac_cv_func_vfork_works=$ac_cv_func_vfork else cat > conftest.$ac_ext < --- 3200,3206 ---- ac_cv_func_vfork_works=$ac_cv_func_vfork else cat > conftest.$ac_ext < *************** main() { *** 3304,3310 **** } } EOF ! if { (eval echo configure:3308: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_vfork_works=yes else --- 3295,3301 ---- } } EOF ! if { (eval echo configure:3299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_vfork_works=yes else *************** fi *** 3329,3340 **** for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:3333: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:3324: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 3348,3354 ---- ; return 0; } EOF ! if { (eval echo configure:3352: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** main () *** 3628,3634 **** EOF echo $ac_n "checking for working mmap from /dev/zero""... $ac_c" 1>&6 ! echo "configure:3632: checking for working mmap from /dev/zero" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_dev_zero'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 3619,3625 ---- EOF echo $ac_n "checking for working mmap from /dev/zero""... $ac_c" 1>&6 ! echo "configure:3623: checking for working mmap from /dev/zero" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_dev_zero'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 3644,3654 **** esac else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_dev_zero=yes else --- 3635,3645 ---- esac else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_dev_zero=yes else *************** EOF *** 3675,3681 **** fi echo $ac_n "checking for working mmap with MAP_ANON(YMOUS)""... $ac_c" 1>&6 ! echo "configure:3679: checking for working mmap with MAP_ANON(YMOUS)" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_anon'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 3666,3672 ---- fi echo $ac_n "checking for working mmap with MAP_ANON(YMOUS)""... $ac_c" 1>&6 ! echo "configure:3670: checking for working mmap with MAP_ANON(YMOUS)" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_anon'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 3685,3696 **** ac_cv_func_mmap_anon=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_anon=yes else --- 3676,3687 ---- ac_cv_func_mmap_anon=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_anon=yes else *************** fi *** 3718,3724 **** rm -f ct-mmap.inc echo $ac_n "checking for working mmap of a file""... $ac_c" 1>&6 ! echo "configure:3722: checking for working mmap of a file" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_file'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 3709,3715 ---- rm -f ct-mmap.inc echo $ac_n "checking for working mmap of a file""... $ac_c" 1>&6 ! echo "configure:3713: checking for working mmap of a file" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_file'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test "$cross_compiling" = yes; then *** 3733,3739 **** ac_cv_func_mmap_file=no else cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_file=yes else --- 3761,3767 ---- exit(0); } EOF ! if { (eval echo configure:3765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_file=yes else *************** EOF *** 3793,3798 **** --- 3784,3918 ---- fi + + + # Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. + if test "${with_libiconv_prefix+set}" = set; then + withval="$with_libiconv_prefix" + + for dir in `echo "$withval" | tr : ' '`; do + if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi + if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi + done + + fi + + + echo $ac_n "checking for iconv""... $ac_c" 1>&6 + echo "configure:3803: checking for iconv" >&5 + if eval "test \"`echo '$''{'am_cv_func_iconv'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat > conftest.$ac_ext < + #include + int main() { + iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; return 0; } + EOF + if { (eval echo configure:3821: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + am_cv_func_iconv=yes + else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS -liconv" + cat > conftest.$ac_ext < + #include + int main() { + iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; return 0; } + EOF + if { (eval echo configure:3843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + am_cv_lib_iconv=yes + am_cv_func_iconv=yes + else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* + LIBS="$am_save_LIBS" + fi + + fi + + echo "$ac_t""$am_cv_func_iconv" 1>&6 + if test "$am_cv_func_iconv" = yes; then + cat >> confdefs.h <<\EOF + #define HAVE_ICONV 1 + EOF + + echo $ac_n "checking for iconv declaration""... $ac_c" 1>&6 + echo "configure:3864: checking for iconv declaration" >&5 + if eval "test \"`echo '$''{'am_cv_proto_iconv'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + + cat > conftest.$ac_ext < + #include + extern + #ifdef __cplusplus + "C" + #endif + #if defined(__STDC__) || defined(__cplusplus) + size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); + #else + size_t iconv(); + #endif + + int main() { + + ; return 0; } + EOF + if { (eval echo configure:3889: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + am_cv_proto_iconv_arg1="" + else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + am_cv_proto_iconv_arg1="const" + fi + rm -f conftest* + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" + fi + + am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + echo "$ac_t""${ac_t:- + }$am_cv_proto_iconv" 1>&6 + cat >> confdefs.h <&6 ! echo "configure:3807: checking whether $ac_func is declared" >&5 if eval "test \"`echo '$''{'gcc_cv_have_decl_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:3927: checking whether $ac_func is declared" >&5 if eval "test \"`echo '$''{'gcc_cv_have_decl_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "gcc_cv_have_decl_$ac_func=yes" else --- 3942,3948 ---- #endif ; return 0; } EOF ! if { (eval echo configure:3946: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "gcc_cv_have_decl_$ac_func=yes" else *************** for ac_func in getrlimit setrlimit getru *** 3915,3926 **** do ac_tr_decl=HAVE_DECL_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` echo $ac_n "checking whether $ac_func is declared""... $ac_c" 1>&6 ! echo "configure:3919: checking whether $ac_func is declared" >&5 if eval "test \"`echo '$''{'gcc_cv_have_decl_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4039: checking whether $ac_func is declared" >&5 if eval "test \"`echo '$''{'gcc_cv_have_decl_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "gcc_cv_have_decl_$ac_func=yes" else --- 4058,4064 ---- #endif ; return 0; } EOF ! if { (eval echo configure:4062: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "gcc_cv_have_decl_$ac_func=yes" else *************** CFLAGS="$saved_CFLAGS" *** 3981,3992 **** # mkdir takes a single argument on some systems. echo $ac_n "checking if mkdir takes one argument""... $ac_c" 1>&6 ! echo "configure:3985: checking if mkdir takes one argument" >&5 if eval "test \"`echo '$''{'gcc_cv_mkdir_takes_one_arg'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < --- 4101,4112 ---- # mkdir takes a single argument on some systems. echo $ac_n "checking if mkdir takes one argument""... $ac_c" 1>&6 ! echo "configure:4105: checking if mkdir takes one argument" >&5 if eval "test \"`echo '$''{'gcc_cv_mkdir_takes_one_arg'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < *************** int main() { *** 4003,4009 **** mkdir ("foo", 0); ; return 0; } EOF ! if { (eval echo configure:4007: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gcc_cv_mkdir_takes_one_arg=no else --- 4123,4129 ---- mkdir ("foo", 0); ; return 0; } EOF ! if { (eval echo configure:4127: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gcc_cv_mkdir_takes_one_arg=no else *************** fi *** 4293,4299 **** echo $ac_n "checking for strerror in -lcposix""... $ac_c" 1>&6 ! echo "configure:4297: checking for strerror in -lcposix" >&5 ac_lib_var=`echo cposix'_'strerror | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 4413,4419 ---- echo $ac_n "checking for strerror in -lcposix""... $ac_c" 1>&6 ! echo "configure:4417: checking for strerror in -lcposix" >&5 ac_lib_var=`echo cposix'_'strerror | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 4301,4307 **** ac_save_LIBS="$LIBS" LIBS="-lcposix $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 4432,4438 ---- strerror() ; return 0; } EOF ! if { (eval echo configure:4436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** fi *** 4335,4346 **** echo $ac_n "checking for working const""... $ac_c" 1>&6 ! echo "configure:4339: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4459: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else --- 4509,4515 ---- ; return 0; } EOF ! if { (eval echo configure:4513: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else *************** EOF *** 4410,4421 **** fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 ! echo "configure:4414: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS --- 4530,4541 ---- fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 ! echo "configure:4534: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS *************** EOF *** 4443,4454 **** fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 ! echo "configure:4447: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS --- 4563,4574 ---- fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 ! echo "configure:4567: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS *************** fi *** 4478,4496 **** # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 ! echo "configure:4482: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF ! if { (eval echo configure:4494: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else --- 4598,4616 ---- # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 ! echo "configure:4602: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF ! if { (eval echo configure:4614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else *************** EOF *** 4511,4522 **** fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 ! echo "configure:4515: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4635: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else --- 4664,4670 ---- char *p = (char *) alloca(1); ; return 0; } EOF ! if { (eval echo configure:4668: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else *************** EOF *** 4576,4587 **** echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 ! echo "configure:4580: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4700: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 *** 4606,4617 **** if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:4610: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4730: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 4754,4760 ---- ; return 0; } EOF ! if { (eval echo configure:4758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 4661,4667 **** fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 ! echo "configure:4665: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 4781,4787 ---- fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 ! echo "configure:4785: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 4669,4675 **** ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else --- 4808,4814 ---- exit (find_stack_direction() < 0); } EOF ! if { (eval echo configure:4812: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else *************** unistd.h sys/param.h *** 4715,4731 **** do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:4719: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:4729: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 4835,4851 ---- do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:4839: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:4849: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** done *** 4755,4766 **** strdup __argz_count __argz_stringify __argz_next do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:4759: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4879: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 4903,4909 ---- ; return 0; } EOF ! if { (eval echo configure:4907: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 4812,4823 **** for ac_func in stpcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:4816: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4936: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 4960,4966 ---- ; return 0; } EOF ! if { (eval echo configure:4964: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** EOF *** 4874,4892 **** if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 ! echo "configure:4878: checking for LC_MESSAGES" >&5 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return LC_MESSAGES ; return 0; } EOF ! if { (eval echo configure:4890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_val_LC_MESSAGES=yes else --- 4994,5012 ---- if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 ! echo "configure:4998: checking for LC_MESSAGES" >&5 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return LC_MESSAGES ; return 0; } EOF ! if { (eval echo configure:5010: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_val_LC_MESSAGES=yes else *************** EOF *** 4907,4913 **** fi fi echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 ! echo "configure:4911: checking whether NLS is requested" >&5 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" --- 5027,5033 ---- fi fi echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 ! echo "configure:5031: checking whether NLS is requested" >&5 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" *************** fi *** 4927,4933 **** EOF echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 ! echo "configure:4931: checking whether included gettext is requested" >&5 # Check whether --with-included-gettext or --without-included-gettext was given. if test "${with_included_gettext+set}" = set; then withval="$with_included_gettext" --- 5047,5053 ---- EOF echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 ! echo "configure:5051: checking whether included gettext is requested" >&5 # Check whether --with-included-gettext or --without-included-gettext was given. if test "${with_included_gettext+set}" = set; then withval="$with_included_gettext" *************** fi *** 4946,4962 **** ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 ! echo "configure:4950: checking for libintl.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:4960: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 5066,5082 ---- ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 ! echo "configure:5070: checking for libintl.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:5080: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** fi *** 4973,4991 **** if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6 ! echo "configure:4977: checking for gettext in libc" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return (int) gettext ("") ; return 0; } EOF ! if { (eval echo configure:4989: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gt_cv_func_gettext_libc=yes else --- 5093,5111 ---- if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6 ! echo "configure:5097: checking for gettext in libc" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return (int) gettext ("") ; return 0; } EOF ! if { (eval echo configure:5109: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gt_cv_func_gettext_libc=yes else *************** echo "$ac_t""$gt_cv_func_gettext_libc" 1 *** 5001,5007 **** if test "$gt_cv_func_gettext_libc" != "yes"; then echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6 ! echo "configure:5005: checking for bindtextdomain in -lintl" >&5 ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 5121,5127 ---- if test "$gt_cv_func_gettext_libc" != "yes"; then echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6 ! echo "configure:5125: checking for bindtextdomain in -lintl" >&5 ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 5009,5015 **** ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 5140,5146 ---- bindtextdomain() ; return 0; } EOF ! if { (eval echo configure:5144: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** fi *** 5036,5047 **** if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6 ! echo "configure:5040: checking for gettext in libintl" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6 ! echo "configure:5045: checking for gettext in -lintl" >&5 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 5156,5167 ---- if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6 ! echo "configure:5160: checking for gettext in libintl" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6 ! echo "configure:5165: checking for gettext in -lintl" >&5 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 5049,5055 **** ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 5180,5186 ---- gettext() ; return 0; } EOF ! if { (eval echo configure:5184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** EOF *** 5103,5109 **** # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5107: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5223,5229 ---- # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5227: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 5137,5148 **** for ac_func in dcgettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:5141: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:5261: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 5285,5291 ---- ; return 0; } EOF ! if { (eval echo configure:5289: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 5192,5198 **** # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5196: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5312,5318 ---- # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5316: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 5228,5234 **** # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5232: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5348,5354 ---- # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5352: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 5260,5266 **** fi cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* CATOBJEXT=.gmo DATADIRNAME=share --- 5388,5394 ---- return _nl_msg_cat_cntr ; return 0; } EOF ! if { (eval echo configure:5392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* CATOBJEXT=.gmo DATADIRNAME=share *************** fi *** 5293,5299 **** if test "$CATOBJEXT" = "NONE"; then echo $ac_n "checking whether catgets can be used""... $ac_c" 1>&6 ! echo "configure:5297: checking whether catgets can be used" >&5 # Check whether --with-catgets or --without-catgets was given. if test "${with_catgets+set}" = set; then withval="$with_catgets" --- 5413,5419 ---- if test "$CATOBJEXT" = "NONE"; then echo $ac_n "checking whether catgets can be used""... $ac_c" 1>&6 ! echo "configure:5417: checking whether catgets can be used" >&5 # Check whether --with-catgets or --without-catgets was given. if test "${with_catgets+set}" = set; then withval="$with_catgets" *************** fi *** 5306,5312 **** if test "$nls_cv_use_catgets" = "yes"; then echo $ac_n "checking for main in -li""... $ac_c" 1>&6 ! echo "configure:5310: checking for main in -li" >&5 ac_lib_var=`echo i'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 5426,5432 ---- if test "$nls_cv_use_catgets" = "yes"; then echo $ac_n "checking for main in -li""... $ac_c" 1>&6 ! echo "configure:5430: checking for main in -li" >&5 ac_lib_var=`echo i'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 5314,5327 **** ac_save_LIBS="$LIBS" LIBS="-li $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 5434,5447 ---- ac_save_LIBS="$LIBS" LIBS="-li $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** else *** 5349,5360 **** fi echo $ac_n "checking for catgets""... $ac_c" 1>&6 ! echo "configure:5353: checking for catgets" >&5 if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:5473: checking for catgets" >&5 if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_catgets=yes" else --- 5497,5503 ---- ; return 0; } EOF ! if { (eval echo configure:5501: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_catgets=yes" else *************** EOF *** 5399,5405 **** # Extract the first word of "gencat", so it can be a program name with args. set dummy gencat; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5403: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_GENCAT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5519,5525 ---- # Extract the first word of "gencat", so it can be a program name with args. set dummy gencat; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5523: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_GENCAT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 5435,5441 **** # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5439: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5555,5561 ---- # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5559: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 5472,5478 **** # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5476: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5592,5598 ---- # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5596: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 5510,5516 **** # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5514: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5630,5636 ---- # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5634: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 5568,5574 **** # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5572: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5688,5694 ---- # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5692: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 5602,5608 **** # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5606: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5722,5728 ---- # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5726: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 5641,5647 **** # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5645: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5761,5767 ---- # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5765: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 5740,5746 **** LINGUAS= else echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 ! echo "configure:5744: checking for catalogs to be installed" >&5 if test "x$LINGUAS" = "x"; then LINGUAS=$ALL_LINGUAS else --- 5860,5866 ---- LINGUAS= else echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 ! echo "configure:5864: checking for catalogs to be installed" >&5 if test "x$LINGUAS" = "x"; then LINGUAS=$ALL_LINGUAS else *************** echo "configure:5744: checking for catal *** 5772,5788 **** if test "$CATOBJEXT" = ".cat"; then ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6 ! echo "configure:5776: checking for linux/version.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:5786: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 5892,5908 ---- if test "$CATOBJEXT" = ".cat"; then ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6 ! echo "configure:5896: checking for linux/version.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:5906: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** fi *** 5857,5863 **** echo $ac_n "checking whether windows registry support is requested""... $ac_c" 1>&6 ! echo "configure:5861: checking whether windows registry support is requested" >&5 if test x$enable_win32_registry != xno; then cat >> confdefs.h <<\EOF #define ENABLE_WIN32_REGISTRY 1 --- 5977,5983 ---- echo $ac_n "checking whether windows registry support is requested""... $ac_c" 1>&6 ! echo "configure:5981: checking whether windows registry support is requested" >&5 if test x$enable_win32_registry != xno; then cat >> confdefs.h <<\EOF #define ENABLE_WIN32_REGISTRY 1 *************** esac *** 5886,5892 **** if test x$enable_win32_registry != xno; then echo $ac_n "checking registry key on windows hosts""... $ac_c" 1>&6 ! echo "configure:5890: checking registry key on windows hosts" >&5 cat >> confdefs.h <&6 ! echo "configure:6010: checking registry key on windows hosts" >&5 cat >> confdefs.h <&6 ! echo "configure:6074: checking what assembler to use" >&5 gcc_cv_as= gcc_cv_gas_major_version= gcc_cv_gas_minor_version= --- 6190,6196 ---- # Figure out what assembler we will be using. echo $ac_n "checking what assembler to use""... $ac_c" 1>&6 ! echo "configure:6194: checking what assembler to use" >&5 gcc_cv_as= gcc_cv_gas_major_version= gcc_cv_gas_minor_version= *************** fi *** 6155,6161 **** # Figure out what nm we will be using. echo $ac_n "checking what nm to use""... $ac_c" 1>&6 ! echo "configure:6159: checking what nm to use" >&5 if test -x nm$host_exeext; then gcc_cv_nm=./nm$host_exeext elif test x$host = x$target; then --- 6275,6281 ---- # Figure out what nm we will be using. echo $ac_n "checking what nm to use""... $ac_c" 1>&6 ! echo "configure:6279: checking what nm to use" >&5 if test -x nm$host_exeext; then gcc_cv_nm=./nm$host_exeext elif test x$host = x$target; then *************** echo "$ac_t""$gcc_cv_nm" 1>&6 *** 6166,6172 **** # Figure out what assembler alignment features are present. echo $ac_n "checking assembler alignment features""... $ac_c" 1>&6 ! echo "configure:6170: checking assembler alignment features" >&5 gcc_cv_as_alignment_features=none if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then # Gas version 2.6 and later support for .balign and .p2align. --- 6286,6292 ---- # Figure out what assembler alignment features are present. echo $ac_n "checking assembler alignment features""... $ac_c" 1>&6 ! echo "configure:6290: checking assembler alignment features" >&5 gcc_cv_as_alignment_features=none if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then # Gas version 2.6 and later support for .balign and .p2align. *************** fi *** 6214,6220 **** echo "$ac_t""$gcc_cv_as_alignment_features" 1>&6 echo $ac_n "checking assembler subsection support""... $ac_c" 1>&6 ! echo "configure:6218: checking assembler subsection support" >&5 gcc_cv_as_subsections=no if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then --- 6334,6340 ---- echo "$ac_t""$gcc_cv_as_alignment_features" 1>&6 echo $ac_n "checking assembler subsection support""... $ac_c" 1>&6 ! echo "configure:6338: checking assembler subsection support" >&5 gcc_cv_as_subsections=no if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then *************** fi *** 6254,6260 **** echo "$ac_t""$gcc_cv_as_subsections" 1>&6 echo $ac_n "checking assembler weak support""... $ac_c" 1>&6 ! echo "configure:6258: checking assembler weak support" >&5 gcc_cv_as_weak=no if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 2 -o "$gcc_cv_gas_major_version" -gt 2; then --- 6374,6380 ---- echo "$ac_t""$gcc_cv_as_subsections" 1>&6 echo $ac_n "checking assembler weak support""... $ac_c" 1>&6 ! echo "configure:6378: checking assembler weak support" >&5 gcc_cv_as_weak=no if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 2 -o "$gcc_cv_gas_major_version" -gt 2; then *************** fi *** 6277,6283 **** echo "$ac_t""$gcc_cv_as_weak" 1>&6 echo $ac_n "checking assembler hidden support""... $ac_c" 1>&6 ! echo "configure:6281: checking assembler hidden support" >&5 gcc_cv_as_hidden=no if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 10 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then --- 6397,6403 ---- echo "$ac_t""$gcc_cv_as_weak" 1>&6 echo $ac_n "checking assembler hidden support""... $ac_c" 1>&6 ! echo "configure:6401: checking assembler hidden support" >&5 gcc_cv_as_hidden=no if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 10 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then *************** fi *** 6301,6307 **** echo "$ac_t""$gcc_cv_as_hidden" 1>&6 echo $ac_n "checking assembler leb128 support""... $ac_c" 1>&6 ! echo "configure:6305: checking assembler leb128 support" >&5 gcc_cv_as_leb128=no if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 11 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then --- 6421,6427 ---- echo "$ac_t""$gcc_cv_as_hidden" 1>&6 echo $ac_n "checking assembler leb128 support""... $ac_c" 1>&6 ! echo "configure:6425: checking assembler leb128 support" >&5 gcc_cv_as_leb128=no if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 11 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then *************** fi *** 6346,6352 **** echo "$ac_t""$gcc_cv_as_leb128" 1>&6 echo $ac_n "checking assembler eh_frame optimization""... $ac_c" 1>&6 ! echo "configure:6350: checking assembler eh_frame optimization" >&5 gcc_cv_as_eh_frame=no if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 12 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then --- 6466,6472 ---- echo "$ac_t""$gcc_cv_as_leb128" 1>&6 echo $ac_n "checking assembler eh_frame optimization""... $ac_c" 1>&6 ! echo "configure:6470: checking assembler eh_frame optimization" >&5 gcc_cv_as_eh_frame=no if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 12 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then *************** __FRAME_BEGIN__: *** 6393,6409 **** .4byte .L1-.LFB1 .LEFDE1: EOF ! cat > conftest.exp < /dev/null 2>&1 \ && objdump -s -j .eh_frame conftest.o 2>/dev/null \ | tail -3 > conftest.got \ ! && cmp conftest.exp conftest.got > /dev/null 2>&1 then gcc_cv_as_eh_frame="yes" else --- 6513,6535 ---- .4byte .L1-.LFB1 .LEFDE1: EOF ! cat > conftest.lit < conftest.big < /dev/null 2>&1 \ && objdump -s -j .eh_frame conftest.o 2>/dev/null \ | tail -3 > conftest.got \ ! && { cmp conftest.lit conftest.got > /dev/null 2>&1 \ ! || cmp conftest.big conftest.got > /dev/null 2>&1; } then gcc_cv_as_eh_frame="yes" else *************** echo "$ac_t""$gcc_cv_as_eh_frame" 1>&6 *** 6423,6429 **** case "$target" in sparc*-*-*) echo $ac_n "checking assembler .register pseudo-op support""... $ac_c" 1>&6 ! echo "configure:6427: checking assembler .register pseudo-op support" >&5 if eval "test \"`echo '$''{'gcc_cv_as_register_pseudo_op'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 6549,6555 ---- case "$target" in sparc*-*-*) echo $ac_n "checking assembler .register pseudo-op support""... $ac_c" 1>&6 ! echo "configure:6553: checking assembler .register pseudo-op support" >&5 if eval "test \"`echo '$''{'gcc_cv_as_register_pseudo_op'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** EOF *** 6451,6457 **** fi echo $ac_n "checking assembler supports -relax""... $ac_c" 1>&6 ! echo "configure:6455: checking assembler supports -relax" >&5 if eval "test \"`echo '$''{'gcc_cv_as_relax_opt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 6577,6583 ---- fi echo $ac_n "checking assembler supports -relax""... $ac_c" 1>&6 ! echo "configure:6581: checking assembler supports -relax" >&5 if eval "test \"`echo '$''{'gcc_cv_as_relax_opt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** EOF *** 6481,6487 **** case "$tm_file" in *64*) echo $ac_n "checking for 64 bit support in assembler ($gcc_cv_as)""... $ac_c" 1>&6 ! echo "configure:6485: checking for 64 bit support in assembler ($gcc_cv_as)" >&5 if eval "test \"`echo '$''{'gcc_cv_as_flags64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 6607,6613 ---- case "$tm_file" in *64*) echo $ac_n "checking for 64 bit support in assembler ($gcc_cv_as)""... $ac_c" 1>&6 ! echo "configure:6611: checking for 64 bit support in assembler ($gcc_cv_as)" >&5 if eval "test \"`echo '$''{'gcc_cv_as_flags64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** EOF *** 6526,6532 **** if test "x$gcc_cv_as_flags64" != xno; then echo $ac_n "checking for assembler offsetable %lo() support""... $ac_c" 1>&6 ! echo "configure:6530: checking for assembler offsetable %lo() support" >&5 if eval "test \"`echo '$''{'gcc_cv_as_offsetable_lo10'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 6652,6658 ---- if test "x$gcc_cv_as_flags64" != xno; then echo $ac_n "checking for assembler offsetable %lo() support""... $ac_c" 1>&6 ! echo "configure:6656: checking for assembler offsetable %lo() support" >&5 if eval "test \"`echo '$''{'gcc_cv_as_offsetable_lo10'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** EOF *** 6566,6572 **** i[34567]86-*-*) echo $ac_n "checking assembler instructions""... $ac_c" 1>&6 ! echo "configure:6570: checking assembler instructions" >&5 gcc_cv_as_instructions= if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2; then --- 6692,6698 ---- i[34567]86-*-*) echo $ac_n "checking assembler instructions""... $ac_c" 1>&6 ! echo "configure:6696: checking assembler instructions" >&5 gcc_cv_as_instructions= if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2; then *************** EOF *** 6595,6601 **** esac echo $ac_n "checking assembler dwarf2 debug_line support""... $ac_c" 1>&6 ! echo "configure:6599: checking assembler dwarf2 debug_line support" >&5 gcc_cv_as_dwarf2_debug_line=no # ??? Not all targets support dwarf2 debug_line, even within a version # of gas. Moreover, we need to emit a valid instruction to trigger any --- 6721,6727 ---- esac echo $ac_n "checking assembler dwarf2 debug_line support""... $ac_c" 1>&6 ! echo "configure:6725: checking assembler dwarf2 debug_line support" >&5 gcc_cv_as_dwarf2_debug_line=no # ??? Not all targets support dwarf2 debug_line, even within a version # of gas. Moreover, we need to emit a valid instruction to trigger any *************** gcc_cv_as_dwarf2_debug_line=no *** 6604,6610 **** # ??? Once 2.11 is released, probably need to add first known working # version to the per-target configury. case "$target" in ! i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-*) insn="nop" ;; ia64*-*-*) --- 6730,6736 ---- # ??? Once 2.11 is released, probably need to add first known working # version to the per-target configury. case "$target" in ! i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-*) insn="nop" ;; ia64*-*-*) *************** EOF *** 6784,6790 **** echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 ! echo "configure:6788: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" --- 6910,6916 ---- echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 ! echo "configure:6914: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" *************** s%@TARGET_GETGROUPS_T@%$TARGET_GETGROUPS *** 7299,7304 **** --- 7425,7431 ---- s%@vfprintf@%$vfprintf%g s%@doprint@%$doprint%g s%@strstr@%$strstr%g + s%@LIBICONV@%$LIBICONV%g s%@manext@%$manext%g s%@objext@%$objext%g s%@PACKAGE@%$PACKAGE%g diff -Nrc3pad gcc-3.0/gcc/configure.in gcc-3.0.1/gcc/configure.in *** gcc-3.0/gcc/configure.in Tue Jun 12 19:27:58 2001 --- gcc-3.0.1/gcc/configure.in Tue Jul 24 18:46:30 2001 *************** case x${enable_threads_flag} in *** 288,294 **** target_thread_file='' ;; xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \ ! xsolaris | xwin32 | xdce | xvxworks | xaix) target_thread_file=$enable_threads_flag ;; *) --- 288,294 ---- target_thread_file='' ;; xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \ ! xsolaris | xwin32 | xdce | xrtems| xvxworks | xaix) target_thread_file=$enable_threads_flag ;; *) *************** AC_HEADER_SYS_WAIT *** 441,447 **** AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h \ fcntl.h unistd.h stab.h sys/file.h sys/time.h \ sys/resource.h sys/param.h sys/times.h sys/stat.h \ ! direct.h malloc.h langinfo.h iconv.h) # Check for thread headers. AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=]) --- 441,447 ---- AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h \ fcntl.h unistd.h stab.h sys/file.h sys/time.h \ sys/resource.h sys/param.h sys/times.h sys/stat.h \ ! direct.h malloc.h langinfo.h) # Check for thread headers. AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=]) *************** fi *** 545,551 **** AC_CHECK_FUNCS(strtoul bsearch putenv popen bcopy \ strchr strrchr kill getrlimit setrlimit atoll atoq \ sysconf isascii gettimeofday strsignal putc_unlocked fputc_unlocked \ ! fputs_unlocked getrusage iconv nl_langinfo lstat) AC_CHECK_TYPE(ssize_t, int) --- 545,551 ---- AC_CHECK_FUNCS(strtoul bsearch putenv popen bcopy \ strchr strrchr kill getrlimit setrlimit atoll atoq \ sysconf isascii gettimeofday strsignal putc_unlocked fputc_unlocked \ ! fputs_unlocked getrusage nl_langinfo lstat) AC_CHECK_TYPE(ssize_t, int) *************** AC_FUNC_VFORK *** 584,589 **** --- 584,591 ---- AC_FUNC_MMAP_ANYWHERE AC_FUNC_MMAP_FILE + AM_ICONV + # We will need to find libiberty.h and ansidecl.h saved_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include" *************** __FRAME_BEGIN__: *** 1391,1407 **** .4byte .L1-.LFB1 .LEFDE1: EOF ! cat > conftest.exp < /dev/null 2>&1 \ && objdump -s -j .eh_frame conftest.o 2>/dev/null \ | tail -3 > conftest.got \ ! && cmp conftest.exp conftest.got > /dev/null 2>&1 then gcc_cv_as_eh_frame="yes" else --- 1393,1415 ---- .4byte .L1-.LFB1 .LEFDE1: EOF ! cat > conftest.lit < conftest.big < /dev/null 2>&1 \ && objdump -s -j .eh_frame conftest.o 2>/dev/null \ | tail -3 > conftest.got \ ! && { cmp conftest.lit conftest.got > /dev/null 2>&1 \ ! || cmp conftest.big conftest.got > /dev/null 2>&1; } then gcc_cv_as_eh_frame="yes" else *************** gcc_cv_as_dwarf2_debug_line=no *** 1561,1567 **** # ??? Once 2.11 is released, probably need to add first known working # version to the per-target configury. case "$target" in ! i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-*) insn="nop" ;; ia64*-*-*) --- 1569,1575 ---- # ??? Once 2.11 is released, probably need to add first known working # version to the per-target configury. case "$target" in ! i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-*) insn="nop" ;; ia64*-*-*) diff -Nrc3pad gcc-3.0/gcc/cp/ChangeLog gcc-3.0.1/gcc/cp/ChangeLog *** gcc-3.0/gcc/cp/ChangeLog Sun Jun 17 12:39:31 2001 --- gcc-3.0.1/gcc/cp/ChangeLog Sun Aug 19 14:08:14 2001 *************** *** 1,3 **** --- 1,163 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-16 Mark Mitchell + + * cvt.c (convert_to_void): Preserve TREE_SIDE_EFFECTS + on COMPOUND_EXPRs. + + 2001-08-13 Mark Mitchell + + * call.c (build_over_call): Mark COMPOUND_EXPRs generated for + empty class assignment as having side-effects to avoid + spurious warnings. + + 2001-08-07 Nathan Sidwell + + PR c++/3820 + Stop using TYPE_NONCOPIED_PARTS. + * call.c (build_over_call): Be careful when copy constructing + or assigning to an empty class. + * class.c (check_bases_and_members): It has a + COMPLEX_ASSIGN_REF if it has a vptr. + (layout_class_type): Don't add empty class padding to + TYPE_NONCOPIED_PARTS. + (finish_struct_1): Don't add the VFIELD either. + * cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): Mention _copy_ + initialization. + + 2001-08-02 Nathan Sidwell + + Remove -fhonor-std. + * NEWS: Document. + * decl2.c (lang_f_options): Remove honor-std. + (unsupported_options): Add honor-std. + * lang-options.h: Remove -fhonor-std, -fno-honor-std. + + 2001-07-31 Nathan Sidwell + + PR c++/3631 + * class.c (update_vtable_entry_for_fn): The fixed adjustment + of a virtual thunk should be from declaring base. + + 2001-07-31 Nathan Sidwell + + * class.c (dfs_ctor_vtable_bases_queue_p): Always walk into + the shared virtual base, so preserving inheritance graph order. + + 2001-07-27 Nathan Sidwell + + * class.c (mark_primary_virtual_base): Don't adjust base + offsets here. + (dfs_unshared_virtual_bases): Adjust them here. + (mark_primary_bases): Explain why we adjust at the end. + + 2001-07-27 Nathan Sidwell + + * class.c (finish_struct_1): When copying the primary base's + VFIELD, make sure we find it is at offset zero. + + 2001-07-26 Nathan Sidwell + + PR c++/3621 + * spew.c (yylex): Only copy the token's lineno, if it is + non-zero. + + 2001-07-26 Nathan Sidwell + + PR c++/3624 + * call.c (resolve_args): Simplify, call + convert_from_reference. + (build_new_op): Resolve and convert from reference ARG1 + earlier. Adjust ARG2 & ARG3 resolve and conversion. + + 2001-07-26 Nathan Sidwell + + PR c++/3152 + * decl.c (grokdeclarator): Detect when a function typedef is + declaring a function, and create last_function_parms correctly. + + 2001-07-25 Nathan Sidwell + + PR c++/3416 + * call.c (build_conditional_expr): Recheck args after + conversions. + * cp-tree.h (build_conditional_expr): Move to correct file. + * typeck.c (decay_conversion): Diagnose any unknown types + reaching here. + (build_binary_op): Don't do initial decay or default + conversions on overloaded functions. + (build_static_cast): Don't do a decay conversion here. + + 2001-07-25 Jason Merrill + + PR c++/3529 + Copied from mainline. + * cvt.c (convert_lvalue): New fn. + * cp-tree.h: Declare it. + * method.c (do_build_assign_ref): Use it. + (do_build_copy_constructor): Convert parm to base types + before calling base constructors. + + 2001-07-25 Nathan Sidwell + + PR c++/3543 + * typeck.c (condition_conversion): Resolve an OFFSET_REF. + * expr.c (cplus_expand_expr): An OFFSET_REF should never get here. + + 2001-07-25 Nathan Sidwell + + * class.c (build_vbase_offset_vbtl_entries): Look for + non-primary base of which we are a sub vtable. + + 2001-07-20 Daniel Berlin + + * Make-lang.in (cp/optimize.o): Depend on $(PARAMS_H), not + params.h. + + 2001-07-18 Xavier Delacour , + Gerald Pfeifer + + * NEWS (Changes in GCC 3.0): Fix typo. + + 2001-07-12 Mark Mitchell + + * decl.c (make_rtl_for_nonlocal_decl): Set DECL_C_HARD_REGISTER + for `register' variables with an asm-specification. + + 2001-07-11 Mark Mitchell + + * semantics.c (finish_asm_stmt): Mark the output operands + to an asm addressable, if necessary. + + 2001-07-10 Mark Mitchell + + * pt.c (tsubst_decl): Set DECL_CONTEXT for namespace-scope + variables. + + 2001-06-19 Richard Sandiford + + * except.c (initialize_handler_parm): Expect __cxa_begin_catch to + return pointers to data members by reference rather than by value. + + 2001-06-18 Jason Merrill + + * class.c (dfs_accumulate_vtbl_inits): Just point to the base we're + sharing a ctor vtable with. Merge code for cases 1 and 2. + (binfo_ctor_vtable): New fn. + (build_vtt_inits, dfs_build_secondary_vptr_vtt_inits): Use it. + + * class.c (dfs_find_final_overrider): Fix logic. + + * pt.c (unify): Don't recurse between the POINTER_TYPE and the + OFFSET_TYPE. If we're adding cv-quals, the extra ones would be on + PARM, not ARG. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/gcc/cp/Make-lang.in gcc-3.0.1/gcc/cp/Make-lang.in *** gcc-3.0/gcc/cp/Make-lang.in Sat May 12 13:32:52 2001 --- gcc-3.0.1/gcc/cp/Make-lang.in Fri Jul 20 12:29:06 2001 *************** cp/semantics.o: cp/semantics.c $(CXX_TRE *** 273,279 **** flags.h $(GGC_H) output.h $(RTL_H) $(TIMEVAR_H) cp/dump.o: cp/dump.c $(CXX_TREE_H) c-dump.h cp/optimize.o: cp/optimize.c $(CXX_TREE_H) rtl.h integrate.h insn-config.h \ ! input.h params.h cp/mangle.o: cp/mangle.c $(CXX_TREE_H) toplev.h cp/parse.o: cp/parse.c $(CXX_TREE_H) flags.h cp/lex.h except.h output.h \ --- 273,279 ---- flags.h $(GGC_H) output.h $(RTL_H) $(TIMEVAR_H) cp/dump.o: cp/dump.c $(CXX_TREE_H) c-dump.h cp/optimize.o: cp/optimize.c $(CXX_TREE_H) rtl.h integrate.h insn-config.h \ ! input.h $(PARAMS_H) cp/mangle.o: cp/mangle.c $(CXX_TREE_H) toplev.h cp/parse.o: cp/parse.c $(CXX_TREE_H) flags.h cp/lex.h except.h output.h \ diff -Nrc3pad gcc-3.0/gcc/cp/NEWS gcc-3.0.1/gcc/cp/NEWS *** gcc-3.0/gcc/cp/NEWS Wed Jun 13 11:25:49 2001 --- gcc-3.0.1/gcc/cp/NEWS Thu Aug 2 07:23:11 2001 *************** *** 1,3 **** --- 1,9 ---- + *** Changes in GCC 3.0.1: + + * -fhonor-std and -fno-honor-std have been removed. -fno-honor-std was + a workaround to allow std compliant code to work with the non-std + compliant libstdc++-v2. libstdc++-v3 is std compliant. + *** Changes in GCC 3.0: * Support for guiding declarations has been removed. *************** *** 9,15 **** * In some obscure cases, functions with the same type could have the same mangled name. This bug caused compiler crashes, link-time clashes, ! and debugger crahses. Fixing this bug required breaking ABI compatibility for the functions involved. The functions in questions are those whose types involve non-type template arguments whose mangled representations require more than one digit. --- 15,21 ---- * In some obscure cases, functions with the same type could have the same mangled name. This bug caused compiler crashes, link-time clashes, ! and debugger crashes. Fixing this bug required breaking ABI compatibility for the functions involved. The functions in questions are those whose types involve non-type template arguments whose mangled representations require more than one digit. diff -Nrc3pad gcc-3.0/gcc/cp/call.c gcc-3.0.1/gcc/cp/call.c *** gcc-3.0/gcc/cp/call.c Wed Jun 6 09:12:34 2001 --- gcc-3.0.1/gcc/cp/call.c Mon Aug 13 13:54:14 2001 *************** resolve_args (args) *** 2546,2560 **** tree t; for (t = args; t; t = TREE_CHAIN (t)) { ! if (TREE_VALUE (t) == error_mark_node) return error_mark_node; ! else if (TREE_CODE (TREE_TYPE (TREE_VALUE (t))) == VOID_TYPE) { error ("invalid use of void expression"); return error_mark_node; } ! else if (TREE_CODE (TREE_VALUE (t)) == OFFSET_REF) ! TREE_VALUE (t) = resolve_offset_ref (TREE_VALUE (t)); } return args; } --- 2546,2564 ---- tree t; for (t = args; t; t = TREE_CHAIN (t)) { ! tree arg = TREE_VALUE (t); ! ! if (arg == error_mark_node) return error_mark_node; ! else if (VOID_TYPE_P (TREE_TYPE (arg))) { error ("invalid use of void expression"); return error_mark_node; } ! else if (TREE_CODE (arg) == OFFSET_REF) ! arg = resolve_offset_ref (arg); ! arg = convert_from_reference (arg); ! TREE_VALUE (t) = arg; } return args; } *************** build_conditional_expr (arg1, arg2, arg3 *** 3082,3087 **** --- 3086,3094 ---- arg3 = decay_conversion (arg3); arg3_type = TREE_TYPE (arg3); + if (arg2 == error_mark_node || arg3 == error_mark_node) + return error_mark_node; + /* [expr.cond] After those conversions, one of the following shall hold: *************** build_new_op (code, flags, arg1, arg2, a *** 3207,3212 **** --- 3214,3223 ---- else fnname = ansi_opname (code); + if (TREE_CODE (arg1) == OFFSET_REF) + arg1 = resolve_offset_ref (arg1); + arg1 = convert_from_reference (arg1); + switch (code) { case NEW_EXPR: *************** build_new_op (code, flags, arg1, arg2, a *** 3223,3241 **** break; } - /* The comma operator can have void args. */ - if (TREE_CODE (arg1) == OFFSET_REF) - arg1 = resolve_offset_ref (arg1); - if (arg2 && TREE_CODE (arg2) == OFFSET_REF) - arg2 = resolve_offset_ref (arg2); - if (arg3 && TREE_CODE (arg3) == OFFSET_REF) - arg3 = resolve_offset_ref (arg3); - - arg1 = convert_from_reference (arg1); if (arg2) ! arg2 = convert_from_reference (arg2); if (arg3) ! arg3 = convert_from_reference (arg3); if (code == COND_EXPR) { --- 3234,3251 ---- break; } if (arg2) ! { ! if (TREE_CODE (arg2) == OFFSET_REF) ! arg2 = resolve_offset_ref (arg2); ! arg2 = convert_from_reference (arg2); ! } if (arg3) ! { ! if (TREE_CODE (arg3) == OFFSET_REF) ! arg3 = resolve_offset_ref (arg3); ! arg3 = convert_from_reference (arg3); ! } if (code == COND_EXPR) { *************** build_over_call (cand, args, flags) *** 4235,4264 **** return build_target_expr_with_type (arg, DECL_CONTEXT (fn)); } else if (! real_lvalue_p (arg) ! || TYPE_HAS_TRIVIAL_INIT_REF (DECL_CONTEXT (fn))) { tree address; tree to = stabilize_reference (build_indirect_ref (TREE_VALUE (args), 0)); ! /* If we're initializing an empty class, then we actually ! have to use a MODIFY_EXPR rather than an INIT_EXPR. The ! reason is that the dummy padding member in the target may ! not actually be allocated if TO is a base class ! subobject. Since we've set TYPE_NONCOPIED_PARTS on the ! padding, a MODIFY_EXPR will preserve its value, which is ! the right thing to do if it's not really padding at all. ! ! It's not safe to just throw away the ARG if we're looking ! at an empty class because the ARG might contain a ! TARGET_EXPR which wants to be bound to TO. If it is not, ! expand_expr will assign a dummy slot for the TARGET_EXPR, ! and we will call a destructor for it, which is wrong, ! because we will also destroy TO, but will never have ! constructed it. */ ! val = build (is_empty_class (DECL_CONTEXT (fn)) ! ? MODIFY_EXPR : INIT_EXPR, ! DECL_CONTEXT (fn), to, arg); address = build_unary_op (ADDR_EXPR, val, 0); /* Avoid a warning about this expression, if the address is never used. */ --- 4245,4263 ---- return build_target_expr_with_type (arg, DECL_CONTEXT (fn)); } else if (! real_lvalue_p (arg) ! /* Empty classes have padding which can be hidden ! inside an (empty) base of the class. This must not ! be touched as it might overlay things. When the ! gcc core learns about empty classes, we can treat it ! like other classes. */ ! || (!is_empty_class (DECL_CONTEXT (fn)) ! && TYPE_HAS_TRIVIAL_INIT_REF (DECL_CONTEXT (fn)))) { tree address; tree to = stabilize_reference (build_indirect_ref (TREE_VALUE (args), 0)); ! val = build (INIT_EXPR, DECL_CONTEXT (fn), to, arg); address = build_unary_op (ADDR_EXPR, val, 0); /* Avoid a warning about this expression, if the address is never used. */ *************** build_over_call (cand, args, flags) *** 4274,4281 **** (build_indirect_ref (TREE_VALUE (converted_args), 0)); arg = build_indirect_ref (TREE_VALUE (TREE_CHAIN (converted_args)), 0); ! val = build (MODIFY_EXPR, TREE_TYPE (to), to, arg); return val; } --- 4273,4295 ---- (build_indirect_ref (TREE_VALUE (converted_args), 0)); arg = build_indirect_ref (TREE_VALUE (TREE_CHAIN (converted_args)), 0); + if (is_empty_class (TREE_TYPE (to))) + { + TREE_USED (arg) = 1; ! val = build (COMPOUND_EXPR, DECL_CONTEXT (fn), arg, to); ! /* Even though the assignment may not actually result in any ! code being generated, we do not want to warn about the ! assignment having no effect. That would be confusing to ! users who may be performing the assignment as part of a ! generic algorithm, for example. ! ! Ideally, the notions of having side-effects and of being ! useless would be orthogonal. */ ! TREE_SIDE_EFFECTS (val) = 1; ! } ! else ! val = build (MODIFY_EXPR, TREE_TYPE (to), to, arg); return val; } diff -Nrc3pad gcc-3.0/gcc/cp/class.c gcc-3.0.1/gcc/cp/class.c *** gcc-3.0/gcc/cp/class.c Thu Jun 14 05:16:29 2001 --- gcc-3.0.1/gcc/cp/class.c Tue Aug 7 06:06:42 2001 *************** mark_primary_virtual_base (binfo, base_b *** 1763,1769 **** tree type; { tree shared_binfo = binfo_for_vbase (BINFO_TYPE (base_binfo), type); - tree delta; if (BINFO_PRIMARY_P (shared_binfo)) { --- 1763,1768 ---- *************** mark_primary_virtual_base (binfo, base_b *** 1782,1793 **** if (base_binfo != shared_binfo) force_canonical_binfo (base_binfo, shared_binfo, type, NULL); - delta = size_diffop (BINFO_OFFSET (binfo), BINFO_OFFSET (base_binfo)); - if (!integer_zerop (delta)) - { - propagate_binfo_offsets (base_binfo, delta, type); - BINFO_OFFSET (base_binfo) = BINFO_OFFSET (binfo); - } return base_binfo; } --- 1781,1786 ---- *************** static tree dfs_unshared_virtual_bases ( *** 1820,1826 **** my_friendly_assert (unshared_base != binfo, 20010612); BINFO_LOST_PRIMARY_P (binfo) = BINFO_LOST_PRIMARY_P (unshared_base); if (!BINFO_LOST_PRIMARY_P (binfo)) ! BINFO_PRIMARY_BASE_OF (get_primary_binfo (binfo)) = binfo; } if (binfo != TYPE_BINFO (t)) --- 1813,1819 ---- my_friendly_assert (unshared_base != binfo, 20010612); BINFO_LOST_PRIMARY_P (binfo) = BINFO_LOST_PRIMARY_P (unshared_base); if (!BINFO_LOST_PRIMARY_P (binfo)) ! BINFO_PRIMARY_BASE_OF (get_primary_binfo (binfo)) = binfo; } if (binfo != TYPE_BINFO (t)) *************** static tree dfs_unshared_virtual_bases ( *** 1828,1833 **** --- 1821,1837 ---- base binfos. That information is bogus, make sure we don't try and use it. */ BINFO_VTABLE (binfo) = NULL_TREE; + + /* If this is a virtual primary base, make sure its offset matches + that which it is primary for. */ + if (BINFO_PRIMARY_P (binfo) && TREE_VIA_VIRTUAL (binfo) && + binfo_for_vbase (BINFO_TYPE (binfo), t) == binfo) + { + tree delta = size_diffop (BINFO_OFFSET (BINFO_PRIMARY_BASE_OF (binfo)), + BINFO_OFFSET (binfo)); + if (!integer_zerop (delta)) + propagate_binfo_offsets (binfo, delta, t); + } BINFO_UNSHARED_MARKED (binfo) = 0; return NULL; *************** mark_primary_bases (type) *** 1861,1869 **** BINFO_UNSHARED_MARKED (binfo) = 1; } ! /* There could remain unshared morally virtual bases which were not visited ! in the inheritance graph walk. These bases will have lost their ! virtual primary base (should they have one). We must now find them. */ dfs_walk (TYPE_BINFO (type), dfs_unshared_virtual_bases, NULL, type); } --- 1865,1878 ---- BINFO_UNSHARED_MARKED (binfo) = 1; } ! /* There could remain unshared morally virtual bases which were not ! visited in the inheritance graph walk. These bases will have lost ! their virtual primary base (should they have one). We must now ! find them. Also we must fix up the BINFO_OFFSETs of primary ! virtual bases. We could not do that as we went along, as they ! were originally copied from the bases we inherited from by ! unshare_base_binfos. That may have decided differently about ! where a virtual primary base went. */ dfs_walk (TYPE_BINFO (type), dfs_unshared_virtual_bases, NULL, type); } *************** dfs_find_final_overrider (binfo, data) *** 2582,2613 **** ffod->overriding_fn = method; ffod->overriding_base = TREE_VALUE (path); } ! /* If we found the same overrider we already have, then ! we just need to check that we're finding it in the same ! place. */ ! else if (ffod->overriding_fn == method) { ! if (ffod->overriding_base ! && (!tree_int_cst_equal (BINFO_OFFSET (TREE_VALUE (path)), BINFO_OFFSET (ffod->overriding_base)))) { ffod->candidates = build_tree_list (NULL_TREE, ffod->overriding_fn); ffod->overriding_fn = NULL_TREE; ffod->overriding_base = NULL_TREE; } } - /* If there was already an overrider, and it overrides this - function, then the old overrider is still the best - candidate. */ - else if (ffod->overriding_fn - && strictly_overrides (ffod->overriding_fn, - method)) - ; else { tree candidates; bool incomparable = false; --- 2591,2634 ---- ffod->overriding_fn = method; ffod->overriding_base = TREE_VALUE (path); } ! else if (ffod->overriding_fn) { ! /* We had a best overrider; let's see how this compares. */ ! ! if (ffod->overriding_fn == method ! && (tree_int_cst_equal (BINFO_OFFSET (TREE_VALUE (path)), BINFO_OFFSET (ffod->overriding_base)))) + /* We found the same overrider we already have, and in the + same place; it's still the best. */; + else if (strictly_overrides (ffod->overriding_fn, method)) + /* The old function overrides this function; it's still the + best. */; + else if (strictly_overrides (method, ffod->overriding_fn)) + { + /* The new function overrides the old; it's now the + best. */ + ffod->overriding_fn = method; + ffod->overriding_base = TREE_VALUE (path); + } + else { + /* Ambiguous. */ ffod->candidates = build_tree_list (NULL_TREE, ffod->overriding_fn); + if (method != ffod->overriding_fn) + ffod->candidates + = tree_cons (NULL_TREE, method, ffod->candidates); ffod->overriding_fn = NULL_TREE; ffod->overriding_base = NULL_TREE; } } else { + /* We had a list of ambiguous overrides; let's see how this + new one compares. */ + tree candidates; bool incomparable = false; *************** update_vtable_entry_for_fn (t, binfo, fn *** 2785,2794 **** (or one of its primary bases, which are at the same offset). */ if (virtual_base) ! /* The `this' pointer needs to be adjusted to the nearest virtual ! base. */ delta = size_diffop (BINFO_OFFSET (virtual_base), ! BINFO_OFFSET (binfo)); else { /* The `this' pointer needs to be adjusted from pointing to --- 2806,2815 ---- (or one of its primary bases, which are at the same offset). */ if (virtual_base) ! /* The `this' pointer needs to be adjusted from the declaration to ! the nearest virtual base. */ delta = size_diffop (BINFO_OFFSET (virtual_base), ! BINFO_OFFSET (first_defn)); else { /* The `this' pointer needs to be adjusted from pointing to *************** update_vtable_entry_for_fn (t, binfo, fn *** 2802,2808 **** /* We'll need a thunk. But if we have a (perhaps formerly) primary virtual base, we have a vcall slot for this function, so we can use it rather than create a non-virtual thunk. */ ! b = get_primary_binfo (first_defn); for (; b; b = get_primary_binfo (b)) { --- 2823,2829 ---- /* We'll need a thunk. But if we have a (perhaps formerly) primary virtual base, we have a vcall slot for this function, so we can use it rather than create a non-virtual thunk. */ ! b = get_primary_binfo (first_defn); for (; b; b = get_primary_binfo (b)) { *************** check_bases_and_members (t, empty_p) *** 4625,4631 **** || TYPE_HAS_ASSIGN_REF (t)); TYPE_HAS_REAL_ASSIGN_REF (t) |= TYPE_HAS_ASSIGN_REF (t); TYPE_HAS_COMPLEX_ASSIGN_REF (t) ! |= TYPE_HAS_ASSIGN_REF (t) || TYPE_USES_VIRTUAL_BASECLASSES (t); /* Synthesize any needed methods. Note that methods will be synthesized for anonymous unions; grok_x_components undoes that. */ --- 4646,4652 ---- || TYPE_HAS_ASSIGN_REF (t)); TYPE_HAS_REAL_ASSIGN_REF (t) |= TYPE_HAS_ASSIGN_REF (t); TYPE_HAS_COMPLEX_ASSIGN_REF (t) ! |= TYPE_HAS_ASSIGN_REF (t) || TYPE_CONTAINS_VPTR_P (t); /* Synthesize any needed methods. Note that methods will be synthesized for anonymous unions; grok_x_components undoes that. */ *************** layout_class_type (t, empty_p, vfuns_p, *** 5112,5119 **** TYPE_FIELDS (t)); /* CLASSTYPE_INLINE_FRIENDS is really TYPE_NONCOPIED_PARTS. Thus, ! we have to save this before we start modifying ! TYPE_NONCOPIED_PARTS. */ fixup_inline_methods (t); /* Layout the non-static data members. */ --- 5133,5139 ---- TYPE_FIELDS (t)); /* CLASSTYPE_INLINE_FRIENDS is really TYPE_NONCOPIED_PARTS. Thus, ! we have to save this before we zap TYPE_NONCOPIED_PARTS. */ fixup_inline_methods (t); /* Layout the non-static data members. */ *************** layout_class_type (t, empty_p, vfuns_p, *** 5211,5219 **** padding = build_decl (FIELD_DECL, NULL_TREE, char_type_node); place_field (rli, padding); - TYPE_NONCOPIED_PARTS (t) - = tree_cons (NULL_TREE, padding, TYPE_NONCOPIED_PARTS (t)); - TREE_STATIC (TYPE_NONCOPIED_PARTS (t)) = 1; } /* Let the back-end lay out the type. Note that at this point we --- 5231,5236 ---- *************** finish_struct_1 (t) *** 5338,5357 **** /* Make sure that we get our own copy of the vfield FIELD_DECL. */ vfield = TYPE_VFIELD (t); ! if (vfield != NULL_TREE ! && DECL_FIELD_CONTEXT (vfield) != t) { ! tree binfo = get_binfo (DECL_FIELD_CONTEXT (vfield), t, 0); vfield = copy_decl (vfield); - DECL_FIELD_CONTEXT (vfield) = t; - DECL_FIELD_OFFSET (vfield) - = size_binop (PLUS_EXPR, - BINFO_OFFSET (binfo), - DECL_FIELD_OFFSET (vfield)); TYPE_VFIELD (t) = vfield; } overridden_virtuals = modify_all_vtables (t, &vfuns, nreverse (overridden_virtuals)); --- 5355,5379 ---- /* Make sure that we get our own copy of the vfield FIELD_DECL. */ vfield = TYPE_VFIELD (t); ! if (vfield && CLASSTYPE_HAS_PRIMARY_BASE_P (t)) { ! tree primary = CLASSTYPE_PRIMARY_BINFO (t); + my_friendly_assert (same_type_p (DECL_FIELD_CONTEXT (vfield), + BINFO_TYPE (primary)), + 20010726); + /* The vtable better be at the start. */ + my_friendly_assert (integer_zerop (DECL_FIELD_OFFSET (vfield)), + 20010726); + my_friendly_assert (integer_zerop (BINFO_OFFSET (primary)), + 20010726); + vfield = copy_decl (vfield); DECL_FIELD_CONTEXT (vfield) = t; TYPE_VFIELD (t) = vfield; } + else + my_friendly_assert (!vfield || DECL_FIELD_CONTEXT (vfield) == t, 20010726); overridden_virtuals = modify_all_vtables (t, &vfuns, nreverse (overridden_virtuals)); *************** finish_struct_1 (t) *** 5467,5486 **** /* Build the VTT for T. */ build_vtt (t); ! if (TYPE_VFIELD (t)) ! { ! /* In addition to this one, all the other vfields should be listed. */ ! /* Before that can be done, we have to have FIELD_DECLs for them, and ! a place to find them. */ ! TYPE_NONCOPIED_PARTS (t) ! = tree_cons (default_conversion (TYPE_BINFO_VTABLE (t)), ! TYPE_VFIELD (t), TYPE_NONCOPIED_PARTS (t)); ! ! if (warn_nonvdtor && TYPE_HAS_DESTRUCTOR (t) ! && DECL_VINDEX (TREE_VEC_ELT (CLASSTYPE_METHOD_VEC (t), 1)) == NULL_TREE) ! cp_warning ("`%#T' has virtual functions but non-virtual destructor", ! t); ! } hack_incomplete_structures (t); --- 5489,5497 ---- /* Build the VTT for T. */ build_vtt (t); ! if (warn_nonvdtor && TYPE_POLYMORPHIC_P (t) && TYPE_HAS_DESTRUCTOR (t) ! && DECL_VINDEX (TREE_VEC_ELT (CLASSTYPE_METHOD_VEC (t), 1)) == NULL_TREE) ! cp_warning ("`%#T' has virtual functions but non-virtual destructor", t); hack_incomplete_structures (t); *************** get_original_base (base_binfo, binfo) *** 7256,7261 **** --- 7267,7297 ---- return NULL; } + /* When building a secondary VTT, BINFO_VTABLE is set to a TREE_LIST with + PURPOSE the RTTI_BINFO, VALUE the real vtable pointer for this binfo, + and CHAIN the vtable pointer for this binfo after construction is + complete. VALUE can also be another BINFO, in which case we recurse. */ + + static tree + binfo_ctor_vtable (binfo) + tree binfo; + { + tree vt; + + while (1) + { + vt = BINFO_VTABLE (binfo); + if (TREE_CODE (vt) == TREE_LIST) + vt = TREE_VALUE (vt); + if (TREE_CODE (vt) == TREE_VEC) + binfo = vt; + else + break; + } + + return vt; + } + /* Recursively build the VTT-initializer for BINFO (which is in the hierarchy dominated by T). INITS points to the end of the initializer list to date. INDEX is the VTT index where the next element will be *************** build_vtt_inits (binfo, t, inits, index) *** 7292,7300 **** } /* Add the address of the primary vtable for the complete object. */ ! init = BINFO_VTABLE (binfo); ! if (TREE_CODE (init) == TREE_LIST) ! init = TREE_VALUE (init); *inits = build_tree_list (NULL_TREE, init); inits = &TREE_CHAIN (*inits); if (top_level_p) --- 7328,7334 ---- } /* Add the address of the primary vtable for the complete object. */ ! init = binfo_ctor_vtable (binfo); *inits = build_tree_list (NULL_TREE, init); inits = &TREE_CHAIN (*inits); if (top_level_p) *************** dfs_build_secondary_vptr_vtt_inits (binf *** 7431,7463 **** while (BINFO_PRIMARY_BASE_OF (binfo)) binfo = BINFO_PRIMARY_BASE_OF (binfo); } ! init = BINFO_VTABLE (binfo); ! if (TREE_CODE (init) == TREE_LIST) ! init = TREE_VALUE (init); TREE_VALUE (l) = tree_cons (NULL_TREE, init, TREE_VALUE (l)); return NULL_TREE; } /* dfs_walk_real predicate for building vtables. DATA is a TREE_LIST, ! TREE_UNSIGNED indicates that a constructor vtable is being built. ! TREE_USED indicates whether marked or unmarked bases should be walked. ! TREE_PURPOSE is the TREE_TYPE that dominates the hierarchy. */ static tree dfs_ctor_vtable_bases_queue_p (binfo, data) tree binfo; void *data; { ! if (TREE_VIA_VIRTUAL (binfo) && !BINFO_PRIMARY_P (binfo)) ! { ! tree type = TREE_PURPOSE ((tree) data); - /* This is a non-primary virtual base, get the shared version. */ - binfo = binfo_for_vbase (BINFO_TYPE (binfo), type); - if (VTT_TOP_LEVEL_P ((tree) data) && BINFO_PRIMARY_P (binfo)) - return NULL_TREE; - } if (!BINFO_MARKED (binfo) == VTT_MARKED_BINFO_P ((tree) data)) return NULL_TREE; return binfo; --- 7465,7490 ---- while (BINFO_PRIMARY_BASE_OF (binfo)) binfo = BINFO_PRIMARY_BASE_OF (binfo); } ! init = binfo_ctor_vtable (binfo); TREE_VALUE (l) = tree_cons (NULL_TREE, init, TREE_VALUE (l)); return NULL_TREE; } /* dfs_walk_real predicate for building vtables. DATA is a TREE_LIST, ! VTT_MARKED_BINFO_P indicates whether marked or unmarked bases ! should be walked. TREE_PURPOSE is the TREE_TYPE that dominates the ! hierarchy. */ static tree dfs_ctor_vtable_bases_queue_p (binfo, data) tree binfo; void *data; { ! if (TREE_VIA_VIRTUAL (binfo)) ! /* Get the shared version. */ ! binfo = binfo_for_vbase (BINFO_TYPE (binfo), TREE_PURPOSE ((tree) data)); if (!BINFO_MARKED (binfo) == VTT_MARKED_BINFO_P ((tree) data)) return NULL_TREE; return binfo; *************** dfs_accumulate_vtbl_inits (binfo, orig_b *** 7625,7766 **** tree vtbl = NULL_TREE; int ctor_vtbl_p = !same_type_p (BINFO_TYPE (rtti_binfo), t); ! if (ctor_vtbl_p) { ! tree primary = binfo; ! tree orig_primary = orig_binfo; ! ! if (TREE_VIA_VIRTUAL (orig_binfo) && BINFO_PRIMARY_P (orig_binfo)) ! { ! /* In the hierarchy of BINFO_TYPE (RTTI_BINFO), this is a ! primary virtual base. If it is not the same primary in ! the hierarchy of T, we'll need to generate a ctor vtable ! for it, to place at its location in T. If it is the same ! primary, we still need a VTT entry for the vtable, but it ! should point to the ctor vtable for the base it is a ! primary for within the sub-hierarchy of RTTI_BINFO. ! There are three possible cases: ! 1) We are in the same place. ! 2) We are a primary base within a lost primary virtual base of ! RTTI_BINFO. ! 3) We are not primary to anything else in RTTI_BINFO. */ ! if (tree_int_cst_equal (BINFO_OFFSET (orig_binfo), ! size_diffop (BINFO_OFFSET (binfo), ! BINFO_OFFSET (rtti_binfo)))) ! { ! /* Case 1: We're in the same place relative to ! RTTI_BINFO as we were in the complete type, so we are ! primary either to RTTI_BINFO or one of its secondary ! bases. */ ! ! /* Walk down our until we either find the last ! primary base or rtti_binfo. */ ! tree b = BINFO_PRIMARY_BASE_OF (binfo); ! ! for (; b; b = BINFO_PRIMARY_BASE_OF (b)) ! { ! tree probe; ! ! /* See if B is still within the hierarchy starting ! at RTTI_BINFO. */ ! for (probe = b; probe; ! probe = BINFO_INHERITANCE_CHAIN (probe)) ! if (probe == rtti_binfo) ! break; ! ! if (!probe) ! break; ! ! primary = b; ! orig_primary = BINFO_PRIMARY_BASE_OF (orig_primary); ! } ! } ! else ! { ! /* Case 2 or 3: We're not in the same place. We might ! still be primary to something within a lost primary ! virtual base of RTTI_BINFO. */ ! tree b; ! tree last = binfo; ! tree orig_last = orig_binfo; ! ! /* First, look through the bases we are primary to for a ! virtual base. */ ! for (b = BINFO_PRIMARY_BASE_OF (binfo); ! b; ! b = BINFO_PRIMARY_BASE_OF (b)) ! { ! if (!TREE_VIA_VIRTUAL (b)) ! { ! /* See if B is still within the hierarchy starting ! at RTTI_BINFO. */ ! tree probe; ! ! for (probe = b; probe; ! probe = BINFO_INHERITANCE_CHAIN (probe)) ! if (probe == rtti_binfo) ! break; ! if (!probe) ! { ! b = NULL_TREE; ! break; ! } ! } ! ! last = b; ! if (orig_last) ! orig_last = BINFO_PRIMARY_BASE_OF (orig_last); ! if (TREE_VIA_VIRTUAL (b)) ! break; ! } ! /* If we run out of primary links, keep looking down our ! inheritance chain; we might be an indirect primary of ! a virtual base. */ ! if (b == NULL_TREE) ! for (b = last; b; b = BINFO_INHERITANCE_CHAIN (b)) ! if (TREE_VIA_VIRTUAL (b)) ! break; ! /* If we found a virtual base B and it is a base of ! RTTI_BINFO, we share our vtable with LAST, i.e. the ! derived-most base within B of which we are a primary. ! Otherwise, we get our own. */ ! if (b && binfo_for_vbase (BINFO_TYPE (b), ! BINFO_TYPE (rtti_binfo))) ! { ! my_friendly_assert (orig_last, 20010611); ! primary = last; ! orig_primary = orig_last; ! } ! } ! } ! ! vtbl = BINFO_VTABLE (primary); ! if (vtbl && TREE_CODE (vtbl) == TREE_LIST ! && TREE_PURPOSE (vtbl) == rtti_binfo) ! { ! vtbl = TREE_VALUE (vtbl); ! if (primary == binfo) ! /* We created this vtable because we met its primary base ! earlier in the inheritance graph walk of ! RTTI_BINFO. */ ! return inits; ! } ! else if (primary != binfo) { ! /* We're the primary of some binfo that we've not yet ! met in the inheritance graph walk of RTTI_BINFO. We ! must create that vtable now. */ ! inits = dfs_accumulate_vtbl_inits (primary, orig_primary, ! rtti_binfo, t, l); ! vtbl = BINFO_VTABLE (primary); ! vtbl = TREE_VALUE (vtbl); } ! else ! vtbl = NULL; } else if (!BINFO_NEW_VTABLE_MARKED (orig_binfo, BINFO_TYPE (rtti_binfo))) return inits; --- 7652,7706 ---- tree vtbl = NULL_TREE; int ctor_vtbl_p = !same_type_p (BINFO_TYPE (rtti_binfo), t); ! if (ctor_vtbl_p ! && TREE_VIA_VIRTUAL (orig_binfo) && BINFO_PRIMARY_P (orig_binfo)) { ! /* In the hierarchy of BINFO_TYPE (RTTI_BINFO), this is a ! primary virtual base. If it is not the same primary in ! the hierarchy of T, we'll need to generate a ctor vtable ! for it, to place at its location in T. If it is the same ! primary, we still need a VTT entry for the vtable, but it ! should point to the ctor vtable for the base it is a ! primary for within the sub-hierarchy of RTTI_BINFO. ! There are three possible cases: ! 1) We are in the same place. ! 2) We are a primary base within a lost primary virtual base of ! RTTI_BINFO. ! 3) We are primary to something not a base of RTTI_BINFO. */ ! tree b = BINFO_PRIMARY_BASE_OF (binfo); ! tree last = NULL_TREE; ! /* First, look through the bases we are primary to for RTTI_BINFO ! or a virtual base. */ ! for (; b; b = BINFO_PRIMARY_BASE_OF (b)) { ! last = b; ! if (TREE_VIA_VIRTUAL (b) || b == rtti_binfo) ! break; } ! /* If we run out of primary links, keep looking down our ! inheritance chain; we might be an indirect primary. */ ! if (b == NULL_TREE) ! for (b = last; b; b = BINFO_INHERITANCE_CHAIN (b)) ! if (TREE_VIA_VIRTUAL (b) || b == rtti_binfo) ! break; ! ! /* If we found RTTI_BINFO, this is case 1. If we found a virtual ! base B and it is a base of RTTI_BINFO, this is case 2. In ! either case, we share our vtable with LAST, i.e. the ! derived-most base within B of which we are a primary. */ ! if (b == rtti_binfo ! || (b && binfo_for_vbase (BINFO_TYPE (b), ! BINFO_TYPE (rtti_binfo)))) ! /* Just set our BINFO_VTABLE to point to LAST, as we may not have ! set LAST's BINFO_VTABLE yet. We'll extract the actual vptr in ! binfo_ctor_vtable after everything's been set up. */ ! vtbl = last; ! ! /* Otherwise, this is case 3 and we get our own. */ } else if (!BINFO_NEW_VTABLE_MARKED (orig_binfo, BINFO_TYPE (rtti_binfo))) return inits; *************** build_vbase_offset_vtbl_entries (binfo, *** 7986,7991 **** --- 7926,7932 ---- { tree vbase; tree t; + tree non_primary_binfo; /* Under the old ABI, pointers to virtual bases are stored in each object. */ *************** build_vbase_offset_vtbl_entries (binfo, *** 7998,8003 **** --- 7939,7968 ---- return; t = vid->derived; + + /* We might be a primary base class. Go up the inheritance hierarchy + until we find the most derived class of which we are a primary base: + it is the offset of that which we need to use. */ + non_primary_binfo = binfo; + while (BINFO_INHERITANCE_CHAIN (non_primary_binfo)) + { + tree b; + + /* If we have reached a virtual base, then it must be a primary + base (possibly multi-level) of vid->binfo, or we wouldn't + have called build_vcall_and_vbase_vtbl_entries for it. But it + might be a lost primary, so just skip down to vid->binfo. */ + if (TREE_VIA_VIRTUAL (non_primary_binfo)) + { + non_primary_binfo = vid->binfo; + break; + } + + b = BINFO_INHERITANCE_CHAIN (non_primary_binfo); + if (get_primary_binfo (b) != non_primary_binfo) + break; + non_primary_binfo = b; + } /* Go through the virtual bases, adding the offsets. */ for (vbase = TYPE_BINFO (BINFO_TYPE (binfo)); *************** build_vbase_offset_vtbl_entries (binfo, *** 8049,8055 **** The vbase offsets go in reverse inheritance-graph order, and we are walking in inheritance graph order so these end up in the right order. */ ! delta = size_diffop (BINFO_OFFSET (b), BINFO_OFFSET (binfo)); *vid->last_init = build_tree_list (NULL_TREE, fold (build1 (NOP_EXPR, --- 8014,8021 ---- The vbase offsets go in reverse inheritance-graph order, and we are walking in inheritance graph order so these end up in the right order. */ ! delta = size_diffop (BINFO_OFFSET (b), BINFO_OFFSET (non_primary_binfo)); ! *vid->last_init = build_tree_list (NULL_TREE, fold (build1 (NOP_EXPR, diff -Nrc3pad gcc-3.0/gcc/cp/cp-tree.h gcc-3.0.1/gcc/cp/cp-tree.h *** gcc-3.0/gcc/cp/cp-tree.h Tue Jun 12 11:03:29 2001 --- gcc-3.0.1/gcc/cp/cp-tree.h Tue Aug 7 06:06:43 2001 *************** extern int flag_new_for_scope; *** 2593,2599 **** #define TYPE_HAS_NONTRIVIAL_DESTRUCTOR(NODE) \ (TYPE_LANG_FLAG_4(NODE)) ! /* Nonzero for class type means that initialization of this type can use a bitwise copy. */ #define TYPE_HAS_TRIVIAL_INIT_REF(NODE) \ (TYPE_HAS_INIT_REF (NODE) && ! TYPE_HAS_COMPLEX_INIT_REF (NODE)) --- 2593,2599 ---- #define TYPE_HAS_NONTRIVIAL_DESTRUCTOR(NODE) \ (TYPE_LANG_FLAG_4(NODE)) ! /* Nonzero for class type means that copy initialization of this type can use a bitwise copy. */ #define TYPE_HAS_TRIVIAL_INIT_REF(NODE) \ (TYPE_HAS_INIT_REF (NODE) && ! TYPE_HAS_COMPLEX_INIT_REF (NODE)) *************** extern int get_arglist_len_in_bytes PAR *** 3715,3720 **** --- 3715,3721 ---- extern tree build_vfield_ref PARAMS ((tree, tree)); extern tree build_scoped_method_call PARAMS ((tree, tree, tree, tree)); + extern tree build_conditional_expr PARAMS ((tree, tree, tree)); extern tree build_addr_func PARAMS ((tree)); extern tree build_call PARAMS ((tree, tree)); extern tree build_method_call PARAMS ((tree, tree, tree, tree, int)); *************** extern tree get_primary_binfo *** 3776,3781 **** --- 3777,3783 ---- /* in cvt.c */ extern tree convert_to_reference PARAMS ((tree, tree, int, int, tree)); extern tree convert_from_reference PARAMS ((tree)); + extern tree convert_lvalue PARAMS ((tree, tree)); extern tree convert_pointer_to_real PARAMS ((tree, tree)); extern tree convert_pointer_to PARAMS ((tree, tree)); extern tree ocp_convert PARAMS ((tree, tree, int, int)); *************** extern tree build_x_unary_op PARAMS (( *** 4498,4504 **** extern tree unary_complex_lvalue PARAMS ((enum tree_code, tree)); extern int mark_addressable PARAMS ((tree)); extern tree build_x_conditional_expr PARAMS ((tree, tree, tree)); - extern tree build_conditional_expr PARAMS ((tree, tree, tree)); extern tree build_x_compound_expr PARAMS ((tree)); extern tree build_compound_expr PARAMS ((tree)); extern tree build_static_cast PARAMS ((tree, tree)); --- 4500,4505 ---- diff -Nrc3pad gcc-3.0/gcc/cp/cvt.c gcc-3.0.1/gcc/cp/cvt.c *** gcc-3.0/gcc/cp/cvt.c Mon Apr 30 17:09:50 2001 --- gcc-3.0.1/gcc/cp/cvt.c Thu Aug 16 21:31:27 2001 *************** convert_from_reference (val) *** 597,602 **** --- 597,616 ---- return build_indirect_ref (val, NULL_PTR); return val; } + + /* Implicitly convert the lvalue EXPR to another lvalue of type TOTYPE, + preserving cv-qualification. */ + + tree + convert_lvalue (totype, expr) + tree totype, expr; + { + totype = cp_build_qualified_type (totype, TYPE_QUALS (TREE_TYPE (expr))); + totype = build_reference_type (totype); + expr = convert_to_reference (totype, expr, CONV_IMPLICIT, LOOKUP_NORMAL, + NULL_TREE); + return convert_from_reference (expr); + } /* Call this when we know (for any reason) that expr is not, in fact, zero. This routine is like convert_pointer_to, but it pays *************** convert_to_void (expr, implicit) *** 922,929 **** tree new_op1 = convert_to_void (op1, implicit); if (new_op1 != op1) ! expr = build (COMPOUND_EXPR, TREE_TYPE (new_op1), ! TREE_OPERAND (expr, 0), new_op1); break; } --- 936,948 ---- tree new_op1 = convert_to_void (op1, implicit); if (new_op1 != op1) ! { ! tree t = build (COMPOUND_EXPR, TREE_TYPE (new_op1), ! TREE_OPERAND (expr, 0), new_op1); ! TREE_SIDE_EFFECTS (t) = TREE_SIDE_EFFECTS (expr); ! expr = t; ! } ! break; } diff -Nrc3pad gcc-3.0/gcc/cp/decl.c gcc-3.0.1/gcc/cp/decl.c *** gcc-3.0/gcc/cp/decl.c Fri Jun 8 06:50:10 2001 --- gcc-3.0.1/gcc/cp/decl.c Thu Jul 26 01:07:24 2001 *************** make_rtl_for_nonlocal_decl (decl, init, *** 7804,7810 **** /* Set the DECL_ASSEMBLER_NAME for the variable. */ if (asmspec) ! SET_DECL_ASSEMBLER_NAME (decl, get_identifier (asmspec)); /* We don't create any RTL for local variables. */ if (DECL_FUNCTION_SCOPE_P (decl) && !TREE_STATIC (decl)) --- 7804,7817 ---- /* Set the DECL_ASSEMBLER_NAME for the variable. */ if (asmspec) ! { ! SET_DECL_ASSEMBLER_NAME (decl, get_identifier (asmspec)); ! /* The `register' keyword, when used together with an ! asm-specification, indicates that the variable should be ! placed in a particular register. */ ! if (DECL_REGISTER (decl)) ! DECL_C_HARD_REGISTER (decl) = 1; ! } /* We don't create any RTL for local variables. */ if (DECL_FUNCTION_SCOPE_P (decl) && !TREE_STATIC (decl)) *************** grokdeclarator (declarator, declspecs, d *** 11143,11148 **** --- 11150,11175 ---- && TYPE_DOMAIN (type) == NULL_TREE) { type = build_cplus_array_type (TREE_TYPE (type), TYPE_DOMAIN (type)); + } + + /* Detect where we're using a typedef of function type to declare a + function. last_function_parms will not be set, so we must create + it now. */ + + if (type == typedef_type && TREE_CODE (type) == FUNCTION_TYPE) + { + tree decls = NULL_TREE; + tree args; + + for (args = TYPE_ARG_TYPES (type); args; args = TREE_CHAIN (args)) + { + tree decl = build_decl (PARM_DECL, NULL_TREE, TREE_VALUE (args)); + + TREE_CHAIN (decl) = decls; + decls = decl; + } + + last_function_parms = nreverse (decls); } /* If this is a type name (such as, in a cast or sizeof), diff -Nrc3pad gcc-3.0/gcc/cp/decl2.c gcc-3.0.1/gcc/cp/decl2.c *** gcc-3.0/gcc/cp/decl2.c Wed Jun 6 14:51:11 2001 --- gcc-3.0.1/gcc/cp/decl2.c Thu Aug 2 07:23:11 2001 *************** lang_f_options[] = *** 473,479 **** {"for-scope", &flag_new_for_scope, 2}, {"gnu-keywords", &flag_no_gnu_keywords, 0}, {"handle-exceptions", &flag_exceptions, 1}, - {"honor-std", &flag_honor_std, 1}, {"implement-inlines", &flag_implement_inlines, 1}, {"implicit-inline-templates", &flag_implicit_inline_templates, 1}, {"implicit-templates", &flag_implicit_templates, 1}, --- 473,478 ---- *************** static const char * const unsupported_op *** 497,502 **** --- 496,502 ---- "cond-mismatch", "enum-int-equiv", "guiding-decls", + "honor-std", "huge-objects", "labels-ok", "new-abi", diff -Nrc3pad gcc-3.0/gcc/cp/except.c gcc-3.0.1/gcc/cp/except.c *** gcc-3.0/gcc/cp/except.c Sun May 20 09:24:38 2001 --- gcc-3.0.1/gcc/cp/except.c Wed Jun 27 05:15:10 2001 *************** initialize_handler_parm (decl, exp) *** 348,354 **** adjusted by value from __cxa_begin_catch. Others are returned by reference. */ init_type = TREE_TYPE (decl); ! if (TREE_CODE (init_type) != POINTER_TYPE && TREE_CODE (init_type) != REFERENCE_TYPE) init_type = build_reference_type (init_type); --- 348,354 ---- adjusted by value from __cxa_begin_catch. Others are returned by reference. */ init_type = TREE_TYPE (decl); ! if (! TYPE_PTR_P (init_type) && TREE_CODE (init_type) != REFERENCE_TYPE) init_type = build_reference_type (init_type); *************** initialize_handler_parm (decl, exp) *** 357,364 **** /* Since pointers are passed by value, initialize a reference to pointer catch parm with the address of the temporary. */ ! if (TREE_CODE (init_type) == REFERENCE_TYPE ! && TREE_CODE (TREE_TYPE (init_type)) == POINTER_TYPE) exp = build_unary_op (ADDR_EXPR, exp, 1); exp = ocp_convert (init_type, exp, CONV_IMPLICIT|CONV_FORCE_TEMP, 0); --- 357,364 ---- /* Since pointers are passed by value, initialize a reference to pointer catch parm with the address of the temporary. */ ! if (TREE_CODE (init_type) == REFERENCE_TYPE ! && TYPE_PTR_P (TREE_TYPE (init_type))) exp = build_unary_op (ADDR_EXPR, exp, 1); exp = ocp_convert (init_type, exp, CONV_IMPLICIT|CONV_FORCE_TEMP, 0); diff -Nrc3pad gcc-3.0/gcc/cp/expr.c gcc-3.0.1/gcc/cp/expr.c *** gcc-3.0/gcc/cp/expr.c Sun May 13 00:10:21 2001 --- gcc-3.0.1/gcc/cp/expr.c Wed Jul 25 02:01:32 2001 *************** cplus_expand_expr (exp, target, tmode, m *** 105,113 **** target, tmode, modifier); case OFFSET_REF: ! return expand_expr (default_conversion (resolve_offset_ref (exp)), ! target, tmode, EXPAND_NORMAL); ! case THROW_EXPR: expand_expr (TREE_OPERAND (exp, 0), const0_rtx, VOIDmode, 0); return NULL; --- 105,114 ---- target, tmode, modifier); case OFFSET_REF: ! /* Offset refs should not make it through to here. */ ! my_friendly_abort (20010724); ! return const0_rtx; ! case THROW_EXPR: expand_expr (TREE_OPERAND (exp, 0), const0_rtx, VOIDmode, 0); return NULL; diff -Nrc3pad gcc-3.0/gcc/cp/lang-options.h gcc-3.0.1/gcc/cp/lang-options.h *** gcc-3.0/gcc/cp/lang-options.h Mon Jun 11 14:20:06 2001 --- gcc-3.0.1/gcc/cp/lang-options.h Thu Aug 2 07:23:12 2001 *************** DEFINE_LANG_NAME ("C++") *** 64,72 **** N_("Do not recognise GNU defined keywords") }, { "-fhandle-exceptions", "" }, { "-fno-handle-exceptions", "" }, - { "-fhonor-std", "" }, - { "-fno-honor-std", - N_("Do not treat the namespace `std' as a normal namespace") }, { "-fhuge-objects", N_("Enable support for huge objects") }, { "-fno-huge-objects", "" }, --- 64,69 ---- diff -Nrc3pad gcc-3.0/gcc/cp/method.c gcc-3.0.1/gcc/cp/method.c *** gcc-3.0/gcc/cp/method.c Fri Jun 8 04:09:02 2001 --- gcc-3.0.1/gcc/cp/method.c Wed Jul 25 02:32:46 2001 *************** do_build_copy_constructor (fndecl) *** 560,584 **** int cvquals = CP_TYPE_QUALS (TREE_TYPE (parm)); int i; ! /* Initialize all the base-classes. */ for (t = CLASSTYPE_VBASECLASSES (current_class_type); t; t = TREE_CHAIN (t)) ! base_init_list ! = tree_cons (BINFO_TYPE (TREE_VALUE (t)), parm, ! base_init_list); for (i = 0; i < n_bases; ++i) { t = TREE_VEC_ELT (binfos, i); if (TREE_VIA_VIRTUAL (t)) continue; ! base_init_list ! = tree_cons (BINFO_TYPE (t), parm, base_init_list); } for (; fields; fields = TREE_CHAIN (fields)) { ! tree init, t; tree field = fields; if (TREE_CODE (field) != FIELD_DECL) --- 560,590 ---- int cvquals = CP_TYPE_QUALS (TREE_TYPE (parm)); int i; ! /* Initialize all the base-classes with the parameter converted to ! their type so that we get their copy constructor and not another ! constructor that takes current_class_type. */ for (t = CLASSTYPE_VBASECLASSES (current_class_type); t; t = TREE_CHAIN (t)) ! { ! tree type = BINFO_TYPE (TREE_VALUE (t)); ! base_init_list = tree_cons (type, convert_lvalue (type, parm), ! base_init_list); ! } ! for (i = 0; i < n_bases; ++i) { t = TREE_VEC_ELT (binfos, i); if (TREE_VIA_VIRTUAL (t)) continue; ! t = BINFO_TYPE (t); ! base_init_list = tree_cons (t, convert_lvalue (t, parm), ! base_init_list); } for (; fields; fields = TREE_CHAIN (fields)) { ! tree init; tree field = fields; if (TREE_CODE (field) != FIELD_DECL) *************** do_build_assign_ref (fndecl) *** 648,659 **** for (i = 0; i < n_bases; ++i) { tree basetype = BINFO_TYPE (TREE_VEC_ELT (binfos, i)); ! tree p = build_qualified_type (basetype, cvquals); ! ! p = convert_to_reference ! (build_reference_type (p), parm, ! CONV_IMPLICIT, LOOKUP_COMPLAIN, NULL_TREE); ! p = convert_from_reference (p); p = build_member_call (basetype, ansi_assopname (NOP_EXPR), build_tree_list (NULL_TREE, p)); finish_expr_stmt (p); --- 654,660 ---- for (i = 0; i < n_bases; ++i) { tree basetype = BINFO_TYPE (TREE_VEC_ELT (binfos, i)); ! tree p = convert_lvalue (basetype, parm); p = build_member_call (basetype, ansi_assopname (NOP_EXPR), build_tree_list (NULL_TREE, p)); finish_expr_stmt (p); diff -Nrc3pad gcc-3.0/gcc/cp/parse.c gcc-3.0.1/gcc/cp/parse.c *** gcc-3.0/gcc/cp/parse.c Sun Jun 17 12:51:06 2001 --- gcc-3.0.1/gcc/cp/parse.c Sun Aug 19 17:53:32 2001 *************** *** 1,6 **** /* A Bison parser, made from parse.y ! by GNU Bison version 1.28 */ #define YYBISON 1 /* Identify Bison output. */ --- 1,7 ---- /* A Bison parser, made from parse.y ! by GNU Bison version 1.27 ! */ #define YYBISON 1 /* Identify Bison output. */ *************** static const short yycheck[] = { 4, *** 4132,4138 **** }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/lib/bison.simple" ! /* This file comes from bison-1.28. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. --- 4133,4139 ---- }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/lib/bison.simple" ! /* This file comes from bison-1.27. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. *************** __yy_memcpy (char *to, char *from, unsig *** 4345,4351 **** #endif #endif ! #line 217 "/usr/lib/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. --- 4346,4352 ---- #endif #endif ! #line 216 "/usr/lib/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. *************** case 917: *** 8577,8583 **** break;} } /* the action file gets copied in in place of this dollarsign */ ! #line 543 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; --- 8578,8584 ---- break;} } /* the action file gets copied in in place of this dollarsign */ ! #line 542 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; diff -Nrc3pad gcc-3.0/gcc/cp/pt.c gcc-3.0.1/gcc/cp/pt.c *** gcc-3.0/gcc/cp/pt.c Wed Jun 6 09:12:42 2001 --- gcc-3.0.1/gcc/cp/pt.c Tue Jul 10 23:13:26 2001 *************** tsubst_decl (t, args, type) *** 5959,5970 **** ctx = tsubst_aggr_type (DECL_CONTEXT (t), args, /*complain=*/1, in_decl, /*entering_scope=*/1); else { /* Subsequent calls to pushdecl will fill this in. */ ctx = NULL_TREE; ! if (!DECL_NAMESPACE_SCOPE_P (t)) ! local_p = 1; } /* Check to see if we already have this specialization. */ --- 5959,5971 ---- ctx = tsubst_aggr_type (DECL_CONTEXT (t), args, /*complain=*/1, in_decl, /*entering_scope=*/1); + else if (DECL_NAMESPACE_SCOPE_P (t)) + ctx = DECL_CONTEXT (t); else { /* Subsequent calls to pushdecl will fill this in. */ ctx = NULL_TREE; ! local_p = 1; } /* Check to see if we already have this specialization. */ *************** unify (tparms, targs, parm, arg, strict) *** 8536,8542 **** return 1; if (!(strict & UNIFY_ALLOW_OUTER_LEVEL) ! && TYPE_P (arg) && !CP_TYPE_CONST_P (arg)) strict &= ~UNIFY_ALLOW_MORE_CV_QUAL; strict &= ~UNIFY_ALLOW_OUTER_LEVEL; strict &= ~UNIFY_ALLOW_DERIVED; --- 8537,8543 ---- return 1; if (!(strict & UNIFY_ALLOW_OUTER_LEVEL) ! && TYPE_P (parm) && !CP_TYPE_CONST_P (parm)) strict &= ~UNIFY_ALLOW_MORE_CV_QUAL; strict &= ~UNIFY_ALLOW_OUTER_LEVEL; strict &= ~UNIFY_ALLOW_DERIVED; *************** unify (tparms, targs, parm, arg, strict) *** 8744,8749 **** --- 8745,8762 ---- level of pointers. */ strict |= (strict_in & UNIFY_ALLOW_DERIVED); + if (TREE_CODE (TREE_TYPE (parm)) == OFFSET_TYPE + && TREE_CODE (TREE_TYPE (arg)) == OFFSET_TYPE) + { + /* Avoid getting confused about cv-quals; don't recurse here. + Pointers to members should really be just OFFSET_TYPE, not + this two-level nonsense... */ + + parm = TREE_TYPE (parm); + arg = TREE_TYPE (arg); + goto offset; + } + return unify (tparms, targs, TREE_TYPE (parm), TREE_TYPE (arg), strict); } *************** unify (tparms, targs, parm, arg, strict) *** 8896,8901 **** --- 8909,8915 ---- DEDUCE_EXACT, 0, -1); case OFFSET_TYPE: + offset: if (TREE_CODE (arg) != OFFSET_TYPE) return 1; if (unify (tparms, targs, TYPE_OFFSET_BASETYPE (parm), diff -Nrc3pad gcc-3.0/gcc/cp/semantics.c gcc-3.0.1/gcc/cp/semantics.c *** gcc-3.0/gcc/cp/semantics.c Wed Jun 6 14:51:11 2001 --- gcc-3.0.1/gcc/cp/semantics.c Wed Jul 11 09:57:25 2001 *************** finish_asm_stmt (cv_qualifier, string, o *** 922,929 **** } if (!processing_template_decl) ! for (t = input_operands; t; t = TREE_CHAIN (t)) ! TREE_VALUE (t) = decay_conversion (TREE_VALUE (t)); r = build_stmt (ASM_STMT, cv_qualifier, string, output_operands, input_operands, --- 922,971 ---- } if (!processing_template_decl) ! { ! int i; ! int ninputs; ! int noutputs; ! ! for (t = input_operands; t; t = TREE_CHAIN (t)) ! TREE_VALUE (t) = decay_conversion (TREE_VALUE (t)); ! ! ninputs = list_length (input_operands); ! noutputs = list_length (output_operands); ! ! for (i = 0, t = output_operands; t; t = TREE_CHAIN (t), ++i) ! { ! bool allows_mem; ! bool allows_reg; ! bool is_inout; ! const char *constraint; ! tree operand; ! ! constraint = TREE_STRING_POINTER (TREE_PURPOSE (t)); ! operand = TREE_VALUE (output_operands); ! ! if (!parse_output_constraint (&constraint, ! i, ninputs, noutputs, ! &allows_mem, ! &allows_reg, ! &is_inout)) ! { ! /* By marking the type as erroneous, we will not try to ! process this operand again in expand_asm_operands. */ ! TREE_TYPE (operand) = error_mark_node; ! continue; ! } ! ! /* If the operand is a DECL that is going to end up in ! memory, assume it is addressable. This is a bit more ! conservative than it would ideally be; the exact test is ! buried deep in expand_asm_operands and depends on the ! DECL_RTL for the OPERAND -- which we don't have at this ! point. */ ! if (!allows_reg && DECL_P (operand)) ! mark_addressable (operand); ! } ! } r = build_stmt (ASM_STMT, cv_qualifier, string, output_operands, input_operands, diff -Nrc3pad gcc-3.0/gcc/cp/spew.c gcc-3.0.1/gcc/cp/spew.c *** gcc-3.0/gcc/cp/spew.c Wed May 16 02:41:20 2001 --- gcc-3.0.1/gcc/cp/spew.c Thu Jul 26 01:16:56 2001 *************** yylex () *** 835,842 **** got_object = NULL_TREE; yychar = yychr; ! yylval = nth_token (0)->yylval; ! lineno = nth_token (0)->lineno; #ifdef SPEW_DEBUG if (spew_debug) --- 835,847 ---- got_object = NULL_TREE; yychar = yychr; ! { ! struct token *tok = nth_token (0); ! ! yylval = tok->yylval; ! if (tok->lineno) ! lineno = tok->lineno; ! } #ifdef SPEW_DEBUG if (spew_debug) diff -Nrc3pad gcc-3.0/gcc/cp/typeck.c gcc-3.0.1/gcc/cp/typeck.c *** gcc-3.0/gcc/cp/typeck.c Sun Jun 10 14:46:08 2001 --- gcc-3.0.1/gcc/cp/typeck.c Wed Jul 25 02:37:26 2001 *************** decay_conversion (exp) *** 1733,1738 **** --- 1733,1744 ---- if (type == error_mark_node) return error_mark_node; + if (type_unknown_p (exp)) + { + incomplete_type_error (exp, TREE_TYPE (exp)); + return error_mark_node; + } + /* Constants can be used directly unless they're not loadable. */ if (TREE_CODE (exp) == CONST_DECL) exp = DECL_INITIAL (exp); *************** build_binary_op (code, orig_op0, orig_op *** 3380,3396 **** int common = 0; /* Apply default conversions. */ if (code == TRUTH_AND_EXPR || code == TRUTH_ANDIF_EXPR || code == TRUTH_OR_EXPR || code == TRUTH_ORIF_EXPR || code == TRUTH_XOR_EXPR) { ! op0 = decay_conversion (orig_op0); ! op1 = decay_conversion (orig_op1); } else { ! op0 = default_conversion (orig_op0); ! op1 = default_conversion (orig_op1); } /* Strip NON_LVALUE_EXPRs, etc., since we aren't using as an lvalue. */ --- 3386,3409 ---- int common = 0; /* Apply default conversions. */ + op0 = orig_op0; + op1 = orig_op1; + if (code == TRUTH_AND_EXPR || code == TRUTH_ANDIF_EXPR || code == TRUTH_OR_EXPR || code == TRUTH_ORIF_EXPR || code == TRUTH_XOR_EXPR) { ! if (!really_overloaded_fn (op0)) ! op0 = decay_conversion (op0); ! if (!really_overloaded_fn (op1)) ! op1 = decay_conversion (op1); } else { ! if (!really_overloaded_fn (op0)) ! op0 = default_conversion (op0); ! if (!really_overloaded_fn (op1)) ! op1 = default_conversion (op1); } /* Strip NON_LVALUE_EXPRs, etc., since we aren't using as an lvalue. */ *************** condition_conversion (expr) *** 4346,4351 **** --- 4359,4366 ---- tree t; if (processing_template_decl) return expr; + if (TREE_CODE (expr) == OFFSET_REF) + expr = resolve_offset_ref (expr); t = perform_implicit_conversion (boolean_type_node, expr); t = fold (build1 (CLEANUP_POINT_EXPR, boolean_type_node, t)); return t; *************** build_static_cast (type, expr) *** 5104,5110 **** build_tree_list (NULL_TREE, expr), TYPE_BINFO (type), LOOKUP_NORMAL))); - expr = decay_conversion (expr); intype = TREE_TYPE (expr); /* FIXME handle casting to array type. */ --- 5119,5124 ---- diff -Nrc3pad gcc-3.0/gcc/cpplex.c gcc-3.0.1/gcc/cpplex.c *** gcc-3.0/gcc/cpplex.c Wed May 30 14:28:31 2001 --- gcc-3.0.1/gcc/cpplex.c Fri Aug 3 11:05:10 2001 *************** parse_string (pfile, token, terminator) *** 645,650 **** --- 645,651 ---- unsigned char *dest, *limit; cppchar_t c; unsigned int nulls = 0; + bool warned_multi = false; dest = POOL_FRONT (pool); limit = POOL_LIMIT (pool); *************** parse_string (pfile, token, terminator) *** 694,700 **** break; } ! cpp_pedwarn (pfile, "multi-line string literals are deprecated"); if (pfile->mlstring_pos.line == 0) pfile->mlstring_pos = pfile->lexer_pos; --- 695,706 ---- break; } ! if (!warned_multi) ! { ! warned_multi = true; ! cpp_pedwarn (pfile, "multi-line string literals are deprecated"); ! } ! if (pfile->mlstring_pos.line == 0) pfile->mlstring_pos = pfile->lexer_pos; diff -Nrc3pad gcc-3.0/gcc/cpplib.c gcc-3.0.1/gcc/cpplib.c *** gcc-3.0/gcc/cpplib.c Sun May 27 11:10:15 2001 --- gcc-3.0.1/gcc/cpplib.c Fri Aug 3 11:05:10 2001 *************** _cpp_do_file_change (pfile, reason, from *** 867,873 **** fc.from.filename = from_file; fc.from.lineno = from_lineno; ! pfile->cb.file_change (pfile, &fc); } } --- 867,873 ---- fc.from.filename = from_file; fc.from.lineno = from_lineno; ! (*pfile->cb.file_change) (pfile, &fc); } } diff -Nrc3pad gcc-3.0/gcc/cppmacro.c gcc-3.0.1/gcc/cppmacro.c *** gcc-3.0/gcc/cppmacro.c Tue Mar 27 12:57:10 2001 --- gcc-3.0.1/gcc/cppmacro.c Mon Jun 25 10:43:17 2001 *************** make_string_token (pool, token, text, le *** 105,115 **** const U_CHAR *text; unsigned int len; { ! U_CHAR *buf = _cpp_pool_alloc (pool, len * 4); token->type = CPP_STRING; token->val.str.text = buf; token->val.str.len = quote_string (buf, text, len) - buf; token->flags = 0; } --- 105,116 ---- const U_CHAR *text; unsigned int len; { ! U_CHAR *buf = _cpp_pool_alloc (pool, len * 4 + 1); token->type = CPP_STRING; token->val.str.text = buf; token->val.str.len = quote_string (buf, text, len) - buf; + buf[token->val.str.len] = '\0'; token->flags = 0; } diff -Nrc3pad gcc-3.0/gcc/cse.c gcc-3.0.1/gcc/cse.c *** gcc-3.0/gcc/cse.c Thu May 10 17:21:29 2001 --- gcc-3.0.1/gcc/cse.c Thu Jul 26 11:27:52 2001 *************** cse_process_notes (x, object) *** 6450,6456 **** return x; case MEM: ! XEXP (x, 0) = cse_process_notes (XEXP (x, 0), x); return x; case EXPR_LIST: --- 6450,6457 ---- return x; case MEM: ! validate_change (x, &XEXP (x, 0), ! cse_process_notes (XEXP (x, 0), x), 0); return x; case EXPR_LIST: diff -Nrc3pad gcc-3.0/gcc/defaults.h gcc-3.0.1/gcc/defaults.h *** gcc-3.0/gcc/defaults.h Sat Jun 9 12:22:26 2001 --- gcc-3.0.1/gcc/defaults.h Wed Jul 18 13:45:47 2001 *************** do { ASM_OUTPUT_LABEL(FILE,LABEL_ALTERNA *** 130,135 **** --- 130,149 ---- ASM_OUTPUT_INTERNAL_LABEL (FILE, PREFIX, NUM) #endif + /* This is how we tell the assembler that a symbol is weak. */ + #ifndef ASM_OUTPUT_WEAK_ALIAS + #if defined (ASM_WEAKEN_LABEL) && defined (ASM_OUTPUT_DEF) + #define ASM_OUTPUT_WEAK_ALIAS(STREAM, NAME, VALUE) \ + do \ + { \ + ASM_WEAKEN_LABEL (STREAM, NAME); \ + if (VALUE) \ + ASM_OUTPUT_DEF (STREAM, NAME, VALUE); \ + } \ + while (0) + #endif + #endif + /* This determines whether or not we support weak symbols. */ #ifndef SUPPORTS_WEAK #ifdef ASM_WEAKEN_LABEL diff -Nrc3pad gcc-3.0/gcc/doc/c-tree.texi gcc-3.0.1/gcc/doc/c-tree.texi *** gcc-3.0/gcc/doc/c-tree.texi Thu Jun 14 15:54:19 2001 --- gcc-3.0.1/gcc/doc/c-tree.texi Sun Jul 8 16:13:37 2001 *************** *** 8,14 **** @c --------------------------------------------------------------------- @node Trees ! @chapter Trees: The intermediate representation used by the C and C++ front-ends @cindex Trees @cindex C/C++ Internal Representation --- 8,14 ---- @c --------------------------------------------------------------------- @node Trees ! @chapter Trees: The intermediate representation used by the C and C++ front ends @cindex Trees @cindex C/C++ Internal Representation *************** source program, GCC parses the program, *** 18,24 **** (including the generation of error messages), and then produces the internal representation described here. This representation contains a complete representation for the entire translation unit provided as ! input to the front-end. This representation is then typically processed by a code-generator in order to produce machine code, but could also be used in the creation of source browsers, intelligent editors, automatic documentation generators, interpreters, and any other programs needing --- 18,24 ---- (including the generation of error messages), and then produces the internal representation described here. This representation contains a complete representation for the entire translation unit provided as ! input to the front end. This representation is then typically processed by a code-generator in order to produce machine code, but could also be used in the creation of source browsers, intelligent editors, automatic documentation generators, interpreters, and any other programs needing *************** This chapter explains the internal repre *** 28,40 **** documents the internal representation for C and C++ source constructs, and the macros, functions, and variables that can be used to access these constructs. The C++ representation which is largely a superset ! of the representation used in the C front-end. There is only one ! construct used in C that does not appear in the C++ front-end and that is the GNU ``nested function'' extension. Many of the macros documented here do not apply in C because the corresponding language constructs do ! not appear in C. ! If you are developing a ``back-end'', be it is a code-generator or some other tool, that uses this representation, you may occasionally find that you need to ask questions not easily answered by the functions and macros available here. If that situation occurs, it is quite likely --- 28,40 ---- documents the internal representation for C and C++ source constructs, and the macros, functions, and variables that can be used to access these constructs. The C++ representation which is largely a superset ! of the representation used in the C front end. There is only one ! construct used in C that does not appear in the C++ front end and that is the GNU ``nested function'' extension. Many of the macros documented here do not apply in C because the corresponding language constructs do ! not appear in C@. ! If you are developing a ``back end'', be it is a code-generator or some other tool, that uses this representation, you may occasionally find that you need to ask questions not easily answered by the functions and macros available here. If that situation occurs, it is quite likely *************** that GCC already supports the functional *** 42,50 **** interface is simply not documented here. In that case, you should ask the GCC maintainers (via mail to @email{gcc@@gcc.gnu.org}) about documenting the functionality you require. Similarly, if you find ! yourself writing functions that do not deal directly with your back-end, ! but instead might be useful to other people using the GCC front-end, you ! should submit your patches for inclusion in GCC. @menu * Deficiencies:: Topics net yet covered in this document. --- 42,50 ---- interface is simply not documented here. In that case, you should ask the GCC maintainers (via mail to @email{gcc@@gcc.gnu.org}) about documenting the functionality you require. Similarly, if you find ! yourself writing functions that do not deal directly with your back end, ! but instead might be useful to other people using the GCC front end, you ! should submit your patches for inclusion in GCC@. @menu * Deficiencies:: Topics net yet covered in this document. *************** should submit your patches for inclusion *** 53,58 **** --- 53,59 ---- * Scopes:: Namespaces and classes. * Functions:: Overloading, function bodies, and linkage. * Declarations:: Type declarations and variables. + * Attributes:: Declaration and type attributes. * Expression trees:: From @code{typeid} to @code{throw}. @end menu *************** return trees as output. However, most m *** 88,94 **** tree node as input. In other words, there is a type-system for trees, but it is not reflected in the C type-system. ! For safety, it is useful to configure G++ with @option{--enable-checking}. Although this results in a significant performance penalty (since all tree types are checked at run-time), and is therefore inappropriate in a release version, it is extremely helpful during the development process. --- 89,95 ---- tree node as input. In other words, there is a type-system for trees, but it is not reflected in the C type-system. ! For safety, it is useful to configure GCC with @option{--enable-checking}. Although this results in a significant performance penalty (since all tree types are checked at run-time), and is therefore inappropriate in a release version, it is extremely helpful during the development process. *************** The @code{error_mark_node} is a special *** 134,140 **** the usual practice is to compare the tree against @code{error_mark_node}. (This test is just a test for pointer equality.) If an error has occurred during front-end processing the ! flag @code{errorcount} will be set. If the front-end has encountered code it cannot handle, it will issue a message to the user and set @code{sorrycount}. When these flags are set, any macro or function which normally returns a tree of a particular kind may instead return --- 135,141 ---- the usual practice is to compare the tree against @code{error_mark_node}. (This test is just a test for pointer equality.) If an error has occurred during front-end processing the ! flag @code{errorcount} will be set. If the front end has encountered code it cannot handle, it will issue a message to the user and set @code{sorrycount}. When these flags are set, any macro or function which normally returns a tree of a particular kind may instead return *************** erroneous code, you must be prepared to *** 144,159 **** Occasionally, a particular tree slot (like an operand to an expression, or a particular field in a declaration) will be referred to as ! ``reserved for the back-end.'' These slots are used to store RTL when ! the tree is converted to RTL for use by the GCC back-end. However, if ! that process is not taking place (e.g., if the front-end is being hooked up to an intelligent editor), then those slots may be used by the ! back-end presently in use. If you encounter situations that do not match this documentation, such as tree nodes of types not mentioned here, or macros documented to return entities of a particular kind that instead return entities of ! some different kind, you have found a bug, either in the front-end or in the documentation. Please report these bugs as you would any other bug. --- 145,160 ---- Occasionally, a particular tree slot (like an operand to an expression, or a particular field in a declaration) will be referred to as ! ``reserved for the back end.'' These slots are used to store RTL when ! the tree is converted to RTL for use by the GCC back end. However, if ! that process is not taking place (e.g., if the front end is being hooked up to an intelligent editor), then those slots may be used by the ! back end presently in use. If you encounter situations that do not match this documentation, such as tree nodes of types not mentioned here, or macros documented to return entities of a particular kind that instead return entities of ! some different kind, you have found a bug, either in the front end or in the documentation. Please report these bugs as you would any other bug. *************** This predicate holds for a pointer to fu *** 401,407 **** @item TYPE_PTROB_P This predicate holds for a pointer to object type. Note however that it ! does not hold for the generic pointer to object type @code{void *}. You may use @code{TYPE_PTROBV_P} to test for a pointer to object type as well as @code{void *}. --- 402,408 ---- @item TYPE_PTROB_P This predicate holds for a pointer to object type. Note however that it ! does not hold for the generic pointer to object type @code{void *}. You may use @code{TYPE_PTROBV_P} to test for a pointer to object type as well as @code{void *}. *************** arguments. *** 499,505 **** Note that in C (but not in C++) a function declared like @code{void f()} is an unprototyped function taking a variable number of arguments; the ! @code{TYPE_ARG_TYPES} of such a function will be NULL. @item METHOD_TYPE Used to represent the type of a non-static member function. Like a --- 500,506 ---- Note that in C (but not in C++) a function declared like @code{void f()} is an unprototyped function taking a variable number of arguments; the ! @code{TYPE_ARG_TYPES} of such a function will be NULL@. @item METHOD_TYPE Used to represent the type of a non-static member function. Like a *************** the type of @code{m}. *** 544,550 **** @item TYPENAME_TYPE Used to represent a construct of the form @code{typename T::A}. The @code{TYPE_CONTEXT} is @code{T}; the @code{TYPE_NAME} is an ! @code{IDENTIFIER_NODE} for @code{A}. If the type is specified via a template-id, then @code{TYPENAME_TYPE_FULLNAME} yields a @code{TEMPLATE_ID_EXPR}. The @code{TREE_TYPE} is non-@code{NULL} if the node is implicitly generated in support for the implicit typename --- 545,551 ---- @item TYPENAME_TYPE Used to represent a construct of the form @code{typename T::A}. The @code{TYPE_CONTEXT} is @code{T}; the @code{TYPE_NAME} is an ! @code{IDENTIFIER_NODE} for @code{A}. If the type is specified via a template-id, then @code{TYPENAME_TYPE_FULLNAME} yields a @code{TEMPLATE_ID_EXPR}. The @code{TREE_TYPE} is non-@code{NULL} if the node is implicitly generated in support for the implicit typename *************** If there are no declarations, this funct *** 677,683 **** Although most entries on this list will be declarations, @code{TREE_LIST} nodes may also appear. In this case, the @code{TREE_VALUE} will be an @code{OVERLOAD}. The value of the ! @code{TREE_PURPOSE} is unspecified; back-ends should ignore this value. As with the other kinds of declarations returned by @code{cp_namespace_decls}, the @code{TREE_CHAIN} will point to the next declaration in this list. --- 678,684 ---- Although most entries on this list will be declarations, @code{TREE_LIST} nodes may also appear. In this case, the @code{TREE_VALUE} will be an @code{OVERLOAD}. The value of the ! @code{TREE_PURPOSE} is unspecified; back ends should ignore this value. As with the other kinds of declarations returned by @code{cp_namespace_decls}, the @code{TREE_CHAIN} will point to the next declaration in this list. *************** Almost all non-function members are avai *** 724,730 **** list. Given one member, the next can be found by following the @code{TREE_CHAIN}. You should not depend in any way on the order in which fields appear on this list. All nodes on this list will be ! @samp{DECL} nodes. A @code{FIELD_DECL} is used to represent a non-static data member, a @code{VAR_DECL} is used to represent a static data member, and a @code{TYPE_DECL} is used to represent a type. Note that the @code{CONST_DECL} for an enumeration constant will appear on this --- 725,731 ---- list. Given one member, the next can be found by following the @code{TREE_CHAIN}. You should not depend in any way on the order in which fields appear on this list. All nodes on this list will be ! @samp{DECL} nodes. A @code{FIELD_DECL} is used to represent a non-static data member, a @code{VAR_DECL} is used to represent a static data member, and a @code{TYPE_DECL} is used to represent a type. Note that the @code{CONST_DECL} for an enumeration constant will appear on this *************** object. *** 736,742 **** The @code{TYPE_VFIELD} is a compiler-generated field used to point to virtual function tables. It may or may not appear on the ! @code{TYPE_FIELDS} list. However, back-ends should handle the @code{TYPE_VFIELD} just like all the entries on the @code{TYPE_FIELDS} list. --- 737,743 ---- The @code{TYPE_VFIELD} is a compiler-generated field used to point to virtual function tables. It may or may not appear on the ! @code{TYPE_FIELDS} list. However, back ends should handle the @code{TYPE_VFIELD} just like all the entries on the @code{TYPE_FIELDS} list. *************** analogous to @code{TYPE_SIZE} and @code{ *** 930,936 **** you should always use the @code{DECL_SIZE} and @code{DECL_ALIGN} rather than the @code{TYPE_SIZE} and @code{TYPE_ALIGN} given by the @code{TREE_TYPE}, since special attributes may have been applied to the ! variable to give it a particular size and alignment. You may use the predicates @code{DECL_THIS_STATIC} or @code{DECL_THIS_EXTERN} to test whether the storage class specifiers @code{static} or @code{extern} were used to declare a variable. --- 931,937 ---- you should always use the @code{DECL_SIZE} and @code{DECL_ALIGN} rather than the @code{TYPE_SIZE} and @code{TYPE_ALIGN} given by the @code{TREE_TYPE}, since special attributes may have been applied to the ! variable to give it a particular size and alignment. You may use the predicates @code{DECL_THIS_STATIC} or @code{DECL_THIS_EXTERN} to test whether the storage class specifiers @code{static} or @code{extern} were used to declare a variable. *************** These nodes are used to represent class, *** 978,984 **** data member) templates. The @code{DECL_TEMPLATE_SPECIALIZATIONS} are a @code{TREE_LIST}. The @code{TREE_VALUE} of each node in the list is a @code{TEMPLATE_DECL}s or @code{FUNCTION_DECL}s representing ! specializations (including instantiations) of this template. Back-ends can safely ignore @code{TEMPLATE_DECL}s, but should examine @code{FUNCTION_DECL} nodes on the specializations list just as they would ordinary @code{FUNCTION_DECL} nodes. --- 979,985 ---- data member) templates. The @code{DECL_TEMPLATE_SPECIALIZATIONS} are a @code{TREE_LIST}. The @code{TREE_VALUE} of each node in the list is a @code{TEMPLATE_DECL}s or @code{FUNCTION_DECL}s representing ! specializations (including instantiations) of this template. Back ends can safely ignore @code{TEMPLATE_DECL}s, but should examine @code{FUNCTION_DECL} nodes on the specializations list just as they would ordinary @code{FUNCTION_DECL} nodes. *************** contains partial specializations of the *** 990,996 **** @item USING_DECL ! Back-ends can safely ignore these nodes. @end table --- 991,997 ---- @item USING_DECL ! Back ends can safely ignore these nodes. @end table *************** representation indicates that the GNU ne *** 1044,1055 **** use. For details on the semantics of nested functions, see the GCC Manual. The nested function can refer to local variables in its containing function. Such references are not explicitly marked in the ! tree structure; back-ends must look at the @code{DECL_CONTEXT} for the referenced @code{VAR_DECL}. If the @code{DECL_CONTEXT} for the referenced @code{VAR_DECL} is not the same as the function currently being processed, and neither @code{DECL_EXTERNAL} nor @code{DECL_STATIC} hold, then the reference is to a local variable in a containing ! function, and the back-end must take appropriate action. @menu * Function Basics:: Function names, linkage, and so forth. --- 1045,1056 ---- use. For details on the semantics of nested functions, see the GCC Manual. The nested function can refer to local variables in its containing function. Such references are not explicitly marked in the ! tree structure; back ends must look at the @code{DECL_CONTEXT} for the referenced @code{VAR_DECL}. If the @code{DECL_CONTEXT} for the referenced @code{VAR_DECL} is not the same as the function currently being processed, and neither @code{DECL_EXTERNAL} nor @code{DECL_STATIC} hold, then the reference is to a local variable in a containing ! function, and the back end must take appropriate action. @menu * Function Basics:: Function names, linkage, and so forth. *************** This macro returns the mangled name of t *** 1103,1110 **** on systems that prefix all identifiers with underscores. The mangled name is computed in the same way on all platforms; if special processing is required to deal with the object file format used on a particular ! platform, it is the responsibility of the back-end to perform those ! modifications. (Of course, the back-end should not modify @code{DECL_ASSEMBLER_NAME} itself.) @item DECL_EXTERNAL --- 1104,1111 ---- on systems that prefix all identifiers with underscores. The mangled name is computed in the same way on all platforms; if special processing is required to deal with the object file format used on a particular ! platform, it is the responsibility of the back end to perform those ! modifications. (Of course, the back end should not modify @code{DECL_ASSEMBLER_NAME} itself.) @item DECL_EXTERNAL *************** This predicate holds if the function an *** 1327,1333 **** @findex WHILE_COND A function that has a definition in the current translation unit will ! have a non-NULL @code{DECL_INITIAL}. However, back-ends should not make use of the particular value given by @code{DECL_INITIAL}. The @code{DECL_SAVED_TREE} macro will give the complete body of the --- 1328,1334 ---- @findex WHILE_COND A function that has a definition in the current translation unit will ! have a non-NULL @code{DECL_INITIAL}. However, back ends should not make use of the particular value given by @code{DECL_INITIAL}. The @code{DECL_SAVED_TREE} macro will give the complete body of the *************** The first value will be @code{CASE_LOW}, *** 1462,1468 **** Used to represent an action that should take place upon exit from the enclosing scope. Typically, these actions are calls to destructors for ! local objects, but back-ends cannot rely on this fact. If these nodes are in fact representing such destructors, @code{CLEANUP_DECL} will be the @code{VAR_DECL} destroyed. Otherwise, @code{CLEANUP_DECL} will be @code{NULL_TREE}. In any case, the @code{CLEANUP_EXPR} is the --- 1463,1469 ---- Used to represent an action that should take place upon exit from the enclosing scope. Typically, these actions are calls to destructors for ! local objects, but back ends cannot rely on this fact. If these nodes are in fact representing such destructors, @code{CLEANUP_DECL} will be the @code{VAR_DECL} destroyed. Otherwise, @code{CLEANUP_DECL} will be @code{NULL_TREE}. In any case, the @code{CLEANUP_EXPR} is the *************** should be run in the reverse order of th *** 1475,1480 **** --- 1476,1483 ---- Used to represent a brace-enclosed block. The first substatement is given by @code{COMPOUND_BODY}. Subsequent substatements are found by following the @code{TREE_CHAIN} link from one substatement to the next. + The @code{COMPOUND_BODY} will be @code{NULL_TREE} if there are no + substatements. @item CONTINUE_STMT *************** scope; if @code{SCOPE_END_P} holds this *** 1596,1602 **** a scope. On exit from a scope, all cleanups from @code{CLEANUP_STMT}s occurring in the scope must be run, in reverse order to the order in which they were encountered. If @code{SCOPE_NULLIFIED_P} or ! @code{SCOPE_NO_CLEANUPS_P} holds of the scope, back-ends should behave as if the @code{SCOPE_STMT} were not present at all. @item START_CATCH_STMT --- 1599,1605 ---- a scope. On exit from a scope, all cleanups from @code{CLEANUP_STMT}s occurring in the scope must be run, in reverse order to the order in which they were encountered. If @code{SCOPE_NULLIFIED_P} or ! @code{SCOPE_NO_CLEANUPS_P} holds of the scope, back ends should behave as if the @code{SCOPE_STMT} were not present at all. @item START_CATCH_STMT *************** And, if an exception is thrown while the *** 1638,1645 **** @code{terminate} must be called. @item USING_STMT ! Used to represent a @code{using} directive. The namespace is given by ! @code{USING_STMT_NAMESPACE}, which will be a NAMESPACE_DECL. This node is needed inside template functions, to implement using directives during instantiation. --- 1641,1648 ---- @code{terminate} must be called. @item USING_STMT ! Used to represent a @code{using} directive. The namespace is given by ! @code{USING_STMT_NAMESPACE}, which will be a NAMESPACE_DECL@. This node is needed inside template functions, to implement using directives during instantiation. *************** The @code{WHILE_BODY} is the body of the *** 1655,1660 **** --- 1658,1697 ---- @end table @c --------------------------------------------------------------------- + @c Attributes + @c --------------------------------------------------------------------- + @node Attributes + @section Attributes in trees + @cindex attributes + + Attributes, as specified using the @code{__attribute__} keyword, are + represented internally as a @code{TREE_LIST}. The @code{TREE_PURPOSE} + is the name of the attribute, as an @code{IDENTIFIER_NODE}. The + @code{TREE_VALUE} is a @code{TREE_LIST} of the arguments of the + attribute, if any, or @code{NULL_TREE} if there are no arguments; the + arguments are stored as the @code{TREE_VALUE} of successive entries in + the list, and may be identifiers or expressions. The @code{TREE_CHAIN} + of the attribute is the next attribute in a list of attributes applying + to the same declaration or type, or @code{NULL_TREE} if there are no + further attributes in the list. + + Attributes may be attached to declarations and to types; these + attributes may be accessed with the following macros. At present only + machine-dependent attributes are stored in this way (other attributes + cause changes to the declaration or type or to other internal compiler + data structures, but are not themselves stored along with the + declaration or type), but in future all attributes may be stored like + this. + + @deftypefn {Tree Macro} tree DECL_MACHINE_ATTRIBUTES (tree @var{decl}) + This macro returns the attributes on the declaration @var{decl}. + @end deftypefn + + @deftypefn {Tree Macro} tree TYPE_ATTRIBUTES (tree @var{type}) + This macro returns the attributes on the type @var{type}. + @end deftypefn + + @c --------------------------------------------------------------------- @c Expressions @c --------------------------------------------------------------------- *************** same type that would be given the expres *** 1745,1754 **** In what follows, some nodes that one might expect to always have type @code{bool} are documented to have either integral or boolean type. At ! some point in the future, the C front-end may also make use of this same intermediate representation, and at this point these nodes will certainly have integral type. The previous sentence is not meant to ! imply that the C++ front-end does not or will not give these nodes integral type. Below, we list the various kinds of expression nodes. Except where --- 1782,1791 ---- In what follows, some nodes that one might expect to always have type @code{bool} are documented to have either integral or boolean type. At ! some point in the future, the C front end may also make use of this same intermediate representation, and at this point these nodes will certainly have integral type. The previous sentence is not meant to ! imply that the C++ front end does not or will not give these nodes integral type. Below, we list the various kinds of expression nodes. Except where *************** of complex numbers (their sole argument) *** 1927,1933 **** @item NON_LVALUE_EXPR These nodes indicate that their one and only operand is not an lvalue. ! A back-end can treat these identically to the single operand. @item NOP_EXPR These nodes are used to represent conversions that do not require any --- 1964,1970 ---- @item NON_LVALUE_EXPR These nodes indicate that their one and only operand is not an lvalue. ! A back end can treat these identically to the single operand. @item NOP_EXPR These nodes are used to represent conversions that do not require any *************** an expression for the code that should b *** 1954,1960 **** exception. However, there is one implicit action not represented in that expression; namely the call to @code{__throw}. This function takes no arguments. If @code{setjmp}/@code{longjmp} exceptions are used, the ! function @code{__sjthrow} is called instead. The normal GCC back-end uses the function @code{emit_throw} to generate this code; you can examine this function to see what needs to be done. --- 1991,1997 ---- exception. However, there is one implicit action not represented in that expression; namely the call to @code{__throw}. This function takes no arguments. If @code{setjmp}/@code{longjmp} exceptions are used, the ! function @code{__sjthrow} is called instead. The normal GCC back end uses the function @code{emit_throw} to generate this code; you can examine this function to see what needs to be done. *************** boolean or integral type. *** 1987,1993 **** @itemx TRUTH_XOR_EXPR These nodes represent logical and, logical or, and logical exclusive or. They are strict; both arguments are always evaluated. There are no ! corresponding operators in C or C++, but the front-end will sometimes generate these expressions anyhow, if it can tell that strictness does not matter. --- 2024,2030 ---- @itemx TRUTH_XOR_EXPR These nodes represent logical and, logical or, and logical exclusive or. They are strict; both arguments are always evaluated. There are no ! corresponding operators in C or C++, but the front end will sometimes generate these expressions anyhow, if it can tell that strictness does not matter. *************** performed immediately after the expressi *** 2149,2155 **** @item CONSTRUCTOR These nodes represent the brace-enclosed initializers for a structure or ! array. The first operand is reserved for use by the back-end. The second operand is a @code{TREE_LIST}. If the @code{TREE_TYPE} of the @code{CONSTRUCTOR} is a @code{RECORD_TYPE} or @code{UNION_TYPE}, then the @code{TREE_PURPOSE} of each node in the @code{TREE_LIST} will be a --- 2186,2192 ---- @item CONSTRUCTOR These nodes represent the brace-enclosed initializers for a structure or ! array. The first operand is reserved for use by the back end. The second operand is a @code{TREE_LIST}. If the @code{TREE_TYPE} of the @code{CONSTRUCTOR} is a @code{RECORD_TYPE} or @code{UNION_TYPE}, then the @code{TREE_PURPOSE} of each node in the @code{TREE_LIST} will be a diff -Nrc3pad gcc-3.0/gcc/doc/contrib.texi gcc-3.0.1/gcc/doc/contrib.texi *** gcc-3.0/gcc/doc/contrib.texi Thu Jun 14 15:54:19 2001 --- gcc-3.0.1/gcc/doc/contrib.texi Wed Jun 27 08:08:23 2001 *************** the Intel 80387 register stack. *** 28,34 **** Alasdair Baird for various bugfixes. @item ! Gerald Baumgartner added the signature extension to the C++ front-end. @item Neil Booth for various work on cpplib. --- 28,34 ---- Alasdair Baird for various bugfixes. @item ! Gerald Baumgartner added the signature extension to the C++ front end. @item Neil Booth for various work on cpplib. *************** Ulrich Drepper for his work on the C++ r *** 104,110 **** testing of GCC using glibc, ISO C99 support, CFG dumping support, etc. @item ! Richard Earnshaw for his ongoing work with the ARM. @item David Edelsohn for his direction via the steering committee, --- 104,110 ---- testing of GCC using glibc, ISO C99 support, CFG dumping support, etc. @item ! Richard Earnshaw for his ongoing work with the ARM@. @item David Edelsohn for his direction via the steering committee, *************** ongoing work with the RS6000/PowerPC por *** 112,118 **** loop changes. @item ! Paul Eggert for random hacking all over gcc. @item Mark Elbrecht for various DJGPP improvements. --- 112,118 ---- loop changes. @item ! Paul Eggert for random hacking all over GCC@. @item Mark Elbrecht for various DJGPP improvements. *************** J. Kean Johnston for OpenServer support. *** 218,224 **** Klaus Kaempf for his ongoing work to make alpha-vms a viable target. @item ! David Kashtan of SRI adapted GCC to VMS. @item Geoffrey Keating for his ongoing work to make the PPC work for Linux. --- 218,224 ---- Klaus Kaempf for his ongoing work to make alpha-vms a viable target. @item ! David Kashtan of SRI adapted GCC to VMS@. @item Geoffrey Keating for his ongoing work to make the PPC work for Linux. *************** Brendan Kehoe for his ongoing work with *** 228,234 **** @item Oliver M. Kellogg of Deutsche Aerospace contributed the port to the ! MIL-STD-1750A. @item Richard Kenner of the New York University Ultracomputer Research --- 228,234 ---- @item Oliver M. Kellogg of Deutsche Aerospace contributed the port to the ! MIL-STD-1750A@. @item Richard Kenner of the New York University Ultracomputer Research *************** Kriang Lerdsuwanakij for improvements to *** 282,288 **** @item Warren Levy major work on libgcj (Java Runtime Library) and random ! work on the Java front-end. @item Alain Lichnewsky ported GCC to the Mips cpu. --- 282,288 ---- @item Warren Levy major work on libgcj (Java Runtime Library) and random ! work on the Java front end. @item Alain Lichnewsky ported GCC to the Mips cpu. diff -Nrc3pad gcc-3.0/gcc/doc/cpp.1 gcc-3.0.1/gcc/doc/cpp.1 *** gcc-3.0/gcc/doc/cpp.1 Fri Jun 15 10:59:34 2001 --- gcc-3.0.1/gcc/doc/cpp.1 Mon Jul 2 17:50:55 2001 *************** *** 1,5 **** .\" Automatically generated by Pod::Man version 1.16 ! .\" Fri Jun 15 10:40:40 2001 .\" .\" Standard preamble: .\" ====================================================================== --- 1,5 ---- .\" Automatically generated by Pod::Man version 1.16 ! .\" Tue Jul 3 00:41:06 2001 .\" .\" Standard preamble: .\" ====================================================================== *************** *** 138,144 **** .\" ====================================================================== .\" .IX Title "CPP 1" ! .TH CPP 1 "gcc-3.1" "2001-06-15" "GNU" .UC .SH "NAME" cpp \- The C Preprocessor --- 138,144 ---- .\" ====================================================================== .\" .IX Title "CPP 1" ! .TH CPP 1 "gcc-3.0.1" "2001-07-03" "GNU" .UC .SH "NAME" cpp \- The C Preprocessor *************** you to define \fImacros\fR, which are br *** 161,167 **** constructs. .PP The C preprocessor is intended to be used only with C, \*(C+, and ! Objective C source code. In the past, it has been abused as a general text processor. It will choke on input which does not obey C's lexical rules. For example, apostrophes will be interpreted as the beginning of character constants, and cause errors. Also, you cannot rely on it --- 161,167 ---- constructs. .PP The C preprocessor is intended to be used only with C, \*(C+, and ! Objective-C source code. In the past, it has been abused as a general text processor. It will choke on input which does not obey C's lexical rules. For example, apostrophes will be interpreted as the beginning of character constants, and cause errors. Also, you cannot rely on it *************** Either \fIinfile\fR or \fIoutfile\fR may *** 203,213 **** means to write to standard output. Also, if either file is omitted, it means the same as if \fB-\fR had been specified for that file. .PP ! All single-letter options which take an argument may have that argument ! appear immediately after the option letter, or with a space between ! option and argument: \fB\-Ifoo\fR and \fB\-I foo\fR have the same ! effect. Long options that take arguments require a space between option ! and argument. .Ip "\fB\-D\fR \fIname\fR" 4 .IX Item "-D name" Predefine \fIname\fR as a macro, with definition \f(CW\*(C`1\*(C'\fR. --- 203,216 ---- means to write to standard output. Also, if either file is omitted, it means the same as if \fB-\fR had been specified for that file. .PP ! Unless otherwise noted, or the option ends in \fB=\fR, all options ! which take an argument may have that argument appear either immediately ! after the option, or with a space between option and argument: ! \&\fB\-Ifoo\fR and \fB\-I foo\fR have the same effect. ! .PP ! Many options have multi-letter names; therefore multiple single-letter ! options may \fInot\fR be grouped: \fB\-dM\fR is very different from ! \&\fB\-d\ \-M\fR. .Ip "\fB\-D\fR \fIname\fR" 4 .IX Item "-D name" Predefine \fIname\fR as a macro, with definition \f(CW\*(C`1\*(C'\fR. *************** For example, \fB\-MT\ '$(objpfx)foo.o'\f *** 376,382 **** .Ip "\fB\-MQ\fR \fItarget\fR" 4 .IX Item "-MQ target" Same as \fB\-MT\fR, but it quotes any characters which are special to ! Make. \fB\-MQ\ '$(objpfx)foo.o'\fR gives .Sp .Vb 1 \& $$(objpfx)foo.o: foo.c --- 379,385 ---- .Ip "\fB\-MQ\fR \fItarget\fR" 4 .IX Item "-MQ target" Same as \fB\-MT\fR, but it quotes any characters which are special to ! Make. \fB\-MQ\ '$(objpfx)foo.o'\fR gives .Sp .Vb 1 \& $$(objpfx)foo.o: foo.c *************** is applied to the standard system direct *** 553,560 **** Indicate to the preprocessor that the input file has already been preprocessed. This suppresses things like macro expansion, trigraph conversion, escaped newline splicing, and processing of most directives. ! In this mode the integrated preprocessor is little more than a tokenizer ! for the front ends. .Sp \&\fB\-fpreprocessed\fR is implicit if the input file has one of the extensions \fB.i\fR, \fB.ii\fR or \fB.mi\fR. These are the --- 556,565 ---- Indicate to the preprocessor that the input file has already been preprocessed. This suppresses things like macro expansion, trigraph conversion, escaped newline splicing, and processing of most directives. ! The preprocessor still recognizes and removes comments, so that you can ! pass a file preprocessed with \fB\-C\fR to the compiler without ! problems. In this mode the integrated preprocessor is little more than ! a tokenizer for the front ends. .Sp \&\fB\-fpreprocessed\fR is implicit if the input file has one of the extensions \fB.i\fR, \fB.ii\fR or \fB.mi\fR. These are the *************** Cancel all predefined assertions and all *** 587,594 **** the command line. Also, undefine all predefined macros and all macros preceding it on the command line. (This is a historical wart and may change in the future.) ! .Ip "\fB\-dM\fR" 4 ! .IX Item "-dM" Instead of the normal output, generate a list of \fB#define\fR directives for all the macros defined during the execution of the preprocessor, including predefined macros. This gives you a way of --- 592,607 ---- the command line. Also, undefine all predefined macros and all macros preceding it on the command line. (This is a historical wart and may change in the future.) ! .Ip "\fB\-dCHARS\fR" 4 ! .IX Item "-dCHARS" ! \&\fI\s-1CHARS\s0\fR is a sequence of one or more of the following characters, ! and must not be preceded by a space. Other characters are interpreted ! by the compiler proper, or reserved for future versions of \s-1GCC\s0, and so ! are silently ignored. If you specify characters whose behavior ! conflicts, the result is undefined. ! .RS 4 ! .Ip "\fBM\fR" 4 ! .IX Item "M" Instead of the normal output, generate a list of \fB#define\fR directives for all the macros defined during the execution of the preprocessor, including predefined macros. This gives you a way of *************** Assuming you have no file \fIfoo.h\fR, t *** 599,617 **** \& touch foo.h; cpp -dM foo.h .Ve will show all the predefined macros. ! .Ip "\fB\-dD\fR" 4 ! .IX Item "-dD" ! Like \fB\-dM\fR except in two respects: it does \fInot\fR include the predefined macros, and it outputs \fIboth\fR the \fB#define\fR directives and the result of preprocessing. Both kinds of output go to the standard output file. ! .Ip "\fB\-dN\fR" 4 ! .IX Item "-dN" ! Like \fB\-dD\fR, but emit only the macro names, not their expansions. ! .Ip "\fB\-dI\fR" 4 ! .IX Item "-dI" Output \fB#include\fR directives in addition to the result of preprocessing. .Ip "\fB\-P\fR" 4 .IX Item "-P" Inhibit generation of linemarkers in the output from the preprocessor. --- 612,633 ---- \& touch foo.h; cpp -dM foo.h .Ve will show all the predefined macros. ! .Ip "\fBD\fR" 4 ! .IX Item "D" ! Like \fBM\fR except in two respects: it does \fInot\fR include the predefined macros, and it outputs \fIboth\fR the \fB#define\fR directives and the result of preprocessing. Both kinds of output go to the standard output file. ! .Ip "\fBN\fR" 4 ! .IX Item "N" ! Like \fBD\fR, but emit only the macro names, not their expansions. ! .Ip "\fBI\fR" 4 ! .IX Item "I" Output \fB#include\fR directives in addition to the result of preprocessing. + .RE + .RS 4 + .RE .Ip "\fB\-P\fR" 4 .IX Item "-P" Inhibit generation of linemarkers in the output from the preprocessor. *************** source line, since the first token on th *** 636,648 **** .Ip "\fB\-gcc\fR" 4 .IX Item "-gcc" Define the macros _\|_GNUC_\|_, _\|_GNUC_MINOR_\|_ and ! _\|_GNUC_PATCHLEVEL_\|_. These are defined automatically when you use \&\fBgcc \-E\fR; you can turn them off in that case with \&\fB\-no-gcc\fR. .Ip "\fB\-traditional\fR" 4 .IX Item "-traditional" Try to imitate the behavior of old-fashioned C, as opposed to \s-1ISO\s0 ! C. .Ip "\fB\-trigraphs\fR" 4 .IX Item "-trigraphs" Process trigraph sequences. --- 652,664 ---- .Ip "\fB\-gcc\fR" 4 .IX Item "-gcc" Define the macros _\|_GNUC_\|_, _\|_GNUC_MINOR_\|_ and ! _\|_GNUC_PATCHLEVEL_\|_. These are defined automatically when you use \&\fBgcc \-E\fR; you can turn them off in that case with \&\fB\-no-gcc\fR. .Ip "\fB\-traditional\fR" 4 .IX Item "-traditional" Try to imitate the behavior of old-fashioned C, as opposed to \s-1ISO\s0 ! C. .Ip "\fB\-trigraphs\fR" 4 .IX Item "-trigraphs" Process trigraph sequences. diff -Nrc3pad gcc-3.0/gcc/doc/cpp.info gcc-3.0.1/gcc/doc/cpp.info *** gcc-3.0/gcc/doc/cpp.info Sun Jun 17 12:54:25 2001 --- gcc-3.0.1/gcc/doc/cpp.info Sun Aug 19 18:05:16 2001 *************** END-INFO-DIR-ENTRY *** 9,17 ****  Indirect: cpp.info-1: 191 ! cpp.info-2: 49235 ! cpp.info-3: 98558 ! cpp.info-4: 138472  Tag Table: (Indirect) --- 9,17 ----  Indirect: cpp.info-1: 191 ! cpp.info-2: 49183 ! cpp.info-3: 98499 ! cpp.info-4: 138493  Tag Table: (Indirect) *************** Node: Top191 *** 19,80 **** Node: Overview2749 Node: Initial processing5117 Node: Tokenization11574 ! Ref: Tokenization-Footnote-118680 ! Node: The preprocessing language18791 ! Node: Header Files21663 ! Node: Include Syntax23541 ! Node: Include Operation25043 ! Node: Search Path26939 ! Node: Once-Only Headers29491 ! Node: Computed Includes31144 ! Node: Wrapper Headers34281 ! Node: System Headers36682 ! Node: Macros38788 ! Node: Object-like Macros39888 ! Node: Function-like Macros43474 ! Node: Macro Arguments45084 ! Node: Stringification49235 ! Node: Concatenation52434 ! Node: Variadic Macros55533 ! Node: Predefined Macros59870 ! Node: Standard Predefined Macros60453 ! Node: Common Predefined Macros65875 ! Node: System-specific Predefined Macros72092 ! Node: C++ Named Operators74104 ! Node: Undefining and Redefining Macros75059 ! Node: Macro Pitfalls77133 ! Node: Misnesting77657 ! Node: Operator Precedence Problems78758 ! Node: Swallowing the Semicolon80613 ! Node: Duplication of Side Effects82625 ! Node: Self-Referential Macros84797 ! Node: Argument Prescan87207 ! Node: Newlines in Arguments90950 ! Node: Conditionals91895 ! Node: Conditional Uses93724 ! Node: Conditional Syntax95077 ! Node: Ifdef95392 ! Node: If98558 ! Node: Defined100971 ! Node: Else102244 ! Node: Elif102805 ! Node: Deleted Code104085 ! Node: Diagnostics105332 ! Node: Line Control106949 ! Node: Pragmas109380 ! Node: Other Directives113643 ! Node: Preprocessor Output114837 ! Node: Traditional Mode117605 ! Node: Implementation Details123156 ! Node: Implementation-defined behavior123779 ! Node: Implementation limits126052 ! Node: Obsolete Features128758 ! Node: Assertions129245 ! Node: Obsolete once-only headers131779 ! Node: Miscellaneous obsolete features133547 ! Node: Differences from previous versions134880 ! Node: Invocation138472 ! Node: Index of Directives156589 ! Node: Concept Index157950  End Tag Table --- 19,80 ---- Node: Overview2749 Node: Initial processing5117 Node: Tokenization11574 ! Ref: Tokenization-Footnote-118694 ! Node: The preprocessing language18805 ! Node: Header Files21678 ! Node: Include Syntax23556 ! Node: Include Operation25058 ! Node: Search Path26954 ! Node: Once-Only Headers29506 ! Node: Computed Includes31160 ! Node: Wrapper Headers34299 ! Node: System Headers36718 ! Node: Macros38742 ! Node: Object-like Macros39842 ! Node: Function-like Macros43428 ! Node: Macro Arguments45038 ! Node: Stringification49183 ! Node: Concatenation52384 ! Node: Variadic Macros55483 ! Node: Predefined Macros59820 ! Node: Standard Predefined Macros60403 ! Node: Common Predefined Macros65825 ! Node: System-specific Predefined Macros72028 ! Node: C++ Named Operators74040 ! Node: Undefining and Redefining Macros74995 ! Node: Macro Pitfalls77073 ! Node: Misnesting77598 ! Node: Operator Precedence Problems78699 ! Node: Swallowing the Semicolon80554 ! Node: Duplication of Side Effects82566 ! Node: Self-Referential Macros84738 ! Node: Argument Prescan87148 ! Node: Newlines in Arguments90891 ! Node: Conditionals91836 ! Node: Conditional Uses93665 ! Node: Conditional Syntax95018 ! Node: Ifdef95333 ! Node: If98499 ! Node: Defined100912 ! Node: Else102185 ! Node: Elif102746 ! Node: Deleted Code104026 ! Node: Diagnostics105273 ! Node: Line Control106890 ! Node: Pragmas109004 ! Node: Other Directives113272 ! Node: Preprocessor Output114466 ! Node: Traditional Mode117565 ! Node: Implementation Details123144 ! Node: Implementation-defined behavior123767 ! Node: Implementation limits126040 ! Node: Obsolete Features128747 ! Node: Assertions129234 ! Node: Obsolete once-only headers131769 ! Node: Miscellaneous obsolete features133537 ! Node: Differences from previous versions134870 ! Node: Invocation138493 ! Node: Index of Directives157292 ! Node: Concept Index158653  End Tag Table diff -Nrc3pad gcc-3.0/gcc/doc/cpp.info-1 gcc-3.0.1/gcc/doc/cpp.info-1 *** gcc-3.0/gcc/doc/cpp.info-1 Sun Jun 17 12:54:25 2001 --- gcc-3.0.1/gcc/doc/cpp.info-1 Sun Aug 19 18:05:16 2001 *************** File: cpp.info, Node: Top, Next: Overv *** 12,18 **** The C preprocessor implements the macro language used to transform C, ! C++, and Objective C programs before they are compiled. It can also be useful on its own. * Menu: --- 12,18 ---- The C preprocessor implements the macro language used to transform C, ! C++, and Objective-C programs before they are compiled. It can also be useful on its own. * Menu: *************** you to define "macros", which are brief *** 141,147 **** constructs. The C preprocessor is intended to be used only with C, C++, and ! Objective C source code. In the past, it has been abused as a general text processor. It will choke on input which does not obey C's lexical rules. For example, apostrophes will be interpreted as the beginning of character constants, and cause errors. Also, you cannot rely on it --- 141,147 ---- constructs. The C preprocessor is intended to be used only with C, C++, and ! Objective-C source code. In the past, it has been abused as a general text processor. It will choke on input which does not obey C's lexical rules. For example, apostrophes will be interpreted as the beginning of character constants, and cause errors. Also, you cannot rely on it *************** Tokenization *** 340,346 **** After the textual transformations are finished, the input file is converted into a sequence of "preprocessing tokens". These mostly correspond to the syntactic tokens used by the C compiler, but there are ! a few differences. White space separates tokens; it is not itself a token of any kind. Tokens do not have to be separated by white space, but it is often necessary to avoid ambiguities. --- 340,346 ---- After the textual transformations are finished, the input file is converted into a sequence of "preprocessing tokens". These mostly correspond to the syntactic tokens used by the C compiler, but there are ! a few differences. White space separates tokens; it is not itself a token of any kind. Tokens do not have to be separated by white space, but it is often necessary to avoid ambiguities. *************** intended. *** 418,424 **** "String literals" are string constants, character constants, and header file names (the argument of `#include').(1) String constants and character constants are straightforward: "..." or '...'. In either ! case the closing quote may be escaped with a backslash: '\'' is the character constant for `''. There is no limit on the length of a character constant, but the value of a character constant that contains more than one character is implementation-defined. *Note --- 418,424 ---- "String literals" are string constants, character constants, and header file names (the argument of `#include').(1) String constants and character constants are straightforward: "..." or '...'. In either ! case embedded quotes should be escaped with a backslash: '\'' is the character constant for `''. There is no limit on the length of a character constant, but the value of a character constant that contains more than one character is implementation-defined. *Note *************** different places depending on which form *** 432,441 **** Operation::. In standard C, no string literal may extend past the end of a line. ! GNU CPP accepts multi-line string constants, but not character ! constants or header file names. This extension is deprecated and will ! be removed in GCC 3.1. You may use continued lines instead, or string ! constant concatenation. *Note Differences from previous versions::. "Punctuators" are all the usual bits of punctuation which are meaningful to C and C++. All but three of the punctuation characters in --- 432,442 ---- Operation::. In standard C, no string literal may extend past the end of a line. ! GNU CPP accepts multi-line string constants, but not multi-line ! character constants or header file names. This extension is deprecated ! and will be removed in GCC 3.1. You may use continued lines instead, ! or string constant concatenation. *Note Differences from previous ! versions::. "Punctuators" are all the usual bits of punctuation which are meaningful to C and C++. All but three of the punctuation characters in *************** have the same meaning. *** 470,476 **** #define X^@1 #define X 1 ! (where `^@' is ASCII NUL). Within string or character constants, NULs are preserved. In the latter two cases the preprocessor emits a warning message. --- 471,477 ---- #define X^@1 #define X 1 ! (where `^@' is ASCII NUL). Within string or character constants, NULs are preserved. In the latter two cases the preprocessor emits a warning message. *************** and "macros" to be expanded. Its primar *** 513,519 **** * Diagnostics. You can detect problems at compile time and issue errors or warnings. ! There are a few more, less useful features. Except for expansion of predefined macros, all these operations are triggered with "preprocessing directives". Preprocessing directives --- 514,520 ---- * Diagnostics. You can detect problems at compile time and issue errors or warnings. ! There are a few more, less useful, features. Except for expansion of predefined macros, all these operations are triggered with "preprocessing directives". Preprocessing directives *************** directory containing the current file. *** 740,746 **** `-I./-'. There are several more ways to adjust the header search path. They ! are less generally useful. *Note Invocation::.  File: cpp.info, Node: Once-Only Headers, Next: Computed Includes, Prev: Search Path, Up: Header Files --- 741,747 ---- `-I./-'. There are several more ways to adjust the header search path. They ! are generally less useful. *Note Invocation::.  File: cpp.info, Node: Once-Only Headers, Next: Computed Includes, Prev: Search Path, Up: Header Files *************** contents of the file in a conditional, l *** 762,768 **** THE ENTIRE FILE ! #endif /* FILE_FOO_SEEN */ This construct is commonly known as a "wrapper #ifndef". When the header is included again, the conditional will be false, because --- 763,769 ---- THE ENTIRE FILE ! #endif /* !FILE_FOO_SEEN */ This construct is commonly known as a "wrapper #ifndef". When the header is included again, the conditional will be false, because *************** not `"' or `<', then the entire line is *** 829,836 **** text would be. If the line expands to a single string constant, the contents of that ! string constant are the file to be included. CPP does not reexamine the ! string for embedded quotes, but neither does it process backslash escapes in the string. Therefore #define HEADER "a\"b" --- 830,837 ---- text would be. If the line expands to a single string constant, the contents of that ! string constant are the file to be included. CPP does not re-examine ! the string for embedded quotes, but neither does it process backslash escapes in the string. Therefore #define HEADER "a\"b" *************** expected forms. *** 856,862 **** standard. To minimize the risk of different compilers interpreting your computed includes differently, we recommend you use only a single object-like macro which expands to a string constant. This will also ! minimize confusion of people reading your program.  File: cpp.info, Node: Wrapper Headers, Next: System Headers, Prev: Computed Includes, Up: Header Files --- 857,863 ---- standard. To minimize the risk of different compilers interpreting your computed includes differently, we recommend you use only a single object-like macro which expands to a string constant. This will also ! minimize confusion for people reading your program.  File: cpp.info, Node: Wrapper Headers, Next: System Headers, Prev: Computed Includes, Up: Header Files *************** file was found. *** 905,913 **** The use of `#include_next' can lead to great confusion. We recommend it be used only when there is no other alternative. In ! particular, it should not be used in the headers belonging to a ! specific program, only to make global corrections along the lines of ! `fixincludes'.  File: cpp.info, Node: System Headers, Prev: Wrapper Headers, Up: Header Files --- 906,914 ---- The use of `#include_next' can lead to great confusion. We recommend it be used only when there is no other alternative. In ! particular, it should not be used in the headers belonging to a specific ! program; it should be used only to make global corrections along the ! lines of `fixincludes'.  File: cpp.info, Node: System Headers, Prev: Wrapper Headers, Up: Header Files *************** system headers. *** 932,939 **** The `-isystem' command line option adds its argument to the list of directories to search for headers, just like `-I'. Any headers found ! in that directory will be considered system headers. Note that unlike ! `-I', you must put a space between `-isystem' and its argument. All directories named by `-isystem' are searched _after_ all directories named by `-I', no matter what their order was on the --- 933,939 ---- The `-isystem' command line option adds its argument to the list of directories to search for headers, just like `-I'. Any headers found ! in that directory will be considered system headers. All directories named by `-isystem' are searched _after_ all directories named by `-I', no matter what their order was on the *************** and then to *** 1197,1203 **** (Line breaks shown here for clarity would not actually be generated.) ! You can leave macro arguments empty; this is not an error for the preprocessor (but many macros will then expand to invalid code). You cannot leave out arguments entirely; if a macro takes two arguments, there must be exactly one comma at the top level of its argument list. --- 1197,1203 ---- (Line breaks shown here for clarity would not actually be generated.) ! You can leave macro arguments empty; this is not an error to the preprocessor (but many macros will then expand to invalid code). You cannot leave out arguments entirely; if a macro takes two arguments, there must be exactly one comma at the top level of its argument list. *************** incorrect on this point, insisting that *** 1218,1225 **** takes a single argument be passed a space if an empty argument was required. ! Macro parameters are not replaced by their corresponding actual ! arguments if they appear inside string literals. #define foo(x) x, "x" foo(bar) ==> bar, "x" --- 1218,1225 ---- takes a single argument be passed a space if an empty argument was required. ! Macro parameters appearing inside string literals are not replaced by ! their corresponding actual arguments. #define foo(x) x, "x" foo(bar) ==> bar, "x" diff -Nrc3pad gcc-3.0/gcc/doc/cpp.info-2 gcc-3.0.1/gcc/doc/cpp.info-2 *** gcc-3.0/gcc/doc/cpp.info-2 Sun Jun 17 12:54:25 2001 --- gcc-3.0.1/gcc/doc/cpp.info-2 Sun Aug 19 18:05:16 2001 *************** first. This is called "stringification" *** 23,29 **** There is no way to combine an argument with surrounding text and stringify it all together. Instead, you can write a series of adjacent string constants and stringified arguments. The preprocessor will ! replace the stringified arguments with more string constants. The C compiler will then combine all the adjacent string constants into one long string. --- 23,29 ---- There is no way to combine an argument with surrounding text and stringify it all together. Instead, you can write a series of adjacent string constants and stringified arguments. The preprocessor will ! replace the stringified arguments with string constants. The C compiler will then combine all the adjacent string constants into one long string. *************** Semicolon::. *** 49,56 **** Stringification in C involves more than putting double-quote characters around the fragment. The preprocessor backslash-escapes the ! surrounding quotes of string literals, and all backslashes within ! string and character constants, in order to get a valid C string constant with the proper contents. Thus, stringifying `p = "foo\n";' results in "p = \"foo\\n\";". However, backslashes that are not inside string or character constants are not duplicated: `\n' by itself --- 49,56 ---- Stringification in C involves more than putting double-quote characters around the fragment. The preprocessor backslash-escapes the ! quotes surrounding embedded string constants, and all backslashes ! within string and character constants, in order to get a valid C string constant with the proper contents. Thus, stringifying `p = "foo\n";' results in "p = \"foo\\n\";". However, backslashes that are not inside string or character constants are not duplicated: `\n' by itself *************** will be an extra comma after the format *** 210,217 **** eprintf("success!\n", ); ==> fprintf(stderr, "success!\n", ); ! GNU CPP has a pair of extensions which deal with this problem. First, ! you are allowed to leave the variable argument out entirely: eprintf ("success!\n") ==> fprintf(stderr, "success!\n", ); --- 210,217 ---- eprintf("success!\n", ); ==> fprintf(stderr, "success!\n", ); ! GNU CPP has a pair of extensions which deal with this problem. ! First, you are allowed to leave the variable argument out entirely: eprintf ("success!\n") ==> fprintf(stderr, "success!\n", ); *************** with `__FILE__' and `__LINE__', though. *** 372,378 **** revision is not yet complete. This macro is not defined if the `-traditional' option is used, nor ! when compiling C++ or Objective C. `__STDC_HOSTED__' This macro is defined, with value 1, if the compiler's target is a --- 372,378 ---- revision is not yet complete. This macro is not defined if the `-traditional' option is used, nor ! when compiling C++ or Objective-C. `__STDC_HOSTED__' This macro is defined, with value 1, if the compiler's target is a *************** underscores. *** 404,410 **** `__GNUC_MINOR__' `__GNUC_PATCHLEVEL__' These macros are defined by all GNU compilers that use the C ! preprocessor: C, C++, and Objective C. Their values are the major version, minor version, and patch level of the compiler, as integer constants. For example, GCC 3.2.1 will define `__GNUC__' to 3, `__GNUC_MINOR__' to 2, and `__GNUC_PATCHLEVEL__' to 1. They are --- 404,410 ---- `__GNUC_MINOR__' `__GNUC_PATCHLEVEL__' These macros are defined by all GNU compilers that use the C ! preprocessor: C, C++, and Objective-C. Their values are the major version, minor version, and patch level of the compiler, as integer constants. For example, GCC 3.2.1 will define `__GNUC__' to 3, `__GNUC_MINOR__' to 2, and `__GNUC_PATCHLEVEL__' to 1. They are *************** underscores. *** 450,459 **** `__STRICT_ANSI__' GCC defines this macro if and only if the `-ansi' switch, or a `-std' switch specifying strict conformance to some version of ISO ! C, was specified when GCC was invoked. Its definition is the null ! string. This macro exists primarily to direct GNU libc's header ! files to restrict their definitions to the minimal set found in ! the 1989 C standard. `__BASE_FILE__' This macro expands to the name of the main input file, in the form --- 450,459 ---- `__STRICT_ANSI__' GCC defines this macro if and only if the `-ansi' switch, or a `-std' switch specifying strict conformance to some version of ISO ! C, was specified when GCC was invoked. It is defined to `1'. ! This macro exists primarily to direct GNU libc's header files to ! restrict their definitions to the minimal set found in the 1989 C ! standard. `__BASE_FILE__' This macro expands to the name of the main input file, in the form *************** but these are not: *** 642,649 **** same as the old one, the preprocessor issues a warning and changes the macro to use the new definition. If the new definition is effectively the same, the redefinition is silently ignored. This allows, for ! instance, two different headers to define a common macro. The compiler ! will only complain if the definitions do not match.  File: cpp.info, Node: Macro Pitfalls, Prev: Undefining and Redefining Macros, Up: Macros --- 642,649 ---- same as the old one, the preprocessor issues a warning and changes the macro to use the new definition. If the new definition is effectively the same, the redefinition is silently ignored. This allows, for ! instance, two different headers to define a common macro. The ! preprocessor will only complain if the definitions do not match.  File: cpp.info, Node: Macro Pitfalls, Prev: Undefining and Redefining Macros, Up: Macros *************** Macro Pitfalls *** 653,659 **** In this section we describe some special rules that apply to macros and macro expansion, and point out certain cases in which the rules have ! counterintuitive consequences that you must watch out for. * Menu: --- 653,659 ---- In this section we describe some special rules that apply to macros and macro expansion, and point out certain cases in which the rules have ! counter-intuitive consequences that you must watch out for. * Menu: diff -Nrc3pad gcc-3.0/gcc/doc/cpp.info-3 gcc-3.0.1/gcc/doc/cpp.info-3 *** gcc-3.0/gcc/doc/cpp.info-3 Sun Jun 17 12:54:25 2001 --- gcc-3.0.1/gcc/doc/cpp.info-3 Sun Aug 19 18:05:16 2001 *************** to be able to refer to `bison''s input f *** 260,271 **** `bison' or any such program can arrange this by writing `#line' directives into the output file. `#line' is a directive that specifies the original line number and source file name for subsequent input in ! the current preprocessor input file. `#line' has four variants: `#line LINENUM' ! LINENUM is a decimal integer constant. It specifies the line ! number which should be reported for the following line of input. ! Subsequent lines are counted from LINENUM. `#line LINENUM FILENAME' LINENUM is the same as for the first form, and has the same --- 260,271 ---- `bison' or any such program can arrange this by writing `#line' directives into the output file. `#line' is a directive that specifies the original line number and source file name for subsequent input in ! the current preprocessor input file. `#line' has three variants: `#line LINENUM' ! LINENUM is a non-negative decimal integer constant. It specifies ! the line number which should be reported for the following line of ! input. Subsequent lines are counted from LINENUM. `#line LINENUM FILENAME' LINENUM is the same as for the first form, and has the same *************** the current preprocessor input file. `# *** 273,288 **** following line and all subsequent lines are reported to come from the file it specifies, until something else happens to change that. - `#line LINENUM FILENAME FLAGS...' - This form is a GCC extension. LINENUM and FILENAME are the same - as the second form. The FLAGS are small positive integers, which - have the same meaning as the flags which can appear at the end of a - linemarker in the preprocessor's output. *Note Preprocessor - Output::. - `#line ANYTHING ELSE' ANYTHING ELSE is checked for macro calls, which are expanded. The ! result should match one of the above three forms. `#line' directives alter the results of the `__FILE__' and `__LINE__' predefined macros from that point on. *Note Standard --- 273,281 ---- following line and all subsequent lines are reported to come from the file it specifies, until something else happens to change that. `#line ANYTHING ELSE' ANYTHING ELSE is checked for macro calls, which are expanded. The ! result should match one of the above two forms. `#line' directives alter the results of the `__FILE__' and `__LINE__' predefined macros from that point on. *Note Standard *************** effect could be achieved using macros, f *** 334,340 **** DO_PRAGMA (GCC dependency "parse.y") The standard is unclear on where a `_Pragma' operator can appear. ! The preprocessor accepts it even within a preprocessing conditional directive like `#if'. To be safe, you are probably best keeping it out of directives other than `#define', and putting it on a line of its own. --- 327,333 ---- DO_PRAGMA (GCC dependency "parse.y") The standard is unclear on where a `_Pragma' operator can appear. ! The preprocessor does not accept it within a preprocessing conditional directive like `#if'. To be safe, you are probably best keeping it out of directives other than `#define', and putting it on a line of its own. *************** compilers. They are documented in the G *** 344,351 **** `#pragma GCC dependency' `#pragma GCC dependency' allows you to check the relative dates of ! the current file and another file. If the other file is more ! recent than the current file, a warning is issued. This is useful if the current file is derived from the other file, and should be regenerated. The other file is searched for using the normal include search path. Optional trailing text can be used to give --- 337,344 ---- `#pragma GCC dependency' `#pragma GCC dependency' allows you to check the relative dates of ! the current file and another file. If the other file is more ! recent than the current file, a warning is issued. This is useful if the current file is derived from the other file, and should be regenerated. The other file is searched for using the normal include search path. Optional trailing text can be used to give *************** File: cpp.info, Node: Preprocessor Outp *** 418,424 **** Preprocessor Output ******************* ! When the C preprocessor is used with the C, C++, or Objective C compilers, it is integrated into the compiler and communicates a stream of binary tokens directly to the compiler's parser. However, it can also be used in the more conventional standalone mode, where it produces --- 411,417 ---- Preprocessor Output ******************* ! When the C preprocessor is used with the C, C++, or Objective-C compilers, it is integrated into the compiler and communicates a stream of binary tokens directly to the compiler's parser. However, it can also be used in the more conventional standalone mode, where it produces *************** is what the flags mean: *** 468,473 **** --- 461,472 ---- This indicates that the following text should be treated as being wrapped in an implicit `extern "C"' block. + As an extension, the preprocessor accepts linemarkers in + non-assembler input files. They are treated like the corresponding + `#line' directive, (*note Line Control::), except that trailing flags + are permitted, and are interpreted with the meanings described above. + If multiple flags are given, they must be in ascending order. + Some directives may be duplicated in the output of the preprocessor. These are `#ident' (always), `#pragma' (only if the preprocessor does not handle the pragma itself), and `#define' and `#undef' (with certain *************** traditional preprocessor. *** 536,543 **** token. This is impossible in ISO C. * None of the GNU extensions to the preprocessor are available in ! traditional mode, with the exception of assertions, and those may ! be removed in the future. * A true traditional C preprocessor does not recognize `#elif', `#error', or `#pragma'. GCC supports `#elif' and `#error' even in --- 535,542 ---- token. This is impossible in ISO C. * None of the GNU extensions to the preprocessor are available in ! traditional mode, with the exception of a partial implementation of ! assertions, and those may be removed in the future. * A true traditional C preprocessor does not recognize `#elif', `#error', or `#pragma'. GCC supports `#elif' and `#error' even in *************** consumed by other processes on the same *** 723,729 **** * Number of parameters in a macro definition and arguments in a macro call. ! We allow `USHRT_MAX', which is no smaller than 65,535. The minimum required by the standard is 127. * Number of characters on a logical source line. --- 722,728 ---- * Number of parameters in a macro definition and arguments in a macro call. ! We allow `USHRT_MAX', which is no smaller than 65,535. The minimum required by the standard is 127. * Number of characters on a logical source line. *************** at all. *** 780,786 **** #PREDICATE (ANSWER) ! PREDICATE must be a single identifier. ANSWER can be any sequence of tokens; all characters are significant except for leading and trailing whitespace, and differences in internal whitespace sequences are ignored. (This is similar to the rules governing macro redefinition.) --- 779,785 ---- #PREDICATE (ANSWER) ! PREDICATE must be a single identifier. ANSWER can be any sequence of tokens; all characters are significant except for leading and trailing whitespace, and differences in internal whitespace sequences are ignored. (This is similar to the rules governing macro redefinition.) *************** Obsolete once-only headers *** 833,843 **** should be read only once. Neither one is as portable as a wrapper `#ifndef', and we recommend you do not use them in new programs. ! In the Objective C language, there is a variant of `#include' called `#import' which includes a file, but does so at most once. If you use `#import' instead of `#include', then you don't need the conditionals inside the header file to prevent multiple inclusion of the contents. ! GCC permits the use of `#import' in C and C++ as well as Objective C. However, it is not in standard C or C++ and should therefore not be used by portable programs. --- 832,842 ---- should be read only once. Neither one is as portable as a wrapper `#ifndef', and we recommend you do not use them in new programs. ! In the Objective-C language, there is a variant of `#include' called `#import' which includes a file, but does so at most once. If you use `#import' instead of `#include', then you don't need the conditionals inside the header file to prevent multiple inclusion of the contents. ! GCC permits the use of `#import' in C and C++ as well as Objective-C. However, it is not in standard C or C++ and should therefore not be used by portable programs. *************** they generally represent bugs in the sna *** 970,976 **** Traditional mode used to be implemented in the same program as normal preprocessing. Therefore, all the GNU extensions to the preprocessor were still available in traditional mode. It is now ! a separate program, and does not implement any of the GNU ! extensions except assertions. Even those may be removed in a ! future release. --- 969,975 ---- Traditional mode used to be implemented in the same program as normal preprocessing. Therefore, all the GNU extensions to the preprocessor were still available in traditional mode. It is now ! a separate program and does not implement any of the GNU ! extensions, except for a partial implementation of assertions. ! Even those may be removed in a future release. diff -Nrc3pad gcc-3.0/gcc/doc/cpp.info-4 gcc-3.0.1/gcc/doc/cpp.info-4 *** gcc-3.0/gcc/doc/cpp.info-4 Sun Jun 17 12:54:25 2001 --- gcc-3.0.1/gcc/doc/cpp.info-4 Sun Aug 19 18:05:16 2001 *************** from standard input and as OUTFILE means *** 35,45 **** Also, if either file is omitted, it means the same as if `-' had been specified for that file. ! All single-letter options which take an argument may have that ! argument appear immediately after the option letter, or with a space ! between option and argument: `-Ifoo' and `-I foo' have the same ! effect. Long options that take arguments require a space between option ! and argument. `-D NAME' Predefine NAME as a macro, with definition `1'. --- 35,48 ---- Also, if either file is omitted, it means the same as if `-' had been specified for that file. ! Unless otherwise noted, or the option ends in `=', all options which ! take an argument may have that argument appear either immediately after ! the option, or with a space between option and argument: `-Ifoo' and ! `-I foo' have the same effect. ! ! Many options have multi-letter names; therefore multiple ! single-letter options may _not_ be grouped: `-dM' is very different from ! `-d -M'. `-D NAME' Predefine NAME as a macro, with definition `1'. *************** and argument. *** 205,211 **** `-MQ TARGET' Same as `-MT', but it quotes any characters which are special to ! Make. `-MQ '$(objpfx)foo.o'' gives $$(objpfx)foo.o: foo.c --- 208,214 ---- `-MQ TARGET' Same as `-MT', but it quotes any characters which are special to ! Make. `-MQ '$(objpfx)foo.o'' gives $$(objpfx)foo.o: foo.c *************** and argument. *** 342,349 **** Indicate to the preprocessor that the input file has already been preprocessed. This suppresses things like macro expansion, trigraph conversion, escaped newline splicing, and processing of ! most directives. In this mode the integrated preprocessor is ! little more than a tokenizer for the front ends. `-fpreprocessed' is implicit if the input file has one of the extensions `.i', `.ii' or `.mi'. These are the extensions that --- 345,354 ---- Indicate to the preprocessor that the input file has already been preprocessed. This suppresses things like macro expansion, trigraph conversion, escaped newline splicing, and processing of ! most directives. The preprocessor still recognizes and removes ! comments, so that you can pass a file preprocessed with `-C' to ! the compiler without problems. In this mode the integrated ! preprocessor is little more than a tokenizer for the front ends. `-fpreprocessed' is implicit if the input file has one of the extensions `.i', `.ii' or `.mi'. These are the extensions that *************** and argument. *** 375,403 **** macros preceding it on the command line. (This is a historical wart and may change in the future.) ! `-dM' ! Instead of the normal output, generate a list of `#define' ! directives for all the macros defined during the execution of the ! preprocessor, including predefined macros. This gives you a way of ! finding out what is predefined in your version of the preprocessor. ! Assuming you have no file `foo.h', the command ! touch foo.h; cpp -dM foo.h ! will show all the predefined macros. ! `-dD' ! Like `-dM' except in two respects: it does _not_ include the ! predefined macros, and it outputs _both_ the `#define' directives ! and the result of preprocessing. Both kinds of output go to the ! standard output file. ! `-dN' ! Like `-dD', but emit only the macro names, not their expansions. ! `-dI' ! Output `#include' directives in addition to the result of ! preprocessing. `-P' Inhibit generation of linemarkers in the output from the --- 380,416 ---- macros preceding it on the command line. (This is a historical wart and may change in the future.) ! `-dCHARS' ! CHARS is a sequence of one or more of the following characters, ! and must not be preceded by a space. Other characters are ! interpreted by the compiler proper, or reserved for future ! versions of GCC, and so are silently ignored. If you specify ! characters whose behavior conflicts, the result is undefined. ! `M' ! Instead of the normal output, generate a list of `#define' ! directives for all the macros defined during the execution of ! the preprocessor, including predefined macros. This gives ! you a way of finding out what is predefined in your version ! of the preprocessor. Assuming you have no file `foo.h', the ! command ! touch foo.h; cpp -dM foo.h ! will show all the predefined macros. ! `D' ! Like `M' except in two respects: it does _not_ include the ! predefined macros, and it outputs _both_ the `#define' ! directives and the result of preprocessing. Both kinds of ! output go to the standard output file. ! `N' ! Like `D', but emit only the macro names, not their expansions. ! ! `I' ! Output `#include' directives in addition to the result of ! preprocessing. `-P' Inhibit generation of linemarkers in the output from the *************** and argument. *** 424,435 **** `-gcc' Define the macros __GNUC__, __GNUC_MINOR__ and ! __GNUC_PATCHLEVEL__. These are defined automatically when you use `gcc -E'; you can turn them off in that case with `-no-gcc'. `-traditional' Try to imitate the behavior of old-fashioned C, as opposed to ISO ! C. *Note Traditional Mode::. `-trigraphs' Process trigraph sequences. *Note Initial processing::. --- 437,448 ---- `-gcc' Define the macros __GNUC__, __GNUC_MINOR__ and ! __GNUC_PATCHLEVEL__. These are defined automatically when you use `gcc -E'; you can turn them off in that case with `-no-gcc'. `-traditional' Try to imitate the behavior of old-fashioned C, as opposed to ISO ! C. *Note Traditional Mode::. `-trigraphs' Process trigraph sequences. *Note Initial processing::. *************** Concept Index *** 533,538 **** --- 546,552 ---- * empty macro arguments: Macro Arguments. * expansion of arguments: Argument Prescan. * function-like macros: Function-like Macros. + * grouping options: Invocation. * guard macro: Once-Only Headers. * header file: Header Files. * header file names: Tokenization. *************** Concept Index *** 559,564 **** --- 573,579 ---- * numbers: Tokenization. * object-like macro: Object-like Macros. * options: Invocation. + * options, grouping: Invocation. * other tokens: Tokenization. * output format: Preprocessor Output. * overriding a header file: Wrapper Headers. diff -Nrc3pad gcc-3.0/gcc/doc/cpp.texi gcc-3.0.1/gcc/doc/cpp.texi *** gcc-3.0/gcc/doc/cpp.texi Fri Jun 15 10:58:19 2001 --- gcc-3.0.1/gcc/doc/cpp.texi Wed Jun 27 08:08:23 2001 *************** This manual contains no Invariant Sectio *** 76,82 **** @node Top @top The C preprocessor implements the macro language used to transform C, ! C++, and Objective C programs before they are compiled. It can also be useful on its own. @menu --- 76,82 ---- @node Top @top The C preprocessor implements the macro language used to transform C, ! C++, and Objective-C programs before they are compiled. It can also be useful on its own. @menu *************** you to define @dfn{macros}, which are br *** 187,193 **** constructs. The C preprocessor is intended to be used only with C, C++, and ! Objective C source code. In the past, it has been abused as a general text processor. It will choke on input which does not obey C's lexical rules. For example, apostrophes will be interpreted as the beginning of character constants, and cause errors. Also, you cannot rely on it --- 187,193 ---- constructs. The C preprocessor is intended to be used only with C, C++, and ! Objective-C source code. In the past, it has been abused as a general text processor. It will choke on input which does not obey C's lexical rules. For example, apostrophes will be interpreted as the beginning of character constants, and cause errors. Also, you cannot rely on it *************** C-family languages. If a Makefile is pr *** 196,202 **** will be removed, and the Makefile will not work. Having said that, you can often get away with using cpp on things which ! are not C. Other Algol-ish programming languages are often safe (Pascal, Ada, etc.) So is assembly, with caution. @option{-traditional} mode preserves more white space, and is otherwise more permissive. Many of the problems can be avoided by writing C or C++ style comments --- 196,202 ---- will be removed, and the Makefile will not work. Having said that, you can often get away with using cpp on things which ! are not C@. Other Algol-ish programming languages are often safe (Pascal, Ada, etc.) So is assembly, with caution. @option{-traditional} mode preserves more white space, and is otherwise more permissive. Many of the problems can be avoided by writing C or C++ style comments *************** single characters. *** 273,279 **** These are nine three-character sequences, all starting with @samp{??}, that are defined by ISO C to stand for single characters. They permit ! obsolete systems that lack some of C's punctuation to use C. For example, @samp{??/} stands for @samp{\}, so @t{'??/n'} is a character constant for a newline. By default, GCC ignores trigraphs, but if you request a strictly conforming mode with the @option{-std} option, then --- 273,279 ---- These are nine three-character sequences, all starting with @samp{??}, that are defined by ISO C to stand for single characters. They permit ! obsolete systems that lack some of C's punctuation to use C@. For example, @samp{??/} stands for @samp{\}, so @t{'??/n'} is a character constant for a newline. By default, GCC ignores trigraphs, but if you request a strictly conforming mode with the @option{-std} option, then *************** Your program will be more portable this *** 424,430 **** After the textual transformations are finished, the input file is converted into a sequence of @dfn{preprocessing tokens}. These mostly correspond to the syntactic tokens used by the C compiler, but there are ! a few differences. White space separates tokens; it is not itself a token of any kind. Tokens do not have to be separated by white space, but it is often necessary to avoid ambiguities. --- 424,430 ---- After the textual transformations are finished, the input file is converted into a sequence of @dfn{preprocessing tokens}. These mostly correspond to the syntactic tokens used by the C compiler, but there are ! a few differences. White space separates tokens; it is not itself a token of any kind. Tokens do not have to be separated by white space, but it is often necessary to avoid ambiguities. *************** header file names (the argument of @samp *** 516,522 **** standard uses the term @dfn{string literal} to refer only to what we are calling @dfn{string constants}.} String constants and character constants are straightforward: @t{"@dots{}"} or @t{'@dots{}'}. In ! either case the closing quote may be escaped with a backslash: @t{'\'@:'} is the character constant for @samp{'}. There is no limit on the length of a character constant, but the value of a character constant that contains more than one character is --- 516,522 ---- standard uses the term @dfn{string literal} to refer only to what we are calling @dfn{string constants}.} String constants and character constants are straightforward: @t{"@dots{}"} or @t{'@dots{}'}. In ! either case embedded quotes should be escaped with a backslash: @t{'\'@:'} is the character constant for @samp{'}. There is no limit on the length of a character constant, but the value of a character constant that contains more than one character is *************** file in different places depending on wh *** 530,539 **** Operation}. In standard C, no string literal may extend past the end of a line. GNU ! CPP accepts multi-line string constants, but not character constants or ! header file names. This extension is deprecated and will be removed in ! GCC 3.1. You may use continued lines instead, or string constant ! concatenation. @xref{Differences from previous versions}. @cindex punctuators @dfn{Punctuators} are all the usual bits of punctuation which are --- 530,539 ---- Operation}. In standard C, no string literal may extend past the end of a line. GNU ! CPP accepts multi-line string constants, but not multi-line character ! constants or header file names. This extension is deprecated and will ! be removed in GCC 3.1. You may use continued lines instead, or string ! constant concatenation. @xref{Differences from previous versions}. @cindex punctuators @dfn{Punctuators} are all the usual bits of punctuation which are *************** characters other than NUL (all bits zero *** 560,566 **** normally considered a letter.) All characters with the high bit set (numeric range 0x7F--0xFF) are also ``other'' in the present implementation. This will change when proper support for international ! character sets is added to GCC. NUL is a special case because of the high probability that its appearance is accidental, and because it may be invisible to the user --- 560,566 ---- normally considered a letter.) All characters with the high bit set (numeric range 0x7F--0xFF) are also ``other'' in the present implementation. This will change when proper support for international ! character sets is added to GCC@. NUL is a special case because of the high probability that its appearance is accidental, and because it may be invisible to the user *************** have the same meaning. *** 575,581 **** @end example @noindent ! (where @samp{^@@} is ASCII NUL). Within string or character constants, NULs are preserved. In the latter two cases the preprocessor emits a warning message. --- 575,581 ---- @end example @noindent ! (where @samp{^@@} is ASCII NUL)@. Within string or character constants, NULs are preserved. In the latter two cases the preprocessor emits a warning message. *************** Diagnostics. You can detect problems at *** 621,627 **** or warnings. @end itemize ! There are a few more, less useful features. Except for expansion of predefined macros, all these operations are triggered with @dfn{preprocessing directives}. Preprocessing directives --- 621,627 ---- or warnings. @end itemize ! There are a few more, less useful, features. Except for expansion of predefined macros, all these operations are triggered with @dfn{preprocessing directives}. Preprocessing directives *************** If you need to look for headers in a dir *** 855,861 **** @option{-I./-}. There are several more ways to adjust the header search path. They are ! less generally useful. @xref{Invocation}. @node Once-Only Headers @section Once-Only Headers --- 855,861 ---- @option{-I./-}. There are several more ways to adjust the header search path. They are ! generally less useful. @xref{Invocation}. @node Once-Only Headers @section Once-Only Headers *************** less generally useful. @xref{Invocation *** 864,870 **** @cindex wrapper @code{#ifndef} If a header file happens to be included twice, the compiler will process ! its contents twice. This is very likely to cause an error, e.g. when the compiler sees the same structure definition twice. Even if it does not, it will certainly waste time. --- 864,870 ---- @cindex wrapper @code{#ifndef} If a header file happens to be included twice, the compiler will process ! its contents twice. This is very likely to cause an error, e.g.@: when the compiler sees the same structure definition twice. Even if it does not, it will certainly waste time. *************** of the file in a conditional, like this: *** 879,885 **** @var{the entire file} ! #endif /* FILE_FOO_SEEN */ @end group @end example --- 879,885 ---- @var{the entire file} ! #endif /* !FILE_FOO_SEEN */ @end group @end example *************** not @samp{"} or @samp{<}, then the entir *** 956,962 **** like running text would be. If the line expands to a single string constant, the contents of that ! string constant are the file to be included. CPP does not reexamine the string for embedded quotes, but neither does it process backslash escapes in the string. Therefore --- 956,962 ---- like running text would be. If the line expands to a single string constant, the contents of that ! string constant are the file to be included. CPP does not re-examine the string for embedded quotes, but neither does it process backslash escapes in the string. Therefore *************** These rules are implementation-defined b *** 986,992 **** standard. To minimize the risk of different compilers interpreting your computed includes differently, we recommend you use only a single object-like macro which expands to a string constant. This will also ! minimize confusion of people reading your program. @node Wrapper Headers @section Wrapper Headers --- 986,992 ---- standard. To minimize the risk of different compilers interpreting your computed includes differently, we recommend you use only a single object-like macro which expands to a string constant. This will also ! minimize confusion for people reading your program. @node Wrapper Headers @section Wrapper Headers *************** where the current file was found. *** 1037,1045 **** The use of @samp{#include_next} can lead to great confusion. We recommend it be used only when there is no other alternative. In ! particular, it should not be used in the headers belonging to a ! specific program, only to make global corrections along the lines ! of @command{fixincludes}. @node System Headers @section System Headers --- 1037,1045 ---- The use of @samp{#include_next} can lead to great confusion. We recommend it be used only when there is no other alternative. In ! particular, it should not be used in the headers belonging to a specific ! program; it should be used only to make global corrections along the ! lines of @command{fixincludes}. @node System Headers @section System Headers *************** There are, however, two ways to make nor *** 1061,1069 **** The @option{-isystem} command line option adds its argument to the list of directories to search for headers, just like @option{-I}. Any headers ! found in that directory will be considered system headers. Note that ! unlike @option{-I}, you must put a space between @option{-isystem} and its ! argument. All directories named by @option{-isystem} are searched @emph{after} all directories named by @option{-I}, no matter what their order was on the --- 1061,1067 ---- The @option{-isystem} command line option adds its argument to the list of directories to search for headers, just like @option{-I}. Any headers ! found in that directory will be considered system headers. All directories named by @option{-isystem} are searched @emph{after} all directories named by @option{-I}, no matter what their order was on the *************** and then to *** 1371,1377 **** (Line breaks shown here for clarity would not actually be generated.) @cindex empty macro arguments ! You can leave macro arguments empty; this is not an error for the preprocessor (but many macros will then expand to invalid code). You cannot leave out arguments entirely; if a macro takes two arguments, there must be exactly one comma at the top level of its argument list. --- 1369,1375 ---- (Line breaks shown here for clarity would not actually be generated.) @cindex empty macro arguments ! You can leave macro arguments empty; this is not an error to the preprocessor (but many macros will then expand to invalid code). You cannot leave out arguments entirely; if a macro takes two arguments, there must be exactly one comma at the top level of its argument list. *************** documentation were incorrect on this poi *** 1394,1401 **** function-like macro that takes a single argument be passed a space if an empty argument was required. ! Macro parameters are not replaced by their corresponding actual ! arguments if they appear inside string literals. @example #define foo(x) x, "x" --- 1392,1399 ---- function-like macro that takes a single argument be passed a space if an empty argument was required. ! Macro parameters appearing inside string literals are not replaced by ! their corresponding actual arguments. @example #define foo(x) x, "x" *************** macro-expanded first. This is called @d *** 1418,1424 **** There is no way to combine an argument with surrounding text and stringify it all together. Instead, you can write a series of adjacent string constants and stringified arguments. The preprocessor will ! replace the stringified arguments with more string constants. The C compiler will then combine all the adjacent string constants into one long string. --- 1416,1422 ---- There is no way to combine an argument with surrounding text and stringify it all together. Instead, you can write a series of adjacent string constants and stringified arguments. The preprocessor will ! replace the stringified arguments with string constants. The C compiler will then combine all the adjacent string constants into one long string. *************** write @code{WARN_IF (@var{arg});}, which *** 1448,1455 **** @ref{Swallowing the Semicolon}. Stringification in C involves more than putting double-quote characters ! around the fragment. The preprocessor backslash-escapes the surrounding ! quotes of string literals, and all backslashes within string and character constants, in order to get a valid C string constant with the proper contents. Thus, stringifying @code{@w{p = "foo\n";}} results in @t{@w{"p = \"foo\\n\";"}}. However, backslashes that are not inside string --- 1446,1453 ---- @ref{Swallowing the Semicolon}. Stringification in C involves more than putting double-quote characters ! around the fragment. The preprocessor backslash-escapes the quotes ! surrounding embedded string constants, and all backslashes within string and character constants, in order to get a valid C string constant with the proper contents. Thus, stringifying @code{@w{p = "foo\n";}} results in @t{@w{"p = \"foo\\n\";"}}. However, backslashes that are not inside string *************** eprintf("success!\n", ); *** 1636,1642 **** @expansion{} fprintf(stderr, "success!\n", ); @end example ! GNU CPP has a pair of extensions which deal with this problem. First, you are allowed to leave the variable argument out entirely: @example --- 1634,1640 ---- @expansion{} fprintf(stderr, "success!\n", ); @end example ! GNU CPP has a pair of extensions which deal with this problem. First, you are allowed to leave the variable argument out entirely: @example *************** constant of the form @code{@var{yyyy}@va *** 1803,1809 **** @var{mm} are the year and month of the Standard version. This signifies which version of the C Standard the compiler conforms to. Like @code{__STDC__}, this is not necessarily accurate for the entire ! implementation, unless GNU CPP is being used with GCC. The value @code{199409L} signifies the 1989 C standard as amended in 1994, which is the current default; the value @code{199901L} signifies --- 1801,1807 ---- @var{mm} are the year and month of the Standard version. This signifies which version of the C Standard the compiler conforms to. Like @code{__STDC__}, this is not necessarily accurate for the entire ! implementation, unless GNU CPP is being used with GCC@. The value @code{199409L} signifies the 1989 C standard as amended in 1994, which is the current default; the value @code{199901L} signifies *************** the 1999 revision of the C standard. Su *** 1811,1817 **** not yet complete. This macro is not defined if the @option{-traditional} option is used, nor ! when compiling C++ or Objective C@. @item __STDC_HOSTED__ This macro is defined, with value 1, if the compiler's target is a --- 1809,1815 ---- not yet complete. This macro is not defined if the @option{-traditional} option is used, nor ! when compiling C++ or Objective-C@. @item __STDC_HOSTED__ This macro is defined, with value 1, if the compiler's target is a *************** underscores. *** 1844,1850 **** @itemx __GNUC_MINOR__ @itemx __GNUC_PATCHLEVEL__ These macros are defined by all GNU compilers that use the C ! preprocessor: C, C++, and Objective C. Their values are the major version, minor version, and patch level of the compiler, as integer constants. For example, GCC 3.2.1 will define @code{__GNUC__} to 3, @code{__GNUC_MINOR__} to 2, and @code{__GNUC_PATCHLEVEL__} to 1. They --- 1842,1848 ---- @itemx __GNUC_MINOR__ @itemx __GNUC_PATCHLEVEL__ These macros are defined by all GNU compilers that use the C ! preprocessor: C, C++, and Objective-C@. Their values are the major version, minor version, and patch level of the compiler, as integer constants. For example, GCC 3.2.1 will define @code{__GNUC__} to 3, @code{__GNUC_MINOR__} to 2, and @code{__GNUC_PATCHLEVEL__} to 1. They *************** testing @code{@w{(__GNUC__ && __cplusplu *** 1895,1901 **** @item __STRICT_ANSI__ GCC defines this macro if and only if the @option{-ansi} switch, or a @option{-std} switch specifying strict conformance to some version of ISO C, ! was specified when GCC was invoked. Its definition is the null string. This macro exists primarily to direct GNU libc's header files to restrict their definitions to the minimal set found in the 1989 C standard. --- 1893,1899 ---- @item __STRICT_ANSI__ GCC defines this macro if and only if the @option{-ansi} switch, or a @option{-std} switch specifying strict conformance to some version of ISO C, ! was specified when GCC was invoked. It is defined to @samp{1}. This macro exists primarily to direct GNU libc's header files to restrict their definitions to the minimal set found in the 1989 C standard. *************** the @code{m68k-aout} environment it expa *** 1956,1962 **** This macro will have the correct definition even if @option{-f(no-)underscores} is in use, but it will not be correct if ! target-specific options that adjust this prefix are used (e.g. the OSF/rose @option{-mno-underscores} option). @item __SIZE_TYPE__ --- 1954,1960 ---- This macro will have the correct definition even if @option{-f(no-)underscores} is in use, but it will not be correct if ! target-specific options that adjust this prefix are used (e.g.@: the OSF/rose @option{-mno-underscores} option). @item __SIZE_TYPE__ *************** If a macro is redefined with a definitio *** 2099,2106 **** same as the old one, the preprocessor issues a warning and changes the macro to use the new definition. If the new definition is effectively the same, the redefinition is silently ignored. This allows, for ! instance, two different headers to define a common macro. The compiler ! will only complain if the definitions do not match. @node Macro Pitfalls @section Macro Pitfalls --- 2097,2104 ---- same as the old one, the preprocessor issues a warning and changes the macro to use the new definition. If the new definition is effectively the same, the redefinition is silently ignored. This allows, for ! instance, two different headers to define a common macro. The ! preprocessor will only complain if the definitions do not match. @node Macro Pitfalls @section Macro Pitfalls *************** will only complain if the definitions do *** 2109,2115 **** In this section we describe some special rules that apply to macros and macro expansion, and point out certain cases in which the rules have ! counterintuitive consequences that you must watch out for. @menu * Misnesting:: --- 2107,2113 ---- In this section we describe some special rules that apply to macros and macro expansion, and point out certain cases in which the rules have ! counter-intuitive consequences that you must watch out for. @menu * Misnesting:: *************** group in one file and end it in another. *** 2680,2686 **** Even if a conditional fails, the @var{controlled text} inside it is still run through initial transformations and tokenization. Therefore, ! it must all be lexically valid C. Normally the only way this matters is that all comments and string literals inside a failing conditional group must still be properly ended. --- 2678,2684 ---- Even if a conditional fails, the @var{controlled text} inside it is still run through initial transformations and tokenization. Therefore, ! it must all be lexically valid C@. Normally the only way this matters is that all comments and string literals inside a failing conditional group must still be properly ended. *************** code. *** 2760,2766 **** Arithmetic operators for addition, subtraction, multiplication, division, bitwise operations, shifts, comparisons, and logical operations (@code{&&} and @code{||}). The latter two obey the usual ! short-circuiting rules of standard C. @item Macros. All macros in the expression are expanded before actual --- 2758,2764 ---- Arithmetic operators for addition, subtraction, multiplication, division, bitwise operations, shifts, comparisons, and logical operations (@code{&&} and @code{||}). The latter two obey the usual ! short-circuiting rules of standard C@. @item Macros. All macros in the expression are expanded before actual *************** symbolic debuggers to be able to refer t *** 3008,3020 **** @samp{#line} directives into the output file. @samp{#line} is a directive that specifies the original line number and source file name for subsequent input in the current preprocessor input file. ! @samp{#line} has four variants: @table @code @item #line @var{linenum} ! @var{linenum} is a decimal integer constant. It specifies the line ! number which should be reported for the following line of input. ! Subsequent lines are counted from @var{linenum}. @item #line @var{linenum} @var{filename} @var{linenum} is the same as for the first form, and has the same --- 3006,3018 ---- @samp{#line} directives into the output file. @samp{#line} is a directive that specifies the original line number and source file name for subsequent input in the current preprocessor input file. ! @samp{#line} has three variants: @table @code @item #line @var{linenum} ! @var{linenum} is a non-negative decimal integer constant. It specifies ! the line number which should be reported for the following line of ! input. Subsequent lines are counted from @var{linenum}. @item #line @var{linenum} @var{filename} @var{linenum} is the same as for the first form, and has the same *************** effect. In addition, @var{filename} is *** 3022,3036 **** following line and all subsequent lines are reported to come from the file it specifies, until something else happens to change that. - @item #line @var{linenum} @var{filename} @var{flags@dots{}} - This form is a GCC extension. @var{linenum} and @var{filename} are the - same as the second form. The @var{flags} are small positive integers, - which have the same meaning as the flags which can appear at the end of a - linemarker in the preprocessor's output. @xref{Preprocessor Output}. - @item #line @var{anything else} @var{anything else} is checked for macro calls, which are expanded. ! The result should match one of the above three forms. @end table @samp{#line} directives alter the results of the @code{__FILE__} and --- 3020,3028 ---- following line and all subsequent lines are reported to come from the file it specifies, until something else happens to change that. @item #line @var{anything else} @var{anything else} is checked for macro calls, which are expanded. ! The result should match one of the above two forms. @end table @samp{#line} directives alter the results of the @code{__FILE__} and *************** DO_PRAGMA (GCC dependency "parse.y") *** 3088,3094 **** @end example The standard is unclear on where a @code{_Pragma} operator can appear. ! The preprocessor accepts it even within a preprocessing conditional directive like @samp{#if}. To be safe, you are probably best keeping it out of directives other than @samp{#define}, and putting it on a line of its own. --- 3080,3086 ---- @end example The standard is unclear on where a @code{_Pragma} operator can appear. ! The preprocessor does not accept it within a preprocessing conditional directive like @samp{#if}. To be safe, you are probably best keeping it out of directives other than @samp{#define}, and putting it on a line of its own. *************** compilers. They are documented in the G *** 3100,3107 **** @ftable @code @item #pragma GCC dependency @code{#pragma GCC dependency} allows you to check the relative dates of ! the current file and another file. If the other file is more recent than ! the current file, a warning is issued. This is useful if the current file is derived from the other file, and should be regenerated. The other file is searched for using the normal include search path. Optional trailing text can be used to give more information in the --- 3092,3099 ---- @ftable @code @item #pragma GCC dependency @code{#pragma GCC dependency} allows you to check the relative dates of ! the current file and another file. If the other file is more recent than ! the current file, a warning is issued. This is useful if the current file is derived from the other file, and should be regenerated. The other file is searched for using the normal include search path. Optional trailing text can be used to give more information in the *************** some systems, that string constant is co *** 3160,3166 **** the object file. On other systems, the directive is ignored. This directive is not part of the C standard, but it is not an official ! GNU extension either. We believe it came from System V. @findex #sccs The @samp{#sccs} directive is recognized on some systems, because it --- 3152,3158 ---- the object file. On other systems, the directive is ignored. This directive is not part of the C standard, but it is not an official ! GNU extension either. We believe it came from System V@. @findex #sccs The @samp{#sccs} directive is recognized on some systems, because it *************** produce no output, rather than a line of *** 3180,3186 **** @node Preprocessor Output @chapter Preprocessor Output ! When the C preprocessor is used with the C, C++, or Objective C compilers, it is integrated into the compiler and communicates a stream of binary tokens directly to the compiler's parser. However, it can also be used in the more conventional standalone mode, where it produces --- 3172,3178 ---- @node Preprocessor Output @chapter Preprocessor Output ! When the C preprocessor is used with the C, C++, or Objective-C compilers, it is integrated into the compiler and communicates a stream of binary tokens directly to the compiler's parser. However, it can also be used in the more conventional standalone mode, where it produces *************** discarded. *** 3195,3201 **** The ISO standard specifies that it is implementation defined whether a preprocessor preserves whitespace between tokens, or replaces it with ! e.g. a single space. In GNU CPP, whitespace between tokens is collapsed to become a single space, with the exception that the first token on a non-directive line is preceded with sufficient spaces that it appears in the same column in the preprocessed output that it appeared in in the --- 3187,3193 ---- The ISO standard specifies that it is implementation defined whether a preprocessor preserves whitespace between tokens, or replaces it with ! e.g.@: a single space. In GNU CPP, whitespace between tokens is collapsed to become a single space, with the exception that the first token on a non-directive line is preceded with sufficient spaces that it appears in the same column in the preprocessed output that it appeared in in the *************** wrapped in an implicit @code{extern "C"} *** 3236,3241 **** --- 3228,3239 ---- @c maybe cross reference NO_IMPLICIT_EXTERN_C @end table + As an extension, the preprocessor accepts linemarkers in non-assembler + input files. They are treated like the corresponding @samp{#line} + directive, (@pxref{Line Control}), except that trailing flags are + permitted, and are interpreted with the meanings described above. If + multiple flags are given, they must be in ascending order. + Some directives may be duplicated in the output of the preprocessor. These are @samp{#ident} (always), @samp{#pragma} (only if the preprocessor does not handle the pragma itself), and @samp{#define} and *************** This is impossible in ISO C@. *** 3311,3318 **** @item None of the GNU extensions to the preprocessor are available in ! traditional mode, with the exception of assertions, and those may be ! removed in the future. @item A true traditional C preprocessor does not recognize @samp{#elif}, --- 3309,3316 ---- @item None of the GNU extensions to the preprocessor are available in ! traditional mode, with the exception of a partial implementation of ! assertions, and those may be removed in the future. @item A true traditional C preprocessor does not recognize @samp{#elif}, *************** and the tokens to be pasted. *** 3327,3333 **** @item Traditional mode preserves the amount and form of whitespace provided by ! the user. Hard tabs remain hard tabs. This can be useful, e.g. if you are preprocessing a Makefile (which we do not encourage). @end itemize --- 3325,3331 ---- @item Traditional mode preserves the amount and form of whitespace provided by ! the user. Hard tabs remain hard tabs. This can be useful, e.g.@: if you are preprocessing a Makefile (which we do not encourage). @end itemize *************** reliance on behaviour described here, as *** 3388,3394 **** change subtly in future implementations. Also documented here are obsolete features and changes from previous ! versions of GNU CPP. @menu * Implementation-defined behavior:: --- 3386,3392 ---- change subtly in future implementations. Also documented here are obsolete features and changes from previous ! versions of GNU CPP@. @menu * Implementation-defined behavior:: *************** by available memory. *** 3504,3510 **** @item Number of parameters in a macro definition and arguments in a macro call. ! We allow @code{USHRT_MAX}, which is no smaller than 65,535. The minimum required by the standard is 127. @item Number of characters on a logical source line. --- 3502,3508 ---- @item Number of parameters in a macro definition and arguments in a macro call. ! We allow @code{USHRT_MAX}, which is no smaller than 65,535. The minimum required by the standard is 127. @item Number of characters on a logical source line. *************** may not be a limitation. *** 3528,3534 **** GNU CPP has a number of features which are present mainly for compatibility with older programs. We discourage their use in new code. ! In some cases, we plan to remove the feature in a future version of GCC. @menu * Assertions:: --- 3526,3532 ---- GNU CPP has a number of features which are present mainly for compatibility with older programs. We discourage their use in new code. ! In some cases, we plan to remove the feature in a future version of GCC@. @menu * Assertions:: *************** An assertion looks like this: *** 3561,3567 **** @end example @noindent ! @var{predicate} must be a single identifier. @var{answer} can be any sequence of tokens; all characters are significant except for leading and trailing whitespace, and differences in internal whitespace sequences are ignored. (This is similar to the rules governing macro --- 3559,3565 ---- @end example @noindent ! @var{predicate} must be a single identifier. @var{answer} can be any sequence of tokens; all characters are significant except for leading and trailing whitespace, and differences in internal whitespace sequences are ignored. (This is similar to the rules governing macro *************** read only once. Neither one is as porta *** 3628,3639 **** and we recommend you do not use them in new programs. @findex #import ! In the Objective C language, there is a variant of @samp{#include} called @samp{#import} which includes a file, but does so at most once. If you use @samp{#import} instead of @samp{#include}, then you don't need the conditionals inside the header file to prevent multiple inclusion of the contents. GCC permits the use of @samp{#import} in C ! and C++ as well as Objective C. However, it is not in standard C or C++ and should therefore not be used by portable programs. @samp{#import} is not a well designed feature. It requires the users of --- 3626,3637 ---- and we recommend you do not use them in new programs. @findex #import ! In the Objective-C language, there is a variant of @samp{#include} called @samp{#import} which includes a file, but does so at most once. If you use @samp{#import} instead of @samp{#include}, then you don't need the conditionals inside the header file to prevent multiple inclusion of the contents. GCC permits the use of @samp{#import} in C ! and C++ as well as Objective-C@. However, it is not in standard C or C++ and should therefore not be used by portable programs. @samp{#import} is not a well designed feature. It requires the users of *************** This is the same as @code{#pragma GCC po *** 3685,3691 **** GCC currently allows a string constant to extend across multiple logical lines of the source file. This extension is deprecated and will be ! removed in a future version of GCC. Such string constants are already rejected in all directives apart from @samp{#define}. Instead, make use of ISO C concatenation of adjacent string literals, or --- 3683,3689 ---- GCC currently allows a string constant to extend across multiple logical lines of the source file. This extension is deprecated and will be ! removed in a future version of GCC@. Such string constants are already rejected in all directives apart from @samp{#define}. Instead, make use of ISO C concatenation of adjacent string literals, or *************** use @samp{\n} followed by a backslash-ne *** 3698,3704 **** @cindex differences from previous versions This section details behavior which has changed from previous versions ! of GNU CPP. We do not plan to change it again in the near future, but we do not promise not to, either. The ``previous versions'' discussed here are 2.95 and before. The --- 3696,3702 ---- @cindex differences from previous versions This section details behavior which has changed from previous versions ! of GNU CPP@. We do not plan to change it again in the near future, but we do not promise not to, either. The ``previous versions'' discussed here are 2.95 and before. The *************** comma, then @samp{##} behaves as a norma *** 3762,3770 **** Traditional mode used to be implemented in the same program as normal preprocessing. Therefore, all the GNU extensions to the preprocessor ! were still available in traditional mode. It is now a separate program, ! and does not implement any of the GNU extensions except assertions. ! Even those may be removed in a future release. @end itemize @node Invocation --- 3760,3769 ---- Traditional mode used to be implemented in the same program as normal preprocessing. Therefore, all the GNU extensions to the preprocessor ! were still available in traditional mode. It is now a separate program ! and does not implement any of the GNU extensions, except for a partial ! implementation of assertions. Even those may be removed in a future ! release. @end itemize @node Invocation *************** Either @var{infile} or @var{outfile} may *** 3814,3824 **** means to write to standard output. Also, if either file is omitted, it means the same as if @option{-} had been specified for that file. ! All single-letter options which take an argument may have that argument ! appear immediately after the option letter, or with a space between ! option and argument: @option{-Ifoo} and @option{-I foo} have the same ! effect. Long options that take arguments require a space between option ! and argument. @cindex options @table @gcctabopt --- 3813,3828 ---- means to write to standard output. Also, if either file is omitted, it means the same as if @option{-} had been specified for that file. ! Unless otherwise noted, or the option ends in @samp{=}, all options ! which take an argument may have that argument appear either immediately ! after the option, or with a space between option and argument: ! @option{-Ifoo} and @option{-I foo} have the same effect. ! ! @cindex grouping options ! @cindex options, grouping ! Many options have multi-letter names; therefore multiple single-letter ! options may @emph{not} be grouped: @option{-dM} is very different from ! @w{@samp{-d -M}}. @cindex options @table @gcctabopt *************** $(objpfx)foo.o: foo.c *** 3989,3995 **** @item -MQ @var{target} Same as @option{-MT}, but it quotes any characters which are special to ! Make. @option{@w{-MQ '$(objpfx)foo.o'}} gives @example $$(objpfx)foo.o: foo.c --- 3993,3999 ---- @item -MQ @var{target} Same as @option{-MT}, but it quotes any characters which are special to ! Make. @option{@w{-MQ '$(objpfx)foo.o'}} gives @example $$(objpfx)foo.o: foo.c *************** The 1990 C standard, as amended in 1994. *** 4049,4055 **** @itemx iso9899:199x @itemx c9x The revised ISO C standard, published in December 1999. Before ! publication, this was known as C9X. @item gnu89 The 1990 C standard plus GNU extensions. This is the default. --- 4053,4059 ---- @itemx iso9899:199x @itemx c9x The revised ISO C standard, published in December 1999. Before ! publication, this was known as C9X@. @item gnu89 The 1990 C standard plus GNU extensions. This is the default. *************** is applied to the standard system direct *** 4133,4140 **** Indicate to the preprocessor that the input file has already been preprocessed. This suppresses things like macro expansion, trigraph conversion, escaped newline splicing, and processing of most directives. ! In this mode the integrated preprocessor is little more than a tokenizer ! for the front ends. @option{-fpreprocessed} is implicit if the input file has one of the extensions @samp{.i}, @samp{.ii} or @samp{.mi}. These are the --- 4137,4146 ---- Indicate to the preprocessor that the input file has already been preprocessed. This suppresses things like macro expansion, trigraph conversion, escaped newline splicing, and processing of most directives. ! The preprocessor still recognizes and removes comments, so that you can ! pass a file preprocessed with @option{-C} to the compiler without ! problems. In this mode the integrated preprocessor is little more than ! a tokenizer for the front ends. @option{-fpreprocessed} is implicit if the input file has one of the extensions @samp{.i}, @samp{.ii} or @samp{.mi}. These are the *************** the command line. Also, undefine all pr *** 4168,4174 **** macros preceding it on the command line. (This is a historical wart and may change in the future.) ! @item -dM Instead of the normal output, generate a list of @samp{#define} directives for all the macros defined during the execution of the preprocessor, including predefined macros. This gives you a way of --- 4174,4188 ---- macros preceding it on the command line. (This is a historical wart and may change in the future.) ! @item -dCHARS ! @var{CHARS} is a sequence of one or more of the following characters, ! and must not be preceded by a space. Other characters are interpreted ! by the compiler proper, or reserved for future versions of GCC, and so ! are silently ignored. If you specify characters whose behavior ! conflicts, the result is undefined. ! ! @table @samp ! @item M Instead of the normal output, generate a list of @samp{#define} directives for all the macros defined during the execution of the preprocessor, including predefined macros. This gives you a way of *************** touch foo.h; cpp -dM foo.h *** 4182,4199 **** @noindent will show all the predefined macros. ! @item -dD ! Like @option{-dM} except in two respects: it does @emph{not} include the predefined macros, and it outputs @emph{both} the @samp{#define} directives and the result of preprocessing. Both kinds of output go to the standard output file. ! @item -dN ! Like @option{-dD}, but emit only the macro names, not their expansions. ! @item -dI Output @samp{#include} directives in addition to the result of preprocessing. @item -P Inhibit generation of linemarkers in the output from the preprocessor. --- 4196,4214 ---- @noindent will show all the predefined macros. ! @item D ! Like @samp{M} except in two respects: it does @emph{not} include the predefined macros, and it outputs @emph{both} the @samp{#define} directives and the result of preprocessing. Both kinds of output go to the standard output file. ! @item N ! Like @samp{D}, but emit only the macro names, not their expansions. ! @item I Output @samp{#include} directives in addition to the result of preprocessing. + @end table @item -P Inhibit generation of linemarkers in the output from the preprocessor. *************** source line, since the first token on th *** 4218,4237 **** @item -gcc Define the macros @sc{__gnuc__}, @sc{__gnuc_minor__} and ! @sc{__gnuc_patchlevel__}. These are defined automatically when you use @command{gcc -E}; you can turn them off in that case with @option{-no-gcc}. @item -traditional Try to imitate the behavior of old-fashioned C, as opposed to ISO ! C@. @xref{Traditional Mode}. @item -trigraphs Process trigraph sequences. @xref{Initial processing}. @item -remap Enable special code to work around file systems which only permit very ! short file names, such as MS-DOS. @item -$ Forbid the use of @samp{$} in identifiers. The C standard allows --- 4233,4252 ---- @item -gcc Define the macros @sc{__gnuc__}, @sc{__gnuc_minor__} and ! @sc{__gnuc_patchlevel__}. These are defined automatically when you use @command{gcc -E}; you can turn them off in that case with @option{-no-gcc}. @item -traditional Try to imitate the behavior of old-fashioned C, as opposed to ISO ! C@. @xref{Traditional Mode}. @item -trigraphs Process trigraph sequences. @xref{Initial processing}. @item -remap Enable special code to work around file systems which only permit very ! short file names, such as MS-DOS@. @item -$ Forbid the use of @samp{$} in identifiers. The C standard allows diff -Nrc3pad gcc-3.0/gcc/doc/cppinternals.info gcc-3.0.1/gcc/doc/cppinternals.info *** gcc-3.0/gcc/doc/cppinternals.info Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/cppinternals.info Sun Aug 19 18:05:18 2001 *************** versions. *** 26,38 ****  File: cppinternals.info, Node: Top, Next: Conventions, Up: (DIR) ! Cpplib - the core of the GNU C Preprocessor ! ******************************************* The GNU C preprocessor in GCC 3.0 has been completely rewritten. It is now implemented as a library, cpplib, so it can be easily shared between a stand-alone preprocessor, and a preprocessor integrated with ! the C, C++ and Objective C front ends. It is also available for use by other programs, though this is not recommended as its exposed interface has not yet reached a point of reasonable stability. --- 26,38 ----  File: cppinternals.info, Node: Top, Next: Conventions, Up: (DIR) ! Cpplib--the core of the GNU C Preprocessor ! ****************************************** The GNU C preprocessor in GCC 3.0 has been completely rewritten. It is now implemented as a library, cpplib, so it can be easily shared between a stand-alone preprocessor, and a preprocessor integrated with ! the C, C++ and Objective-C front ends. It is also available for use by other programs, though this is not recommended as its exposed interface has not yet reached a point of reasonable stability. *************** would like to preserve, such as the form *** 51,57 **** * Menu: * Conventions:: Conventions used in the code. ! * Lexer:: The combined C, C++ and Objective C Lexer. * Whitespace:: Input and output newlines and whitespace. * Hash Nodes:: All identifiers are hashed. * Macro Expansion:: Macro expansion algorithm. --- 51,57 ---- * Menu: * Conventions:: Conventions used in the code. ! * Lexer:: The combined C, C++ and Objective-C Lexer. * Whitespace:: Input and output newlines and whitespace. * Hash Nodes:: All identifiers are hashed. * Macro Expansion:: Macro expansion algorithm. *************** File: cppinternals.info, Node: Conventi *** 64,70 **** Conventions *********** ! cpplib has two interfaces - one is exposed internally only, and the other is for both internal and external use. The convention is that functions and types that are exposed to --- 64,70 ---- Conventions *********** ! cpplib has two interfaces--one is exposed internally only, and the other is for both internal and external use. The convention is that functions and types that are exposed to *************** clients are in `cpplib.h', and prefixed *** 74,81 **** reasons this is no longer quite true, but we should strive to stick to it. ! We are striving to reduce the information exposed in cpplib.h to the ! bare minimum necessary, and then to keep it there. This makes clear exactly what external clients are entitled to assume, and allows us to change internals in the future without worrying whether library clients are perhaps relying on some kind of undocumented implementation-specific --- 74,81 ---- reasons this is no longer quite true, but we should strive to stick to it. ! We are striving to reduce the information exposed in `cpplib.h' to ! the bare minimum necessary, and then to keep it there. This makes clear exactly what external clients are entitled to assume, and allows us to change internals in the future without worrying whether library clients are perhaps relying on some kind of undocumented implementation-specific *************** unfortunately there is a trigraph repres *** 105,114 **** is possible for the trigraph `??/' to introduce an escaped newline. Escaped newlines are tedious because theoretically they can occur ! anywhere - between the `+' and `=' of the `+=' token, within the characters of an identifier, and even between the `*' and `/' that ! terminates a comment. Moreover, you cannot be sure there is just one - ! there might be an arbitrarily long sequence of them. So the routine `parse_identifier', that lexes an identifier, cannot assume that it can scan forwards until the first non-identifier --- 105,114 ---- is possible for the trigraph `??/' to introduce an escaped newline. Escaped newlines are tedious because theoretically they can occur ! anywhere--between the `+' and `=' of the `+=' token, within the characters of an identifier, and even between the `*' and `/' that ! terminates a comment. Moreover, you cannot be sure there is just ! one--there might be an arbitrarily long sequence of them. So the routine `parse_identifier', that lexes an identifier, cannot assume that it can scan forwards until the first non-identifier *************** allow the terminators of header names to *** 152,158 **** `>' terminates the header name. Interpretation of some character sequences depends upon whether we ! are lexing C, C++ or Objective C, and on the revision of the standard in force. For example, `::' is a single token in C++, but two separate `:' tokens, and almost certainly a syntax error, in C. Such cases are handled in the main function `_cpp_lex_token', based upon the flags set --- 152,158 ---- `>' terminates the header name. Interpretation of some character sequences depends upon whether we ! are lexing C, C++ or Objective-C, and on the revision of the standard in force. For example, `::' is a single token in C++, but two separate `:' tokens, and almost certainly a syntax error, in C. Such cases are handled in the main function `_cpp_lex_token', based upon the flags set *************** token of a substituted argument, and the *** 212,224 **** argument are all flagged `AVOID_LPASTE' by the macro expander. If a token flagged in this way does not have a `PREV_WHITE' flag, ! and the routine CPP_AVOID_PASTE determines that it might be misinterpreted by the lexer if a space is not inserted between it and the immediately preceding token, then stand-alone CPP's output routines will insert a space between them. To avoid excessive spacing, ! CPP_AVOID_PASTE tries hard to only request a space if one is likely to ! be necessary, but for reasons of efficiency it is slightly conservative ! and might recommend a space where one is not strictly needed. Finally, the preprocessor takes great care to ensure it keeps track of both the position of a token in the source file, for diagnostic --- 212,225 ---- argument are all flagged `AVOID_LPASTE' by the macro expander. If a token flagged in this way does not have a `PREV_WHITE' flag, ! and the routine `cpp_avoid_paste' determines that it might be misinterpreted by the lexer if a space is not inserted between it and the immediately preceding token, then stand-alone CPP's output routines will insert a space between them. To avoid excessive spacing, ! `cpp_avoid_paste' tries hard to only request a space if one is likely ! to be necessary, but for reasons of efficiency it is slightly ! conservative and might recommend a space where one is not strictly ! needed. Finally, the preprocessor takes great care to ensure it keeps track of both the position of a token in the source file, for diagnostic *************** may differ for the following reasons: *** 234,246 **** interpreted as a single space, with the result that the macro's replacement appears in full on the same line that the macro name appeared in the source file. This is particularly important for ! stringification of arguments - newlines embedded in the arguments must appear in the string as spaces. ! The source file location is maintained in the LINENO member of the ! CPP_BUFFER structure, and the column number inferred from the current ! position in the buffer relative to the LINE_BASE buffer variable, which ! is updated with every newline whether escaped or not. TODO: Finish this. --- 235,247 ---- interpreted as a single space, with the result that the macro's replacement appears in full on the same line that the macro name appeared in the source file. This is particularly important for ! stringification of arguments--newlines embedded in the arguments must appear in the string as spaces. ! The source file location is maintained in the `lineno' member of the ! `cpp_buffer' structure, and the column number inferred from the current ! position in the buffer relative to the `line_base' buffer variable, ! which is updated with every newline whether escaped or not. TODO: Finish this. *************** Hash Nodes *** 254,260 **** it and stores it in the hash table. By "identifier" we mean tokens with type `CPP_NAME'; this includes identifiers in the usual C sense, as well as keywords, directive names, macro names and so on. For example, ! all of "pragma", "int", "foo" and "__GNUC__" are identifiers and hashed when lexed. Each node in the hash table contain various information about the --- 255,261 ---- it and stores it in the hash table. By "identifier" we mean tokens with type `CPP_NAME'; this includes identifiers in the usual C sense, as well as keywords, directive names, macro names and so on. For example, ! all of `pragma', `int', `foo' and `__GNUC__' are identifiers and hashed when lexed. Each node in the hash table contain various information about the *************** time, each identifier falls into exactly *** 281,289 **** * Void ! Everything else falls into this category - an identifier that is ! not currently a macro, or a macro that has since been undefined ! with `#undef'. When preprocessing C++, this category also includes the named operators, such as `xor'. In expressions these behave like the --- 282,290 ---- * Void ! Everything else falls into this category--an identifier that is not ! currently a macro, or a macro that has since been undefined with ! `#undef'. When preprocessing C++, this category also includes the named operators, such as `xor'. In expressions these behave like the *************** macro is defined when we leave the heade *** 349,355 **** the host supports it, we try to map suitably large files into memory, rather than reading them in directly. ! The include paths are intenally stored on a null-terminated singly-linked list, starting with the `"header.h"' directory search chain, which then links into the `' directory chain. --- 350,356 ---- the host supports it, we try to map suitably large files into memory, rather than reading them in directly. ! The include paths are internally stored on a null-terminated singly-linked list, starting with the `"header.h"' directory search chain, which then links into the `' directory chain. *************** Index *** 407,418 ****  Tag Table: Node: Top904 ! Node: Conventions2378 ! Node: Lexer3322 ! Node: Whitespace7926 ! Node: Hash Nodes11970 ! Node: Macro Expansion14855 ! Node: Files15002 ! Node: Index18468  End Tag Table --- 408,419 ----  Tag Table: Node: Top904 ! Node: Conventions2376 ! Node: Lexer3321 ! Node: Whitespace7923 ! Node: Hash Nodes11976 ! Node: Macro Expansion14860 ! Node: Files15007 ! Node: Index18474  End Tag Table diff -Nrc3pad gcc-3.0/gcc/doc/cppinternals.texi gcc-3.0.1/gcc/doc/cppinternals.texi *** gcc-3.0/gcc/doc/cppinternals.texi Thu Jun 7 15:04:42 2001 --- gcc-3.0.1/gcc/doc/cppinternals.texi Tue Jul 3 01:50:28 2001 *************** into another language, under the above c *** 67,78 **** @page @node Top, Conventions,, (DIR) ! @chapter Cpplib - the core of the GNU C Preprocessor The GNU C preprocessor in GCC 3.0 has been completely rewritten. It is now implemented as a library, cpplib, so it can be easily shared between a stand-alone preprocessor, and a preprocessor integrated with the C, ! C++ and Objective C front ends. It is also available for use by other programs, though this is not recommended as its exposed interface has not yet reached a point of reasonable stability. --- 67,78 ---- @page @node Top, Conventions,, (DIR) ! @chapter Cpplib---the core of the GNU C Preprocessor The GNU C preprocessor in GCC 3.0 has been completely rewritten. It is now implemented as a library, cpplib, so it can be easily shared between a stand-alone preprocessor, and a preprocessor integrated with the C, ! C++ and Objective-C front ends. It is also available for use by other programs, though this is not recommended as its exposed interface has not yet reached a point of reasonable stability. *************** Identifiers, macro expansion, hash nodes *** 90,96 **** @menu * Conventions:: Conventions used in the code. ! * Lexer:: The combined C, C++ and Objective C Lexer. * Whitespace:: Input and output newlines and whitespace. * Hash Nodes:: All identifiers are hashed. * Macro Expansion:: Macro expansion algorithm. --- 90,96 ---- @menu * Conventions:: Conventions used in the code. ! * Lexer:: The combined C, C++ and Objective-C Lexer. * Whitespace:: Input and output newlines and whitespace. * Hash Nodes:: All identifiers are hashed. * Macro Expansion:: Macro expansion algorithm. *************** Identifiers, macro expansion, hash nodes *** 103,119 **** @cindex interface @cindex header files ! cpplib has two interfaces - one is exposed internally only, and the other is for both internal and external use. The convention is that functions and types that are exposed to multiple files internally are prefixed with @samp{_cpp_}, and are to be found in ! the file @samp{cpphash.h}. Functions and types exposed to external ! clients are in @samp{cpplib.h}, and prefixed with @samp{cpp_}. For historical reasons this is no longer quite true, but we should strive to stick to it. ! We are striving to reduce the information exposed in cpplib.h to the bare minimum necessary, and then to keep it there. This makes clear exactly what external clients are entitled to assume, and allows us to change internals in the future without worrying whether library clients --- 103,119 ---- @cindex interface @cindex header files ! cpplib has two interfaces---one is exposed internally only, and the other is for both internal and external use. The convention is that functions and types that are exposed to multiple files internally are prefixed with @samp{_cpp_}, and are to be found in ! the file @file{cpphash.h}. Functions and types exposed to external ! clients are in @file{cpplib.h}, and prefixed with @samp{cpp_}. For historical reasons this is no longer quite true, but we should strive to stick to it. ! We are striving to reduce the information exposed in @file{cpplib.h} to the bare minimum necessary, and then to keep it there. This makes clear exactly what external clients are entitled to assume, and allows us to change internals in the future without worrying whether library clients *************** behaviour. *** 125,137 **** @cindex lexer @cindex tokens ! The lexer is contained in the file @samp{cpplex.c}. We want to have a lexer that is single-pass, for efficiency reasons. We would also like the lexer to only step forwards through the input files, and not step back. This will make future changes to support different character sets, in particular state or shift-dependent ones, much easier. ! This file also contains all information needed to spell a token, i.e. to output it either in a diagnostic or to a preprocessed output file. This information is not exported, but made available to clients through such functions as @samp{cpp_spell_token} and @samp{cpp_token_len}. --- 125,137 ---- @cindex lexer @cindex tokens ! The lexer is contained in the file @file{cpplex.c}. We want to have a lexer that is single-pass, for efficiency reasons. We would also like the lexer to only step forwards through the input files, and not step back. This will make future changes to support different character sets, in particular state or shift-dependent ones, much easier. ! This file also contains all information needed to spell a token, i.e.@: to output it either in a diagnostic or to a preprocessed output file. This information is not exported, but made available to clients through such functions as @samp{cpp_spell_token} and @samp{cpp_token_len}. *************** there is a trigraph representation for a *** 143,152 **** the trigraph @samp{??/} to introduce an escaped newline. Escaped newlines are tedious because theoretically they can occur ! anywhere - between the @samp{+} and @samp{=} of the @samp{+=} token, within the characters of an identifier, and even between the @samp{*} and @samp{/} that terminates a comment. Moreover, you cannot be sure ! there is just one - there might be an arbitrarily long sequence of them. So the routine @samp{parse_identifier}, that lexes an identifier, cannot assume that it can scan forwards until the first non-identifier --- 143,152 ---- the trigraph @samp{??/} to introduce an escaped newline. Escaped newlines are tedious because theoretically they can occur ! anywhere---between the @samp{+} and @samp{=} of the @samp{+=} token, within the characters of an identifier, and even between the @samp{*} and @samp{/} that terminates a comment. Moreover, you cannot be sure ! there is just one---there might be an arbitrarily long sequence of them. So the routine @samp{parse_identifier}, that lexes an identifier, cannot assume that it can scan forwards until the first non-identifier *************** some sort. These cases use the function *** 165,171 **** which returns the first character after any intervening newlines. The lexer needs to keep track of the correct column position, ! including counting tabs as specified by the @samp{-ftabstop=} option. This should be done even within comments; C-style comments can appear in the middle of a line, and we want to report diagnostics in the correct position for text appearing after the end of the comment. --- 165,171 ---- which returns the first character after any intervening newlines. The lexer needs to keep track of the correct column position, ! including counting tabs as specified by the @option{-ftabstop=} option. This should be done even within comments; C-style comments can appear in the middle of a line, and we want to report diagnostics in the correct position for text appearing after the end of the comment. *************** we don't allow the terminators of header *** 191,199 **** @samp{"} or @samp{>} terminates the header name. Interpretation of some character sequences depends upon whether we are ! lexing C, C++ or Objective C, and on the revision of the standard in force. For example, @samp{::} is a single token in C++, but two ! separate @samp{:} tokens, and almost certainly a syntax error, in C. Such cases are handled in the main function @samp{_cpp_lex_token}, based upon the flags set in the @samp{cpp_options} structure. --- 191,199 ---- @samp{"} or @samp{>} terminates the header name. Interpretation of some character sequences depends upon whether we are ! lexing C, C++ or Objective-C, and on the revision of the standard in force. For example, @samp{::} is a single token in C++, but two ! separate @samp{:} tokens, and almost certainly a syntax error, in C@. Such cases are handled in the main function @samp{_cpp_lex_token}, based upon the flags set in the @samp{cpp_options} structure. *************** Note we have almost, but not quite, achi *** 201,208 **** backwards in the input stream. Currently @samp{skip_escaped_newlines} does step back, though with care it should be possible to adjust it so that this does not happen. For example, one tricky issue is if we meet ! a trigraph, but the command line option @samp{-trigraphs} is not in ! force but @samp{-Wtrigraphs} is, we need to warn about it but then buffer it and continue to treat it as 3 separate characters. @node Whitespace, Hash Nodes, Lexer, Top --- 201,208 ---- backwards in the input stream. Currently @samp{skip_escaped_newlines} does step back, though with care it should be possible to adjust it so that this does not happen. For example, one tricky issue is if we meet ! a trigraph, but the command line option @option{-trigraphs} is not in ! force but @option{-Wtrigraphs} is, we need to warn about it but then buffer it and continue to treat it as 3 separate characters. @node Whitespace, Hash Nodes, Lexer, Top *************** token of a substituted argument, and the *** 253,263 **** argument are all flagged @samp{AVOID_LPASTE} by the macro expander. If a token flagged in this way does not have a @samp{PREV_WHITE} flag, ! and the routine @var{cpp_avoid_paste} determines that it might be misinterpreted by the lexer if a space is not inserted between it and the immediately preceding token, then stand-alone CPP's output routines will insert a space between them. To avoid excessive spacing, ! @var{cpp_avoid_paste} tries hard to only request a space if one is likely to be necessary, but for reasons of efficiency it is slightly conservative and might recommend a space where one is not strictly needed. --- 253,263 ---- argument are all flagged @samp{AVOID_LPASTE} by the macro expander. If a token flagged in this way does not have a @samp{PREV_WHITE} flag, ! and the routine @code{cpp_avoid_paste} determines that it might be misinterpreted by the lexer if a space is not inserted between it and the immediately preceding token, then stand-alone CPP's output routines will insert a space between them. To avoid excessive spacing, ! @code{cpp_avoid_paste} tries hard to only request a space if one is likely to be necessary, but for reasons of efficiency it is slightly conservative and might recommend a space where one is not strictly needed. *************** A macro expansion replaces the tokens th *** 278,290 **** newlines appearing in the macro's arguments are interpreted as a single space, with the result that the macro's replacement appears in full on the same line that the macro name appeared in the source file. This is ! particularly important for stringification of arguments - newlines embedded in the arguments must appear in the string as spaces. @end itemize ! The source file location is maintained in the @var{lineno} member of the ! @var{cpp_buffer} structure, and the column number inferred from the ! current position in the buffer relative to the @var{line_base} buffer variable, which is updated with every newline whether escaped or not. TODO: Finish this. --- 278,290 ---- newlines appearing in the macro's arguments are interpreted as a single space, with the result that the macro's replacement appears in full on the same line that the macro name appeared in the source file. This is ! particularly important for stringification of arguments---newlines embedded in the arguments must appear in the string as spaces. @end itemize ! The source file location is maintained in the @code{lineno} member of the ! @code{cpp_buffer} structure, and the column number inferred from the ! current position in the buffer relative to the @code{line_base} buffer variable, which is updated with every newline whether escaped or not. TODO: Finish this. *************** TODO: Finish this. *** 297,307 **** @cindex assertions @cindex named operators ! When cpplib encounters an "identifier", it generates a hash code for it ! and stores it in the hash table. By "identifier" we mean tokens with type @samp{CPP_NAME}; this includes identifiers in the usual C sense, as well as keywords, directive names, macro names and so on. For example, ! all of "pragma", "int", "foo" and "__GNUC__" are identifiers and hashed when lexed. Each node in the hash table contain various information about the --- 297,307 ---- @cindex assertions @cindex named operators ! When cpplib encounters an ``identifier'', it generates a hash code for it ! and stores it in the hash table. By ``identifier'' we mean tokens with type @samp{CPP_NAME}; this includes identifiers in the usual C sense, as well as keywords, directive names, macro names and so on. For example, ! all of @samp{pragma}, @samp{int}, @samp{foo} and @samp{__GNUC__} are identifiers and hashed when lexed. Each node in the hash table contain various information about the *************** that assertion. *** 328,334 **** @item Void ! Everything else falls into this category - an identifier that is not currently a macro, or a macro that has since been undefined with @code{#undef}. --- 328,334 ---- @item Void ! Everything else falls into this category---an identifier that is not currently a macro, or a macro that has since been undefined with @code{#undef}. *************** enum stored in its hash node, so that di *** 360,366 **** @cindex files Fairly obviously, the file handling code of cpplib resides in the file ! @samp{cppfiles.c}. It takes care of the details of file searching, opening, reading and caching, for both the main source file and all the headers it recursively includes. --- 360,366 ---- @cindex files Fairly obviously, the file handling code of cpplib resides in the file ! @file{cppfiles.c}. It takes care of the details of file searching, opening, reading and caching, for both the main source file and all the headers it recursively includes. *************** macro is defined when we leave the heade *** 392,398 **** the host supports it, we try to map suitably large files into memory, rather than reading them in directly. ! The include paths are intenally stored on a null-terminated singly-linked list, starting with the @code{"header.h"} directory search chain, which then links into the @code{} directory chain. --- 392,398 ---- the host supports it, we try to map suitably large files into memory, rather than reading them in directly. ! The include paths are internally stored on a null-terminated singly-linked list, starting with the @code{"header.h"} directory search chain, which then links into the @code{} directory chain. diff -Nrc3pad gcc-3.0/gcc/doc/extend.texi gcc-3.0.1/gcc/doc/extend.texi *** gcc-3.0/gcc/doc/extend.texi Thu Jun 14 15:54:19 2001 --- gcc-3.0.1/gcc/doc/extend.texi Sat Aug 4 04:40:55 2001 *************** *** 8,20 **** @cindex C language extensions @opindex pedantic ! GNU C provides several language features not found in ISO standard C. ! (The @option{-pedantic} option directs GNU CC to print a warning message if any of these features is used.) To test for the availability of these features in conditional compilation, check for a predefined macro ! @code{__GNUC__}, which is always defined under GNU CC. ! These extensions are available in C and Objective C. Most of them are also available in C++. @xref{C++ Extensions,,Extensions to the C++ Language}, for extensions that apply @emph{only} to C++. --- 8,20 ---- @cindex C language extensions @opindex pedantic ! GNU C provides several language features not found in ISO standard C@. ! (The @option{-pedantic} option directs GCC to print a warning message if any of these features is used.) To test for the availability of these features in conditional compilation, check for a predefined macro ! @code{__GNUC__}, which is always defined under GCC@. ! These extensions are available in C and Objective C@. Most of them are also available in C++. @xref{C++ Extensions,,Extensions to the C++ Language}, for extensions that apply @emph{only} to C++. *************** extensions, accepted by GCC in C89 mode *** 139,145 **** @c changed it from "within" to "in". --mew 4feb93 A compound statement enclosed in parentheses may appear as an expression ! in GNU C. This allows you to use loops, switches, and local variables within an expression. Recall that a compound statement is a sequence of statements surrounded --- 139,145 ---- @c changed it from "within" to "in". --mew 4feb93 A compound statement enclosed in parentheses may appear as an expression ! in GNU C@. This allows you to use loops, switches, and local variables within an expression. Recall that a compound statement is a sequence of statements surrounded *************** called @dfn{lexical scoping}. For examp *** 385,390 **** --- 385,391 ---- function which uses an inherited variable named @code{offset}: @example + @group bar (int *array, int offset, int size) @{ int access (int *array, int index) *************** bar (int *array, int offset, int size) *** 394,399 **** --- 395,401 ---- for (i = 0; i < size; i++) @dots{} access (array, i) @dots{} @} + @end group @end example Nested function definitions are permitted within functions in the places *************** but it's not wise to take the risk. If, *** 427,433 **** does not refer to anything that has gone out of scope, you should be safe. ! GNU CC implements taking the address of a nested function using a technique called @dfn{trampolines}. A paper describing them is available as @uref{http://people.debian.org/~karlheg/Usenix88-lexic.pdf}. --- 429,435 ---- does not refer to anything that has gone out of scope, you should be safe. ! GCC implements taking the address of a nested function using a technique called @dfn{trampolines}. A paper describing them is available as @uref{http://people.debian.org/~karlheg/Usenix88-lexic.pdf}. *************** are open-coded on all types of machines. *** 803,809 **** if the machine supports fullword-to-doubleword a widening multiply instruction. Division and shifts are open-coded only on machines that provide special support. The operations that are not open-coded use ! special library routines that come with GNU CC. There may be pitfalls when you use @code{long long} types for function arguments, unless you declare function prototypes. If a function --- 805,811 ---- if the machine supports fullword-to-doubleword a widening multiply instruction. Division and shifts are open-coded only on machines that provide special support. The operations that are not open-coded use ! special library routines that come with GCC@. There may be pitfalls when you use @code{long long} types for function arguments, unless you declare function prototypes. If a function *************** extract the imaginary part. This is a G *** 850,869 **** floating type, you should use the ISO C99 functions @code{crealf}, @code{creal}, @code{creall}, @code{cimagf}, @code{cimag} and @code{cimagl}, declared in @code{} and also provided as ! built-in functions by GCC. @cindex complex conjugation The operator @samp{~} performs complex conjugation when used on a value with a complex type. This is a GNU extension; for values of floating type, you should use the ISO C99 functions @code{conjf}, @code{conj} and @code{conjl}, declared in @code{} and also ! provided as built-in functions by GCC. ! GNU CC can allocate complex automatic variables in a noncontiguous fashion; it's even possible for the real part to be in a register while the imaginary part is on the stack (or vice-versa). None of the supported debugging info formats has a way to represent noncontiguous ! allocation like this, so GNU CC describes a noncontiguous complex variable as if it were two separate variables of noncomplex type. If the variable's actual name is @code{foo}, the two fictitious variables are named @code{foo$real} and @code{foo$imag}. You can --- 852,871 ---- floating type, you should use the ISO C99 functions @code{crealf}, @code{creal}, @code{creall}, @code{cimagf}, @code{cimag} and @code{cimagl}, declared in @code{} and also provided as ! built-in functions by GCC@. @cindex complex conjugation The operator @samp{~} performs complex conjugation when used on a value with a complex type. This is a GNU extension; for values of floating type, you should use the ISO C99 functions @code{conjf}, @code{conj} and @code{conjl}, declared in @code{} and also ! provided as built-in functions by GCC@. ! GCC can allocate complex automatic variables in a noncontiguous fashion; it's even possible for the real part to be in a register while the imaginary part is on the stack (or vice-versa). None of the supported debugging info formats has a way to represent noncontiguous ! allocation like this, so GCC describes a noncontiguous complex variable as if it were two separate variables of noncomplex type. If the variable's actual name is @code{foo}, the two fictitious variables are named @code{foo$real} and @code{foo$imag}. You can *************** conforming) and in C++. In that format *** 884,890 **** @samp{0x} hex introducer and the @samp{p} or @samp{P} exponent field are mandatory. The exponent is a decimal number that indicates the power of 2 by which the significant part will be multiplied. Thus @samp{0x1.f} is ! 1 15/16, @samp{p3} multiplies it by 8, and the value of @code{0x1.fp3} is the same as @code{1.55e1}. Unlike for floating-point numbers in the decimal notation the exponent --- 886,898 ---- @samp{0x} hex introducer and the @samp{p} or @samp{P} exponent field are mandatory. The exponent is a decimal number that indicates the power of 2 by which the significant part will be multiplied. Thus @samp{0x1.f} is ! @tex ! $1 {15\over16}$, ! @end tex ! @ifnottex ! 1 15/16, ! @end ifnottex ! @samp{p3} multiplies it by 8, and the value of @code{0x1.fp3} is the same as @code{1.55e1}. Unlike for floating-point numbers in the decimal notation the exponent *************** extension for floating-point constants o *** 900,906 **** @cindex length-zero arrays @cindex flexible array members ! Zero-length arrays are allowed in GNU C. They are very useful as the last element of a structure which is really a header for a variable-length object: --- 908,914 ---- @cindex length-zero arrays @cindex flexible array members ! Zero-length arrays are allowed in GNU C@. They are very useful as the last element of a structure which is really a header for a variable-length object: *************** Non-empty initialization of zero-length *** 948,954 **** Instead GCC allows static initialization of flexible array members. This is equivalent to defining a new structure containing the original structure followed by an array of sufficient size to contain the data. ! I.e. in the following, @code{f1} is constructed as if it were declared like @code{f2}. @example --- 956,962 ---- Instead GCC allows static initialization of flexible array members. This is equivalent to defining a new structure containing the original structure followed by an array of sufficient size to contain the data. ! I.e.@: in the following, @code{f1} is constructed as if it were declared like @code{f2}. @example *************** removed. *** 1170,1176 **** Subscripting is allowed on arrays that are not lvalues, even though the unary @samp{&} operator is not. (In ISO C99, both are allowed (though the array may not be used after the next sequence point), but this ISO ! C99 feature is not yet fully supported in GCC.) For example, this is valid in GNU C though not valid in C89: @example --- 1178,1184 ---- Subscripting is allowed on arrays that are not lvalues, even though the unary @samp{&} operator is not. (In ISO C99, both are allowed (though the array may not be used after the next sequence point), but this ISO ! C99 feature is not yet fully supported in GCC@.) For example, this is valid in GNU C though not valid in C89: @example *************** are used. *** 1210,1216 **** @cindex non-constant initializers As in standard C++ and ISO C99, the elements of an aggregate initializer for an ! automatic variable are not required to be constant expressions in GNU C. Here is an example of an initializer with run-time varying elements: @example --- 1218,1224 ---- @cindex non-constant initializers As in standard C++ and ISO C99, the elements of an aggregate initializer for an ! automatic variable are not required to be constant expressions in GNU C@. Here is an example of an initializer with run-time varying elements: @example *************** double y; *** 1491,1497 **** @end example @noindent ! both @code{x} and @code{y} can be cast to type @code{union} foo. Using the cast as the right-hand side of an assignment to a variable of union type is equivalent to storing in a member of the union: --- 1499,1505 ---- @end example @noindent ! both @code{x} and @code{y} can be cast to type @code{union foo}. Using the cast as the right-hand side of an assignment to a variable of union type is equivalent to storing in a member of the union: *************** attributes. *** 1574,1584 **** @cindex @code{noreturn} function attribute @item noreturn A few standard library functions, such as @code{abort} and @code{exit}, ! cannot return. GNU CC knows this automatically. Some programs define their own functions that never return. You can declare them @code{noreturn} to tell the compiler this fact. For example, @smallexample void fatal () __attribute__ ((noreturn)); void --- 1582,1593 ---- @cindex @code{noreturn} function attribute @item noreturn A few standard library functions, such as @code{abort} and @code{exit}, ! cannot return. GCC knows this automatically. Some programs define their own functions that never return. You can declare them @code{noreturn} to tell the compiler this fact. For example, @smallexample + @group void fatal () __attribute__ ((noreturn)); void *************** fatal (@dots{}) *** 1587,1592 **** --- 1596,1602 ---- @dots{} /* @r{Print error message.} */ @dots{} exit (1); @} + @end group @end smallexample The @code{noreturn} keyword tells the compiler to assume that *************** restored before calling the @code{noretu *** 1601,1607 **** It does not make sense for a @code{noreturn} function to have a return type other than @code{void}. ! The attribute @code{noreturn} is not implemented in GNU C versions earlier than 2.5. An alternative way to declare that a function does not return, which works in the current version and in some older versions, is as follows: --- 1611,1617 ---- It does not make sense for a @code{noreturn} function to have a return type other than @code{void}. ! The attribute @code{noreturn} is not implemented in GCC versions earlier than 2.5. An alternative way to declare that a function does not return, which works in the current version and in some older versions, is as follows: *************** Interesting non-pure functions are funct *** 1634,1640 **** depending on volatile memory or other system resource, that may change between two consecutive calls (such as @code{feof} in a multithreading environment). ! The attribute @code{pure} is not implemented in GNU C versions earlier than 2.96. @cindex @code{const} function attribute @item const --- 1644,1650 ---- depending on volatile memory or other system resource, that may change between two consecutive calls (such as @code{feof} in a multithreading environment). ! The attribute @code{pure} is not implemented in GCC versions earlier than 2.96. @cindex @code{const} function attribute @item const *************** function that calls a non-@code{const} f *** 1650,1656 **** @code{const}. It does not make sense for a @code{const} function to return @code{void}. ! The attribute @code{const} is not implemented in GNU C versions earlier than 2.5. An alternative way to declare that a function has no side effects, which works in the current version and in some older versions, is as follows: --- 1660,1666 ---- @code{const}. It does not make sense for a @code{const} function to return @code{void}. ! The attribute @code{const} is not implemented in GCC versions earlier than 2.5. An alternative way to declare that a function has no side effects, which works in the current version and in some older versions, is as follows: *************** attribute are 2 and 3. *** 1703,1709 **** @opindex ffreestanding The @code{format} attribute allows you to identify your own functions ! which take format strings as arguments, so that GNU CC can check the calls to these functions for errors. The compiler always (unless @option{-ffreestanding} is used) checks formats for the standard library functions @code{printf}, @code{fprintf}, --- 1713,1719 ---- @opindex ffreestanding The @code{format} attribute allows you to identify your own functions ! which take format strings as arguments, so that GCC can check the calls to these functions for errors. The compiler always (unless @option{-ffreestanding} is used) checks formats for the standard library functions @code{printf}, @code{fprintf}, *************** The parameter @var{string-index} specifi *** 1749,1755 **** string argument (starting from 1). The @code{format-arg} attribute allows you to identify your own ! functions which modify format strings, so that GNU CC can check the calls to @code{printf}, @code{scanf}, @code{strftime} or @code{strfmon} type function whose operands are a call to one of your own function. The compiler always treats @code{gettext}, @code{dgettext}, and --- 1759,1765 ---- string argument (starting from 1). The @code{format-arg} attribute allows you to identify your own ! functions which modify format strings, so that GCC can check the calls to @code{printf}, @code{scanf}, @code{strftime} or @code{strfmon} type function whose operands are a call to one of your own function. The compiler always treats @code{gettext}, @code{dgettext}, and *************** been called. Functions with these attri *** 1797,1807 **** initializing data that will be used implicitly during the execution of the program. ! These attributes are not currently implemented for Objective C. @item unused This attribute, attached to a function, means that the function is meant ! to be possibly unused. GNU CC will not produce a warning for this function. GNU C++ does not currently support this attribute as definitions without parameters are valid in C++. --- 1807,1817 ---- initializing data that will be used implicitly during the execution of the program. ! These attributes are not currently implemented for Objective C@. @item unused This attribute, attached to a function, means that the function is meant ! to be possibly unused. GCC will not produce a warning for this function. GNU C++ does not currently support this attribute as definitions without parameters are valid in C++. *************** Not all target machines support this att *** 1839,1852 **** @item no_check_memory_usage @cindex @code{no_check_memory_usage} function attribute @opindex fcheck-memory-usage ! The @code{no_check_memory_usage} attribute causes GNU CC to omit checks of memory references when it generates code for that function. Normally if you specify @option{-fcheck-memory-usage} (see @pxref{Code Gen ! Options}), GNU CC generates calls to support routines before most memory accesses to permit support code to record usage and detect uses of ! uninitialized or unallocated storage. Since GNU CC cannot handle @code{asm} statements properly they are not allowed in such functions. ! If you declare a function with this attribute, GNU CC will not generate memory checking code for that function, permitting the use of @code{asm} statements without having to compile that function with different options. This also allows you to write support routines of your own if --- 1849,1862 ---- @item no_check_memory_usage @cindex @code{no_check_memory_usage} function attribute @opindex fcheck-memory-usage ! The @code{no_check_memory_usage} attribute causes GCC to omit checks of memory references when it generates code for that function. Normally if you specify @option{-fcheck-memory-usage} (see @pxref{Code Gen ! Options}), GCC generates calls to support routines before most memory accesses to permit support code to record usage and detect uses of ! uninitialized or unallocated storage. Since GCC cannot handle @code{asm} statements properly they are not allowed in such functions. ! If you declare a function with this attribute, GCC will not generate memory checking code for that function, permitting the use of @code{asm} statements without having to compile that function with different options. This also allows you to write support routines of your own if *************** current location can be called. *** 1891,1897 **** @item long_call/short_call @cindex indirect calls on ARM This attribute allows to specify how to call a particular function on ! ARM. Both attributes override the @option{-mlong-calls} (@pxref{ARM Options}) command line switch and @code{#pragma long_calls} settings. The @code{long_call} attribute causes the compiler to always call the function by first loading its address into a register and then using the --- 1901,1907 ---- @item long_call/short_call @cindex indirect calls on ARM This attribute allows to specify how to call a particular function on ! ARM@. Both attributes override the @option{-mlong-calls} (@pxref{ARM Options}) command line switch and @code{#pragma long_calls} settings. The @code{long_call} attribute causes the compiler to always call the function by first loading its address into a register and then using the *************** adding an optional parameter to the inte *** 1954,1960 **** void f () __attribute__ ((interrupt ("IRQ"))); @end smallexample ! Permissible values for this parameter are: IRQ, FIQ, SWI, ABORT and UNDEF. @item interrupt_handler @cindex interrupt handler functions on the H8/300 and SH processors --- 1964,1970 ---- void f () __attribute__ ((interrupt ("IRQ"))); @end smallexample ! Permissible values for this parameter are: IRQ, FIQ, SWI, ABORT and UNDEF@. @item interrupt_handler @cindex interrupt handler functions on the H8/300 and SH processors *************** alternate stack. *** 1971,1977 **** @smallexample void *alt_stack; ! void f () __attribute__ ((interrupt_handler, sp_switch ("alt_stack"))); @end smallexample @item trap_exit --- 1981,1988 ---- @smallexample void *alt_stack; ! void f () __attribute__ ((interrupt_handler, ! sp_switch ("alt_stack"))); @end smallexample @item trap_exit *************** slightly under 32kbytes of data. *** 2003,2009 **** Use this option on the AVR to indicate that the specified function is an signal handler. The compiler will generate function entry and exit sequences suitable for use in an signal handler when this ! attribute is present. Interrupts will be disabled inside function. @item naked @cindex function without a prologue/epilogue code --- 2014,2020 ---- Use this option on the AVR to indicate that the specified function is an signal handler. The compiler will generate function entry and exit sequences suitable for use in an signal handler when this ! attribute is present. Interrupts will be disabled inside function. @item naked @cindex function without a prologue/epilogue code *************** Preprocessing Directives, cpp, The C Pre *** 2072,2078 **** This section describes the syntax with which @code{__attribute__} may be used, and the constructs to which attribute specifiers bind, for the C ! language. Some details may vary for C++ and Objective C. Because of infelicities in the grammar for attributes, some forms described here may not be successfully parsed in all cases. --- 2083,2089 ---- This section describes the syntax with which @code{__attribute__} may be used, and the constructs to which attribute specifiers bind, for the C ! language. Some details may vary for C++ and Objective C@. Because of infelicities in the grammar for attributes, some forms described here may not be successfully parsed in all cases. *************** struct foo @{ int x; char y; @} foo1; *** 2366,2372 **** @noindent the value of @code{__alignof__ (foo1.y)} is probably 2 or 4, the same as @code{__alignof__ (int)}, even though the data type of @code{foo1.y} ! does not itself demand any alignment.@refill It is an error to ask for the alignment of an incomplete type. --- 2377,2383 ---- @noindent the value of @code{__alignof__ (foo1.y)} is probably 2 or 4, the same as @code{__alignof__ (int)}, even though the data type of @code{foo1.y} ! does not itself demand any alignment. It is an error to ask for the alignment of an incomplete type. *************** attributes are currently defined for var *** 2387,2393 **** @code{transparent_union}, @code{unused}, and @code{weak}. Some other attributes are defined for variables on particular target systems. Other attributes are available for functions (@pxref{Function Attributes}) and ! for types (@pxref{Type Attributes}). Other front-ends might define more attributes (@pxref{C++ Extensions,,Extensions to the C++ Language}). You may also specify attributes with @samp{__} preceding and following --- 2398,2404 ---- @code{transparent_union}, @code{unused}, and @code{weak}. Some other attributes are defined for variables on particular target systems. Other attributes are available for functions (@pxref{Function Attributes}) and ! for types (@pxref{Type Attributes}). Other front ends might define more attributes (@pxref{C++ Extensions,,Extensions to the C++ Language}). You may also specify attributes with @samp{__} preceding and following *************** or @samp{__pointer__} for the mode used *** 2475,2483 **** @item nocommon @cindex @code{nocommon} attribute @opindex fno-common ! This attribute specifies requests GNU CC not to place a variable ``common'' but instead to allocate space for it directly. If you ! specify the @option{-fno-common} flag, GNU CC will do this for all variables. Specifying the @code{nocommon} attribute for a variable provides an --- 2486,2494 ---- @item nocommon @cindex @code{nocommon} attribute @opindex fno-common ! This attribute specifies requests GCC not to place a variable ``common'' but instead to allocate space for it directly. If you ! specify the @option{-fno-common} flag, GCC will do this for all variables. Specifying the @code{nocommon} attribute for a variable provides an *************** main() *** 2533,2539 **** @noindent Use the @code{section} attribute with an @emph{initialized} definition ! of a @emph{global} variable, as shown in the example. GNU CC issues a warning and otherwise ignores the @code{section} attribute in uninitialized variable declarations. --- 2544,2550 ---- @noindent Use the @code{section} attribute with an @emph{initialized} definition ! of a @emph{global} variable, as shown in the example. GCC issues a warning and otherwise ignores the @code{section} attribute in uninitialized variable declarations. *************** section, consider using the facilities o *** 2554,2560 **** @cindex @code{shared} variable attribute On Windows NT, in addition to putting variable definitions in a named section, the section can also be shared among all running copies of an ! executable or DLL. For example, this small program defines shared data by putting it in a named section @code{shared} and marking the section shareable: --- 2565,2571 ---- @cindex @code{shared} variable attribute On Windows NT, in addition to putting variable definitions in a named section, the section can also be shared among all running copies of an ! executable or DLL@. For example, this small program defines shared data by putting it in a named section @code{shared} and marking the section shareable: *************** You may only use the @code{shared} attri *** 2575,2581 **** attribute with a fully initialized global definition because of the way linkers work. See @code{section} attribute for more information. ! The @code{shared} attribute is only available on Windows NT. @item transparent_union This attribute, attached to a function parameter which is a union, means --- 2586,2592 ---- attribute with a fully initialized global definition because of the way linkers work. See @code{section} attribute for more information. ! The @code{shared} attribute is only available on Windows NT@. @item transparent_union This attribute, attached to a function parameter which is a union, means *************** applies to all function parameters with *** 2587,2593 **** @item unused This attribute, attached to a variable, means that the variable is meant ! to be possibly unused. GNU CC will not produce a warning for this variable. @item weak --- 2598,2604 ---- @item unused This attribute, attached to a variable, means that the variable is meant ! to be possibly unused. GCC will not produce a warning for this variable. @item weak *************** pid_t wait (wait_status_ptr_t p) *** 2800,2806 **** @item unused When attached to a type (including a @code{union} or a @code{struct}), this attribute means that variables of that type are meant to appear ! possibly unused. GNU CC will not produce a warning for any variables of that type, even if the variable appears to do nothing. This is often the case with lock or thread classes, which are usually defined and then not referenced, but contain constructors and destructors that have --- 2811,2817 ---- @item unused When attached to a type (including a @code{union} or a @code{struct}), this attribute means that variables of that type are meant to appear ! possibly unused. GCC will not produce a warning for any variables of that type, even if the variable appears to do nothing. This is often the case with lock or thread classes, which are usually defined and then not referenced, but contain constructors and destructors that have *************** packed))}. *** 2819,2825 **** @cindex open coding @cindex macros, inline alternative ! By declaring a function @code{inline}, you can direct GNU CC to integrate that function's code into the code for its callers. This makes execution faster by eliminating the function-call overhead; in addition, if any of the actual argument values are constant, their known --- 2830,2836 ---- @cindex open coding @cindex macros, inline alternative ! By declaring a function @code{inline}, you can direct GCC to integrate that function's code into the code for its callers. This makes execution faster by eliminating the function-call overhead; in addition, if any of the actual argument values are constant, their known *************** does not affect the linkage of the funct *** 2867,2873 **** @cindex member fns, automatically @code{inline} @cindex C++ member fns, automatically @code{inline} @opindex fno-default-inline ! GNU CC automatically inlines member functions defined within the class body of C++ programs even if they are not explicitly declared @code{inline}. (You can override this with @option{-fno-default-inline}; @pxref{C++ Dialect Options,,Options Controlling C++ Dialect}.) --- 2878,2884 ---- @cindex member fns, automatically @code{inline} @cindex C++ member fns, automatically @code{inline} @opindex fno-default-inline ! GCC automatically inlines member functions defined within the class body of C++ programs even if they are not explicitly declared @code{inline}. (You can override this with @option{-fno-default-inline}; @pxref{C++ Dialect Options,,Options Controlling C++ Dialect}.) *************** body of C++ programs even if they are no *** 2877,2883 **** When a function is both inline and @code{static}, if all calls to the function are integrated into the caller, and the function's address is never used, then the function's own assembler code is never referenced. ! In this case, GNU CC does not actually output assembler code for the function, unless you specify the option @option{-fkeep-inline-functions}. Some calls cannot be integrated for various reasons (in particular, calls that precede the function's definition cannot be integrated, and --- 2888,2894 ---- When a function is both inline and @code{static}, if all calls to the function are integrated into the caller, and the function's address is never used, then the function's own assembler code is never referenced. ! In this case, GCC does not actually output assembler code for the function, unless you specify the option @option{-fkeep-inline-functions}. Some calls cannot be integrated for various reasons (in particular, calls that precede the function's definition cannot be integrated, and *************** existing semantics will remain available *** 2914,2920 **** specified, but eventually the default will be @option{-std=gnu99} and that will implement the C99 semantics, though it does not do so yet.) ! GNU C does not inline any functions when not optimizing. It is not clear whether it is better to inline or not, in this case, but we found that a correct implementation when not optimizing was difficult. So we did the easy thing, and turned it off. --- 2925,2931 ---- specified, but eventually the default will be @option{-std=gnu99} and that will implement the C99 semantics, though it does not do so yet.) ! GCC does not inline any functions when not optimizing. It is not clear whether it is better to inline or not, in this case, but we found that a correct implementation when not optimizing was difficult. So we did the easy thing, and turned it off. *************** template and does not know what it means *** 2969,2979 **** assembler input. The extended @code{asm} feature is most often used for machine instructions the compiler itself does not know exist. If the output expression cannot be directly addressed (for example, it is a ! bit-field), your constraint must allow a register. In that case, GNU CC will use the register as the output of the @code{asm}, and then store that register into the output. ! The ordinary output operands must be write-only; GNU CC will assume that the values in these operands before the instruction are dead and need not be generated. Extended asm supports input-output or read-write operands. Use the constraint character @samp{+} to indicate such an --- 2980,2990 ---- assembler input. The extended @code{asm} feature is most often used for machine instructions the compiler itself does not know exist. If the output expression cannot be directly addressed (for example, it is a ! bit-field), your constraint must allow a register. In that case, GCC will use the register as the output of the @code{asm}, and then store that register into the output. ! The ordinary output operands must be write-only; GCC will assume that the values in these operands before the instruction are dead and need not be generated. Extended asm supports input-output or read-write operands. Use the constraint character @samp{+} to indicate such an *************** asm ("combine %2,%0" : "=r" (foo) : "r" *** 3010,3021 **** @end example Various optimizations or reloading could cause operands 0 and 1 to be in ! different registers; GNU CC knows no reason not to do so. For example, the compiler might find a copy of the value of @code{foo} in one register and use it for operand 1, but generate the output operand 0 in a different register (copying it afterward to @code{foo}'s own address). Of course, since the register for operand 1 is not even mentioned in the assembler ! code, the result will not work, but GNU CC can't tell that. Some instructions clobber specific hard registers. To describe this, write a third colon after the input operands, followed by the names of --- 3021,3032 ---- @end example Various optimizations or reloading could cause operands 0 and 1 to be in ! different registers; GCC knows no reason not to do so. For example, the compiler might find a copy of the value of @code{foo} in one register and use it for operand 1, but generate the output operand 0 in a different register (copying it afterward to @code{foo}'s own address). Of course, since the register for operand 1 is not even mentioned in the assembler ! code, the result will not work, but GCC can't tell that. Some instructions clobber specific hard registers. To describe this, write a third colon after the input operands, followed by the names of *************** operand is modified without also specify *** 3037,3043 **** operand. Note that if all the output operands you specify are for this purpose (and hence unused), you will then also need to specify @code{volatile} for the @code{asm} construct, as described below, to ! prevent GNU CC from deleting the @code{asm} statement as unused. If you refer to a particular hardware register from the assembler code, you will probably have to list the register after the third colon to --- 3048,3054 ---- operand. Note that if all the output operands you specify are for this purpose (and hence unused), you will then also need to specify @code{volatile} for the @code{asm} construct, as described below, to ! prevent GCC from deleting the @code{asm} statement as unused. If you refer to a particular hardware register from the assembler code, you will probably have to list the register after the third colon to *************** the register names begin with @samp{%}; *** 3046,3052 **** assembler code, you must write @samp{%%} in the input. If your assembler instruction can alter the condition code register, add ! @samp{cc} to the list of clobbered registers. GNU CC on some machines represents the condition codes as a specific hardware register; @samp{cc} serves to name this register. On other machines, the condition code is handled differently, and specifying @samp{cc} has no --- 3057,3063 ---- assembler code, you must write @samp{%%} in the input. If your assembler instruction can alter the condition code register, add ! @samp{cc} to the list of clobbered registers. GCC on some machines represents the condition codes as a specific hardware register; @samp{cc} serves to name this register. On other machines, the condition code is handled differently, and specifying @samp{cc} has no *************** effect. But it is valid no matter what *** 3054,3060 **** If your assembler instruction modifies memory in an unpredictable fashion, add @samp{memory} to the list of clobbered registers. This ! will cause GNU CC to not keep memory values cached in registers across the assembler instruction. You will also want to add the @code{volatile} keyword if the memory affected is not listed in the inputs or outputs of the @code{asm}, as the @samp{memory} clobber does --- 3065,3071 ---- If your assembler instruction modifies memory in an unpredictable fashion, add @samp{memory} to the list of clobbered registers. This ! will cause GCC to not keep memory values cached in registers across the assembler instruction. You will also want to add the @code{volatile} keyword if the memory affected is not listed in the inputs or outputs of the @code{asm}, as the @samp{memory} clobber does *************** asm ("movl %0,r9\n\tmovl %1,r10\n\tcall *** 3080,3086 **** : "r9", "r10"); @end example ! Unless an output operand has the @samp{&} constraint modifier, GNU CC may allocate it in the same register as an unrelated input operand, on the assumption the inputs are consumed before the outputs are produced. This assumption may be false if the assembler code actually consists of --- 3091,3097 ---- : "r9", "r10"); @end example ! Unless an output operand has the @samp{&} constraint modifier, GCC may allocate it in the same register as an unrelated input operand, on the assumption the inputs are consumed before the outputs are produced. This assumption may be false if the assembler code actually consists of *************** example, if the desired type were @code{ *** 3130,3136 **** argument to an @code{int} variable named @code{__arg} would warn about using a pointer unless the caller explicitly casts it. ! If an @code{asm} has output operands, GNU CC assumes for optimization purposes the instruction has no side effects except to change the output operands. This does not mean instructions with a side effect cannot be used, but you must be careful, because the compiler may eliminate them --- 3141,3147 ---- argument to an @code{int} variable named @code{__arg} would warn about using a pointer unless the caller explicitly casts it. ! If an @code{asm} has output operands, GCC assumes for optimization purposes the instruction has no side effects except to change the output operands. This does not mean instructions with a side effect cannot be used, but you must be careful, because the compiler may eliminate them *************** the @code{asm}. For example: *** 3153,3159 **** @end example @noindent ! If you write an @code{asm} instruction with no outputs, GNU CC will know the instruction has side-effects and will not delete the instruction or move it outside of loops. --- 3164,3170 ---- @end example @noindent ! If you write an @code{asm} instruction with no outputs, GCC will know the instruction has side-effects and will not delete the instruction or move it outside of loops. *************** asm volatile ("eieio" : : ); *** 3172,3179 **** @noindent Assume @code{addr} contains the address of a memory mapped device register. The PowerPC @code{eieio} instruction (Enforce In-order ! Execution of I/O) tells the cpu to make sure that the store to that ! device register happens before it issues any other I/O. Note that even a volatile @code{asm} instruction can be moved in ways that appear insignificant to the compiler, such as across jump --- 3183,3190 ---- @noindent Assume @code{addr} contains the address of a memory mapped device register. The PowerPC @code{eieio} instruction (Enforce In-order ! Execution of I/O) tells the CPU to make sure that the store to that ! device register happens before it issues any other I/O@. Note that even a volatile @code{asm} instruction can be moved in ways that appear insignificant to the compiler, such as across jump *************** func (x, y) *** 3345,3352 **** It is up to you to make sure that the assembler names you choose do not conflict with any other assembler symbols. Also, you must not use a ! register name; that would produce completely invalid assembler code. GNU ! CC does not as yet have the ability to store static variables in registers. Perhaps that will be added. @node Explicit Reg Vars --- 3356,3363 ---- It is up to you to make sure that the assembler names you choose do not conflict with any other assembler symbols. Also, you must not use a ! register name; that would produce completely invalid assembler code. GCC ! does not as yet have the ability to store static variables in registers. Perhaps that will be added. @node Explicit Reg Vars *************** you recompile them specially for the tas *** 3433,3439 **** @cindex @code{qsort}, and global register variables It is not safe for one function that uses a global register variable to call another such function @code{foo} by way of a third function ! @code{lose} that was compiled without knowledge of this variable (i.e. in a different source file in which the variable wasn't declared). This is because @code{lose} might save the register and put some other value there. For example, you can't expect a global register variable to be available in --- 3444,3450 ---- @cindex @code{qsort}, and global register variables It is not safe for one function that uses a global register variable to call another such function @code{foo} by way of a third function ! @code{lose} that was compiled without knowledge of this variable (i.e.@: in a different source file in which the variable wasn't declared). This is because @code{lose} might save the register and put some other value there. For example, you can't expect a global register variable to be available in *************** unavailable for use in the reload pass; *** 3519,3525 **** leaves the compiler too few available registers to compile certain functions. ! This option does not guarantee that GNU CC will generate code that has this variable in the register you specify at all times. You may not code an explicit reference to this register in an @code{asm} statement and assume it will always refer to this variable. --- 3530,3536 ---- leaves the compiler too few available registers to compile certain functions. ! This option does not guarantee that GCC will generate code that has this variable in the register you specify at all times. You may not code an explicit reference to this register in an @code{asm} statement and assume it will always refer to this variable. *************** since they won't work in a program compi *** 3546,3552 **** compiled with @option{-traditional}. The ISO C99 keyword @code{restrict} is only available when @option{-std=gnu99} (which will eventually be the default) or @option{-std=c99} (or the equivalent ! @option{-std=iso9899:1999}) is used.@refill The way to solve these problems is to put @samp{__} at the beginning and end of each problematical keyword. For example, use @code{__asm__} --- 3557,3563 ---- compiled with @option{-traditional}. The ISO C99 keyword @code{restrict} is only available when @option{-std=gnu99} (which will eventually be the default) or @option{-std=c99} (or the equivalent ! @option{-std=iso9899:1999}) is used. The way to solve these problems is to put @samp{__} at the beginning and end of each problematical keyword. For example, use @code{__asm__} *************** This extension is not supported by GNU C *** 3594,3602 **** @cindex @code{__PRETTY_FUNCTION__} identifier @cindex @code{__func__} identifier ! GNU CC predefines two magic identifiers to hold the name of the current ! function. The identifier @code{__FUNCTION__} holds the name of the function ! as it appears in the source. The identifier @code{__PRETTY_FUNCTION__} holds the name of the function pretty printed in a language specific fashion. --- 3605,3613 ---- @cindex @code{__PRETTY_FUNCTION__} identifier @cindex @code{__func__} identifier ! GCC predefines two magic identifiers to hold the name of the current ! function. The identifier @code{__FUNCTION__} holds the name of the function ! as it appears in the source. The identifier @code{__PRETTY_FUNCTION__} holds the name of the function pretty printed in a language specific fashion. *************** __PRETTY_FUNCTION__ = int a::sub (int) *** 3635,3644 **** @end smallexample The compiler automagically replaces the identifiers with a string ! literal containing the appropriate name. Thus, they are neither preprocessor macros, like @code{__FILE__} and @code{__LINE__}, nor ! variables. This means that they catenate with other string literals, and ! that they can be used to initialize char arrays. For example @smallexample char here[] = "Function " __FUNCTION__ " in " __FILE__; --- 3646,3655 ---- @end smallexample The compiler automagically replaces the identifiers with a string ! literal containing the appropriate name. Thus, they are neither preprocessor macros, like @code{__FILE__} and @code{__LINE__}, nor ! variables. This means that they catenate with other string literals, and ! that they can be used to initialize char arrays. For example @smallexample char here[] = "Function " __FUNCTION__ " in " __FILE__; *************** On the other hand, @samp{#ifdef __FUNCTI *** 3648,3654 **** meaning inside a function, since the preprocessor does not do anything special with the identifier @code{__FUNCTION__}. ! GNU CC also supports the magic word @code{__func__}, defined by the ISO standard C99: @display --- 3659,3665 ---- meaning inside a function, since the preprocessor does not do anything special with the identifier @code{__FUNCTION__}. ! GCC also supports the magic word @code{__func__}, defined by the ISO standard C99: @display *************** static const char __func__[] = "function *** 3661,3667 **** @end smallexample appeared, where function-name is the name of the lexically-enclosing ! function. This name is the unadorned name of the function. @end display By this definition, @code{__func__} is a variable, not a string literal. --- 3672,3678 ---- @end smallexample appeared, where function-name is the name of the lexically-enclosing ! function. This name is the unadorned name of the function. @end display By this definition, @code{__func__} is a variable, not a string literal. *************** function as well. *** 3715,3721 **** @end deftypefn @node Other Builtins ! @section Other built-in functions provided by GNU CC @cindex built-in functions @findex __builtin_isgreater @findex __builtin_isgreaterequal --- 3726,3732 ---- @end deftypefn @node Other Builtins ! @section Other built-in functions provided by GCC @cindex built-in functions @findex __builtin_isgreater @findex __builtin_isgreaterequal *************** function as well. *** 3778,3784 **** @findex strspn @findex strstr ! GNU CC provides a large number of built-in functions other than the ones mentioned above. Some of these are for internal use in the processing of exceptions or variable-length argument lists and will not be documented here because they may change from time to time; we do not --- 3789,3795 ---- @findex strspn @findex strstr ! GCC provides a large number of built-in functions other than the ones mentioned above. Some of these are for internal use in the processing of exceptions or variable-length argument lists and will not be documented here because they may change from time to time; we do not *************** recommend general use of these functions *** 3787,3793 **** The remaining functions are provided for optimization purposes. @opindex fno-builtin ! GNU CC includes built-in versions of many of the functions in the standard C library. The versions prefixed with @code{__builtin_} will always be treated as having the same meaning as the C library function even if you specify the @option{-fno-builtin} (@pxref{C Dialect Options}) --- 3798,3804 ---- The remaining functions are provided for optimization purposes. @opindex fno-builtin ! GCC includes built-in versions of many of the functions in the standard C library. The versions prefixed with @code{__builtin_} will always be treated as having the same meaning as the C library function even if you specify the @option{-fno-builtin} (@pxref{C Dialect Options}) *************** The following ISO C89 functions are reco *** 3830,3836 **** of these functions have corresponding versions prefixed with @code{__builtin_}. ! GNU CC provides built-in versions of the ISO C99 floating point comparison macros (that avoid raising exceptions for unordered operands): @code{__builtin_isgreater}, @code{__builtin_isgreaterequal}, @code{__builtin_isless}, @code{__builtin_islessequal}, --- 3841,3847 ---- of these functions have corresponding versions prefixed with @code{__builtin_}. ! GCC provides built-in versions of the ISO C99 floating point comparison macros (that avoid raising exceptions for unordered operands): @code{__builtin_isgreater}, @code{__builtin_isgreaterequal}, @code{__builtin_isless}, @code{__builtin_islessequal}, *************** operands): @code{__builtin_isgreater}, @ *** 3840,3851 **** @deftypefn {Built-in Function} int __builtin_constant_p (@var{exp}) You can use the built-in function @code{__builtin_constant_p} to determine if a value is known to be constant at compile-time and hence ! that GNU CC can perform constant-folding on expressions involving that value. The argument of the function is the value to test. The function returns the integer 1 if the argument is known to be a compile-time constant and 0 if it is not known to be a compile-time constant. A return of 0 does not indicate that the value is @emph{not} a constant, ! but merely that GNU CC cannot prove it is a constant with the specified value of the @option{-O} option. You would typically use this function in an embedded application where --- 3851,3862 ---- @deftypefn {Built-in Function} int __builtin_constant_p (@var{exp}) You can use the built-in function @code{__builtin_constant_p} to determine if a value is known to be constant at compile-time and hence ! that GCC can perform constant-folding on expressions involving that value. The argument of the function is the value to test. The function returns the integer 1 if the argument is known to be a compile-time constant and 0 if it is not known to be a compile-time constant. A return of 0 does not indicate that the value is @emph{not} a constant, ! but merely that GCC cannot prove it is a constant with the specified value of the @option{-O} option. You would typically use this function in an embedded application where *************** a function if it does not. For example: *** 3861,3871 **** You may use this built-in function in either a macro or an inline function. However, if you use it in an inlined function and pass an ! argument of the function as the argument to the built-in, GNU CC will never return 1 when you call the inline function with a string constant or compound literal (@pxref{Compound Literals}) and will not return 1 when you pass a constant numeric value to the inline function unless you specify the @option{-O} option. @end deftypefn @deftypefn {Built-in Function} long __builtin_expect (long @var{exp}, long @var{c}) --- 3872,3902 ---- You may use this built-in function in either a macro or an inline function. However, if you use it in an inlined function and pass an ! argument of the function as the argument to the built-in, GCC will never return 1 when you call the inline function with a string constant or compound literal (@pxref{Compound Literals}) and will not return 1 when you pass a constant numeric value to the inline function unless you specify the @option{-O} option. + + You may also use @code{__builtin_constant_p} in initializers for static + data. For instance, you can write + + @smallexample + static const int table[] = @{ + __builtin_constant_p (EXPRESSION) ? (EXPRESSION) : -1, + /* ... */ + @}; + @end smallexample + + @noindent + This is an acceptable initializer even if @var{EXPRESSION} is not a + constant expression. GCC must be more conservative about evaluating the + built-in in this case, because it has no opportunity to perform + optimization. + + Previous versions of GCC did not accept this built-in in data + initializers. The earliest version where it is completely safe is + 3.0.1. @end deftypefn @deftypefn {Built-in Function} long __builtin_expect (long @var{exp}, long @var{c}) *************** works correctly. *** 3983,4006 **** @cindex volatile write @cindex volatile access ! Both the C and C++ standard have the concept of volatile objects. These ! are normally accessed by pointers and used for accessing hardware. The standards encourage compilers to refrain from optimizations concerning accesses to volatile objects that it might perform on ! non-volatile objects. The C standard leaves it implementation defined ! as to what constitutes a volatile access. The C++ standard omits to specify this, except to say that C++ should behave in a similar manner ! to C with respect to volatiles, where possible. The minimum either standard specifies is that at a sequence point all previous accesses to volatile objects have stabilized and no subsequent accesses have ! occurred. Thus an implementation is free to reorder and combine volatile accesses which occur between sequence points, but cannot do so ! for accesses across a sequence point. The use of volatiles does not allow you to violate the restriction on updating objects multiple times within a sequence point. In most expressions, it is intuitively obvious what is a read and what is ! a write. For instance @example volatile int *dst = @var{somevalue}; --- 4014,4037 ---- @cindex volatile write @cindex volatile access ! Both the C and C++ standard have the concept of volatile objects. These ! are normally accessed by pointers and used for accessing hardware. The standards encourage compilers to refrain from optimizations concerning accesses to volatile objects that it might perform on ! non-volatile objects. The C standard leaves it implementation defined ! as to what constitutes a volatile access. The C++ standard omits to specify this, except to say that C++ should behave in a similar manner ! to C with respect to volatiles, where possible. The minimum either standard specifies is that at a sequence point all previous accesses to volatile objects have stabilized and no subsequent accesses have ! occurred. Thus an implementation is free to reorder and combine volatile accesses which occur between sequence points, but cannot do so ! for accesses across a sequence point. The use of volatiles does not allow you to violate the restriction on updating objects multiple times within a sequence point. In most expressions, it is intuitively obvious what is a read and what is ! a write. For instance @example volatile int *dst = @var{somevalue}; *************** volatile int *src = @var{someothervalue} *** 4010,4021 **** @noindent will cause a read of the volatile object pointed to by @var{src} and stores the ! value into the volatile object pointed to by @var{dst}. There is no guarantee that these reads and writes are atomic, especially for objects larger than @code{int}. Less obvious expressions are where something which looks like an access ! is used in a void context. An example would be, @example volatile int *src = @var{somevalue}; --- 4041,4052 ---- @noindent will cause a read of the volatile object pointed to by @var{src} and stores the ! value into the volatile object pointed to by @var{dst}. There is no guarantee that these reads and writes are atomic, especially for objects larger than @code{int}. Less obvious expressions are where something which looks like an access ! is used in a void context. An example would be, @example volatile int *src = @var{somevalue}; *************** volatile int *src = @var{somevalue}; *** 4023,4038 **** @end example With C, such expressions are rvalues, and as rvalues cause a read of ! the object, gcc interprets this as a read of the volatile being pointed ! to. The C++ standard specifies that such expressions do not undergo lvalue to rvalue conversion, and that the type of the dereferenced ! object may be incomplete. The C++ standard does not specify explicitly that it is this lvalue to rvalue conversion which is responsible for ! causing an access. However, there is reason to believe that it is, ! because otherwise certain simple expressions become undefined. However, ! because it would surprise most programmers, g++ treats dereferencing a pointer to volatile object of complete type in a void context as a read ! of the object. When the object has incomplete type, g++ issues a warning. @example --- 4054,4069 ---- @end example With C, such expressions are rvalues, and as rvalues cause a read of ! the object, GCC interprets this as a read of the volatile being pointed ! to. The C++ standard specifies that such expressions do not undergo lvalue to rvalue conversion, and that the type of the dereferenced ! object may be incomplete. The C++ standard does not specify explicitly that it is this lvalue to rvalue conversion which is responsible for ! causing an access. However, there is reason to believe that it is, ! because otherwise certain simple expressions become undefined. However, ! because it would surprise most programmers, G++ treats dereferencing a pointer to volatile object of complete type in a void context as a read ! of the object. When the object has incomplete type, G++ issues a warning. @example *************** volatile T *ptr2 = @var{somevalue}; *** 4045,4060 **** @end example In this example, a warning is issued for @code{*ptr1}, and @code{*ptr2} ! causes a read of the object pointed to. If you wish to force an error on the first case, you must force a conversion to rvalue with, for instance a static cast, @code{static_cast(*ptr1)}. ! When using a reference to volatile, g++ does not treat equivalent expressions as accesses to volatiles, but instead issues a warning that ! no volatile is accessed. The rationale for this is that otherwise it becomes difficult to determine where volatile access occur, and not possible to ignore the return value from functions returning volatile ! references. Again, if you wish to force a read, cast the reference to an rvalue. @node Restricted Pointers --- 4076,4091 ---- @end example In this example, a warning is issued for @code{*ptr1}, and @code{*ptr2} ! causes a read of the object pointed to. If you wish to force an error on the first case, you must force a conversion to rvalue with, for instance a static cast, @code{static_cast(*ptr1)}. ! When using a reference to volatile, G++ does not treat equivalent expressions as accesses to volatiles, but instead issues a warning that ! no volatile is accessed. The rationale for this is that otherwise it becomes difficult to determine where volatile access occur, and not possible to ignore the return value from functions returning volatile ! references. Again, if you wish to force a read, cast the reference to an rvalue. @node Restricted Pointers *************** an rvalue. *** 4065,4071 **** As with gcc, g++ understands the C99 feature of restricted pointers, specified with the @code{__restrict__}, or @code{__restrict} type ! qualifier. Because you cannot compile C++ by specifying the @option{-std=c99} language flag, @code{restrict} is not a keyword in C++. In addition to allowing restricted pointers, you can specify restricted --- 4096,4102 ---- As with gcc, g++ understands the C99 feature of restricted pointers, specified with the @code{__restrict__}, or @code{__restrict} type ! qualifier. Because you cannot compile C++ by specifying the @option{-std=c99} language flag, @code{restrict} is not a keyword in C++. In addition to allowing restricted pointers, you can specify restricted *************** void T::fn () __restrict__ *** 4095,4108 **** @noindent Within the body of @code{T::fn}, @var{this} will have the effective ! definition @code{T *__restrict__ const this}. Notice that the interpretation of a @code{__restrict__} member function qualifier is different to that of @code{const} or @code{volatile} qualifier, in that it ! is applied to the pointer rather than the object. This is consistent with other compilers which implement restricted pointers. As with all outermost parameter qualifiers, @code{__restrict__} is ! ignored in function definition matching. This means you only need to specify @code{__restrict__} in a function definition, rather than in a function prototype as well. --- 4126,4139 ---- @noindent Within the body of @code{T::fn}, @var{this} will have the effective ! definition @code{T *__restrict__ const this}. Notice that the interpretation of a @code{__restrict__} member function qualifier is different to that of @code{const} or @code{volatile} qualifier, in that it ! is applied to the pointer rather than the object. This is consistent with other compilers which implement restricted pointers. As with all outermost parameter qualifiers, @code{__restrict__} is ! ignored in function definition matching. This means you only need to specify @code{__restrict__} in a function definition, rather than in a function prototype as well. *************** other files) without having to specify t *** 4422,4428 **** g++ has extended the template instantiation syntax outlined in the Working Paper to allow forward declaration of explicit instantiations (with @code{extern}), instantiation of the compiler support data for a ! template class (i.e. the vtable) without instantiating any of its members (with @code{inline}), and instantiation of only the static data members of a template class, without the support data or member functions (with (@code{static}): --- 4453,4459 ---- g++ has extended the template instantiation syntax outlined in the Working Paper to allow forward declaration of explicit instantiations (with @code{extern}), instantiation of the compiler support data for a ! template class (i.e.@: the vtable) without instantiating any of its members (with @code{inline}), and instantiation of only the static data members of a template class, without the support data or member functions (with (@code{static}): *************** definitions. For each of these files, a *** 4447,4453 **** "@var{filename}"} to the top of some @samp{.C} file which @samp{#include}s it. Then compile everything with @option{-fexternal-templates}. The templates will then only be expanded ! in the translation unit which implements them (i.e. has a @samp{#pragma implementation} line for the file where they live); all other files will use external references. If you're lucky, everything should work properly. If you get undefined symbol errors, you need to make sure --- 4478,4484 ---- "@var{filename}"} to the top of some @samp{.C} file which @samp{#include}s it. Then compile everything with @option{-fexternal-templates}. The templates will then only be expanded ! in the translation unit which implements them (i.e.@: has a @samp{#pragma implementation} line for the file where they live); all other files will use external references. If you're lucky, everything should work properly. If you get undefined symbol errors, you need to make sure *************** the inner loop, to save a bit of time. *** 4497,4503 **** Note that you will still be paying the penalty for the call through a function pointer; on most modern architectures, such a call defeats the ! branch prediction features of the CPU. This is also true of normal virtual function calls. The syntax for this extension is --- 4528,4534 ---- Note that you will still be paying the penalty for the call through a function pointer; on most modern architectures, such a call defeats the ! branch prediction features of the CPU@. This is also true of normal virtual function calls. The syntax for this extension is *************** typedef int (*fptr)(A *); *** 4510,4517 **** fptr p = (fptr)(a.*fp); @end example ! For PMF constants (i.e. expressions of the form @samp{&Klasse::Member}), ! no object is needed to obtain the address of the function. They can be converted to function pointers directly: @example --- 4541,4548 ---- fptr p = (fptr)(a.*fp); @end example ! For PMF constants (i.e.@: expressions of the form @samp{&Klasse::Member}), ! no object is needed to obtain the address of the function. They can be converted to function pointers directly: @example *************** versa, but there may be bugs in this are *** 4602,4611 **** @section Deprecated Features In the past, the GNU C++ compiler was extended to experiment with new ! features, at a time when the C++ language was still evolving. Now that the C++ standard is complete, some of those features are superseded by ! superior alternatives. Using the old features might cause a warning in ! some cases that the feature will be dropped in the future. In other cases, the feature might be gone already. While the list below is not exhaustive, it documents some of the options --- 4633,4642 ---- @section Deprecated Features In the past, the GNU C++ compiler was extended to experiment with new ! features, at a time when the C++ language was still evolving. Now that the C++ standard is complete, some of those features are superseded by ! superior alternatives. Using the old features might cause a warning in ! some cases that the feature will be dropped in the future. In other cases, the feature might be gone already. While the list below is not exhaustive, it documents some of the options *************** that are now deprecated: *** 4615,4630 **** @item -fexternal-templates @itemx -falt-external-templates These are two of the many ways for g++ to implement template ! instantiation. @xref{Template Instantiation}. The C++ standard clearly defines how template definitions have to be organized across ! implementation units. g++ has an implicit instantiation mechanism that should work just fine for standard-conforming code. @item -fstrict-prototype @itemx -fno-strict-prototype Previously it was possible to use an empty prototype parameter list to indicate an unspecified number of parameters (like C), rather than no ! parameters, as C++ demands. This feature has been removed, except where it is required for backwards compatibility @xref{Backwards Compatibility}. @end table --- 4646,4661 ---- @item -fexternal-templates @itemx -falt-external-templates These are two of the many ways for g++ to implement template ! instantiation. @xref{Template Instantiation}. The C++ standard clearly defines how template definitions have to be organized across ! implementation units. g++ has an implicit instantiation mechanism that should work just fine for standard-conforming code. @item -fstrict-prototype @itemx -fno-strict-prototype Previously it was possible to use an empty prototype parameter list to indicate an unspecified number of parameters (like C), rather than no ! parameters, as C++ demands. This feature has been removed, except where it is required for backwards compatibility @xref{Backwards Compatibility}. @end table *************** and will be removed from g++ at some poi *** 4642,4667 **** @cindex Backwards Compatibility @cindex ARM [Annotated C++ Reference Manual] ! Now that there is a definitive ISO standard C++, g++ has a specification ! to adhere to. The C++ language evolved over time, and features that used to be acceptable in previous drafts of the standard, such as the ARM ! [Annotated C++ Reference Manual], are no longer accepted. In order to allow ! compilation of C++ written to such drafts, g++ contains some backwards ! compatibilities. @emph{All such backwards compatibility features are ! liable to disappear in future versions of g++.} They should be considered deprecated @xref{Deprecated Features}. @table @code @item For scope If a variable is declared at for scope, it used to remain in scope until the end of the scope which contained the for statement (rather than just ! within the for scope). g++ retains this, but issues a warning, if such a variable is accessed outside the for scope. @item implicit C language Old C system header files did not contain an @code{extern "C" @{@dots{}@}} ! scope to set the language. On such systems, all header files are ! implicitly scoped inside a C language scope. Also, an empty prototype @code{()} will be treated as an unspecified number of arguments, rather than no arguments, as C++ demands. @end table --- 4673,4698 ---- @cindex Backwards Compatibility @cindex ARM [Annotated C++ Reference Manual] ! Now that there is a definitive ISO standard C++, G++ has a specification ! to adhere to. The C++ language evolved over time, and features that used to be acceptable in previous drafts of the standard, such as the ARM ! [Annotated C++ Reference Manual], are no longer accepted. In order to allow ! compilation of C++ written to such drafts, G++ contains some backwards ! compatibilities. @emph{All such backwards compatibility features are ! liable to disappear in future versions of G++.} They should be considered deprecated @xref{Deprecated Features}. @table @code @item For scope If a variable is declared at for scope, it used to remain in scope until the end of the scope which contained the for statement (rather than just ! within the for scope). G++ retains this, but issues a warning, if such a variable is accessed outside the for scope. @item implicit C language Old C system header files did not contain an @code{extern "C" @{@dots{}@}} ! scope to set the language. On such systems, all header files are ! implicitly scoped inside a C language scope. Also, an empty prototype @code{()} will be treated as an unspecified number of arguments, rather than no arguments, as C++ demands. @end table diff -Nrc3pad gcc-3.0/gcc/doc/fdl.texi gcc-3.0.1/gcc/doc/fdl.texi *** gcc-3.0/gcc/doc/fdl.texi Thu Jun 7 15:04:42 2001 --- gcc-3.0.1/gcc/doc/fdl.texi Wed Dec 31 16:00:00 1969 *************** *** 1,403 **** - - @node GNU Free Documentation License - @unnumbered GNU Free Documentation License - - @cindex FDL, GNU Free Documentation License - @center Version 1.1, March 2000 - - @display - Copyright @copyright{} 2000 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - @end display - - @enumerate 0 - @item - PREAMBLE - - The purpose of this License is to make a manual, textbook, or other - written document @dfn{free} in the sense of freedom: to assure everyone - the effective freedom to copy and redistribute it, with or without - modifying it, either commercially or noncommercially. Secondarily, - this License preserves for the author and publisher a way to get - credit for their work, while not being considered responsible for - modifications made by others. - - This License is a kind of ``copyleft'', which means that derivative - works of the document must themselves be free in the same sense. It - complements the GNU General Public License, which is a copyleft - license designed for free software. - - We have designed this License in order to use it for manuals for free - software, because free software needs free documentation: a free - program should come with manuals providing the same freedoms that the - software does. But this License is not limited to software manuals; - it can be used for any textual work, regardless of subject matter or - whether it is published as a printed book. We recommend this License - principally for works whose purpose is instruction or reference. - - @item - APPLICABILITY AND DEFINITIONS - - This License applies to any manual or other work that contains a - notice placed by the copyright holder saying it can be distributed - under the terms of this License. The ``Document'', below, refers to any - such manual or work. Any member of the public is a licensee, and is - addressed as ``you''. - - A ``Modified Version'' of the Document means any work containing the - Document or a portion of it, either copied verbatim, or with - modifications and/or translated into another language. - - A ``Secondary Section'' is a named appendix or a front-matter section of - the Document that deals exclusively with the relationship of the - publishers or authors of the Document to the Document's overall subject - (or to related matters) and contains nothing that could fall directly - within that overall subject. (For example, if the Document is in part a - textbook of mathematics, a Secondary Section may not explain any - mathematics.) The relationship could be a matter of historical - connection with the subject or with related matters, or of legal, - commercial, philosophical, ethical or political position regarding - them. - - The ``Invariant Sections'' are certain Secondary Sections whose titles - are designated, as being those of Invariant Sections, in the notice - that says that the Document is released under this License. - - The ``Cover Texts'' are certain short passages of text that are listed, - as Front-Cover Texts or Back-Cover Texts, in the notice that says that - the Document is released under this License. - - A ``Transparent'' copy of the Document means a machine-readable copy, - represented in a format whose specification is available to the - general public, whose contents can be viewed and edited directly and - straightforwardly with generic text editors or (for images composed of - pixels) generic paint programs or (for drawings) some widely available - drawing editor, and that is suitable for input to text formatters or - for automatic translation to a variety of formats suitable for input - to text formatters. A copy made in an otherwise Transparent file - format whose markup has been designed to thwart or discourage - subsequent modification by readers is not Transparent. A copy that is - not ``Transparent'' is called ``Opaque''. - - Examples of suitable formats for Transparent copies include plain - @sc{ascii} without markup, Texinfo input format, La@TeX{} input format, - @acronym{SGML} or @acronym{XML} using a publicly available - @acronym{DTD}, and standard-conforming simple @acronym{HTML} designed - for human modification. Opaque formats include PostScript, - @acronym{PDF}, proprietary formats that can be read and edited only by - proprietary word processors, @acronym{SGML} or @acronym{XML} for which - the @acronym{DTD} and/or processing tools are not generally available, - and the machine-generated @acronym{HTML} produced by some word - processors for output purposes only. - - The ``Title Page'' means, for a printed book, the title page itself, - plus such following pages as are needed to hold, legibly, the material - this License requires to appear in the title page. For works in - formats which do not have any title page as such, ``Title Page'' means - the text near the most prominent appearance of the work's title, - preceding the beginning of the body of the text. - - @item - VERBATIM COPYING - - You may copy and distribute the Document in any medium, either - commercially or noncommercially, provided that this License, the - copyright notices, and the license notice saying this License applies - to the Document are reproduced in all copies, and that you add no other - conditions whatsoever to those of this License. You may not use - technical measures to obstruct or control the reading or further - copying of the copies you make or distribute. However, you may accept - compensation in exchange for copies. If you distribute a large enough - number of copies you must also follow the conditions in section 3. - - You may also lend copies, under the same conditions stated above, and - you may publicly display copies. - - @item - COPYING IN QUANTITY - - If you publish printed copies of the Document numbering more than 100, - and the Document's license notice requires Cover Texts, you must enclose - the copies in covers that carry, clearly and legibly, all these Cover - Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on - the back cover. Both covers must also clearly and legibly identify - you as the publisher of these copies. The front cover must present - the full title with all words of the title equally prominent and - visible. You may add other material on the covers in addition. - Copying with changes limited to the covers, as long as they preserve - the title of the Document and satisfy these conditions, can be treated - as verbatim copying in other respects. - - If the required texts for either cover are too voluminous to fit - legibly, you should put the first ones listed (as many as fit - reasonably) on the actual cover, and continue the rest onto adjacent - pages. - - If you publish or distribute Opaque copies of the Document numbering - more than 100, you must either include a machine-readable Transparent - copy along with each Opaque copy, or state in or with each Opaque copy - a publicly-accessible computer-network location containing a complete - Transparent copy of the Document, free of added material, which the - general network-using public has access to download anonymously at no - charge using public-standard network protocols. If you use the latter - option, you must take reasonably prudent steps, when you begin - distribution of Opaque copies in quantity, to ensure that this - Transparent copy will remain thus accessible at the stated location - until at least one year after the last time you distribute an Opaque - copy (directly or through your agents or retailers) of that edition to - the public. - - It is requested, but not required, that you contact the authors of the - Document well before redistributing any large number of copies, to give - them a chance to provide you with an updated version of the Document. - - @item - MODIFICATIONS - - You may copy and distribute a Modified Version of the Document under - the conditions of sections 2 and 3 above, provided that you release - the Modified Version under precisely this License, with the Modified - Version filling the role of the Document, thus licensing distribution - and modification of the Modified Version to whoever possesses a copy - of it. In addition, you must do these things in the Modified Version: - - @enumerate A - @item - Use in the Title Page (and on the covers, if any) a title distinct - from that of the Document, and from those of previous versions - (which should, if there were any, be listed in the History section - of the Document). You may use the same title as a previous version - if the original publisher of that version gives permission. - - @item - List on the Title Page, as authors, one or more persons or entities - responsible for authorship of the modifications in the Modified - Version, together with at least five of the principal authors of the - Document (all of its principal authors, if it has less than five). - - @item - State on the Title page the name of the publisher of the - Modified Version, as the publisher. - - @item - Preserve all the copyright notices of the Document. - - @item - Add an appropriate copyright notice for your modifications - adjacent to the other copyright notices. - - @item - Include, immediately after the copyright notices, a license notice - giving the public permission to use the Modified Version under the - terms of this License, in the form shown in the Addendum below. - - @item - Preserve in that license notice the full lists of Invariant Sections - and required Cover Texts given in the Document's license notice. - - @item - Include an unaltered copy of this License. - - @item - Preserve the section entitled ``History'', and its title, and add to - it an item stating at least the title, year, new authors, and - publisher of the Modified Version as given on the Title Page. If - there is no section entitled ``History'' in the Document, create one - stating the title, year, authors, and publisher of the Document as - given on its Title Page, then add an item describing the Modified - Version as stated in the previous sentence. - - @item - Preserve the network location, if any, given in the Document for - public access to a Transparent copy of the Document, and likewise - the network locations given in the Document for previous versions - it was based on. These may be placed in the ``History'' section. - You may omit a network location for a work that was published at - least four years before the Document itself, or if the original - publisher of the version it refers to gives permission. - - @item - In any section entitled ``Acknowledgments'' or ``Dedications'', - preserve the section's title, and preserve in the section all the - substance and tone of each of the contributor acknowledgments - and/or dedications given therein. - - @item - Preserve all the Invariant Sections of the Document, - unaltered in their text and in their titles. Section numbers - or the equivalent are not considered part of the section titles. - - @item - Delete any section entitled ``Endorsements''. Such a section - may not be included in the Modified Version. - - @item - Do not retitle any existing section as ``Endorsements'' - or to conflict in title with any Invariant Section. - @end enumerate - - If the Modified Version includes new front-matter sections or - appendices that qualify as Secondary Sections and contain no material - copied from the Document, you may at your option designate some or all - of these sections as invariant. To do this, add their titles to the - list of Invariant Sections in the Modified Version's license notice. - These titles must be distinct from any other section titles. - - You may add a section entitled ``Endorsements'', provided it contains - nothing but endorsements of your Modified Version by various - parties---for example, statements of peer review or that the text has - been approved by an organization as the authoritative definition of a - standard. - - You may add a passage of up to five words as a Front-Cover Text, and a - passage of up to 25 words as a Back-Cover Text, to the end of the list - of Cover Texts in the Modified Version. Only one passage of - Front-Cover Text and one of Back-Cover Text may be added by (or - through arrangements made by) any one entity. If the Document already - includes a cover text for the same cover, previously added by you or - by arrangement made by the same entity you are acting on behalf of, - you may not add another; but you may replace the old one, on explicit - permission from the previous publisher that added the old one. - - The author(s) and publisher(s) of the Document do not by this License - give permission to use their names for publicity for or to assert or - imply endorsement of any Modified Version. - - @item - COMBINING DOCUMENTS - - You may combine the Document with other documents released under this - License, under the terms defined in section 4 above for modified - versions, provided that you include in the combination all of the - Invariant Sections of all of the original documents, unmodified, and - list them all as Invariant Sections of your combined work in its - license notice. - - The combined work need only contain one copy of this License, and - multiple identical Invariant Sections may be replaced with a single - copy. If there are multiple Invariant Sections with the same name but - different contents, make the title of each such section unique by - adding at the end of it, in parentheses, the name of the original - author or publisher of that section if known, or else a unique number. - Make the same adjustment to the section titles in the list of - Invariant Sections in the license notice of the combined work. - - In the combination, you must combine any sections entitled ``History'' - in the various original documents, forming one section entitled - ``History''; likewise combine any sections entitled ``Acknowledgments'', - and any sections entitled ``Dedications''. You must delete all sections - entitled ``Endorsements.'' - - @item - COLLECTIONS OF DOCUMENTS - - You may make a collection consisting of the Document and other documents - released under this License, and replace the individual copies of this - License in the various documents with a single copy that is included in - the collection, provided that you follow the rules of this License for - verbatim copying of each of the documents in all other respects. - - You may extract a single document from such a collection, and distribute - it individually under this License, provided you insert a copy of this - License into the extracted document, and follow this License in all - other respects regarding verbatim copying of that document. - - @item - AGGREGATION WITH INDEPENDENT WORKS - - A compilation of the Document or its derivatives with other separate - and independent documents or works, in or on a volume of a storage or - distribution medium, does not as a whole count as a Modified Version - of the Document, provided no compilation copyright is claimed for the - compilation. Such a compilation is called an ``aggregate'', and this - License does not apply to the other self-contained works thus compiled - with the Document, on account of their being thus compiled, if they - are not themselves derivative works of the Document. - - If the Cover Text requirement of section 3 is applicable to these - copies of the Document, then if the Document is less than one quarter - of the entire aggregate, the Document's Cover Texts may be placed on - covers that surround only the Document within the aggregate. - Otherwise they must appear on covers around the whole aggregate. - - @item - TRANSLATION - - Translation is considered a kind of modification, so you may - distribute translations of the Document under the terms of section 4. - Replacing Invariant Sections with translations requires special - permission from their copyright holders, but you may include - translations of some or all Invariant Sections in addition to the - original versions of these Invariant Sections. You may include a - translation of this License provided that you also include the - original English version of this License. In case of a disagreement - between the translation and the original English version of this - License, the original English version will prevail. - - @item - TERMINATION - - You may not copy, modify, sublicense, or distribute the Document except - as expressly provided for under this License. Any other attempt to - copy, modify, sublicense or distribute the Document is void, and will - automatically terminate your rights under this License. However, - parties who have received copies, or rights, from you under this - License will not have their licenses terminated so long as such - parties remain in full compliance. - - @item - FUTURE REVISIONS OF THIS LICENSE - - The Free Software Foundation may publish new, revised versions - of the GNU Free Documentation License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. See - @uref{http://www.gnu.org/copyleft/}. - - Each version of the License is given a distinguishing version number. - If the Document specifies that a particular numbered version of this - License ``or any later version'' applies to it, you have the option of - following the terms and conditions either of that specified version or - of any later version that has been published (not as a draft) by the - Free Software Foundation. If the Document does not specify a version - number of this License, you may choose any version ever published (not - as a draft) by the Free Software Foundation. - @end enumerate - - @page - @unnumberedsec ADDENDUM: How to use this License for your documents - - To use this License in a document you have written, include a copy of - the License in the document and put the following copyright and - license notices just after the title page: - - @smallexample - @group - Copyright (C) @var{year} @var{your name}. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.1 - or any later version published by the Free Software Foundation; - with the Invariant Sections being @var{list their titles}, with the - Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}. - A copy of the license is included in the section entitled ``GNU - Free Documentation License''. - @end group - @end smallexample - - If you have no Invariant Sections, write ``with no Invariant Sections'' - instead of saying which ones are invariant. If you have no - Front-Cover Texts, write ``no Front-Cover Texts'' instead of - ``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts. - - If your document contains nontrivial examples of program code, we - recommend releasing these examples in parallel under your choice of - free software license, such as the GNU General Public License, - to permit their use in free software. - - @c Local Variables: - @c ispell-local-pdict: "ispell-dict" - @c End: - --- 0 ---- diff -Nrc3pad gcc-3.0/gcc/doc/gcc.1 gcc-3.0.1/gcc/doc/gcc.1 *** gcc-3.0/gcc/doc/gcc.1 Thu Jun 14 15:54:21 2001 --- gcc-3.0.1/gcc/doc/gcc.1 Sun Aug 19 17:45:03 2001 *************** *** 1,5 **** .\" Automatically generated by Pod::Man version 1.16 ! .\" Thu Jun 14 22:42:58 2001 .\" .\" Standard preamble: .\" ====================================================================== --- 1,5 ---- .\" Automatically generated by Pod::Man version 1.16 ! .\" Tue Jul 3 00:41:07 2001 .\" .\" Standard preamble: .\" ====================================================================== *************** *** 138,144 **** .\" ====================================================================== .\" .IX Title "GCC 1" ! .TH GCC 1 "gcc-3.0" "2001-06-14" "GNU" .UC .SH "NAME" gcc \- \s-1GNU\s0 project C and \*(C+ compiler --- 138,144 ---- .\" ====================================================================== .\" .IX Title "GCC 1" ! .TH GCC 1 "gcc-3.0.1" "2001-07-03" "GNU" .UC .SH "NAME" gcc \- \s-1GNU\s0 project C and \*(C+ compiler *************** in the following sections. *** 269,275 **** .Ip "\fIDebugging Options\fR" 4 .IX Item "Debugging Options" \&\fB\-a \-ax \-d\fR\fIletters\fR \fB\-dumpspecs \-dumpmachine \-dumpversion ! \&\-fdump-unnumbered \-fdump-translation-unit\fR[\fB-\fR\fIn\fR] \fB\-fdump-class-hierarchy\fR[\fB-\fR\fIn\fR] \&\fB\-fdump-ast-original\fR[\fB-\fR\fIn\fR] \fB\-fdump-ast-optimized\fR[\fB-\fR\fIn\fR] \&\fB\-fmem-report \-fpretend-float \&\-fprofile-arcs \-ftest-coverage \-ftime-report --- 269,276 ---- .Ip "\fIDebugging Options\fR" 4 .IX Item "Debugging Options" \&\fB\-a \-ax \-d\fR\fIletters\fR \fB\-dumpspecs \-dumpmachine \-dumpversion ! \&\-fdump-unnumbered \-fdump-translation-unit\fR[\fB-\fR\fIn\fR] ! \&\fB\-fdump-class-hierarchy\fR[\fB-\fR\fIn\fR] \&\fB\-fdump-ast-original\fR[\fB-\fR\fIn\fR] \fB\-fdump-ast-optimized\fR[\fB-\fR\fIn\fR] \&\fB\-fmem-report \-fpretend-float \&\-fprofile-arcs \-ftest-coverage \-ftime-report *************** In C mode, support all \s-1ISO\s0 C89 pr *** 821,827 **** remove \s-1GNU\s0 extensions that conflict with \s-1ISO\s0 \*(C+. .Sp This turns off certain features of \s-1GCC\s0 that are incompatible with \s-1ISO\s0 ! C (when compiling C code), or of standard \*(C+ (when compiling \*(C+ code), such as the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords, and predefined macros such as \f(CW\*(C`unix\*(C'\fR and \f(CW\*(C`vax\*(C'\fR that identify the type of system you are using. It also enables the undesirable and --- 822,828 ---- remove \s-1GNU\s0 extensions that conflict with \s-1ISO\s0 \*(C+. .Sp This turns off certain features of \s-1GCC\s0 that are incompatible with \s-1ISO\s0 ! C89 (when compiling C code), or of standard \*(C+ (when compiling \*(C+ code), such as the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords, and predefined macros such as \f(CW\*(C`unix\*(C'\fR and \f(CW\*(C`vax\*(C'\fR that identify the type of system you are using. It also enables the undesirable and *************** defined by \s-1ISO\s0 C (such as \f(CW\* *** 852,891 **** functions with \fB\-ansi\fR is used. .Ip "\fB\-std=\fR" 4 .IX Item "-std=" ! Determine the language standard. A value for this option must be provided; possible values are .RS 4 .Ip "\fBiso9899:1990\fR" 4 .IX Item "iso9899:1990" ! Same as \fB\-ansi\fR .Ip "\fBiso9899:199409\fR" 4 .IX Item "iso9899:199409" ! \&\s-1ISO\s0 C as modified in amend. 1 .Ip "\fBiso9899:1999\fR" 4 .IX Item "iso9899:1999" \&\s-1ISO\s0 C99. Note that this standard is not yet fully supported; see ! <\fBhttp://gcc.gnu.org/gcc-3.0/c99status.html\fR> for more information. ! .Ip "\fBc89\fR" 4 ! .IX Item "c89" ! same as \fB\-std=iso9899:1990\fR ! .Ip "\fBc99\fR" 4 ! .IX Item "c99" ! same as \fB\-std=iso9899:1999\fR .Ip "\fBgnu89\fR" 4 .IX Item "gnu89" ! default, iso9899:1990 + gnu extensions .Ip "\fBgnu99\fR" 4 .IX Item "gnu99" ! iso9899:1999 + gnu extensions ! .Ip "\fBiso9899:199x\fR" 4 ! .IX Item "iso9899:199x" ! same as \fB\-std=iso9899:1999\fR, deprecated ! .Ip "\fBc9x\fR" 4 ! .IX Item "c9x" ! same as \fB\-std=iso9899:1999\fR, deprecated .Ip "\fBgnu9x\fR" 4 .IX Item "gnu9x" ! same as \fB\-std=gnu99\fR, deprecated .RE .RS 4 .Sp --- 853,896 ---- functions with \fB\-ansi\fR is used. .Ip "\fB\-std=\fR" 4 .IX Item "-std=" ! Determine the language standard. This option is currently only ! supported when compiling C. A value for this option must be provided; possible values are .RS 4 + .Ip "\fBc89\fR" 4 + .IX Item "c89" + .PD 0 .Ip "\fBiso9899:1990\fR" 4 .IX Item "iso9899:1990" ! .PD ! \&\s-1ISO\s0 C89 (same as \fB\-ansi\fR). .Ip "\fBiso9899:199409\fR" 4 .IX Item "iso9899:199409" ! \&\s-1ISO\s0 C89 as modified in amendment 1. ! .Ip "\fBc99\fR" 4 ! .IX Item "c99" ! .PD 0 ! .Ip "\fBc9x\fR" 4 ! .IX Item "c9x" .Ip "\fBiso9899:1999\fR" 4 .IX Item "iso9899:1999" + .Ip "\fBiso9899:199x\fR" 4 + .IX Item "iso9899:199x" + .PD \&\s-1ISO\s0 C99. Note that this standard is not yet fully supported; see ! <\fBhttp://gcc.gnu.org/c99status.html\fR> for more information. The ! names \fBc9x\fR and \fBiso9899:199x\fR are deprecated. .Ip "\fBgnu89\fR" 4 .IX Item "gnu89" ! Default, \s-1ISO\s0 C89 plus \s-1GNU\s0 extensions (including some C99 features). .Ip "\fBgnu99\fR" 4 .IX Item "gnu99" ! .PD 0 .Ip "\fBgnu9x\fR" 4 .IX Item "gnu9x" ! .PD ! \&\s-1ISO\s0 C99 plus \s-1GNU\s0 extensions. When \s-1ISO\s0 C99 is fully implemented in \s-1GCC\s0, ! this will become the default. The name \fBgnu9x\fR is deprecated. .RE .RS 4 .Sp *************** this check is normally unnecessary. *** 1151,1157 **** .Sp An alternative to using this option is to specify that your \&\f(CW\*(C`operator new\*(C'\fR does not throw any exceptions; if you declare it ! \&\fB\f(BIthrow()\fB\fR, g++ will check the return value. See also \fBnew (nothrow)\fR. .Ip "\fB\-fconserve-space\fR" 4 .IX Item "-fconserve-space" --- 1156,1162 ---- .Sp An alternative to using this option is to specify that your \&\f(CW\*(C`operator new\*(C'\fR does not throw any exceptions; if you declare it ! \&\fB\f(BIthrow()\fB\fR, G++ will check the return value. See also \fBnew (nothrow)\fR. .Ip "\fB\-fconserve-space\fR" 4 .IX Item "-fconserve-space" *************** identifiers. However, \s-1ISO\s0 C and *** 1186,1192 **** .IX Item "-fno-elide-constructors" The \*(C+ standard allows an implementation to omit creating a temporary which is only used to initialize another object of the same type. ! Specifying this option disables that optimization, and forces g++ to call the copy constructor in all cases. .Ip "\fB\-fno-enforce-eh-specs\fR" 4 .IX Item "-fno-enforce-eh-specs" --- 1191,1197 ---- .IX Item "-fno-elide-constructors" The \*(C+ standard allows an implementation to omit creating a temporary which is only used to initialize another object of the same type. ! Specifying this option disables that optimization, and forces G++ to call the copy constructor in all cases. .Ip "\fB\-fno-enforce-eh-specs\fR" 4 .IX Item "-fno-enforce-eh-specs" *************** a \fIfor-init-statement\fR is limited to *** 1218,1224 **** as specified by the \*(C+ standard. If \fB\-fno-for-scope\fR is specified, the scope of variables declared in a \fIfor-init-statement\fR extends to the end of the enclosing scope, ! as was the case in old versions of gcc, and other (traditional) implementations of \*(C+. .Sp The default if neither flag is given to follow the standard, --- 1223,1229 ---- as specified by the \*(C+ standard. If \fB\-fno-for-scope\fR is specified, the scope of variables declared in a \fIfor-init-statement\fR extends to the end of the enclosing scope, ! as was the case in old versions of G++, and other (traditional) implementations of \*(C+. .Sp The default if neither flag is given to follow the standard, *************** otherwise be invalid, or have different *** 1227,1233 **** .Ip "\fB\-fno-gnu-keywords\fR" 4 .IX Item "-fno-gnu-keywords" Do not recognize \f(CW\*(C`typeof\*(C'\fR as a keyword, so that code can use this ! word as an identifier. You can use the keyword \f(CW\*(C`_\|_typeof_\|_\*(C'\fR instead. \&\fB\-ansi\fR implies \fB\-fno-gnu-keywords\fR. .Ip "\fB\-fno-honor-std\fR" 4 .IX Item "-fno-honor-std" --- 1232,1238 ---- .Ip "\fB\-fno-gnu-keywords\fR" 4 .IX Item "-fno-gnu-keywords" Do not recognize \f(CW\*(C`typeof\*(C'\fR as a keyword, so that code can use this ! word as an identifier. You can use the keyword \f(CW\*(C`_\|_typeof_\|_\*(C'\fR instead. \&\fB\-ansi\fR implies \fB\-fno-gnu-keywords\fR. .Ip "\fB\-fno-honor-std\fR" 4 .IX Item "-fno-honor-std" *************** Ignore \f(CW\*(C`namespace std\*(C'\fR, *** 1235,1241 **** With this switch, the compiler will ignore \&\f(CW\*(C`namespace\-declarations\*(C'\fR, \f(CW\*(C`using\-declarations\*(C'\fR, \&\f(CW\*(C`using\-directives\*(C'\fR, and \f(CW\*(C`namespace\-names\*(C'\fR, if they involve ! \&\f(CW\*(C`std\*(C'\fR. .Sp This option is only useful if you have manually compiled the \*(C+ run-time library with the same switch. Otherwise, your programs will --- 1240,1246 ---- With this switch, the compiler will ignore \&\f(CW\*(C`namespace\-declarations\*(C'\fR, \f(CW\*(C`using\-declarations\*(C'\fR, \&\f(CW\*(C`using\-directives\*(C'\fR, and \f(CW\*(C`namespace\-names\*(C'\fR, if they involve ! \&\f(CW\*(C`std\*(C'\fR. .Sp This option is only useful if you have manually compiled the \*(C+ run-time library with the same switch. Otherwise, your programs will *************** synonyms as keywords. *** 1272,1283 **** .Ip "\fB\-fno-optional-diags\fR" 4 .IX Item "-fno-optional-diags" Disable diagnostics that the standard says a compiler does not need to ! issue. Currently, the only such diagnostic issued by g++ is the one for a name having multiple meanings within a class. .Ip "\fB\-fpermissive\fR" 4 .IX Item "-fpermissive" Downgrade messages about nonconformant code from errors to warnings. By ! default, g++ effectively sets \fB\-pedantic-errors\fR without \&\fB\-pedantic\fR; this option reverses that. This behavior and this option are superseded by \fB\-pedantic\fR, which works as it does for \s-1GNU\s0 C. .Ip "\fB\-frepo\fR" 4 --- 1277,1288 ---- .Ip "\fB\-fno-optional-diags\fR" 4 .IX Item "-fno-optional-diags" Disable diagnostics that the standard says a compiler does not need to ! issue. Currently, the only such diagnostic issued by G++ is the one for a name having multiple meanings within a class. .Ip "\fB\-fpermissive\fR" 4 .IX Item "-fpermissive" Downgrade messages about nonconformant code from errors to warnings. By ! default, G++ effectively sets \fB\-pedantic-errors\fR without \&\fB\-pedantic\fR; this option reverses that. This behavior and this option are superseded by \fB\-pedantic\fR, which works as it does for \s-1GNU\s0 C. .Ip "\fB\-frepo\fR" 4 *************** This information is generally only usefu *** 1300,1306 **** .IX Item "-ftemplate-depth-n" Set the maximum instantiation depth for template classes to \fIn\fR. A limit on the template instantiation depth is needed to detect ! endless recursions during template class instantiation. \s-1ANSI/ISO\s0 \*(C+ conforming programs must not rely on a maximum depth greater than 17. .Ip "\fB\-fuse-cxa-atexit\fR" 4 .IX Item "-fuse-cxa-atexit" --- 1305,1311 ---- .IX Item "-ftemplate-depth-n" Set the maximum instantiation depth for template classes to \fIn\fR. A limit on the template instantiation depth is needed to detect ! endless recursions during template class instantiation. \s-1ANSI/ISO\s0 \*(C+ conforming programs must not rely on a maximum depth greater than 17. .Ip "\fB\-fuse-cxa-atexit\fR" 4 .IX Item "-fuse-cxa-atexit" *************** Do not assume \fBinline\fR for functions *** 1330,1345 **** Note that these functions will have linkage like inline functions; they just won't be inlined by default. ! .Ip "\fB\-Wctor-dtor-privacy (\*(C+ only)\fR" 4 .IX Item "-Wctor-dtor-privacy ( only)" Warn when a class seems unusable, because all the constructors or destructors in a class are private and the class has no friends or public static member functions. ! .Ip "\fB\-Wnon-virtual-dtor (\*(C+ only)\fR" 4 .IX Item "-Wnon-virtual-dtor ( only)" Warn when a class declares a non-virtual destructor that should probably be virtual, because it looks like the class will be used polymorphically. ! .Ip "\fB\-Wreorder (\*(C+ only)\fR" 4 .IX Item "-Wreorder ( only)" Warn when the order of member initializers given in the code does not match the order in which they must be executed. For instance: --- 1335,1350 ---- Note that these functions will have linkage like inline functions; they just won't be inlined by default. ! .Ip "\fB\-Wctor-dtor-privacy\fR (\*(C+ only)" 4 .IX Item "-Wctor-dtor-privacy ( only)" Warn when a class seems unusable, because all the constructors or destructors in a class are private and the class has no friends or public static member functions. ! .Ip "\fB\-Wnon-virtual-dtor\fR (\*(C+ only)" 4 .IX Item "-Wnon-virtual-dtor ( only)" Warn when a class declares a non-virtual destructor that should probably be virtual, because it looks like the class will be used polymorphically. ! .Ip "\fB\-Wreorder\fR (\*(C+ only)" 4 .IX Item "-Wreorder ( only)" Warn when the order of member initializers given in the code does not match the order in which they must be executed. For instance: *************** and \fBj\fR will be rearranged to match *** 1356,1392 **** members. .PP The following \fB\-W...\fR options are not affected by \fB\-Wall\fR. ! .Ip "\fB\-Weffc++ (\*(C+ only)\fR" 4 .IX Item "-Weffc++ ( only)" Warn about violations of various style guidelines from Scott Meyers' \&\fIEffective \*(C+\fR books. If you use this option, you should be aware that the standard library headers do not obey all of these guidelines; you can use \fBgrep \-v\fR to filter out those warnings. ! .Ip "\fB\-Wno-deprecated (\*(C+ only)\fR" 4 .IX Item "-Wno-deprecated ( only)" ! Do not warn about usage of deprecated features. ! .Ip "\fB\-Wno-non-template-friend (\*(C+ only)\fR" 4 .IX Item "-Wno-non-template-friend ( only)" Disable warnings when non-templatized friend functions are declared ! within a template. With the advent of explicit template specification ! support in g++, if the name of the friend is an unqualified-id (i.e., \&\fBfriend foo(int)\fR), the \*(C+ language specification demands that the ! friend declare or define an ordinary, nontemplate function. (Section ! 14.5.3). Before g++ implemented explicit specification, unqualified-ids could be interpreted as a particular specialization of a templatized ! function. Because this non-conforming behavior is no longer the default ! behavior for g++, \fB\-Wnon-template-friend\fR allows the compiler to check existing code for potential trouble spots, and is on by default. This new compiler behavior can be turned off with \&\fB\-Wno-non-template-friend\fR which keeps the conformant compiler code but disables the helpful warning. ! .Ip "\fB\-Wold-style-cast (\*(C+ only)\fR" 4 .IX Item "-Wold-style-cast ( only)" Warn if an old-style (C-style) cast is used within a \*(C+ program. The new-style casts (\fBstatic_cast\fR, \fBreinterpret_cast\fR, and \&\fBconst_cast\fR) are less vulnerable to unintended effects, and much easier to grep for. ! .Ip "\fB\-Woverloaded-virtual (\*(C+ only)\fR" 4 .IX Item "-Woverloaded-virtual ( only)" Warn when a derived class function declaration may be an error in defining a virtual function. In a derived class, the --- 1361,1397 ---- members. .PP The following \fB\-W...\fR options are not affected by \fB\-Wall\fR. ! .Ip "\fB\-Weffc++\fR (\*(C+ only)" 4 .IX Item "-Weffc++ ( only)" Warn about violations of various style guidelines from Scott Meyers' \&\fIEffective \*(C+\fR books. If you use this option, you should be aware that the standard library headers do not obey all of these guidelines; you can use \fBgrep \-v\fR to filter out those warnings. ! .Ip "\fB\-Wno-deprecated\fR (\*(C+ only)" 4 .IX Item "-Wno-deprecated ( only)" ! Do not warn about usage of deprecated features. ! .Ip "\fB\-Wno-non-template-friend\fR (\*(C+ only)" 4 .IX Item "-Wno-non-template-friend ( only)" Disable warnings when non-templatized friend functions are declared ! within a template. With the advent of explicit template specification ! support in G++, if the name of the friend is an unqualified-id (i.e., \&\fBfriend foo(int)\fR), the \*(C+ language specification demands that the ! friend declare or define an ordinary, nontemplate function. (Section ! 14.5.3). Before G++ implemented explicit specification, unqualified-ids could be interpreted as a particular specialization of a templatized ! function. Because this non-conforming behavior is no longer the default ! behavior for G++, \fB\-Wnon-template-friend\fR allows the compiler to check existing code for potential trouble spots, and is on by default. This new compiler behavior can be turned off with \&\fB\-Wno-non-template-friend\fR which keeps the conformant compiler code but disables the helpful warning. ! .Ip "\fB\-Wold-style-cast\fR (\*(C+ only)" 4 .IX Item "-Wold-style-cast ( only)" Warn if an old-style (C-style) cast is used within a \*(C+ program. The new-style casts (\fBstatic_cast\fR, \fBreinterpret_cast\fR, and \&\fBconst_cast\fR) are less vulnerable to unintended effects, and much easier to grep for. ! .Ip "\fB\-Woverloaded-virtual\fR (\*(C+ only)" 4 .IX Item "-Woverloaded-virtual ( only)" Warn when a derived class function declaration may be an error in defining a virtual function. In a derived class, the *************** virtual function declared in the base cl *** 1395,1413 **** compiler warns when you define a function with the same name as a virtual function, but with a type signature that does not match any declarations from the base class. ! .Ip "\fB\-Wno-pmf-conversions (\*(C+ only)\fR" 4 .IX Item "-Wno-pmf-conversions ( only)" Disable the diagnostic for converting a bound pointer to member function to a plain pointer. ! .Ip "\fB\-Wsign-promo (\*(C+ only)\fR" 4 .IX Item "-Wsign-promo ( only)" Warn when overload resolution chooses a promotion from unsigned or enumeral type to a signed type over a conversion to an unsigned type of ! the same size. Previous versions of g++ would try to preserve unsignedness, but the standard mandates the current behavior. ! .Ip "\fB\-Wsynth (\*(C+ only)\fR" 4 .IX Item "-Wsynth ( only)" ! Warn when g++'s synthesis behavior does not match that of cfront. For instance: .Sp .Vb 4 --- 1400,1418 ---- compiler warns when you define a function with the same name as a virtual function, but with a type signature that does not match any declarations from the base class. ! .Ip "\fB\-Wno-pmf-conversions\fR (\*(C+ only)" 4 .IX Item "-Wno-pmf-conversions ( only)" Disable the diagnostic for converting a bound pointer to member function to a plain pointer. ! .Ip "\fB\-Wsign-promo\fR (\*(C+ only)" 4 .IX Item "-Wsign-promo ( only)" Warn when overload resolution chooses a promotion from unsigned or enumeral type to a signed type over a conversion to an unsigned type of ! the same size. Previous versions of G++ would try to preserve unsignedness, but the standard mandates the current behavior. ! .Ip "\fB\-Wsynth\fR (\*(C+ only)" 4 .IX Item "-Wsynth ( only)" ! Warn when G++'s synthesis behavior does not match that of cfront. For instance: .Sp .Vb 4 *************** instance: *** 1423,1429 **** \& a = b; \& } .Ve ! In this example, g++ will synthesize a default \fBA& operator = (const A&);\fR, while cfront will use the user-defined \fBoperator =\fR. .Sh "Options Controlling Objective-C Dialect" .IX Subsection "Options Controlling Objective-C Dialect" --- 1428,1434 ---- \& a = b; \& } .Ve ! In this example, G++ will synthesize a default \fBA& operator = (const A&);\fR, while cfront will use the user-defined \fBoperator =\fR. .Sh "Options Controlling Objective-C Dialect" .IX Subsection "Options Controlling Objective-C Dialect" *************** Traditionally, diagnostic messages have *** 1471,1484 **** the output device's aspect (e.g. its width, ...). The options described below can be used to control the diagnostic messages formatting algorithm, e.g. how many characters per line, how often source location ! information should be reported. Right now, only the \*(C+ front-end can honor these options. However it is expected, in the near future, that ! the remaining front-ends would be able to digest them correctly. .Ip "\fB\-fmessage-length=\fR\fIn\fR" 4 .IX Item "-fmessage-length=n" Try to format error messages so that they fit on lines of about \fIn\fR ! characters. The default is 72 characters for g++ and 0 for the rest of ! the front-ends supported by \s-1GCC\s0. If \fIn\fR is zero, then no line-wrapping will be done; each error message will appear on a single line. .Ip "\fB\-fdiagnostics-show-location=once\fR" 4 --- 1476,1489 ---- the output device's aspect (e.g. its width, ...). The options described below can be used to control the diagnostic messages formatting algorithm, e.g. how many characters per line, how often source location ! information should be reported. Right now, only the \*(C+ front end can honor these options. However it is expected, in the near future, that ! the remaining front ends would be able to digest them correctly. .Ip "\fB\-fmessage-length=\fR\fIn\fR" 4 .IX Item "-fmessage-length=n" Try to format error messages so that they fit on lines of about \fIn\fR ! characters. The default is 72 characters for \fBg++\fR and 0 for the rest of ! the front ends supported by \s-1GCC\s0. If \fIn\fR is zero, then no line-wrapping will be done; each error message will appear on a single line. .Ip "\fB\-fdiagnostics-show-location=once\fR" 4 *************** In C, every \f(CW\*(C`else\*(C'\fR branc *** 1683,1689 **** statement, which in this example is \f(CW\*(C`if (b)\*(C'\fR. This is often not what the programmer expected, as illustrated in the above example by indentation the programmer chose. When there is the potential for this ! confusion, \s-1GNU\s0 C will issue a warning when this flag is specified. To eliminate the warning, add explicit braces around the innermost \&\f(CW\*(C`if\*(C'\fR statement so there is no way the \f(CW\*(C`else\*(C'\fR could belong to the enclosing \f(CW\*(C`if\*(C'\fR. The resulting code would look like this: --- 1688,1694 ---- statement, which in this example is \f(CW\*(C`if (b)\*(C'\fR. This is often not what the programmer expected, as illustrated in the above example by indentation the programmer chose. When there is the potential for this ! confusion, \s-1GCC\s0 will issue a warning when this flag is specified. To eliminate the warning, add explicit braces around the innermost \&\f(CW\*(C`if\*(C'\fR statement so there is no way the \f(CW\*(C`else\*(C'\fR could belong to the enclosing \f(CW\*(C`if\*(C'\fR. The resulting code would look like this: *************** Warn whenever a function is defined with *** 1750,1756 **** return-value in a function whose return-type is not \f(CW\*(C`void\*(C'\fR. .Sp For \*(C+, a function without return type always produces a diagnostic ! message, even when \fB\-Wno-return-type\fR is specified. The only exceptions are \fBmain\fR and functions defined in system headers. .Ip "\fB\-Wswitch\fR" 4 .IX Item "-Wswitch" --- 1755,1761 ---- return-value in a function whose return-type is not \f(CW\*(C`void\*(C'\fR. .Sp For \*(C+, a function without return type always produces a diagnostic ! message, even when \fB\-Wno-return-type\fR is specified. The only exceptions are \fBmain\fR and functions defined in system headers. .Ip "\fB\-Wswitch\fR" 4 .IX Item "-Wswitch" *************** in fact be called at the place which wou *** 1861,1867 **** .Sp Some spurious warnings can be avoided if you declare all the functions you use that never return as \f(CW\*(C`noreturn\*(C'\fR. ! .Ip "\fB\-Wreorder (\*(C+ only)\fR" 4 .IX Item "-Wreorder ( only)" Warn when the order of member initializers given in the code does not match the order in which they must be executed. For instance: --- 1866,1872 ---- .Sp Some spurious warnings can be avoided if you declare all the functions you use that never return as \f(CW\*(C`noreturn\*(C'\fR. ! .Ip "\fB\-Wreorder\fR (\*(C+ only)" 4 .IX Item "-Wreorder ( only)" Warn when the order of member initializers given in the code does not match the order in which they must be executed. For instance: *************** different problem). In particular, inst *** 1975,1981 **** would check to see whether the two values have ranges that overlap; and this is done with the relational operators, so equality comparisons are probably mistaken. ! .Ip "\fB\-Wtraditional (C only)\fR" 4 .IX Item "-Wtraditional (C only)" Warn about certain constructs that behave differently in traditional and \&\s-1ISO\s0 C. Also warn about \s-1ISO\s0 C constructs that have no traditional C --- 1980,1986 ---- would check to see whether the two values have ranges that overlap; and this is done with the relational operators, so equality comparisons are probably mistaken. ! .Ip "\fB\-Wtraditional\fR (C only)" 4 .IX Item "-Wtraditional (C only)" Warn about certain constructs that behave differently in traditional and \&\s-1ISO\s0 C. Also warn about \s-1ISO\s0 C constructs that have no traditional C *************** Warn about anything that depends on the *** 2062,2068 **** of \f(CW\*(C`void\*(C'\fR. \s-1GNU\s0 C assigns these types a size of 1, for convenience in calculations with \f(CW\*(C`void *\*(C'\fR pointers and pointers to functions. ! .Ip "\fB\-Wbad-function-cast (C only)\fR" 4 .IX Item "-Wbad-function-cast (C only)" Warn whenever a function call is cast to a non-matching type. For example, warn if \f(CW\*(C`int malloc()\*(C'\fR is cast to \f(CW\*(C`anything *\*(C'\fR. --- 2067,2073 ---- of \f(CW\*(C`void\*(C'\fR. \s-1GNU\s0 C assigns these types a size of 1, for convenience in calculations with \f(CW\*(C`void *\*(C'\fR pointers and pointers to functions. ! .Ip "\fB\-Wbad-function-cast\fR (C only)" 4 .IX Item "-Wbad-function-cast (C only)" Warn whenever a function call is cast to a non-matching type. For example, warn if \f(CW\*(C`int malloc()\*(C'\fR is cast to \f(CW\*(C`anything *\*(C'\fR. *************** an \f(CW\*(C`int *\*(C'\fR on machines w *** 2079,2087 **** two- or four-byte boundaries. .Ip "\fB\-Wwrite-strings\fR" 4 .IX Item "-Wwrite-strings" ! Give string constants the type \f(CW\*(C`const char[\f(CIlength\f(CW]\*(C'\fR so that copying the address of one into a non-\f(CW\*(C`const\*(C'\fR \f(CW\*(C`char *\*(C'\fR ! pointer will get a warning. These warnings will help you find at compile time code that can try to write into a string constant, but only if you have been very careful about using \f(CW\*(C`const\*(C'\fR in declarations and prototypes. Otherwise, it will just be a nuisance; --- 2084,2095 ---- two- or four-byte boundaries. .Ip "\fB\-Wwrite-strings\fR" 4 .IX Item "-Wwrite-strings" ! When compiling C, give string constants the type \f(CW\*(C`const ! char[\f(CIlength\f(CW]\*(C'\fR so that copying the address of one into a non-\f(CW\*(C`const\*(C'\fR \f(CW\*(C`char *\*(C'\fR ! pointer will get a warning; when compiling \*(C+, warn about the ! deprecated conversion from string constants to \f(CW\*(C`char *\*(C'\fR. ! These warnings will help you find at compile time code that can try to write into a string constant, but only if you have been very careful about using \f(CW\*(C`const\*(C'\fR in declarations and prototypes. Otherwise, it will just be a nuisance; *************** of \fB\-W\fR without this warning, use \ *** 2109,2121 **** Warn if any functions that return structures or unions are defined or called. (In languages where you can return an array, this also elicits a warning.) ! .Ip "\fB\-Wstrict-prototypes (C only)\fR" 4 .IX Item "-Wstrict-prototypes (C only)" Warn if a function is declared or defined without specifying the argument types. (An old-style function definition is permitted without a warning if preceded by a declaration which specifies the argument types.) ! .Ip "\fB\-Wmissing-prototypes (C only)\fR" 4 .IX Item "-Wmissing-prototypes (C only)" Warn if a global function is defined without a previous prototype declaration. This warning is issued even if the definition itself --- 2117,2129 ---- Warn if any functions that return structures or unions are defined or called. (In languages where you can return an array, this also elicits a warning.) ! .Ip "\fB\-Wstrict-prototypes\fR (C only)" 4 .IX Item "-Wstrict-prototypes (C only)" Warn if a function is declared or defined without specifying the argument types. (An old-style function definition is permitted without a warning if preceded by a declaration which specifies the argument types.) ! .Ip "\fB\-Wmissing-prototypes\fR (C only)" 4 .IX Item "-Wmissing-prototypes (C only)" Warn if a global function is defined without a previous prototype declaration. This warning is issued even if the definition itself *************** reduce the padding and so make the struc *** 2174,2180 **** .IX Item "-Wredundant-decls" Warn if anything is declared more than once in the same scope, even in cases where multiple declaration is valid and changes nothing. ! .Ip "\fB\-Wnested-externs (C only)\fR" 4 .IX Item "-Wnested-externs (C only)" Warn if an \f(CW\*(C`extern\*(C'\fR declaration is encountered within a function. .Ip "\fB\-Wunreachable-code\fR" 4 --- 2182,2188 ---- .IX Item "-Wredundant-decls" Warn if anything is declared more than once in the same scope, even in cases where multiple declaration is valid and changes nothing. ! .Ip "\fB\-Wnested-externs\fR (C only)" 4 .IX Item "-Wnested-externs (C only)" Warn if an \f(CW\*(C`extern\*(C'\fR declaration is encountered within a function. .Ip "\fB\-Wunreachable-code\fR" 4 *************** When doing debugging dumps (see \fB\-d\f *** 2637,2679 **** numbers and line number note output. This makes it more feasible to use diff on debugging dumps for compiler invocations with different options, in particular with and without \fB\-g\fR. ! .Ip "\fB\-fdump-translation-unit (C and \*(C+ only)\fR" 4 .IX Item "-fdump-translation-unit (C and only)" .PD 0 ! .Ip "\fB\-fdump-translation-unit-\fR\fInumber\fR \fB(C and \*(C+ only)\fR" 4 .IX Item "-fdump-translation-unit-number (C and only)" .PD Dump a representation of the tree structure for the entire translation ! unit to a file. The file name is made by appending \fI.tu\fR to the ! source file name. If the \fB-\fR\fInumber\fR form is used, \fInumber\fR controls the details of the dump as described for the \fB\-fdump-tree\fR options. ! .Ip "\fB\-fdump-class-hierarchy (\*(C+ only)\fR" 4 .IX Item "-fdump-class-hierarchy ( only)" .PD 0 ! .Ip "\fB\-fdump-class-hierarchy-\fR\fInumber\fR \fB(\*(C+ only)\fR" 4 .IX Item "-fdump-class-hierarchy-number ( only)" .PD Dump a representation of each class's hierarchy and virtual function ! table layout to a file. The file name is made by appending \fI.class\fR ! to the source file name. If the \fB-\fR\fInumber\fR form is used, \fInumber\fR controls the details of the dump as described for the \fB\-fdump-tree\fR options. ! .Ip "\fB\-fdump-ast-\fR\fIswitch\fR \fB(\*(C+ only)\fR" 4 .IX Item "-fdump-ast-switch ( only)" .PD 0 ! .Ip "\fB\-fdump-ast-\fR\fIswitch\fR\fB-\fR\fInumber\fR \fB(\*(C+ only)\fR" 4 .IX Item "-fdump-ast-switch-number ( only)" .PD Control the dumping at various stages of processing the abstract syntax ! tree to a file. The file name is generated by appending a switch ! specific suffix to the source file name. If the \fB-\fR\fInumber\fR form is used, \fInumber\fR is a bit mask which controls the details of the ! dump. The following bits are meaningful (these are not set symbolically, as the primary function of these dumps is for debugging gcc itself): .RS 4 .Ip "\fBbit0 (1)\fR" 4 .IX Item "bit0 (1)" ! Print the address of each node. Usually this is not meaningful as it changes according to the environment and source file. .Ip "\fBbit1 (2)\fR" 4 .IX Item "bit1 (2)" --- 2645,2687 ---- numbers and line number note output. This makes it more feasible to use diff on debugging dumps for compiler invocations with different options, in particular with and without \fB\-g\fR. ! .Ip "\fB\-fdump-translation-unit\fR (C and \*(C+ only)" 4 .IX Item "-fdump-translation-unit (C and only)" .PD 0 ! .Ip "\fB\-fdump-translation-unit-\fR\fInumber\fR\fB \fR(C and \*(C+ only)" 4 .IX Item "-fdump-translation-unit-number (C and only)" .PD Dump a representation of the tree structure for the entire translation ! unit to a file. The file name is made by appending \fI.tu\fR to the ! source file name. If the \fB-\fR\fInumber\fR form is used, \fInumber\fR controls the details of the dump as described for the \fB\-fdump-tree\fR options. ! .Ip "\fB\-fdump-class-hierarchy\fR (\*(C+ only)" 4 .IX Item "-fdump-class-hierarchy ( only)" .PD 0 ! .Ip "\fB\-fdump-class-hierarchy-\fR\fInumber\fR\fB \fR(\*(C+ only)" 4 .IX Item "-fdump-class-hierarchy-number ( only)" .PD Dump a representation of each class's hierarchy and virtual function ! table layout to a file. The file name is made by appending \fI.class\fR ! to the source file name. If the \fB-\fR\fInumber\fR form is used, \fInumber\fR controls the details of the dump as described for the \fB\-fdump-tree\fR options. ! .Ip "\fB\-fdump-ast-\fR\fIswitch\fR\fB \fR(\*(C+ only)" 4 .IX Item "-fdump-ast-switch ( only)" .PD 0 ! .Ip "\fB\-fdump-ast-\fR\fIswitch\fR\fB-\fR\fInumber\fR\fB \fR(\*(C+ only)" 4 .IX Item "-fdump-ast-switch-number ( only)" .PD Control the dumping at various stages of processing the abstract syntax ! tree to a file. The file name is generated by appending a switch ! specific suffix to the source file name. If the \fB-\fR\fInumber\fR form is used, \fInumber\fR is a bit mask which controls the details of the ! dump. The following bits are meaningful (these are not set symbolically, as the primary function of these dumps is for debugging gcc itself): .RS 4 .Ip "\fBbit0 (1)\fR" 4 .IX Item "bit0 (1)" ! Print the address of each node. Usually this is not meaningful as it changes according to the environment and source file. .Ip "\fBbit1 (2)\fR" 4 .IX Item "bit1 (2)" *************** allows the control of this limit for fun *** 2923,2933 **** inline (ie marked with the inline keyword or defined within the class definition in c++). \fIn\fR is the size of functions that can be inlined in number of pseudo instructions (not counting parameter handling). The default ! value of n is 10000. Increasing this value can result in more inlined code at the cost of compilation time and memory consumption. Decreasing usually makes the compilation faster and less code will be inlined (which presumably means slower programs). This option is particularly useful for programs that ! use inlining heavily such as those based on recursive templates with c++. .Sp \&\fINote:\fR pseudo instruction represents, in this particular context, an abstract measurement of function's size. In no way, it represents a count --- 2931,2941 ---- inline (ie marked with the inline keyword or defined within the class definition in c++). \fIn\fR is the size of functions that can be inlined in number of pseudo instructions (not counting parameter handling). The default ! value of \fIn\fR is 10000. Increasing this value can result in more inlined code at the cost of compilation time and memory consumption. Decreasing usually makes the compilation faster and less code will be inlined (which presumably means slower programs). This option is particularly useful for programs that ! use inlining heavily such as those based on recursive templates with \*(C+. .Sp \&\fINote:\fR pseudo instruction represents, in this particular context, an abstract measurement of function's size. In no way, it represents a count *************** This pass also performs global constant *** 3028,3034 **** Use global dataflow analysis to identify and eliminate useless null pointer checks. Programs which rely on \s-1NULL\s0 pointer dereferences \fInot\fR halting the program may not work properly with this option. Use ! \&\-fno-delete-null-pointer-checks to disable this optimizing for programs which depend on that behavior. .Ip "\fB\-fexpensive-optimizations\fR" 4 .IX Item "-fexpensive-optimizations" --- 3036,3042 ---- Use global dataflow analysis to identify and eliminate useless null pointer checks. Programs which rely on \s-1NULL\s0 pointer dereferences \fInot\fR halting the program may not work properly with this option. Use ! \&\fB\-fno-delete-null-pointer-checks\fR to disable this optimizing for programs which depend on that behavior. .Ip "\fB\-fexpensive-optimizations\fR" 4 .IX Item "-fexpensive-optimizations" *************** file. The preprocessor outputs one \f(C *** 3414,3420 **** object file name for that source file, a colon, and the names of all the included files. Unless overridden explicitly, the object file name consists of the basename of the source file with any suffix replaced with ! object file suffix. If there are many included files then the rule is split into several lines using \fB\e\fR\-newline. .Sp \&\fB\-M\fR implies \fB\-E\fR. --- 3422,3428 ---- object file name for that source file, a colon, and the names of all the included files. Unless overridden explicitly, the object file name consists of the basename of the source file with any suffix replaced with ! object file suffix. If there are many included files then the rule is split into several lines using \fB\e\fR\-newline. .Sp \&\fB\-M\fR implies \fB\-E\fR. *************** The nine trigraph sequences are *** 3572,3602 **** .RS 4 .Ip "\fB??(\fR" 4 .IX Item "??(" ! -> \fB[\fR .Ip "\fB??)\fR" 4 .IX Item "??)" ! -> \fB]\fR .Ip "\fB??<\fR" 4 .IX Item "??<" ! -> \fB{\fR .Ip "\fB??>\fR" 4 .IX Item "??>" ! -> \fB}\fR .Ip "\fB??=\fR" 4 .IX Item "??=" ! -> \fB#\fR .Ip "\fB??/\fR" 4 .IX Item "??/" ! -> \fB\e\fR .Ip "\fB??'\fR" 4 .IX Item "??'" ! -> \fB^\fR .Ip "\fB??!\fR" 4 .IX Item "??!" ! -> \fB|\fR .Ip "\fB??-\fR" 4 .IX Item "??-" ! -> \fB~\fR .RE .RS 4 .Sp --- 3580,3610 ---- .RS 4 .Ip "\fB??(\fR" 4 .IX Item "??(" ! @expansion{} \fB[\fR .Ip "\fB??)\fR" 4 .IX Item "??)" ! @expansion{} \fB]\fR .Ip "\fB??<\fR" 4 .IX Item "??<" ! @expansion{} \fB{\fR .Ip "\fB??>\fR" 4 .IX Item "??>" ! @expansion{} \fB}\fR .Ip "\fB??=\fR" 4 .IX Item "??=" ! @expansion{} \fB#\fR .Ip "\fB??/\fR" 4 .IX Item "??/" ! @expansion{} \fB\e\fR .Ip "\fB??'\fR" 4 .IX Item "??'" ! @expansion{} \fB^\fR .Ip "\fB??!\fR" 4 .IX Item "??!" ! @expansion{} \fB|\fR .Ip "\fB??-\fR" 4 .IX Item "??-" ! @expansion{} \fB~\fR .RE .RS 4 .Sp *************** mechanism when this option is specified. *** 3685,3691 **** .IX Item "-nostdlib" Do not use the standard system startup files or libraries when linking. No startup files and only the libraries you specify will be passed to ! the linker. The compiler may generate calls to memcmp, memset, and memcpy for System V (and \s-1ISO\s0 C) environments or to bcopy and bzero for \&\s-1BSD\s0 environments. These entries are usually resolved by entries in libc. These entry points should be supplied through some other --- 3693,3699 ---- .IX Item "-nostdlib" Do not use the standard system startup files or libraries when linking. No startup files and only the libraries you specify will be passed to ! the linker. The compiler may generate calls to memcmp, memset, and memcpy for System V (and \s-1ISO\s0 C) environments or to bcopy and bzero for \&\s-1BSD\s0 environments. These entries are usually resolved by entries in libc. These entry points should be supplied through some other *************** searched for header files. This can be *** 3781,3787 **** file, substituting your own version, since these directories are searched before the system header file directories. However, you should not use this option to add directories that contain vendor-supplied ! system header files (use \fB\-isystem\fR for that). If you use more than one \fB\-I\fR option, the directories are scanned in left-to-right order; the standard system directories come after. .Ip "\fB\-I-\fR" 4 --- 3789,3795 ---- file, substituting your own version, since these directories are searched before the system header file directories. However, you should not use this option to add directories that contain vendor-supplied ! system header files (use \fB\-isystem\fR for that). If you use more than one \fB\-I\fR option, the directories are scanned in left-to-right order; the standard system directories come after. .Ip "\fB\-I-\fR" 4 *************** have to be emulated by software on the 6 *** 3996,4002 **** does not have code to emulate those instructions. .Ip "\fB\-mcpu32\fR" 4 .IX Item "-mcpu32" ! Generate output for a \s-1CPU32\s0. This is the default when the compiler is configured for CPU32\-based systems. .Sp Use this option for microcontrollers with a --- 4004,4010 ---- does not have code to emulate those instructions. .Ip "\fB\-mcpu32\fR" 4 .IX Item "-mcpu32" ! Generate output for a \s-1CPU32\s0. This is the default when the compiler is configured for CPU32\-based systems. .Sp Use this option for microcontrollers with a *************** With \fB\-mflat\fR, the compiler does no *** 4236,4242 **** and will use a ``flat'' or single register window calling convention. This model uses \f(CW%i7\fR as the frame pointer and is compatible with the normal register window model. Code from either may be intermixed. ! The local registers and the input registers (0\-5) are still treated as ``call saved'' registers and will be saved on the stack as necessary. .Sp With \fB\-mno-flat\fR (the default), the compiler emits save/restore --- 4244,4250 ---- and will use a ``flat'' or single register window calling convention. This model uses \f(CW%i7\fR as the frame pointer and is compatible with the normal register window model. Code from either may be intermixed. ! The local registers and the input registers (0\*(--5) are still treated as ``call saved'' registers and will be saved on the stack as necessary. .Sp With \fB\-mno-flat\fR (the default), the compiler emits save/restore *************** Cypress \s-1CY7C602\s0 chip, as used in *** 4303,4309 **** This is also appropriate for the older SparcStation 1, 2, \s-1IPX\s0 etc. .Sp With \fB\-msupersparc\fR the compiler optimizes code for the SuperSparc cpu, as ! used in the SparcStation 10, 1000 and 2000 series. This flag also enables use of the full \s-1SPARC\s0 v8 instruction set. .Sp These options are deprecated and will be deleted in a future \s-1GCC\s0 release. --- 4311,4317 ---- This is also appropriate for the older SparcStation 1, 2, \s-1IPX\s0 etc. .Sp With \fB\-msupersparc\fR the compiler optimizes code for the SuperSparc cpu, as ! used in the SparcStation 10, 1000 and 2000 series. This flag also enables use of the full \s-1SPARC\s0 v8 instruction set. .Sp These options are deprecated and will be deleted in a future \s-1GCC\s0 release. *************** compiler is built for cross-compilation. *** 4710,4721 **** .IX Item "-mcpu=name" This specifies the name of the target \s-1ARM\s0 processor. \s-1GCC\s0 uses this name to determine what kind of instructions it can emit when generating ! assembly code. Permissible names are: arm2, arm250, arm3, arm6, arm60, ! arm600, arm610, arm620, arm7, arm7m, arm7d, arm7dm, arm7di, arm7dmi, ! arm70, arm700, arm700i, arm710, arm710c, arm7100, arm7500, arm7500fe, ! arm7tdmi, arm8, strongarm, strongarm110, strongarm1100, arm8, arm810, ! arm9, arm9e, arm920, arm920t, arm940t, arm9tdmi, arm10tdmi, arm1020t, ! xscale. .Ip "\fB\-mtune=\fR\fIname\fR" 4 .IX Item "-mtune=name" This option is very similar to the \fB\-mcpu=\fR option, except that --- 4718,4733 ---- .IX Item "-mcpu=name" This specifies the name of the target \s-1ARM\s0 processor. \s-1GCC\s0 uses this name to determine what kind of instructions it can emit when generating ! assembly code. Permissible names are: \fBarm2\fR, \fBarm250\fR, ! \&\fBarm3\fR, \fBarm6\fR, \fBarm60\fR, \fBarm600\fR, \fBarm610\fR, ! \&\fBarm620\fR, \fBarm7\fR, \fBarm7m\fR, \fBarm7d\fR, \fBarm7dm\fR, ! \&\fBarm7di\fR, \fBarm7dmi\fR, \fBarm70\fR, \fBarm700\fR, ! \&\fBarm700i\fR, \fBarm710\fR, \fBarm710c\fR, \fBarm7100\fR, ! \&\fBarm7500\fR, \fBarm7500fe\fR, \fBarm7tdmi\fR, \fBarm8\fR, ! \&\fBstrongarm\fR, \fBstrongarm110\fR, \fBstrongarm1100\fR, ! \&\fBarm8\fR, \fBarm810\fR, \fBarm9\fR, \fBarm9e\fR, \fBarm920\fR, ! \&\fBarm920t\fR, \fBarm940t\fR, \fBarm9tdmi\fR, \fBarm10tdmi\fR, ! \&\fBarm1020t\fR, \fBxscale\fR. .Ip "\fB\-mtune=\fR\fIname\fR" 4 .IX Item "-mtune=name" This option is very similar to the \fB\-mcpu=\fR option, except that *************** this option. *** 4731,4738 **** This specifies the name of the target \s-1ARM\s0 architecture. \s-1GCC\s0 uses this name to determine what kind of instructions it can emit when generating assembly code. This option can be used in conjunction with or instead ! of the \fB\-mcpu=\fR option. Permissible names are: armv2, armv2a, ! armv3, armv3m, armv4, armv4t, armv5, armv5t, armv5te. .Ip "\fB\-mfpe=\fR\fInumber\fR" 4 .IX Item "-mfpe=number" .PD 0 --- 4743,4751 ---- This specifies the name of the target \s-1ARM\s0 architecture. \s-1GCC\s0 uses this name to determine what kind of instructions it can emit when generating assembly code. This option can be used in conjunction with or instead ! of the \fB\-mcpu=\fR option. Permissible names are: \fBarmv2\fR, ! \&\fBarmv2a\fR, \fBarmv3\fR, \fBarmv3m\fR, \fBarmv4\fR, \fBarmv4t\fR, ! \&\fBarmv5\fR, \fBarmv5t\fR, \fBarmv5te\fR. .Ip "\fB\-mfpe=\fR\fInumber\fR" 4 .IX Item "-mfpe=number" .PD 0 *************** the compiler generates code to handle fu *** 4789,4795 **** pointers. .Ip "\fB\-mnop-fun-dllimport\fR" 4 .IX Item "-mnop-fun-dllimport" ! Disable support for the \fIdllimport\fR attribute. .Ip "\fB\-msingle-pic-base\fR" 4 .IX Item "-msingle-pic-base" Treat the register used for \s-1PIC\s0 addressing as read-only, rather than --- 4802,4808 ---- pointers. .Ip "\fB\-mnop-fun-dllimport\fR" 4 .IX Item "-mnop-fun-dllimport" ! Disable support for the \f(CW\*(C`dllimport\*(C'\fR attribute. .Ip "\fB\-msingle-pic-base\fR" 4 .IX Item "-msingle-pic-base" Treat the register used for \s-1PIC\s0 addressing as read-only, rather than *************** references. In particular, a load instr *** 5040,5051 **** a preceding store instruction. Such reordering violates sequential consistency of volatile memory references, when there are multiple processors. When consistency must be guaranteed, ! \&\s-1GNU\s0 C generates special instructions, as needed, to force execution in the proper order. .Sp The \s-1MC88100\s0 processor does not reorder memory references and so ! always provides sequential consistency. However, by default, \s-1GNU\s0 ! C generates the special instructions to guarantee consistency even when you use \fB\-m88100\fR, so that the code may be run on an \&\s-1MC88110\s0 processor. If you intend to run your code only on the \&\s-1MC88100\s0 processor, you may use \fB\-mno-serialize-volatile\fR. --- 5053,5064 ---- a preceding store instruction. Such reordering violates sequential consistency of volatile memory references, when there are multiple processors. When consistency must be guaranteed, ! \&\s-1GCC\s0 generates special instructions, as needed, to force execution in the proper order. .Sp The \s-1MC88100\s0 processor does not reorder memory references and so ! always provides sequential consistency. However, by default, \s-1GCC\s0 ! generates the special instructions to guarantee consistency even when you use \fB\-m88100\fR, so that the code may be run on an \&\s-1MC88110\s0 processor. If you intend to run your code only on the \&\s-1MC88100\s0 processor, you may use \fB\-mno-serialize-volatile\fR. *************** SVr4. *** 5074,5080 **** .RS 4 .Sp \&\fB\-msvr4\fR is the default for the m88k-motorola-sysv4 and ! m88k-dg-dgux m88k configurations. \fB\-msvr3\fR is the default for all other m88k configurations. .RE .Ip "\fB\-mversion-03.00\fR" 4 --- 5087,5093 ---- .RS 4 .Sp \&\fB\-msvr4\fR is the default for the m88k-motorola-sysv4 and ! m88k-dg-dgux m88k configurations. \fB\-msvr3\fR is the default for all other m88k configurations. .RE .Ip "\fB\-mversion-03.00\fR" 4 *************** zero will be detected. By default, dete *** 5091,5103 **** .Sp Some models of the \s-1MC88100\s0 processor fail to trap upon integer division by zero under certain conditions. By default, when ! compiling code that might be run on such a processor, \s-1GNU\s0 C generates code that explicitly checks for zero-valued divisors and traps with exception number 503 when one is detected. Use of mno-check-zero-division suppresses such checking for code generated to run on an \s-1MC88100\s0 processor. .Sp ! \&\s-1GNU\s0 C assumes that the \s-1MC88110\s0 processor correctly detects all instances of integer division by zero. When \fB\-m88110\fR is specified, both \fB\-mcheck-zero-division\fR and \&\fB\-mno-check-zero-division\fR are ignored, and no explicit checks for --- 5104,5116 ---- .Sp Some models of the \s-1MC88100\s0 processor fail to trap upon integer division by zero under certain conditions. By default, when ! compiling code that might be run on such a processor, \s-1GCC\s0 generates code that explicitly checks for zero-valued divisors and traps with exception number 503 when one is detected. Use of mno-check-zero-division suppresses such checking for code generated to run on an \s-1MC88100\s0 processor. .Sp ! \&\s-1GCC\s0 assumes that the \s-1MC88110\s0 processor correctly detects all instances of integer division by zero. When \fB\-m88110\fR is specified, both \fB\-mcheck-zero-division\fR and \&\fB\-mno-check-zero-division\fR are ignored, and no explicit checks for *************** On the \s-1MC88100\s0 processor the sign *** 5111,5117 **** div) traps to the operating system on a negative operand. The operating system transparently completes the operation, but at a large cost in execution time. By default, when compiling code ! that might be run on an \s-1MC88100\s0 processor, \s-1GNU\s0 C emulates signed integer division using the unsigned integer division instruction divu), thereby avoiding the large penalty of a trap to the operating system. Such emulation has its own, smaller, execution --- 5124,5130 ---- div) traps to the operating system on a negative operand. The operating system transparently completes the operation, but at a large cost in execution time. By default, when compiling code ! that might be run on an \s-1MC88100\s0 processor, \s-1GCC\s0 emulates signed integer division using the unsigned integer division instruction divu), thereby avoiding the large penalty of a trap to the operating system. Such emulation has its own, smaller, execution *************** these options, specify \fB\-mminimal-toc *** 5326,5332 **** \&\s-1GCC\s0 to make only one \s-1TOC\s0 entry for every file. When you specify this option, \s-1GCC\s0 will produce code that is slower and larger but which uses extremely little \s-1TOC\s0 space. You may wish to use this option ! only on files that contain less frequently executed code. .Ip "\fB\-maix64\fR" 4 .IX Item "-maix64" .PD 0 --- 5339,5345 ---- \&\s-1GCC\s0 to make only one \s-1TOC\s0 entry for every file. When you specify this option, \s-1GCC\s0 will produce code that is slower and larger but which uses extremely little \s-1TOC\s0 space. You may wish to use this option ! only on files that contain less frequently executed code. .Ip "\fB\-maix64\fR" 4 .IX Item "-maix64" .PD 0 *************** the default if the configure option \fB\ *** 5797,5803 **** .IX Item "-mno-split-addresses" .PD Generate code to load the high and low parts of address constants separately. ! This allows \f(CW\*(C`gcc\*(C'\fR to optimize away redundant loads of the high order bits of addresses. This optimization requires \s-1GNU\s0 as and \s-1GNU\s0 ld. This optimization is enabled by default for some embedded targets where \&\s-1GNU\s0 as and \s-1GNU\s0 ld are standard. --- 5810,5816 ---- .IX Item "-mno-split-addresses" .PD Generate code to load the high and low parts of address constants separately. ! This allows \s-1GCC\s0 to optimize away redundant loads of the high order bits of addresses. This optimization requires \s-1GNU\s0 as and \s-1GNU\s0 ld. This optimization is enabled by default for some embedded targets where \&\s-1GNU\s0 as and \s-1GNU\s0 ld are standard. *************** in ordinary \s-1CPU\s0 registers instead *** 6063,6069 **** .IX Item "-mno-fancy-math-387" Some 387 emulators do not support the \f(CW\*(C`sin\*(C'\fR, \f(CW\*(C`cos\*(C'\fR and \&\f(CW\*(C`sqrt\*(C'\fR instructions for the 387. Specify this option to avoid ! generating those instructions. This option is the default on FreeBSD. As of revision 2.6.1, these instructions are not generated unless you also use the \fB\-ffast-math\fR switch. .Ip "\fB\-malign-double\fR" 4 --- 6076,6082 ---- .IX Item "-mno-fancy-math-387" Some 387 emulators do not support the \f(CW\*(C`sin\*(C'\fR, \f(CW\*(C`cos\*(C'\fR and \&\f(CW\*(C`sqrt\*(C'\fR instructions for the 387. Specify this option to avoid ! generating those instructions. This option is the default on FreeBSD. As of revision 2.6.1, these instructions are not generated unless you also use the \fB\-ffast-math\fR switch. .Ip "\fB\-malign-double\fR" 4 *************** may want to reduce the preferred alignme *** 6210,6242 **** \&\fB\-mpreferred-stack-boundary=2\fR. .Ip "\fB\-mpush-args\fR" 4 .IX Item "-mpush-args" ! Use \s-1PUSH\s0 operations to store outgoing parameters. This method is shorter and usually equally fast as method using \s-1SUB/MOV\s0 operations and is enabled ! by default. In some cases disabling it may improve performance because of improved scheduling and reduced dependencies. .Ip "\fB\-maccumulate-outgoing-args\fR" 4 .IX Item "-maccumulate-outgoing-args" If enabled, the maximum amount of space required for outgoing arguments will be ! computed in the function prologue. This in faster on most modern CPUs because of reduced dependencies, improved scheduling and reduced stack usage when preferred stack boundary is not equal to 2. The drawback is a notable ! increase in code size. This switch implies \fB\-mno-push-args\fR. .Ip "\fB\-mthreads\fR" 4 .IX Item "-mthreads" ! Support thread-safe exception handling on \fBMingw32\fR. Code that relies on thread-safe exception handling must compile and link all code with the ! \&\fB\-mthreads\fR option. When compiling, \fB\-mthreads\fR defines \&\fB\-D_MT\fR; when linking, it links in a special thread helper library \&\fB\-lmingwthrd\fR which cleans up per thread exception handling data. .Ip "\fB\-mno-align-stringops\fR" 4 .IX Item "-mno-align-stringops" ! Do not align destination of inlined string operations. This switch reduces code size and improves performance in case the destination is already aligned, but gcc don't know about it. .Ip "\fB\-minline-all-stringops\fR" 4 .IX Item "-minline-all-stringops" By default \s-1GCC\s0 inlines string operations only when destination is known to be ! aligned at least to 4 byte boundary. This enables more inlining, increase code size, but may improve performance of code that depends on fast memcpy, strlen and memset for short lengths. .Ip "\fB\-momit-leaf-frame-pointer\fR" 4 --- 6223,6255 ---- \&\fB\-mpreferred-stack-boundary=2\fR. .Ip "\fB\-mpush-args\fR" 4 .IX Item "-mpush-args" ! Use \s-1PUSH\s0 operations to store outgoing parameters. This method is shorter and usually equally fast as method using \s-1SUB/MOV\s0 operations and is enabled ! by default. In some cases disabling it may improve performance because of improved scheduling and reduced dependencies. .Ip "\fB\-maccumulate-outgoing-args\fR" 4 .IX Item "-maccumulate-outgoing-args" If enabled, the maximum amount of space required for outgoing arguments will be ! computed in the function prologue. This in faster on most modern CPUs because of reduced dependencies, improved scheduling and reduced stack usage when preferred stack boundary is not equal to 2. The drawback is a notable ! increase in code size. This switch implies \fB\-mno-push-args\fR. .Ip "\fB\-mthreads\fR" 4 .IX Item "-mthreads" ! Support thread-safe exception handling on \fBMingw32\fR. Code that relies on thread-safe exception handling must compile and link all code with the ! \&\fB\-mthreads\fR option. When compiling, \fB\-mthreads\fR defines \&\fB\-D_MT\fR; when linking, it links in a special thread helper library \&\fB\-lmingwthrd\fR which cleans up per thread exception handling data. .Ip "\fB\-mno-align-stringops\fR" 4 .IX Item "-mno-align-stringops" ! Do not align destination of inlined string operations. This switch reduces code size and improves performance in case the destination is already aligned, but gcc don't know about it. .Ip "\fB\-minline-all-stringops\fR" 4 .IX Item "-minline-all-stringops" By default \s-1GCC\s0 inlines string operations only when destination is known to be ! aligned at least to 4 byte boundary. This enables more inlining, increase code size, but may improve performance of code that depends on fast memcpy, strlen and memset for short lengths. .Ip "\fB\-momit-leaf-frame-pointer\fR" 4 *************** Note that L3 is only valid for \s-1EV5\s *** 6728,6734 **** These \fB\-m\fR options are defined for the Clipper implementations: .Ip "\fB\-mc300\fR" 4 .IX Item "-mc300" ! Produce code for a C300 Clipper processor. This is the default. .Ip "\fB\-mc400\fR" 4 .IX Item "-mc400" Produce code for a C400 Clipper processor i.e. use floating point --- 6741,6747 ---- These \fB\-m\fR options are defined for the Clipper implementations: .Ip "\fB\-mc300\fR" 4 .IX Item "-mc300" ! Produce code for a C300 Clipper processor. This is the default. .Ip "\fB\-mc400\fR" 4 .IX Item "-mc400" Produce code for a C400 Clipper processor i.e. use floating point *************** This is the default for all systems. *** 7162,7192 **** .Ip "\fB\-m32381\fR" 4 .IX Item "-m32381" Generate output containing 32381 instructions for floating point. This ! also implies \fB\-m32081\fR. The 32381 is only compatible with the 32332 ! and 32532 cpus. This is the default for the pc532\-netbsd configuration. .Ip "\fB\-mmulti-add\fR" 4 .IX Item "-mmulti-add" Try and generate multiply-add floating point instructions \f(CW\*(C`polyF\*(C'\fR ! and \f(CW\*(C`dotF\*(C'\fR. This option is only available if the \fB\-m32381\fR ! option is in effect. Using these instructions requires changes to to register allocation which generally has a negative impact on performance. This option should only be enabled when compiling code particularly likely to make heavy use of multiply-add instructions. .Ip "\fB\-mnomulti-add\fR" 4 .IX Item "-mnomulti-add" Do not try and generate multiply-add floating point instructions ! \&\f(CW\*(C`polyF\*(C'\fR and \f(CW\*(C`dotF\*(C'\fR. This is the default on all platforms. .Ip "\fB\-msoft-float\fR" 4 .IX Item "-msoft-float" Generate output containing library calls for floating point. \&\fBWarning:\fR the requisite libraries may not be available. .Ip "\fB\-mnobitfield\fR" 4 .IX Item "-mnobitfield" ! Do not use the bit-field instructions. On some machines it is faster to ! use shifting and masking operations. This is the default for the pc532. .Ip "\fB\-mbitfield\fR" 4 .IX Item "-mbitfield" ! Do use the bit-field instructions. This is the default for all platforms except the pc532. .Ip "\fB\-mrtd\fR" 4 .IX Item "-mrtd" --- 7175,7205 ---- .Ip "\fB\-m32381\fR" 4 .IX Item "-m32381" Generate output containing 32381 instructions for floating point. This ! also implies \fB\-m32081\fR. The 32381 is only compatible with the 32332 ! and 32532 cpus. This is the default for the pc532\-netbsd configuration. .Ip "\fB\-mmulti-add\fR" 4 .IX Item "-mmulti-add" Try and generate multiply-add floating point instructions \f(CW\*(C`polyF\*(C'\fR ! and \f(CW\*(C`dotF\*(C'\fR. This option is only available if the \fB\-m32381\fR ! option is in effect. Using these instructions requires changes to to register allocation which generally has a negative impact on performance. This option should only be enabled when compiling code particularly likely to make heavy use of multiply-add instructions. .Ip "\fB\-mnomulti-add\fR" 4 .IX Item "-mnomulti-add" Do not try and generate multiply-add floating point instructions ! \&\f(CW\*(C`polyF\*(C'\fR and \f(CW\*(C`dotF\*(C'\fR. This is the default on all platforms. .Ip "\fB\-msoft-float\fR" 4 .IX Item "-msoft-float" Generate output containing library calls for floating point. \&\fBWarning:\fR the requisite libraries may not be available. .Ip "\fB\-mnobitfield\fR" 4 .IX Item "-mnobitfield" ! Do not use the bit-field instructions. On some machines it is faster to ! use shifting and masking operations. This is the default for the pc532. .Ip "\fB\-mbitfield\fR" 4 .IX Item "-mbitfield" ! Do use the bit-field instructions. This is the default for all platforms except the pc532. .Ip "\fB\-mrtd\fR" 4 .IX Item "-mrtd" *************** used on Unix, so you cannot use it if yo *** 7218,7234 **** compiled with the Unix compiler. .Ip "\fB\-mnoregparam\fR" 4 .IX Item "-mnoregparam" ! Do not pass any arguments in registers. This is the default for all targets. .Ip "\fB\-msb\fR" 4 .IX Item "-msb" It is \s-1OK\s0 to use the sb as an index register which is always loaded with ! zero. This is the default for the pc532\-netbsd target. .Ip "\fB\-mnosb\fR" 4 .IX Item "-mnosb" The sb register is not available for use or has not been initialized to ! zero by the run time system. This is the default for all targets except ! the pc532\-netbsd. It is also implied whenever \fB\-mhimem\fR or \&\fB\-fpic\fR is set. .Ip "\fB\-mhimem\fR" 4 .IX Item "-mhimem" --- 7231,7247 ---- compiled with the Unix compiler. .Ip "\fB\-mnoregparam\fR" 4 .IX Item "-mnoregparam" ! Do not pass any arguments in registers. This is the default for all targets. .Ip "\fB\-msb\fR" 4 .IX Item "-msb" It is \s-1OK\s0 to use the sb as an index register which is always loaded with ! zero. This is the default for the pc532\-netbsd target. .Ip "\fB\-mnosb\fR" 4 .IX Item "-mnosb" The sb register is not available for use or has not been initialized to ! zero by the run time system. This is the default for all targets except ! the pc532\-netbsd. It is also implied whenever \fB\-mhimem\fR or \&\fB\-fpic\fR is set. .Ip "\fB\-mhimem\fR" 4 .IX Item "-mhimem" *************** Output instruction sizes to the asm file *** 7272,7278 **** .Ip "\fB\-minit-stack=\fR\fIN\fR" 4 .IX Item "-minit-stack=N" Specify the initial stack address, which may be a symbol or numeric value, ! _\|_stack is the default. .Ip "\fB\-mno-interrupts\fR" 4 .IX Item "-mno-interrupts" Generated code is not compatible with hardware interrupts. --- 7285,7291 ---- .Ip "\fB\-minit-stack=\fR\fIN\fR" 4 .IX Item "-minit-stack=N" Specify the initial stack address, which may be a symbol or numeric value, ! \&\fB_\|_stack\fR is the default. .Ip "\fB\-mno-interrupts\fR" 4 .IX Item "-mno-interrupts" Generated code is not compatible with hardware interrupts. *************** Code size will be smaller. *** 7280,7286 **** .Ip "\fB\-mcall-prologues\fR" 4 .IX Item "-mcall-prologues" Functions prologues/epilogues expanded as call to appropriate ! subroutines. Code size will be smaller. .Ip "\fB\-mno-tablejump\fR" 4 .IX Item "-mno-tablejump" Do not generate tablejump insns which sometimes increase code size. --- 7293,7299 ---- .Ip "\fB\-mcall-prologues\fR" 4 .IX Item "-mcall-prologues" Functions prologues/epilogues expanded as call to appropriate ! subroutines. Code size will be smaller. .Ip "\fB\-mno-tablejump\fR" 4 .IX Item "-mno-tablejump" Do not generate tablejump insns which sometimes increase code size. *************** can figure out the other form by either *** 7510,7520 **** it. .Ip "\fB\-fexceptions\fR" 4 .IX Item "-fexceptions" ! Enable exception handling. Generates extra code needed to propagate ! exceptions. For some targets, this implies \s-1GNU\s0 \s-1CC\s0 will generate frame unwind information for all functions, which can produce significant data size overhead, although it does not affect execution. If you do not ! specify this option, \s-1GNU\s0 \s-1CC\s0 will enable it by default for languages like \&\*(C+ which normally require exception handling, and disable it for languages like C that do not normally require it. However, you may need to enable this option when compiling C code that needs to interoperate --- 7523,7533 ---- it. .Ip "\fB\-fexceptions\fR" 4 .IX Item "-fexceptions" ! Enable exception handling. Generates extra code needed to propagate ! exceptions. For some targets, this implies \s-1GCC\s0 will generate frame unwind information for all functions, which can produce significant data size overhead, although it does not affect execution. If you do not ! specify this option, \s-1GCC\s0 will enable it by default for languages like \&\*(C+ which normally require exception handling, and disable it for languages like C that do not normally require it. However, you may need to enable this option when compiling C code that needs to interoperate *************** stubs for every function you call, you m *** 7720,7732 **** \&\fB\-fcheck-memory-usage\fR without \fB\-fprefix-function-name\fR. .Sp If you specify this option, you can not use the \f(CW\*(C`asm\*(C'\fR or ! \&\f(CW\*(C`_\|_asm_\|_\*(C'\fR keywords in functions with memory checking enabled. \s-1GNU\s0 ! \&\s-1CC\s0 cannot understand what the \f(CW\*(C`asm\*(C'\fR statement may do, and therefore cannot generate the appropriate code, so it will reject it. However, if ! you specify the function attribute \f(CW\*(C`no_check_memory_usage\*(C'\fR, \s-1GNU\s0 \s-1CC\s0 will disable memory checking within a function; you may use \f(CW\*(C`asm\*(C'\fR statements inside such functions. You may have an inline expansion of a non-checked function within a checked ! function; in that case \s-1GNU\s0 \s-1CC\s0 will not generate checks for the inlined function's memory accesses. .Sp If you move your \f(CW\*(C`asm\*(C'\fR statements to non-checked inline functions --- 7733,7745 ---- \&\fB\-fcheck-memory-usage\fR without \fB\-fprefix-function-name\fR. .Sp If you specify this option, you can not use the \f(CW\*(C`asm\*(C'\fR or ! \&\f(CW\*(C`_\|_asm_\|_\*(C'\fR keywords in functions with memory checking enabled. \s-1GCC\s0 ! cannot understand what the \f(CW\*(C`asm\*(C'\fR statement may do, and therefore cannot generate the appropriate code, so it will reject it. However, if ! you specify the function attribute \f(CW\*(C`no_check_memory_usage\*(C'\fR, \s-1GCC\s0 will disable memory checking within a function; you may use \f(CW\*(C`asm\*(C'\fR statements inside such functions. You may have an inline expansion of a non-checked function within a checked ! function; in that case \s-1GCC\s0 will not generate checks for the inlined function's memory accesses. .Sp If you move your \f(CW\*(C`asm\*(C'\fR statements to non-checked inline functions *************** option, and that not all targets provide *** 7859,7865 **** .IX Header "ENVIRONMENT" This section describes several environment variables that affect how \s-1GCC\s0 operates. Some of them work by specifying directories or prefixes to use ! when searching for various kinds of files. Some are used to specify other aspects of the compilation environment. .PP Note that you can also specify places to search using options such as --- 7872,7878 ---- .IX Header "ENVIRONMENT" This section describes several environment variables that affect how \s-1GCC\s0 operates. Some of them work by specifying directories or prefixes to use ! when searching for various kinds of files. Some are used to specify other aspects of the compilation environment. .PP Note that you can also specify places to search using options such as *************** names of the subprograms executed by the *** 7912,7918 **** when this prefix is combined with the name of a subprogram, but you can specify a prefix that ends with a slash if you wish. .Sp ! If \fB\s-1GCC_EXEC_PREFIX\s0\fR is not set, \s-1GNU\s0 \s-1CC\s0 will attempt to figure out an appropriate prefix to use based on the pathname it was invoked with. .Sp If \s-1GCC\s0 cannot find the subprogram using the specified prefix, it --- 7925,7931 ---- when this prefix is combined with the name of a subprogram, but you can specify a prefix that ends with a slash if you wish. .Sp ! If \fB\s-1GCC_EXEC_PREFIX\s0\fR is not set, \s-1GCC\s0 will attempt to figure out an appropriate prefix to use based on the pathname it was invoked with. .Sp If \s-1GCC\s0 cannot find the subprogram using the specified prefix, it *************** name from the source file name. Or the *** 7979,7985 **** file \fIfile\fR using \fItarget\fR as the target name. .Ip "\fB\s-1LANG\s0\fR" 4 .IX Item "LANG" ! This variable is used to pass locale information to the compiler. One way in which this information is used is to determine the character set to be used when character literals, string literals and comments are parsed in C and \*(C+. When the compiler is configured to allow multibyte characters, --- 7992,7998 ---- file \fIfile\fR using \fItarget\fR as the target name. .Ip "\fB\s-1LANG\s0\fR" 4 .IX Item "LANG" ! This variable is used to pass locale information to the compiler. One way in which this information is used is to determine the character set to be used when character literals, string literals and comments are parsed in C and \*(C+. When the compiler is configured to allow multibyte characters, *************** script to report bugs is recommended. *** 8010,8019 **** .IX Header "FOOTNOTES" .Ip "1." 4 On some systems, \fBgcc \-shared\fR ! needs to build supplementary stub code for constructors to work. On multi-libbed systems, \fBgcc \-shared\fR must select the correct support libraries to link against. Failing to supply the correct flags may lead ! to subtle defects. Supplying them in cases where they are not necessary is innocuous. .SH "SEE ALSO" .IX Header "SEE ALSO" --- 8023,8032 ---- .IX Header "FOOTNOTES" .Ip "1." 4 On some systems, \fBgcc \-shared\fR ! needs to build supplementary stub code for constructors to work. On multi-libbed systems, \fBgcc \-shared\fR must select the correct support libraries to link against. Failing to supply the correct flags may lead ! to subtle defects. Supplying them in cases where they are not necessary is innocuous. .SH "SEE ALSO" .IX Header "SEE ALSO" diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info gcc-3.0.1/gcc/doc/gcc.info *** gcc-3.0/gcc/doc/gcc.info Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info Sun Aug 19 18:05:18 2001 *************** funds for GNU development. *** 38,390 ****  Indirect: gcc.info-1: 1239 ! gcc.info-2: 41905 ! gcc.info-3: 72956 ! gcc.info-4: 105014 ! gcc.info-5: 150633 ! gcc.info-6: 195927 ! gcc.info-7: 243392 ! gcc.info-8: 292425 ! gcc.info-9: 325692 ! gcc.info-10: 374169 ! gcc.info-11: 423358 ! gcc.info-12: 472955 ! gcc.info-13: 522045 ! gcc.info-14: 570043 ! gcc.info-15: 615916 ! gcc.info-16: 659315 ! gcc.info-17: 701625 ! gcc.info-18: 750195 ! gcc.info-19: 783461 ! gcc.info-20: 829431 ! gcc.info-21: 872729 ! gcc.info-22: 922612 ! gcc.info-23: 972590 ! gcc.info-24: 985648 ! gcc.info-25: 1030128 ! gcc.info-26: 1074542 ! gcc.info-27: 1107667 ! gcc.info-28: 1154622 ! gcc.info-29: 1201672 ! gcc.info-30: 1251337 ! gcc.info-31: 1294947 ! gcc.info-32: 1341223 ! gcc.info-33: 1390341 ! gcc.info-34: 1425012 ! gcc.info-35: 1473261 ! gcc.info-36: 1517672 ! gcc.info-37: 1534544 ! gcc.info-38: 1594032  Tag Table: (Indirect) Node: Top1239 ! Node: G++ and GCC3362 ! Node: Standards5770 ! Node: Invoking GCC12226 ! Node: Option Summary15871 ! Node: Overall Options34339 ! Node: Invoking G++40459 ! Node: C Dialect Options41905 ! Node: C++ Dialect Options56063 ! Node: Objective-C Dialect Options69545 ! Node: Language Independent Options71168 ! Node: Warning Options72956 ! Node: Debugging Options105014 ! Node: Optimize Options126719 ! Node: Preprocessor Options150633 ! Node: Assembler Options160860 ! Node: Link Options161227 ! Ref: Link Options-Footnote-1168479 ! Node: Directory Options168813 ! Node: Spec Files172818 ! Node: Target Options190319 ! Node: Submodel Options194306 ! Node: M680x0 Options195927 ! Node: M68hc1x Options201933 ! Node: VAX Options203113 ! Node: SPARC Options203649 ! Node: Convex Options213532 ! Node: AMD29K Options215713 ! Node: ARM Options219109 ! Node: MN10200 Options231531 ! Node: MN10300 Options232053 ! Node: M32R/D Options233104 ! Node: M88K Options235453 ! Node: RS/6000 and PowerPC Options243392 ! Node: RT Options262824 ! Node: MIPS Options264527 ! Node: i386 Options274714 ! Node: HPPA Options285418 ! Node: Intel 960 Options289483 ! Node: DEC Alpha Options292425 ! Node: Clipper Options301819 ! Node: H8/300 Options302218 ! Node: SH Options303147 ! Node: System V Options305463 ! Node: TMS320C3x/C4x Options306281 ! Node: V850 Options311793 ! Node: ARC Options313802 ! Node: NS32K Options315003 ! Node: AVR Options319243 ! Node: MCore Options320951 ! Node: IA-64 Options322095 ! Node: D30V Options324483 ! Node: Code Gen Options325692 ! Node: Environment Variables342535 ! Node: Running Protoize348875 ! Node: Installation355234 ! Node: Configuration Files362388 ! Node: Configurations363992 ! Node: Cross-Compiler368216 ! Node: Steps of Cross369975 ! Node: Configure Cross371093 ! Node: Tools and Libraries371730 ! Node: Cross Headers374169 ! Node: Build Cross376166 ! Node: VMS Install377672 ! Node: Collect2387605 ! Node: Header Dirs390170 ! Node: C Extensions391593 ! Node: Statement Exprs395421 ! Node: Local Labels398513 ! Node: Labels as Values400578 ! Ref: Labels as Values-Footnote-1402637 ! Node: Nested Functions402822 ! Node: Constructing Calls406664 ! Node: Naming Types408751 ! Node: Typeof409845 ! Node: Lvalues411721 ! Node: Conditionals414161 ! Node: Long Long415052 ! Node: Complex416554 ! Node: Hex Floats419228 ! Node: Zero Length420257 ! Node: Variable Length423358 ! Node: Variadic Macros426120 ! Node: Escaped Newlines428510 ! Node: Multi-line Strings429393 ! Node: Subscripting429997 ! Node: Pointer Arith430630 ! Node: Initializers431195 ! Node: Compound Literals431678 ! Node: Designated Inits433717 ! Node: Case Ranges437391 ! Node: Cast to Union438071 ! Node: Mixed Declarations439154 ! Node: Function Attributes439649 ! Node: Attribute Syntax461008 ! Node: Function Prototypes469819 ! Node: C++ Comments471615 ! Node: Dollar Signs472210 ! Node: Character Escapes472668 ! Node: Alignment472955 ! Node: Variable Attributes474494 ! Node: Type Attributes484143 ! Node: Inline493439 ! Node: Extended Asm498187 ! Node: Asm Labels514346 ! Node: Explicit Reg Vars516026 ! Node: Global Reg Vars517480 ! Node: Local Reg Vars522045 ! Node: Alternate Keywords523848 ! Node: Incomplete Enums525535 ! Node: Function Names526291 ! Node: Return Address528619 ! Node: Other Builtins530762 ! Node: C++ Extensions536214 ! Node: Min and Max537775 ! Node: Volatiles539181 ! Node: Restricted Pointers542534 ! Node: Vague Linkage544101 ! Node: C++ Interface547759 ! Ref: C++ Interface-Footnote-1552847 ! Node: Template Instantiation552986 ! Node: Bound member functions561816 ! Node: C++ Attributes563366 ! Node: Java Exceptions564970 ! Node: Deprecated Features566375 ! Node: Backwards Compatibility568132 ! Node: Objective C569474 ! Node: Executing code before main570043 ! Node: What you can and what you cannot do in +load572676 ! Node: Type encoding574836 ! Node: Garbage Collection578081 ! Node: Constant string objects580734 ! Node: compatibility_alias582363 ! Node: Gcov583242 ! Node: Gcov Intro583762 ! Node: Invoking Gcov586443 ! Node: Gcov and Optimization592184 ! Node: Gcov Data Files593608 ! Node: Trouble597179 ! Node: Actual Bugs598777 ! Node: Cross-Compiler Problems599685 ! Node: Interoperation601146 ! Node: External Bugs614424 ! Node: Incompatibilities615916 ! Node: Fixed Headers625536 ! Node: Standard Libraries627845 ! Node: Disappointments629215 ! Node: C++ Misunderstandings633753 ! Node: Static Definitions634479 ! Node: Temporaries635526 ! Node: Copy Assignment637503 ! Node: Protoize Caveats639314 ! Node: Non-bugs643269 ! Node: Warnings and Errors653161 ! Node: Bugs654921 ! Node: Bug Criteria656332 ! Node: Bug Lists658756 ! Node: Bug Reporting659315 ! Node: gccbug671401 ! Node: Sending Patches672240 ! Node: Service677608 ! Node: Contributing678354 ! Node: VMS679059 ! Node: Include Files and VMS679442 ! Node: Global Declarations683307 ! Node: VMS Misc687611 ! Node: Makefile691918 ! Node: Portability695291 ! Node: Interface697045 ! Node: Passes701625 ! Node: Trees724102 ! Node: Deficiencies726785 ! Node: Tree overview727015 ! Node: Macros and Functions731151 ! Node: Identifiers731285 ! Node: Containers732801 ! Node: Types733945 ! Node: Scopes745721 ! Node: Namespaces746477 ! Node: Classes750195 ! Node: Declarations754837 ! Node: Functions760896 ! Node: Function Basics763426 ! Node: Function Bodies770173 ! Node: Expression trees783461 ! Node: RTL805923 ! Node: RTL Objects807954 ! Node: RTL Classes810987 ! Node: Accessors815492 ! Node: Flags817872 ! Node: Machine Modes829431 ! Node: Constants837215 ! Node: Regs and Memory842400 ! Node: Arithmetic855038 ! Node: Comparisons861299 ! Node: Bit-Fields865421 ! Node: Vector Operations866839 ! Node: Conversions868613 ! Node: RTL Declarations871920 ! Node: Side Effects872729 ! Node: Incdec887582 ! Node: Assembler891083 ! Node: Insns892605 ! Node: Calls917053 ! Node: Sharing919647 ! Node: Reading RTL922612 ! Node: Machine Desc923565 ! Node: Overview925769 ! Node: Patterns927804 ! Node: Example931040 ! Node: RTL Template932168 ! Node: Output Template944636 ! Node: Output Statement948618 ! Node: Constraints952330 ! Node: Simple Constraints953261 ! Node: Multi-Alternative965217 ! Node: Class Preferences968052 ! Node: Modifiers968932 ! Node: Machine Constraints972590 ! Node: Standard Names985648 ! Node: Pattern Ordering1026086 ! Node: Dependent Patterns1027313 ! Node: Jump Patterns1030128 ! Node: Looping Patterns1035883 ! Node: Insn Canonicalizations1040480 ! Node: Expander Definitions1043978 ! Node: Insn Splitting1052116 ! Node: Peephole Definitions1060768 ! Node: define_peephole1062011 ! Node: define_peephole21068386 ! Node: Insn Attributes1071447 ! Node: Defining Attributes1072530 ! Node: Expressions1074542 ! Node: Tagging Insns1081133 ! Node: Attr Example1085495 ! Node: Insn Lengths1087871 ! Node: Constant Attributes1091164 ! Node: Delay Slots1092324 ! Node: Function Units1095535 ! Node: Conditional Execution1101205 ! Node: Constant Definitions1104061 ! Node: Target Macros1105639 ! Node: Driver1107667 ! Node: Run-time Target1126103 ! Node: Per-Function Data1133134 ! Node: Storage Layout1136385 ! Node: Type Layout1154622 ! Node: Registers1164293 ! Node: Register Basics1165208 ! Node: Allocation Order1170409 ! Node: Values in Registers1171822 ! Node: Leaf Functions1176939 ! Node: Stack Registers1179704 ! Node: Register Classes1180501 ! Node: Stack and Calling1201187 ! Node: Frame Layout1201672 ! Node: Stack Checking1211440 ! Node: Frame Registers1214972 ! Node: Elimination1219386 ! Node: Stack Arguments1223642 ! Node: Register Arguments1230607 ! Node: Scalar Return1241848 ! Node: Aggregate Return1246086 ! Node: Caller Saves1249800 ! Node: Function Entry1251337 ! Node: Profiling1262244 ! Node: Inlining1270514 ! Node: Tail Calling1271067 ! Node: Varargs1271656 ! Node: Trampolines1279322 ! Node: Library Calls1286525 ! Node: Addressing Modes1294947 ! Node: Condition Code1306222 ! Node: Costs1313079 ! Node: Sections1325999 ! Node: PIC1333312 ! Node: Assembler Format1336021 ! Node: File Framework1337087 ! Node: Data Output1341223 ! Node: Uninitialized Data1348998 ! Node: Label Output1354397 ! Node: Initialization1367492 ! Node: Macros for Initialization1373632 ! Node: Instruction Output1378889 ! Node: Dispatch Tables1387788 ! Node: Exception Region Output1390341 ! Node: Alignment Output1393825 ! Node: Debugging Info1397366 ! Node: All Debuggers1397975 ! Node: DBX Options1400784 ! Node: DBX Hooks1406169 ! Node: File Names and DBX1409815 ! Node: SDB and DWARF1411788 ! Node: Cross-compilation1415197 ! Node: Mode Switching1421773 ! Node: Misc1425012 ! Node: Config1456970 ! Node: Fragments1464652 ! Node: Target Fragment1465247 ! Node: Host Fragment1470160 ! Node: Funding1470762 ! Node: GNU/Linux1473261 ! Node: Copying1478576 ! Node: GNU Free Documentation License1497787 ! Node: Contributors1517672 ! Node: Option Index1534544 ! Node: Index1594032  End Tag Table --- 38,392 ----  Indirect: gcc.info-1: 1239 ! gcc.info-2: 42119 ! gcc.info-3: 72711 ! gcc.info-4: 104892 ! gcc.info-5: 151185 ! gcc.info-6: 196528 ! gcc.info-7: 244085 ! gcc.info-8: 293130 ! gcc.info-9: 328359 ! gcc.info-10: 376749 ! gcc.info-11: 425179 ! gcc.info-12: 473554 ! gcc.info-13: 522836 ! gcc.info-14: 572322 ! gcc.info-15: 615541 ! gcc.info-16: 658935 ! gcc.info-17: 704531 ! gcc.info-18: 753534 ! gcc.info-19: 788268 ! gcc.info-20: 834234 ! gcc.info-21: 877530 ! gcc.info-22: 927462 ! gcc.info-23: 977431 ! gcc.info-24: 991062 ! gcc.info-25: 1035536 ! gcc.info-26: 1079932 ! gcc.info-27: 1113057 ! gcc.info-28: 1160438 ! gcc.info-29: 1207663 ! gcc.info-30: 1257340 ! gcc.info-31: 1300944 ! gcc.info-32: 1347226 ! gcc.info-33: 1396417 ! gcc.info-34: 1431110 ! gcc.info-35: 1479373 ! gcc.info-36: 1523784 ! gcc.info-37: 1540656 ! gcc.info-38: 1600898  Tag Table: (Indirect) Node: Top1239 ! Node: G++ and GCC3383 ! Node: Standards5794 ! Node: Invoking GCC12244 ! Node: Option Summary15889 ! Node: Overall Options34553 ! Node: Invoking G++40673 ! Node: C Dialect Options42119 ! Node: C++ Dialect Options56342 ! Node: Objective-C Dialect Options69298 ! Node: Language Independent Options70921 ! Node: Warning Options72711 ! Node: Debugging Options104892 ! Node: Optimize Options126602 ! Node: Preprocessor Options151185 ! Node: Assembler Options161422 ! Node: Link Options161789 ! Ref: Link Options-Footnote-1169042 ! Node: Directory Options169378 ! Node: Spec Files173384 ! Node: Target Options190890 ! Node: Submodel Options194877 ! Node: M680x0 Options196528 ! Node: M68hc1x Options202535 ! Node: VAX Options203715 ! Node: SPARC Options204251 ! Node: Convex Options214135 ! Node: AMD29K Options216316 ! Node: ARM Options219712 ! Node: MN10200 Options232233 ! Node: MN10300 Options232755 ! Node: M32R/D Options233806 ! Node: M88K Options236155 ! Node: RS/6000 and PowerPC Options244085 ! Node: RT Options263517 ! Node: MIPS Options265220 ! Node: i386 Options275405 ! Node: HPPA Options286123 ! Node: Intel 960 Options290188 ! Node: DEC Alpha Options293130 ! Node: Clipper Options302524 ! Node: H8/300 Options302924 ! Node: SH Options303853 ! Node: System V Options306169 ! Node: TMS320C3x/C4x Options306987 ! Node: V850 Options312499 ! Node: ARC Options314508 ! Node: NS32K Options315709 ! Node: AVR Options319961 ! Node: MCore Options321672 ! Node: IA-64 Options322816 ! Node: D30V Options325204 ! Node: S/390 and zSeries Options326447 ! Node: Code Gen Options328359 ! Node: Environment Variables345189 ! Node: Running Protoize351527 ! Node: Installation357884 ! Node: Configuration Files361465 ! Node: Configurations363069 ! Node: Cross-Compiler367293 ! Node: Steps of Cross369052 ! Node: Configure Cross370170 ! Node: Tools and Libraries370807 ! Node: Cross Headers373246 ! Node: Build Cross375243 ! Node: VMS Install376749 ! Node: Collect2386682 ! Node: Header Dirs389247 ! Node: C Extensions390670 ! Node: Statement Exprs394492 ! Node: Local Labels397584 ! Node: Labels as Values399649 ! Ref: Labels as Values-Footnote-1401708 ! Node: Nested Functions401893 ! Node: Constructing Calls405732 ! Node: Naming Types407819 ! Node: Typeof408913 ! Node: Lvalues410789 ! Node: Conditionals413229 ! Node: Long Long414120 ! Node: Complex415619 ! Node: Hex Floats418287 ! Node: Zero Length419316 ! Node: Variable Length422417 ! Node: Variadic Macros425179 ! Node: Escaped Newlines427569 ! Node: Multi-line Strings428452 ! Node: Subscripting429056 ! Node: Pointer Arith429689 ! Node: Initializers430254 ! Node: Compound Literals430737 ! Node: Designated Inits432776 ! Node: Case Ranges436450 ! Node: Cast to Union437130 ! Node: Mixed Declarations438213 ! Node: Function Attributes438708 ! Node: Attribute Syntax460068 ! Node: Function Prototypes468879 ! Node: C++ Comments470675 ! Node: Dollar Signs471270 ! Node: Character Escapes471728 ! Node: Alignment472015 ! Node: Variable Attributes473554 ! Node: Type Attributes483187 ! Node: Inline492475 ! Node: Extended Asm497211 ! Node: Asm Labels513340 ! Node: Explicit Reg Vars515017 ! Node: Global Reg Vars516471 ! Node: Local Reg Vars521036 ! Node: Alternate Keywords522836 ! Node: Incomplete Enums524523 ! Node: Function Names525279 ! Node: Return Address527606 ! Node: Other Builtins529749 ! Node: C++ Extensions535820 ! Node: Min and Max537381 ! Node: Volatiles538787 ! Node: Restricted Pointers542157 ! Node: Vague Linkage543727 ! Node: C++ Interface547385 ! Ref: C++ Interface-Footnote-1552473 ! Node: Template Instantiation552612 ! Node: Bound member functions561442 ! Node: C++ Attributes562993 ! Node: Java Exceptions564597 ! Node: Deprecated Features566002 ! Node: Backwards Compatibility567766 ! Node: Objective C569114 ! Node: Executing code before main569684 ! Node: What you can and what you cannot do in +load572322 ! Node: Type encoding574488 ! Node: Garbage Collection577739 ! Node: Constant string objects580403 ! Node: compatibility_alias582037 ! Node: Gcov582916 ! Node: Gcov Intro583433 ! Node: Invoking Gcov586108 ! Node: Gcov and Optimization591846 ! Node: Gcov Data Files593263 ! Node: Trouble596828 ! Node: Actual Bugs598422 ! Node: Cross-Compiler Problems599330 ! Node: Interoperation600791 ! Node: External Bugs614049 ! Node: Incompatibilities615541 ! Node: Fixed Headers625149 ! Node: Standard Libraries627458 ! Node: Disappointments628828 ! Node: C++ Misunderstandings633366 ! Node: Static Definitions634092 ! Node: Temporaries635139 ! Node: Copy Assignment637116 ! Node: Protoize Caveats638934 ! Node: Non-bugs642889 ! Node: Warnings and Errors652781 ! Node: Bugs654541 ! Node: Bug Criteria655952 ! Node: Bug Lists658376 ! Node: Bug Reporting658935 ! Node: gccbug671022 ! Node: Sending Patches671866 ! Node: Service677232 ! Node: Contributing677978 ! Node: VMS678683 ! Node: Include Files and VMS679066 ! Node: Global Declarations682931 ! Node: VMS Misc687235 ! Node: Makefile691538 ! Node: Portability698197 ! Node: Interface699951 ! Node: Passes704531 ! Node: Trees727382 ! Node: Deficiencies730122 ! Node: Tree overview730352 ! Node: Macros and Functions734488 ! Node: Identifiers734622 ! Node: Containers736138 ! Node: Types737282 ! Node: Scopes749060 ! Node: Namespaces749816 ! Node: Classes753534 ! Node: Declarations758177 ! Node: Functions764231 ! Node: Function Basics766761 ! Node: Function Bodies773508 ! Node: Attributes786879 ! Node: Expression trees788268 ! Node: RTL810728 ! Node: RTL Objects812759 ! Node: RTL Classes815792 ! Node: Accessors820298 ! Node: Flags822678 ! Node: Machine Modes834234 ! Node: Constants842018 ! Node: Regs and Memory847199 ! Node: Arithmetic859839 ! Node: Comparisons866100 ! Node: Bit-Fields870222 ! Node: Vector Operations871640 ! Node: Conversions873414 ! Node: RTL Declarations876721 ! Node: Side Effects877530 ! Node: Incdec892380 ! Node: Assembler895933 ! Node: Insns897455 ! Node: Calls921903 ! Node: Sharing924497 ! Node: Reading RTL927462 ! Node: Machine Desc928405 ! Node: Overview930609 ! Node: Patterns932648 ! Node: Example935884 ! Node: RTL Template937012 ! Node: Output Template949477 ! Node: Output Statement953459 ! Node: Constraints957171 ! Node: Simple Constraints958102 ! Node: Multi-Alternative970058 ! Node: Class Preferences972893 ! Node: Modifiers973773 ! Node: Machine Constraints977431 ! Node: Standard Names991062 ! Node: Pattern Ordering1031494 ! Node: Dependent Patterns1032721 ! Node: Jump Patterns1035536 ! Node: Looping Patterns1041283 ! Node: Insn Canonicalizations1045876 ! Node: Expander Definitions1049374 ! Node: Insn Splitting1057506 ! Node: Peephole Definitions1066158 ! Node: define_peephole1067401 ! Node: define_peephole21073776 ! Node: Insn Attributes1076837 ! Node: Defining Attributes1077920 ! Node: Expressions1079932 ! Node: Tagging Insns1086523 ! Node: Attr Example1090885 ! Node: Insn Lengths1093261 ! Node: Constant Attributes1096554 ! Node: Delay Slots1097714 ! Node: Function Units1100925 ! Node: Conditional Execution1106595 ! Node: Constant Definitions1109451 ! Node: Target Macros1111029 ! Node: Driver1113057 ! Node: Run-time Target1131493 ! Node: Per-Function Data1138524 ! Node: Storage Layout1141774 ! Node: Type Layout1160438 ! Node: Registers1170284 ! Node: Register Basics1171199 ! Node: Allocation Order1176400 ! Node: Values in Registers1177813 ! Node: Leaf Functions1182930 ! Node: Stack Registers1185695 ! Node: Register Classes1186492 ! Node: Stack and Calling1207178 ! Node: Frame Layout1207663 ! Node: Stack Checking1217433 ! Node: Frame Registers1220965 ! Node: Elimination1225379 ! Node: Stack Arguments1229635 ! Node: Register Arguments1236608 ! Node: Scalar Return1247851 ! Node: Aggregate Return1252089 ! Node: Caller Saves1255803 ! Node: Function Entry1257340 ! Node: Profiling1268261 ! Node: Inlining1276499 ! Node: Tail Calling1277052 ! Node: Varargs1277641 ! Node: Trampolines1285316 ! Node: Library Calls1292521 ! Node: Addressing Modes1300944 ! Node: Condition Code1312221 ! Node: Costs1319078 ! Node: Sections1331998 ! Node: PIC1339314 ! Node: Assembler Format1342023 ! Node: File Framework1343090 ! Node: Data Output1347226 ! Node: Uninitialized Data1355001 ! Node: Label Output1360398 ! Node: Initialization1373569 ! Node: Macros for Initialization1379709 ! Node: Instruction Output1384966 ! Node: Dispatch Tables1393865 ! Node: Exception Region Output1396417 ! Node: Alignment Output1399916 ! Node: Debugging Info1403473 ! Node: All Debuggers1404082 ! Node: DBX Options1406891 ! Node: DBX Hooks1412263 ! Node: File Names and DBX1415909 ! Node: SDB and DWARF1417882 ! Node: Cross-compilation1421291 ! Node: Mode Switching1427867 ! Node: Misc1431110 ! Node: Config1463080 ! Node: Fragments1470764 ! Node: Target Fragment1471359 ! Node: Host Fragment1476272 ! Node: Funding1476874 ! Node: GNU/Linux1479373 ! Node: Copying1484688 ! Node: GNU Free Documentation License1503899 ! Node: Contributors1523784 ! Node: Option Index1540656 ! Node: Index1600898  End Tag Table diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-1 gcc-3.0.1/gcc/doc/gcc.info-1 *** gcc-3.0/gcc/doc/gcc.info-1 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-1 Sun Aug 19 18:05:18 2001 *************** bugs. It corresponds to GCC version 3.0 *** 61,72 **** * Service:: How to find suppliers of support for GCC. * Contributing:: How to contribute to testing and developing GCC. * VMS:: Using GCC on VMS. ! * Makefile:: List of Makefile targets. * Portability:: Goals of GCC's portability features. * Interface:: Function-call interface of GCC output. * Passes:: Order of passes, what they do, and what each file is for. ! * Trees:: The source representation used by the C and C++ front-ends. * RTL:: The intermediate representation that most passes work on. * Machine Desc:: How to write machine description instruction patterns. * Target Macros:: How to write the machine description C macros. --- 61,72 ---- * Service:: How to find suppliers of support for GCC. * Contributing:: How to contribute to testing and developing GCC. * VMS:: Using GCC on VMS. ! * Makefile:: Additional Makefile and configure information. * Portability:: Goals of GCC's portability features. * Interface:: Function-call interface of GCC output. * Passes:: Order of passes, what they do, and what each file is for. ! * Trees:: The source representation used by the C and C++ front ends. * RTL:: The intermediate representation that most passes work on. * Machine Desc:: How to write machine description instruction patterns. * Target Macros:: How to write the machine description C macros. *************** Compile C, C++, Objective C, Fortran, Ja *** 92,99 **** Several versions of the compiler (C, C++, Objective C, Fortran, Java) are integrated; this is why we use the name "GNU Compiler ! Collection". GCC can compile programs written in any of these ! languages. The Fortran and Java compilers are described in separate manuals. "GCC" is a common shorthand term for the GNU Compiler Collection. --- 92,99 ---- Several versions of the compiler (C, C++, Objective C, Fortran, Java) are integrated; this is why we use the name "GNU Compiler ! Collection". GCC can compile programs written in any of these ! languages. The Fortran and Java compilers are described in separate manuals. "GCC" is a common shorthand term for the GNU Compiler Collection. *************** For example, we refer to the optimizatio *** 112,118 **** behavior of "GCC" or sometimes just "the compiler". Front ends for other languages, such as Ada 95 and Pascal exist but ! have not yet been integrated into GCC. These front-ends, like that for C++, are built in subdirectories of GCC and link to it. The result is an integrated compiler that can compile programs written in C, C++, Objective C, or any of the languages for which you have installed front --- 112,118 ---- behavior of "GCC" or sometimes just "the compiler". Front ends for other languages, such as Ada 95 and Pascal exist but ! have not yet been integrated into GCC. These front ends, like that for C++, are built in subdirectories of GCC and link to it. The result is an integrated compiler that can compile programs written in C, C++, Objective C, or any of the languages for which you have installed front *************** An OS kernel would be a freestanding env *** 216,222 **** facilities of an operating system would normally be in a hosted implementation. ! GNU CC aims towards being usable as a conforming freestanding implementation, or as the compiler for a conforming hosted implementation. By default, it will act as the compiler for a hosted implementation, defining `__STDC_HOSTED__' as `1' and presuming that --- 216,222 ---- facilities of an operating system would normally be in a hosted implementation. ! GCC aims towards being usable as a conforming freestanding implementation, or as the compiler for a conforming hosted implementation. By default, it will act as the compiler for a hosted implementation, defining `__STDC_HOSTED__' as `1' and presuming that *************** library. To build an OS kernel, you may *** 229,236 **** own arrangements for linking and startup. *Note Options Controlling C Dialect: C Dialect Options. ! GNU CC does not provide the library facilities required only of ! hosted implementations, nor yet all the facilities required by C99 of freestanding implementations; to use the facilities of a hosted environment, you will need to find them elsewhere (for example, in the GNU C library). *Note Standard Libraries: Standard Libraries. --- 229,236 ---- own arrangements for linking and startup. *Note Options Controlling C Dialect: C Dialect Options. ! GCC does not provide the library facilities required only of hosted ! implementations, nor yet all the facilities required by C99 of freestanding implementations; to use the facilities of a hosted environment, you will need to find them elsewhere (for example, in the GNU C library). *Note Standard Libraries: Standard Libraries. *************** _C++ Language Options_ *** 358,364 **** -fno-elide-constructors -fno-enforce-eh-specs -fexternal-templates -falt-external-templates ! -ffor-scope -fno-for-scope -fno-gnu-keywords -fno-honor-std -fno-implicit-templates -fno-implicit-inline-templates -fno-implement-inlines -fms-extensions --- 358,364 ---- -fno-elide-constructors -fno-enforce-eh-specs -fexternal-templates -falt-external-templates ! -ffor-scope -fno-for-scope -fno-gnu-keywords -fno-implicit-templates -fno-implicit-inline-templates -fno-implement-inlines -fms-extensions *************** _C-only Warning Options_ *** 418,424 **** _Debugging Options_ *Note Options for Debugging Your Program or GCC: Debugging Options. -a -ax -dLETTERS -dumpspecs -dumpmachine -dumpversion ! -fdump-unnumbered -fdump-translation-unit[-N] -fdump-class-hierarchy[-N] -fdump-ast-original[-N] -fdump-ast-optimized[-N] -fmem-report -fpretend-float -fprofile-arcs -ftest-coverage -ftime-report --- 418,425 ---- _Debugging Options_ *Note Options for Debugging Your Program or GCC: Debugging Options. -a -ax -dLETTERS -dumpspecs -dumpmachine -dumpversion ! -fdump-unnumbered -fdump-translation-unit[-N] ! -fdump-class-hierarchy[-N] -fdump-ast-original[-N] -fdump-ast-optimized[-N] -fmem-report -fpretend-float -fprofile-arcs -ftest-coverage -ftime-report *************** _Machine Dependent Options_ *** 719,724 **** --- 720,730 ---- -mconstant-gp -mauto-pic -minline-divide-min-latency -minline-divide-max-throughput -mno-dwarf2-asm -mfixed-range=REGISTER-RANGE + + _S/390 and zSeries Options_ + -mhard-float -msoft-float -mbackchain -mno-backchain + -msmall-exec -mno-small-exec -mmvcle -mno-mvcle + -m64 -m31 -mdebug -mno-debug _Code Generation Options_ *Note Options for Code Generation Conventions: Code Gen Options. diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-10 gcc-3.0.1/gcc/doc/gcc.info-10 *** gcc-3.0/gcc/doc/gcc.info-10 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-10 Sun Aug 19 18:05:18 2001 *************** software. Copies published by the Free *** 36,122 **** funds for GNU development.  - File: gcc.info, Node: Cross Headers, Next: Build Cross, Prev: Tools and Libraries, Up: Cross-Compiler - - Cross-Compilers and Header Files - -------------------------------- - - If you are cross-compiling a standalone program or a program for an - embedded system, then you may not need any header files except the few - that are part of GNU CC (and those of your program). However, if you - intend to link your program with a standard C library such as `libc.a', - then you probably need to compile with the header files that go with - the library you use. - - The GNU C compiler does not come with these files, because (1) they - are system-specific, and (2) they belong in a C library, not in a - compiler. - - If the GNU C library supports your target machine, then you can get - the header files from there (assuming you actually use the GNU library - when you link your program). - - If your target machine comes with a C compiler, it probably comes - with suitable header files also. If you make these files accessible - from the host machine, the cross-compiler can use them also. - - Otherwise, you're on your own in finding header files to use when - cross-compiling. - - When you have found suitable header files, put them in the directory - `/usr/local/TARGET/include', before building the cross compiler. Then - installation will run fixincludes properly and install the corrected - versions of the header files where the compiler will use them. - - Provide the header files before you build the cross-compiler, because - the build stage actually runs the cross-compiler to produce parts of - `libgcc.a'. (These are the parts that _can_ be compiled with GNU CC.) - Some of them need suitable header files. - - Here's an example showing how to copy the header files from a target - machine. On the target machine, do this: - - (cd /usr/include; tar cf - .) > tarfile - - Then, on the host machine, do this: - - ftp TARGET-MACHINE - lcd /usr/local/TARGET/include - get tarfile - quit - tar xf tarfile - -  - File: gcc.info, Node: Build Cross, Prev: Cross Headers, Up: Cross-Compiler - - Actually Building the Cross-Compiler - ------------------------------------ - - Now you can proceed just as for compiling a single-machine compiler - through the step of building stage 1. - - If your target is exotic, you may need to provide the header file - `float.h'.One way to do this is to compile `enquire' and run it on your - target machine. The job of `enquire' is to run on the target machine - and figure out by experiment the nature of its floating point - representation. `enquire' records its findings in the header file - `float.h'. If you can't produce this file by running `enquire' on the - target machine, then you will need to come up with a suitable `float.h' - in some other way (or else, avoid using it in your programs). - - Do not try to build stage 2 for a cross-compiler. It doesn't work to - rebuild GNU CC as a cross-compiler using the cross-compiler, because - that would produce a program that runs on the target machine, not on the - host. For example, if you compile a 386-to-68030 cross-compiler with - itself, the result will not be right either for the 386 (because it was - compiled into 68030 code) or for the 68030 (because it was configured - for a 386 as the host). If you want to compile GNU CC into 68030 code, - whether you compile it on a 68030 or with a cross-compiler on a 386, you - must specify a 68030 as the host when you configure it. - - To install the cross-compiler, use `make install', as usual. - -  File: gcc.info, Node: VMS Install, Next: Collect2, Prev: Cross-Compiler, Up: Installation Installing GNU CC on VMS --- 36,41 ---- *************** to recompile the sources. If you must r *** 287,293 **** choose alternate definitions of `CC', `CFLAGS', and `LIBS'. See comments in those files. However, you must also have a working version of the GNU assembler (GNU as, aka GAS) as it is used as ! the back-end for GNU CC to produce binary object modules and is not included in the GNU CC sources. GAS is also needed to compile `libgcc2' in order to build `gcclib' (see above); `make-l2.com' expects to be able to find it operational in --- 206,212 ---- choose alternate definitions of `CC', `CFLAGS', and `LIBS'. See comments in those files. However, you must also have a working version of the GNU assembler (GNU as, aka GAS) as it is used as ! the back end for GNU CC to produce binary object modules and is not included in the GNU CC sources. GAS is also needed to compile `libgcc2' in order to build `gcclib' (see above); `make-l2.com' expects to be able to find it operational in *************** Extensions to the C Language Family *** 430,439 **** *********************************** GNU C provides several language features not found in ISO standard C. ! (The `-pedantic' option directs GNU CC to print a warning message if ! any of these features is used.) To test for the availability of these features in conditional compilation, check for a predefined macro ! `__GNUC__', which is always defined under GNU CC. These extensions are available in C and Objective C. Most of them are also available in C++. *Note Extensions to the C++ Language: C++ --- 349,358 ---- *********************************** GNU C provides several language features not found in ISO standard C. ! (The `-pedantic' option directs GCC to print a warning message if any ! of these features is used.) To test for the availability of these features in conditional compilation, check for a predefined macro ! `__GNUC__', which is always defined under GCC. These extensions are available in C and Objective C. Most of them are also available in C++. *Note Extensions to the C++ Language: C++ *************** but it's not wise to take the risk. If, *** 747,753 **** does not refer to anything that has gone out of scope, you should be safe. ! GNU CC implements taking the address of a nested function using a technique called "trampolines". A paper describing them is available as `http://people.debian.org/~karlheg/Usenix88-lexic.pdf'. --- 666,672 ---- does not refer to anything that has gone out of scope, you should be safe. ! GCC implements taking the address of a nested function using a technique called "trampolines". A paper describing them is available as `http://people.debian.org/~karlheg/Usenix88-lexic.pdf'. *************** are open-coded on all types of machines. *** 1049,1055 **** if the machine supports fullword-to-doubleword a widening multiply instruction. Division and shifts are open-coded only on machines that provide special support. The operations that are not open-coded use ! special library routines that come with GNU CC. There may be pitfalls when you use `long long' types for function arguments, unless you declare function prototypes. If a function --- 968,974 ---- if the machine supports fullword-to-doubleword a widening multiply instruction. Division and shifts are open-coded only on machines that provide special support. The operations that are not open-coded use ! special library routines that come with GCC. There may be pitfalls when you use `long long' types for function arguments, unless you declare function prototypes. If a function *************** type, you should use the ISO C99 functio *** 1099,1112 **** declared in `' and also provided as built-in functions by GCC. ! GNU CC can allocate complex automatic variables in a noncontiguous fashion; it's even possible for the real part to be in a register while the imaginary part is on the stack (or vice-versa). None of the supported debugging info formats has a way to represent noncontiguous ! allocation like this, so GNU CC describes a noncontiguous complex ! variable as if it were two separate variables of noncomplex type. If ! the variable's actual name is `foo', the two fictitious variables are ! named `foo$real' and `foo$imag'. You can examine and set these two fictitious variables with your debugger. A future version of GDB will know how to recognize such pairs and --- 1018,1031 ---- declared in `' and also provided as built-in functions by GCC. ! GCC can allocate complex automatic variables in a noncontiguous fashion; it's even possible for the real part to be in a register while the imaginary part is on the stack (or vice-versa). None of the supported debugging info formats has a way to represent noncontiguous ! allocation like this, so GCC describes a noncontiguous complex variable ! as if it were two separate variables of noncomplex type. If the ! variable's actual name is `foo', the two fictitious variables are named ! `foo$real' and `foo$imag'. You can examine and set these two fictitious variables with your debugger. A future version of GDB will know how to recognize such pairs and *************** object. For example: *** 1211,1214 **** --- 1130,1204 ---- struct bar b = { { 1, { 2, 3, 4 } } }; // Illegal. struct bar c = { { 1, { } } }; // Legal. struct foo d[1] = { { 1 { 2, 3, 4 } } }; // Illegal. + +  + File: gcc.info, Node: Variable Length, Next: Variadic Macros, Prev: Zero Length, Up: C Extensions + + Arrays of Variable Length + ========================= + + Variable-length automatic arrays are allowed in ISO C99, and as an + extension GCC accepts them in C89 mode and in C++. (However, GCC's + implementation of variable-length arrays does not yet conform in detail + to the ISO C99 standard.) These arrays are declared like any other + automatic arrays, but with a length that is not a constant expression. + The storage is allocated at the point of declaration and deallocated + when the brace-level is exited. For example: + + FILE * + concat_fopen (char *s1, char *s2, char *mode) + { + char str[strlen (s1) + strlen (s2) + 1]; + strcpy (str, s1); + strcat (str, s2); + return fopen (str, mode); + } + + Jumping or breaking out of the scope of the array name deallocates + the storage. Jumping into the scope is not allowed; you get an error + message for it. + + You can use the function `alloca' to get an effect much like + variable-length arrays. The function `alloca' is available in many + other C implementations (but not in all). On the other hand, + variable-length arrays are more elegant. + + There are other differences between these two methods. Space + allocated with `alloca' exists until the containing _function_ returns. + The space for a variable-length array is deallocated as soon as the + array name's scope ends. (If you use both variable-length arrays and + `alloca' in the same function, deallocation of a variable-length array + will also deallocate anything more recently allocated with `alloca'.) + + You can also use variable-length arrays as arguments to functions: + + struct entry + tester (int len, char data[len][len]) + { + ... + } + + The length of an array is computed once when the storage is allocated + and is remembered for the scope of the array in case you access it with + `sizeof'. + + If you want to pass the array first and the length afterward, you can + use a forward declaration in the parameter list--another GNU extension. + + struct entry + tester (int len; char data[len][len], int len) + { + ... + } + + The `int len' before the semicolon is a "parameter forward + declaration", and it serves the purpose of making the name `len' known + when the declaration of `data' is parsed. + + You can write any number of such parameter forward declarations in + the parameter list. They can be separated by commas or semicolons, but + the last one must end with a semicolon, which is followed by the "real" + parameter declarations. Each forward declaration must match a "real" + declaration in parameter name and data type. ISO C99 does not support + parameter forward declarations. diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-11 gcc-3.0.1/gcc/doc/gcc.info-11 *** gcc-3.0/gcc/doc/gcc.info-11 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-11 Sun Aug 19 18:05:18 2001 *************** software. Copies published by the Free *** 36,112 **** funds for GNU development.  - File: gcc.info, Node: Variable Length, Next: Variadic Macros, Prev: Zero Length, Up: C Extensions - - Arrays of Variable Length - ========================= - - Variable-length automatic arrays are allowed in ISO C99, and as an - extension GCC accepts them in C89 mode and in C++. (However, GCC's - implementation of variable-length arrays does not yet conform in detail - to the ISO C99 standard.) These arrays are declared like any other - automatic arrays, but with a length that is not a constant expression. - The storage is allocated at the point of declaration and deallocated - when the brace-level is exited. For example: - - FILE * - concat_fopen (char *s1, char *s2, char *mode) - { - char str[strlen (s1) + strlen (s2) + 1]; - strcpy (str, s1); - strcat (str, s2); - return fopen (str, mode); - } - - Jumping or breaking out of the scope of the array name deallocates - the storage. Jumping into the scope is not allowed; you get an error - message for it. - - You can use the function `alloca' to get an effect much like - variable-length arrays. The function `alloca' is available in many - other C implementations (but not in all). On the other hand, - variable-length arrays are more elegant. - - There are other differences between these two methods. Space - allocated with `alloca' exists until the containing _function_ returns. - The space for a variable-length array is deallocated as soon as the - array name's scope ends. (If you use both variable-length arrays and - `alloca' in the same function, deallocation of a variable-length array - will also deallocate anything more recently allocated with `alloca'.) - - You can also use variable-length arrays as arguments to functions: - - struct entry - tester (int len, char data[len][len]) - { - ... - } - - The length of an array is computed once when the storage is allocated - and is remembered for the scope of the array in case you access it with - `sizeof'. - - If you want to pass the array first and the length afterward, you can - use a forward declaration in the parameter list--another GNU extension. - - struct entry - tester (int len; char data[len][len], int len) - { - ... - } - - The `int len' before the semicolon is a "parameter forward - declaration", and it serves the purpose of making the name `len' known - when the declaration of `data' is parsed. - - You can write any number of such parameter forward declarations in - the parameter list. They can be separated by commas or semicolons, but - the last one must end with a semicolon, which is followed by the "real" - parameter declarations. Each forward declaration must match a "real" - declaration in parameter name and data type. ISO C99 does not support - parameter forward declarations. - -  File: gcc.info, Node: Variadic Macros, Next: Escaped Newlines, Prev: Variable Length, Up: C Extensions Macros with a Variable Number of Arguments. --- 36,41 ---- *************** of the union. Thus, given the following *** 455,461 **** int x; double y; ! both `x' and `y' can be cast to type `union' foo. Using the cast as the right-hand side of an assignment to a variable of union type is equivalent to storing in a member of the union: --- 384,390 ---- int x; double y; ! both `x' and `y' can be cast to type `union foo'. Using the cast as the right-hand side of an assignment to a variable of union type is equivalent to storing in a member of the union: *************** attributes. *** 520,527 **** `noreturn' A few standard library functions, such as `abort' and `exit', ! cannot return. GNU CC knows this automatically. Some programs ! define their own functions that never return. You can declare them `noreturn' to tell the compiler this fact. For example, void fatal () __attribute__ ((noreturn)); --- 449,456 ---- `noreturn' A few standard library functions, such as `abort' and `exit', ! cannot return. GCC knows this automatically. Some programs define ! their own functions that never return. You can declare them `noreturn' to tell the compiler this fact. For example, void fatal () __attribute__ ((noreturn)); *************** attributes. *** 545,551 **** It does not make sense for a `noreturn' function to have a return type other than `void'. ! The attribute `noreturn' is not implemented in GNU C versions earlier than 2.5. An alternative way to declare that a function does not return, which works in the current version and in some older versions, is as follows: --- 474,480 ---- It does not make sense for a `noreturn' function to have a return type other than `void'. ! The attribute `noreturn' is not implemented in GCC versions earlier than 2.5. An alternative way to declare that a function does not return, which works in the current version and in some older versions, is as follows: *************** attributes. *** 573,579 **** that may change between two consecutive calls (such as `feof' in a multithreading environment). ! The attribute `pure' is not implemented in GNU C versions earlier than 2.96. `const' --- 502,508 ---- that may change between two consecutive calls (such as `feof' in a multithreading environment). ! The attribute `pure' is not implemented in GCC versions earlier than 2.96. `const' *************** attributes. *** 588,594 **** `const'. It does not make sense for a `const' function to return `void'. ! The attribute `const' is not implemented in GNU C versions earlier than 2.5. An alternative way to declare that a function has no side effects, which works in the current version and in some older versions, is as follows: --- 517,523 ---- `const'. It does not make sense for a `const' function to return `void'. ! The attribute `const' is not implemented in GCC versions earlier than 2.5. An alternative way to declare that a function has no side effects, which works in the current version and in some older versions, is as follows: *************** attributes. *** 633,650 **** format attribute are 2 and 3. The `format' attribute allows you to identify your own functions ! which take format strings as arguments, so that GNU CC can check ! the calls to these functions for errors. The compiler always ! (unless `-ffreestanding' is used) checks formats for the standard ! library functions `printf', `fprintf', `sprintf', `scanf', ! `fscanf', `sscanf', `strftime', `vprintf', `vfprintf' and ! `vsprintf' whenever such warnings are requested (using ! `-Wformat'), so there is no need to modify the header file ! `stdio.h'. In C99 mode, the functions `snprintf', `vsnprintf', ! `vscanf', `vfscanf' and `vsscanf' are also checked. Except in ! strictly conforming C standard modes, the X/Open function ! `strfmon' is also checked. *Note Options Controlling C Dialect: C ! Dialect Options. `format_arg (STRING-INDEX)' The `format_arg' attribute specifies that a function takes a format --- 562,578 ---- format attribute are 2 and 3. The `format' attribute allows you to identify your own functions ! which take format strings as arguments, so that GCC can check the ! calls to these functions for errors. The compiler always (unless ! `-ffreestanding' is used) checks formats for the standard library ! functions `printf', `fprintf', `sprintf', `scanf', `fscanf', ! `sscanf', `strftime', `vprintf', `vfprintf' and `vsprintf' ! whenever such warnings are requested (using `-Wformat'), so there ! is no need to modify the header file `stdio.h'. In C99 mode, the ! functions `snprintf', `vsnprintf', `vscanf', `vfscanf' and ! `vsscanf' are also checked. Except in strictly conforming C ! standard modes, the X/Open function `strfmon' is also checked. ! *Note Options Controlling C Dialect: C Dialect Options. `format_arg (STRING-INDEX)' The `format_arg' attribute specifies that a function takes a format *************** attributes. *** 674,680 **** string argument (starting from 1). The `format-arg' attribute allows you to identify your own ! functions which modify format strings, so that GNU CC can check the calls to `printf', `scanf', `strftime' or `strfmon' type function whose operands are a call to one of your own function. The compiler always treats `gettext', `dgettext', and `dcgettext' in --- 602,608 ---- string argument (starting from 1). The `format-arg' attribute allows you to identify your own ! functions which modify format strings, so that GCC can check the calls to `printf', `scanf', `strftime' or `strfmon' type function whose operands are a call to one of your own function. The compiler always treats `gettext', `dgettext', and `dcgettext' in *************** attributes. *** 717,725 **** `unused' This attribute, attached to a function, means that the function is ! meant to be possibly unused. GNU CC will not produce a warning ! for this function. GNU C++ does not currently support this ! attribute as definitions without parameters are valid in C++. `weak' The `weak' attribute causes the declaration to be emitted as a weak --- 645,653 ---- `unused' This attribute, attached to a function, means that the function is ! meant to be possibly unused. GCC will not produce a warning for ! this function. GNU C++ does not currently support this attribute ! as definitions without parameters are valid in C++. `weak' The `weak' attribute causes the declaration to be emitted as a weak *************** attributes. *** 748,761 **** Not all target machines support this attribute. `no_check_memory_usage' ! The `no_check_memory_usage' attribute causes GNU CC to omit checks ! of memory references when it generates code for that function. Normally if you specify `-fcheck-memory-usage' (see *note Code Gen ! Options::), GNU CC generates calls to support routines before most memory accesses to permit support code to record usage and detect ! uses of uninitialized or unallocated storage. Since GNU CC cannot handle `asm' statements properly they are not allowed in such ! functions. If you declare a function with this attribute, GNU CC will not generate memory checking code for that function, permitting the use of `asm' statements without having to compile that function with different options. This also allows you to --- 676,689 ---- Not all target machines support this attribute. `no_check_memory_usage' ! The `no_check_memory_usage' attribute causes GCC to omit checks of ! memory references when it generates code for that function. Normally if you specify `-fcheck-memory-usage' (see *note Code Gen ! Options::), GCC generates calls to support routines before most memory accesses to permit support code to record usage and detect ! uses of uninitialized or unallocated storage. Since GCC cannot handle `asm' statements properly they are not allowed in such ! functions. If you declare a function with this attribute, GCC will not generate memory checking code for that function, permitting the use of `asm' statements without having to compile that function with different options. This also allows you to *************** attributes. *** 870,876 **** alternate stack. void *alt_stack; ! void f () __attribute__ ((interrupt_handler, sp_switch ("alt_stack"))); `trap_exit' Use this option on the SH for an `interrupt_handle' to return using --- 798,805 ---- alternate stack. void *alt_stack; ! void f () __attribute__ ((interrupt_handler, ! sp_switch ("alt_stack"))); `trap_exit' Use this option on the SH for an `interrupt_handle' to return using *************** attributes. *** 898,904 **** Use this option on the AVR to indicate that the specified function is an signal handler. The compiler will generate function entry and exit sequences suitable for use in an signal handler when this ! attribute is present. Interrupts will be disabled inside function. `naked' Use this option on the ARM or AVR ports to indicate that the --- 827,833 ---- Use this option on the AVR to indicate that the specified function is an signal handler. The compiler will generate function entry and exit sequences suitable for use in an signal handler when this ! attribute is present. Interrupts will be disabled inside function. `naked' Use this option on the ARM or AVR ports to indicate that the *************** The Character in Constants *** 1203,1206 **** --- 1132,1171 ---- You can use the sequence `\e' in a string or character constant to stand for the ASCII character . + +  + File: gcc.info, Node: Alignment, Next: Inline, Prev: Type Attributes, Up: C Extensions + + Inquiring on Alignment of Types or Variables + ============================================ + + The keyword `__alignof__' allows you to inquire about how an object + is aligned, or the minimum alignment usually required by a type. Its + syntax is just like `sizeof'. + + For example, if the target machine requires a `double' value to be + aligned on an 8-byte boundary, then `__alignof__ (double)' is 8. This + is true on many RISC machines. On more traditional machine designs, + `__alignof__ (double)' is 4 or even 2. + + Some machines never actually require alignment; they allow reference + to any data type even at an odd addresses. For these machines, + `__alignof__' reports the _recommended_ alignment of a type. + + When the operand of `__alignof__' is an lvalue rather than a type, + the value is the largest alignment that the lvalue is known to have. + It may have this alignment as a result of its data type, or because it + is part of a structure and inherits alignment from that structure. For + example, after this declaration: + + struct foo { int x; char y; } foo1; + + the value of `__alignof__ (foo1.y)' is probably 2 or 4, the same as + `__alignof__ (int)', even though the data type of `foo1.y' does not + itself demand any alignment. + + It is an error to ask for the alignment of an incomplete type. + + A related feature which lets you specify the alignment of an object + is `__attribute__ ((aligned (ALIGNMENT)))'; see the following section. diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-12 gcc-3.0.1/gcc/doc/gcc.info-12 *** gcc-3.0/gcc/doc/gcc.info-12 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-12 Sun Aug 19 18:05:18 2001 *************** software. Copies published by the Free *** 36,77 **** funds for GNU development.  - File: gcc.info, Node: Alignment, Next: Inline, Prev: Type Attributes, Up: C Extensions - - Inquiring on Alignment of Types or Variables - ============================================ - - The keyword `__alignof__' allows you to inquire about how an object - is aligned, or the minimum alignment usually required by a type. Its - syntax is just like `sizeof'. - - For example, if the target machine requires a `double' value to be - aligned on an 8-byte boundary, then `__alignof__ (double)' is 8. This - is true on many RISC machines. On more traditional machine designs, - `__alignof__ (double)' is 4 or even 2. - - Some machines never actually require alignment; they allow reference - to any data type even at an odd addresses. For these machines, - `__alignof__' reports the _recommended_ alignment of a type. - - When the operand of `__alignof__' is an lvalue rather than a type, - the value is the largest alignment that the lvalue is known to have. - It may have this alignment as a result of its data type, or because it - is part of a structure and inherits alignment from that structure. For - example, after this declaration: - - struct foo { int x; char y; } foo1; - - the value of `__alignof__ (foo1.y)' is probably 2 or 4, the same as - `__alignof__ (int)', even though the data type of `foo1.y' does not - itself demand any alignment. - - It is an error to ask for the alignment of an incomplete type. - - A related feature which lets you specify the alignment of an object - is `__attribute__ ((aligned (ALIGNMENT)))'; see the following section. - -  File: gcc.info, Node: Variable Attributes, Next: Type Attributes, Prev: Character Escapes, Up: C Extensions Specifying Attributes of Variables --- 36,41 ---- *************** are currently defined for variables: `al *** 84,91 **** `packed', `section', `transparent_union', `unused', and `weak'. Some other attributes are defined for variables on particular target systems. Other attributes are available for functions (*note Function ! Attributes::) and for types (*note Type Attributes::). Other ! front-ends might define more attributes (*note Extensions to the C++ Language: C++ Extensions.). You may also specify attributes with `__' preceding and following --- 48,55 ---- `packed', `section', `transparent_union', `unused', and `weak'. Some other attributes are defined for variables on particular target systems. Other attributes are available for functions (*note Function ! Attributes::) and for types (*note Type Attributes::). Other front ! ends might define more attributes (*note Extensions to the C++ Language: C++ Extensions.). You may also specify attributes with `__' preceding and following *************** attributes. *** 165,174 **** for the mode used to represent pointers. `nocommon' ! This attribute specifies requests GNU CC not to place a variable "common" but instead to allocate space for it directly. If you ! specify the `-fno-common' flag, GNU CC will do this for all ! variables. Specifying the `nocommon' attribute for a variable provides an initialization of zeros. A variable may only be initialized in one --- 129,137 ---- for the mode used to represent pointers. `nocommon' ! This attribute specifies requests GCC not to place a variable "common" but instead to allocate space for it directly. If you ! specify the `-fno-common' flag, GCC will do this for all variables. Specifying the `nocommon' attribute for a variable provides an initialization of zeros. A variable may only be initialized in one *************** attributes. *** 217,225 **** } Use the `section' attribute with an _initialized_ definition of a ! _global_ variable, as shown in the example. GNU CC issues a ! warning and otherwise ignores the `section' attribute in ! uninitialized variable declarations. You may only use the `section' attribute with a fully initialized global definition because of the way linkers work. The linker --- 180,188 ---- } Use the `section' attribute with an _initialized_ definition of a ! _global_ variable, as shown in the example. GCC issues a warning ! and otherwise ignores the `section' attribute in uninitialized ! variable declarations. You may only use the `section' attribute with a fully initialized global definition because of the way linkers work. The linker *************** attributes. *** 237,243 **** `shared' On Windows NT, in addition to putting variable definitions in a named section, the section can also be shared among all running ! copies of an executable or DLL. For example, this small program defines shared data by putting it in a named section `shared' and marking the section shareable: --- 200,206 ---- `shared' On Windows NT, in addition to putting variable definitions in a named section, the section can also be shared among all running ! copies of an executable or DLL. For example, this small program defines shared data by putting it in a named section `shared' and marking the section shareable: *************** attributes. *** 269,276 **** `unused' This attribute, attached to a variable, means that the variable is ! meant to be possibly unused. GNU CC will not produce a warning ! for this variable. `weak' The `weak' attribute is described in *Note Function Attributes::. --- 232,239 ---- `unused' This attribute, attached to a variable, means that the variable is ! meant to be possibly unused. GCC will not produce a warning for ! this variable. `weak' The `weak' attribute is described in *Note Function Attributes::. *************** attributes. *** 466,477 **** `unused' When attached to a type (including a `union' or a `struct'), this attribute means that variables of that type are meant to appear ! possibly unused. GNU CC will not produce a warning for any ! variables of that type, even if the variable appears to do ! nothing. This is often the case with lock or thread classes, ! which are usually defined and then not referenced, but contain ! constructors and destructors that have nontrivial bookkeeping ! functions. To specify multiple attributes, separate them by commas within the double parentheses: for example, `__attribute__ ((aligned (16), --- 429,439 ---- `unused' When attached to a type (including a `union' or a `struct'), this attribute means that variables of that type are meant to appear ! possibly unused. GCC will not produce a warning for any variables ! of that type, even if the variable appears to do nothing. This is ! often the case with lock or thread classes, which are usually ! defined and then not referenced, but contain constructors and ! destructors that have nontrivial bookkeeping functions. To specify multiple attributes, separate them by commas within the double parentheses: for example, `__attribute__ ((aligned (16), *************** File: gcc.info, Node: Inline, Next: Ex *** 483,489 **** An Inline Function is As Fast As a Macro ======================================== ! By declaring a function `inline', you can direct GNU CC to integrate that function's code into the code for its callers. This makes execution faster by eliminating the function-call overhead; in addition, if any of the actual argument values are constant, their known --- 445,451 ---- An Inline Function is As Fast As a Macro ======================================== ! By declaring a function `inline', you can direct GCC to integrate that function's code into the code for its callers. This makes execution faster by eliminating the function-call overhead; in addition, if any of the actual argument values are constant, their known *************** substituted, and will give the reason fo *** 523,537 **** Note that in C and Objective C, unlike C++, the `inline' keyword does not affect the linkage of the function. ! GNU CC automatically inlines member functions defined within the ! class body of C++ programs even if they are not explicitly declared ! `inline'. (You can override this with `-fno-default-inline'; *note ! Options Controlling C++ Dialect: C++ Dialect Options..) When a function is both inline and `static', if all calls to the function are integrated into the caller, and the function's address is never used, then the function's own assembler code is never referenced. ! In this case, GNU CC does not actually output assembler code for the function, unless you specify the option `-fkeep-inline-functions'. Some calls cannot be integrated for various reasons (in particular, calls that precede the function's definition cannot be integrated, and --- 485,499 ---- Note that in C and Objective C, unlike C++, the `inline' keyword does not affect the linkage of the function. ! GCC automatically inlines member functions defined within the class ! body of C++ programs even if they are not explicitly declared `inline'. ! (You can override this with `-fno-default-inline'; *note Options ! Controlling C++ Dialect: C++ Dialect Options..) When a function is both inline and `static', if all calls to the function are integrated into the caller, and the function's address is never used, then the function's own assembler code is never referenced. ! In this case, GCC does not actually output assembler code for the function, unless you specify the option `-fkeep-inline-functions'. Some calls cannot be integrated for various reasons (in particular, calls that precede the function's definition cannot be integrated, and *************** existing semantics will remain available *** 567,573 **** specified, but eventually the default will be `-std=gnu99' and that will implement the C99 semantics, though it does not do so yet.) ! GNU C does not inline any functions when not optimizing. It is not clear whether it is better to inline or not, in this case, but we found that a correct implementation when not optimizing was difficult. So we did the easy thing, and turned it off. --- 529,535 ---- specified, but eventually the default will be `-std=gnu99' and that will implement the C99 semantics, though it does not do so yet.) ! GCC does not inline any functions when not optimizing. It is not clear whether it is better to inline or not, in this case, but we found that a correct implementation when not optimizing was difficult. So we did the easy thing, and turned it off. *************** template and does not know what it means *** 618,630 **** assembler input. The extended `asm' feature is most often used for machine instructions the compiler itself does not know exist. If the output expression cannot be directly addressed (for example, it is a ! bit-field), your constraint must allow a register. In that case, GNU CC will use the register as the output of the `asm', and then store that register into the output. ! The ordinary output operands must be write-only; GNU CC will assume ! that the values in these operands before the instruction are dead and ! need not be generated. Extended asm supports input-output or read-write operands. Use the constraint character `+' to indicate such an operand and list it with the output operands. --- 580,592 ---- assembler input. The extended `asm' feature is most often used for machine instructions the compiler itself does not know exist. If the output expression cannot be directly addressed (for example, it is a ! bit-field), your constraint must allow a register. In that case, GCC will use the register as the output of the `asm', and then store that register into the output. ! The ordinary output operands must be write-only; GCC will assume that ! the values in these operands before the instruction are dead and need ! not be generated. Extended asm supports input-output or read-write operands. Use the constraint character `+' to indicate such an operand and list it with the output operands. *************** work reliably: *** 654,665 **** asm ("combine %2,%0" : "=r" (foo) : "r" (foo), "g" (bar)); Various optimizations or reloading could cause operands 0 and 1 to ! be in different registers; GNU CC knows no reason not to do so. For example, the compiler might find a copy of the value of `foo' in one register and use it for operand 1, but generate the output operand 0 in a different register (copying it afterward to `foo''s own address). Of course, since the register for operand 1 is not even mentioned in the ! assembler code, the result will not work, but GNU CC can't tell that. Some instructions clobber specific hard registers. To describe this, write a third colon after the input operands, followed by the names of --- 616,627 ---- asm ("combine %2,%0" : "=r" (foo) : "r" (foo), "g" (bar)); Various optimizations or reloading could cause operands 0 and 1 to ! be in different registers; GCC knows no reason not to do so. For example, the compiler might find a copy of the value of `foo' in one register and use it for operand 1, but generate the output operand 0 in a different register (copying it afterward to `foo''s own address). Of course, since the register for operand 1 is not even mentioned in the ! assembler code, the result will not work, but GCC can't tell that. Some instructions clobber specific hard registers. To describe this, write a third colon after the input operands, followed by the names of *************** in the clobber list. There is no way fo *** 678,685 **** operand is modified without also specifying it as an output operand. Note that if all the output operands you specify are for this purpose (and hence unused), you will then also need to specify `volatile' for ! the `asm' construct, as described below, to prevent GNU CC from ! deleting the `asm' statement as unused. If you refer to a particular hardware register from the assembler code, you will probably have to list the register after the third colon --- 640,647 ---- operand is modified without also specifying it as an output operand. Note that if all the output operands you specify are for this purpose (and hence unused), you will then also need to specify `volatile' for ! the `asm' construct, as described below, to prevent GCC from deleting ! the `asm' statement as unused. If you refer to a particular hardware register from the assembler code, you will probably have to list the register after the third colon *************** assemblers, the register names begin wit *** 688,694 **** assembler code, you must write `%%' in the input. If your assembler instruction can alter the condition code register, ! add `cc' to the list of clobbered registers. GNU CC on some machines represents the condition codes as a specific hardware register; `cc' serves to name this register. On other machines, the condition code is handled differently, and specifying `cc' has no effect. But it is --- 650,656 ---- assembler code, you must write `%%' in the input. If your assembler instruction can alter the condition code register, ! add `cc' to the list of clobbered registers. GCC on some machines represents the condition codes as a specific hardware register; `cc' serves to name this register. On other machines, the condition code is handled differently, and specifying `cc' has no effect. But it is *************** valid no matter what the machine. *** 696,702 **** If your assembler instruction modifies memory in an unpredictable fashion, add `memory' to the list of clobbered registers. This will ! cause GNU CC to not keep memory values cached in registers across the assembler instruction. You will also want to add the `volatile' keyword if the memory affected is not listed in the inputs or outputs of the `asm', as the `memory' clobber does not count as a side-effect --- 658,664 ---- If your assembler instruction modifies memory in an unpredictable fashion, add `memory' to the list of clobbered registers. This will ! cause GCC to not keep memory values cached in registers across the assembler instruction. You will also want to add the `volatile' keyword if the memory affected is not listed in the inputs or outputs of the `asm', as the `memory' clobber does not count as a side-effect *************** subroutine `_foo' accepts arguments in r *** 720,726 **** : "g" (from), "g" (to) : "r9", "r10"); ! Unless an output operand has the `&' constraint modifier, GNU CC may allocate it in the same register as an unrelated input operand, on the assumption the inputs are consumed before the outputs are produced. This assumption may be false if the assembler code actually consists of --- 682,688 ---- : "g" (from), "g" (to) : "r9", "r10"); ! Unless an output operand has the `&' constraint modifier, GCC may allocate it in the same register as an unrelated input operand, on the assumption the inputs are consumed before the outputs are produced. This assumption may be false if the assembler code actually consists of *************** would accept a pointer with no complaint *** 763,769 **** to an `int' variable named `__arg' would warn about using a pointer unless the caller explicitly casts it. ! If an `asm' has output operands, GNU CC assumes for optimization purposes the instruction has no side effects except to change the output operands. This does not mean instructions with a side effect cannot be used, but you must be careful, because the compiler may eliminate them --- 725,731 ---- to an `int' variable named `__arg' would warn about using a pointer unless the caller explicitly casts it. ! If an `asm' has output operands, GCC assumes for optimization purposes the instruction has no side effects except to change the output operands. This does not mean instructions with a side effect cannot be used, but you must be careful, because the compiler may eliminate them *************** significantly, or combined, by writing t *** 783,789 **** : "=g" (__old) : "g" (new)); \ __old; }) ! If you write an `asm' instruction with no outputs, GNU CC will know the instruction has side-effects and will not delete the instruction or move it outside of loops. --- 745,751 ---- : "=g" (__old) : "g" (new)); \ __old; }) ! If you write an `asm' instruction with no outputs, GCC will know the instruction has side-effects and will not delete the instruction or move it outside of loops. *************** instruction. For example: *** 799,805 **** Assume `addr' contains the address of a memory mapped device register. The PowerPC `eieio' instruction (Enforce In-order Execution of I/O) ! tells the cpu to make sure that the store to that device register happens before it issues any other I/O. Note that even a volatile `asm' instruction can be moved in ways --- 761,767 ---- Assume `addr' contains the address of a memory mapped device register. The PowerPC `eieio' instruction (Enforce In-order Execution of I/O) ! tells the CPU to make sure that the store to that device register happens before it issues any other I/O. Note that even a volatile `asm' instruction can be moved in ways *************** before its definition and putting `asm' *** 947,953 **** It is up to you to make sure that the assembler names you choose do not conflict with any other assembler symbols. Also, you must not use a register name; that would produce completely invalid assembler code. ! GNU CC does not as yet have the ability to store static variables in registers. Perhaps that will be added.  --- 909,915 ---- It is up to you to make sure that the assembler names you choose do not conflict with any other assembler symbols. Also, you must not use a register name; that would produce completely invalid assembler code. ! GCC does not as yet have the ability to store static variables in registers. Perhaps that will be added.  *************** g2 are local temporaries. *** 1074,1077 **** --- 1036,1080 ---- On the 68000, a2 ... a5 should be suitable, as should d2 ... d7. Of course, it will not do to use more than a few of those. + +  + File: gcc.info, Node: Local Reg Vars, Prev: Global Reg Vars, Up: Explicit Reg Vars + + Specifying Registers for Local Variables + ---------------------------------------- + + You can define a local register variable with a specified register + like this: + + register int *foo asm ("a5"); + + Here `a5' is the name of the register which should be used. Note that + this is the same syntax used for defining global register variables, + but for a local variable it would appear within a function. + + Naturally the register name is cpu-dependent, but this is not a + problem, since specific registers are most often useful with explicit + assembler instructions (*note Extended Asm::). Both of these things + generally require that you conditionalize your program according to cpu + type. + + In addition, operating systems on one type of cpu may differ in how + they name the registers; then you would need additional conditionals. + For example, some 68000 operating systems call this register `%a5'. + + Defining such a register variable does not reserve the register; it + remains available for other uses in places where flow control determines + the variable's value is not live. However, these registers are made + unavailable for use in the reload pass; excessive use of this feature + leaves the compiler too few available registers to compile certain + functions. + + This option does not guarantee that GCC will generate code that has + this variable in the register you specify at all times. You may not + code an explicit reference to this register in an `asm' statement and + assume it will always refer to this variable. + + Stores into local register variables may be deleted when they appear + to be dead according to dataflow analysis. References to local + register variables may be deleted or moved or simplified. diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-13 gcc-3.0.1/gcc/doc/gcc.info-13 *** gcc-3.0/gcc/doc/gcc.info-13 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-13 Sun Aug 19 18:05:18 2001 *************** software. Copies published by the Free *** 36,82 **** funds for GNU development.  - File: gcc.info, Node: Local Reg Vars, Prev: Global Reg Vars, Up: Explicit Reg Vars - - Specifying Registers for Local Variables - ---------------------------------------- - - You can define a local register variable with a specified register - like this: - - register int *foo asm ("a5"); - - Here `a5' is the name of the register which should be used. Note that - this is the same syntax used for defining global register variables, - but for a local variable it would appear within a function. - - Naturally the register name is cpu-dependent, but this is not a - problem, since specific registers are most often useful with explicit - assembler instructions (*note Extended Asm::). Both of these things - generally require that you conditionalize your program according to cpu - type. - - In addition, operating systems on one type of cpu may differ in how - they name the registers; then you would need additional conditionals. - For example, some 68000 operating systems call this register `%a5'. - - Defining such a register variable does not reserve the register; it - remains available for other uses in places where flow control determines - the variable's value is not live. However, these registers are made - unavailable for use in the reload pass; excessive use of this feature - leaves the compiler too few available registers to compile certain - functions. - - This option does not guarantee that GNU CC will generate code that - has this variable in the register you specify at all times. You may not - code an explicit reference to this register in an `asm' statement and - assume it will always refer to this variable. - - Stores into local register variables may be deleted when they appear - to be dead according to dataflow analysis. References to local - register variables may be deleted or moved or simplified. - -  File: gcc.info, Node: Alternate Keywords, Next: Incomplete Enums, Prev: Explicit Reg Vars, Up: C Extensions Alternate Keywords --- 36,41 ---- *************** File: gcc.info, Node: Function Names, *** 139,149 **** Function Names as Strings ========================= ! GNU CC predefines two magic identifiers to hold the name of the ! current function. The identifier `__FUNCTION__' holds the name of the ! function as it appears in the source. The identifier ! `__PRETTY_FUNCTION__' holds the name of the function pretty printed in ! a language specific fashion. These names are always the same in a C function, but in a C++ function they may be different. For example, this program: --- 98,108 ---- Function Names as Strings ========================= ! GCC predefines two magic identifiers to hold the name of the current ! function. The identifier `__FUNCTION__' holds the name of the function ! as it appears in the source. The identifier `__PRETTY_FUNCTION__' ! holds the name of the function pretty printed in a language specific ! fashion. These names are always the same in a C function, but in a C++ function they may be different. For example, this program: *************** gives this output: *** 175,184 **** __PRETTY_FUNCTION__ = int a::sub (int) The compiler automagically replaces the identifiers with a string ! literal containing the appropriate name. Thus, they are neither preprocessor macros, like `__FILE__' and `__LINE__', nor variables. This means that they catenate with other string literals, and that they ! can be used to initialize char arrays. For example char here[] = "Function " __FUNCTION__ " in " __FILE__; --- 134,143 ---- __PRETTY_FUNCTION__ = int a::sub (int) The compiler automagically replaces the identifiers with a string ! literal containing the appropriate name. Thus, they are neither preprocessor macros, like `__FILE__' and `__LINE__', nor variables. This means that they catenate with other string literals, and that they ! can be used to initialize char arrays. For example char here[] = "Function " __FUNCTION__ " in " __FILE__; *************** can be used to initialize char arrays. F *** 186,192 **** meaning inside a function, since the preprocessor does not do anything special with the identifier `__FUNCTION__'. ! GNU CC also supports the magic word `__func__', defined by the ISO standard C99: The identifier `__func__' is implicitly declared by the translator --- 145,151 ---- meaning inside a function, since the preprocessor does not do anything special with the identifier `__FUNCTION__'. ! GCC also supports the magic word `__func__', defined by the ISO standard C99: The identifier `__func__' is implicitly declared by the translator *************** standard C99: *** 195,201 **** static const char __func__[] = "function-name"; appeared, where function-name is the name of the lexically-enclosing ! function. This name is the unadorned name of the function. By this definition, `__func__' is a variable, not a string literal. In particular, `__func__' does not catenate with other string literals. --- 154,160 ---- static const char __func__[] = "function-name"; appeared, where function-name is the name of the lexically-enclosing ! function. This name is the unadorned name of the function. By this definition, `__func__' is a variable, not a string literal. In particular, `__func__' does not catenate with other string literals. *************** function. *** 254,271 ****  File: gcc.info, Node: Other Builtins, Prev: Return Address, Up: C Extensions ! Other built-in functions provided by GNU CC ! =========================================== ! GNU CC provides a large number of built-in functions other than the ! ones mentioned above. Some of these are for internal use in the ! processing of exceptions or variable-length argument lists and will not ! be documented here because they may change from time to time; we do not recommend general use of these functions. The remaining functions are provided for optimization purposes. ! GNU CC includes built-in versions of many of the functions in the standard C library. The versions prefixed with `__builtin_' will always be treated as having the same meaning as the C library function even if you specify the `-fno-builtin' (*note C Dialect Options::) --- 213,230 ----  File: gcc.info, Node: Other Builtins, Prev: Return Address, Up: C Extensions ! Other built-in functions provided by GCC ! ======================================== ! GCC provides a large number of built-in functions other than the ones ! mentioned above. Some of these are for internal use in the processing ! of exceptions or variable-length argument lists and will not be ! documented here because they may change from time to time; we do not recommend general use of these functions. The remaining functions are provided for optimization purposes. ! GCC includes built-in versions of many of the functions in the standard C library. The versions prefixed with `__builtin_' will always be treated as having the same meaning as the C library function even if you specify the `-fno-builtin' (*note C Dialect Options::) *************** unless `-fno-builtin' is specified: `abs *** 302,308 **** of these functions have corresponding versions prefixed with `__builtin_'. ! GNU CC provides built-in versions of the ISO C99 floating point comparison macros (that avoid raising exceptions for unordered operands): `__builtin_isgreater', `__builtin_isgreaterequal', `__builtin_isless', `__builtin_islessequal', `__builtin_islessgreater', --- 261,267 ---- of these functions have corresponding versions prefixed with `__builtin_'. ! GCC provides built-in versions of the ISO C99 floating point comparison macros (that avoid raising exceptions for unordered operands): `__builtin_isgreater', `__builtin_isgreaterequal', `__builtin_isless', `__builtin_islessequal', `__builtin_islessgreater', *************** and `__builtin_isunordered'. *** 311,323 **** - Built-in Function: int __builtin_constant_p (EXP) You can use the built-in function `__builtin_constant_p' to determine if a value is known to be constant at compile-time and ! hence that GNU CC can perform constant-folding on expressions involving that value. The argument of the function is the value to test. The function returns the integer 1 if the argument is known to be a compile-time constant and 0 if it is not known to be a compile-time constant. A return of 0 does not indicate that the ! value is _not_ a constant, but merely that GNU CC cannot prove it ! is a constant with the specified value of the `-O' option. You would typically use this function in an embedded application where memory was a critical resource. If you have some complex --- 270,282 ---- - Built-in Function: int __builtin_constant_p (EXP) You can use the built-in function `__builtin_constant_p' to determine if a value is known to be constant at compile-time and ! hence that GCC can perform constant-folding on expressions involving that value. The argument of the function is the value to test. The function returns the integer 1 if the argument is known to be a compile-time constant and 0 if it is not known to be a compile-time constant. A return of 0 does not indicate that the ! value is _not_ a constant, but merely that GCC cannot prove it is ! a constant with the specified value of the `-O' option. You would typically use this function in an embedded application where memory was a critical resource. If you have some complex *************** and `__builtin_isunordered'. *** 331,342 **** You may use this built-in function in either a macro or an inline function. However, if you use it in an inlined function and pass ! an argument of the function as the argument to the built-in, GNU ! CC will never return 1 when you call the inline function with a string constant or compound literal (*note Compound Literals::) and will not return 1 when you pass a constant numeric value to the inline function unless you specify the `-O' option. - Built-in Function: long __builtin_expect (long EXP, long C) You may use `__builtin_expect' to provide the compiler with branch prediction information. In general, you should prefer to use --- 290,318 ---- You may use this built-in function in either a macro or an inline function. However, if you use it in an inlined function and pass ! an argument of the function as the argument to the built-in, GCC ! will never return 1 when you call the inline function with a string constant or compound literal (*note Compound Literals::) and will not return 1 when you pass a constant numeric value to the inline function unless you specify the `-O' option. + You may also use `__builtin_constant_p' in initializers for static + data. For instance, you can write + + static const int table[] = { + __builtin_constant_p (EXPRESSION) ? (EXPRESSION) : -1, + /* ... */ + }; + + This is an acceptable initializer even if EXPRESSION is not a + constant expression. GCC must be more conservative about + evaluating the built-in in this case, because it has no + opportunity to perform optimization. + + Previous versions of GCC did not accept this built-in in data + initializers. The earliest version where it is completely safe is + 3.0.1. + - Built-in Function: long __builtin_expect (long EXP, long C) You may use `__builtin_expect' to provide the compiler with branch prediction information. In general, you should prefer to use *************** When is a Volatile Object Accessed? *** 439,487 **** Both the C and C++ standard have the concept of volatile objects. These are normally accessed by pointers and used for accessing ! hardware. The standards encourage compilers to refrain from optimizations concerning accesses to volatile objects that it might ! perform on non-volatile objects. The C standard leaves it ! implementation defined as to what constitutes a volatile access. The C++ standard omits to specify this, except to say that C++ should behave in a similar manner to C with respect to volatiles, where ! possible. The minimum either standard specifies is that at a sequence point all previous accesses to volatile objects have stabilized and no ! subsequent accesses have occurred. Thus an implementation is free to reorder and combine volatile accesses which occur between sequence ! points, but cannot do so for accesses across a sequence point. The use of volatiles does not allow you to violate the restriction on updating objects multiple times within a sequence point. In most expressions, it is intuitively obvious what is a read and ! what is a write. For instance volatile int *dst = SOMEVALUE; volatile int *src = SOMEOTHERVALUE; *dst = *src; will cause a read of the volatile object pointed to by SRC and stores ! the value into the volatile object pointed to by DST. There is no guarantee that these reads and writes are atomic, especially for objects larger than `int'. Less obvious expressions are where something which looks like an ! access is used in a void context. An example would be, volatile int *src = SOMEVALUE; *src; With C, such expressions are rvalues, and as rvalues cause a read of ! the object, gcc interprets this as a read of the volatile being pointed ! to. The C++ standard specifies that such expressions do not undergo lvalue to rvalue conversion, and that the type of the dereferenced ! object may be incomplete. The C++ standard does not specify explicitly that it is this lvalue to rvalue conversion which is responsible for ! causing an access. However, there is reason to believe that it is, ! because otherwise certain simple expressions become undefined. However, ! because it would surprise most programmers, g++ treats dereferencing a pointer to volatile object of complete type in a void context as a read ! of the object. When the object has incomplete type, g++ issues a warning. struct S; --- 415,463 ---- Both the C and C++ standard have the concept of volatile objects. These are normally accessed by pointers and used for accessing ! hardware. The standards encourage compilers to refrain from optimizations concerning accesses to volatile objects that it might ! perform on non-volatile objects. The C standard leaves it ! implementation defined as to what constitutes a volatile access. The C++ standard omits to specify this, except to say that C++ should behave in a similar manner to C with respect to volatiles, where ! possible. The minimum either standard specifies is that at a sequence point all previous accesses to volatile objects have stabilized and no ! subsequent accesses have occurred. Thus an implementation is free to reorder and combine volatile accesses which occur between sequence ! points, but cannot do so for accesses across a sequence point. The use of volatiles does not allow you to violate the restriction on updating objects multiple times within a sequence point. In most expressions, it is intuitively obvious what is a read and ! what is a write. For instance volatile int *dst = SOMEVALUE; volatile int *src = SOMEOTHERVALUE; *dst = *src; will cause a read of the volatile object pointed to by SRC and stores ! the value into the volatile object pointed to by DST. There is no guarantee that these reads and writes are atomic, especially for objects larger than `int'. Less obvious expressions are where something which looks like an ! access is used in a void context. An example would be, volatile int *src = SOMEVALUE; *src; With C, such expressions are rvalues, and as rvalues cause a read of ! the object, GCC interprets this as a read of the volatile being pointed ! to. The C++ standard specifies that such expressions do not undergo lvalue to rvalue conversion, and that the type of the dereferenced ! object may be incomplete. The C++ standard does not specify explicitly that it is this lvalue to rvalue conversion which is responsible for ! causing an access. However, there is reason to believe that it is, ! because otherwise certain simple expressions become undefined. However, ! because it would surprise most programmers, G++ treats dereferencing a pointer to volatile object of complete type in a void context as a read ! of the object. When the object has incomplete type, G++ issues a warning. struct S; *************** warning. *** 492,507 **** *ptr2; In this example, a warning is issued for `*ptr1', and `*ptr2' causes ! a read of the object pointed to. If you wish to force an error on the first case, you must force a conversion to rvalue with, for instance a static cast, `static_cast(*ptr1)'. ! When using a reference to volatile, g++ does not treat equivalent expressions as accesses to volatiles, but instead issues a warning that ! no volatile is accessed. The rationale for this is that otherwise it becomes difficult to determine where volatile access occur, and not possible to ignore the return value from functions returning volatile ! references. Again, if you wish to force a read, cast the reference to an rvalue.  --- 468,483 ---- *ptr2; In this example, a warning is issued for `*ptr1', and `*ptr2' causes ! a read of the object pointed to. If you wish to force an error on the first case, you must force a conversion to rvalue with, for instance a static cast, `static_cast(*ptr1)'. ! When using a reference to volatile, G++ does not treat equivalent expressions as accesses to volatiles, but instead issues a warning that ! no volatile is accessed. The rationale for this is that otherwise it becomes difficult to determine where volatile access occur, and not possible to ignore the return value from functions returning volatile ! references. Again, if you wish to force a read, cast the reference to an rvalue.  *************** unaliased by using `__restrict__' as a m *** 536,549 **** } Within the body of `T::fn', THIS will have the effective definition `T ! *__restrict__ const this'. Notice that the interpretation of a `__restrict__' member function qualifier is different to that of `const' or `volatile' qualifier, in that it is applied to the pointer ! rather than the object. This is consistent with other compilers which implement restricted pointers. As with all outermost parameter qualifiers, `__restrict__' is ! ignored in function definition matching. This means you only need to specify `__restrict__' in a function definition, rather than in a function prototype as well. --- 512,525 ---- } Within the body of `T::fn', THIS will have the effective definition `T ! *__restrict__ const this'. Notice that the interpretation of a `__restrict__' member function qualifier is different to that of `const' or `volatile' qualifier, in that it is applied to the pointer ! rather than the object. This is consistent with other compilers which implement restricted pointers. As with all outermost parameter qualifiers, `__restrict__' is ! ignored in function definition matching. This means you only need to specify `__restrict__' in a function definition, rather than in a function prototype as well. *************** virtual function calls. *** 925,931 **** fptr p = (fptr)(a.*fp); For PMF constants (i.e. expressions of the form `&Klasse::Member'), ! no object is needed to obtain the address of the function. They can be converted to function pointers directly: fptr p1 = (fptr)(&A::foo); --- 901,907 ---- fptr p = (fptr)(a.*fp); For PMF constants (i.e. expressions of the form `&Klasse::Member'), ! no object is needed to obtain the address of the function. They can be converted to function pointers directly: fptr p1 = (fptr)(&A::foo); *************** Deprecated Features *** 1009,1018 **** =================== In the past, the GNU C++ compiler was extended to experiment with new ! features, at a time when the C++ language was still evolving. Now that the C++ standard is complete, some of those features are superseded by ! superior alternatives. Using the old features might cause a warning in ! some cases that the feature will be dropped in the future. In other cases, the feature might be gone already. While the list below is not exhaustive, it documents some of the --- 985,994 ---- =================== In the past, the GNU C++ compiler was extended to experiment with new ! features, at a time when the C++ language was still evolving. Now that the C++ standard is complete, some of those features are superseded by ! superior alternatives. Using the old features might cause a warning in ! some cases that the feature will be dropped in the future. In other cases, the feature might be gone already. While the list below is not exhaustive, it documents some of the *************** options that are now deprecated: *** 1021,1036 **** `-fexternal-templates' `-falt-external-templates' These are two of the many ways for g++ to implement template ! instantiation. *Note Template Instantiation::. The C++ standard clearly defines how template definitions have to be organized ! across implementation units. g++ has an implicit instantiation mechanism that should work just fine for standard-conforming code. `-fstrict-prototype' `-fno-strict-prototype' Previously it was possible to use an empty prototype parameter list to indicate an unspecified number of parameters (like C), ! rather than no parameters, as C++ demands. This feature has been removed, except where it is required for backwards compatibility *Note Backwards Compatibility::. --- 997,1012 ---- `-fexternal-templates' `-falt-external-templates' These are two of the many ways for g++ to implement template ! instantiation. *Note Template Instantiation::. The C++ standard clearly defines how template definitions have to be organized ! across implementation units. g++ has an implicit instantiation mechanism that should work just fine for standard-conforming code. `-fstrict-prototype' `-fno-strict-prototype' Previously it was possible to use an empty prototype parameter list to indicate an unspecified number of parameters (like C), ! rather than no parameters, as C++ demands. This feature has been removed, except where it is required for backwards compatibility *Note Backwards Compatibility::. *************** File: gcc.info, Node: Backwards Compati *** 1049,1074 **** Backwards Compatibility ======================= ! Now that there is a definitive ISO standard C++, g++ has a ! specification to adhere to. The C++ language evolved over time, and features that used to be acceptable in previous drafts of the standard, such as the ARM [Annotated C++ Reference Manual], are no longer ! accepted. In order to allow compilation of C++ written to such drafts, ! g++ contains some backwards compatibilities. _All such backwards compatibility features are liable to disappear in future versions of ! g++._ They should be considered deprecated *Note Deprecated Features::. `For scope' If a variable is declared at for scope, it used to remain in scope until the end of the scope which contained the for statement ! (rather than just within the for scope). g++ retains this, but issues a warning, if such a variable is accessed outside the for scope. `implicit C language' Old C system header files did not contain an `extern "C" {...}' ! scope to set the language. On such systems, all header files are ! implicitly scoped inside a C language scope. Also, an empty prototype `()' will be treated as an unspecified number of arguments, rather than no arguments, as C++ demands. --- 1025,1050 ---- Backwards Compatibility ======================= ! Now that there is a definitive ISO standard C++, G++ has a ! specification to adhere to. The C++ language evolved over time, and features that used to be acceptable in previous drafts of the standard, such as the ARM [Annotated C++ Reference Manual], are no longer ! accepted. In order to allow compilation of C++ written to such drafts, ! G++ contains some backwards compatibilities. _All such backwards compatibility features are liable to disappear in future versions of ! G++._ They should be considered deprecated *Note Deprecated Features::. `For scope' If a variable is declared at for scope, it used to remain in scope until the end of the scope which contained the for statement ! (rather than just within the for scope). G++ retains this, but issues a warning, if such a variable is accessed outside the for scope. `implicit C language' Old C system header files did not contain an `extern "C" {...}' ! scope to set the language. On such systems, all header files are ! implicitly scoped inside a C language scope. Also, an empty prototype `()' will be treated as an unspecified number of arguments, rather than no arguments, as C++ demands. *************** GNU Objective-C runtime features *** 1079,1085 **** ******************************** This document is meant to describe some of the GNU Objective-C ! runtime features. It is not intended to teach you Objective-C, there are several resources on the Internet that present the language. Questions and comments about this document to Ovidiu Predescu . --- 1055,1061 ---- ******************************** This document is meant to describe some of the GNU Objective-C ! runtime features. It is not intended to teach you Objective-C, there are several resources on the Internet that present the language. Questions and comments about this document to Ovidiu Predescu . *************** Questions and comments about this docume *** 1091,1094 **** --- 1067,1146 ---- * Garbage Collection:: * Constant string objects:: * compatibility_alias:: + +  + File: gcc.info, Node: Executing code before main, Next: Type encoding, Prev: Objective C, Up: Objective C + + `+load': Executing code before main + =================================== + + The GNU Objective-C runtime provides a way that allows you to execute + code before the execution of the program enters the `main' function. + The code is executed on a per-class and a per-category basis, through a + special class method `+load'. + + This facility is very useful if you want to initialize global + variables which can be accessed by the program directly, without + sending a message to the class first. The usual way to initialize + global variables, in the `+initialize' method, might not be useful + because `+initialize' is only called when the first message is sent to a + class object, which in some cases could be too late. + + Suppose for example you have a `FileStream' class that declares + `Stdin', `Stdout' and `Stderr' as global variables, like below: + + + FileStream *Stdin = nil; + FileStream *Stdout = nil; + FileStream *Stderr = nil; + + @implementation FileStream + + + (void)initialize + { + Stdin = [[FileStream new] initWithFd:0]; + Stdout = [[FileStream new] initWithFd:1]; + Stderr = [[FileStream new] initWithFd:2]; + } + + /* Other methods here */ + @end + + In this example, the initialization of `Stdin', `Stdout' and + `Stderr' in `+initialize' occurs too late. The programmer can send a + message to one of these objects before the variables are actually + initialized, thus sending messages to the `nil' object. The + `+initialize' method which actually initializes the global variables is + not invoked until the first message is sent to the class object. The + solution would require these variables to be initialized just before + entering `main'. + + The correct solution of the above problem is to use the `+load' + method instead of `+initialize': + + + @implementation FileStream + + + (void)load + { + Stdin = [[FileStream new] initWithFd:0]; + Stdout = [[FileStream new] initWithFd:1]; + Stderr = [[FileStream new] initWithFd:2]; + } + + /* Other methods here */ + @end + + The `+load' is a method that is not overridden by categories. If a + class and a category of it both implement `+load', both methods are + invoked. This allows some additional initializations to be performed in + a category. + + This mechanism is not intended to be a replacement for `+initialize'. + You should be aware of its limitations when you decide to use it + instead of `+initialize'. + + * Menu: + + * What you can and what you cannot do in +load:: diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-14 gcc-3.0.1/gcc/doc/gcc.info-14 *** gcc-3.0/gcc/doc/gcc.info-14 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-14 Sun Aug 19 18:05:18 2001 *************** software. Copies published by the Free *** 36,117 **** funds for GNU development.  - File: gcc.info, Node: Executing code before main, Next: Type encoding, Prev: Objective C, Up: Objective C - - `+load': Executing code before main - =================================== - - The GNU Objective-C runtime provides a way that allows you to execute - code before the execution of the program enters the `main' function. - The code is executed on a per-class and a per-category basis, through a - special class method `+load'. - - This facility is very useful if you want to initialize global - variables which can be accessed by the program directly, without - sending a message to the class first. The usual way to initialize - global variables, in the `+initialize' method, might not be useful - because `+initialize' is only called when the first message is sent to a - class object, which in some cases could be too late. - - Suppose for example you have a `FileStream' class that declares - `Stdin', `Stdout' and `Stderr' as global variables, like below: - - - FileStream *Stdin = nil; - FileStream *Stdout = nil; - FileStream *Stderr = nil; - - @implementation FileStream - - + (void)initialize - { - Stdin = [[FileStream new] initWithFd:0]; - Stdout = [[FileStream new] initWithFd:1]; - Stderr = [[FileStream new] initWithFd:2]; - } - - /* Other methods here */ - @end - - In this example, the initialization of `Stdin', `Stdout' and - `Stderr' in `+initialize' occurs too late. The programmer can send a - message to one of these objects before the variables are actually - initialized, thus sending messages to the `nil' object. The - `+initialize' method which actually initializes the global variables is - not invoked until the first message is sent to the class object. The - solution would require these variables to be initialized just before - entering `main'. - - The correct solution of the above problem is to use the `+load' - method instead of `+initialize': - - - @implementation FileStream - - + (void)load - { - Stdin = [[FileStream new] initWithFd:0]; - Stdout = [[FileStream new] initWithFd:1]; - Stderr = [[FileStream new] initWithFd:2]; - } - - /* Other methods here */ - @end - - The `+load' is a method that is not overridden by categories. If a - class and a category of it both implement `+load', both methods are - invoked. This allows some additional initializations to be performed in - a category. - - This mechanism is not intended to be a replacement for `+initialize'. - You should be aware of its limitations when you decide to use it - instead of `+initialize'. - - * Menu: - - * What you can and what you cannot do in +load:: - -  File: gcc.info, Node: What you can and what you cannot do in +load, Prev: Executing code before main, Up: Executing code before main What you can and what you cannot do in `+load' --- 36,41 ---- *************** particular case, are not guaranteed: *** 145,167 **** You should make no assumptions about receiving `+load' in sibling ! classes when you write `+load' of a class. The order in which sibling classes receive `+load' is not guaranteed. The order in which `+load' and `+initialize' are called could be ! problematic if this matters. If you don't allocate objects inside `+load', it is guaranteed that `+load' is called before `+initialize'. If you create an object inside `+load' the `+initialize' method of ! object's class is invoked even if `+load' was not invoked. Note if you explicitly call `+load' on a class, `+initialize' will be called first. To avoid possible problems try to implement only one of these methods. The `+load' method is also invoked when a bundle is dynamically ! loaded into your running program. This happens automatically without any ! intervening operation from you. When you write bundles and you need to ! write `+load' you can safely create and send messages to objects whose ! classes already exist in the running program. The same restrictions as ! above apply to classes defined in bundle.  File: gcc.info, Node: Type encoding, Next: Garbage Collection, Prev: Executing code before main, Up: Objective C --- 69,91 ---- You should make no assumptions about receiving `+load' in sibling ! classes when you write `+load' of a class. The order in which sibling classes receive `+load' is not guaranteed. The order in which `+load' and `+initialize' are called could be ! problematic if this matters. If you don't allocate objects inside `+load', it is guaranteed that `+load' is called before `+initialize'. If you create an object inside `+load' the `+initialize' method of ! object's class is invoked even if `+load' was not invoked. Note if you explicitly call `+load' on a class, `+initialize' will be called first. To avoid possible problems try to implement only one of these methods. The `+load' method is also invoked when a bundle is dynamically ! loaded into your running program. This happens automatically without ! any intervening operation from you. When you write bundles and you ! need to write `+load' you can safely create and send messages to ! objects whose classes already exist in the running program. The same ! restrictions as above apply to classes defined in bundle.  File: gcc.info, Node: Type encoding, Next: Garbage Collection, Prev: Executing code before main, Up: Objective C *************** bit-fields `b' followed by the s *** 201,212 **** The encoding of bit-fields has changed to allow bit-fields to be properly handled by the runtime functions that compute sizes and ! alignments of types that contain bit-fields. The previous encoding ! contained only the size of the bit-field. Using only this information it is not possible to reliably compute the size occupied by the ! bit-field. This is very important in the presence of the Boehm's garbage collector because the objects are allocated using the typed ! memory facility available in this collector. The typed memory allocation requires information about where the pointers are located inside the object. --- 125,136 ---- The encoding of bit-fields has changed to allow bit-fields to be properly handled by the runtime functions that compute sizes and ! alignments of types that contain bit-fields. The previous encoding ! contained only the size of the bit-field. Using only this information it is not possible to reliably compute the size occupied by the ! bit-field. This is very important in the presence of the Boehm's garbage collector because the objects are allocated using the typed ! memory facility available in this collector. The typed memory allocation requires information about where the pointers are located inside the object. *************** Objective-C type Compiler encoding *** 241,247 **** In addition to the types the compiler also encodes the type ! specifiers. The table below describes the encoding of the current Objective-C type specifiers: --- 165,171 ---- In addition to the types the compiler also encodes the type ! specifiers. The table below describes the encoding of the current Objective-C type specifiers: *************** Specifier Encoding *** 254,260 **** `oneway' `V' ! The type specifiers are encoded just before the type. Unlike types however, the type specifiers are only encoded when they appear in method argument types. --- 178,184 ---- `oneway' `V' ! The type specifiers are encoded just before the type. Unlike types however, the type specifiers are only encoded when they appear in method argument types. *************** Garbage Collection *** 266,297 **** Support for a new memory management policy has been added by using a powerful conservative garbage collector, known as the ! Boehm-Demers-Weiser conservative garbage collector. It is available from ! `http://www.hpl.hp.com/personal/Hans_Boehm/gc/'. To enable the support for it you have to configure the compiler ! using an additional argument, `--enable-objc-gc'. You need to have ! garbage collector installed before building the compiler. This will build an additional runtime library which has several enhancements to ! support the garbage collector. The new library has a new name, `libobjc_gc.a' to not conflict with the non-garbage-collected library. When the garbage collector is used, the objects are allocated using the so-called typed memory allocation mechanism available in the ! Boehm-Demers-Weiser collector. This mode requires precise information on ! where pointers are located inside objects. This information is computed ! once per class, immediately after the class has been initialized. There is a new runtime function `class_ivar_set_gcinvisible()' which ! can be used to declare a so-called "weak pointer" reference. Such a pointer is basically hidden for the garbage collector; this can be useful in certain situations, especially when you want to keep track of ! the allocated objects, yet allow them to be collected. This kind of pointers can only be members of objects, you cannot declare a global ! pointer as a weak reference. Every type which is a pointer type can be declared a weak pointer, including `id', `Class' and `SEL'. ! Here is an example of how to use this feature. Suppose you want to implement a class whose instances hold a weak pointer reference; the following class does this: --- 190,222 ---- Support for a new memory management policy has been added by using a powerful conservative garbage collector, known as the ! Boehm-Demers-Weiser conservative garbage collector. It is available ! from `http://www.hpl.hp.com/personal/Hans_Boehm/gc/'. To enable the support for it you have to configure the compiler ! using an additional argument, `--enable-objc-gc'. You need to have ! garbage collector installed before building the compiler. This will build an additional runtime library which has several enhancements to ! support the garbage collector. The new library has a new name, `libobjc_gc.a' to not conflict with the non-garbage-collected library. When the garbage collector is used, the objects are allocated using the so-called typed memory allocation mechanism available in the ! Boehm-Demers-Weiser collector. This mode requires precise information ! on where pointers are located inside objects. This information is ! computed once per class, immediately after the class has been ! initialized. There is a new runtime function `class_ivar_set_gcinvisible()' which ! can be used to declare a so-called "weak pointer" reference. Such a pointer is basically hidden for the garbage collector; this can be useful in certain situations, especially when you want to keep track of ! the allocated objects, yet allow them to be collected. This kind of pointers can only be members of objects, you cannot declare a global ! pointer as a weak reference. Every type which is a pointer type can be declared a weak pointer, including `id', `Class' and `SEL'. ! Here is an example of how to use this feature. Suppose you want to implement a class whose instances hold a weak pointer reference; the following class does this: *************** following class does this: *** 327,333 **** @end Weak pointers are supported through a new type character specifier ! represented by the `!' character. The `class_ivar_set_gcinvisible()' function adds or removes this specifier to the string type description of the instance variable named as argument. --- 252,258 ---- @end Weak pointers are supported through a new type character specifier ! represented by the `!' character. The `class_ivar_set_gcinvisible()' function adds or removes this specifier to the string type description of the instance variable named as argument. *************** Constant string objects *** 338,355 **** ======================= GNU Objective-C provides constant string objects that are generated ! directly by the compiler. You declare a constant string object by prefixing a C constant string with the character `@': id myString = @"this is a constant string object"; The constant string objects are usually instances of the `NXConstantString' class which is provided by the GNU Objective-C ! runtime. To get the definition of this class you must include the `objc/NXConstStr.h' header file. User defined libraries may want to implement their own constant ! string class. To be able to support them, the GNU Objective-C compiler provides a new command line options `-fconstant-string-class=CLASS-NAME'. The provided class should adhere to a strict structure, the same as `NXConstantString''s structure: --- 263,280 ---- ======================= GNU Objective-C provides constant string objects that are generated ! directly by the compiler. You declare a constant string object by prefixing a C constant string with the character `@': id myString = @"this is a constant string object"; The constant string objects are usually instances of the `NXConstantString' class which is provided by the GNU Objective-C ! runtime. To get the definition of this class you must include the `objc/NXConstStr.h' header file. User defined libraries may want to implement their own constant ! string class. To be able to support them, the GNU Objective-C compiler provides a new command line options `-fconstant-string-class=CLASS-NAME'. The provided class should adhere to a strict structure, the same as `NXConstantString''s structure: *************** to a strict structure, the same as `NXCo *** 363,374 **** @end User class libraries may choose to inherit the customized constant ! string class from a different class than `Object'. There is no requirement in the methods the constant string class has to implement. When a file is compiled with the `-fconstant-string-class' option, all the constant string objects will be instances of the class specified ! as argument to this option. It is possible to have multiple compilation units referring to different constant string classes, neither the compiler nor the linker impose any restrictions in doing this. --- 288,299 ---- @end User class libraries may choose to inherit the customized constant ! string class from a different class than `Object'. There is no requirement in the methods the constant string class has to implement. When a file is compiled with the `-fconstant-string-class' option, all the constant string objects will be instances of the class specified ! as argument to this option. It is possible to have multiple compilation units referring to different constant string classes, neither the compiler nor the linker impose any restrictions in doing this. *************** File: gcc.info, Node: Gcov, Next: Trou *** 404,410 **** `gcov': a Test Coverage Program ******************************* ! `gcov' is a tool you can use in conjunction with GNU CC to test code coverage in your programs. This chapter describes version 1.5 of `gcov'. --- 329,335 ---- `gcov': a Test Coverage Program ******************************* ! `gcov' is a tool you can use in conjunction with GCC to test code coverage in your programs. This chapter describes version 1.5 of `gcov'. *************** File: gcc.info, Node: Gcov Intro, Next *** 422,428 **** Introduction to `gcov' ====================== ! `gcov' is a test coverage program. Use it in concert with GNU CC to analyze your programs to help create more efficient, faster running code. You can use `gcov' as a profiling tool to help discover where your optimization efforts will best affect your code. You can also use --- 347,353 ---- Introduction to `gcov' ====================== ! `gcov' is a test coverage program. Use it in concert with GCC to analyze your programs to help create more efficient, faster running code. You can use `gcov' as a profiling tool to help discover where your optimization efforts will best affect your code. You can also use *************** You can use these logfiles along with `g *** 469,476 **** performance of your programs. `gprof' gives timing information you can use along with the information you get from `gcov'. ! `gcov' works only on code compiled with GNU CC. It is not ! compatible with any other profiling or test coverage mechanism.  File: gcc.info, Node: Invoking Gcov, Next: Gcov and Optimization, Prev: Gcov Intro, Up: Gcov --- 394,401 ---- performance of your programs. `gprof' gives timing information you can use along with the information you get from `gcov'. ! `gcov' works only on code compiled with GCC. It is not compatible ! with any other profiling or test coverage mechanism.  File: gcc.info, Node: Invoking Gcov, Next: Gcov and Optimization, Prev: Gcov Intro, Up: Gcov *************** Invoking gcov *** 511,522 **** `.bb', `.bbg', and `.da' files in this directory. When using `gcov', you must first compile your program with two ! special GNU CC options: `-fprofile-arcs -ftest-coverage'. This tells ! the compiler to generate additional information needed by gcov ! (basically a flow graph of the program) and also includes additional ! code in the object files for generating the extra profiling information ! needed by gcov. These additional files are placed in the directory ! where the source code is located. Running the program will cause profile output to be generated. For each source file compiled with `-fprofile-arcs', an accompanying `.da' --- 436,447 ---- `.bb', `.bbg', and `.da' files in this directory. When using `gcov', you must first compile your program with two ! special GCC options: `-fprofile-arcs -ftest-coverage'. This tells the ! compiler to generate additional information needed by gcov (basically a ! flow graph of the program) and also includes additional code in the ! object files for generating the extra profiling information needed by ! gcov. These additional files are placed in the directory where the ! source code is located. Running the program will cause profile output to be generated. For each source file compiled with `-fprofile-arcs', an accompanying `.da' *************** Using `gcov' with GCC Optimization *** 626,638 **** ================================== If you plan to use `gcov' to help optimize your code, you must first ! compile your program with two special GNU CC options: `-fprofile-arcs ! -ftest-coverage'. Aside from that, you can use any other GNU CC ! options; but if you want to prove that every single line in your ! program was executed, you should not compile with optimization at the ! same time. On some machines the optimizer can eliminate some simple ! code lines by combining them with other lines. For example, code like ! this: if (a != b) c = 1; --- 551,562 ---- ================================== If you plan to use `gcov' to help optimize your code, you must first ! compile your program with two special GCC options: `-fprofile-arcs ! -ftest-coverage'. Aside from that, you can use any other GCC options; ! but if you want to prove that every single line in your program was ! executed, you should not compile with optimization at the same time. ! On some machines the optimizer can eliminate some simple code lines by ! combining them with other lines. For example, code like this: if (a != b) c = 1; *************** are placed in the same directory as the *** 669,675 **** stored in a platform-independent method. The `.bb' and `.bbg' files are generated when the source file is ! compiled with the GNU CC `-ftest-coverage' option. The `.bb' file contains a list of source files (including headers), functions within those files, and line numbers corresponding to each basic block in the source file. --- 593,599 ---- stored in a platform-independent method. The `.bb' and `.bbg' files are generated when the source file is ! compiled with the GCC `-ftest-coverage' option. The `.bb' file contains a list of source files (including headers), functions within those files, and line numbers corresponding to each basic block in the source file. *************** list of basic blocks, and to verify that *** 709,715 **** correctly. The `.da' file is generated when a program containing object files ! built with the GNU CC `-fprofile-arcs' option is executed. A separate `.da' file is created for each source file compiled with this option, and the name of the `.da' file is stored as an absolute pathname in the resulting object file. This path name is derived from the source file --- 633,639 ---- correctly. The `.da' file is generated when a program containing object files ! built with the GCC `-fprofile-arcs' option is executed. A separate `.da' file is created for each source file compiled with this option, and the name of the `.da' file is stored as an absolute pathname in the resulting object file. This path name is derived from the source file *************** where people's opinions differ as to wha *** 750,758 **** and with certain linkers, assemblers and debuggers. * External Bugs:: Problems compiling certain programs. * Incompatibilities:: GCC is incompatible with traditional C. ! * Fixed Headers:: GNU C uses corrected versions of system header files. This is necessary, but doesn't always work smoothly. ! * Standard Libraries:: GNU C uses the system C library, which might not be compliant with the ISO C standard. * Disappointments:: Regrettable things we can't change, but not quite bugs. * C++ Misunderstandings:: Common misunderstandings with GNU C++. --- 674,682 ---- and with certain linkers, assemblers and debuggers. * External Bugs:: Problems compiling certain programs. * Incompatibilities:: GCC is incompatible with traditional C. ! * Fixed Headers:: GCC uses corrected versions of system header files. This is necessary, but doesn't always work smoothly. ! * Standard Libraries:: GCC uses the system C library, which might not be compliant with the ISO C standard. * Disappointments:: Regrettable things we can't change, but not quite bugs. * C++ Misunderstandings:: Common misunderstandings with GNU C++. *************** File: gcc.info, Node: Interoperation, *** 822,834 **** Interoperation ============== ! This section lists various difficulties encountered in using GNU C or ! GNU C++ together with other compilers or with the assemblers, linkers, libraries and debuggers on certain systems. * Objective C does not work on the RS/6000. ! * GNU C++ 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. --- 746,758 ---- Interoperation ============== ! This section lists various difficulties encountered in using GCC ! together with other compilers or with the assemblers, linkers, libraries and debuggers on certain systems. * Objective C does not work on the RS/6000. ! * 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. *************** libraries and debuggers on certain syste *** 895,901 **** pointer may cause a fatal signal. One way to solve this problem is to compile your entire program ! with GNU CC. Another solution is to modify the function that is compiled with Sun CC to copy the argument into a local variable; local variables are always properly aligned. A third solution is to modify the function that uses the pointer to dereference it via --- 819,825 ---- pointer may cause a fatal signal. One way to solve this problem is to compile your entire program ! with GCC. Another solution is to modify the function that is compiled with Sun CC to copy the argument into a local variable; local variables are always properly aligned. A third solution is to modify the function that uses the pointer to dereference it via diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-15 gcc-3.0.1/gcc/doc/gcc.info-15 *** gcc-3.0/gcc/doc/gcc.info-15 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-15 Sun Aug 19 18:05:18 2001 *************** Incompatibilities of GCC *** 43,50 **** There are several noteworthy incompatibilities between GNU C and K&R (non-ISO) versions of C. The `-traditional' option eliminates many of ! these incompatibilities, _but not all_, by telling GNU C to behave like ! a K&R C compiler. * GCC normally makes string constants read-only. If several identical-looking string constants are used, GCC stores only one --- 43,50 ---- There are several noteworthy incompatibilities between GNU C and K&R (non-ISO) versions of C. The `-traditional' option eliminates many of ! these incompatibilities, _but not all_, by telling GCC to behave like a ! K&R C compiler. * GCC normally makes string constants read-only. If several identical-looking string constants are used, GCC stores only one *************** a K&R C compiler. *** 110,116 **** If you use the `-W' option with the `-O' option, you will get a warning when GCC thinks such a problem might be possible. ! The `-traditional' option directs GNU C to put variables in the stack by default, rather than in registers, in functions that call `setjmp'. This results in the behavior found in traditional C compilers. --- 110,116 ---- If you use the `-W' option with the `-O' option, you will get a warning when GCC thinks such a problem might be possible. ! The `-traditional' option directs GCC to put variables in the stack by default, rather than in registers, in functions that call `setjmp'. This results in the behavior found in traditional C compilers. *************** a K&R C compiler. *** 128,136 **** implement. * K&R compilers allow comments to cross over an inclusion boundary ! (i.e. started in an include file and ended in the including ! file). I think this would be quite ugly and can't imagine it ! could be needed. * Declarations of external variables and functions within a block apply only to the block containing the declaration. In other --- 128,136 ---- implement. * K&R compilers allow comments to cross over an inclusion boundary ! (i.e. started in an include file and ended in the including file). ! I think this would be quite ugly and can't imagine it could be ! needed. * Declarations of external variables and functions within a block apply only to the block containing the declaration. In other *************** a K&R C compiler. *** 140,146 **** In some other C compilers, a `extern' declaration affects all the rest of the file even if it happens within a block. ! The `-traditional' option directs GNU C to treat all `extern' declarations as global, like traditional compilers. * In traditional C, you can combine `long', etc., with a typedef --- 140,146 ---- In some other C compilers, a `extern' declaration affects all the rest of the file even if it happens within a block. ! The `-traditional' option directs GCC to treat all `extern' declarations as global, like traditional compilers. * In traditional C, you can combine `long', etc., with a typedef *************** a K&R C compiler. *** 235,245 **** You can tell GCC to use a compatible convention for all structure and union returning with the option `-fpcc-struct-return'. ! * GNU C complains about program fragments such as `0x74ae-0x4000' which appear to be two hexadecimal constants separated by the minus operator. Actually, this string is a single "preprocessing token". Each such token must correspond to one token in C. Since this ! does not, GNU C prints an error message. Although it may appear obvious that what is meant is an operator and two values, the ISO C standard specifically requires that this be treated as erroneous. --- 235,245 ---- You can tell GCC to use a compatible convention for all structure and union returning with the option `-fpcc-struct-return'. ! * GCC complains about program fragments such as `0x74ae-0x4000' which appear to be two hexadecimal constants separated by the minus operator. Actually, this string is a single "preprocessing token". Each such token must correspond to one token in C. Since this ! does not, GCC prints an error message. Although it may appear obvious that what is meant is an operator and two values, the ISO C standard specifically requires that this be treated as erroneous. *************** Implicit Copy-Assignment for Virtual Bas *** 536,544 **** ------------------------------------------ When a base class is virtual, only one subobject of the base class ! belongs to each full object. Also, the constructors and destructors are ! invoked only once, and called from the most-derived class. However, such ! objects behave unspecified when being assigned. For example: struct Base{ char *name; --- 536,544 ---- ------------------------------------------ When a base class is virtual, only one subobject of the base class ! belongs to each full object. Also, the constructors and destructors are ! invoked only once, and called from the most-derived class. However, ! such objects behave unspecified when being assigned. For example: struct Base{ char *name; *************** objects behave unspecified when being as *** 569,587 **** } The C++ standard specifies that `Base::Base' is only called once ! when constructing or copy-constructing a Derived object. It is unspecified whether `Base::operator=' is called more than once when the implicit copy-assignment for Derived objects is invoked (as it is inside `func' in the example). g++ implements the "intuitive" algorithm for copy-assignment: assign ! all direct bases, then assign all members. In that algorithm, the ! virtual base subobject can be encountered many times. In the example, copying proceeds in the following order: `val', `name' (via `strdup'), `bval', and `name' again. If application code relies on copy-assignment, a user-defined ! copy-assignment operator removes any uncertainties. With such an operator, the application can define whether and how the virtual base subobject is assigned. --- 569,587 ---- } The C++ standard specifies that `Base::Base' is only called once ! when constructing or copy-constructing a Derived object. It is unspecified whether `Base::operator=' is called more than once when the implicit copy-assignment for Derived objects is invoked (as it is inside `func' in the example). g++ implements the "intuitive" algorithm for copy-assignment: assign ! all direct bases, then assign all members. In that algorithm, the ! virtual base subobject can be encountered many times. In the example, copying proceeds in the following order: `val', `name' (via `strdup'), `bval', and `name' again. If application code relies on copy-assignment, a user-defined ! copy-assignment operator removes any uncertainties. With such an operator, the application can define whether and how the virtual base subobject is assigned. diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-16 gcc-3.0.1/gcc/doc/gcc.info-16 *** gcc-3.0/gcc/doc/gcc.info-16 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-16 Sun Aug 19 18:05:18 2001 *************** these things: *** 90,96 **** send the preprocessor output generated by adding `-save-temps' to the compilation command (*note Debugging Options::). When you do this, use the same `-I', `-D' or `-U' options that you used in ! actual compilation. Then send the INPUT.i or INPUT.ii files generated. A single statement is not enough of an example. In order to --- 90,96 ---- send the preprocessor output generated by adding `-save-temps' to the compilation command (*note Debugging Options::). When you do this, use the same `-I', `-D' or `-U' options that you used in ! actual compilation. Then send the INPUT.i or INPUT.ii files generated. A single statement is not enough of an example. In order to *************** The gccbug script *** 292,305 **** ================= To simplify creation of bug reports, and to allow better tracking of ! reports, we use the GNATS bug tracking system. Part of that system is ! the `gccbug' script. This is a Unix shell script, so you need a shell ! to run it. It is normally installed in the same directory where `gcc' is installed. The gccbug script is derived from send-pr, *note Creating new ! Problem Reports: (send-pr)using send-pr.. When invoked, it starts a ! text editor so you can fill out the various fields of the report. When the you quit the editor, the report is automatically send to the bug reporting address. --- 292,305 ---- ================= To simplify creation of bug reports, and to allow better tracking of ! reports, we use the GNATS bug tracking system. Part of that system is ! the `gccbug' script. This is a Unix shell script, so you need a shell ! to run it. It is normally installed in the same directory where `gcc' is installed. The gccbug script is derived from send-pr, *note Creating new ! Problem Reports: (send-pr)using send-pr.. When invoked, it starts a ! text editor so you can fill out the various fields of the report. When the you quit the editor, the report is automatically send to the bug reporting address. *************** mailing list, . *** 319,326 **** Please follow these guidelines so we can study your patches efficiently. If you don't follow these guidelines, your information might still be useful, but using it will take extra work. Maintaining ! GNU C is a lot of work in the best of circumstances, and we can't keep ! up unless you do your best to help. * Send an explanation with your changes of what problem they fix or what improvement they bring about. For a bug fix, just include a --- 319,326 ---- Please follow these guidelines so we can study your patches efficiently. If you don't follow these guidelines, your information might still be useful, but using it will take extra work. Maintaining ! GCC is a lot of work in the best of circumstances, and we can't keep up ! unless you do your best to help. * Send an explanation with your changes of what problem they fix or what improvement they bring about. For a bug fix, just include a *************** lower case; this will work on VMS, but i *** 714,721 **** systems. The compiler option `/NAMES' also provides control over global name handling. ! Function and variable names are handled somewhat differently with GNU ! C++. The GNU C++ compiler performs "name mangling" on function names, which means that it adds information to the function name to describe the data types of the arguments that the function takes. One result of this is that the name of a function can become very long. Since the --- 714,721 ---- systems. The compiler option `/NAMES' also provides control over global name handling. ! Function and variable names are handled somewhat differently with ! G++. The GNU C++ compiler performs "name mangling" on function names, which means that it adds information to the function name to describe the data types of the arguments that the function takes. One result of this is that the name of a function can become very long. Since the *************** the number of changes to your source cod *** 750,757 ****  File: gcc.info, Node: Makefile, Next: Portability, Prev: VMS, Up: Top Makefile Targets ! **************** `all' This is the default target. Depending on what your --- 750,760 ----  File: gcc.info, Node: Makefile, Next: Portability, Prev: VMS, Up: Top + Additional Makefile and configure information. + ********************************************** + Makefile Targets ! ================ `all' This is the default target. Depending on what your *************** Makefile Targets *** 843,848 **** --- 846,912 ---- Compares the results of stages 2 and 3. This ensures that the compiler is running properly, since it should produce the same object files regardless of how it itself was compiled. + + Configure Terms and History + =========================== + + This section is not instructions for building GCC. If you are + trying to do a build, you should first read + `http://gcc.gnu.org/install/' or whatever installation instructions + came with your source package. + + The configure and build process has a long and colorful history, and + can be confusing to anyone who doesn't know why things are the way they + are. While there are other documents which describe the configuration + process in detail, here are a few things that everyone working on GCC + should know. + + There are three system names that the build knows about: the machine + you are building on ("build"), the machine that you are building for + ("host"), and the machine that GCC will produce code for ("target"). + When you configure GCC, you specify these with `--build=', `--host=', + and `--target='. + + Specifying the host without specifying the build should be avoided, + as `configure' may (and once did) assume that the host you specify is + also the build, which may not be true. + + If build, host, and target are all the same, this is called a + "native". If build and host are the same but target is different, this + is called a "cross". If build, host, and target are all different this + is called a "canadian" (for obscure reasons dealing with Canada's + political party and the background of the person working on the build + at that time). If host and target are the same, but build is + different, you are using a cross-compiler to build a native for a + different system. Some people call this a "host-x-host", "crossed + native", or "cross-built native". If build and target are the same, + but host is different, you are using a cross compiler to build a cross + compiler that produces code for the machine you're building on. This + is rare, so there is no common say of describing it (although I propose + calling it a "crossback"). + + If build and host are the same, the GCC you are building will also be + used to build the target libraries (like `libstdc++'). If build and + host are different, you must have already build and installed a cross + compiler that will be used to build the target libraries (if you + configured with `--target=foo-bar', this compiler will be called + `foo-bar-gcc'). + + In the case of target libraries, the machine you're building for is + the machine you specified with `--target'. So, build is the machine + you're building on (no change there), host is the machine you're + building for (the target libraries are built for the target, so host is + the target you specified), and target doesn't apply (because you're not + building a compiler, you're building libraries). The configure/make + process will adjust these variables as needed. It also sets + `$with_cross_host' to the original `--host' value in case you need it. + + Libiberty, for example, is built twice. The first time, host comes + from `--host' and the second time host comes from `--target'. + Historically, libiberty has not been built for the build machine, + though, which causes some interesting issues with programs used to + generate sources for the build. Fixing this, so that libiberty is built + three times, has long been on the to-do list.  File: gcc.info, Node: Portability, Next: Interface, Prev: Makefile, Up: Top diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-17 gcc-3.0.1/gcc/doc/gcc.info-17 *** gcc-3.0/gcc/doc/gcc.info-17 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-17 Sun Aug 19 18:05:18 2001 *************** closing files, and sequencing the passes *** 48,54 **** The parsing pass is invoked only once, to parse the entire input. A high level tree representation is then generated from the input, one function at a time. This tree code is then transformed into RTL ! intermediate code, and processed. The files involved in transforming the trees into RTL are `expr.c', `expmed.c', and `stmt.c'. The order of trees that are processed, is not necessarily the same order they are generated from the input, due to deferred inlining, and other --- 48,54 ---- The parsing pass is invoked only once, to parse the entire input. A high level tree representation is then generated from the input, one function at a time. This tree code is then transformed into RTL ! intermediate code, and processed. The files involved in transforming the trees into RTL are `expr.c', `expmed.c', and `stmt.c'. The order of trees that are processed, is not necessarily the same order they are generated from the input, due to deferred inlining, and other *************** files. Also included is a description o *** 71,77 **** requested with `-d' options. * Parsing. This pass reads the entire text of a function definition, ! constructing a high level tree representation. The tree representation does not entirely follow C syntax, because it is intended to support other languages as well. --- 71,79 ---- requested with `-d' options. * Parsing. This pass reads the entire text of a function definition, ! constructing a high level tree representation. (Because of the ! semantic analysis that takes place during this pass, it does more ! than is formally considered to be parsing.) The tree representation does not entirely follow C syntax, because it is intended to support other languages as well. *************** requested with `-d' options. *** 90,104 **** documentation. In particular, the internals are covered in *Note Cpplib internals: (cppinternals)Top. ! The source files to parse C are `c-parse.in', `c-decl.c', ! `c-typeck.c', `c-aux-info.c', `c-convert.c', and `c-lang.c' along ! with header files `c-lex.h', and `c-tree.h'. The source files for parsing C++ are in `cp/'. They are `parse.y', ! `class.c', ! `cvt.c', `decl.c', `decl2.c', `except.c', ! `expr.c', `init.c', `lex.c', `method.c', `ptree.c', ! `search.c', `spew.c', `semantics.c', `tree.c', `typeck2.c', and `typeck.c', along with header files `cp-tree.def', `cp-tree.h', and `decl.h'. --- 92,105 ---- documentation. In particular, the internals are covered in *Note Cpplib internals: (cppinternals)Top. ! The source files to parse C are `c-aux-info.c', `c-convert.c', ! `c-decl.c', `c-errors.c', `c-lang.c', `c-parse.in', and ! `c-typeck.c', along with a header file `c-tree.h' and some files ! shared with Objective-C and C++. The source files for parsing C++ are in `cp/'. They are `parse.y', ! `class.c', `cvt.c', `decl.c', `decl2.c', `except.c', `expr.c', ! `init.c', `lex.c', `method.c', `ptree.c', `search.c', `spew.c', `semantics.c', `tree.c', `typeck2.c', and `typeck.c', along with header files `cp-tree.def', `cp-tree.h', and `decl.h'. *************** requested with `-d' options. *** 106,112 **** They are `objc-parse.y', `objc-act.c', `objc-tree.def', and `objc-act.h'. Certain C-specific files are used for this as well. ! The file `c-common.c' is also used for all of the above languages. * Tree optimization. This is the optimization of the tree representation, before converting into RTL code. --- 107,116 ---- They are `objc-parse.y', `objc-act.c', `objc-tree.def', and `objc-act.h'. Certain C-specific files are used for this as well. ! The files `c-common.c', `c-common.def', `c-dump.c', `c-format.c', ! `c-lex.c', `c-pragma.c', and `c-semantics.c', along with header ! files `c-common.h', `c-dump.h', `c-lex.h', and `c-pragma.h', are ! also used for all of the above languages. * Tree optimization. This is the optimization of the tree representation, before converting into RTL code. *************** requested with `-d' options. *** 175,181 **** The source file of this pass is `sibcall.c' The option `-di' causes a debugging dump of the RTL code after ! this pass is run. This dump file's name is made by appending `.sibling' to the input file name. * Jump optimization. This pass simplifies jumps to the following --- 179,185 ---- The source file of this pass is `sibcall.c' The option `-di' causes a debugging dump of the RTL code after ! this pass is run. This dump file's name is made by appending `.sibling' to the input file name. * Jump optimization. This pass simplifies jumps to the following *************** requested with `-d' options. *** 220,230 **** this pass. This dump file's name is made by appending `.cse' to the input file name. ! * Static Single Assignment (SSA) based optimization passes. The SSA conversion passes (to/from) are turned on by the `-fssa' option (it is also done automatically if you enable an SSA optimization pass). These passes utilize a form called Static Single ! Assignment. In SSA form, each variable (pseudo register) is only set once, giving you def-use and use-def chains for free, and enabling a lot more optimization passes to be run in linear time. Conversion to and from SSA form is handled by functions in `ssa.c'. --- 224,234 ---- this pass. This dump file's name is made by appending `.cse' to the input file name. ! * Static Single Assignment (SSA) based optimization passes. The SSA conversion passes (to/from) are turned on by the `-fssa' option (it is also done automatically if you enable an SSA optimization pass). These passes utilize a form called Static Single ! Assignment. In SSA form, each variable (pseudo register) is only set once, giving you def-use and use-def chains for free, and enabling a lot more optimization passes to be run in linear time. Conversion to and from SSA form is handled by functions in `ssa.c'. *************** requested with `-d' options. *** 237,243 **** because it is never executed. It operates in linear time. The option `-dX' causes a debugging dump of the RTL code after ! this pass. This dump file's name is made by appending `.dce' to the input file name. * Global common subexpression elimination. This pass performs two --- 241,247 ---- because it is never executed. It operates in linear time. The option `-dX' causes a debugging dump of the RTL code after ! this pass. This dump file's name is made by appending `.dce' to the input file name. * Global common subexpression elimination. This pass performs two *************** requested with `-d' options. *** 319,325 **** this pass. This dump file's name is made by appending `.ce' to the input file name. ! * Register movement (`regmove.c'). This pass looks for cases where matching constraints would force an instruction to need a reload, and this reload would be a register to register move. It then attempts to change the registers used by the instruction to avoid --- 323,329 ---- this pass. This dump file's name is made by appending `.ce' to the input file name. ! * Register movement (`regmove.c'). This pass looks for cases where matching constraints would force an instruction to need a reload, and this reload would be a register to register move. It then attempts to change the registers used by the instruction to avoid *************** requested with `-d' options. *** 390,404 **** to the input file name. * Basic block reordering. This pass implements profile guided code ! positioning. If profile information is not available, various types of static analysis are performed to make the predictions normally coming from the profile feedback (IE execution frequency, ! branch probability, etc). It is implemented in the file `bb-reorder.c', and the various prediction routines are in `predict.c'. The option `-dB' causes a debugging dump of the RTL code after ! this pass. This dump file's name is made by appending `.bbro' to the input file name. * Jump optimization is repeated, this time including cross-jumping --- 394,408 ---- to the input file name. * Basic block reordering. This pass implements profile guided code ! positioning. If profile information is not available, various types of static analysis are performed to make the predictions normally coming from the profile feedback (IE execution frequency, ! branch probability, etc). It is implemented in the file `bb-reorder.c', and the various prediction routines are in `predict.c'. The option `-dB' causes a debugging dump of the RTL code after ! this pass. This dump file's name is made by appending `.bbro' to the input file name. * Jump optimization is repeated, this time including cross-jumping *************** requested with `-d' options. *** 496,502 ****  File: gcc.info, Node: Trees, Next: RTL, Prev: Passes, Up: Top ! Trees: The intermediate representation used by the C and C++ front-ends *********************************************************************** This chapter documents the internal representation used by GCC and --- 500,506 ----  File: gcc.info, Node: Trees, Next: RTL, Prev: Passes, Up: Top ! Trees: The intermediate representation used by the C and C++ front ends *********************************************************************** This chapter documents the internal representation used by GCC and *************** C++ source program, GCC parses the progr *** 505,511 **** (including the generation of error messages), and then produces the internal representation described here. This representation contains a complete representation for the entire translation unit provided as ! input to the front-end. This representation is then typically processed by a code-generator in order to produce machine code, but could also be used in the creation of source browsers, intelligent editors, automatic documentation generators, interpreters, and any other programs needing --- 509,515 ---- (including the generation of error messages), and then produces the internal representation described here. This representation contains a complete representation for the entire translation unit provided as ! input to the front end. This representation is then typically processed by a code-generator in order to produce machine code, but could also be used in the creation of source browsers, intelligent editors, automatic documentation generators, interpreters, and any other programs needing *************** the ability to process C or C++ code. *** 515,527 **** documents the internal representation for C and C++ source constructs, and the macros, functions, and variables that can be used to access these constructs. The C++ representation which is largely a superset ! of the representation used in the C front-end. There is only one ! construct used in C that does not appear in the C++ front-end and that is the GNU "nested function" extension. Many of the macros documented here do not apply in C because the corresponding language constructs do not appear in C. ! If you are developing a "back-end", be it is a code-generator or some other tool, that uses this representation, you may occasionally find that you need to ask questions not easily answered by the functions and macros available here. If that situation occurs, it is quite likely --- 519,531 ---- documents the internal representation for C and C++ source constructs, and the macros, functions, and variables that can be used to access these constructs. The C++ representation which is largely a superset ! of the representation used in the C front end. There is only one ! construct used in C that does not appear in the C++ front end and that is the GNU "nested function" extension. Many of the macros documented here do not apply in C because the corresponding language constructs do not appear in C. ! If you are developing a "back end", be it is a code-generator or some other tool, that uses this representation, you may occasionally find that you need to ask questions not easily answered by the functions and macros available here. If that situation occurs, it is quite likely *************** that GCC already supports the functional *** 529,536 **** interface is simply not documented here. In that case, you should ask the GCC maintainers (via mail to ) about documenting the functionality you require. Similarly, if you find yourself writing ! functions that do not deal directly with your back-end, but instead ! might be useful to other people using the GCC front-end, you should submit your patches for inclusion in GCC. * Menu: --- 533,540 ---- interface is simply not documented here. In that case, you should ask the GCC maintainers (via mail to ) about documenting the functionality you require. Similarly, if you find yourself writing ! functions that do not deal directly with your back end, but instead ! might be useful to other people using the GCC front end, you should submit your patches for inclusion in GCC. * Menu: *************** submit your patches for inclusion in GCC *** 541,546 **** --- 545,551 ---- * Scopes:: Namespaces and classes. * Functions:: Overloading, function bodies, and linkage. * Declarations:: Type declarations and variables. + * Attributes:: Declaration and type attributes. * Expression trees:: From `typeid' to `throw'.  *************** trees as output. However, most macros r *** 571,577 **** node as input. In other words, there is a type-system for trees, but it is not reflected in the C type-system. ! For safety, it is useful to configure G++ with `--enable-checking'. Although this results in a significant performance penalty (since all tree types are checked at run-time), and is therefore inappropriate in a release version, it is extremely helpful during the development process. --- 576,582 ---- node as input. In other words, there is a type-system for trees, but it is not reflected in the C type-system. ! For safety, it is useful to configure GCC with `--enable-checking'. Although this results in a significant performance penalty (since all tree types are checked at run-time), and is therefore inappropriate in a release version, it is extremely helpful during the development process. *************** arguments only once. *** 612,618 **** usual practice is to compare the tree against `error_mark_node'. (This test is just a test for pointer equality.) If an error has occurred during front-end processing the flag `errorcount' will be set. If the ! front-end has encountered code it cannot handle, it will issue a message to the user and set `sorrycount'. When these flags are set, any macro or function which normally returns a tree of a particular kind may instead return the `error_mark_node'. Thus, if you intend to --- 617,623 ---- usual practice is to compare the tree against `error_mark_node'. (This test is just a test for pointer equality.) If an error has occurred during front-end processing the flag `errorcount' will be set. If the ! front end has encountered code it cannot handle, it will issue a message to the user and set `sorrycount'. When these flags are set, any macro or function which normally returns a tree of a particular kind may instead return the `error_mark_node'. Thus, if you intend to *************** the `error_mark_node'. *** 621,636 **** Occasionally, a particular tree slot (like an operand to an expression, or a particular field in a declaration) will be referred to ! as "reserved for the back-end." These slots are used to store RTL when ! the tree is converted to RTL for use by the GCC back-end. However, if ! that process is not taking place (e.g., if the front-end is being hooked ! up to an intelligent editor), then those slots may be used by the ! back-end presently in use. If you encounter situations that do not match this documentation, such as tree nodes of types not mentioned here, or macros documented to return entities of a particular kind that instead return entities of ! some different kind, you have found a bug, either in the front-end or in the documentation. Please report these bugs as you would any other bug. * Menu: --- 626,641 ---- Occasionally, a particular tree slot (like an operand to an expression, or a particular field in a declaration) will be referred to ! as "reserved for the back end." These slots are used to store RTL when ! the tree is converted to RTL for use by the GCC back end. However, if ! that process is not taking place (e.g., if the front end is being hooked ! up to an intelligent editor), then those slots may be used by the back ! end presently in use. If you encounter situations that do not match this documentation, such as tree nodes of types not mentioned here, or macros documented to return entities of a particular kind that instead return entities of ! some different kind, you have found a bug, either in the front end or in the documentation. Please report these bugs as you would any other bug. * Menu: *************** types: *** 808,814 **** `TYPE_PTROB_P' This predicate holds for a pointer to object type. Note however that it does not hold for the generic pointer to object type `void ! *'. You may use `TYPE_PTROBV_P' to test for a pointer to object type as well as `void *'. `same_type_p' --- 813,819 ---- `TYPE_PTROB_P' This predicate holds for a pointer to object type. Note however that it does not hold for the generic pointer to object type `void ! *'. You may use `TYPE_PTROBV_P' to test for a pointer to object type as well as `void *'. `same_type_p' *************** will encounter while examining the inter *** 948,954 **** `TYPENAME_TYPE' Used to represent a construct of the form `typename T::A'. The `TYPE_CONTEXT' is `T'; the `TYPE_NAME' is an `IDENTIFIER_NODE' for ! `A'. If the type is specified via a template-id, then `TYPENAME_TYPE_FULLNAME' yields a `TEMPLATE_ID_EXPR'. The `TREE_TYPE' is non-`NULL' if the node is implicitly generated in support for the implicit typename extension; in which case the --- 953,959 ---- `TYPENAME_TYPE' Used to represent a construct of the form `typename T::A'. The `TYPE_CONTEXT' is `T'; the `TYPE_NAME' is an `IDENTIFIER_NODE' for ! `A'. If the type is specified via a template-id, then `TYPENAME_TYPE_FULLNAME' yields a `TEMPLATE_ID_EXPR'. The `TREE_TYPE' is non-`NULL' if the node is implicitly generated in support for the implicit typename extension; in which case the *************** namespace. Just skip it without attempt *** 1068,1074 **** Although most entries on this list will be declarations, `TREE_LIST' nodes may also appear. In this case, the `TREE_VALUE' will be an `OVERLOAD'. The value of the `TREE_PURPOSE' is ! unspecified; back-ends should ignore this value. As with the other kinds of declarations returned by `cp_namespace_decls', the `TREE_CHAIN' will point to the next declaration in this list. --- 1073,1079 ---- Although most entries on this list will be declarations, `TREE_LIST' nodes may also appear. In this case, the `TREE_VALUE' will be an `OVERLOAD'. The value of the `TREE_PURPOSE' is ! unspecified; back ends should ignore this value. As with the other kinds of declarations returned by `cp_namespace_decls', the `TREE_CHAIN' will point to the next declaration in this list. diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-18 gcc-3.0.1/gcc/doc/gcc.info-18 *** gcc-3.0/gcc/doc/gcc.info-18 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-18 Sun Aug 19 18:05:18 2001 *************** only for classes declared with the `clas *** 53,59 **** list. Given one member, the next can be found by following the `TREE_CHAIN'. You should not depend in any way on the order in which fields appear on this list. All nodes on this list will be `DECL' ! nodes. A `FIELD_DECL' is used to represent a non-static data member, a `VAR_DECL' is used to represent a static data member, and a `TYPE_DECL' is used to represent a type. Note that the `CONST_DECL' for an enumeration constant will appear on this list, if the enumeration type --- 53,59 ---- list. Given one member, the next can be found by following the `TREE_CHAIN'. You should not depend in any way on the order in which fields appear on this list. All nodes on this list will be `DECL' ! nodes. A `FIELD_DECL' is used to represent a non-static data member, a `VAR_DECL' is used to represent a static data member, and a `TYPE_DECL' is used to represent a type. Note that the `CONST_DECL' for an enumeration constant will appear on this list, if the enumeration type *************** the "base-class portion" of an object. *** 64,70 **** The `TYPE_VFIELD' is a compiler-generated field used to point to virtual function tables. It may or may not appear on the `TYPE_FIELDS' ! list. However, back-ends should handle the `TYPE_VFIELD' just like all the entries on the `TYPE_FIELDS' list. The function members are available on the `TYPE_METHODS' list. --- 64,70 ---- The `TYPE_VFIELD' is a compiler-generated field used to point to virtual function tables. It may or may not appear on the `TYPE_FIELDS' ! list. However, back ends should handle the `TYPE_VFIELD' just like all the entries on the `TYPE_FIELDS' list. The function members are available on the `TYPE_METHODS' list. *************** class-type. *** 143,149 **** overloaded.  ! File: gcc.info, Node: Declarations, Next: Expression trees, Prev: Functions, Up: Trees Declarations ============ --- 143,149 ---- overloaded.  ! File: gcc.info, Node: Declarations, Next: Attributes, Prev: Functions, Up: Trees Declarations ============ *************** Functions::. *** 227,233 **** should always use the `DECL_SIZE' and `DECL_ALIGN' rather than the `TYPE_SIZE' and `TYPE_ALIGN' given by the `TREE_TYPE', since special attributes may have been applied to the variable to give ! it a particular size and alignment. You may use the predicates `DECL_THIS_STATIC' or `DECL_THIS_EXTERN' to test whether the storage class specifiers `static' or `extern' were used to declare a variable. --- 227,233 ---- should always use the `DECL_SIZE' and `DECL_ALIGN' rather than the `TYPE_SIZE' and `TYPE_ALIGN' given by the `TREE_TYPE', since special attributes may have been applied to the variable to give ! it a particular size and alignment. You may use the predicates `DECL_THIS_STATIC' or `DECL_THIS_EXTERN' to test whether the storage class specifiers `static' or `extern' were used to declare a variable. *************** Functions::. *** 276,282 **** `DECL_TEMPLATE_SPECIALIZATIONS' are a `TREE_LIST'. The `TREE_VALUE' of each node in the list is a `TEMPLATE_DECL's or `FUNCTION_DECL's representing specializations (including ! instantiations) of this template. Back-ends can safely ignore `TEMPLATE_DECL's, but should examine `FUNCTION_DECL' nodes on the specializations list just as they would ordinary `FUNCTION_DECL' nodes. --- 276,282 ---- `DECL_TEMPLATE_SPECIALIZATIONS' are a `TREE_LIST'. The `TREE_VALUE' of each node in the list is a `TEMPLATE_DECL's or `FUNCTION_DECL's representing specializations (including ! instantiations) of this template. Back ends can safely ignore `TEMPLATE_DECL's, but should examine `FUNCTION_DECL' nodes on the specializations list just as they would ordinary `FUNCTION_DECL' nodes. *************** Functions::. *** 287,293 **** contains partial specializations of the class. `USING_DECL' ! Back-ends can safely ignore these nodes.  File: gcc.info, Node: Functions, Next: Declarations, Prev: Scopes, Up: Trees --- 287,293 ---- contains partial specializations of the class. `USING_DECL' ! Back ends can safely ignore these nodes.  File: gcc.info, Node: Functions, Next: Declarations, Prev: Scopes, Up: Trees *************** representation indicates that the GNU ne *** 328,338 **** use. For details on the semantics of nested functions, see the GCC Manual. The nested function can refer to local variables in its containing function. Such references are not explicitly marked in the ! tree structure; back-ends must look at the `DECL_CONTEXT' for the referenced `VAR_DECL'. If the `DECL_CONTEXT' for the referenced `VAR_DECL' is not the same as the function currently being processed, and neither `DECL_EXTERNAL' nor `DECL_STATIC' hold, then the reference ! is to a local variable in a containing function, and the back-end must take appropriate action. * Menu: --- 328,338 ---- use. For details on the semantics of nested functions, see the GCC Manual. The nested function can refer to local variables in its containing function. Such references are not explicitly marked in the ! tree structure; back ends must look at the `DECL_CONTEXT' for the referenced `VAR_DECL'. If the `DECL_CONTEXT' for the referenced `VAR_DECL' is not the same as the function currently being processed, and neither `DECL_EXTERNAL' nor `DECL_STATIC' hold, then the reference ! is to a local variable in a containing function, and the back end must take appropriate action. * Menu: *************** Function Basics *** 368,374 **** mangled name is computed in the same way on all platforms; if special processing is required to deal with the object file format used on a particular platform, it is the responsibility of the ! back-end to perform those modifications. (Of course, the back-end should not modify `DECL_ASSEMBLER_NAME' itself.) `DECL_EXTERNAL' --- 368,374 ---- mangled name is computed in the same way on all platforms; if special processing is required to deal with the object file format used on a particular platform, it is the responsibility of the ! back end to perform those modifications. (Of course, the back end should not modify `DECL_ASSEMBLER_NAME' itself.) `DECL_EXTERNAL' *************** Function Bodies *** 528,534 **** --------------- A function that has a definition in the current translation unit will ! have a non-NULL `DECL_INITIAL'. However, back-ends should not make use of the particular value given by `DECL_INITIAL'. The `DECL_SAVED_TREE' macro will give the complete body of the --- 528,534 ---- --------------- A function that has a definition in the current translation unit will ! have a non-NULL `DECL_INITIAL'. However, back ends should not make use of the particular value given by `DECL_INITIAL'. The `DECL_SAVED_TREE' macro will give the complete body of the *************** several statements chained together. *** 648,654 **** `CLEANUP_STMT' Used to represent an action that should take place upon exit from the enclosing scope. Typically, these actions are calls to ! destructors for local objects, but back-ends cannot rely on this fact. If these nodes are in fact representing such destructors, `CLEANUP_DECL' will be the `VAR_DECL' destroyed. Otherwise, `CLEANUP_DECL' will be `NULL_TREE'. In any case, the --- 648,654 ---- `CLEANUP_STMT' Used to represent an action that should take place upon exit from the enclosing scope. Typically, these actions are calls to ! destructors for local objects, but back ends cannot rely on this fact. If these nodes are in fact representing such destructors, `CLEANUP_DECL' will be the `VAR_DECL' destroyed. Otherwise, `CLEANUP_DECL' will be `NULL_TREE'. In any case, the *************** several statements chained together. *** 661,666 **** --- 661,668 ---- Used to represent a brace-enclosed block. The first substatement is given by `COMPOUND_BODY'. Subsequent substatements are found by following the `TREE_CHAIN' link from one substatement to the next. + The `COMPOUND_BODY' will be `NULL_TREE' if there are no + substatements. `CONTINUE_STMT' Used to represent a `continue' statement. There are no additional *************** several statements chained together. *** 763,769 **** a scope. On exit from a scope, all cleanups from `CLEANUP_STMT's occurring in the scope must be run, in reverse order to the order in which they were encountered. If `SCOPE_NULLIFIED_P' or ! `SCOPE_NO_CLEANUPS_P' holds of the scope, back-ends should behave as if the `SCOPE_STMT' were not present at all. `START_CATCH_STMT' --- 765,771 ---- a scope. On exit from a scope, all cleanups from `CLEANUP_STMT's occurring in the scope must be run, in reverse order to the order in which they were encountered. If `SCOPE_NULLIFIED_P' or ! `SCOPE_NO_CLEANUPS_P' holds of the scope, back ends should behave as if the `SCOPE_STMT' were not present at all. `START_CATCH_STMT' *************** several statements chained together. *** 804,811 **** `terminate' must be called. `USING_STMT' ! Used to represent a `using' directive. The namespace is given by ! `USING_STMT_NAMESPACE', which will be a NAMESPACE_DECL. This node is needed inside template functions, to implement using directives during instantiation. --- 806,813 ---- `terminate' must be called. `USING_STMT' ! Used to represent a `using' directive. The namespace is given by ! `USING_STMT_NAMESPACE', which will be a NAMESPACE_DECL. This node is needed inside template functions, to implement using directives during instantiation. *************** several statements chained together. *** 816,819 **** --- 818,851 ---- condition. The `WHILE_BODY' is the body of the loop. + +  + File: gcc.info, Node: Attributes, Next: Expression trees, Prev: Declarations, Up: Trees + + Attributes in trees + =================== + + Attributes, as specified using the `__attribute__' keyword, are + represented internally as a `TREE_LIST'. The `TREE_PURPOSE' is the + name of the attribute, as an `IDENTIFIER_NODE'. The `TREE_VALUE' is a + `TREE_LIST' of the arguments of the attribute, if any, or `NULL_TREE' + if there are no arguments; the arguments are stored as the `TREE_VALUE' + of successive entries in the list, and may be identifiers or + expressions. The `TREE_CHAIN' of the attribute is the next attribute + in a list of attributes applying to the same declaration or type, or + `NULL_TREE' if there are no further attributes in the list. + + Attributes may be attached to declarations and to types; these + attributes may be accessed with the following macros. At present only + machine-dependent attributes are stored in this way (other attributes + cause changes to the declaration or type or to other internal compiler + data structures, but are not themselves stored along with the + declaration or type), but in future all attributes may be stored like + this. + + - Tree Macro: tree DECL_MACHINE_ATTRIBUTES (tree DECL) + This macro returns the attributes on the declaration DECL. + + - Tree Macro: tree TYPE_ATTRIBUTES (tree TYPE) + This macro returns the attributes on the type TYPE. diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-19 gcc-3.0.1/gcc/doc/gcc.info-19 *** gcc-3.0/gcc/doc/gcc.info-19 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-19 Sun Aug 19 18:05:18 2001 *************** software. Copies published by the Free *** 36,42 **** funds for GNU development.  ! File: gcc.info, Node: Expression trees, Prev: Declarations, Up: Trees Expressions =========== --- 36,42 ---- funds for GNU development.  ! File: gcc.info, Node: Expression trees, Prev: Attributes, Up: Trees Expressions =========== *************** of nodes being unshared. *** 59,68 **** In what follows, some nodes that one might expect to always have type `bool' are documented to have either integral or boolean type. At some ! point in the future, the C front-end may also make use of this same intermediate representation, and at this point these nodes will certainly have integral type. The previous sentence is not meant to ! imply that the C++ front-end does not or will not give these nodes integral type. Below, we list the various kinds of expression nodes. Except where --- 59,68 ---- In what follows, some nodes that one might expect to always have type `bool' are documented to have either integral or boolean type. At some ! point in the future, the C front end may also make use of this same intermediate representation, and at this point these nodes will certainly have integral type. The previous sentence is not meant to ! imply that the C++ front end does not or will not give these nodes integral type. Below, we list the various kinds of expression nodes. Except where *************** kinds of expressions: *** 238,244 **** `NON_LVALUE_EXPR' These nodes indicate that their one and only operand is not an ! lvalue. A back-end can treat these identically to the single operand. `NOP_EXPR' --- 238,244 ---- `NON_LVALUE_EXPR' These nodes indicate that their one and only operand is not an ! lvalue. A back end can treat these identically to the single operand. `NOP_EXPR' *************** kinds of expressions: *** 266,272 **** exception. However, there is one implicit action not represented in that expression; namely the call to `__throw'. This function takes no arguments. If `setjmp'/`longjmp' exceptions are used, the ! function `__sjthrow' is called instead. The normal GCC back-end uses the function `emit_throw' to generate this code; you can examine this function to see what needs to be done. --- 266,272 ---- exception. However, there is one implicit action not represented in that expression; namely the call to `__throw'. This function takes no arguments. If `setjmp'/`longjmp' exceptions are used, the ! function `__sjthrow' is called instead. The normal GCC back end uses the function `emit_throw' to generate this code; you can examine this function to see what needs to be done. *************** kinds of expressions: *** 301,307 **** These nodes represent logical and, logical or, and logical exclusive or. They are strict; both arguments are always evaluated. There are no corresponding operators in C or C++, but ! the front-end will sometimes generate these expressions anyhow, if it can tell that strictness does not matter. `PLUS_EXPR' --- 301,307 ---- These nodes represent logical and, logical or, and logical exclusive or. They are strict; both arguments are always evaluated. There are no corresponding operators in C or C++, but ! the front end will sometimes generate these expressions anyhow, if it can tell that strictness does not matter. `PLUS_EXPR' *************** kinds of expressions: *** 451,457 **** `CONSTRUCTOR' These nodes represent the brace-enclosed initializers for a structure or array. The first operand is reserved for use by the ! back-end. The second operand is a `TREE_LIST'. If the `TREE_TYPE' of the `CONSTRUCTOR' is a `RECORD_TYPE' or `UNION_TYPE', then the `TREE_PURPOSE' of each node in the `TREE_LIST' will be a `FIELD_DECL' and the `TREE_VALUE' of each --- 451,457 ---- `CONSTRUCTOR' These nodes represent the brace-enclosed initializers for a structure or array. The first operand is reserved for use by the ! back end. The second operand is a `TREE_LIST'. If the `TREE_TYPE' of the `CONSTRUCTOR' is a `RECORD_TYPE' or `UNION_TYPE', then the `TREE_PURPOSE' of each node in the `TREE_LIST' will be a `FIELD_DECL' and the `TREE_VALUE' of each *************** of an RTX code with the macro `GET_RTX_C *** 673,679 **** `i' An RTX code for an entire instruction: `INSN', `JUMP_INSN', and ! `CALL_INSN'. *Note Insns::. `m' An RTX code for something that matches in insns, such as --- 673,679 ---- `i' An RTX code for an entire instruction: `INSN', `JUMP_INSN', and ! `CALL_INSN'. *Note Insns::. `m' An RTX code for something that matches in insns, such as *************** are accessed with the following macros: *** 852,858 **** In `mem' expressions, the alias set to which X belongs. If zero, X is not in any alias set, and may alias anything. If nonzero, X may only alias objects in the same alias set. This value is set ! (in a language-specific manner) by the front-end. This field is not a bit-field; it is in an integer, found as the second argument to the `mem'. --- 852,858 ---- In `mem' expressions, the alias set to which X belongs. If zero, X is not in any alias set, and may alias anything. If nonzero, X may only alias objects in the same alias set. This value is set ! (in a language-specific manner) by the front end. This field is not a bit-field; it is in an integer, found as the second argument to the `mem'. *************** are accessed with the following macros: *** 970,976 **** `CONSTANT_POOL_ADDRESS_P (X)' Nonzero in a `symbol_ref' if it refers to part of the current function's "constants pool". These are addresses close to the ! beginning of the function, and GNU CC assumes they can be addressed directly (perhaps with the help of base registers). Stored in the `unchanging' field and printed as `/u'. --- 970,976 ---- `CONSTANT_POOL_ADDRESS_P (X)' Nonzero in a `symbol_ref' if it refers to part of the current function's "constants pool". These are addresses close to the ! beginning of the function, and GCC assumes they can be addressed directly (perhaps with the help of base registers). Stored in the `unchanging' field and printed as `/u'. diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-2 gcc-3.0.1/gcc/doc/gcc.info-2 *** gcc-3.0/gcc/doc/gcc.info-2 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-2 Sun Aug 19 18:05:18 2001 *************** from C, such as C++ and Objective C) tha *** 49,60 **** extensions that conflict with ISO C++. This turns off certain features of GCC that are incompatible with ! ISO C (when compiling C code), or of standard C++ (when compiling ! C++ code), such as the `asm' and `typeof' keywords, and predefined ! macros such as `unix' and `vax' that identify the type of system ! you are using. It also enables the undesirable and rarely used ! ISO trigraph feature. For the C compiler, it disables recognition ! of C++ style `//' comments as well as the `inline' keyword. The alternate keywords `__asm__', `__extension__', `__inline__' and `__typeof__' continue to work despite `-ansi'. You would not --- 49,61 ---- extensions that conflict with ISO C++. This turns off certain features of GCC that are incompatible with ! ISO C89 (when compiling C code), or of standard C++ (when ! compiling C++ code), such as the `asm' and `typeof' keywords, and ! predefined macros such as `unix' and `vax' that identify the type ! of system you are using. It also enables the undesirable and ! rarely used ISO trigraph feature. For the C compiler, it disables ! recognition of C++ style `//' comments as well as the `inline' ! keyword. The alternate keywords `__asm__', `__extension__', `__inline__' and `__typeof__' continue to work despite `-ansi'. You would not *************** from C, such as C++ and Objective C) tha *** 76,119 **** Functions which would normally be built in but do not have semantics defined by ISO C (such as `alloca' and `ffs') are not built-in functions with `-ansi' is used. *Note Other built-in ! functions provided by GNU CC: Other Builtins, for details of the functions affected. `-std=' ! Determine the language standard. A value for this option must be provided; possible values are `iso9899:1990' ! Same as `-ansi' `iso9899:199409' ! ISO C as modified in amend. 1 `iso9899:1999' ISO C99. Note that this standard is not yet fully supported; ! see `http://gcc.gnu.org/gcc-3.0/c99status.html' for more ! information. ! ! `c89' ! same as `-std=iso9899:1990' ! ! `c99' ! same as `-std=iso9899:1999' `gnu89' ! default, iso9899:1990 + gnu extensions `gnu99' - iso9899:1999 + gnu extensions - - `iso9899:199x' - same as `-std=iso9899:1999', deprecated - - `c9x' - same as `-std=iso9899:1999', deprecated - `gnu9x' ! same as `-std=gnu99', deprecated Even when this option is not specified, you can still use some of the features of newer standards in so far as they do not conflict --- 77,114 ---- Functions which would normally be built in but do not have semantics defined by ISO C (such as `alloca' and `ffs') are not built-in functions with `-ansi' is used. *Note Other built-in ! functions provided by GCC: Other Builtins, for details of the functions affected. `-std=' ! Determine the language standard. This option is currently only ! supported when compiling C. A value for this option must be provided; possible values are + `c89' `iso9899:1990' ! ISO C89 (same as `-ansi'). `iso9899:199409' ! ISO C89 as modified in amendment 1. + `c99' + `c9x' `iso9899:1999' + `iso9899:199x' ISO C99. Note that this standard is not yet fully supported; ! see `http://gcc.gnu.org/c99status.html' for more information. ! The names `c9x' and `iso9899:199x' are deprecated. `gnu89' ! Default, ISO C89 plus GNU extensions (including some C99 ! features). `gnu99' `gnu9x' ! ISO C99 plus GNU extensions. When ISO C99 is fully ! implemented in GCC, this will become the default. The name ! `gnu9x' is deprecated. Even when this option is not specified, you can still use some of the features of newer standards in so far as they do not conflict *************** from C, such as C++ and Objective C) tha *** 160,166 **** `-fno-builtin' Don't recognize built-in functions that do not begin with `__builtin_' as prefix. *Note Other built-in functions provided ! by GNU CC: Other Builtins, for details of the functions affected, including those which are not built-in functions when `-ansi' or `-std' options for strict ISO C conformance are used because they do not have an ISO standard meaning. --- 155,161 ---- `-fno-builtin' Don't recognize built-in functions that do not begin with `__builtin_' as prefix. *Note Other built-in functions provided ! by GCC: Other Builtins, for details of the functions affected, including those which are not built-in functions when `-ansi' or `-std' options for strict ISO C conformance are used because they do not have an ISO standard meaning. *************** GCC. *** 385,391 **** An alternative to using this option is to specify that your `operator new' does not throw any exceptions; if you declare it ! `throw()', g++ will check the return value. See also `new (nothrow)'. `-fconserve-space' --- 380,386 ---- An alternative to using this option is to specify that your `operator new' does not throw any exceptions; if you declare it ! `throw()', G++ will check the return value. See also `new (nothrow)'. `-fconserve-space' *************** GCC. *** 422,428 **** The C++ standard allows an implementation to omit creating a temporary which is only used to initialize another object of the same type. Specifying this option disables that optimization, and ! forces g++ to call the copy constructor in all cases. `-fno-enforce-eh-specs' Don't check for violation of exception specifications at runtime. --- 417,423 ---- The C++ standard allows an implementation to omit creating a temporary which is only used to initialize another object of the same type. Specifying this option disables that optimization, and ! forces G++ to call the copy constructor in all cases. `-fno-enforce-eh-specs' Don't check for violation of exception specifications at runtime. *************** GCC. *** 454,460 **** specified by the C++ standard. If `-fno-for-scope' is specified, the scope of variables declared in a for-init-statement extends to the end of the enclosing scope, as was the case in old versions of ! gcc, and other (traditional) implementations of C++. The default if neither flag is given to follow the standard, but to allow and give a warning for old-style code that would --- 449,455 ---- specified by the C++ standard. If `-fno-for-scope' is specified, the scope of variables declared in a for-init-statement extends to the end of the enclosing scope, as was the case in old versions of ! G++, and other (traditional) implementations of C++. The default if neither flag is given to follow the standard, but to allow and give a warning for old-style code that would *************** GCC. *** 462,481 **** `-fno-gnu-keywords' Do not recognize `typeof' as a keyword, so that code can use this ! word as an identifier. You can use the keyword `__typeof__' instead. `-ansi' implies `-fno-gnu-keywords'. - `-fno-honor-std' - Ignore `namespace std', instead of treating it as a real namespace. - With this switch, the compiler will ignore - `namespace-declarations', `using-declarations', - `using-directives', and `namespace-names', if they involve `std'. - - This option is only useful if you have manually compiled the C++ - run-time library with the same switch. Otherwise, your programs - will not link. The use of this option is not recommended, and the - option may be removed from a future version of G++. - `-fno-implicit-templates' Never emit code for non-inline templates which are instantiated implicitly (i.e. by use); only emit code for explicit --- 457,465 ---- `-fno-gnu-keywords' Do not recognize `typeof' as a keyword, so that code can use this ! word as an identifier. You can use the keyword `__typeof__' instead. `-ansi' implies `-fno-gnu-keywords'. `-fno-implicit-templates' Never emit code for non-inline templates which are instantiated implicitly (i.e. by use); only emit code for explicit *************** GCC. *** 510,521 **** `-fno-optional-diags' Disable diagnostics that the standard says a compiler does not ! need to issue. Currently, the only such diagnostic issued by g++ is the one for a name having multiple meanings within a class. `-fpermissive' Downgrade messages about nonconformant code from errors to ! warnings. By default, g++ effectively sets `-pedantic-errors' without `-pedantic'; this option reverses that. This behavior and this option are superseded by `-pedantic', which works as it does for GNU C. --- 494,505 ---- `-fno-optional-diags' Disable diagnostics that the standard says a compiler does not ! need to issue. Currently, the only such diagnostic issued by G++ is the one for a name having multiple meanings within a class. `-fpermissive' Downgrade messages about nonconformant code from errors to ! warnings. By default, G++ effectively sets `-pedantic-errors' without `-pedantic'; this option reverses that. This behavior and this option are superseded by `-pedantic', which works as it does for GNU C. *************** GCC. *** 541,547 **** `-ftemplate-depth-N' Set the maximum instantiation depth for template classes to N. A limit on the template instantiation depth is needed to detect ! endless recursions during template class instantiation. ANSI/ISO C++ conforming programs must not rely on a maximum depth greater than 17. --- 525,531 ---- `-ftemplate-depth-N' Set the maximum instantiation depth for template classes to N. A limit on the template instantiation depth is needed to detect ! endless recursions during template class instantiation. ANSI/ISO C++ conforming programs must not rely on a maximum depth greater than 17. *************** have meanings only for C++ programs: *** 607,626 **** warnings. `-Wno-deprecated (C++ only)' ! Do not warn about usage of deprecated features. *Note Deprecated Features::. `-Wno-non-template-friend (C++ only)' Disable warnings when non-templatized friend functions are declared ! within a template. With the advent of explicit template ! specification support in g++, if the name of the friend is an unqualified-id (i.e., `friend foo(int)'), the C++ language specification demands that the friend declare or define an ! ordinary, nontemplate function. (Section 14.5.3). Before g++ implemented explicit specification, unqualified-ids could be interpreted as a particular specialization of a templatized ! function. Because this non-conforming behavior is no longer the ! default behavior for g++, `-Wnon-template-friend' allows the compiler to check existing code for potential trouble spots, and is on by default. This new compiler behavior can be turned off with `-Wno-non-template-friend' which keeps the conformant --- 591,610 ---- warnings. `-Wno-deprecated (C++ only)' ! Do not warn about usage of deprecated features. *Note Deprecated Features::. `-Wno-non-template-friend (C++ only)' Disable warnings when non-templatized friend functions are declared ! within a template. With the advent of explicit template ! specification support in G++, if the name of the friend is an unqualified-id (i.e., `friend foo(int)'), the C++ language specification demands that the friend declare or define an ! ordinary, nontemplate function. (Section 14.5.3). Before G++ implemented explicit specification, unqualified-ids could be interpreted as a particular specialization of a templatized ! function. Because this non-conforming behavior is no longer the ! default behavior for G++, `-Wnon-template-friend' allows the compiler to check existing code for potential trouble spots, and is on by default. This new compiler behavior can be turned off with `-Wno-non-template-friend' which keeps the conformant *************** have meanings only for C++ programs: *** 648,659 **** `-Wsign-promo (C++ only)' Warn when overload resolution chooses a promotion from unsigned or enumeral type to a signed type over a conversion to an unsigned ! type of the same size. Previous versions of g++ would try to preserve unsignedness, but the standard mandates the current behavior. `-Wsynth (C++ only)' ! Warn when g++'s synthesis behavior does not match that of cfront. For instance: struct A { --- 632,643 ---- `-Wsign-promo (C++ only)' Warn when overload resolution chooses a promotion from unsigned or enumeral type to a signed type over a conversion to an unsigned ! type of the same size. Previous versions of G++ would try to preserve unsignedness, but the standard mandates the current behavior. `-Wsynth (C++ only)' ! Warn when G++'s synthesis behavior does not match that of cfront. For instance: struct A { *************** have meanings only for C++ programs: *** 667,673 **** a = b; } ! In this example, g++ will synthesize a default `A& operator = (const A&);', while cfront will use the user-defined `operator ='.  --- 651,657 ---- a = b; } ! In this example, G++ will synthesize a default `A& operator = (const A&);', while cfront will use the user-defined `operator ='.  *************** of the output device's aspect (e.g. its *** 725,738 **** described below can be used to control the diagnostic messages formatting algorithm, e.g. how many characters per line, how often source location information should be reported. Right now, only the ! C++ front-end can honor these options. However it is expected, in the ! near future, that the remaining front-ends would be able to digest them correctly. `-fmessage-length=N' Try to format error messages so that they fit on lines of about N ! characters. The default is 72 characters for g++ and 0 for the ! rest of the front-ends supported by GCC. If N is zero, then no line-wrapping will be done; each error message will appear on a single line. --- 709,722 ---- described below can be used to control the diagnostic messages formatting algorithm, e.g. how many characters per line, how often source location information should be reported. Right now, only the ! C++ front end can honor these options. However it is expected, in the ! near future, that the remaining front ends would be able to digest them correctly. `-fmessage-length=N' Try to format error messages so that they fit on lines of about N ! characters. The default is 72 characters for `g++' and 0 for the ! rest of the front ends supported by GCC. If N is zero, then no line-wrapping will be done; each error message will appear on a single line. diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-20 gcc-3.0.1/gcc/doc/gcc.info-20 *** gcc-3.0/gcc/doc/gcc.info-20 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-20 Sun Aug 19 18:05:18 2001 *************** values. *** 278,286 **** `(const_double:M ADDR I0 I1 ...)' Represents either a floating-point constant of mode M or an integer constant too large to fit into `HOST_BITS_PER_WIDE_INT' ! bits but small enough to fit within twice that number of bits (GNU ! CC does not provide a mechanism to represent even larger ! constants). In the latter case, M will be `VOIDmode'. ADDR is used to contain the `mem' expression that corresponds to the location in memory that at which the constant can be found. If --- 278,286 ---- `(const_double:M ADDR I0 I1 ...)' Represents either a floating-point constant of mode M or an integer constant too large to fit into `HOST_BITS_PER_WIDE_INT' ! bits but small enough to fit within twice that number of bits (GCC ! does not provide a mechanism to represent even larger constants). ! In the latter case, M will be `VOIDmode'. ADDR is used to contain the `mem' expression that corresponds to the location in memory that at which the constant can be found. If *************** registers and to main memory. *** 603,610 **** `(mem:M ADDR ALIAS)' This RTX represents a reference to main memory at an address represented by the expression ADDR. M specifies how large a unit ! of memory is accessed. ALIAS specifies an alias set for the ! reference. In general two items are in different alias sets if they cannot reference the same memory address. `(addressof:M REG)' --- 603,610 ---- `(mem:M ADDR ALIAS)' This RTX represents a reference to main memory at an address represented by the expression ADDR. M specifies how large a unit ! of memory is accessed. ALIAS specifies an alias set for the ! reference. In general two items are in different alias sets if they cannot reference the same memory address. `(addressof:M REG)' *************** File: gcc.info, Node: Vector Operations *** 923,929 **** Vector Operations ================= ! All normal rtl expressions can be used with vector modes; they are interpreted as operating on each part of the vector independently. Additionally, there are a few new expressions to describe specific vector operations. --- 923,929 ---- Vector Operations ================= ! All normal RTL expressions can be used with vector modes; they are interpreted as operating on each part of the vector independently. Additionally, there are a few new expressions to describe specific vector operations. diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-21 gcc-3.0.1/gcc/doc/gcc.info-21 *** gcc-3.0/gcc/doc/gcc.info-21 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-21 Sun Aug 19 18:05:18 2001 *************** operands of these. *** 172,178 **** for one of the inputs unless the `&' constraint is specified for the selected alternative (*note Modifiers::). You can clobber either a specific hard register, a pseudo register, or a `scratch' ! expression; in the latter two cases, GNU CC will allocate a hard register that is available there for use as a temporary. For instructions that require a temporary register, you should use --- 172,178 ---- for one of the inputs unless the `&' constraint is specified for the selected alternative (*note Modifiers::). You can clobber either a specific hard register, a pseudo register, or a `scratch' ! expression; in the latter two cases, GCC will allocate a hard register that is available there for use as a temporary. For instructions that require a temporary register, you should use *************** Embedded Side-Effects on Addresses *** 379,385 **** Here is an example of its use: ! (mem:SF (post_modify:SI (reg:SI 42) (plus (reg:SI 42) (reg:SI 48)))) 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. --- 379,386 ---- Here is an example of its use: ! (mem:SF (post_modify:SI (reg:SI 42) (plus (reg:SI 42) ! (reg:SI 48)))) 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 -Nrc3pad gcc-3.0/gcc/doc/gcc.info-22 gcc-3.0.1/gcc/doc/gcc.info-22 *** gcc-3.0/gcc/doc/gcc.info-22 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-22 Sun Aug 19 18:05:18 2001 *************** argument, a stdio stream, and returns a *** 48,62 **** problem since reading RTL occurs only as part of building the compiler. People frequently have the idea of using RTL stored as text in a ! file as an interface between a language front end and the bulk of GNU ! CC. This idea is not feasible. ! GNU CC was designed to use RTL internally only. Correct RTL for a ! given program is very dependent on the particular target machine. And ! the RTL does not contain all the information about the program. ! The proper way to interface GNU CC to a new language front end is ! with the "tree" data structure, described in the files `tree.h' and `tree.def'. The documentation for this structure (*note Trees::) is incomplete. --- 48,62 ---- problem since reading RTL occurs only as part of building the compiler. People frequently have the idea of using RTL stored as text in a ! file as an interface between a language front end and the bulk of GCC. ! This idea is not feasible. ! GCC was designed to use RTL internally only. Correct RTL for a given ! program is very dependent on the particular target machine. And the RTL ! does not contain all the information about the program. ! The proper way to interface GCC to a new language front end is with ! the "tree" data structure, described in the files `tree.h' and `tree.def'. The documentation for this structure (*note Trees::) is incomplete. *************** named pattern it needs, it will abort. *** 133,141 **** If a `define_insn' is used, the template given is inserted into the insn list. If a `define_expand' is used, one of three things happens, based on the condition logic. The condition logic may manually create ! new insns for the insn list, say via `emit_insn()', and invoke DONE. ! For certain named patterns, it may invoke FAIL to tell the compiler to ! use an alternate way of performing that task. If it invokes neither `DONE' nor `FAIL', the template given in the pattern is inserted, as if the `define_expand' were a `define_insn'. --- 133,141 ---- If a `define_insn' is used, the template given is inserted into the insn list. If a `define_expand' is used, one of three things happens, based on the condition logic. The condition logic may manually create ! new insns for the insn list, say via `emit_insn()', and invoke `DONE'. ! For certain named patterns, it may invoke `FAIL' to tell the compiler ! to use an alternate way of performing that task. If it invokes neither `DONE' nor `FAIL', the template given in the pattern is inserted, as if the `define_expand' were a `define_insn'. *************** substitution of the operands. *** 313,324 **** For an operand that must be a register, PREDICATE should be `"register_operand"'. Using `"general_operand"' would be valid, since the reload pass would copy any non-register operands through ! registers, but this would make GNU CC do extra work, it would ! prevent invariant operands (such as constant) from being removed ! from loops, and it would prevent the register allocator from doing ! the best possible job. On RISC machines, it is usually most ! efficient to allow PREDICATE to accept only objects that the ! constraints allow. For an operand that must be a constant, you must be sure to either use `"immediate_operand"' for PREDICATE, or make the instruction --- 313,324 ---- For an operand that must be a register, PREDICATE should be `"register_operand"'. Using `"general_operand"' would be valid, since the reload pass would copy any non-register operands through ! registers, but this would make GCC do extra work, it would prevent ! invariant operands (such as constant) from being removed from ! loops, and it would prevent the register allocator from doing the ! best possible job. On RISC machines, it is usually most efficient ! to allow PREDICATE to accept only objects that the constraints ! allow. For an operand that must be a constant, you must be sure to either use `"immediate_operand"' for PREDICATE, or make the instruction diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-23 gcc-3.0.1/gcc/doc/gcc.info-23 *** gcc-3.0/gcc/doc/gcc.info-23 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-23 Sun Aug 19 18:05:18 2001 *************** _TMS320C3x/C4x--`c4x.h'_ *** 680,682 **** --- 680,711 ---- `U' Symbolic address + _S/390 and zSeries--`s390.h'_ + + `a' + Address register (general purpose register except r0) + + `d' + Data register (arbitrary general purpose register) + + `f' + Floating-point register + + `I' + Unsigned 8-bit constant (0-255) + + `J' + Unsigned 12-bit constant (0-4095) + + `K' + Signed 16-bit constant (-32768-32767) + + `L' + Unsigned 16-bit constant (0-65535) + + `Q' + Memory reference without index register + + `S' + Symbolic constant suitable for use with the `larl' instruction + diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-24 gcc-3.0.1/gcc/doc/gcc.info-24 *** gcc-3.0/gcc/doc/gcc.info-24 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-24 Sun Aug 19 18:05:18 2001 *************** pattern to accomplish a certain task. *** 788,795 **** and the last is the address of the label, to be placed in the location for the incoming static chain. ! On most machines you need not define this pattern, since GNU CC ! will already generate the correct code, which is to load the frame pointer and static chain, restore the stack (using the `restore_stack_nonlocal' pattern, if defined), and jump indirectly to the dispatcher. You need only define this pattern if this code --- 788,795 ---- and the last is the address of the label, to be placed in the location for the incoming static chain. ! On most machines you need not define this pattern, since GCC will ! already generate the correct code, which is to load the frame pointer and static chain, restore the stack (using the `restore_stack_nonlocal' pattern, if defined), and jump indirectly to the dispatcher. You need only define this pattern if this code *************** pattern to accomplish a certain task. *** 797,807 **** `nonlocal_goto_receiver' This pattern, if defined, contains code needed at the target of a ! nonlocal goto after the code already generated by GNU CC. You ! will not normally need to define this pattern. A typical reason ! why you might need this pattern is if some value, such as a ! pointer to a global table, must be restored when the frame pointer ! is restored. Note that a nonlocal goto only occurs within a unit-of-translation, so a global table pointer that is shared by all functions of a given module need not be restored. There are no arguments. --- 797,807 ---- `nonlocal_goto_receiver' This pattern, if defined, contains code needed at the target of a ! nonlocal goto after the code already generated by GCC. You will ! not normally need to define this pattern. A typical reason why ! you might need this pattern is if some value, such as a pointer to ! a global table, must be restored when the frame pointer is ! restored. Note that a nonlocal goto only occurs within a unit-of-translation, so a global table pointer that is shared by all functions of a given module need not be restored. There are no arguments. diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-25 gcc-3.0.1/gcc/doc/gcc.info-25 *** gcc-3.0/gcc/doc/gcc.info-25 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-25 Sun Aug 19 18:05:18 2001 *************** File: gcc.info, Node: Jump Patterns, N *** 41,53 **** Defining Jump Instruction Patterns ================================== ! For most machines, GNU CC assumes that the machine has a condition ! code. A comparison insn sets the condition code, recording the results ! of both signed and unsigned comparison of the given operands. A ! separate branch insn tests the condition code and branches or not ! according its value. The branch insns come in distinct signed and ! unsigned flavors. Many common machines, such as the Vax, the 68000 and ! the 32000, work this way. Some machines have distinct signed and unsigned compare instructions, and only one set of conditional branch instructions. The --- 41,53 ---- Defining Jump Instruction Patterns ================================== ! For most machines, GCC assumes that the machine has a condition code. ! A comparison insn sets the condition code, recording the results of both ! signed and unsigned comparison of the given operands. A separate branch ! insn tests the condition code and branches or not according its value. ! The branch insns come in distinct signed and unsigned flavors. Many ! common machines, such as the Vax, the 68000 and the 32000, work this ! way. Some machines have distinct signed and unsigned compare instructions, and only one set of conditional branch instructions. The *************** output an unsigned compare; otherwise ou *** 61,67 **** the branch itself is output, you can treat signed and unsigned branches identically. ! The reason you can do this is that GNU CC always generates a pair of consecutive RTL insns, possibly separated by `note' insns, one to set the condition code and one to test it, and keeps the pair inviolate until the end. --- 61,67 ---- the branch itself is output, you can treat signed and unsigned branches identically. ! The reason you can do this is that GCC always generates a pair of consecutive RTL insns, possibly separated by `note' insns, one to set the condition code and one to test it, and keeps the pair inviolate until the end. *************** iterations. This avoids the need for fe *** 164,180 **** `dbra'-like instruction and avoids pipeline stalls associated with the jump. ! GNU CC has three special named patterns to support low overhead ! looping, `decrement_and_branch_until_zero', `doloop_begin', and ! `doloop_end'. The first pattern, `decrement_and_branch_until_zero', is ! not emitted during RTL generation but may be emitted during the ! instruction combination phase. This requires the assistance of the ! loop optimizer, using information collected during strength reduction, ! to reverse a loop to count down to zero. Some targets also require the ! loop optimizer to add a `REG_NONNEG' note to indicate that the ! iteration count is always positive. This is needed if the target ! performs a signed loop termination test. For example, the 68000 uses a ! pattern similar to the following for its `dbra' instruction: (define_insn "decrement_and_branch_until_zero" [(set (pc) --- 164,180 ---- `dbra'-like instruction and avoids pipeline stalls associated with the jump. ! GCC has three special named patterns to support low overhead looping, ! `decrement_and_branch_until_zero', `doloop_begin', and `doloop_end'. ! The first pattern, `decrement_and_branch_until_zero', is not emitted ! during RTL generation but may be emitted during the instruction ! combination phase. This requires the assistance of the loop optimizer, ! using information collected during strength reduction, to reverse a ! loop to count down to zero. Some targets also require the loop ! optimizer to add a `REG_NONNEG' note to indicate that the iteration ! count is always positive. This is needed if the target performs a ! signed loop termination test. For example, the 68000 uses a pattern ! similar to the following for its `dbra' instruction: (define_insn "decrement_and_branch_until_zero" [(set (pc) *************** for RTL generation and it can produce mo *** 355,361 **** * The condition, a string containing a C expression. This expression is used to express how the availability of this pattern depends on subclasses of target machine, selected by command-line ! options when GNU CC is run. This is just like the condition of a `define_insn' that has a standard name. Therefore, the condition (if present) may not depend on the data in the insn being matched, but only the target-machine-type flags. The compiler needs to --- 355,361 ---- * The condition, a string containing a C expression. This expression is used to express how the availability of this pattern depends on subclasses of target machine, selected by command-line ! options when GCC is run. This is just like the condition of a `define_insn' that has a standard name. Therefore, the condition (if present) may not depend on the data in the insn being matched, but only the target-machine-type flags. The compiler needs to *************** is used. In particular, it gives a pred *** 383,390 **** A true operand, which needs to be specified in order to generate RTL from the pattern, should be described with a `match_operand' in its first occurrence in the RTL template. This enters information on the ! operand's predicate into the tables that record such things. GNU CC ! uses the information to preload the operand into a register if that is required for valid RTL code. If the operand is referred to more than once, subsequent references should use `match_dup'. --- 383,390 ---- A true operand, which needs to be specified in order to generate RTL from the pattern, should be described with a `match_operand' in its first occurrence in the RTL template. This enters information on the ! operand's predicate into the tables that record such things. GCC uses ! the information to preload the operand into a register if that is required for valid RTL code. If the operand is referred to more than once, subsequent references should use `match_dup'. *************** condition with the insn condition. For *** 698,704 **** [(set_attr "type" "alu1")]) In this case, the actual split condition will be ! "TARGET_ZERO_EXTEND_WITH_AND && !optimize_size && reload_completed." The `define_insn_and_split' construction provides exactly the same functionality as two separate `define_insn' and `define_split' --- 698,704 ---- [(set_attr "type" "alu1")]) In this case, the actual split condition will be ! `TARGET_ZERO_EXTEND_WITH_AND && !optimize_size && reload_completed'. The `define_insn_and_split' construction provides exactly the same functionality as two separate `define_insn' and `define_split' diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-27 gcc-3.0.1/gcc/doc/gcc.info-27 *** gcc-3.0/gcc/doc/gcc.info-27 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-27 Sun Aug 19 18:05:18 2001 *************** Controlling the Compilation Driver, `gcc *** 293,299 **** there is no other way to accomplish the effect you need. `LINK_ELIMINATE_DUPLICATE_LDIRECTORIES' ! A nonzero value causes collect2 to remove duplicate -L search directories from linking commands. Do not give it a nonzero value if removing duplicate search directories changes the linker's semantics. --- 293,299 ---- there is no other way to accomplish the effect you need. `LINK_ELIMINATE_DUPLICATE_LDIRECTORIES' ! A nonzero value causes collect2 to remove duplicate `-LDIRECTORY' search directories from linking commands. Do not give it a nonzero value if removing duplicate search directories changes the linker's semantics. *************** RTX to hold the register containing the *** 662,668 **** RTX can then be used to implement the `__builtin_return_address' function, for level 0. ! Note - earlier implementations of GCC used a single data area to hold all of the per-function information. Thus when processing of a nested function began the old per-function data had to be pushed onto a stack, and when the processing was finished, it had to be popped off the --- 662,668 ---- RTX can then be used to implement the `__builtin_return_address' function, for level 0. ! Note--earlier implementations of GCC used a single data area to hold all of the per-function information. Thus when processing of a nested function began the old per-function data had to be pushed onto a stack, and when the processing was finished, it had to be popped off the *************** can be C expressions that refer to stati *** 736,745 **** registers. This macro need not be a constant. `LIBGCC2_WORDS_BIG_ENDIAN' ! Define this macro if WORDS_BIG_ENDIAN is not constant. This must ! be a constant value with the same meaning as WORDS_BIG_ENDIAN, ! which will be used only when compiling libgcc2.c. Typically the ! value will be set based on preprocessor defines. `FLOAT_WORDS_BIG_ENDIAN' Define this macro to have the value 1 if `DFmode', `XFmode' or --- 736,746 ---- registers. This macro need not be a constant. `LIBGCC2_WORDS_BIG_ENDIAN' ! Define this macro if `WORDS_BIG_ENDIAN' is not constant. This ! must be a constant value with the same meaning as ! `WORDS_BIG_ENDIAN', which will be used only when compiling ! `libgcc2.c'. Typically the value will be set based on ! preprocessor defines. `FLOAT_WORDS_BIG_ENDIAN' Define this macro to have the value 1 if `DFmode', `XFmode' or *************** can be C expressions that refer to stati *** 835,848 **** Define this macro if there is a guaranteed alignment for the stack pointer on this machine. The definition is a C expression for the desired alignment (measured in bits). This value is used as a ! default if PREFERRED_STACK_BOUNDARY is not defined. `PREFERRED_STACK_BOUNDARY' Define this macro if you wish to preserve a certain alignment for the stack pointer. The definition is a C expression for the ! desired alignment (measured in bits). If STACK_BOUNDARY is also defined, this macro must evaluate to a value equal to or larger ! than STACK_BOUNDARY. If `PUSH_ROUNDING' is not defined, the stack will always be aligned to the specified boundary. If `PUSH_ROUNDING' is defined and --- 836,854 ---- Define this macro if there is a guaranteed alignment for the stack pointer on this machine. The definition is a C expression for the desired alignment (measured in bits). This value is used as a ! default if `PREFERRED_STACK_BOUNDARY' is not defined. `PREFERRED_STACK_BOUNDARY' Define this macro if you wish to preserve a certain alignment for the stack pointer. The definition is a C expression for the ! desired alignment (measured in bits). If `STACK_BOUNDARY' is also defined, this macro must evaluate to a value equal to or larger ! than `STACK_BOUNDARY'. ! ! `FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN' ! A C expression that evaluates true if `PREFERRED_STACK_BOUNDARY' is ! not guaranteed by the runtime and we should emit code to align the ! stack at the beginning of `main'. If `PUSH_ROUNDING' is not defined, the stack will always be aligned to the specified boundary. If `PUSH_ROUNDING' is defined and *************** can be C expressions that refer to stati *** 1086,1092 **** `TARGET_FLOAT_FORMAT' A code distinguishing the floating point format of the target ! machine. There are three defined values: `IEEE_FLOAT_FORMAT' This code indicates IEEE floating point. It is the default; --- 1092,1098 ---- `TARGET_FLOAT_FORMAT' A code distinguishing the floating point format of the target ! machine. There are five defined values: `IEEE_FLOAT_FORMAT' This code indicates IEEE floating point. It is the default; *************** can be C expressions that refer to stati *** 1094,1099 **** --- 1100,1111 ---- `VAX_FLOAT_FORMAT' This code indicates the peculiar format used on the Vax. + + `IBM_FLOAT_FORMAT' + This code indicates the format used on the IBM System/370. + + `C4X_FLOAT_FORMAT' + This code indicates the format used on the TMS320C3x/C4x. `UNKNOWN_FLOAT_FORMAT' This code indicates any other format. diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-28 gcc-3.0.1/gcc/doc/gcc.info-28 *** gcc-3.0/gcc/doc/gcc.info-28 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-28 Sun Aug 19 18:05:18 2001 *************** layout. *** 92,97 **** --- 92,102 ---- largest value that `CHAR_TYPE_SIZE' can have at run-time. This is used in `cpp'. + `BOOL_TYPE_SIZE' + A C expression for the size in bits of the C++ type `bool' on the + target machine. If you don't define this, the default is + `CHAR_TYPE_SIZE'. + `FLOAT_TYPE_SIZE' A C expression for the size in bits of the type `float' on the target machine. If you don't define this, the default is one word. diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-29 gcc-3.0.1/gcc/doc/gcc.info-29 *** gcc-3.0/gcc/doc/gcc.info-29 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-29 Sun Aug 19 18:05:18 2001 *************** Basic Stack Layout *** 144,150 **** frame debugging information like that provided by DWARF 2. If this RTL is a `REG', you should also define ! DWARF_FRAME_RETURN_COLUMN to `DWARF_FRAME_REGNUM (REGNO)'. `INCOMING_FRAME_SP_OFFSET' A C expression whose value is an integer giving the offset, in --- 144,150 ---- frame debugging information like that provided by DWARF 2. If this RTL is a `REG', you should also define ! `DWARF_FRAME_RETURN_COLUMN' to `DWARF_FRAME_REGNUM (REGNO)'. `INCOMING_FRAME_SP_OFFSET' A C expression whose value is an integer giving the offset, in *************** certain arguments in registers. *** 532,543 **** defaults to 0. `PUSH_ARGS' ! A C expression. If nonzero, push insns will be used to pass outgoing arguments. If the target machine does not have a push instruction, set it to zero. That directs GCC to use an alternate strategy: to allocate the entire argument block and then store the ! arguments into it. When PUSH_ARGS is nonzero, PUSH_ROUNDING must ! be defined too. On some machines, the definition `PUSH_ROUNDING (NPUSHED)' A C expression that is the number of bytes actually pushed onto the --- 532,543 ---- defaults to 0. `PUSH_ARGS' ! A C expression. If nonzero, push insns will be used to pass outgoing arguments. If the target machine does not have a push instruction, set it to zero. That directs GCC to use an alternate strategy: to allocate the entire argument block and then store the ! arguments into it. When `PUSH_ARGS' is nonzero, `PUSH_ROUNDING' ! must be defined too. On some machines, the definition `PUSH_ROUNDING (NPUSHED)' A C expression that is the number of bytes actually pushed onto the *************** certain arguments in registers. *** 554,560 **** #define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1) `ACCUMULATE_OUTGOING_ARGS' ! A C expression. If nonzero, the maximum amount of space required for outgoing arguments will be computed and placed into the variable `current_function_outgoing_args_size'. No space will be pushed onto the stack for each call; instead, the function --- 554,560 ---- #define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1) `ACCUMULATE_OUTGOING_ARGS' ! A C expression. If nonzero, the maximum amount of space required for outgoing arguments will be computed and placed into the variable `current_function_outgoing_args_size'. No space will be pushed onto the stack for each call; instead, the function *************** certain arguments in registers. *** 631,637 **** FUNDECL is a C variable whose value is a tree node that describes the function in question. Normally it is a node of type `FUNCTION_DECL' that describes the declaration of the function. ! From this you can obtain the DECL_MACHINE_ATTRIBUTES of the function. FUNTYPE is a C variable whose value is a tree node that describes --- 631,637 ---- FUNDECL is a C variable whose value is a tree node that describes the function in question. Normally it is a node of type `FUNCTION_DECL' that describes the declaration of the function. ! From this you can obtain the `DECL_MACHINE_ATTRIBUTES' of the function. FUNTYPE is a C variable whose value is a tree node that describes *************** the stack. *** 776,782 **** function's responsibility to make a copy of arguments passed by invisible reference. Normally, the caller makes a copy and passes the address of the copy to the routine being called. When ! FUNCTION_ARG_CALLEE_COPIES is defined and is nonzero, the caller does not make a copy. Instead, it passes a pointer to the "live" value. The called function must not modify this value. If it can be determined that the value won't be modified, it need not make a --- 776,782 ---- function's responsibility to make a copy of arguments passed by invisible reference. Normally, the caller makes a copy and passes the address of the copy to the routine being called. When ! `FUNCTION_ARG_CALLEE_COPIES' is defined and is nonzero, the caller does not make a copy. Instead, it passes a pointer to the "live" value. The called function must not modify this value. If it can be determined that the value won't be modified, it need not make a diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-3 gcc-3.0.1/gcc/doc/gcc.info-3 *** gcc-3.0/gcc/doc/gcc.info-3 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-3 Sun Aug 19 18:05:18 2001 *************** GCC: *** 229,235 **** statement, which in this example is `if (b)'. This is often not what the programmer expected, as illustrated in the above example by indentation the programmer chose. When there is the potential ! for this confusion, GNU C will issue a warning when this flag is specified. To eliminate the warning, add explicit braces around the innermost `if' statement so there is no way the `else' could belong to the enclosing `if'. The resulting code would look like --- 229,235 ---- statement, which in this example is `if (b)'. This is often not what the programmer expected, as illustrated in the above example by indentation the programmer chose. When there is the potential ! for this confusion, GCC will issue a warning when this flag is specified. To eliminate the warning, add explicit braces around the innermost `if' statement so there is no way the `else' could belong to the enclosing `if'. The resulting code would look like *************** GCC: *** 297,304 **** return-value in a function whose return-type is not `void'. For C++, a function without return type always produces a ! diagnostic message, even when `-Wno-return-type' is specified. The ! only exceptions are `main' and functions defined in system headers. `-Wswitch' Warn whenever a `switch' statement has an index of enumeral type --- 297,305 ---- return-value in a function whose return-type is not `void'. For C++, a function without return type always produces a ! diagnostic message, even when `-Wno-return-type' is specified. ! The only exceptions are `main' and functions defined in system ! headers. `-Wswitch' Warn whenever a `switch' statement has an index of enumeral type *************** the warning. *** 631,643 **** at two- or four-byte boundaries. `-Wwrite-strings' ! Give string constants the type `const char[LENGTH]' so that ! copying the address of one into a non-`const' `char *' pointer ! will get a warning. These warnings will help you find at compile ! time code that can try to write into a string constant, but only ! if you have been very careful about using `const' in declarations ! and prototypes. Otherwise, it will just be a nuisance; this is ! why we did not make `-Wall' request these warnings. `-Wconversion' Warn if a prototype causes a type conversion that is different --- 632,646 ---- at two- or four-byte boundaries. `-Wwrite-strings' ! When compiling C, give string constants the type `const ! char[LENGTH]' so that copying the address of one into a ! non-`const' `char *' pointer will get a warning; when compiling ! C++, warn about the deprecated conversion from string constants to ! `char *'. These warnings will help you find at compile time code ! that can try to write into a string constant, but only if you have ! been very careful about using `const' in declarations and ! prototypes. Otherwise, it will just be a nuisance; this is why we ! did not make `-Wall' request these warnings. `-Wconversion' Warn if a prototype causes a type conversion that is different diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-30 gcc-3.0.1/gcc/doc/gcc.info-30 *** gcc-3.0/gcc/doc/gcc.info-30 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-30 Sun Aug 19 18:05:18 2001 *************** Function Entry and Exit *** 97,103 **** because the function prologue itself does all the pushing.) This region is used on machines where an argument may be passed partly in registers and partly in memory, and, in some ! cases to support the features in `varargs.h' and `stdarg.h'. * An area of memory used to save certain registers used by the function. The size of this area, which may also include --- 97,104 ---- because the function prologue itself does all the pushing.) This region is used on machines where an argument may be passed partly in registers and partly in memory, and, in some ! cases to support the features in `' and ! `'. * An area of memory used to save certain registers used by the function. The size of this area, which may also include *************** Generating Code for Profiling *** 308,315 **** The first word of this block is a flag which will be nonzero if the object module has already been initialized. So test this word first, and do not call `__bb_init_func' if the flag ! is nonzero. BLOCK_OR_LABEL contains a unique number which ! may be used to generate a label as a branch destination when `__bb_init_func' will not be called. Described in assembler language, the code to be output looks --- 309,316 ---- The first word of this block is a flag which will be nonzero if the object module has already been initialized. So test this word first, and do not call `__bb_init_func' if the flag ! is nonzero. LABELNO contains a unique number which may be ! used to generate a label as a branch destination when `__bb_init_func' will not be called. Described in assembler language, the code to be output looks *************** Generating Code for Profiling *** 325,339 **** Output code to call the subroutine `__bb_init_trace_func' and pass two parameters to it. The first parameter is the same as for `__bb_init_func'. The second parameter is the number of ! the first basic block of the function as given by ! BLOCK_OR_LABEL. Note that `__bb_init_trace_func' has to be ! called, even if the object module has been initialized ! already. Described in assembler language, the code to be output looks like: parameter1 <- LPBX0 ! parameter2 <- BLOCK_OR_LABEL call __bb_init_trace_func `BLOCK_PROFILER (FILE, BLOCKNO)' --- 326,339 ---- Output code to call the subroutine `__bb_init_trace_func' and pass two parameters to it. The first parameter is the same as for `__bb_init_func'. The second parameter is the number of ! the first basic block of the function as given by LABELNO. ! Note that `__bb_init_trace_func' has to be called, even if ! the object module has been initialized already. Described in assembler language, the code to be output looks like: parameter1 <- LPBX0 ! parameter2 <- LABELNO call __bb_init_trace_func `BLOCK_PROFILER (FILE, BLOCKNO)' *************** File: gcc.info, Node: Varargs, Next: T *** 464,477 **** Implementing the Varargs Macros =============================== ! GCC comes with an implementation of `varargs.h' and `stdarg.h' that ! work without change on machines that pass arguments on the stack. Other machines require their own implementations of varargs, and the two machine independent header files must have conditionals to include it. ! ISO `stdarg.h' differs from traditional `varargs.h' mainly in the ! calling convention for `va_start'. The traditional implementation takes just one argument, which is the variable in which to store the argument pointer. The ISO implementation of `va_start' takes an additional second argument. The user is supposed to write the last --- 464,477 ---- Implementing the Varargs Macros =============================== ! GCC comes with an implementation of `' and `' ! that work without change on machines that pass arguments on the stack. Other machines require their own implementations of varargs, and the two machine independent header files must have conditionals to include it. ! ISO `' differs from traditional `' mainly in ! the calling convention for `va_start'. The traditional implementation takes just one argument, which is the variable in which to store the argument pointer. The ISO implementation of `va_start' takes an additional second argument. The user is supposed to write the last *************** below. *** 526,532 **** `__builtin_next_arg (LASTARG)' This is the equivalent of `__builtin_args_info', for stack arguments. It returns the address of the first anonymous stack ! argument, as type `void *'. If `ARGS_GROW_DOWNWARD', it returns the address of the location above the first anonymous stack argument. Use it in `va_start' to initialize the pointer for fetching arguments from the stack. Also use it in `va_start' to --- 526,532 ---- `__builtin_next_arg (LASTARG)' This is the equivalent of `__builtin_args_info', for stack arguments. It returns the address of the first anonymous stack ! argument, as type `void *'. If `ARGS_GROW_DOWNWARD', it returns the address of the location above the first anonymous stack argument. Use it in `va_start' to initialize the pointer for fetching arguments from the stack. Also use it in `va_start' to *************** macro. *** 739,745 **** `CLEAR_INSN_CACHE (BEG, END)' If defined, expands to a C expression clearing the _instruction cache_ in the specified interval. If it is not defined, and the ! macro INSN_CACHE_SIZE is defined, some generic code is generated to clear the cache. The definition of this macro would typically be a series of `asm' statements. Both BEG and END are both pointer expressions. --- 739,745 ---- `CLEAR_INSN_CACHE (BEG, END)' If defined, expands to a C expression clearing the _instruction cache_ in the specified interval. If it is not defined, and the ! macro `INSN_CACHE_SIZE' is defined, some generic code is generated to clear the cache. The definition of this macro would typically be a series of `asm' statements. Both BEG and END are both pointer expressions. *************** Implicit Calls to Library Routines *** 833,839 **** `INIT_TARGET_OPTABS' Define this macro as a C statement that declares additional library ! routines renames existing ones. `init_optabs' calls this macro after initializing all the normal library routines. `FLOAT_LIB_COMPARE_RETURNS_BOOL' --- 833,839 ---- `INIT_TARGET_OPTABS' Define this macro as a C statement that declares additional library ! routines renames existing ones. `init_optabs' calls this macro after initializing all the normal library routines. `FLOAT_LIB_COMPARE_RETURNS_BOOL' diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-31 gcc-3.0.1/gcc/doc/gcc.info-31 *** gcc-3.0/gcc/doc/gcc.info-31 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-31 Sun Aug 19 18:05:18 2001 *************** Addressing Modes *** 216,222 **** registers into a register. On the other hand, for number of RISC processors offsets are limited so that often an intermediate address needs to be generated in order to address a stack slot. ! By defining LEGITIMIZE_RELOAD_ADDRESS appropriately, the intermediate addresses generated for adjacent some stack slots can be made identical, and thus be shared. --- 216,222 ---- registers into a register. On the other hand, for number of RISC processors offsets are limited so that often an intermediate address needs to be generated in order to address a stack slot. ! By defining `LEGITIMIZE_RELOAD_ADDRESS' appropriately, the intermediate addresses generated for adjacent some stack slots can be made identical, and thus be shared. *************** can also define additional sections. *** 755,761 **** argument of this macro. This is used in `crtstuff.c' if `INIT_SECTION_ASM_OP' or `FINI_SECTION_ASM_OP' to calls to initialization and finalization functions from the init and fini ! sections. By default, this macro is a simple function call. Some ports need hand-crafted assembly code to avoid dependencies on registers initialized in the function prologue or to ensure that constant pools don't end up too far way in the text section. --- 755,761 ---- argument of this macro. This is used in `crtstuff.c' if `INIT_SECTION_ASM_OP' or `FINI_SECTION_ASM_OP' to calls to initialization and finalization functions from the init and fini ! sections. By default, this macro is a simple function call. Some ports need hand-crafted assembly code to avoid dependencies on registers initialized in the function prologue or to ensure that constant pools don't end up too far way in the text section. *************** can also define additional sections. *** 840,846 **** `UNIQUE_SECTION (DECL, RELOC)' A C statement to build up a unique section name, expressed as a ! STRING_CST node, and assign it to `DECL_SECTION_NAME (DECL)'. RELOC indicates whether the initial value of EXP requires link-time relocations. If you do not define this macro, GCC will use the symbol name prefixed by `.' as the section name. Note - --- 840,846 ---- `UNIQUE_SECTION (DECL, RELOC)' A C statement to build up a unique section name, expressed as a ! `STRING_CST' node, and assign it to `DECL_SECTION_NAME (DECL)'. RELOC indicates whether the initial value of EXP requires link-time relocations. If you do not define this macro, GCC will use the symbol name prefixed by `.' as the section name. Note - *************** Defining the Output Assembler Language *** 908,914 **** ====================================== This section describes macros whose principal purpose is to describe ! how to write instructions in assembler language-rather than what the instructions do. * Menu: --- 908,914 ---- ====================================== This section describes macros whose principal purpose is to describe ! how to write instructions in assembler language--rather than what the instructions do. * Menu: diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-32 gcc-3.0.1/gcc/doc/gcc.info-32 *** gcc-3.0/gcc/doc/gcc.info-32 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-32 Sun Aug 19 18:05:18 2001 *************** outputting a single uninitialized variab *** 263,269 **** This macro controls how the assembler definitions of uninitialized global variables are output. This macro exists to properly ! support languages like `c++' which do not have `common' data. However, this macro currently is not defined for all targets. If this macro and `ASM_OUTPUT_ALIGNED_BSS' are not defined then `ASM_OUTPUT_COMMON' or `ASM_OUTPUT_ALIGNED_COMMON' or --- 263,269 ---- This macro controls how the assembler definitions of uninitialized global variables are output. This macro exists to properly ! support languages like C++ which do not have `common' data. However, this macro currently is not defined for all targets. If this macro and `ASM_OUTPUT_ALIGNED_BSS' are not defined then `ASM_OUTPUT_COMMON' or `ASM_OUTPUT_ALIGNED_COMMON' or *************** Output and Generation of Labels *** 542,549 **** A C statement to output to the stdio stream STREAM assembler code which defines (equates) the symbol NAME to have the value VALUE. ! If SET_ASM_OP is defined, a default definition is provided which is ! correct for most systems. `ASM_OUTPUT_DEF_FROM_DECLS (STREAM, DECL_OF_NAME, DECL_OF_VALUE)' A C statement to output to the stdio stream STREAM assembler code --- 542,549 ---- A C statement to output to the stdio stream STREAM assembler code which defines (equates) the symbol NAME to have the value VALUE. ! If `SET_ASM_OP' is defined, a default definition is provided which ! is correct for most systems. `ASM_OUTPUT_DEF_FROM_DECLS (STREAM, DECL_OF_NAME, DECL_OF_VALUE)' A C statement to output to the stdio stream STREAM assembler code *************** Output and Generation of Labels *** 555,575 **** `ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL (STREAM, SYMBOL, HIGH, LOW)' A C statement to output to the stdio stream STREAM assembler code which defines (equates) the symbol SYMBOL to have a value equal to ! the difference of the two symbols HIGH and LOW, i.e. HIGH minus LOW. GCC guarantees that the symbols HIGH and LOW are already known by the assembler so that the difference resolves into a constant. ! If SET_ASM_OP is defined, a default definition is provided which is ! correct for most systems. `ASM_OUTPUT_WEAK_ALIAS (STREAM, NAME, VALUE)' A C statement to output to the stdio stream STREAM assembler code which defines (equates) the weak symbol NAME to have the value ! VALUE. Define this macro if the target only supports weak aliases; define ! ASM_OUTPUT_DEF instead if possible. `OBJC_GEN_METHOD_LABEL (BUF, IS_INST, CLASS_NAME, CAT_NAME, SEL_NAME)' Define this macro to override the default assembler names used for --- 555,576 ---- `ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL (STREAM, SYMBOL, HIGH, LOW)' A C statement to output to the stdio stream STREAM assembler code which defines (equates) the symbol SYMBOL to have a value equal to ! the difference of the two symbols HIGH and LOW, i.e. HIGH minus LOW. GCC guarantees that the symbols HIGH and LOW are already known by the assembler so that the difference resolves into a constant. ! If `SET_ASM_OP' is defined, a default definition is provided which ! is correct for most systems. `ASM_OUTPUT_WEAK_ALIAS (STREAM, NAME, VALUE)' A C statement to output to the stdio stream STREAM assembler code which defines (equates) the weak symbol NAME to have the value ! VALUE. If VALUE is `NULL', it defines NAME as an undefined weak ! symbol. Define this macro if the target only supports weak aliases; define ! `ASM_OUTPUT_DEF' instead if possible. `OBJC_GEN_METHOD_LABEL (BUF, IS_INST, CLASS_NAME, CAT_NAME, SEL_NAME)' Define this macro to override the default assembler names used for *************** Output of Dispatch Tables *** 1048,1055 **** You must provide this macro on machines where the addresses in a dispatch table are relative to the table's own address. If ! defined, GNU CC will also use this macro on all machines when ! producing PIC. BODY is the body of the ADDR_DIFF_VEC; it is provided so that the mode and flags can be read. `ASM_OUTPUT_ADDR_VEC_ELT (STREAM, VALUE)' --- 1049,1056 ---- You must provide this macro on machines where the addresses in a dispatch table are relative to the table's own address. If ! defined, GCC will also use this macro on all machines when ! producing PIC. BODY is the body of the `ADDR_DIFF_VEC'; it is provided so that the mode and flags can be read. `ASM_OUTPUT_ADDR_VEC_ELT (STREAM, VALUE)' diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-33 gcc-3.0.1/gcc/doc/gcc.info-33 *** gcc-3.0/gcc/doc/gcc.info-33 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-33 Sun Aug 19 18:05:18 2001 *************** region. *** 94,101 **** `except.c' for details on when to define this, and how. `MASK_RETURN_ADDR' ! An rtx used to mask the return address found via RETURN_ADDR_RTX, ! so that it does not contain any extraneous set bits in it. `DWARF2_UNWIND_INFO' Define this macro to 0 if your target supports DWARF 2 frame unwind --- 94,102 ---- `except.c' for details on when to define this, and how. `MASK_RETURN_ADDR' ! An rtx used to mask the return address found via ! `RETURN_ADDR_RTX', so that it does not contain any extraneous set ! bits in it. `DWARF2_UNWIND_INFO' Define this macro to 0 if your target supports DWARF 2 frame unwind *************** region. *** 105,116 **** `OBJECT_FORMAT_ELF'), GCC will provide a default definition of 1. If this macro is defined to 1, the DWARF 2 unwinder will be the ! default exception handling mechanism; otherwise, setjmp/longjmp ! will be used by default. If this macro is defined to anything, the DWARF 2 unwinder will be ! used instead of inline unwinders and __unwind_function in the ! non-setjmp case. `DWARF_CIE_DATA_ALIGNMENT' This macro need only be defined if the target might save registers --- 106,117 ---- `OBJECT_FORMAT_ELF'), GCC will provide a default definition of 1. If this macro is defined to 1, the DWARF 2 unwinder will be the ! default exception handling mechanism; otherwise, ! `setjmp'/`longjmp' will be used by default. If this macro is defined to anything, the DWARF 2 unwinder will be ! used instead of inline unwinders and `__unwind_function' in the ! non-`setjmp' case. `DWARF_CIE_DATA_ALIGNMENT' This macro need only be defined if the target might save registers *************** Assembler Commands for Alignment *** 131,137 **** `LABEL_ALIGN_AFTER_BARRIER (LABEL)' The alignment (log base 2) to put in front of LABEL, which follows ! a BARRIER. This macro need not be defined if you don't want any special alignment to be done at such a time. Most machine descriptions do --- 132,138 ---- `LABEL_ALIGN_AFTER_BARRIER (LABEL)' The alignment (log base 2) to put in front of LABEL, which follows ! a `BARRIER'. This macro need not be defined if you don't want any special alignment to be done at such a time. Most machine descriptions do *************** Assembler Commands for Alignment *** 150,165 **** `LOOP_ALIGN (LABEL)' The alignment (log base 2) to put in front of LABEL, which follows ! a NOTE_INSN_LOOP_BEG note. This macro need not be defined if you don't want any special alignment to be done at such a time. Most machine descriptions do not currently define the macro. Unless it's necessary to inspect the LABEL parameter, it is better ! to set the variable ALIGN_LOOPS in the target's `OVERRIDE_OPTIONS'. Otherwise, you should try to honour the user's ! selection in ALIGN_LOOPS in a `LOOP_ALIGN' implementation. `LOOP_ALIGN_MAX_SKIP' The maximum number of bytes to skip when applying `LOOP_ALIGN'. --- 151,166 ---- `LOOP_ALIGN (LABEL)' The alignment (log base 2) to put in front of LABEL, which follows ! a `NOTE_INSN_LOOP_BEG' note. This macro need not be defined if you don't want any special alignment to be done at such a time. Most machine descriptions do not currently define the macro. Unless it's necessary to inspect the LABEL parameter, it is better ! to set the variable `align_loops' in the target's `OVERRIDE_OPTIONS'. Otherwise, you should try to honour the user's ! selection in `align_loops' in a `LOOP_ALIGN' implementation. `LOOP_ALIGN_MAX_SKIP' The maximum number of bytes to skip when applying `LOOP_ALIGN'. *************** Assembler Commands for Alignment *** 167,179 **** `LABEL_ALIGN (LABEL)' The alignment (log base 2) to put in front of LABEL. If ! LABEL_ALIGN_AFTER_BARRIER / LOOP_ALIGN specify a different alignment, the maximum of the specified values is used. Unless it's necessary to inspect the LABEL parameter, it is better ! to set the variable ALIGN_LABELS in the target's `OVERRIDE_OPTIONS'. Otherwise, you should try to honour the user's ! selection in ALIGN_LABELS in a `LABEL_ALIGN' implementation. `LABEL_ALIGN_MAX_SKIP' The maximum number of bytes to skip when applying `LABEL_ALIGN'. --- 168,180 ---- `LABEL_ALIGN (LABEL)' The alignment (log base 2) to put in front of LABEL. If ! `LABEL_ALIGN_AFTER_BARRIER' / `LOOP_ALIGN' specify a different alignment, the maximum of the specified values is used. Unless it's necessary to inspect the LABEL parameter, it is better ! to set the variable `align_labels' in the target's `OVERRIDE_OPTIONS'. Otherwise, you should try to honour the user's ! selection in `align_labels' in a `LABEL_ALIGN' implementation. `LABEL_ALIGN_MAX_SKIP' The maximum number of bytes to skip when applying `LABEL_ALIGN'. *************** Specific Options for DBX Output *** 394,407 **** `DBX_BLOCKS_FUNCTION_RELATIVE' Define this macro if the value of a symbol describing the scope of a block (`N_LBRAC' or `N_RBRAC') should be relative to the start ! of the enclosing function. Normally, GNU C uses an absolute ! address. `DBX_USE_BINCL' ! Define this macro if GNU C should generate `N_BINCL' and `N_EINCL' stabs for included header files, as on Sun systems. This macro ! also directs GNU C to output a type number as a pair of a file ! number and a type number within the file. Normally, GNU C does not generate `N_BINCL' or `N_EINCL' stabs, and it outputs a single number for a type number. --- 395,407 ---- `DBX_BLOCKS_FUNCTION_RELATIVE' Define this macro if the value of a symbol describing the scope of a block (`N_LBRAC' or `N_RBRAC') should be relative to the start ! of the enclosing function. Normally, GCC uses an absolute address. `DBX_USE_BINCL' ! Define this macro if GCC should generate `N_BINCL' and `N_EINCL' stabs for included header files, as on Sun systems. This macro ! also directs GCC to output a type number as a pair of a file ! number and a type number within the file. Normally, GCC does not generate `N_BINCL' or `N_EINCL' stabs, and it outputs a single number for a type number. *************** Mode Switching Instructions *** 787,793 **** the PR bit requires a general purpose register as a scratch register, hence these FPSCR sets have to be inserted before reload, i.e. you can't put this into instruction emitting or ! MACHINE_DEPENDENT_REORG. You can have multiple entities that are mode-switched, and select at run time which entities actually need it. --- 787,793 ---- the PR bit requires a general purpose register as a scratch register, hence these FPSCR sets have to be inserted before reload, i.e. you can't put this into instruction emitting or ! `MACHINE_DEPENDENT_REORG'. You can have multiple entities that are mode-switched, and select at run time which entities actually need it. *************** Mode Switching Instructions *** 813,819 **** ENTITY is an integer specifying a mode-switched entity. If `OPTIMIZE_MODE_SWITCHING' is defined, you must define this macro to return an integer value not larger than the corresponding element ! in NUM_MODES_FOR_MODE_SWITCHING, to denote the mode that ENTITY must be switched into prior to the execution of INSN. `NORMAL_MODE (ENTITY)' --- 813,819 ---- ENTITY is an integer specifying a mode-switched entity. If `OPTIMIZE_MODE_SWITCHING' is defined, you must define this macro to return an integer value not larger than the corresponding element ! in `NUM_MODES_FOR_MODE_SWITCHING', to denote the mode that ENTITY must be switched into prior to the execution of INSN. `NORMAL_MODE (ENTITY)' *************** Mode Switching Instructions *** 825,834 **** `MODE_PRIORITY_TO_MODE (ENTITY, N)' This macro specifies the order in which modes for ENTITY are processed. 0 is the highest priority, ! NUM_MODES_FOR_MODE_SWITCHING[ENTITY] - 1 the lowest. The value of ! the macro should be an integer designating a mode for ENTITY. For ! any fixed ENTITY, `mode_priority_to_mode' (ENTITY, N) shall be a ! bijection in 0 ... `num_modes_for_mode_switching'[ENTITY] - 1 . `EMIT_MODE_SET (ENTITY, MODE, HARD_REGS_LIVE)' Generate one or more insns to set ENTITY to MODE. HARD_REG_LIVE --- 825,834 ---- `MODE_PRIORITY_TO_MODE (ENTITY, N)' This macro specifies the order in which modes for ENTITY are processed. 0 is the highest priority, ! `NUM_MODES_FOR_MODE_SWITCHING[ENTITY] - 1' the lowest. The value ! of the macro should be an integer designating a mode for ENTITY. ! For any fixed ENTITY, `mode_priority_to_mode' (ENTITY, N) shall be ! a bijection in 0 ... `num_modes_for_mode_switching[ENTITY] - 1'. `EMIT_MODE_SET (ENTITY, MODE, HARD_REGS_LIVE)' Generate one or more insns to set ENTITY to MODE. HARD_REG_LIVE diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-34 gcc-3.0.1/gcc/doc/gcc.info-34 *** gcc-3.0/gcc/doc/gcc.info-34 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-34 Sun Aug 19 18:05:18 2001 *************** Miscellaneous Parameters *** 65,71 **** predicates to include in the list specified by this macro are those used in the most insn patterns. ! For each predicate function named in PREDICATE_CODES, a declaration will be generated in `insn-codes.h'. `SPECIAL_MODE_PREDICATES' --- 65,71 ---- predicates to include in the list specified by this macro are those used in the most insn patterns. ! For each predicate function named in `PREDICATE_CODES', a declaration will be generated in `insn-codes.h'. `SPECIAL_MODE_PREDICATES' *************** Miscellaneous Parameters *** 419,426 **** `HANDLE_PRAGMA_PACK_PUSH_POP' Define this macro (to a value of 1) if you want to support the ! Win32 style pragmas `#pragma pack(push,)' and `#pragma ! pack(pop)'. The pack(push,) pragma specifies the maximum alignment (in bytes) of fields within a structure, in much the same way as the `__aligned__' and `__packed__' `__attribute__'s do. A pack value of zero resets the behaviour to the default. --- 419,426 ---- `HANDLE_PRAGMA_PACK_PUSH_POP' Define this macro (to a value of 1) if you want to support the ! Win32 style pragmas `#pragma pack(push,N)' and `#pragma ! pack(pop)'. The `pack(push,N)' pragma specifies the maximum alignment (in bytes) of fields within a structure, in much the same way as the `__aligned__' and `__packed__' `__attribute__'s do. A pack value of zero resets the behaviour to the default. *************** Miscellaneous Parameters *** 562,568 **** Microsoft Windows symbols must be explicitly imported from shared libraries (DLLs). ! `MD_ASM_CLOBBERS' A C statement that adds to CLOBBERS `STRING_CST' trees for any hard regs the port wishes to automatically clobber for all asms. --- 562,568 ---- Microsoft Windows symbols must be explicitly imported from shared libraries (DLLs). ! `MD_ASM_CLOBBERS (CLOBBERS)' A C statement that adds to CLOBBERS `STRING_CST' trees for any hard regs the port wishes to automatically clobber for all asms. *************** Miscellaneous Parameters *** 700,706 **** up by `MD_INIT_BUILTINS'. EXP is the expression for the function call; the result should go to TARGET if that is convenient, and have mode MODE if that is convenient. SUBTARGET may be used as ! the target for computing one of EXP's operands. IGNORE is nonzero if the value is to be ignored. This macro should return the result of the call to the built-in function. --- 700,706 ---- up by `MD_INIT_BUILTINS'. EXP is the expression for the function call; the result should go to TARGET if that is convenient, and have mode MODE if that is convenient. SUBTARGET may be used as ! the target for computing one of EXP's operands. IGNORE is nonzero if the value is to be ignored. This macro should return the result of the call to the built-in function. *************** some macros that vary: *** 890,898 **** `UPDATE_PATH_HOST_CANONICALIZE (PATH, KEY)' If defined, a C statement (sans semicolon) that performs host-dependent canonicalization when a path used in a compilation ! driver or preprocessor is canonicalized. PATH is the path to be canonicalized, and KEY is a translation prefix when its value ! isn't `NULL'. If the C statement does canonicalize PATH, the new path should be returned. In addition, configuration files for system V define `bcopy', --- 890,898 ---- `UPDATE_PATH_HOST_CANONICALIZE (PATH, KEY)' If defined, a C statement (sans semicolon) that performs host-dependent canonicalization when a path used in a compilation ! driver or preprocessor is canonicalized. PATH is the path to be canonicalized, and KEY is a translation prefix when its value ! isn't `NULL'. If the C statement does canonicalize PATH, the new path should be returned. In addition, configuration files for system V define `bcopy', diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-35 gcc-3.0.1/gcc/doc/gcc.info-35 *** gcc-3.0/gcc/doc/gcc.info-35 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-35 Sun Aug 19 18:05:18 2001 *************** convey the exclusion of warranty; and ea *** 449,455 **** the "copyright" line and a pointer to where the full notice is found. ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES. ! Copyright (C) YYYY NAME OF AUTHOR This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by --- 449,455 ---- the "copyright" line and a pointer to where the full notice is found. ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES. ! Copyright (C) YEAR NAME OF AUTHOR This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by *************** mail. *** 472,478 **** If the program is interactive, make it output a short notice like this when it starts in an interactive mode: ! Gnomovision version 69, Copyright (C) YYYY NAME OF AUTHOR Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it --- 472,478 ---- If the program is interactive, make it output a short notice like this when it starts in an interactive mode: ! Gnomovision version 69, Copyright (C) YEAR NAME OF AUTHOR Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-36 gcc-3.0.1/gcc/doc/gcc.info-36 *** gcc-3.0/gcc/doc/gcc.info-36 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-36 Sun Aug 19 18:05:18 2001 *************** of contributors, such as the C++ library *** 60,67 **** * Alasdair Baird for various bugfixes. ! * Gerald Baumgartner added the signature extension to the C++ ! front-end. * Neil Booth for various work on cpplib. --- 60,67 ---- * Alasdair Baird for various bugfixes. ! * Gerald Baumgartner added the signature extension to the C++ front ! end. * Neil Booth for various work on cpplib. *************** of contributors, such as the C++ library *** 123,129 **** ongoing work with the RS6000/PowerPC port, and help cleaning up Haifa loop changes. ! * Paul Eggert for random hacking all over gcc. * Mark Elbrecht for various DJGPP improvements. --- 123,129 ---- ongoing work with the RS6000/PowerPC port, and help cleaning up Haifa loop changes. ! * Paul Eggert for random hacking all over GCC. * Mark Elbrecht for various DJGPP improvements. *************** of contributors, such as the C++ library *** 253,259 **** fixes. * Warren Levy major work on libgcj (Java Runtime Library) and random ! work on the Java front-end. * Alain Lichnewsky ported GCC to the Mips cpu. --- 253,259 ---- fixes. * Warren Levy major work on libgcj (Java Runtime Library) and random ! work on the Java front end. * Alain Lichnewsky ported GCC to the Mips cpu. diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-37 gcc-3.0.1/gcc/doc/gcc.info-37 *** gcc-3.0/gcc/doc/gcc.info-37 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-37 Sun Aug 19 18:05:18 2001 *************** look up both forms. *** 222,228 **** * fno-gnu-keywords: C++ Dialect Options. * fno-gnu-linker: Code Gen Options. * fno-guess-branch-probability: Optimize Options. - * fno-honor-std: C++ Dialect Options. * fno-ident: Code Gen Options. * fno-implement-inlines <1>: C++ Interface. * fno-implement-inlines: C++ Dialect Options. --- 222,227 ---- *************** look up both forms. *** 343,348 **** --- 342,348 ---- * m29000: AMD29K Options. * m29050: AMD29K Options. * m3: SH Options. + * m31: S/390 and zSeries Options. * m32: SPARC Options. * m32032: NS32K Options. * m32081: NS32K Options. *************** look up both forms. *** 360,365 **** --- 360,366 ---- * m486: i386 Options. * m4byte-functions: MCore Options. * m5200: M680x0 Options. + * m64 <1>: S/390 and zSeries Options. * m64: SPARC Options. * m68000: M680x0 Options. * m68020: M680x0 Options. *************** look up both forms. *** 412,417 **** --- 413,419 ---- * mauto-pic: IA-64 Options. * mb: SH Options. * mb-step: IA-64 Options. + * mbackchain: S/390 and zSeries Options. * mbig <1>: TMS320C3x/C4x Options. * mbig: RS/6000 and PowerPC Options. * mbig-endian <1>: IA-64 Options. *************** look up both forms. *** 482,487 **** --- 484,490 ---- * mdalign: SH Options. * mdata: ARC Options. * mdb: TMS320C3x/C4x Options. + * mdebug: S/390 and zSeries Options. * mdisable-fpregs: HPPA Options. * mdisable-indexing: HPPA Options. * mdiv: MCore Options. *************** look up both forms. *** 534,542 **** * mh: H8/300 Options. * mhalf-pic: MIPS Options. * mhandle-large-shift: M88K Options. ! * mhard-float <1>: MIPS Options. ! * mhard-float <2>: RS/6000 and PowerPC Options. ! * mhard-float <3>: ARM Options. * mhard-float: SPARC Options. * mhard-quad-float: SPARC Options. * mhardlit: MCore Options. --- 537,546 ---- * mh: H8/300 Options. * mhalf-pic: MIPS Options. * mhandle-large-shift: M88K Options. ! * mhard-float <1>: S/390 and zSeries Options. ! * mhard-float <2>: MIPS Options. ! * mhard-float <3>: RS/6000 and PowerPC Options. ! * mhard-float <4>: ARM Options. * mhard-float: SPARC Options. * mhard-quad-float: SPARC Options. * mhardlit: MCore Options. *************** look up both forms. *** 612,617 **** --- 616,622 ---- * mmult-bug: MN10300 Options. * mmulti-add: NS32K Options. * mmultiple: RS/6000 and PowerPC Options. + * mmvcle: S/390 and zSeries Options. * mmvme: RS/6000 and PowerPC Options. * mnbw: AMD29K Options. * mndw: AMD29K Options. *************** look up both forms. *** 625,630 **** --- 630,636 ---- * mno-am33: MN10300 Options. * mno-app-regs: SPARC Options. * mno-asm-optimize: D30V Options. + * mno-backchain: S/390 and zSeries Options. * mno-bit-align: RS/6000 and PowerPC Options. * mno-bk: TMS320C3x/C4x Options. * mno-bwx: DEC Alpha Options. *************** look up both forms. *** 635,640 **** --- 641,647 ---- * mno-complex-addr: Intel 960 Options. * mno-crt0: MN10300 Options. * mno-db: TMS320C3x/C4x Options. + * mno-debug: S/390 and zSeries Options. * mno-div: MCore Options. * mno-dwarf2-asm: IA-64 Options. * mno-eabi: RS/6000 and PowerPC Options. *************** look up both forms. *** 673,678 **** --- 680,686 ---- * mno-mult-bug: MN10300 Options. * mno-multiple: RS/6000 and PowerPC Options. * mno-multm: AMD29K Options. + * mno-mvcle: S/390 and zSeries Options. * mno-ocs-debug-info: M88K Options. * mno-ocs-frame-position: M88K Options. * mno-optimize-arg-area: M88K Options. *************** look up both forms. *** 704,709 **** --- 712,718 ---- * mno-short-load-bytes: ARM Options. * mno-short-load-words: ARM Options. * mno-slow-bytes: MCore Options. + * mno-small-exec: S/390 and zSeries Options. * mno-soft-float: DEC Alpha Options. * mno-space-regs: HPPA Options. * mno-split-addresses: MIPS Options. *************** look up both forms. *** 827,844 **** * mslow-bytes: MCore Options. * msmall <1>: TMS320C3x/C4x Options. * msmall: AMD29K Options. * msmall-memory: TMS320C3x/C4x Options. * msoft-float <1>: Interface. ! * msoft-float <2>: NS32K Options. ! * msoft-float <3>: DEC Alpha Options. ! * msoft-float <4>: Intel 960 Options. ! * msoft-float <5>: HPPA Options. ! * msoft-float <6>: i386 Options. ! * msoft-float <7>: MIPS Options. ! * msoft-float <8>: RS/6000 and PowerPC Options. ! * msoft-float <9>: ARM Options. ! * msoft-float <10>: AMD29K Options. ! * msoft-float <11>: SPARC Options. * msoft-float: M680x0 Options. * msoft-quad-float: SPARC Options. * msoft-reg-count: M68hc1x Options. --- 836,855 ---- * mslow-bytes: MCore Options. * msmall <1>: TMS320C3x/C4x Options. * msmall: AMD29K Options. + * msmall-exec: S/390 and zSeries Options. * msmall-memory: TMS320C3x/C4x Options. * msoft-float <1>: Interface. ! * msoft-float <2>: S/390 and zSeries Options. ! * msoft-float <3>: NS32K Options. ! * msoft-float <4>: DEC Alpha Options. ! * msoft-float <5>: Intel 960 Options. ! * msoft-float <6>: HPPA Options. ! * msoft-float <7>: i386 Options. ! * msoft-float <8>: MIPS Options. ! * msoft-float <9>: RS/6000 and PowerPC Options. ! * msoft-float <10>: ARM Options. ! * msoft-float <11>: AMD29K Options. ! * msoft-float <12>: SPARC Options. * msoft-float: M680x0 Options. * msoft-quad-float: SPARC Options. * msoft-reg-count: M68hc1x Options. diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-38 gcc-3.0.1/gcc/doc/gcc.info-38 *** gcc-3.0/gcc/doc/gcc.info-38 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-38 Sun Aug 19 18:05:18 2001 *************** Index *** 324,329 **** --- 324,330 ---- * attribute specifications: Attr Example. * attribute specifications example: Attr Example. * attribute syntax: Attribute Syntax. + * attributes: Attributes. * attributes, defining: Defining Attributes. * autoincrement addressing, availability: Portability. * autoincrement/decrement addressing: Simple Constraints. *************** Index *** 366,371 **** --- 367,373 ---- * BLKmode, and function return values: Calls. * BLOCK_PROFILER: Profiling. * BLOCK_PROFILER_CODE: Profiling. + * BOOL_TYPE_SIZE: Type Layout. * BOOLEAN_TYPE: Types. * bound pointer to member function: Bound member functions. * branch shortening: Passes. *************** Index *** 409,414 **** --- 411,417 ---- * C++ source file suffixes: Invoking G++. * C++ static data, declaring and defining: Static Definitions. * C/C++ Internal Representation: Trees. + * C4X_FLOAT_FORMAT: Storage Layout. * C89: Standards. * C90: Standards. * C94: Standards. *************** Index *** 437,442 **** --- 440,446 ---- * calling functions through the function vector on the H8/300 processors: Function Attributes. * CAN_DEBUG_WITHOUT_FP: Run-time Target. * CAN_ELIMINATE: Elimination. + * canadian: Makefile. * canonicalization of instructions: Insn Canonicalizations. * CANONICALIZE_COMPARISON: Condition Code. * canonicalize_funcptr_for_compare instruction pattern: Standard Names. *************** Index *** 544,549 **** --- 548,554 ---- * conditions, in patterns: Patterns. * configuration file: Config. * configurations supported by GNU CC: Configurations. + * configure terms: Makefile. * conflicting types: Disappointments. * conj: Other Builtins. * CONJ_EXPR: Expression trees. *************** Index *** 728,733 **** --- 733,739 ---- * DECL_INITIAL: Declarations. * DECL_LINKONCE_P: Function Basics. * DECL_LOCAL_FUNCTION_P: Function Basics. + * DECL_MACHINE_ATTRIBUTES: Attributes. * DECL_MAIN_P: Function Basics. * DECL_NAME <1>: Function Basics. * DECL_NAME <2>: Declarations. *************** Index *** 980,985 **** --- 986,992 ---- * FOR_EXPR: Function Bodies. * FOR_INIT_STMT: Function Bodies. * FOR_STMT: Function Bodies. + * FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN: Storage Layout. * force_reg: Standard Names. * format function attribute: Function Attributes. * format_arg function attribute: Function Attributes. *************** Index *** 1171,1176 **** --- 1178,1184 ---- * IBM RS/6000 and PowerPC Options: RS/6000 and PowerPC Options. * IBM RT options: RT Options. * IBM RT PC: Interoperation. + * IBM_FLOAT_FORMAT: Storage Layout. * identifier: Identifiers. * identifier names, dollar signs in: Dollar Signs. * IDENTIFIER_LENGTH: Identifiers. *************** Index *** 2095,2100 **** --- 2103,2109 ---- * run-time options: Code Gen Options. * run-time target specification: Run-time Target. * s in constraint: Simple Constraints. + * S/390 and zSeries Options: S/390 and zSeries Options. * same_type_p: Types. * save_stack_block instruction pattern: Standard Names. * save_stack_function instruction pattern: Standard Names. *************** Index *** 2461,2466 **** --- 2470,2476 ---- * type declaration: Declarations. * TYPE_ALIGN: Types. * TYPE_ARG_TYPES: Types. + * TYPE_ATTRIBUTES: Attributes. * TYPE_BINFO: Classes. * TYPE_BUILT_IN: Types. * TYPE_CONTEXT: Types. diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-4 gcc-3.0.1/gcc/doc/gcc.info-4 *** gcc-3.0/gcc/doc/gcc.info-4 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-4 Sun Aug 19 18:05:18 2001 *************** your program or GCC: *** 448,483 **** `-g'. `-fdump-translation-unit (C and C++ only)' - `-fdump-translation-unit-NUMBER (C and C++ only)' Dump a representation of the tree structure for the entire ! translation unit to a file. The file name is made by appending ! `.tu' to the source file name. If the `-NUMBER' form is used, NUMBER controls the details of the dump as described for the `-fdump-tree' options. `-fdump-class-hierarchy (C++ only)' - `-fdump-class-hierarchy-NUMBER (C++ only)' Dump a representation of each class's hierarchy and virtual ! function table layout to a file. The file name is made by ! appending `.class' to the source file name. If the `-NUMBER' form is used, NUMBER controls the details of the dump as described for the `-fdump-tree' options. `-fdump-ast-SWITCH (C++ only)' - `-fdump-ast-SWITCH-NUMBER (C++ only)' Control the dumping at various stages of processing the abstract ! syntax tree to a file. The file name is generated by appending a ! switch specific suffix to the source file name. If the `-NUMBER' form is used, NUMBER is a bit mask which controls the details of ! the dump. The following bits are meaningful (these are not set symbolically, as the primary function of these dumps is for debugging gcc itself): `bit0 (1)' ! Print the address of each node. Usually this is not meaningful as it changes according to the environment and source file. --- 448,480 ---- `-g'. `-fdump-translation-unit (C and C++ only)' `-fdump-translation-unit-NUMBER (C and C++ only)' Dump a representation of the tree structure for the entire ! translation unit to a file. The file name is made by appending ! `.tu' to the source file name. If the `-NUMBER' form is used, NUMBER controls the details of the dump as described for the `-fdump-tree' options. `-fdump-class-hierarchy (C++ only)' `-fdump-class-hierarchy-NUMBER (C++ only)' Dump a representation of each class's hierarchy and virtual ! function table layout to a file. The file name is made by ! appending `.class' to the source file name. If the `-NUMBER' form is used, NUMBER controls the details of the dump as described for the `-fdump-tree' options. `-fdump-ast-SWITCH (C++ only)' `-fdump-ast-SWITCH-NUMBER (C++ only)' Control the dumping at various stages of processing the abstract ! syntax tree to a file. The file name is generated by appending a ! switch specific suffix to the source file name. If the `-NUMBER' form is used, NUMBER is a bit mask which controls the details of ! the dump. The following bits are meaningful (these are not set symbolically, as the primary function of these dumps is for debugging gcc itself): `bit0 (1)' ! Print the address of each node. Usually this is not meaningful as it changes according to the environment and source file. *************** Options That Control Optimization *** 623,628 **** --- 620,628 ---- pointer elimination on machines where doing so does not interfere with debugging. + Please note the warning under `-fgcse' about invoking `-O2' on + programs that use computed gotos. + `-O3' Optimize yet more. `-O3' turns on all optimizations specified by `-O2' and also turns on the `-finline-functions' and *************** other form by either removing `no-' or a *** 725,737 **** explicitly marked as inline (ie marked with the inline keyword or defined within the class definition in c++). N is the size of functions that can be inlined in number of pseudo instructions ! (not counting parameter handling). The default value of n is ! 10000. Increasing this value can result in more inlined code at ! the cost of compilation time and memory consumption. Decreasing ! usually makes the compilation faster and less code will be inlined ! (which presumably means slower programs). This option is ! particularly useful for programs that use inlining heavily such as ! those based on recursive templates with c++. _Note:_ pseudo instruction represents, in this particular context, an abstract measurement of function's size. In no way, it --- 725,737 ---- explicitly marked as inline (ie marked with the inline keyword or defined within the class definition in c++). N is the size of functions that can be inlined in number of pseudo instructions ! (not counting parameter handling). The default value of N is 600. ! Increasing this value can result in more inlined code at the cost ! of compilation time and memory consumption. Decreasing usually ! makes the compilation faster and less code will be inlined (which ! presumably means slower programs). This option is particularly ! useful for programs that use inlining heavily such as those based ! on recursive templates with C++. _Note:_ pseudo instruction represents, in this particular context, an abstract measurement of function's size. In no way, it *************** of optimizations to be performed is desi *** 830,841 **** Perform a global common subexpression elimination pass. This pass also performs global constant and copy propagation. `-fdelete-null-pointer-checks' Use global dataflow analysis to identify and eliminate useless null pointer checks. Programs which rely on NULL pointer dereferences _not_ halting the program may not work properly with this option. ! Use -fno-delete-null-pointer-checks to disable this optimizing for ! programs which depend on that behavior. `-fexpensive-optimizations' Perform a number of minor optimizations that are relatively --- 830,846 ---- Perform a global common subexpression elimination pass. This pass also performs global constant and copy propagation. + _Note:_ When compiling a program using computed gotos, a GCC + extension, you may get better runtime performance if you disable + the global common subexpression elmination pass by adding + `-fno-gcse' to the command line. + `-fdelete-null-pointer-checks' Use global dataflow analysis to identify and eliminate useless null pointer checks. Programs which rely on NULL pointer dereferences _not_ halting the program may not work properly with this option. ! Use `-fno-delete-null-pointer-checks' to disable this optimizing ! for programs which depend on that behavior. `-fexpensive-optimizations' Perform a number of minor optimizations that are relatively *************** of optimizations to be performed is desi *** 1116,1121 **** --- 1121,1133 ---- allocated in order to perform the global common subexpression elimination optimization. If more memory than specified is required, the optimization will not be done. + + `max-pending-list-length' + The maximum number of pending dependancies scheduling will + allow before flushing the current state and starting over. + Large functions with few branches or calls can create + excessively large lists which needlessly consume memory and + resources. `max-inline-insns' If an function contains more than this many instructions, it diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-5 gcc-3.0.1/gcc/doc/gcc.info-5 *** gcc-3.0/gcc/doc/gcc.info-5 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-5 Sun Aug 19 18:05:18 2001 *************** cause the preprocessor output to be unsu *** 131,137 **** object file name for that source file, a colon, and the names of all the included files. Unless overridden explicitly, the object file name consists of the basename of the source file with any ! suffix replaced with object file suffix. If there are many included files then the rule is split into several lines using `\'-newline. --- 131,137 ---- object file name for that source file, a colon, and the names of all the included files. Unless overridden explicitly, the object file name consists of the basename of the source file with any ! suffix replaced with object file suffix. If there are many included files then the rule is split into several lines using `\'-newline. *************** cause the preprocessor output to be unsu *** 282,312 **** The nine trigraph sequences are `??(' ! -> `[' `??)' ! -> `]' `??<' ! -> `{' `??>' ! -> `}' `??=' ! -> `#' `??/' ! -> `\' `??'' ! -> `^' `??!' ! -> `|' `??-' ! -> `~' Trigraph support is not popular, so many compilers do not implement it properly. Portable code should not rely on trigraphs --- 282,312 ---- The nine trigraph sequences are `??(' ! ==> `[' `??)' ! ==> `]' `??<' ! ==> `{' `??>' ! ==> `}' `??=' ! ==> `#' `??/' ! ==> `\' `??'' ! ==> `^' `??!' ! ==> `|' `??-' ! ==> `~' Trigraph support is not popular, so many compilers do not implement it properly. Portable code should not rely on trigraphs *************** not doing a link step. *** 399,405 **** `-nostdlib' Do not use the standard system startup files or libraries when linking. No startup files and only the libraries you specify will ! be passed to the linker. The compiler may generate calls to memcmp, memset, and memcpy for System V (and ISO C) environments or to bcopy and bzero for BSD environments. These entries are usually resolved by entries in libc. These entry points should be --- 399,405 ---- `-nostdlib' Do not use the standard system startup files or libraries when linking. No startup files and only the libraries you specify will ! be passed to the linker. The compiler may generate calls to memcmp, memset, and memcpy for System V (and ISO C) environments or to bcopy and bzero for BSD environments. These entries are usually resolved by entries in libc. These entry points should be *************** not doing a link step. *** 489,497 **** ---------- Footnotes ---------- (1) On some systems, `gcc -shared' needs to build supplementary stub ! code for constructors to work. On multi-libbed systems, `gcc -shared' must select the correct support libraries to link against. Failing to ! supply the correct flags may lead to subtle defects. Supplying them in cases where they are not necessary is innocuous.  --- 489,497 ---- ---------- Footnotes ---------- (1) On some systems, `gcc -shared' needs to build supplementary stub ! code for constructors to work. On multi-libbed systems, `gcc -shared' must select the correct support libraries to link against. Failing to ! supply the correct flags may lead to subtle defects. Supplying them in cases where they are not necessary is innocuous.  *************** libraries and for parts of the compiler: *** 510,516 **** directories are searched before the system header file directories. However, you should not use this option to add directories that contain vendor-supplied system header files (use ! `-isystem' for that). If you use more than one `-I' option, the directories are scanned in left-to-right order; the standard system directories come after. --- 510,516 ---- directories are searched before the system header file directories. However, you should not use this option to add directories that contain vendor-supplied system header files (use ! `-isystem' for that). If you use more than one `-I' option, the directories are scanned in left-to-right order; the standard system directories come after. *************** or combine them with constant text in a *** 761,767 **** for the previous `%u', without regard to any appended suffix. `%jSUFFIX' ! Substitutes the name of the HOST_BIT_BUCKET, if any, and if it is writable, and if save-temps is off; otherwise, substitute the name of a temporary file, just like `%u'. This temporary file is not meant for communication between processes, but rather as a junk --- 761,767 ---- for the previous `%u', without regard to any appended suffix. `%jSUFFIX' ! Substitutes the name of the `HOST_BIT_BUCKET', if any, and if it is writable, and if save-temps is off; otherwise, substitute the name of a temporary file, just like `%u'. This temporary file is not meant for communication between processes, but rather as a junk *************** or combine them with constant text in a *** 769,775 **** `%.SUFFIX' Substitutes .SUFFIX for the suffixes of a matched switch's args ! when it is subsequently output with `%*'. SUFFIX is terminated by the next space or %. `%w' --- 769,775 ---- `%.SUFFIX' Substitutes .SUFFIX for the suffixes of a matched switch's args ! when it is subsequently output with `%*'. SUFFIX is terminated by the next space or %. `%w' *************** or combine them with constant text in a *** 804,810 **** `_L', where L is an uppercase letter. This is for ISO C. `%I' ! Substitute a `-iprefix' option made from GCC_EXEC_PREFIX. `%s' Current argument is the name of a library or startup file of some --- 804,810 ---- `_L', where L is an uppercase letter. This is for ISO C. `%I' ! Substitute a `-iprefix' option made from `GCC_EXEC_PREFIX'. `%s' Current argument is the name of a library or startup file of some *************** that macro, which enables you to change *** 1157,1160 **** --- 1157,1161 ---- * MCore Options:: * IA-64 Options:: * D30V Options:: + * S/390 and zSeries Options:: diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-6 gcc-3.0.1/gcc/doc/gcc.info-6 *** gcc-3.0/gcc/doc/gcc.info-6 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-6 Sun Aug 19 18:05:18 2001 *************** choices are given below. *** 86,93 **** instructions. `-mcpu32' ! Generate output for a CPU32. This is the default when the compiler ! is configured for CPU32-based systems. Use this option for microcontrollers with a CPU32 or CPU32+ core, including the 68330, 68331, 68332, 68333, 68334, 68336, 68340, --- 86,93 ---- instructions. `-mcpu32' ! Generate output for a CPU32. This is the default when the ! compiler is configured for CPU32-based systems. Use this option for microcontrollers with a CPU32 or CPU32+ core, including the 68330, 68331, 68332, 68333, 68334, 68336, 68340, *************** SPARC Options *** 374,380 **** IPX etc. With `-msupersparc' the compiler optimizes code for the SuperSparc ! cpu, as used in the SparcStation 10, 1000 and 2000 series. This flag also enables use of the full SPARC v8 instruction set. These options are deprecated and will be deleted in a future GCC --- 374,380 ---- IPX etc. With `-msupersparc' the compiler optimizes code for the SuperSparc ! cpu, as used in the SparcStation 10, 1000 and 2000 series. This flag also enables use of the full SPARC v8 instruction set. These options are deprecated and will be deleted in a future GCC *************** architectures: *** 769,780 **** `-mcpu=NAME' This specifies the name of the target ARM processor. GCC uses this name to determine what kind of instructions it can emit when ! generating assembly code. Permissible names are: arm2, arm250, ! arm3, arm6, arm60, arm600, arm610, arm620, arm7, arm7m, arm7d, ! arm7dm, arm7di, arm7dmi, arm70, arm700, arm700i, arm710, arm710c, ! arm7100, arm7500, arm7500fe, arm7tdmi, arm8, strongarm, ! strongarm110, strongarm1100, arm8, arm810, arm9, arm9e, arm920, ! arm920t, arm940t, arm9tdmi, arm10tdmi, arm1020t, xscale. `-mtune=NAME' This option is very similar to the `-mcpu=' option, except that --- 769,781 ---- `-mcpu=NAME' This specifies the name of the target ARM processor. GCC uses this name to determine what kind of instructions it can emit when ! generating assembly code. Permissible names are: `arm2', `arm250', ! `arm3', `arm6', `arm60', `arm600', `arm610', `arm620', `arm7', ! `arm7m', `arm7d', `arm7dm', `arm7di', `arm7dmi', `arm70', `arm700', ! `arm700i', `arm710', `arm710c', `arm7100', `arm7500', `arm7500fe', ! `arm7tdmi', `arm8', `strongarm', `strongarm110', `strongarm1100', ! `arm8', `arm810', `arm9', `arm9e', `arm920', `arm920t', `arm940t', ! `arm9tdmi', `arm10tdmi', `arm1020t', `xscale'. `-mtune=NAME' This option is very similar to the `-mcpu=' option, except that *************** architectures: *** 791,798 **** this name to determine what kind of instructions it can emit when generating assembly code. This option can be used in conjunction with or instead of the `-mcpu=' option. Permissible names are: ! armv2, armv2a, armv3, armv3m, armv4, armv4t, armv5, armv5t, ! armv5te. `-mfpe=NUMBER' `-mfp=NUMBER' --- 792,799 ---- this name to determine what kind of instructions it can emit when generating assembly code. This option can be used in conjunction with or instead of the `-mcpu=' option. Permissible names are: ! `armv2', `armv2a', `armv3', `armv3m', `armv4', `armv4t', `armv5', ! `armv5t', `armv5te'. `-mfpe=NUMBER' `-mfp=NUMBER' *************** architectures: *** 844,850 **** function pointers. `-mnop-fun-dllimport' ! Disable support for the _dllimport_ attribute. `-msingle-pic-base' Treat the register used for PIC addressing as read-only, rather --- 845,851 ---- function pointers. `-mnop-fun-dllimport' ! Disable support for the `dllimport' attribute. `-msingle-pic-base' Treat the register used for PIC addressing as read-only, rather *************** M88K Options *** 1098,1109 **** a preceding store instruction. Such reordering violates sequential consistency of volatile memory references, when there are multiple processors. When consistency must be guaranteed, ! GNU C generates special instructions, as needed, to force ! execution in the proper order. The MC88100 processor does not reorder memory references and so ! always provides sequential consistency. However, by default, GNU ! C generates the special instructions to guarantee consistency even when you use `-m88100', so that the code may be run on an MC88110 processor. If you intend to run your code only on the MC88100 processor, you may use `-mno-serialize-volatile'. --- 1099,1110 ---- a preceding store instruction. Such reordering violates sequential consistency of volatile memory references, when there are multiple processors. When consistency must be guaranteed, ! GCC generates special instructions, as needed, to force execution ! in the proper order. The MC88100 processor does not reorder memory references and so ! always provides sequential consistency. However, by default, GCC ! generates the special instructions to guarantee consistency even when you use `-m88100', so that the code may be run on an MC88110 processor. If you intend to run your code only on the MC88100 processor, you may use `-mno-serialize-volatile'. *************** M88K Options *** 1126,1132 **** used in SVr4. `-msvr4' is the default for the m88k-motorola-sysv4 and ! m88k-dg-dgux m88k configurations. `-msvr3' is the default for all other m88k configurations. `-mversion-03.00' --- 1127,1133 ---- used in SVr4. `-msvr4' is the default for the m88k-motorola-sysv4 and ! m88k-dg-dgux m88k configurations. `-msvr3' is the default for all other m88k configurations. `-mversion-03.00' *************** M88K Options *** 1139,1151 **** Some models of the MC88100 processor fail to trap upon integer division by zero under certain conditions. By default, when ! compiling code that might be run on such a processor, GNU C generates code that explicitly checks for zero-valued divisors and traps with exception number 503 when one is detected. Use of mno-check-zero-division suppresses such checking for code generated to run on an MC88100 processor. ! GNU C assumes that the MC88110 processor correctly detects all instances of integer division by zero. When `-m88110' is specified, both `-mcheck-zero-division' and `-mno-check-zero-division' are ignored, and no explicit checks for --- 1140,1152 ---- Some models of the MC88100 processor fail to trap upon integer division by zero under certain conditions. By default, when ! compiling code that might be run on such a processor, GCC generates code that explicitly checks for zero-valued divisors and traps with exception number 503 when one is detected. Use of mno-check-zero-division suppresses such checking for code generated to run on an MC88100 processor. ! GCC assumes that the MC88110 processor correctly detects all instances of integer division by zero. When `-m88110' is specified, both `-mcheck-zero-division' and `-mno-check-zero-division' are ignored, and no explicit checks for *************** M88K Options *** 1159,1165 **** div) traps to the operating system on a negative operand. The operating system transparently completes the operation, but at a large cost in execution time. By default, when compiling code ! that might be run on an MC88100 processor, GNU C emulates signed integer division using the unsigned integer division instruction divu), thereby avoiding the large penalty of a trap to the operating system. Such emulation has its own, smaller, execution --- 1160,1166 ---- div) traps to the operating system on a negative operand. The operating system transparently completes the operation, but at a large cost in execution time. By default, when compiling code ! that might be run on an MC88100 processor, GCC emulates signed integer division using the unsigned integer division instruction divu), thereby avoiding the large penalty of a trap to the operating system. Such emulation has its own, smaller, execution diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-7 gcc-3.0.1/gcc/doc/gcc.info-7 *** gcc-3.0/gcc/doc/gcc.info-7 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-7 Sun Aug 19 18:05:18 2001 *************** MIPS Options *** 611,617 **** `-msplit-addresses' `-mno-split-addresses' Generate code to load the high and low parts of address constants ! separately. This allows `gcc' to optimize away redundant loads of the high order bits of addresses. This optimization requires GNU as and GNU ld. This optimization is enabled by default for some embedded targets where GNU as and GNU ld are standard. --- 611,617 ---- `-msplit-addresses' `-mno-split-addresses' Generate code to load the high and low parts of address constants ! separately. This allows GCC to optimize away redundant loads of the high order bits of addresses. This optimization requires GNU as and GNU ld. This optimization is enabled by default for some embedded targets where GNU as and GNU ld are standard. *************** Intel 386 Options *** 832,838 **** `-mno-fancy-math-387' Some 387 emulators do not support the `sin', `cos' and `sqrt' instructions for the 387. Specify this option to avoid generating ! those instructions. This option is the default on FreeBSD. As of revision 2.6.1, these instructions are not generated unless you also use the `-ffast-math' switch. --- 832,838 ---- `-mno-fancy-math-387' Some 387 emulators do not support the `sin', `cos' and `sqrt' instructions for the 387. Specify this option to avoid generating ! those instructions. This option is the default on FreeBSD. As of revision 2.6.1, these instructions are not generated unless you also use the `-ffast-math' switch. *************** Intel 386 Options *** 963,1000 **** alignment to `-mpreferred-stack-boundary=2'. `-mpush-args' ! Use PUSH operations to store outgoing parameters. This method is shorter and usually equally fast as method using SUB/MOV ! operations and is enabled by default. In some cases disabling it may improve performance because of improved scheduling and reduced dependencies. `-maccumulate-outgoing-args' If enabled, the maximum amount of space required for outgoing ! arguments will be computed in the function prologue. This in faster on most modern CPUs because of reduced dependencies, improved scheduling and reduced stack usage when preferred stack boundary is not equal to 2. The drawback is a notable increase in ! code size. This switch implies `-mno-push-args'. `-mthreads' ! Support thread-safe exception handling on `Mingw32'. Code that relies on thread-safe exception handling must compile and link all ! code with the `-mthreads' option. When compiling, `-mthreads' defines `-D_MT'; when linking, it links in a special thread helper library `-lmingwthrd' which cleans up per thread exception handling data. `-mno-align-stringops' ! Do not align destination of inlined string operations. This switch ! reduces code size and improves performance in case the destination ! is already aligned, but gcc don't know about it. `-minline-all-stringops' By default GCC inlines string operations only when destination is ! known to be aligned at least to 4 byte boundary. This enables more ! inlining, increase code size, but may improve performance of code ! that depends on fast memcpy, strlen and memset for short lengths. `-momit-leaf-frame-pointer' Don't keep the frame pointer in a register for leaf functions. --- 963,1001 ---- alignment to `-mpreferred-stack-boundary=2'. `-mpush-args' ! Use PUSH operations to store outgoing parameters. This method is shorter and usually equally fast as method using SUB/MOV ! operations and is enabled by default. In some cases disabling it may improve performance because of improved scheduling and reduced dependencies. `-maccumulate-outgoing-args' If enabled, the maximum amount of space required for outgoing ! arguments will be computed in the function prologue. This in faster on most modern CPUs because of reduced dependencies, improved scheduling and reduced stack usage when preferred stack boundary is not equal to 2. The drawback is a notable increase in ! code size. This switch implies `-mno-push-args'. `-mthreads' ! Support thread-safe exception handling on `Mingw32'. Code that relies on thread-safe exception handling must compile and link all ! code with the `-mthreads' option. When compiling, `-mthreads' defines `-D_MT'; when linking, it links in a special thread helper library `-lmingwthrd' which cleans up per thread exception handling data. `-mno-align-stringops' ! Do not align destination of inlined string operations. This ! switch reduces code size and improves performance in case the ! destination is already aligned, but gcc don't know about it. `-minline-all-stringops' By default GCC inlines string operations only when destination is ! known to be aligned at least to 4 byte boundary. This enables ! more inlining, increase code size, but may improve performance of ! code that depends on fast memcpy, strlen and memset for short ! lengths. `-momit-leaf-frame-pointer' Don't keep the frame pointer in a register for leaf functions. diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-8 gcc-3.0.1/gcc/doc/gcc.info-8 *** gcc-3.0/gcc/doc/gcc.info-8 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-8 Sun Aug 19 18:05:18 2001 *************** Clipper Options *** 275,281 **** These `-m' options are defined for the Clipper implementations: `-mc300' ! Produce code for a C300 Clipper processor. This is the default. `-mc400' Produce code for a C400 Clipper processor i.e. use floating point --- 275,281 ---- These `-m' options are defined for the Clipper implementations: `-mc300' ! Produce code for a C300 Clipper processor. This is the default. `-mc400' Produce code for a C400 Clipper processor i.e. use floating point *************** choices are given below. *** 680,693 **** `-m32381' Generate output containing 32381 instructions for floating point. ! This also implies `-m32081'. The 32381 is only compatible with the ! 32332 and 32532 cpus. This is the default for the pc532-netbsd ! configuration. `-mmulti-add' Try and generate multiply-add floating point instructions `polyF' ! and `dotF'. This option is only available if the `-m32381' option ! is in effect. Using these instructions requires changes to to register allocation which generally has a negative impact on performance. This option should only be enabled when compiling code particularly likely to make heavy use of multiply-add --- 680,693 ---- `-m32381' Generate output containing 32381 instructions for floating point. ! This also implies `-m32081'. The 32381 is only compatible with ! the 32332 and 32532 cpus. This is the default for the ! pc532-netbsd configuration. `-mmulti-add' Try and generate multiply-add floating point instructions `polyF' ! and `dotF'. This option is only available if the `-m32381' option ! is in effect. Using these instructions requires changes to to register allocation which generally has a negative impact on performance. This option should only be enabled when compiling code particularly likely to make heavy use of multiply-add *************** choices are given below. *** 695,713 **** `-mnomulti-add' Do not try and generate multiply-add floating point instructions ! `polyF' and `dotF'. This is the default on all platforms. `-msoft-float' Generate output containing library calls for floating point. *Warning:* the requisite libraries may not be available. `-mnobitfield' ! Do not use the bit-field instructions. On some machines it is ! faster to use shifting and masking operations. This is the default ! for the pc532. `-mbitfield' ! Do use the bit-field instructions. This is the default for all platforms except the pc532. `-mrtd' --- 695,713 ---- `-mnomulti-add' Do not try and generate multiply-add floating point instructions ! `polyF' and `dotF'. This is the default on all platforms. `-msoft-float' Generate output containing library calls for floating point. *Warning:* the requisite libraries may not be available. `-mnobitfield' ! Do not use the bit-field instructions. On some machines it is ! faster to use shifting and masking operations. This is the ! default for the pc532. `-mbitfield' ! Do use the bit-field instructions. This is the default for all platforms except the pc532. `-mrtd' *************** choices are given below. *** 738,754 **** compiled with the Unix compiler. `-mnoregparam' ! Do not pass any arguments in registers. This is the default for all ! targets. `-msb' It is OK to use the sb as an index register which is always loaded ! with zero. This is the default for the pc532-netbsd target. `-mnosb' The sb register is not available for use or has not been ! initialized to zero by the run time system. This is the default ! for all targets except the pc532-netbsd. It is also implied whenever `-mhimem' or `-fpic' is set. `-mhimem' --- 738,754 ---- compiled with the Unix compiler. `-mnoregparam' ! Do not pass any arguments in registers. This is the default for ! all targets. `-msb' It is OK to use the sb as an index register which is always loaded ! with zero. This is the default for the pc532-netbsd target. `-mnosb' The sb register is not available for use or has not been ! initialized to zero by the run time system. This is the default ! for all targets except the pc532-netbsd. It is also implied whenever `-mhimem' or `-fpic' is set. `-mhimem' *************** AVR Options *** 797,803 **** `-minit-stack=N' Specify the initial stack address, which may be a symbol or ! numeric value, __stack is the default. `-mno-interrupts' Generated code is not compatible with hardware interrupts. Code --- 797,803 ---- `-minit-stack=N' Specify the initial stack address, which may be a symbol or ! numeric value, `__stack' is the default. `-mno-interrupts' Generated code is not compatible with hardware interrupts. Code *************** AVR Options *** 805,811 **** `-mcall-prologues' Functions prologues/epilogues expanded as call to appropriate ! subroutines. Code size will be smaller. `-mno-tablejump' Do not generate tablejump insns which sometimes increase code size. --- 805,811 ---- `-mcall-prologues' Functions prologues/epilogues expanded as call to appropriate ! subroutines. Code size will be smaller. `-mno-tablejump' Do not generate tablejump insns which sometimes increase code size. *************** IA-64 Options *** 946,952 **** ranges can be specified separated by a comma.  ! File: gcc.info, Node: D30V Options, Prev: IA-64 Options, Up: Submodel Options D30V Options ------------ --- 946,952 ---- ranges can be specified separated by a comma.  ! File: gcc.info, Node: D30V Options, Next: S/390 and zSeries Options, Prev: IA-64 Options, Up: Submodel Options D30V Options ------------ *************** D30V Options *** 981,984 **** --- 981,1035 ---- `-mcond-exec=N' Specify the maximum number of conditionally executed instructions that replace a branch. The default is 4. + +  + File: gcc.info, Node: S/390 and zSeries Options, Prev: D30V Options, Up: Submodel Options + + S/390 and zSeries Options + ------------------------- + + These are the `-m' options defined for the S/390 and zSeries + architecture. + + `-mhard-float' + `-msoft-float' + Use (do not use) the hardware floating-point instructions and + registers for floating-point operations. When `-msoft-float' is + specified, functions in `libgcc.a' will be used to perform + floating-point operations. When `-mhard-float' is specified, the + compiler generates IEEE floating-point instructions. This is the + default. + + `-mbackchain' + `-mno-backchain' + Generate (or do not generate) code which maintains an explicit + backchain within the stack frame that points to the caller's frame. + This is currently needed to allow debugging. The default is to + generate the backchain. + + `-msmall-exec' + `-mno-small-exec' + Generate (or do not generate) code using the `bras' instruction to + do subroutine calls. This only works reliably if the total + executable size does not exceed 64k. The default is to use the + `basr' instruction instead, which does not have this limitation. + + `-m64' + `-m31' + When `-m31' is specified, generate code compliant to the Linux for + S/390 ABI. When `-m64' is specified, generate code compliant to + the Linux for zSeries ABI. This allows GCC in particular to + generate 64-bit instructions. For the `s390' targets, the default + is `-m31', while the `s390x' targets default to `-m64'. + + `-mmvcle' + `-mno-mvcle' + Generate (or do not generate) code using the `mvcle' instruction + to perform block moves. When `-mno-mvcle' is specifed, use a + `mvc' loop instead. This is the default. + + `-mdebug' + `-mno-debug' + Print (or do not print) additional debug information when + compiling. The default is to not print debug information. diff -Nrc3pad gcc-3.0/gcc/doc/gcc.info-9 gcc-3.0.1/gcc/doc/gcc.info-9 *** gcc-3.0/gcc/doc/gcc.info-9 Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/doc/gcc.info-9 Sun Aug 19 18:05:18 2001 *************** forms is listed--the one which is not th *** 50,61 **** the other form by either removing `no-' or adding it. `-fexceptions' ! Enable exception handling. Generates extra code needed to propagate ! exceptions. For some targets, this implies GNU CC will generate ! frame unwind information for all functions, which can produce ! significant data size overhead, although it does not affect ! execution. If you do not specify this option, GNU CC will enable ! it by default for languages like C++ which normally require exception handling, and disable it for languages like C that do not normally require it. However, you may need to enable this option when compiling C code that needs to interoperate properly --- 50,61 ---- the other form by either removing `no-' or adding it. `-fexceptions' ! Enable exception handling. Generates extra code needed to ! propagate exceptions. For some targets, this implies GCC will ! generate frame unwind information for all functions, which can ! produce significant data size overhead, although it does not ! affect execution. If you do not specify this option, GCC will ! enable it by default for languages like C++ which normally require exception handling, and disable it for languages like C that do not normally require it. However, you may need to enable this option when compiling C code that needs to interoperate properly *************** the other form by either removing `no-' *** 270,284 **** `-fcheck-memory-usage' without `-fprefix-function-name'. If you specify this option, you can not use the `asm' or `__asm__' ! keywords in functions with memory checking enabled. GNU CC cannot understand what the `asm' statement may do, and therefore cannot generate the appropriate code, so it will reject it. However, if you specify the function attribute `no_check_memory_usage' (*note ! Function Attributes::), GNU CC will disable memory checking within ! a function; you may use `asm' statements inside such functions. ! You may have an inline expansion of a non-checked function within ! a checked function; in that case GNU CC will not generate checks ! for the inlined function's memory accesses. If you move your `asm' statements to non-checked inline functions and they do access memory, you can add calls to the support code --- 270,284 ---- `-fcheck-memory-usage' without `-fprefix-function-name'. If you specify this option, you can not use the `asm' or `__asm__' ! keywords in functions with memory checking enabled. GCC cannot understand what the `asm' statement may do, and therefore cannot generate the appropriate code, so it will reject it. However, if you specify the function attribute `no_check_memory_usage' (*note ! Function Attributes::), GCC will disable memory checking within a ! function; you may use `asm' statements inside such functions. You ! may have an inline expansion of a non-checked function within a ! checked function; in that case GCC will not generate checks for ! the inlined function's memory accesses. If you move your `asm' statements to non-checked inline functions and they do access memory, you can add calls to the support code *************** Environment Variables Affecting GCC *** 408,414 **** This section describes several environment variables that affect how GCC operates. Some of them work by specifying directories or prefixes ! to use when searching for various kinds of files. Some are used to specify other aspects of the compilation environment. Note that you can also specify places to search using options such as --- 408,414 ---- This section describes several environment variables that affect how GCC operates. Some of them work by specifying directories or prefixes ! to use when searching for various kinds of files. Some are used to specify other aspects of the compilation environment. Note that you can also specify places to search using options such as *************** Driver::. *** 457,464 **** added when this prefix is combined with the name of a subprogram, but you can specify a prefix that ends with a slash if you wish. ! If `GCC_EXEC_PREFIX' is not set, GNU CC will attempt to figure out ! an appropriate prefix to use based on the pathname it was invoked with. If GCC cannot find the subprogram using the specified prefix, it --- 457,464 ---- added when this prefix is combined with the name of a subprogram, but you can specify a prefix that ends with a slash if you wish. ! If `GCC_EXEC_PREFIX' is not set, GCC will attempt to figure out an ! appropriate prefix to use based on the pathname it was invoked with. If GCC cannot find the subprogram using the specified prefix, it *************** File: gcc.info, Node: Running Protoize, *** 549,555 **** Running Protoize ================ ! The program `protoize' is an optional part of GNU C. You can use it to add prototypes to a program, thus converting the program to ISO C in one respect. The companion program `unprotoize' does the reverse: it removes argument types from any prototypes that are found. --- 549,555 ---- Running Protoize ================ ! The program `protoize' is an optional part of GCC. You can use it to add prototypes to a program, thus converting the program to ISO C in one respect. The companion program `unprotoize' does the reverse: it removes argument types from any prototypes that are found. *************** See *Note VMS Install::, for VMS systems *** 774,854 **** the notes in that section before proceeding any further with the installation of GNU CC. - 3. When running `configure', you may also need to specify certain - additional options that describe variant hardware and software - configurations. These are `--with-gnu-as', `--with-gnu-ld', - `--with-stabs' and `--nfp'. - - `--with-gnu-as' - If you will use GNU CC with the GNU assembler (GAS), you - should declare this by using the `--with-gnu-as' option when - you run `configure'. - - Using this option does not install GAS. It only modifies the - output of GNU CC to work with GAS. Building and installing - GAS is up to you. - - Conversely, if you _do not_ wish to use GAS and do not specify - `--with-gnu-as' when building GNU CC, it is up to you to make - sure that GAS is not installed. GNU CC searches for a - program named `as' in various directories; if the program it - finds is GAS, then it runs GAS. If you are not sure where - GNU CC finds the assembler it is using, try specifying `-v' - when you run it. - - The systems where it makes a difference whether you use GAS - are - `hppa1.0-ANY-ANY', `hppa1.1-ANY-ANY', `i386-ANY-sysv', - `i386-ANY-isc', - `i860-ANY-bsd', `m68k-bull-sysv', - `m68k-hp-hpux', `m68k-sony-bsd', - `m68k-altos-sysv', `m68000-hp-hpux', - `m68000-att-sysv', `ANY-lynx-lynxos', and `mips-ANY'). On - any other system, `--with-gnu-as' has no effect. - - On the systems listed above (except for the HP-PA, for ISC on - the 386, and for `mips-sgi-irix5.*'), if you use GAS, you - should also use the GNU linker (and specify `--with-gnu-ld'). - - `--with-gnu-ld' - Specify the option `--with-gnu-ld' if you plan to use the GNU - linker with GNU CC. - - This option does not cause the GNU linker to be installed; it - just modifies the behavior of GNU CC to work with the GNU - linker. - - `--with-stabs' - On MIPS based systems and on Alphas, you must specify whether - you want GNU CC to create the normal ECOFF debugging format, - or to use BSD-style stabs passed through the ECOFF symbol - table. The normal ECOFF debug format cannot fully handle - languages other than C. BSD stabs format can handle other - languages, but it only works with the GNU debugger GDB. - - Normally, GNU CC uses the ECOFF debugging format by default; - if you prefer BSD stabs, specify `--with-stabs' when you - configure GNU CC. - - No matter which default you choose when you configure GNU CC, - the user can use the `-gcoff' and `-gstabs+' options to - specify explicitly the debug format for a particular - compilation. - - `--with-stabs' is meaningful on the ISC system on the 386, - also, if `--with-gas' is used. It selects use of stabs - debugging information embedded in COFF output. This kind of - debugging information supports C++ well; ordinary COFF - debugging information does not. - - `--with-stabs' is also meaningful on 386 systems running - SVR4. It selects use of stabs debugging information embedded - in ELF output. The C++ compiler currently (2.6.0) does not - support the DWARF debugging information normally used on 386 - SVR4 platforms; stabs provide a workable alternative. This - requires gas and gdb, as the normal SVR4 tools can not - generate or interpret stabs. -  File: gcc.info, Node: Configuration Files, Next: Configurations, Up: Installation --- 774,779 ---- *************** machine: *** 1128,1131 **** --- 1053,1137 ---- cd /usr/lib mget *crt*.o quit + +  + File: gcc.info, Node: Cross Headers, Next: Build Cross, Prev: Tools and Libraries, Up: Cross-Compiler + + Cross-Compilers and Header Files + -------------------------------- + + If you are cross-compiling a standalone program or a program for an + embedded system, then you may not need any header files except the few + that are part of GNU CC (and those of your program). However, if you + intend to link your program with a standard C library such as `libc.a', + then you probably need to compile with the header files that go with + the library you use. + + The GNU C compiler does not come with these files, because (1) they + are system-specific, and (2) they belong in a C library, not in a + compiler. + + If the GNU C library supports your target machine, then you can get + the header files from there (assuming you actually use the GNU library + when you link your program). + + If your target machine comes with a C compiler, it probably comes + with suitable header files also. If you make these files accessible + from the host machine, the cross-compiler can use them also. + + Otherwise, you're on your own in finding header files to use when + cross-compiling. + + When you have found suitable header files, put them in the directory + `/usr/local/TARGET/include', before building the cross compiler. Then + installation will run fixincludes properly and install the corrected + versions of the header files where the compiler will use them. + + Provide the header files before you build the cross-compiler, because + the build stage actually runs the cross-compiler to produce parts of + `libgcc.a'. (These are the parts that _can_ be compiled with GNU CC.) + Some of them need suitable header files. + + Here's an example showing how to copy the header files from a target + machine. On the target machine, do this: + + (cd /usr/include; tar cf - .) > tarfile + + Then, on the host machine, do this: + + ftp TARGET-MACHINE + lcd /usr/local/TARGET/include + get tarfile + quit + tar xf tarfile + +  + File: gcc.info, Node: Build Cross, Prev: Cross Headers, Up: Cross-Compiler + + Actually Building the Cross-Compiler + ------------------------------------ + + Now you can proceed just as for compiling a single-machine compiler + through the step of building stage 1. + + If your target is exotic, you may need to provide the header file + `float.h'.One way to do this is to compile `enquire' and run it on your + target machine. The job of `enquire' is to run on the target machine + and figure out by experiment the nature of its floating point + representation. `enquire' records its findings in the header file + `float.h'. If you can't produce this file by running `enquire' on the + target machine, then you will need to come up with a suitable `float.h' + in some other way (or else, avoid using it in your programs). + + Do not try to build stage 2 for a cross-compiler. It doesn't work to + rebuild GNU CC as a cross-compiler using the cross-compiler, because + that would produce a program that runs on the target machine, not on the + host. For example, if you compile a 386-to-68030 cross-compiler with + itself, the result will not be right either for the 386 (because it was + compiled into 68030 code) or for the 68030 (because it was configured + for a 386 as the host). If you want to compile GNU CC into 68030 code, + whether you compile it on a 68030 or with a cross-compiler on a 386, you + must specify a 68030 as the host when you configure it. + + To install the cross-compiler, use `make install', as usual. diff -Nrc3pad gcc-3.0/gcc/doc/gcc.texi gcc-3.0.1/gcc/doc/gcc.texi *** gcc-3.0/gcc/doc/gcc.texi Thu Jun 14 15:54:19 2001 --- gcc-3.0.1/gcc/doc/gcc.texi Fri Jul 6 12:29:44 2001 *************** *** 42,53 **** @c anything else? --mew 10feb93 @c For consistency, use the following: @c - "bit-field" not "bitfield" or "bit field" (following the C and C++ @c standards). @c - "built-in" as an adjective ("built-in function"), or sometimes @c "built in", not "builtin" (which isn't a word). ! @c - "front end" as a noun, "front-end" as an adjective (not yet ! @c consistently followed). @macro gcctabopt{body} @code{\body\} --- 42,59 ---- @c anything else? --mew 10feb93 @c For consistency, use the following: + @c - "back end" as a noun, "back-end" as an adjective. @c - "bit-field" not "bitfield" or "bit field" (following the C and C++ @c standards). @c - "built-in" as an adjective ("built-in function"), or sometimes @c "built in", not "builtin" (which isn't a word). ! @c - "front end" as a noun, "front-end" as an adjective. ! @c - "GCC" for the GNU Compiler Collection, both generally ! @c and as the GNU C Compiler in the context of compiling C; ! @c "G++" for the C++ compiler; "gcc" and "g++" (lowercase), ! @c marked up with @command, for the commands for compilation when the ! @c emphasis is on those; "GNU C" and "GNU C++" for language dialects; ! @c and try to avoid the older term "GNU CC". @macro gcctabopt{body} @code{\body\} *************** included in the section entitled ``GNU F *** 178,188 **** @sp 2 @center Richard M. Stallman @sp 3 ! @center Last updated 14 June 2001 @sp 1 @c The version number appears five times more in this file. ! @center for gcc-3.0 @page @vskip 0pt plus 1filll Copyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1998, --- 184,194 ---- @sp 2 @center Richard M. Stallman @sp 3 ! @center Last updated 22 June 2001 @sp 1 @c The version number appears five times more in this file. ! @center for GCC 3.0 @page @vskip 0pt plus 1filll Copyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1998, *************** Copyright @copyright{} 1988, 1989, 1992, *** 191,197 **** For GCC Version 3.0@* @sp 1 Published by the Free Software Foundation @* ! 59 Temple Place - Suite 330@* Boston, MA 02111-1307, USA@* Last printed April, 1998.@* Printed copies are available for $50 each.@* --- 197,203 ---- For GCC Version 3.0@* @sp 1 Published by the Free Software Foundation @* ! 59 Temple Place---Suite 330@* Boston, MA 02111-1307, USA@* Last printed April, 1998.@* Printed copies are available for $50 each.@* *************** bugs. It corresponds to GCC version 3.0 *** 257,269 **** * Service:: How to find suppliers of support for GCC. * Contributing:: How to contribute to testing and developing GCC. * VMS:: Using GCC on VMS. ! * Makefile:: List of Makefile targets. @end ifset @ifset INTERNALS * Portability:: Goals of GCC's portability features. * Interface:: Function-call interface of GCC output. * Passes:: Order of passes, what they do, and what each file is for. ! * Trees:: The source representation used by the C and C++ front-ends. * RTL:: The intermediate representation that most passes work on. * Machine Desc:: How to write machine description instruction patterns. * Target Macros:: How to write the machine description C macros. --- 263,275 ---- * Service:: How to find suppliers of support for GCC. * Contributing:: How to contribute to testing and developing GCC. * VMS:: Using GCC on VMS. ! * Makefile:: Additional Makefile and configure information. @end ifset @ifset INTERNALS * Portability:: Goals of GCC's portability features. * Interface:: Function-call interface of GCC output. * Passes:: Order of passes, what they do, and what each file is for. ! * Trees:: The source representation used by the C and C++ front ends. * RTL:: The intermediate representation that most passes work on. * Machine Desc:: How to write machine description instruction patterns. * Target Macros:: How to write the machine description C macros. *************** bugs. It corresponds to GCC version 3.0 *** 291,298 **** @cindex Fortran @cindex Java Several versions of the compiler (C, C++, Objective C, Fortran, Java) are integrated; this is why we use the name ! ``GNU Compiler Collection''. GCC can compile programs written in any of these ! languages. The Fortran and Java compilers are described in separate manuals. @cindex GCC --- 297,304 ---- @cindex Fortran @cindex Java Several versions of the compiler (C, C++, Objective C, Fortran, Java) are integrated; this is why we use the name ! ``GNU Compiler Collection''. GCC can compile programs written in any of these ! languages. The Fortran and Java compilers are described in separate manuals. @cindex GCC *************** compiler. For example, we refer to the *** 314,320 **** affecting the behavior of ``GCC'' or sometimes just ``the compiler''. Front ends for other languages, such as Ada 95 and Pascal exist but ! have not yet been integrated into GCC. These front-ends, like that for C++, are built in subdirectories of GCC and link to it. The result is an integrated compiler that can compile programs written in C, C++, Objective C, or any of the languages for which you have installed front --- 320,326 ---- affecting the behavior of ``GCC'' or sometimes just ``the compiler''. Front ends for other languages, such as Ada 95 and Pascal exist but ! have not yet been integrated into GCC@. These front ends, like that for C++, are built in subdirectories of GCC and link to it. The result is an integrated compiler that can compile programs written in C, C++, Objective C, or any of the languages for which you have installed front *************** program using the facilities of an opera *** 466,472 **** in a hosted implementation. @opindex ffreestanding ! GNU CC aims towards being usable as a conforming freestanding implementation, or as the compiler for a conforming hosted implementation. By default, it will act as the compiler for a hosted implementation, defining @code{__STDC_HOSTED__} as @code{1} and --- 472,478 ---- in a hosted implementation. @opindex ffreestanding ! GCC aims towards being usable as a conforming freestanding implementation, or as the compiler for a conforming hosted implementation. By default, it will act as the compiler for a hosted implementation, defining @code{__STDC_HOSTED__} as @code{1} and *************** kernel, you may well still need to make *** 480,486 **** linking and startup. @xref{C Dialect Options,,Options Controlling C Dialect}. ! GNU CC does not provide the library facilities required only of hosted implementations, nor yet all the facilities required by C99 of freestanding implementations; to use the facilities of a hosted environment, you will need to find them elsewhere (for example, in the --- 486,492 ---- linking and startup. @xref{C Dialect Options,,Options Controlling C Dialect}. ! GCC does not provide the library facilities required only of hosted implementations, nor yet all the facilities required by C99 of freestanding implementations; to use the facilities of a hosted environment, you will need to find them elsewhere (for example, in the *************** information concerning the history of C *** 492,498 **** @c FIXME: details of C++ standard. ! 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 --- 498,504 ---- @c FIXME: details of C++ standard. ! 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 *************** is an older example. @uref{http://www.g *** 501,507 **** information as well. @xref{Language,,The GNU Fortran Language, g77, Using and Porting GNU ! Fortran}, for details of the Fortran language supported by GCC. @xref{Compatibility,,Compatibility with the Java Platform, gcj, GNU gcj}, for details of compatibility between @code{gcj} and the Java Platform. --- 507,513 ---- information as well. @xref{Language,,The GNU Fortran Language, g77, Using and Porting GNU ! Fortran}, for details of the Fortran language supported by GCC@. @xref{Compatibility,,Compatibility with the Java Platform, gcj, GNU gcj}, for details of compatibility between @code{gcj} and the Java Platform. *************** for details of compatibility between @co *** 522,528 **** @cindex installation trouble @cindex known causes of trouble ! This section describes known problems that affect users of GCC. Most of these are not GCC bugs per se---if they were, we would fix them. But the result for a user may be like the result of a bug. --- 528,534 ---- @cindex installation trouble @cindex known causes of trouble ! This section describes known problems that affect users of GCC@. Most of these are not GCC bugs per se---if they were, we would fix them. But the result for a user may be like the result of a bug. *************** where people's opinions differ as to wha *** 537,545 **** and with certain linkers, assemblers and debuggers. * External Bugs:: Problems compiling certain programs. * Incompatibilities:: GCC is incompatible with traditional C. ! * Fixed Headers:: GNU C uses corrected versions of system header files. This is necessary, but doesn't always work smoothly. ! * Standard Libraries:: GNU C uses the system C library, which might not be compliant with the ISO C standard. * Disappointments:: Regrettable things we can't change, but not quite bugs. * C++ Misunderstandings:: Common misunderstandings with GNU C++. --- 543,551 ---- and with certain linkers, assemblers and debuggers. * External Bugs:: Problems compiling certain programs. * Incompatibilities:: GCC is incompatible with traditional C. ! * Fixed Headers:: GCC uses corrected versions of system header files. This is necessary, but doesn't always work smoothly. ! * Standard Libraries:: GCC uses the system C library, which might not be compliant with the ISO C standard. * Disappointments:: Regrettable things we can't change, but not quite bugs. * C++ Misunderstandings:: Common misunderstandings with GNU C++. *************** compile environment. *** 617,624 **** @node Interoperation @section Interoperation ! This section lists various difficulties encountered in using GNU C or ! GNU C++ together with other compilers or with the assemblers, linkers, libraries and debuggers on certain systems. @itemize @bullet --- 623,630 ---- @node Interoperation @section Interoperation ! This section lists various difficulties encountered in using GCC ! together with other compilers or with the assemblers, linkers, libraries and debuggers on certain systems. @itemize @bullet *************** libraries and debuggers on certain syste *** 626,632 **** Objective C does not work on the RS/6000. @item ! GNU C++ 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. --- 632,638 ---- Objective C does not work on the RS/6000. @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. *************** Older GDB versions sometimes fail to rea *** 646,657 **** @item @cindex DBX DBX rejects some files produced by GCC, though it accepts similar ! constructs in output from PCC. Until someone can supply a coherent description of what is valid DBX input and what is not, there is nothing I can do about these problems. You are on your own. @item ! The GNU assembler (GAS) does not support PIC. To generate PIC code, you must use some other assembler, such as @file{/bin/as}. @item --- 652,663 ---- @item @cindex DBX DBX rejects some files produced by GCC, though it accepts similar ! constructs in output from PCC@. Until someone can supply a coherent description of what is valid DBX input and what is not, there is nothing I can do about these problems. You are on your own. @item ! The GNU assembler (GAS) does not support PIC@. To generate PIC code, you must use some other assembler, such as @file{/bin/as}. @item *************** using @option{-O} for those source files *** 705,711 **** @item On some SGI systems, when you use @option{-lgl_s} as an option, it gets translated magically to @samp{-lgl_s -lX11_s -lc_s}. ! Naturally, this does not happen when you use GCC. You must specify all three options explicitly. @item --- 711,717 ---- @item On some SGI systems, when you use @option{-lgl_s} as an option, it gets translated magically to @samp{-lgl_s -lX11_s -lc_s}. ! Naturally, this does not happen when you use GCC@. You must specify all three options explicitly. @item *************** argument of type @code{double} and passe *** 719,726 **** @code{double *} to a function compiled with GCC, dereferencing the pointer may cause a fatal signal. ! One way to solve this problem is to compile your entire program with GNU ! CC. Another solution is to modify the function that is compiled with Sun CC to copy the argument into a local variable; local variables are always properly aligned. A third solution is to modify the function that uses the pointer to dereference it via the following function --- 725,732 ---- @code{double *} to a function compiled with GCC, dereferencing the pointer may cause a fatal signal. ! One way to solve this problem is to compile your entire program with GCC@. ! Another solution is to modify the function that is compiled with Sun CC to copy the argument into a local variable; local variables are always properly aligned. A third solution is to modify the function that uses the pointer to dereference it via the following function *************** compile itself properly on 9.01. *** 784,790 **** @item On the HP PA machine, ADB sometimes fails to work on functions compiled ! with GCC. Specifically, it fails to work on functions that use @code{alloca} or variable-size arrays. This is because GCC doesn't generate HP-UX unwind descriptors for such functions. It may even be impossible to generate them. --- 790,796 ---- @item On the HP PA machine, ADB sometimes fails to work on functions compiled ! with GCC@. Specifically, it fails to work on functions that use @code{alloca} or variable-size arrays. This is because GCC doesn't generate HP-UX unwind descriptors for such functions. It may even be impossible to generate them. *************** static int foo; *** 860,866 **** will cause the linker to report an undefined symbol @code{foo}. Although this behavior differs from most other systems, it is not a bug because redefining an @code{extern} variable as @code{static} ! is undefined in ISO C. @item AIX on the RS/6000 provides support (NLS) for environments outside of --- 866,872 ---- will cause the linker to report an undefined symbol @code{foo}. Although this behavior differs from most other systems, it is not a bug because redefining an @code{extern} variable as @code{static} ! is undefined in ISO C@. @item AIX on the RS/6000 provides support (NLS) for environments outside of *************** identifiers. *** 882,888 **** @item On the RS/6000, XLC version 1.3.0.0 will miscompile @file{jump.c}. XLC version 1.3.0.1 or later fixes this problem. You can obtain XLC-1.3.0.2 ! by requesting PTF 421749 from IBM. @item @opindex mno-serialize-volatile --- 888,894 ---- @item On the RS/6000, XLC version 1.3.0.0 will miscompile @file{jump.c}. XLC version 1.3.0.1 or later fixes this problem. You can obtain XLC-1.3.0.2 ! by requesting PTF 421749 from IBM@. @item @opindex mno-serialize-volatile *************** MALLOC=gmalloc.o *** 1032,1040 **** @opindex traditional There are several noteworthy incompatibilities between GNU C and K&R ! (non-ISO) versions of C. The @option{-traditional} option eliminates many of these incompatibilities, @emph{but not all}, by ! telling GNU C to behave like a K&R C compiler. @itemize @bullet @cindex string constants --- 1038,1046 ---- @opindex traditional There are several noteworthy incompatibilities between GNU C and K&R ! (non-ISO) versions of C@. The @option{-traditional} option eliminates many of these incompatibilities, @emph{but not all}, by ! telling GCC to behave like a K&R C compiler. @itemize @bullet @cindex string constants *************** in it. *** 1121,1140 **** If you use the @option{-W} option with the @option{-O} option, you will get a warning when GCC thinks such a problem might be possible. ! The @option{-traditional} option directs GNU C to put variables in the stack by default, rather than in registers, in functions that call @code{setjmp}. This results in the behavior found in traditional C compilers. @item Programs that use preprocessing directives in the middle of macro ! arguments do not work with GCC. For example, a program like this will not work: @example foobar ( #define luser hack) @end example ISO C does not permit such a construct. It would make sense to support --- 1127,1148 ---- If you use the @option{-W} option with the @option{-O} option, you will get a warning when GCC thinks such a problem might be possible. ! The @option{-traditional} option directs GCC to put variables in the stack by default, rather than in registers, in functions that call @code{setjmp}. This results in the behavior found in traditional C compilers. @item Programs that use preprocessing directives in the middle of macro ! arguments do not work with GCC@. For example, a program like this will not work: @example + @group foobar ( #define luser hack) + @end group @end example ISO C does not permit such a construct. It would make sense to support *************** it when @option{-traditional} is used, b *** 1142,1149 **** implement. @item ! K&R compilers allow comments to cross over an inclusion boundary (i.e. ! started in an include file and ended in the including file). I think this would be quite ugly and can't imagine it could be needed. @cindex external declaration scope --- 1150,1157 ---- implement. @item ! K&R compilers allow comments to cross over an inclusion boundary ! (i.e.@: started in an include file and ended in the including file). I think this would be quite ugly and can't imagine it could be needed. @cindex external declaration scope *************** have the same scope as any other declara *** 1157,1163 **** In some other C compilers, a @code{extern} declaration affects all the rest of the file even if it happens within a block. ! The @option{-traditional} option directs GNU C to treat all @code{extern} declarations as global, like traditional compilers. @item --- 1165,1171 ---- In some other C compilers, a @code{extern} declaration affects all the rest of the file even if it happens within a block. ! The @option{-traditional} option directs GCC to treat all @code{extern} declarations as global, like traditional compilers. @item *************** union returning with the option @option{ *** 1276,1286 **** @cindex preprocessing tokens @cindex preprocessing numbers @item ! GNU C complains about program fragments such as @samp{0x74ae-0x4000} which appear to be two hexadecimal constants separated by the minus operator. Actually, this string is a single @dfn{preprocessing token}. ! Each such token must correspond to one token in C. Since this does not, ! GNU C prints an error message. Although it may appear obvious that what is meant is an operator and two values, the ISO C standard specifically requires that this be treated as erroneous. --- 1284,1294 ---- @cindex preprocessing tokens @cindex preprocessing numbers @item ! GCC complains about program fragments such as @samp{0x74ae-0x4000} which appear to be two hexadecimal constants separated by the minus operator. Actually, this string is a single @dfn{preprocessing token}. ! Each such token must correspond to one token in C@. Since this does not, ! GCC prints an error message. Although it may appear obvious that what is meant is an operator and two values, the ISO C standard specifically requires that this be treated as erroneous. *************** doesn't do the right thing automatically *** 1314,1320 **** @item If you update the system's header files, such as by installing a new system version, the fixed header files of GCC are not automatically ! updated. The easiest way to update them is to reinstall GCC. (If you want to be clever, look in the makefile and you can find a shortcut.) --- 1322,1328 ---- @item If you update the system's header files, such as by installing a new system version, the fixed header files of GCC are not automatically ! updated. The easiest way to update them is to reinstall GCC@. (If you want to be clever, look in the makefile and you can find a shortcut.) *************** charfunc (tmp.c_str ()); *** 1592,1600 **** @subsection Implicit Copy-Assignment for Virtual Bases When a base class is virtual, only one subobject of the base class ! belongs to each full object. Also, the constructors and destructors are ! invoked only once, and called from the most-derived class. However, such ! objects behave unspecified when being assigned. For example: @example struct Base@{ --- 1600,1608 ---- @subsection Implicit Copy-Assignment for Virtual Bases When a base class is virtual, only one subobject of the base class ! belongs to each full object. Also, the constructors and destructors are ! invoked only once, and called from the most-derived class. However, such ! objects behave unspecified when being assigned. For example: @example struct Base@{ *************** void func(Derived &d1, Derived &d2) *** 1627,1645 **** @end example The C++ standard specifies that @samp{Base::Base} is only called once ! when constructing or copy-constructing a Derived object. It is unspecified whether @samp{Base::operator=} is called more than once when the implicit copy-assignment for Derived objects is invoked (as it is inside @samp{func} in the example). g++ implements the ``intuitive'' algorithm for copy-assignment: assign all ! direct bases, then assign all members. In that algorithm, the virtual ! base subobject can be encountered many times. In the example, copying proceeds in the following order: @samp{val}, @samp{name} (via @code{strdup}), @samp{bval}, and @samp{name} again. If application code relies on copy-assignment, a user-defined ! copy-assignment operator removes any uncertainties. With such an operator, the application can define whether and how the virtual base subobject is assigned. --- 1635,1653 ---- @end example The C++ standard specifies that @samp{Base::Base} is only called once ! when constructing or copy-constructing a Derived object. It is unspecified whether @samp{Base::operator=} is called more than once when the implicit copy-assignment for Derived objects is invoked (as it is inside @samp{func} in the example). g++ implements the ``intuitive'' algorithm for copy-assignment: assign all ! direct bases, then assign all members. In that algorithm, the virtual ! base subobject can be encountered many times. In the example, copying proceeds in the following order: @samp{val}, @samp{name} (via @code{strdup}), @samp{bval}, and @samp{name} again. If application code relies on copy-assignment, a user-defined ! copy-assignment operator removes any uncertainties. With such an operator, the application can define whether and how the virtual base subobject is assigned. *************** ABI standard'' says to do so. *** 1783,1789 **** The ISO C standard leaves it up to the implementation whether a bit-field declared plain @code{int} is signed or not. This in effect creates two ! alternative dialects of C. @opindex fsigned-bitfields @opindex funsigned-bitfields --- 1791,1797 ---- The ISO C standard leaves it up to the implementation whether a bit-field declared plain @code{int} is signed or not. This in effect creates two ! alternative dialects of C@. @opindex fsigned-bitfields @opindex funsigned-bitfields *************** as well. *** 1799,1806 **** Some computer manufacturers have published Application Binary Interface standards which specify that plain bit-fields should be unsigned. It is ! a mistake, however, to say anything about this issue in an ABI. This is ! because the handling of plain bit-fields distinguishes two dialects of C. Both dialects are meaningful on every type of machine. Whether a particular object file was compiled using signed bit-fields or unsigned is of no concern to other object files, even if they access the same --- 1807,1814 ---- Some computer manufacturers have published Application Binary Interface standards which specify that plain bit-fields should be unsigned. It is ! a mistake, however, to say anything about this issue in an ABI@. This is ! because the handling of plain bit-fields distinguishes two dialects of C@. Both dialects are meaningful on every type of machine. Whether a particular object file was compiled using signed bit-fields or unsigned is of no concern to other object files, even if they access the same *************** for pragmatic reasons, not as a requirem *** 1869,1875 **** GCC normally defines @code{__STDC__} to be 1, and in addition defines @code{__STRICT_ANSI__} if you specify the @option{-ansi} option, ! or a @option{-std} option for strict conformance to some version of ISO C. On some hosts, system include files use a different convention, where @code{__STDC__} is normally 0, but is 1 if the user specifies strict conformance to the C Standard. GCC follows the host convention when --- 1877,1883 ---- GCC normally defines @code{__STDC__} to be 1, and in addition defines @code{__STRICT_ANSI__} if you specify the @option{-ansi} option, ! or a @option{-std} option for strict conformance to some version of ISO C@. On some hosts, system include files use a different convention, where @code{__STDC__} is normally 0, but is 1 if the user specifies strict conformance to the C Standard. GCC follows the host convention when *************** These programs work properly with GNU C+ *** 1890,1896 **** They would not work otherwise. In addition, many header files are written to provide prototypes in ISO ! C but not in traditional C. Many of these header files can work without change in C++ provided @code{__STDC__} is defined. If @code{__STDC__} is not defined, they will all fail, and will all need to be changed to test explicitly for C++ as well. --- 1898,1904 ---- They would not work otherwise. In addition, many header files are written to provide prototypes in ISO ! C but not in traditional C@. Many of these header files can work without change in C++ provided @code{__STDC__} is defined. If @code{__STDC__} is not defined, they will all fail, and will all need to be changed to test explicitly for C++ as well. *************** Reporting a bug may help you by bringing *** 2017,2023 **** it may not. (If it does not, look in the service directory; see @ref{Service}.) In any case, the principal function of a bug report is to help the entire community by making the next version of GCC work ! better. Bug reports are your contribution to the maintenance of GCC. Since the maintainers are very overloaded, we cannot respond to every bug report. However, if the bug has not been fixed, we are likely to --- 2025,2031 ---- it may not. (If it does not, look in the service directory; see @ref{Service}.) In any case, the principal function of a bug report is to help the entire community by making the next version of GCC work ! better. Bug reports are your contribution to the maintenance of GCC@. Since the maintainers are very overloaded, we cannot respond to every bug report. However, if the bug has not been fixed, we are likely to *************** things: *** 2157,2167 **** @itemize @bullet @item ! The version of GCC. You can get this by running it with the @option{-v} option. Without this, we won't know whether there is any point in looking for ! the bug in the current version of GCC. @item A complete input file that will reproduce the bug. If the bug is in the --- 2165,2175 ---- @itemize @bullet @item ! The version of GCC@. You can get this by running it with the @option{-v} option. Without this, we won't know whether there is any point in looking for ! the bug in the current version of GCC@. @item A complete input file that will reproduce the bug. If the bug is in the *************** requires. If the bug is in the compiler *** 2170,2176 **** preprocessor output generated by adding @option{-save-temps} to the compilation command (@pxref{Debugging Options}). When you do this, use the same @option{-I}, @option{-D} or @option{-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, --- 2178,2184 ---- preprocessor output generated by adding @option{-save-temps} to the compilation command (@pxref{Debugging Options}). When you do this, use the same @option{-I}, @option{-D} or @option{-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, *************** don't support) is a modification of the *** 2221,2227 **** @item Details of any other deviations from the standard procedure for installing ! GCC. @item A description of what behavior you observe that you believe is --- 2229,2235 ---- @item Details of any other deviations from the standard procedure for installing ! GCC@. @item A description of what behavior you observe that you believe is *************** we should be able to reproduce the crash *** 2378,2392 **** @cindex gccbug script To simplify creation of bug reports, and to allow better tracking of ! reports, we use the GNATS bug tracking system. Part of that system is ! the @code{gccbug} script. This is a Unix shell script, so you need a ! shell to run it. It is normally installed in the same directory where @code{gcc} is installed. The gccbug script is derived from send-pr, @pxref{using ! send-pr,,Creating new Problem Reports,send-pr,Reporting Problems}. When invoked, it starts a text editor so you can fill out the various fields ! of the report. When the you quit the editor, the report is automatically send to the bug reporting address. A number of fields in this bug report form are specific to GCC, and are --- 2386,2400 ---- @cindex gccbug script To simplify creation of bug reports, and to allow better tracking of ! reports, we use the GNATS bug tracking system. Part of that system is ! the @code{gccbug} script. This is a Unix shell script, so you need a ! shell to run it. It is normally installed in the same directory where @code{gcc} is installed. The gccbug script is derived from send-pr, @pxref{using ! send-pr,,Creating new Problem Reports,send-pr,Reporting Problems}. When invoked, it starts a text editor so you can fill out the various fields ! of the report. When the you quit the editor, the report is automatically send to the bug reporting address. A number of fields in this bug report form are specific to GCC, and are *************** mailing list, @email{gcc-patches@@gcc.gn *** 2401,2407 **** Please follow these guidelines so we can study your patches efficiently. If you don't follow these guidelines, your information might still be ! useful, but using it will take extra work. Maintaining GNU C is a lot of work in the best of circumstances, and we can't keep up unless you do your best to help. --- 2409,2415 ---- Please follow these guidelines so we can study your patches efficiently. If you don't follow these guidelines, your information might still be ! useful, but using it will take extra work. Maintaining GCC is a lot of work in the best of circumstances, and we can't keep up unless you do your best to help. *************** projects are listed at @uref{http://gcc. *** 2552,2558 **** @chapter Using GCC on VMS @c prevent bad page break with this line ! Here is how to use GCC on VMS. @menu * Include Files and VMS:: Where the preprocessor looks for the include files. --- 2560,2566 ---- @chapter Using GCC on VMS @c prevent bad page break with this line ! Here is how to use GCC on VMS@. @menu * Include Files and VMS:: Where the preprocessor looks for the include files. *************** preprocessor then uses this name with no *** 2592,2598 **** the include file. @item ! If the file specification is not a valid VMS filename (i.e. does not contain a device or a directory specifier, and contains a @samp{/} character), the preprocessor tries to convert it from Unix syntax to VMS syntax. --- 2600,2606 ---- the include file. @item ! If the file specification is not a valid VMS filename (i.e.@: does not contain a device or a directory specifier, and contains a @samp{/} character), the preprocessor tries to convert it from Unix syntax to VMS syntax. *************** Include directives of the form: *** 2615,2621 **** @end example @noindent ! are a common source of incompatibility between VAX-C and GCC. VAX-C treats this much like a standard @code{#include } directive. That is incompatible with the ISO C behavior implemented by GCC: to expand the name @code{foobar} as a macro. Macro expansion should --- 2623,2629 ---- @end example @noindent ! are a common source of incompatibility between VAX-C and GCC@. VAX-C treats this much like a standard @code{#include } directive. That is incompatible with the ISO C behavior implemented by GCC: to expand the name @code{foobar} as a macro. Macro expansion should *************** whether explicitly, or implicitly via a *** 2674,2680 **** @findex GLOBALVALUEDEF @findex GLOBALVALUEREF GCC does not provide the @code{globalref}, @code{globaldef} and ! @code{globalvalue} keywords of VAX-C. You can get the same effect with an obscure feature of GAS, the GNU assembler. (This requires GAS version 1.39 or later.) The following macros allow you to use this feature in a fairly natural way: --- 2682,2688 ---- @findex GLOBALVALUEDEF @findex GLOBALVALUEREF GCC does not provide the @code{globalref}, @code{globaldef} and ! @code{globalvalue} keywords of VAX-C@. You can get the same effect with an obscure feature of GAS, the GNU assembler. (This requires GAS version 1.39 or later.) The following macros allow you to use this feature in a fairly natural way: *************** you fail to specify an explicit return v *** 2797,2806 **** by VMS as a status code indicating a normal successful completion. Version 1 of GCC did not provide this default. ! GCC on VMS works only with the GNU assembler, GAS. You need version 1.37 or later of GAS in order to produce value debugging information for the VMS debugger. Use the ordinary VMS linker with the object files ! produced by GAS. @cindex shared VMS run time system @cindex @file{VAXCRTL} --- 2805,2814 ---- by VMS as a status code indicating a normal successful completion. Version 1 of GCC did not provide this default. ! GCC on VMS works only with the GNU assembler, GAS@. You need version 1.37 or later of GAS in order to produce value debugging information for the VMS debugger. Use the ordinary VMS linker with the object files ! produced by GAS@. @cindex shared VMS run time system @cindex @file{VAXCRTL} *************** Name augmentation yields bad results for *** 2835,2847 **** libraries (such as Xlib) which were generated by another compiler. You can use the compiler option @samp{/NOCASE_HACK} to inhibit augmentation; it makes external C functions and variables case-independent as is usual ! on VMS. Alternatively, you could write all references to the functions and variables in such libraries using lower case; this will work on VMS, but is not portable to other systems. The compiler option @samp{/NAMES} also provides control over global name handling. ! Function and variable names are handled somewhat differently with GNU ! C++. The GNU C++ compiler performs @dfn{name mangling} on function names, which means that it adds information to the function name to describe the data types of the arguments that the function takes. One result of this is that the name of a function can become very long. --- 2843,2855 ---- libraries (such as Xlib) which were generated by another compiler. You can use the compiler option @samp{/NOCASE_HACK} to inhibit augmentation; it makes external C functions and variables case-independent as is usual ! on VMS@. Alternatively, you could write all references to the functions and variables in such libraries using lower case; this will work on VMS, but is not portable to other systems. The compiler option @samp{/NAMES} also provides control over global name handling. ! Function and variable names are handled somewhat differently with G++. ! The GNU C++ compiler performs @dfn{name mangling} on function names, which means that it adds information to the function name to describe the data types of the arguments that the function takes. One result of this is that the name of a function can become very long. *************** These macro definitions can be placed in *** 2876,2882 **** number of changes to your source code. @node Makefile ! @chapter Makefile Targets @cindex makefile targets @cindex targets, makefile --- 2884,2892 ---- number of changes to your source code. @node Makefile ! @chapter Additional Makefile and configure information. ! ! @section Makefile Targets @cindex makefile targets @cindex targets, makefile *************** regardless of how it itself was compiled *** 2974,2979 **** --- 2984,3051 ---- @end table + @section Configure Terms and History + @cindex configure terms + @cindex canadian + + This section is not instructions for building GCC. If you are trying to + do a build, you should first read @uref{http://gcc.gnu.org/install/} or + whatever installation instructions came with your source package. + + The configure and build process has a long and colorful history, and can + be confusing to anyone who doesn't know why things are the way they are. + While there are other documents which describe the configuration process + in detail, here are a few things that everyone working on GCC should + know. + + There are three system names that the build knows about: the machine you + are building on (@dfn{build}), the machine that you are building for + (@dfn{host}), and the machine that GCC will produce code for + (@dfn{target}). When you configure GCC, you specify these with + @option{--build=}, @option{--host=}, and @option{--target=}. + + Specifying the host without specifying the build should be avoided, as + @command{configure} may (and once did) assume that the host you specify + is also the build, which may not be true. + + If build, host, and target are all the same, this is called a + @dfn{native}. If build and host are the same but target is different, + this is called a @dfn{cross}. If build, host, and target are all + different this is called a @dfn{canadian} (for obscure reasons dealing + with Canada's political party and the background of the person working + on the build at that time). If host and target are the same, but build + is different, you are using a cross-compiler to build a native for a + different system. Some people call this a @dfn{host-x-host}, + @dfn{crossed native}, or @dfn{cross-built native}. If build and target + are the same, but host is different, you are using a cross compiler to + build a cross compiler that produces code for the machine you're + building on. This is rare, so there is no common say of describing it + (although I propose calling it a @dfn{crossback}). + + If build and host are the same, the GCC you are building will also be + used to build the target libraries (like @code{libstdc++}). If build and host + are different, you must have already build and installed a cross + compiler that will be used to build the target libraries (if you + configured with @option{--target=foo-bar}, this compiler will be called + @command{foo-bar-gcc}). + + In the case of target libraries, the machine you're building for is the + machine you specified with @option{--target}. So, build is the machine + you're building on (no change there), host is the machine you're + building for (the target libraries are built for the target, so host is + the target you specified), and target doesn't apply (because you're not + building a compiler, you're building libraries). The configure/make + process will adjust these variables as needed. It also sets + @code{$with_cross_host} to the original @option{--host} value in case you + need it. + + Libiberty, for example, is built twice. The first time, host comes from + @option{--host} and the second time host comes from @option{--target}. + Historically, libiberty has not been built for the build machine, + though, which causes some interesting issues with programs used to + generate sources for the build. Fixing this, so that libiberty is built + three times, has long been on the to-do list. + @end ifset @ifset INTERNALS *************** incompatibility with code that follows t *** 3065,3071 **** change is practical only if you are switching to GCC as the sole C compiler for the system. We may implement register argument passing on certain machines once we have a complete GNU system so that we can ! compile the libraries with GCC. On some machines (particularly the Sparc), certain types of arguments are passed ``by invisible reference''. This means that the value is --- 3137,3143 ---- change is practical only if you are switching to GCC as the sole C compiler for the system. We may implement register argument passing on certain machines once we have a complete GNU system so that we can ! compile the libraries with GCC@. On some machines (particularly the Sparc), certain types of arguments are passed ``by invisible reference''. This means that the value is *************** closing files, and sequencing the passes *** 3133,3150 **** @cindex parsing pass The parsing pass is invoked only once, to parse the entire input. A ! high level tree representation is then generated from the input, one function at a time. This tree code is then transformed into RTL ! intermediate code, and processed. The files involved in transforming the trees into RTL are @file{expr.c}, @file{expmed.c}, and ! @file{stmt.c}. @c Note, the above files aren't strictly the only files involved. It's @c all over the place (function.c, final.c,etc). However, those are @c the files that are supposed to be directly involved, and have @c their purpose listed as such, so i've only listed them. The order of trees that are processed, is not ! necessarily the same order they are generated from ! the input, due to deferred inlining, and other considerations. @findex rest_of_compilation @findex rest_of_decl_compilation --- 3205,3222 ---- @cindex parsing pass The parsing pass is invoked only once, to parse the entire input. A ! high level tree representation is then generated from the input, one function at a time. This tree code is then transformed into RTL ! intermediate code, and processed. The files involved in transforming the trees into RTL are @file{expr.c}, @file{expmed.c}, and ! @file{stmt.c}. @c Note, the above files aren't strictly the only files involved. It's @c all over the place (function.c, final.c,etc). However, those are @c the files that are supposed to be directly involved, and have @c their purpose listed as such, so i've only listed them. The order of trees that are processed, is not ! necessarily the same order they are generated from ! the input, due to deferred inlining, and other considerations. @findex rest_of_compilation @findex rest_of_decl_compilation *************** with @option{-d} options. *** 3173,3179 **** @itemize @bullet @item Parsing. This pass reads the entire text of a function definition, ! constructing a high level tree representation. The tree representation does not entirely follow C syntax, because it is intended to support other languages as well. --- 3245,3253 ---- @itemize @bullet @item Parsing. This pass reads the entire text of a function definition, ! constructing a high level tree representation. (Because of the semantic ! analysis that takes place during this pass, it does more than is ! formally considered to be parsing.) The tree representation does not entirely follow C syntax, because it is intended to support other languages as well. *************** Variables are represented as declaration *** 3185,3191 **** The language-independent source files for parsing are @file{stor-layout.c}, @file{fold-const.c}, and @file{tree.c}. There are also header files @file{tree.h} and @file{tree.def} ! which define the format of the tree representation.@refill C Preprocessing, for language front ends, that want or require it, is performed by cpplib, which is covered in seperate documentation. In --- 3259,3265 ---- The language-independent source files for parsing are @file{stor-layout.c}, @file{fold-const.c}, and @file{tree.c}. There are also header files @file{tree.h} and @file{tree.def} ! which define the format of the tree representation. C Preprocessing, for language front ends, that want or require it, is performed by cpplib, which is covered in seperate documentation. In *************** particular, the internals are covered in *** 3194,3217 **** @c Avoiding overfull is tricky here. The source files to parse C are - @file{c-parse.in}, - @file{c-decl.c}, - @file{c-typeck.c}, @file{c-aux-info.c}, @file{c-convert.c}, ! and @file{c-lang.c} ! along with header files ! @file{c-lex.h}, and ! @file{c-tree.h}. The source files for parsing C++ are in @file{cp/}. They are @file{parse.y}, ! @file{class.c},@* @file{cvt.c}, @file{decl.c}, @file{decl2.c}, ! @file{except.c},@* @file{expr.c}, @file{init.c}, @file{lex.c}, ! @file{method.c}, @file{ptree.c},@* ! @file{search.c}, @file{spew.c}, @* @file{semantics.c}, @file{tree.c}, @file{typeck2.c}, and @file{typeck.c}, along with header files @file{cp-tree.def}, --- 3268,3293 ---- @c Avoiding overfull is tricky here. The source files to parse C are @file{c-aux-info.c}, @file{c-convert.c}, ! @file{c-decl.c}, ! @file{c-errors.c}, ! @file{c-lang.c}, ! @file{c-parse.in}, ! and ! @file{c-typeck.c}, ! along with a header file ! @file{c-tree.h} ! and some files shared with Objective-C and C++. The source files for parsing C++ are in @file{cp/}. They are @file{parse.y}, ! @file{class.c}, @file{cvt.c}, @file{decl.c}, @file{decl2.c}, ! @file{except.c}, @file{expr.c}, @file{init.c}, @file{lex.c}, ! @file{method.c}, @file{ptree.c}, ! @file{search.c}, @file{spew.c}, @file{semantics.c}, @file{tree.c}, @file{typeck2.c}, and @file{typeck.c}, along with header files @file{cp-tree.def}, *************** They are @file{objc-parse.y}, @file{objc *** 3222,3228 **** @file{objc-act.h}. Certain C-specific files are used for this as well. ! The file @file{c-common.c} is also used for all of the above languages. @cindex Tree optimization --- 3298,3319 ---- @file{objc-act.h}. Certain C-specific files are used for this as well. ! The files ! @file{c-common.c}, ! @file{c-common.def}, ! @file{c-dump.c}, ! @file{c-format.c}, ! @file{c-lex.c}, ! @file{c-pragma.c}, ! and ! @file{c-semantics.c}, ! along with header files ! @file{c-common.h}, ! @file{c-dump.h}, ! @file{c-lex.h}, ! and ! @file{c-pragma.h}, ! are also used for all of the above languages. @cindex Tree optimization *************** representation, before converting into R *** 3232,3250 **** @cindex inline on trees, automatic Currently, the main optimization performed here is tree-based ! inlining. This is implemented for C++ in @file{cp/optimize.c}. Note that tree based inlining turns off rtx based inlining (since it's more powerful, it would be a waste of time to do rtx based inlining in addition). ! The C front end currently does not perform tree based inlining. @cindex constant folding @cindex arithmetic simplifications @cindex simplifications, arithmetic Constant folding and some arithmetic simplifications are also done during this pass, on the tree representation. ! The routines that perform these tasks are located in @file{fold-const.c}. @cindex RTL generation @item --- 3323,3341 ---- @cindex inline on trees, automatic Currently, the main optimization performed here is tree-based ! inlining. This is implemented for C++ in @file{cp/optimize.c}. Note that tree based inlining turns off rtx based inlining (since it's more powerful, it would be a waste of time to do rtx based inlining in addition). ! The C front end currently does not perform tree based inlining. @cindex constant folding @cindex arithmetic simplifications @cindex simplifications, arithmetic Constant folding and some arithmetic simplifications are also done during this pass, on the tree representation. ! The routines that perform these tasks are located in @file{fold-const.c}. @cindex RTL generation @item *************** and @file{emit-rtl.c}. *** 3276,3289 **** Also, the file @file{insn-emit.c}, generated from the machine description by the program @code{genemit}, is used in this pass. The header file ! @file{expr.h} is used for communication within this pass.@refill @findex genflags @findex gencodes The header files @file{insn-flags.h} and @file{insn-codes.h}, generated from the machine description by the programs @code{genflags} and @code{gencodes}, tell this pass which standard names are available ! for use and which patterns correspond to them.@refill Aside from debugging information output, none of the following passes refers to the tree structure representation of the function (only --- 3367,3380 ---- Also, the file @file{insn-emit.c}, generated from the machine description by the program @code{genemit}, is used in this pass. The header file ! @file{expr.h} is used for communication within this pass. @findex genflags @findex gencodes The header files @file{insn-flags.h} and @file{insn-codes.h}, generated from the machine description by the programs @code{genflags} and @code{gencodes}, tell this pass which standard names are available ! for use and which patterns correspond to them. Aside from debugging information output, none of the following passes refers to the tree structure representation of the function (only *************** function must meet certain criteria, cur *** 3296,3302 **** the function and the types and number of parameters it has. Note that this function may contain loops, recursive calls to itself (tail-recursive functions can be inlined!), gotos, in short, all ! constructs supported by GCC. The file @file{integrate.c} contains the code to save a function's rtl for later inlining and to inline that rtl when the function is called. The header file @file{integrate.h} is also used for this purpose. --- 3387,3393 ---- the function and the types and number of parameters it has. Note that this function may contain loops, recursive calls to itself (tail-recursive functions can be inlined!), gotos, in short, all ! constructs supported by GCC@. The file @file{integrate.c} contains the code to save a function's rtl for later inlining and to inline that rtl when the function is called. The header file @file{integrate.h} is also used for this purpose. *************** The source file of this pass is @file{si *** 3319,3325 **** @opindex di The option @option{-di} causes a debugging dump of the RTL code after ! this pass is run. This dump file's name is made by appending @samp{.sibling} to the input file name. @cindex jump optimization --- 3410,3416 ---- @opindex di The option @option{-di} causes a debugging dump of the RTL code after ! this pass is run. This dump file's name is made by appending @samp{.sibling} to the input file name. @cindex jump optimization *************** Common subexpression elimination. This *** 3371,3377 **** propagation. Its source files are @file{cse.c}, and @file{cselib.c}. If constant propagation causes conditional jumps to become unconditional or to become no-ops, jump optimization is run again when ! CSE is finished. @opindex ds The option @option{-ds} causes a debugging dump of the RTL code after --- 3462,3468 ---- propagation. Its source files are @file{cse.c}, and @file{cselib.c}. If constant propagation causes conditional jumps to become unconditional or to become no-ops, jump optimization is run again when ! CSE is finished. @opindex ds The option @option{-ds} causes a debugging dump of the RTL code after *************** the input file name. *** 3382,3391 **** @cindex Single Static Assignment optimizations @opindex fssa @item ! Static Single Assignment (SSA) based optimization passes. The SSA conversion passes (to/from) are turned on by the @option{-fssa} option (it is also done automatically if you enable an SSA optimization pass). ! These passes utilize a form called Static Single Assignment. In SSA form, each variable (pseudo register) is only set once, giving you def-use and use-def chains for free, and enabling a lot more optimization passes to be run in linear time. --- 3473,3482 ---- @cindex Single Static Assignment optimizations @opindex fssa @item ! Static Single Assignment (SSA) based optimization passes. The SSA conversion passes (to/from) are turned on by the @option{-fssa} option (it is also done automatically if you enable an SSA optimization pass). ! These passes utilize a form called Static Single Assignment. In SSA form, each variable (pseudo register) is only set once, giving you def-use and use-def chains for free, and enabling a lot more optimization passes to be run in linear time. *************** The option @option{-de} causes a debuggi *** 3397,3414 **** this pass. This dump file's name is made by appending @samp{.ssa} to the input file name. @itemize @bullet ! @cindex SSA DCE @cindex DCE, SSA based @cindex dead code elimination @opindex fdce @item ! Dead Code Elimination. Turned on by the @option{-fdce} option. This pass performs elimination of code considered unnecessary because it is never executed. It operates in linear time. @opindex dX The option @option{-dX} causes a debugging dump of the RTL code after ! this pass. This dump file's name is made by appending @samp{.dce} to the input file name. @end itemize @cindex global common subexpression elimination --- 3488,3505 ---- this pass. This dump file's name is made by appending @samp{.ssa} to the input file name. @itemize @bullet ! @cindex SSA DCE @cindex DCE, SSA based @cindex dead code elimination @opindex fdce @item ! Dead Code Elimination. Turned on by the @option{-fdce} option. This pass performs elimination of code considered unnecessary because it is never executed. It operates in linear time. @opindex dX The option @option{-dX} causes a debugging dump of the RTL code after ! this pass. This dump file's name is made by appending @samp{.dce} to the input file name. @end itemize @cindex global common subexpression elimination *************** the input file name. *** 3418,3438 **** Global common subexpression elimination. This pass performs two different types of GCSE depending on whether you are optimizing for size or not (LCM based GCSE tends to increase code size for a gain in ! speed, while Morel-Renvoise based GCSE does not). When optimizing for size, GCSE is done 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. If MR PRE GCSE is done, code hoisting (aka unification) is also done, as well as load motion. If you are optimizing for speed, LCM (lazy code motion) based GCSE is ! done. LCM is based on the work of Knoop, Ruthing, and Steffen. LCM based GCSE also does loop invariant code motion. We also perform load and store motion when optimizing for speed. Regardless of which type of GCSE is used, the GCSE pass also performs ! global constant and copy propagation. The source file for this pass is @file{gcse.c}, and the LCM routines ! are in @file{lcm.c}. @opindex dG The option @option{-dG} causes a debugging dump of the RTL code after --- 3509,3529 ---- Global common subexpression elimination. This pass performs two different types of GCSE depending on whether you are optimizing for size or not (LCM based GCSE tends to increase code size for a gain in ! speed, while Morel-Renvoise based GCSE does not). When optimizing for size, GCSE is done 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. If MR PRE GCSE is done, code hoisting (aka unification) is also done, as well as load motion. If you are optimizing for speed, LCM (lazy code motion) based GCSE is ! done. LCM is based on the work of Knoop, Ruthing, and Steffen. LCM based GCSE also does loop invariant code motion. We also perform load and store motion when optimizing for speed. Regardless of which type of GCSE is used, the GCSE pass also performs ! global constant and copy propagation. The source file for this pass is @file{gcse.c}, and the LCM routines ! are in @file{lcm.c}. @opindex dG The option @option{-dG} causes a debugging dump of the RTL code after *************** the input file name. *** 3514,3520 **** @cindex register movement @item ! Register movement (@file{regmove.c}). This pass looks for cases where matching constraints would force an instruction to need a reload, and this reload would be a register to register move. It then attempts to change the registers used by the instruction to avoid the move --- 3605,3611 ---- @cindex register movement @item ! Register movement (@file{regmove.c}). This pass looks for cases where matching constraints would force an instruction to need a reload, and this reload would be a register to register move. It then attempts to change the registers used by the instruction to avoid the move *************** to the input file name. *** 3605,3619 **** @cindex reordering, block @item Basic block reordering. This pass implements profile guided code ! positioning. If profile information is not available, various types of static analysis are performed to make the predictions normally coming from the profile feedback (IE execution frequency, branch probability, ! etc). It is implemented in the file @file{bb-reorder.c}, and the various prediction routines are in @file{predict.c}. @opindex dB The option @option{-dB} causes a debugging dump of the RTL code after ! this pass. This dump file's name is made by appending @samp{.bbro} to the input file name. @cindex cross-jumping --- 3696,3710 ---- @cindex reordering, block @item Basic block reordering. This pass implements profile guided code ! positioning. If profile information is not available, various types of static analysis are performed to make the predictions normally coming from the profile feedback (IE execution frequency, branch probability, ! etc). It is implemented in the file @file{bb-reorder.c}, and the various prediction routines are in @file{predict.c}. @opindex dB The option @option{-dB} causes a debugging dump of the RTL code after ! this pass. This dump file's name is made by appending @samp{.bbro} to the input file name. @cindex cross-jumping *************** Final. This pass outputs the assembler *** 3667,3673 **** also responsible for identifying spurious test and compare instructions. Machine-specific peephole optimizations are performed at the same time. The function entry and exit sequences are generated ! directly as assembler code in this pass; they never exist as RTL. The source files are @file{final.c} plus @file{insn-output.c}; the latter is generated automatically from the machine description by the --- 3758,3764 ---- also responsible for identifying spurious test and compare instructions. Machine-specific peephole optimizations are performed at the same time. The function entry and exit sequences are generated ! directly as assembler code in this pass; they never exist as RTL@. The source files are @file{final.c} plus @file{insn-output.c}; the latter is generated automatically from the machine description by the *************** representation of floating point constan *** 3699,3705 **** All the passes that work with RTL use the header files @file{rtl.h} and @file{rtl.def}, and subroutines in file @file{rtl.c}. The tools @code{gen*} also use these files to read and work with the machine ! description RTL. @findex genconfig @item --- 3790,3796 ---- All the passes that work with RTL use the header files @file{rtl.h} and @file{rtl.def}, and subroutines in file @file{rtl.c}. The tools @code{gen*} also use these files to read and work with the machine ! description RTL@. @findex genconfig @item *************** Several passes use the instruction recog *** 3714,3720 **** @file{recog.c} and @file{recog.h}, plus the files @file{insn-recog.c} and @file{insn-extract.c} that are generated automatically from the machine description by the tools @file{genrecog} and ! @file{genextract}.@refill @item Several passes use the header files @file{regs.h} which defines the --- 3805,3811 ---- @file{recog.c} and @file{recog.h}, plus the files @file{insn-recog.c} and @file{insn-extract.c} that are generated automatically from the machine description by the tools @file{genrecog} and ! @file{genextract}. @item Several passes use the header files @file{regs.h} which defines the *************** attributes defined for a particular mach *** 3734,3740 **** @file{insn-attr.h}, which is generated from the machine description by the program @file{genattr}. The file @file{insn-attrtab.c} contains subroutines to obtain the attribute values for insns. It is generated ! from the machine description by the program @file{genattrtab}.@refill @end itemize @end ifset --- 3825,3831 ---- @file{insn-attr.h}, which is generated from the machine description by the program @file{genattr}. The file @file{insn-attrtab.c} contains subroutines to obtain the attribute values for insns. It is generated ! from the machine description by the program @file{genattrtab}. @end itemize @end ifset *************** are identical. But there are some macro *** 3762,3772 **** @table @code @findex USG @item USG ! Define this macro if the host system is System V. @findex VMS @item VMS ! Define this macro if the host system is VMS. @findex FATAL_EXIT_CODE @item FATAL_EXIT_CODE --- 3853,3863 ---- @table @code @findex USG @item USG ! Define this macro if the host system is System V@. @findex VMS @item VMS ! Define this macro if the host system is VMS@. @findex FATAL_EXIT_CODE @item FATAL_EXIT_CODE *************** If you don't define this, @code{free} is *** 3849,3855 **** @findex USE_C_ALLOCA @item USE_C_ALLOCA Define this macro to indicate that the compiler is running with the ! @code{alloca} implemented in C. This version of @code{alloca} can be found in the file @file{alloca.c}; to use it, you must also alter the @file{Makefile} variable @code{ALLOCA}. (This is done automatically for the systems on which we know it is needed.) --- 3940,3946 ---- @findex USE_C_ALLOCA @item USE_C_ALLOCA Define this macro to indicate that the compiler is running with the ! @code{alloca} implemented in C@. This version of @code{alloca} can be found in the file @file{alloca.c}; to use it, you must also alter the @file{Makefile} variable @code{ALLOCA}. (This is done automatically for the systems on which we know it is needed.) *************** used in an expression. *** 3877,3883 **** @findex MULTIBYTE_CHARS @item MULTIBYTE_CHARS Define this macro to enable support for multibyte characters in the ! input to GCC. This requires that the host system support the ISO C library functions for converting multibyte characters to wide characters. --- 3968,3974 ---- @findex MULTIBYTE_CHARS @item MULTIBYTE_CHARS Define this macro to enable support for multibyte characters in the ! input to GCC@. This requires that the host system support the ISO C library functions for converting multibyte characters to wide characters. *************** initialization when a compilation driver *** 3965,3972 **** @item UPDATE_PATH_HOST_CANONICALIZE (@var{path}, @var{key}) If defined, a C statement (sans semicolon) that performs host-dependent canonicalization when a path used in a compilation driver or preprocessor is ! canonicalized. @var{path} is the path to be canonicalized, and @var{key} is ! a translation prefix when its value isn't @code{NULL}. If the C statement does canonicalize @var{path}, the new path should be returned. @end table --- 4056,4063 ---- @item UPDATE_PATH_HOST_CANONICALIZE (@var{path}, @var{key}) If defined, a C statement (sans semicolon) that performs host-dependent canonicalization when a path used in a compilation driver or preprocessor is ! canonicalized. @var{path} is the path to be canonicalized, and @var{key} is ! a translation prefix when its value isn't @code{NULL}. If the C statement does canonicalize @var{path}, the new path should be returned. @end table *************** The install program to use. *** 4158,4211 **** @end table @end ifset ! @node Funding ! @unnumbered Funding Free Software ! ! If you want to have more free software a few years from now, it makes ! sense for you to help encourage people to contribute funds for its ! development. The most effective approach known is to encourage ! commercial redistributors to donate. ! ! Users of free software systems can boost the pace of development by ! encouraging for-a-fee distributors to donate part of their selling price ! to free software developers---the Free Software Foundation, and others. ! ! The way to convince distributors to do this is to demand it and expect ! it from them. So when you compare distributors, judge them partly by ! how much they give to free software development. Show distributors ! they must compete to be the one who gives the most. ! ! To make this approach work, you must insist on numbers that you can ! compare, such as, ``We will donate ten dollars to the Frobnitz project ! for each disk sold.'' Don't be satisfied with a vague promise, such as ! ``A portion of the profits are donated,'' since it doesn't give a basis ! for comparison. ! ! Even a precise fraction ``of the profits from this disk'' is not very ! meaningful, since creative accounting and unrelated business decisions ! can greatly alter what fraction of the sales price counts as profit. ! If the price you pay is $50, ten percent of the profit is probably ! less than a dollar; it might be a few cents, or nothing at all. ! ! Some redistributors do development work themselves. This is useful too; ! but to keep everyone honest, you need to inquire how much they do, and ! what kind. Some kinds of development make much more long-term ! difference than others. For example, maintaining a separate version of ! a program contributes very little; maintaining the standard version of a ! program for the whole community contributes much. Easy new ports ! contribute little, since someone else would surely do them; difficult ! ports such as adding a new CPU to the GNU Compiler Collection contribute more; ! major new features or packages contribute the most. ! ! By establishing the idea that supporting further development is ``the ! proper thing to do'' when distributing free software for a fee, we can ! assure a steady flow of resources into making more free software. ! ! @display ! Copyright (C) 1994 Free Software Foundation, Inc. ! Verbatim copying and redistribution of this section is permitted ! without royalty; alteration is not permitted. ! @end display @node GNU/Linux @unnumbered Linux and the GNU Project --- 4249,4255 ---- @end table @end ifset ! @include funding.texi @node GNU/Linux @unnumbered Linux and the GNU Project *************** What they found was no accident---it was *** 4238,4244 **** 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 --- 4282,4288 ---- 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 *************** distribution'', GNU software was the lar *** 4254,4260 **** 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 --- 4298,4304 ---- 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 *************** name ``Linux'' ambiguously. Linux is th *** 4306,4703 **** major components of the system. The system as a whole is more or less the GNU system. ! @node Copying ! @unnumbered GNU GENERAL PUBLIC LICENSE ! @center Version 2, June 1991 ! ! @display ! Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc. ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ! ! Everyone is permitted to copy and distribute verbatim copies ! of this license document, but changing it is not allowed. ! @end display ! ! @unnumberedsec Preamble ! ! The licenses for most software are designed to take away your ! freedom to share and change it. By contrast, the GNU General Public ! License is intended to guarantee your freedom to share and change free ! software---to make sure the software is free for all its users. This ! General Public License applies to most of the Free Software ! Foundation's software and to any other program whose authors commit to ! using it. (Some other Free Software Foundation software is covered by ! the GNU Library General Public License instead.) You can apply it to ! your programs, too. ! ! When we speak of free software, we are referring to freedom, not ! price. Our General Public Licenses are designed to make sure that you ! have the freedom to distribute copies of free software (and charge for ! this service if you wish), that you receive source code or can get it ! if you want it, that you can change the software or use pieces of it ! in new free programs; and that you know you can do these things. ! ! To protect your rights, we need to make restrictions that forbid ! anyone to deny you these rights or to ask you to surrender the rights. ! These restrictions translate to certain responsibilities for you if you ! distribute copies of the software, or if you modify it. ! ! For example, if you distribute copies of such a program, whether ! gratis or for a fee, you must give the recipients all the rights that ! you have. You must make sure that they, too, receive or can get the ! source code. And you must show them these terms so they know their ! rights. ! ! We protect your rights with two steps: (1) copyright the software, and ! (2) offer you this license which gives you legal permission to copy, ! distribute and/or modify the software. ! ! Also, for each author's protection and ours, we want to make certain ! that everyone understands that there is no warranty for this free ! software. If the software is modified by someone else and passed on, we ! want its recipients to know that what they have is not the original, so ! that any problems introduced by others will not reflect on the original ! authors' reputations. ! ! Finally, any free program is threatened constantly by software ! patents. We wish to avoid the danger that redistributors of a free ! program will individually obtain patent licenses, in effect making the ! program proprietary. To prevent this, we have made it clear that any ! patent must be licensed for everyone's free use or not licensed at all. ! ! The precise terms and conditions for copying, distribution and ! modification follow. ! ! @iftex ! @unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ! @end iftex ! @ifnottex ! @center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ! @end ifnottex ! ! @enumerate 0 ! @item ! This License applies to any program or other work which contains ! a notice placed by the copyright holder saying it may be distributed ! under the terms of this General Public License. The ``Program'', below, ! refers to any such program or work, and a ``work based on the Program'' ! means either the Program or any derivative work under copyright law: ! that is to say, a work containing the Program or a portion of it, ! either verbatim or with modifications and/or translated into another ! language. (Hereinafter, translation is included without limitation in ! the term ``modification''.) Each licensee is addressed as ``you''. ! ! Activities other than copying, distribution and modification are not ! covered by this License; they are outside its scope. The act of ! running the Program is not restricted, and the output from the Program ! is covered only if its contents constitute a work based on the ! Program (independent of having been made by running the Program). ! Whether that is true depends on what the Program does. ! ! @item ! You may copy and distribute verbatim copies of the Program's ! source code as you receive it, in any medium, provided that you ! conspicuously and appropriately publish on each copy an appropriate ! copyright notice and disclaimer of warranty; keep intact all the ! notices that refer to this License and to the absence of any warranty; ! and give any other recipients of the Program a copy of this License ! along with the Program. ! ! You may charge a fee for the physical act of transferring a copy, and ! you may at your option offer warranty protection in exchange for a fee. ! ! @item ! You may modify your copy or copies of the Program or any portion ! of it, thus forming a work based on the Program, and copy and ! distribute such modifications or work under the terms of Section 1 ! above, provided that you also meet all of these conditions: ! ! @enumerate a ! @item ! You must cause the modified files to carry prominent notices ! stating that you changed the files and the date of any change. ! ! @item ! You must cause any work that you distribute or publish, that in ! whole or in part contains or is derived from the Program or any ! part thereof, to be licensed as a whole at no charge to all third ! parties under the terms of this License. ! ! @item ! If the modified program normally reads commands interactively ! when run, you must cause it, when started running for such ! interactive use in the most ordinary way, to print or display an ! announcement including an appropriate copyright notice and a ! notice that there is no warranty (or else, saying that you provide ! a warranty) and that users may redistribute the program under ! these conditions, and telling the user how to view a copy of this ! License. (Exception: if the Program itself is interactive but ! does not normally print such an announcement, your work based on ! the Program is not required to print an announcement.) ! @end enumerate ! ! These requirements apply to the modified work as a whole. If ! identifiable sections of that work are not derived from the Program, ! and can be reasonably considered independent and separate works in ! themselves, then this License, and its terms, do not apply to those ! sections when you distribute them as separate works. But when you ! distribute the same sections as part of a whole which is a work based ! on the Program, the distribution of the whole must be on the terms of ! this License, whose permissions for other licensees extend to the ! entire whole, and thus to each and every part regardless of who wrote it. ! ! Thus, it is not the intent of this section to claim rights or contest ! your rights to work written entirely by you; rather, the intent is to ! exercise the right to control the distribution of derivative or ! collective works based on the Program. ! ! In addition, mere aggregation of another work not based on the Program ! with the Program (or with a work based on the Program) on a volume of ! a storage or distribution medium does not bring the other work under ! the scope of this License. ! ! @item ! You may copy and distribute the Program (or a work based on it, ! under Section 2) in object code or executable form under the terms of ! Sections 1 and 2 above provided that you also do one of the following: ! ! @enumerate a ! @item ! Accompany it with the complete corresponding machine-readable ! source code, which must be distributed under the terms of Sections ! 1 and 2 above on a medium customarily used for software interchange; or, ! ! @item ! Accompany it with a written offer, valid for at least three ! years, to give any third party, for a charge no more than your ! cost of physically performing source distribution, a complete ! machine-readable copy of the corresponding source code, to be ! distributed under the terms of Sections 1 and 2 above on a medium ! customarily used for software interchange; or, ! ! @item ! Accompany it with the information you received as to the offer ! to distribute corresponding source code. (This alternative is ! allowed only for noncommercial distribution and only if you ! received the program in object code or executable form with such ! an offer, in accord with Subsection b above.) ! @end enumerate ! ! The source code for a work means the preferred form of the work for ! making modifications to it. For an executable work, complete source ! code means all the source code for all modules it contains, plus any ! associated interface definition files, plus the scripts used to ! control compilation and installation of the executable. However, as a ! special exception, the source code distributed need not include ! anything that is normally distributed (in either source or binary ! form) with the major components (compiler, kernel, and so on) of the ! operating system on which the executable runs, unless that component ! itself accompanies the executable. ! ! If distribution of executable or object code is made by offering ! access to copy from a designated place, then offering equivalent ! access to copy the source code from the same place counts as ! distribution of the source code, even though third parties are not ! compelled to copy the source along with the object code. ! ! @item ! You may not copy, modify, sublicense, or distribute the Program ! except as expressly provided under this License. Any attempt ! otherwise to copy, modify, sublicense or distribute the Program is ! void, and will automatically terminate your rights under this License. ! However, parties who have received copies, or rights, from you under ! this License will not have their licenses terminated so long as such ! parties remain in full compliance. ! ! @item ! You are not required to accept this License, since you have not ! signed it. However, nothing else grants you permission to modify or ! distribute the Program or its derivative works. These actions are ! prohibited by law if you do not accept this License. Therefore, by ! modifying or distributing the Program (or any work based on the ! Program), you indicate your acceptance of this License to do so, and ! all its terms and conditions for copying, distributing or modifying ! the Program or works based on it. ! ! @item ! Each time you redistribute the Program (or any work based on the ! Program), the recipient automatically receives a license from the ! original licensor to copy, distribute or modify the Program subject to ! these terms and conditions. You may not impose any further ! restrictions on the recipients' exercise of the rights granted herein. ! You are not responsible for enforcing compliance by third parties to ! this License. ! ! @item ! If, as a consequence of a court judgment or allegation of patent ! infringement or for any other reason (not limited to patent issues), ! conditions are imposed on you (whether by court order, agreement or ! otherwise) that contradict the conditions of this License, they do not ! excuse you from the conditions of this License. If you cannot ! distribute so as to satisfy simultaneously your obligations under this ! License and any other pertinent obligations, then as a consequence you ! may not distribute the Program at all. For example, if a patent ! license would not permit royalty-free redistribution of the Program by ! all those who receive copies directly or indirectly through you, then ! the only way you could satisfy both it and this License would be to ! refrain entirely from distribution of the Program. ! ! If any portion of this section is held invalid or unenforceable under ! any particular circumstance, the balance of the section is intended to ! apply and the section as a whole is intended to apply in other ! circumstances. ! ! It is not the purpose of this section to induce you to infringe any ! patents or other property right claims or to contest validity of any ! such claims; this section has the sole purpose of protecting the ! integrity of the free software distribution system, which is ! implemented by public license practices. Many people have made ! generous contributions to the wide range of software distributed ! through that system in reliance on consistent application of that ! system; it is up to the author/donor to decide if he or she is willing ! to distribute software through any other system and a licensee cannot ! impose that choice. ! ! This section is intended to make thoroughly clear what is believed to ! be a consequence of the rest of this License. ! ! @item ! If the distribution and/or use of the Program is restricted in ! certain countries either by patents or by copyrighted interfaces, the ! original copyright holder who places the Program under this License ! may add an explicit geographical distribution limitation excluding ! those countries, so that distribution is permitted only in or among ! countries not thus excluded. In such case, this License incorporates ! the limitation as if written in the body of this License. ! ! @item ! The Free Software Foundation may publish revised and/or new versions ! of the General Public License from time to time. Such new versions will ! be similar in spirit to the present version, but may differ in detail to ! address new problems or concerns. ! ! Each version is given a distinguishing version number. If the Program ! specifies a version number of this License which applies to it and ``any ! later version'', you have the option of following the terms and conditions ! either of that version or of any later version published by the Free ! Software Foundation. If the Program does not specify a version number of ! this License, you may choose any version ever published by the Free Software ! Foundation. ! ! @item ! If you wish to incorporate parts of the Program into other free ! programs whose distribution conditions are different, write to the author ! to ask for permission. For software which is copyrighted by the Free ! Software Foundation, write to the Free Software Foundation; we sometimes ! make exceptions for this. Our decision will be guided by the two goals ! of preserving the free status of all derivatives of our free software and ! of promoting the sharing and reuse of software generally. ! ! @iftex ! @heading NO WARRANTY ! @end iftex ! @ifnottex ! @center NO WARRANTY ! @end ifnottex ! ! @item ! BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY ! FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN ! OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES ! PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED ! OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ! MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS ! TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE ! PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, ! REPAIR OR CORRECTION. ! ! @item ! IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING ! WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR ! REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, ! INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING ! OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED ! TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY ! YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER ! PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE ! POSSIBILITY OF SUCH DAMAGES. ! @end enumerate ! ! @iftex ! @heading END OF TERMS AND CONDITIONS ! @end iftex ! @ifnottex ! @center END OF TERMS AND CONDITIONS ! @end ifnottex ! ! @page ! @unnumberedsec How to Apply These Terms to Your New Programs ! ! If you develop a new program, and you want it to be of the greatest ! possible use to the public, the best way to achieve this is to make it ! free software which everyone can redistribute and change under these terms. ! ! To do so, attach the following notices to the program. It is safest ! to attach them to the start of each source file to most effectively ! convey the exclusion of warranty; and each file should have at least ! the ``copyright'' line and a pointer to where the full notice is found. ! ! @smallexample ! @var{one line to give the program's name and a brief idea of what it does.} ! Copyright (C) @var{yyyy} @var{name of author} ! ! This program is free software; you can redistribute it and/or modify ! it under the terms of the GNU General Public License as published by ! the Free Software Foundation; either version 2 of the License, or ! (at your option) any later version. ! ! This program is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! GNU General Public License for more details. ! ! You should have received a copy of the GNU General Public License ! along with this program; if not, write to the Free Software ! Foundation, Inc., 59 Temple Place - Suite 330, ! Boston, MA 02111-1307, USA. ! @end smallexample ! ! Also add information on how to contact you by electronic and paper mail. ! ! If the program is interactive, make it output a short notice like this ! when it starts in an interactive mode: ! ! @smallexample ! Gnomovision version 69, Copyright (C) @var{yyyy} @var{name of author} ! Gnomovision comes with ABSOLUTELY NO WARRANTY; for details ! type `show w'. ! This is free software, and you are welcome to redistribute it ! under certain conditions; type `show c' for details. ! @end smallexample ! ! The hypothetical commands @samp{show w} and @samp{show c} should show ! the appropriate parts of the General Public License. Of course, the ! commands you use may be called something other than @samp{show w} and ! @samp{show c}; they could even be mouse-clicks or menu items---whatever ! suits your program. ! ! You should also get your employer (if you work as a programmer) or your ! school, if any, to sign a ``copyright disclaimer'' for the program, if ! necessary. Here is a sample; alter the names: ! ! @smallexample ! Yoyodyne, Inc., hereby disclaims all copyright interest in the program ! `Gnomovision' (which makes passes at compilers) written by James Hacker. ! ! @var{signature of Ty Coon}, 1 April 1989 ! Ty Coon, President of Vice ! @end smallexample ! ! This General Public License does not permit incorporating your program into ! proprietary programs. If your program is a subroutine library, you may ! consider it more useful to permit linking proprietary applications with the ! library. If this is what you want to do, use the GNU Library General ! Public License instead of this License. @c --------------------------------------------------------------------- @c GFDL --- 4350,4356 ---- major components of the system. The system as a whole is more or less the GNU system. ! @include gpl.texi @c --------------------------------------------------------------------- @c GFDL diff -Nrc3pad gcc-3.0/gcc/doc/gcov.1 gcc-3.0.1/gcc/doc/gcov.1 *** gcc-3.0/gcc/doc/gcov.1 Thu Jun 14 04:19:53 2001 --- gcc-3.0.1/gcc/doc/gcov.1 Sun Aug 19 17:45:03 2001 *************** *** 1,5 **** .\" Automatically generated by Pod::Man version 1.16 ! .\" Thu Jun 14 11:01:07 2001 .\" .\" Standard preamble: .\" ====================================================================== --- 1,5 ---- .\" Automatically generated by Pod::Man version 1.16 ! .\" Mon Jun 25 00:16:01 2001 .\" .\" Standard preamble: .\" ====================================================================== *************** *** 138,144 **** .\" ====================================================================== .\" .IX Title "GCOV 1" ! .TH GCOV 1 "gcc-3.0" "2001-06-14" "GNU" .UC .SH "NAME" gcov \- coverage testing tool --- 138,144 ---- .\" ====================================================================== .\" .IX Title "GCOV 1" ! .TH GCOV 1 "gcc-3.0.1" "2001-06-25" "GNU" .UC .SH "NAME" gcov \- coverage testing tool *************** gcov \- coverage testing tool *** 147,154 **** gcov [\fB\-b\fR] [\fB\-c\fR] [\fB\-v\fR] [\fB\-n\fR] [\fB\-l\fR] [\fB\-f\fR] [\fB\-o\fR \fIdirectory\fR] \fIsourcefile\fR .SH "DESCRIPTION" .IX Header "DESCRIPTION" ! \&\fBgcov\fR is a test coverage program. Use it in concert with \s-1GNU\s0 ! \&\s-1CC\s0 to analyze your programs to help create more efficient, faster running code. You can use \fBgcov\fR as a profiling tool to help discover where your optimization efforts will best affect your code. You can also use \fBgcov\fR along with the other profiling tool, --- 147,154 ---- gcov [\fB\-b\fR] [\fB\-c\fR] [\fB\-v\fR] [\fB\-n\fR] [\fB\-l\fR] [\fB\-f\fR] [\fB\-o\fR \fIdirectory\fR] \fIsourcefile\fR .SH "DESCRIPTION" .IX Header "DESCRIPTION" ! \&\fBgcov\fR is a test coverage program. Use it in concert with \s-1GCC\s0 ! to analyze your programs to help create more efficient, faster running code. You can use \fBgcov\fR as a profiling tool to help discover where your optimization efforts will best affect your code. You can also use \fBgcov\fR along with the other profiling tool, *************** in fine-tuning the performance of your p *** 196,202 **** timing information you can use along with the information you get from \&\fBgcov\fR. .PP ! \&\fBgcov\fR works only on code compiled with \s-1GNU\s0 \s-1CC\s0. It is not compatible with any other profiling or test coverage mechanism. .SH "OPTIONS" .IX Header "OPTIONS" --- 196,202 ---- timing information you can use along with the information you get from \&\fBgcov\fR. .PP ! \&\fBgcov\fR works only on code compiled with \s-1GCC\s0. It is not compatible with any other profiling or test coverage mechanism. .SH "OPTIONS" .IX Header "OPTIONS" *************** The directory where the object files liv *** 231,237 **** \&\fI.bbg\fR, and \fI.da\fR files in this directory. .PP When using \fBgcov\fR, you must first compile your program with two ! special \s-1GNU\s0 \s-1CC\s0 options: \fB\-fprofile-arcs \-ftest-coverage\fR. This tells the compiler to generate additional information needed by gcov (basically a flow graph of the program) and also includes additional code in the object files for generating the extra profiling --- 231,237 ---- \&\fI.bbg\fR, and \fI.da\fR files in this directory. .PP When using \fBgcov\fR, you must first compile your program with two ! special \s-1GCC\s0 options: \fB\-fprofile-arcs \-ftest-coverage\fR. This tells the compiler to generate additional information needed by gcov (basically a flow graph of the program) and also includes additional code in the object files for generating the extra profiling *************** counts and finally writes the data to th *** 352,360 **** .Sh "Using \fBgcov\fP with \s-1GCC\s0 Optimization" .IX Subsection "Using gcov with GCC Optimization" If you plan to use \fBgcov\fR to help optimize your code, you must ! first compile your program with two special \s-1GNU\s0 \s-1CC\s0 options: \&\fB\-fprofile-arcs \-ftest-coverage\fR. Aside from that, you can use any ! other \s-1GNU\s0 \s-1CC\s0 options; but if you want to prove that every single line in your program was executed, you should not compile with optimization at the same time. On some machines the optimizer can eliminate some simple code lines by combining them with other lines. For example, code --- 352,360 ---- .Sh "Using \fBgcov\fP with \s-1GCC\s0 Optimization" .IX Subsection "Using gcov with GCC Optimization" If you plan to use \fBgcov\fR to help optimize your code, you must ! first compile your program with two special \s-1GCC\s0 options: \&\fB\-fprofile-arcs \-ftest-coverage\fR. Aside from that, you can use any ! other \s-1GCC\s0 options; but if you want to prove that every single line in your program was executed, you should not compile with optimization at the same time. On some machines the optimizer can eliminate some simple code lines by combining them with other lines. For example, code diff -Nrc3pad gcc-3.0/gcc/doc/gcov.texi gcc-3.0.1/gcc/doc/gcov.texi *** gcc-3.0/gcc/doc/gcov.texi Thu Jun 14 04:19:49 2001 --- gcc-3.0.1/gcc/doc/gcov.texi Wed Jun 27 08:08:24 2001 *************** English. *** 29,35 **** @node Gcov @chapter @command{gcov}: a Test Coverage Program ! @command{gcov} is a tool you can use in conjunction with @sc{gnu} CC to test code coverage in your programs. This chapter describes version 1.5 of @command{gcov}. --- 29,35 ---- @node Gcov @chapter @command{gcov}: a Test Coverage Program ! @command{gcov} is a tool you can use in conjunction with GCC to test code coverage in your programs. This chapter describes version 1.5 of @command{gcov}. *************** This chapter describes version 1.5 of @c *** 45,52 **** @section Introduction to @command{gcov} @c man begin DESCRIPTION ! @command{gcov} is a test coverage program. Use it in concert with @sc{gnu} ! CC to analyze your programs to help create more efficient, faster running code. You can use @command{gcov} as a profiling tool to help discover where your optimization efforts will best affect your code. You can also use @command{gcov} along with the other profiling tool, --- 45,52 ---- @section Introduction to @command{gcov} @c man begin DESCRIPTION ! @command{gcov} is a test coverage program. Use it in concert with GCC ! to analyze your programs to help create more efficient, faster running code. You can use @command{gcov} as a profiling tool to help discover where your optimization efforts will best affect your code. You can also use @command{gcov} along with the other profiling tool, *************** in fine-tuning the performance of your p *** 99,105 **** timing information you can use along with the information you get from @command{gcov}. ! @command{gcov} works only on code compiled with @sc{gnu} CC. It is not compatible with any other profiling or test coverage mechanism. @c man end --- 99,105 ---- timing information you can use along with the information you get from @command{gcov}. ! @command{gcov} works only on code compiled with GCC@. It is not compatible with any other profiling or test coverage mechanism. @c man end *************** The directory where the object files liv *** 154,160 **** @need 3000 When using @command{gcov}, you must first compile your program with two ! special @sc{gnu} CC options: @samp{-fprofile-arcs -ftest-coverage}. This tells the compiler to generate additional information needed by gcov (basically a flow graph of the program) and also includes additional code in the object files for generating the extra profiling --- 154,160 ---- @need 3000 When using @command{gcov}, you must first compile your program with two ! special GCC options: @samp{-fprofile-arcs -ftest-coverage}. This tells the compiler to generate additional information needed by gcov (basically a flow graph of the program) and also includes additional code in the object files for generating the extra profiling *************** counts and finally writes the data to th *** 276,284 **** @section Using @command{gcov} with GCC Optimization If you plan to use @command{gcov} to help optimize your code, you must ! first compile your program with two special @sc{gnu} CC options: @samp{-fprofile-arcs -ftest-coverage}. Aside from that, you can use any ! other @sc{gnu} CC options; but if you want to prove that every single line in your program was executed, you should not compile with optimization at the same time. On some machines the optimizer can eliminate some simple code lines by combining them with other lines. For example, code --- 276,284 ---- @section Using @command{gcov} with GCC Optimization If you plan to use @command{gcov} to help optimize your code, you must ! first compile your program with two special GCC options: @samp{-fprofile-arcs -ftest-coverage}. Aside from that, you can use any ! other GCC options; but if you want to prove that every single line in your program was executed, you should not compile with optimization at the same time. On some machines the optimizer can eliminate some simple code lines by combining them with other lines. For example, code *************** of these files are placed in the same di *** 322,328 **** contain data stored in a platform-independent method. The @file{.bb} and @file{.bbg} files are generated when the source file ! is compiled with the @sc{gnu} CC @option{-ftest-coverage} option. The @file{.bb} file contains a list of source files (including headers), functions within those files, and line numbers corresponding to each basic block in the source file. --- 322,328 ---- contain data stored in a platform-independent method. The @file{.bb} and @file{.bbg} files are generated when the source file ! is compiled with the GCC @option{-ftest-coverage} option. The @file{.bb} file contains a list of source files (including headers), functions within those files, and line numbers corresponding to each basic block in the source file. *************** list of basic blocks, and to verify that *** 364,370 **** correctly. The @file{.da} file is generated when a program containing object files ! built with the @sc{gnu} CC @option{-fprofile-arcs} option is executed. A separate @file{.da} file is created for each source file compiled with this option, and the name of the @file{.da} file is stored as an absolute pathname in the resulting object file. This path name is --- 364,370 ---- correctly. The @file{.da} file is generated when a program containing object files ! built with the GCC @option{-fprofile-arcs} option is executed. A separate @file{.da} file is created for each source file compiled with this option, and the name of the @file{.da} file is stored as an absolute pathname in the resulting object file. This path name is diff -Nrc3pad gcc-3.0/gcc/doc/include/fdl.texi gcc-3.0.1/gcc/doc/include/fdl.texi *** gcc-3.0/gcc/doc/include/fdl.texi Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/doc/include/fdl.texi Wed Jul 4 09:23:07 2001 *************** *** 0 **** --- 1,403 ---- + + @node GNU Free Documentation License + @unnumbered GNU Free Documentation License + + @cindex FDL, GNU Free Documentation License + @center Version 1.1, March 2000 + + @display + Copyright @copyright{} 2000 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + @end display + + @enumerate 0 + @item + PREAMBLE + + The purpose of this License is to make a manual, textbook, or other + written document @dfn{free} in the sense of freedom: to assure everyone + the effective freedom to copy and redistribute it, with or without + modifying it, either commercially or noncommercially. Secondarily, + this License preserves for the author and publisher a way to get + credit for their work, while not being considered responsible for + modifications made by others. + + This License is a kind of ``copyleft'', which means that derivative + works of the document must themselves be free in the same sense. It + complements the GNU General Public License, which is a copyleft + license designed for free software. + + We have designed this License in order to use it for manuals for free + software, because free software needs free documentation: a free + program should come with manuals providing the same freedoms that the + software does. But this License is not limited to software manuals; + it can be used for any textual work, regardless of subject matter or + whether it is published as a printed book. We recommend this License + principally for works whose purpose is instruction or reference. + + @item + APPLICABILITY AND DEFINITIONS + + This License applies to any manual or other work that contains a + notice placed by the copyright holder saying it can be distributed + under the terms of this License. The ``Document'', below, refers to any + such manual or work. Any member of the public is a licensee, and is + addressed as ``you''. + + A ``Modified Version'' of the Document means any work containing the + Document or a portion of it, either copied verbatim, or with + modifications and/or translated into another language. + + A ``Secondary Section'' is a named appendix or a front-matter section of + the Document that deals exclusively with the relationship of the + publishers or authors of the Document to the Document's overall subject + (or to related matters) and contains nothing that could fall directly + within that overall subject. (For example, if the Document is in part a + textbook of mathematics, a Secondary Section may not explain any + mathematics.) The relationship could be a matter of historical + connection with the subject or with related matters, or of legal, + commercial, philosophical, ethical or political position regarding + them. + + The ``Invariant Sections'' are certain Secondary Sections whose titles + are designated, as being those of Invariant Sections, in the notice + that says that the Document is released under this License. + + The ``Cover Texts'' are certain short passages of text that are listed, + as Front-Cover Texts or Back-Cover Texts, in the notice that says that + the Document is released under this License. + + A ``Transparent'' copy of the Document means a machine-readable copy, + represented in a format whose specification is available to the + general public, whose contents can be viewed and edited directly and + straightforwardly with generic text editors or (for images composed of + pixels) generic paint programs or (for drawings) some widely available + drawing editor, and that is suitable for input to text formatters or + for automatic translation to a variety of formats suitable for input + to text formatters. A copy made in an otherwise Transparent file + format whose markup has been designed to thwart or discourage + subsequent modification by readers is not Transparent. A copy that is + not ``Transparent'' is called ``Opaque''. + + Examples of suitable formats for Transparent copies include plain + @sc{ascii} without markup, Texinfo input format, La@TeX{} input format, + @acronym{SGML} or @acronym{XML} using a publicly available + @acronym{DTD}, and standard-conforming simple @acronym{HTML} designed + for human modification. Opaque formats include PostScript, + @acronym{PDF}, proprietary formats that can be read and edited only by + proprietary word processors, @acronym{SGML} or @acronym{XML} for which + the @acronym{DTD} and/or processing tools are not generally available, + and the machine-generated @acronym{HTML} produced by some word + processors for output purposes only. + + The ``Title Page'' means, for a printed book, the title page itself, + plus such following pages as are needed to hold, legibly, the material + this License requires to appear in the title page. For works in + formats which do not have any title page as such, ``Title Page'' means + the text near the most prominent appearance of the work's title, + preceding the beginning of the body of the text. + + @item + VERBATIM COPYING + + You may copy and distribute the Document in any medium, either + commercially or noncommercially, provided that this License, the + copyright notices, and the license notice saying this License applies + to the Document are reproduced in all copies, and that you add no other + conditions whatsoever to those of this License. You may not use + technical measures to obstruct or control the reading or further + copying of the copies you make or distribute. However, you may accept + compensation in exchange for copies. If you distribute a large enough + number of copies you must also follow the conditions in section 3. + + You may also lend copies, under the same conditions stated above, and + you may publicly display copies. + + @item + COPYING IN QUANTITY + + If you publish printed copies of the Document numbering more than 100, + and the Document's license notice requires Cover Texts, you must enclose + the copies in covers that carry, clearly and legibly, all these Cover + Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on + the back cover. Both covers must also clearly and legibly identify + you as the publisher of these copies. The front cover must present + the full title with all words of the title equally prominent and + visible. You may add other material on the covers in addition. + Copying with changes limited to the covers, as long as they preserve + the title of the Document and satisfy these conditions, can be treated + as verbatim copying in other respects. + + If the required texts for either cover are too voluminous to fit + legibly, you should put the first ones listed (as many as fit + reasonably) on the actual cover, and continue the rest onto adjacent + pages. + + If you publish or distribute Opaque copies of the Document numbering + more than 100, you must either include a machine-readable Transparent + copy along with each Opaque copy, or state in or with each Opaque copy + a publicly-accessible computer-network location containing a complete + Transparent copy of the Document, free of added material, which the + general network-using public has access to download anonymously at no + charge using public-standard network protocols. If you use the latter + option, you must take reasonably prudent steps, when you begin + distribution of Opaque copies in quantity, to ensure that this + Transparent copy will remain thus accessible at the stated location + until at least one year after the last time you distribute an Opaque + copy (directly or through your agents or retailers) of that edition to + the public. + + It is requested, but not required, that you contact the authors of the + Document well before redistributing any large number of copies, to give + them a chance to provide you with an updated version of the Document. + + @item + MODIFICATIONS + + You may copy and distribute a Modified Version of the Document under + the conditions of sections 2 and 3 above, provided that you release + the Modified Version under precisely this License, with the Modified + Version filling the role of the Document, thus licensing distribution + and modification of the Modified Version to whoever possesses a copy + of it. In addition, you must do these things in the Modified Version: + + @enumerate A + @item + Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. + + @item + List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has less than five). + + @item + State on the Title page the name of the publisher of the + Modified Version, as the publisher. + + @item + Preserve all the copyright notices of the Document. + + @item + Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + + @item + Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. + + @item + Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. + + @item + Include an unaltered copy of this License. + + @item + Preserve the section entitled ``History'', and its title, and add to + it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section entitled ``History'' in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. + + @item + Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the ``History'' section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. + + @item + In any section entitled ``Acknowledgments'' or ``Dedications'', + preserve the section's title, and preserve in the section all the + substance and tone of each of the contributor acknowledgments + and/or dedications given therein. + + @item + Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. + + @item + Delete any section entitled ``Endorsements''. Such a section + may not be included in the Modified Version. + + @item + Do not retitle any existing section as ``Endorsements'' + or to conflict in title with any Invariant Section. + @end enumerate + + If the Modified Version includes new front-matter sections or + appendices that qualify as Secondary Sections and contain no material + copied from the Document, you may at your option designate some or all + of these sections as invariant. To do this, add their titles to the + list of Invariant Sections in the Modified Version's license notice. + These titles must be distinct from any other section titles. + + You may add a section entitled ``Endorsements'', provided it contains + nothing but endorsements of your Modified Version by various + parties---for example, statements of peer review or that the text has + been approved by an organization as the authoritative definition of a + standard. + + You may add a passage of up to five words as a Front-Cover Text, and a + passage of up to 25 words as a Back-Cover Text, to the end of the list + of Cover Texts in the Modified Version. Only one passage of + Front-Cover Text and one of Back-Cover Text may be added by (or + through arrangements made by) any one entity. If the Document already + includes a cover text for the same cover, previously added by you or + by arrangement made by the same entity you are acting on behalf of, + you may not add another; but you may replace the old one, on explicit + permission from the previous publisher that added the old one. + + The author(s) and publisher(s) of the Document do not by this License + give permission to use their names for publicity for or to assert or + imply endorsement of any Modified Version. + + @item + COMBINING DOCUMENTS + + You may combine the Document with other documents released under this + License, under the terms defined in section 4 above for modified + versions, provided that you include in the combination all of the + Invariant Sections of all of the original documents, unmodified, and + list them all as Invariant Sections of your combined work in its + license notice. + + The combined work need only contain one copy of this License, and + multiple identical Invariant Sections may be replaced with a single + copy. If there are multiple Invariant Sections with the same name but + different contents, make the title of each such section unique by + adding at the end of it, in parentheses, the name of the original + author or publisher of that section if known, or else a unique number. + Make the same adjustment to the section titles in the list of + Invariant Sections in the license notice of the combined work. + + In the combination, you must combine any sections entitled ``History'' + in the various original documents, forming one section entitled + ``History''; likewise combine any sections entitled ``Acknowledgments'', + and any sections entitled ``Dedications''. You must delete all sections + entitled ``Endorsements.'' + + @item + COLLECTIONS OF DOCUMENTS + + You may make a collection consisting of the Document and other documents + released under this License, and replace the individual copies of this + License in the various documents with a single copy that is included in + the collection, provided that you follow the rules of this License for + verbatim copying of each of the documents in all other respects. + + You may extract a single document from such a collection, and distribute + it individually under this License, provided you insert a copy of this + License into the extracted document, and follow this License in all + other respects regarding verbatim copying of that document. + + @item + AGGREGATION WITH INDEPENDENT WORKS + + A compilation of the Document or its derivatives with other separate + and independent documents or works, in or on a volume of a storage or + distribution medium, does not as a whole count as a Modified Version + of the Document, provided no compilation copyright is claimed for the + compilation. Such a compilation is called an ``aggregate'', and this + License does not apply to the other self-contained works thus compiled + with the Document, on account of their being thus compiled, if they + are not themselves derivative works of the Document. + + If the Cover Text requirement of section 3 is applicable to these + copies of the Document, then if the Document is less than one quarter + of the entire aggregate, the Document's Cover Texts may be placed on + covers that surround only the Document within the aggregate. + Otherwise they must appear on covers around the whole aggregate. + + @item + TRANSLATION + + Translation is considered a kind of modification, so you may + distribute translations of the Document under the terms of section 4. + Replacing Invariant Sections with translations requires special + permission from their copyright holders, but you may include + translations of some or all Invariant Sections in addition to the + original versions of these Invariant Sections. You may include a + translation of this License provided that you also include the + original English version of this License. In case of a disagreement + between the translation and the original English version of this + License, the original English version will prevail. + + @item + TERMINATION + + You may not copy, modify, sublicense, or distribute the Document except + as expressly provided for under this License. Any other attempt to + copy, modify, sublicense or distribute the Document is void, and will + automatically terminate your rights under this License. However, + parties who have received copies, or rights, from you under this + License will not have their licenses terminated so long as such + parties remain in full compliance. + + @item + FUTURE REVISIONS OF THIS LICENSE + + The Free Software Foundation may publish new, revised versions + of the GNU Free Documentation License from time to time. Such new + versions will be similar in spirit to the present version, but may + differ in detail to address new problems or concerns. See + @uref{http://www.gnu.org/copyleft/}. + + Each version of the License is given a distinguishing version number. + If the Document specifies that a particular numbered version of this + License ``or any later version'' applies to it, you have the option of + following the terms and conditions either of that specified version or + of any later version that has been published (not as a draft) by the + Free Software Foundation. If the Document does not specify a version + number of this License, you may choose any version ever published (not + as a draft) by the Free Software Foundation. + @end enumerate + + @page + @unnumberedsec ADDENDUM: How to use this License for your documents + + To use this License in a document you have written, include a copy of + the License in the document and put the following copyright and + license notices just after the title page: + + @smallexample + @group + Copyright (C) @var{year} @var{your name}. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.1 + or any later version published by the Free Software Foundation; + with the Invariant Sections being @var{list their titles}, with the + Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}. + A copy of the license is included in the section entitled ``GNU + Free Documentation License''. + @end group + @end smallexample + + If you have no Invariant Sections, write ``with no Invariant Sections'' + instead of saying which ones are invariant. If you have no + Front-Cover Texts, write ``no Front-Cover Texts'' instead of + ``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts. + + If your document contains nontrivial examples of program code, we + recommend releasing these examples in parallel under your choice of + free software license, such as the GNU General Public License, + to permit their use in free software. + + @c Local Variables: + @c ispell-local-pdict: "ispell-dict" + @c End: + diff -Nrc3pad gcc-3.0/gcc/doc/include/funding.texi gcc-3.0.1/gcc/doc/include/funding.texi *** gcc-3.0/gcc/doc/include/funding.texi Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/doc/include/funding.texi Wed Jul 4 09:23:07 2001 *************** *** 0 **** --- 1,48 ---- + @node Funding + @unnumbered Funding Free Software + + If you want to have more free software a few years from now, it makes + sense for you to help encourage people to contribute funds for its + development. The most effective approach known is to encourage + commercial redistributors to donate. + + Users of free software systems can boost the pace of development by + encouraging for-a-fee distributors to donate part of their selling price + to free software developers---the Free Software Foundation, and others. + + The way to convince distributors to do this is to demand it and expect + it from them. So when you compare distributors, judge them partly by + how much they give to free software development. Show distributors + they must compete to be the one who gives the most. + + To make this approach work, you must insist on numbers that you can + compare, such as, ``We will donate ten dollars to the Frobnitz project + for each disk sold.'' Don't be satisfied with a vague promise, such as + ``A portion of the profits are donated,'' since it doesn't give a basis + for comparison. + + Even a precise fraction ``of the profits from this disk'' is not very + meaningful, since creative accounting and unrelated business decisions + can greatly alter what fraction of the sales price counts as profit. + If the price you pay is $50, ten percent of the profit is probably + less than a dollar; it might be a few cents, or nothing at all. + + Some redistributors do development work themselves. This is useful too; + but to keep everyone honest, you need to inquire how much they do, and + what kind. Some kinds of development make much more long-term + difference than others. For example, maintaining a separate version of + a program contributes very little; maintaining the standard version of a + program for the whole community contributes much. Easy new ports + contribute little, since someone else would surely do them; difficult + ports such as adding a new CPU to the GNU Compiler Collection contribute more; + major new features or packages contribute the most. + + By establishing the idea that supporting further development is ``the + proper thing to do'' when distributing free software for a fee, we can + assure a steady flow of resources into making more free software. + + @display + Copyright (C) 1994 Free Software Foundation, Inc. + Verbatim copying and redistribution of this section is permitted + without royalty; alteration is not permitted. + @end display diff -Nrc3pad gcc-3.0/gcc/doc/include/gpl.texi gcc-3.0.1/gcc/doc/include/gpl.texi *** gcc-3.0/gcc/doc/include/gpl.texi Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/doc/include/gpl.texi Wed Jul 4 09:23:07 2001 *************** *** 0 **** --- 1,392 ---- + @node Copying + @unnumbered GNU GENERAL PUBLIC LICENSE + @center Version 2, June 1991 + + @display + Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + @end display + + @unnumberedsec Preamble + + The licenses for most software are designed to take away your + freedom to share and change it. By contrast, the GNU General Public + License is intended to guarantee your freedom to share and change free + software---to make sure the software is free for all its users. This + General Public License applies to most of the Free Software + Foundation's software and to any other program whose authors commit to + using it. (Some other Free Software Foundation software is covered by + the GNU Library General Public License instead.) You can apply it to + your programs, too. + + When we speak of free software, we are referring to freedom, not + price. Our General Public Licenses are designed to make sure that you + have the freedom to distribute copies of free software (and charge for + this service if you wish), that you receive source code or can get it + if you want it, that you can change the software or use pieces of it + in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid + anyone to deny you these rights or to ask you to surrender the rights. + These restrictions translate to certain responsibilities for you if you + distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether + gratis or for a fee, you must give the recipients all the rights that + you have. You must make sure that they, too, receive or can get the + source code. And you must show them these terms so they know their + rights. + + We protect your rights with two steps: (1) copyright the software, and + (2) offer you this license which gives you legal permission to copy, + distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain + that everyone understands that there is no warranty for this free + software. If the software is modified by someone else and passed on, we + want its recipients to know that what they have is not the original, so + that any problems introduced by others will not reflect on the original + authors' reputations. + + Finally, any free program is threatened constantly by software + patents. We wish to avoid the danger that redistributors of a free + program will individually obtain patent licenses, in effect making the + program proprietary. To prevent this, we have made it clear that any + patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and + modification follow. + + @iftex + @unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + @end iftex + @ifnottex + @center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + @end ifnottex + + @enumerate 0 + @item + This License applies to any program or other work which contains + a notice placed by the copyright holder saying it may be distributed + under the terms of this General Public License. The ``Program'', below, + refers to any such program or work, and a ``work based on the Program'' + means either the Program or any derivative work under copyright law: + that is to say, a work containing the Program or a portion of it, + either verbatim or with modifications and/or translated into another + language. (Hereinafter, translation is included without limitation in + the term ``modification''.) Each licensee is addressed as ``you''. + + Activities other than copying, distribution and modification are not + covered by this License; they are outside its scope. The act of + running the Program is not restricted, and the output from the Program + is covered only if its contents constitute a work based on the + Program (independent of having been made by running the Program). + Whether that is true depends on what the Program does. + + @item + You may copy and distribute verbatim copies of the Program's + source code as you receive it, in any medium, provided that you + conspicuously and appropriately publish on each copy an appropriate + copyright notice and disclaimer of warranty; keep intact all the + notices that refer to this License and to the absence of any warranty; + and give any other recipients of the Program a copy of this License + along with the Program. + + You may charge a fee for the physical act of transferring a copy, and + you may at your option offer warranty protection in exchange for a fee. + + @item + You may modify your copy or copies of the Program or any portion + of it, thus forming a work based on the Program, and copy and + distribute such modifications or work under the terms of Section 1 + above, provided that you also meet all of these conditions: + + @enumerate a + @item + You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + @item + You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + @item + If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + @end enumerate + + These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the Program, + and can be reasonably considered independent and separate works in + themselves, then this License, and its terms, do not apply to those + sections when you distribute them as separate works. But when you + distribute the same sections as part of a whole which is a work based + on the Program, the distribution of the whole must be on the terms of + this License, whose permissions for other licensees extend to the + entire whole, and thus to each and every part regardless of who wrote it. + + Thus, it is not the intent of this section to claim rights or contest + your rights to work written entirely by you; rather, the intent is to + exercise the right to control the distribution of derivative or + collective works based on the Program. + + In addition, mere aggregation of another work not based on the Program + with the Program (or with a work based on the Program) on a volume of + a storage or distribution medium does not bring the other work under + the scope of this License. + + @item + You may copy and distribute the Program (or a work based on it, + under Section 2) in object code or executable form under the terms of + Sections 1 and 2 above provided that you also do one of the following: + + @enumerate a + @item + Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + @item + Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + @item + Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + @end enumerate + + The source code for a work means the preferred form of the work for + making modifications to it. For an executable work, complete source + code means all the source code for all modules it contains, plus any + associated interface definition files, plus the scripts used to + control compilation and installation of the executable. However, as a + special exception, the source code distributed need not include + anything that is normally distributed (in either source or binary + form) with the major components (compiler, kernel, and so on) of the + operating system on which the executable runs, unless that component + itself accompanies the executable. + + If distribution of executable or object code is made by offering + access to copy from a designated place, then offering equivalent + access to copy the source code from the same place counts as + distribution of the source code, even though third parties are not + compelled to copy the source along with the object code. + + @item + You may not copy, modify, sublicense, or distribute the Program + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense or distribute the Program is + void, and will automatically terminate your rights under this License. + However, parties who have received copies, or rights, from you under + this License will not have their licenses terminated so long as such + parties remain in full compliance. + + @item + You are not required to accept this License, since you have not + signed it. However, nothing else grants you permission to modify or + distribute the Program or its derivative works. These actions are + prohibited by law if you do not accept this License. Therefore, by + modifying or distributing the Program (or any work based on the + Program), you indicate your acceptance of this License to do so, and + all its terms and conditions for copying, distributing or modifying + the Program or works based on it. + + @item + Each time you redistribute the Program (or any work based on the + Program), the recipient automatically receives a license from the + original licensor to copy, distribute or modify the Program subject to + these terms and conditions. You may not impose any further + restrictions on the recipients' exercise of the rights granted herein. + You are not responsible for enforcing compliance by third parties to + this License. + + @item + If, as a consequence of a court judgment or allegation of patent + infringement or for any other reason (not limited to patent issues), + conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot + distribute so as to satisfy simultaneously your obligations under this + License and any other pertinent obligations, then as a consequence you + may not distribute the Program at all. For example, if a patent + license would not permit royalty-free redistribution of the Program by + all those who receive copies directly or indirectly through you, then + the only way you could satisfy both it and this License would be to + refrain entirely from distribution of the Program. + + If any portion of this section is held invalid or unenforceable under + any particular circumstance, the balance of the section is intended to + apply and the section as a whole is intended to apply in other + circumstances. + + It is not the purpose of this section to induce you to infringe any + patents or other property right claims or to contest validity of any + such claims; this section has the sole purpose of protecting the + integrity of the free software distribution system, which is + implemented by public license practices. Many people have made + generous contributions to the wide range of software distributed + through that system in reliance on consistent application of that + system; it is up to the author/donor to decide if he or she is willing + to distribute software through any other system and a licensee cannot + impose that choice. + + This section is intended to make thoroughly clear what is believed to + be a consequence of the rest of this License. + + @item + If the distribution and/or use of the Program is restricted in + certain countries either by patents or by copyrighted interfaces, the + original copyright holder who places the Program under this License + may add an explicit geographical distribution limitation excluding + those countries, so that distribution is permitted only in or among + countries not thus excluded. In such case, this License incorporates + the limitation as if written in the body of this License. + + @item + The Free Software Foundation may publish revised and/or new versions + of the General Public License from time to time. Such new versions will + be similar in spirit to the present version, but may differ in detail to + address new problems or concerns. + + Each version is given a distinguishing version number. If the Program + specifies a version number of this License which applies to it and ``any + later version'', you have the option of following the terms and conditions + either of that version or of any later version published by the Free + Software Foundation. If the Program does not specify a version number of + this License, you may choose any version ever published by the Free Software + Foundation. + + @item + If you wish to incorporate parts of the Program into other free + programs whose distribution conditions are different, write to the author + to ask for permission. For software which is copyrighted by the Free + Software Foundation, write to the Free Software Foundation; we sometimes + make exceptions for this. Our decision will be guided by the two goals + of preserving the free status of all derivatives of our free software and + of promoting the sharing and reuse of software generally. + + @iftex + @heading NO WARRANTY + @end iftex + @ifnottex + @center NO WARRANTY + @end ifnottex + + @item + BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY + FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN + OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES + PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED + OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS + TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE + PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, + REPAIR OR CORRECTION. + + @item + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING + WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR + REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, + INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING + OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED + TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY + YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER + PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGES. + @end enumerate + + @iftex + @heading END OF TERMS AND CONDITIONS + @end iftex + @ifnottex + @center END OF TERMS AND CONDITIONS + @end ifnottex + + @page + @unnumberedsec How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest + possible use to the public, the best way to achieve this is to make it + free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest + to attach them to the start of each source file to most effectively + convey the exclusion of warranty; and each file should have at least + the ``copyright'' line and a pointer to where the full notice is found. + + @smallexample + @var{one line to give the program's name and a brief idea of what it does.} + Copyright (C) @var{year} @var{name of author} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + @end smallexample + + Also add information on how to contact you by electronic and paper mail. + + If the program is interactive, make it output a short notice like this + when it starts in an interactive mode: + + @smallexample + Gnomovision version 69, Copyright (C) @var{year} @var{name of author} + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details + type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + @end smallexample + + The hypothetical commands @samp{show w} and @samp{show c} should show + the appropriate parts of the General Public License. Of course, the + commands you use may be called something other than @samp{show w} and + @samp{show c}; they could even be mouse-clicks or menu items---whatever + suits your program. + + You should also get your employer (if you work as a programmer) or your + school, if any, to sign a ``copyright disclaimer'' for the program, if + necessary. Here is a sample; alter the names: + + @smallexample + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + @var{signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + @end smallexample + + This General Public License does not permit incorporating your program into + proprietary programs. If your program is a subroutine library, you may + consider it more useful to permit linking proprietary applications with the + library. If this is what you want to do, use the GNU Library General + Public License instead of this License. diff -Nrc3pad gcc-3.0/gcc/doc/include/texinfo.tex gcc-3.0.1/gcc/doc/include/texinfo.tex *** gcc-3.0/gcc/doc/include/texinfo.tex Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/doc/include/texinfo.tex Wed Jul 4 09:23:07 2001 *************** *** 0 **** --- 1,6257 ---- + % texinfo.tex -- TeX macros to handle Texinfo files. + % + % Load plain if necessary, i.e., if running under initex. + \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi + % + \def\texinfoversion{2001-05-24.08} + % + % Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + % 2000, 01 Free Software Foundation, Inc. + % + % This texinfo.tex file is free software; you can redistribute it and/or + % modify it under the terms of the GNU General Public License as + % published by the Free Software Foundation; either version 2, or (at + % your option) any later version. + % + % This texinfo.tex file is distributed in the hope that it will be + % useful, but WITHOUT ANY WARRANTY; without even the implied warranty + % of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + % General Public License for more details. + % + % You should have received a copy of the GNU General Public License + % along with this texinfo.tex file; see the file COPYING. If not, write + % to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + % Boston, MA 02111-1307, USA. + % + % In other words, you are welcome to use, share and improve this program. + % You are forbidden to forbid anyone else to use, share and improve + % what you give them. Help stamp out software-hoarding! + % + % Please try the latest version of texinfo.tex before submitting bug + % reports; you can get the latest version from: + % ftp://ftp.gnu.org/gnu/texinfo.tex + % (and all GNU mirrors, see http://www.gnu.org/order/ftp.html) + % ftp://texinfo.org/tex/texinfo.tex + % ftp://us.ctan.org/macros/texinfo/texinfo.tex + % (and all CTAN mirrors, finger ctan@us.ctan.org for a list). + % /home/gd/gnu/doc/texinfo.tex on the GNU machines. + % The texinfo.tex in any given Texinfo distribution could well be out + % of date, so if that's what you're using, please check. + % Texinfo has a small home page at http://texinfo.org/. + % + % Send bug reports to bug-texinfo@gnu.org. Please include including a + % complete document in each bug report with which we can reproduce the + % problem. Patches are, of course, greatly appreciated. + % + % To process a Texinfo manual with TeX, it's most reliable to use the + % texi2dvi shell script that comes with the distribution. For a simple + % manual foo.texi, however, you can get away with this: + % tex foo.texi + % texindex foo.?? + % tex foo.texi + % tex foo.texi + % dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps. + % The extra runs of TeX get the cross-reference information correct. + % Sometimes one run after texindex suffices, and sometimes you need more + % than two; texi2dvi does it as many times as necessary. + % + % It is possible to adapt texinfo.tex for other languages. You can get + % the existing language-specific files from ftp://ftp.gnu.org/gnu/texinfo/. + + \message{Loading texinfo [version \texinfoversion]:} + + % If in a .fmt file, print the version number + % and turn on active characters that we couldn't do earlier because + % they might have appeared in the input file name. + \everyjob{\message{[Texinfo version \texinfoversion]}% + \catcode`+=\active \catcode`\_=\active} + + % Save some parts of plain tex whose names we will redefine. + \let\ptexb=\b + \let\ptexbullet=\bullet + \let\ptexc=\c + \let\ptexcomma=\, + \let\ptexdot=\. + \let\ptexdots=\dots + \let\ptexend=\end + \let\ptexequiv=\equiv + \let\ptexexclam=\! + \let\ptexi=\i + \let\ptexlbrace=\{ + \let\ptexrbrace=\} + \let\ptexstar=\* + \let\ptext=\t + + % We never want plain's outer \+ definition in Texinfo. + % For @tex, we can use \tabalign. + \let\+ = \relax + + \message{Basics,} + \chardef\other=12 + + % If this character appears in an error message or help string, it + % starts a new line in the output. + \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\putwordin\undefined \gdef\putwordin{in}\fi + \ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi + \ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi + \ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi + \ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi + \ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi + \ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi + \ifx\putwordof\undefined \gdef\putwordof{of}\fi + \ifx\putwordon\undefined \gdef\putwordon{on}\fi + \ifx\putwordpage\undefined \gdef\putwordpage{page}\fi + \ifx\putwordsection\undefined \gdef\putwordsection{section}\fi + \ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi + \ifx\putwordsee\undefined \gdef\putwordsee{see}\fi + \ifx\putwordSee\undefined \gdef\putwordSee{See}\fi + \ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi + \ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi + % + \ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi + \ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi + \ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi + \ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi + \ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi + \ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi + \ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi + \ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi + \ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi + \ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi + \ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi + \ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi + % + \ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi + \ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi + \ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi + \ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi + \ifx\putwordDeftypevar\undefined\gdef\putwordDeftypevar{Variable}\fi + \ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi + \ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi + + % Ignore a token. + % + \def\gobble#1{} + + \hyphenation{ap-pen-dix} + \hyphenation{mini-buf-fer mini-buf-fers} + \hyphenation{eshell} + \hyphenation{white-space} + + % Margin to add to right of even pages, to left of odd pages. + \newdimen \bindingoffset + \newdimen \normaloffset + \newdimen\pagewidth \newdimen\pageheight + + % Sometimes it is convenient to have everything in the transcript file + % and nothing on the terminal. We don't just call \tracingall here, + % since that produces some useless output on the terminal. + % + \def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% + \ifx\eTeXversion\undefined + \def\loggingall{\tracingcommands2 \tracingstats2 + \tracingpages1 \tracingoutput1 \tracinglostchars1 + \tracingmacros2 \tracingparagraphs1 \tracingrestores1 + \showboxbreadth\maxdimen\showboxdepth\maxdimen + }% + \else + \def\loggingall{\tracingcommands3 \tracingstats2 + \tracingpages1 \tracingoutput1 \tracinglostchars1 + \tracingmacros2 \tracingparagraphs1 \tracingrestores1 + \tracingscantokens1 \tracingassigns1 \tracingifs1 + \tracinggroups1 \tracingnesting2 + \showboxbreadth\maxdimen\showboxdepth\maxdimen + }% + \fi + + % add check for \lastpenalty to plain's definitions. If the last thing + % we did was a \nobreak, we don't want to insert more space. + % + \def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount + \removelastskip\penalty-50\smallskip\fi\fi} + \def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount + \removelastskip\penalty-100\medskip\fi\fi} + \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount + \removelastskip\penalty-200\bigskip\fi\fi} + + % For @cropmarks command. + % Do @cropmarks to get crop marks. + % + \newif\ifcropmarks + \let\cropmarks = \cropmarkstrue + % + % Dimensions to add cropmarks at corners. + % Added by P. A. MacKay, 12 Nov. 1986 + % + \newdimen\outerhsize \newdimen\outervsize % set by the paper size routines + \newdimen\cornerlong \cornerlong=1pc + \newdimen\cornerthick \cornerthick=.3pt + \newdimen\topandbottommargin \topandbottommargin=.75in + + % Main output routine. + \chardef\PAGE = 255 + \output = {\onepageout{\pagecontents\PAGE}} + + \newbox\headlinebox + \newbox\footlinebox + + % \onepageout takes a vbox as an argument. Note that \pagecontents + % does insertions, but you have to call it yourself. + \def\onepageout#1{% + \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi + % + \ifodd\pageno \advance\hoffset by \bindingoffset + \else \advance\hoffset by -\bindingoffset\fi + % + % Do this outside of the \shipout so @code etc. will be expanded in + % the headline as they should be, not taken literally (outputting ''code). + \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% + \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% + % + {% + % Have to do this stuff outside the \shipout because we want it to + % take effect in \write's, yet the group defined by the \vbox ends + % before the \shipout runs. + % + \escapechar = `\\ % use backslash in output files. + \indexdummies % don't expand commands in the output. + \normalturnoffactive % \ in index entries must not stay \, e.g., if + % the page break happens to be in the middle of an example. + \shipout\vbox{% + % Do this early so pdf references go to the beginning of the page. + \ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi + % + \ifcropmarks \vbox to \outervsize\bgroup + \hsize = \outerhsize + \vskip-\topandbottommargin + \vtop to0pt{% + \line{\ewtop\hfil\ewtop}% + \nointerlineskip + \line{% + \vbox{\moveleft\cornerthick\nstop}% + \hfill + \vbox{\moveright\cornerthick\nstop}% + }% + \vss}% + \vskip\topandbottommargin + \line\bgroup + \hfil % center the page within the outer (page) hsize. + \ifodd\pageno\hskip\bindingoffset\fi + \vbox\bgroup + \fi + % + \unvbox\headlinebox + \pagebody{#1}% + \ifdim\ht\footlinebox > 0pt + % Only leave this space if the footline is nonempty. + % (We lessened \vsize for it in \oddfootingxxx.) + % The \baselineskip=24pt in plain's \makefootline has no effect. + \vskip 2\baselineskip + \unvbox\footlinebox + \fi + % + \ifcropmarks + \egroup % end of \vbox\bgroup + \hfil\egroup % end of (centering) \line\bgroup + \vskip\topandbottommargin plus1fill minus1fill + \boxmaxdepth = \cornerthick + \vbox to0pt{\vss + \line{% + \vbox{\moveleft\cornerthick\nsbot}% + \hfill + \vbox{\moveright\cornerthick\nsbot}% + }% + \nointerlineskip + \line{\ewbot\hfil\ewbot}% + }% + \egroup % \vbox from first cropmarks clause + \fi + }% end of \shipout\vbox + }% end of group with \turnoffactive + \advancepageno + \ifnum\outputpenalty>-20000 \else\dosupereject\fi + } + + \newinsert\margin \dimen\margin=\maxdimen + + \def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} + {\catcode`\@ =11 + \gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi + % marginal hacks, juha@viisa.uucp (Juha Takala) + \ifvoid\margin\else % marginal info is present + \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi + \dimen@=\dp#1 \unvbox#1 + \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi + \ifr@ggedbottom \kern-\dimen@ \vfil \fi} + } + + % Here are the rules for the cropmarks. Note that they are + % offset so that the space between them is truly \outerhsize or \outervsize + % (P. A. MacKay, 12 November, 1986) + % + \def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} + \def\nstop{\vbox + {\hrule height\cornerthick depth\cornerlong width\cornerthick}} + \def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} + \def\nsbot{\vbox + {\hrule height\cornerlong depth\cornerthick width\cornerthick}} + + % Parse an argument, then pass it to #1. The argument is the rest of + % the input line (except we remove a trailing comment). #1 should be a + % macro which expects an ordinary undelimited TeX argument. + % + \def\parsearg#1{% + \let\next = #1% + \begingroup + \obeylines + \futurelet\temp\parseargx + } + + % If the next token is an obeyed space (from an @example environment or + % the like), remove it and recurse. Otherwise, we're done. + \def\parseargx{% + % \obeyedspace is defined far below, after the definition of \sepspaces. + \ifx\obeyedspace\temp + \expandafter\parseargdiscardspace + \else + \expandafter\parseargline + \fi + } + + % Remove a single space (as the delimiter token to the macro call). + {\obeyspaces % + \gdef\parseargdiscardspace {\futurelet\temp\parseargx}} + + {\obeylines % + \gdef\parseargline#1^^M{% + \endgroup % End of the group started in \parsearg. + % + % First remove any @c comment, then any @comment. + % Result of each macro is put in \toks0. + \argremovec #1\c\relax % + \expandafter\argremovecomment \the\toks0 \comment\relax % + % + % Call the caller's macro, saved as \next in \parsearg. + \expandafter\next\expandafter{\the\toks0}% + }% + } + + % Since all \c{,omment} does is throw away the argument, we can let TeX + % do that for us. The \relax here is matched by the \relax in the call + % in \parseargline; it could be more or less anything, its purpose is + % just to delimit the argument to the \c. + \def\argremovec#1\c#2\relax{\toks0 = {#1}} + \def\argremovecomment#1\comment#2\relax{\toks0 = {#1}} + + % \argremovec{,omment} might leave us with trailing spaces, though; e.g., + % @end itemize @c foo + % will have two active spaces as part of the argument with the + % `itemize'. Here we remove all active spaces from #1, and assign the + % result to \toks0. + % + % This loses if there are any *other* active characters besides spaces + % in the argument -- _ ^ +, for example -- since they get expanded. + % Fortunately, Texinfo does not define any such commands. (If it ever + % does, the catcode of the characters in questionwill have to be changed + % here.) But this means we cannot call \removeactivespaces as part of + % \argremovec{,omment}, since @c uses \parsearg, and thus the argument + % that \parsearg gets might well have any character at all in it. + % + \def\removeactivespaces#1{% + \begingroup + \ignoreactivespaces + \edef\temp{#1}% + \global\toks0 = \expandafter{\temp}% + \endgroup + } + + % Change the active space to expand to nothing. + % + \begingroup + \obeyspaces + \gdef\ignoreactivespaces{\obeyspaces\let =\empty} + \endgroup + + + \def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} + + %% These are used to keep @begin/@end levels from running away + %% Call \inENV within environments (after a \begingroup) + \newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi} + \def\ENVcheck{% + \ifENV\errmessage{Still within an environment; press RETURN to continue} + \endgroup\fi} % This is not perfect, but it should reduce lossage + + % @begin foo is the same as @foo, for now. + \newhelp\EMsimple{Press RETURN to continue.} + + \outer\def\begin{\parsearg\beginxxx} + + \def\beginxxx #1{% + \expandafter\ifx\csname #1\endcsname\relax + {\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else + \csname #1\endcsname\fi} + + % @end foo executes the definition of \Efoo. + % + \def\end{\parsearg\endxxx} + \def\endxxx #1{% + \removeactivespaces{#1}% + \edef\endthing{\the\toks0}% + % + \expandafter\ifx\csname E\endthing\endcsname\relax + \expandafter\ifx\csname \endthing\endcsname\relax + % There's no \foo, i.e., no ``environment'' foo. + \errhelp = \EMsimple + \errmessage{Undefined command `@end \endthing'}% + \else + \unmatchedenderror\endthing + \fi + \else + % Everything's ok; the right environment has been started. + \csname E\endthing\endcsname + \fi + } + + % There is an environment #1, but it hasn't been started. Give an error. + % + \def\unmatchedenderror#1{% + \errhelp = \EMsimple + \errmessage{This `@end #1' doesn't have a matching `@#1'}% + } + + % Define the control sequence \E#1 to give an unmatched @end error. + % + \def\defineunmatchedend#1{% + \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}% + } + + + % Single-spacing is done by various environments (specifically, in + % \nonfillstart and \quotations). + \newskip\singlespaceskip \singlespaceskip = 12.5pt + \def\singlespace{% + % Why was this kern here? It messes up equalizing space above and below + % environments. --karl, 6may93 + %{\advance \baselineskip by -\singlespaceskip + %\kern \baselineskip}% + \setleading \singlespaceskip + } + + %% Simple single-character @ commands + + % @@ prints an @ + % Kludge this until the fonts are right (grr). + \def\@{{\tt\char64}} + + % This is turned off because it was never documented + % and you can use @w{...} around a quote to suppress ligatures. + %% Define @` and @' to be the same as ` and ' + %% but suppressing ligatures. + %\def\`{{`}} + %\def\'{{'}} + + % Used to generate quoted braces. + \def\mylbrace {{\tt\char123}} + \def\myrbrace {{\tt\char125}} + \let\{=\mylbrace + \let\}=\myrbrace + \begingroup + % Definitions to produce actual \{ & \} command in an index. + \catcode`\{ = 12 \catcode`\} = 12 + \catcode`\[ = 1 \catcode`\] = 2 + \catcode`\@ = 0 \catcode`\\ = 12 + @gdef@lbracecmd[\{]% + @gdef@rbracecmd[\}]% + @endgroup + + % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent + % Others are defined by plain TeX: @` @' @" @^ @~ @= @v @H. + \let\, = \c + \let\dotaccent = \. + \def\ringaccent#1{{\accent23 #1}} + \let\tieaccent = \t + \let\ubaraccent = \b + \let\udotaccent = \d + + % Other special characters: @questiondown @exclamdown + % Plain TeX defines: @AA @AE @O @OE @L (and lowercase versions) @ss. + \def\questiondown{?`} + \def\exclamdown{!`} + + % Dotless i and dotless j, used for accents. + \def\imacro{i} + \def\jmacro{j} + \def\dotless#1{% + \def\temp{#1}% + \ifx\temp\imacro \ptexi + \else\ifx\temp\jmacro \j + \else \errmessage{@dotless can be used only with i or j}% + \fi\fi + } + + % Be sure we're in horizontal mode when doing a tie, since we make space + % equivalent to this in @example-like environments. Otherwise, a space + % at the beginning of a line will start with \penalty -- and + % since \penalty is valid in vertical mode, we'd end up putting the + % penalty on the vertical list instead of in the new paragraph. + {\catcode`@ = 11 + % Avoid using \@M directly, because that causes trouble + % if the definition is written into an index file. + \global\let\tiepenalty = \@M + \gdef\tie{\leavevmode\penalty\tiepenalty\ } + } + + % @: forces normal size whitespace following. + \def\:{\spacefactor=1000 } + + % @* forces a line break. + \def\*{\hfil\break\hbox{}\ignorespaces} + + % @. is an end-of-sentence period. + \def\.{.\spacefactor=3000 } + + % @! is an end-of-sentence bang. + \def\!{!\spacefactor=3000 } + + % @? is an end-of-sentence query. + \def\?{?\spacefactor=3000 } + + % @w prevents a word break. Without the \leavevmode, @w at the + % beginning of a paragraph, when TeX is still in vertical mode, would + % produce a whole line of output instead of starting the paragraph. + \def\w#1{\leavevmode\hbox{#1}} + + % @group ... @end group forces ... to be all on one page, by enclosing + % it in a TeX vbox. We use \vtop instead of \vbox to construct the box + % to keep its height that of a normal line. According to the rules for + % \topskip (p.114 of the TeXbook), the glue inserted is + % max (\topskip - \ht (first item), 0). If that height is large, + % therefore, no glue is inserted, and the space between the headline and + % the text is small, which looks bad. + % + \def\group{\begingroup + \ifnum\catcode13=\active \else + \errhelp = \groupinvalidhelp + \errmessage{@group invalid in context where filling is enabled}% + \fi + % + % The \vtop we start below produces a box with normal height and large + % depth; thus, TeX puts \baselineskip glue before it, and (when the + % next line of text is done) \lineskip glue after it. (See p.82 of + % the TeXbook.) Thus, space below is not quite equal to space + % above. But it's pretty close. + \def\Egroup{% + \egroup % End the \vtop. + \endgroup % End the \group. + }% + % + \vtop\bgroup + % We have to put a strut on the last line in case the @group is in + % the midst of an example, rather than completely enclosing it. + % Otherwise, the interline space between the last line of the group + % and the first line afterwards is too small. But we can't put the + % strut in \Egroup, since there it would be on a line by itself. + % Hence this just inserts a strut at the beginning of each line. + \everypar = {\strut}% + % + % Since we have a strut on every line, we don't need any of TeX's + % normal interline spacing. + \offinterlineskip + % + % OK, but now we have to do something about blank + % lines in the input in @example-like environments, which normally + % just turn into \lisppar, which will insert no space now that we've + % turned off the interline space. Simplest is to make them be an + % empty paragraph. + \ifx\par\lisppar + \edef\par{\leavevmode \par}% + % + % Reset ^^M's definition to new definition of \par. + \obeylines + \fi + % + % Do @comment since we are called inside an environment such as + % @example, where each end-of-line in the input causes an + % end-of-line in the output. We don't want the end-of-line after + % the `@group' to put extra space in the output. Since @group + % should appear on a line by itself (according to the Texinfo + % manual), we don't worry about eating any user text. + \comment + } + % + % TeX puts in an \escapechar (i.e., `@') at the beginning of the help + % message, so this ends up printing `@group can only ...'. + % + \newhelp\groupinvalidhelp{% + group can only be used in environments such as @example,^^J% + where each line of input produces a line of output.} + + % @need space-in-mils + % forces a page break if there is not space-in-mils remaining. + + \newdimen\mil \mil=0.001in + + \def\need{\parsearg\needx} + + % Old definition--didn't work. + %\def\needx #1{\par % + %% This method tries to make TeX break the page naturally + %% if the depth of the box does not fit. + %{\baselineskip=0pt% + %\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak + %\prevdepth=-1000pt + %}} + + \def\needx#1{% + % Ensure vertical mode, so we don't make a big box in the middle of a + % paragraph. + \par + % + % If the @need value is less than one line space, it's useless. + \dimen0 = #1\mil + \dimen2 = \ht\strutbox + \advance\dimen2 by \dp\strutbox + \ifdim\dimen0 > \dimen2 + % + % Do a \strut just to make the height of this box be normal, so the + % normal leading is inserted relative to the preceding line. + % And a page break here is fine. + \vtop to #1\mil{\strut\vfil}% + % + % TeX does not even consider page breaks if a penalty added to the + % main vertical list is 10000 or more. But in order to see if the + % empty box we just added fits on the page, we must make it consider + % page breaks. On the other hand, we don't want to actually break the + % page after the empty box. So we use a penalty of 9999. + % + % There is an extremely small chance that TeX will actually break the + % page at this \penalty, if there are no other feasible breakpoints in + % sight. (If the user is using lots of big @group commands, which + % almost-but-not-quite fill up a page, TeX will have a hard time doing + % good page breaking, for example.) However, I could not construct an + % example where a page broke at this \penalty; if it happens in a real + % document, then we can reconsider our strategy. + \penalty9999 + % + % Back up by the size of the box, whether we did a page break or not. + \kern -#1\mil + % + % Do not allow a page break right after this kern. + \nobreak + \fi + } + + % @br forces paragraph break + + \let\br = \par + + % @dots{} output an ellipsis using the current font. + % We do .5em per period so that it has the same spacing in a typewriter + % font as three actual period characters. + % + \def\dots{% + \leavevmode + \hbox to 1.5em{% + \hskip 0pt plus 0.25fil minus 0.25fil + .\hss.\hss.% + \hskip 0pt plus 0.5fil minus 0.5fil + }% + } + + % @enddots{} is an end-of-sentence ellipsis. + % + \def\enddots{% + \leavevmode + \hbox to 2em{% + \hskip 0pt plus 0.25fil minus 0.25fil + .\hss.\hss.\hss.% + \hskip 0pt plus 0.5fil minus 0.5fil + }% + \spacefactor=3000 + } + + + % @page forces the start of a new page + % + \def\page{\par\vfill\supereject} + + % @exdent text.... + % outputs text on separate line in roman font, starting at standard page margin + + % This records the amount of indent in the innermost environment. + % That's how much \exdent should take out. + \newskip\exdentamount + + % This defn is used inside fill environments such as @defun. + \def\exdent{\parsearg\exdentyyy} + \def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}} + + % This defn is used inside nofill environments such as @example. + \def\nofillexdent{\parsearg\nofillexdentyyy} + \def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount + \leftline{\hskip\leftskip{\rm#1}}}} + + % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current + % paragraph. For more general purposes, use the \margin insertion + % class. WHICH is `l' or `r'. + % + \newskip\inmarginspacing \inmarginspacing=1cm + \def\strutdepth{\dp\strutbox} + % + \def\doinmargin#1#2{\strut\vadjust{% + \nobreak + \kern-\strutdepth + \vtop to \strutdepth{% + \baselineskip=\strutdepth + \vss + % if you have multiple lines of stuff to put here, you'll need to + % make the vbox yourself of the appropriate size. + \ifx#1l% + \llap{\ignorespaces #2\hskip\inmarginspacing}% + \else + \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% + \fi + \null + }% + }} + \def\inleftmargin{\doinmargin l} + \def\inrightmargin{\doinmargin r} + % + % @inmargin{TEXT [, RIGHT-TEXT]} + % (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; + % else use TEXT for both). + % + \def\inmargin#1{\parseinmargin #1,,\finish} + \def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \def\lefttext{#1}% have both texts + \def\righttext{#2}% + \else + \def\lefttext{#1}% have only one text + \def\righttext{#1}% + \fi + % + \ifodd\pageno + \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin + \else + \def\temp{\inleftmargin\lefttext}% + \fi + \temp + } + + % @include file insert text of that file as input. + % Allow normal characters that we make active in the argument (a file name). + \def\include{\begingroup + \catcode`\\=12 + \catcode`~=12 + \catcode`^=12 + \catcode`_=12 + \catcode`|=12 + \catcode`<=12 + \catcode`>=12 + \catcode`+=12 + \parsearg\includezzz} + % Restore active chars for included file. + \def\includezzz#1{\endgroup\begingroup + % Read the included file in a group so nested @include's work. + \def\thisfile{#1}% + \input\thisfile + \endgroup} + + \def\thisfile{} + + % @center line outputs that line, centered + + \def\center{\parsearg\centerzzz} + \def\centerzzz #1{{\advance\hsize by -\leftskip + \advance\hsize by -\rightskip + \centerline{#1}}} + + % @sp n outputs n lines of vertical space + + \def\sp{\parsearg\spxxx} + \def\spxxx #1{\vskip #1\baselineskip} + + % @comment ...line which is ignored... + % @c is the same as @comment + % @ignore ... @end ignore is another way to write a comment + + \def\comment{\begingroup \catcode`\^^M=\other% + \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% + \commentxxx} + {\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} + + \let\c=\comment + + % @paragraphindent NCHARS + % We'll use ems for NCHARS, close enough. + % We cannot implement @paragraphindent asis, though. + % + \def\asisword{asis} % no translation, these are keywords + \def\noneword{none} + % + \def\paragraphindent{\parsearg\doparagraphindent} + \def\doparagraphindent#1{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \defaultparindent = 0pt + \else + \defaultparindent = #1em + \fi + \fi + \parindent = \defaultparindent + } + + % @exampleindent NCHARS + % We'll use ems for NCHARS like @paragraphindent. + % It seems @exampleindent asis isn't necessary, but + % I preserve it to make it similar to @paragraphindent. + \def\exampleindent{\parsearg\doexampleindent} + \def\doexampleindent#1{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \lispnarrowing = 0pt + \else + \lispnarrowing = #1em + \fi + \fi + } + + % @asis just yields its argument. Used with @table, for example. + % + \def\asis#1{#1} + + % @math means output in math mode. + % We don't use $'s directly in the definition of \math because control + % sequences like \math are expanded when the toc file is written. Then, + % we read the toc file back, the $'s will be normal characters (as they + % should be, according to the definition of Texinfo). So we must use a + % control sequence to switch into and out of math mode. + % + % This isn't quite enough for @math to work properly in indices, but it + % seems unlikely it will ever be needed there. + % + \let\implicitmath = $ + \def\math#1{\implicitmath #1\implicitmath} + + % @bullet and @minus need the same treatment as @math, just above. + \def\bullet{\implicitmath\ptexbullet\implicitmath} + \def\minus{\implicitmath-\implicitmath} + + % @refill is a no-op. + \let\refill=\relax + + % If working on a large document in chapters, it is convenient to + % be able to disable indexing, cross-referencing, and contents, for test runs. + % This is done with @novalidate (before @setfilename). + % + \newif\iflinks \linkstrue % by default we want the aux files. + \let\novalidate = \linksfalse + + % @setfilename is done at the beginning of every texinfo file. + % 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 + \readauxfile + \fi % \openindices needs to do some work in any case. + \openindices + \fixbackslash % Turn off hack to swallow `\input texinfo'. + \global\let\setfilename=\comment % Ignore extra @setfilename cmds. + % + % If texinfo.cnf is present on the system, read it. + % Useful for site-wide @afourpaper, etc. + % Just to be on the safe side, close the input stream before the \input. + \openin 1 texinfo.cnf + \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi + \closein1 + \temp + % + \comment % Ignore the actual filename. + } + + % Called from \setfilename. + % + \def\openindices{% + \newindex{cp}% + \newcodeindex{fn}% + \newcodeindex{vr}% + \newcodeindex{tp}% + \newcodeindex{ky}% + \newcodeindex{pg}% + } + + % @bye. + \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} + + + \message{pdf,} + % adobe `portable' document format + \newcount\tempnum + \newcount\lnkcount + \newtoks\filename + \newcount\filenamelength + \newcount\pgn + \newtoks\toksA + \newtoks\toksB + \newtoks\toksC + \newtoks\toksD + \newbox\boxA + \newcount\countA + \newif\ifpdf + \newif\ifpdfmakepagedest + + \ifx\pdfoutput\undefined + \pdffalse + \let\pdfmkdest = \gobble + \let\pdfurl = \gobble + \let\endlink = \relax + \let\linkcolor = \relax + \let\pdfmakeoutlines = \relax + \else + \pdftrue + \pdfoutput = 1 + \input pdfcolor + \def\dopdfimage#1#2#3{% + \def\imagewidth{#2}% + \def\imageheight{#3}% + \ifnum\pdftexversion < 14 + \pdfimage + \else + \pdfximage + \fi + \ifx\empty\imagewidth\else width \imagewidth \fi + \ifx\empty\imageheight\else height \imageheight \fi + \ifnum\pdftexversion<13 + #1.pdf% + \else + {#1.pdf}% + \fi + \ifnum\pdftexversion < 14 \else + \pdfrefximage \pdflastximage + \fi} + \def\pdfmkdest#1{\pdfdest name{#1} xyz} + \def\pdfmkpgn#1{#1@} + \let\linkcolor = \Blue % was Cyan, but that seems light? + \def\endlink{\Black\pdfendlink} + % Adding outlines to PDF; macros for calculating structure of outlines + % come from Petr Olsak + \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% + \else \csname#1\endcsname \fi} + \def\advancenumber#1{\tempnum=\expnumber{#1}\relax + \advance\tempnum by1 + \expandafter\xdef\csname#1\endcsname{\the\tempnum}} + \def\pdfmakeoutlines{{% + \openin 1 \jobname.toc + \ifeof 1\else\bgroup + \closein 1 + \indexnofonts + \def\tt{} + \let\_ = \normalunderscore + % Thanh's hack / proper braces in bookmarks + \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace + \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace + % + \def\chapentry ##1##2##3{} + \def\unnumbchapentry ##1##2{} + \def\secentry ##1##2##3##4{\advancenumber{chap##2}} + \def\unnumbsecentry ##1##2{} + \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}} + \def\unnumbsubsecentry ##1##2{} + \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}} + \def\unnumbsubsubsecentry ##1##2{} + \input \jobname.toc + \def\chapentry ##1##2##3{% + \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}} + \def\unnumbchapentry ##1##2{% + \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} + \def\secentry ##1##2##3##4{% + \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}} + \def\unnumbsecentry ##1##2{% + \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} + \def\subsecentry ##1##2##3##4##5{% + \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}} + \def\unnumbsubsecentry ##1##2{% + \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} + \def\subsubsecentry ##1##2##3##4##5##6{% + \pdfoutline goto name{\pdfmkpgn{##6}}{##1}} + \def\unnumbsubsubsecentry ##1##2{% + \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} + \input \jobname.toc + \egroup\fi + }} + \def\makelinks #1,{% + \def\params{#1}\def\E{END}% + \ifx\params\E + \let\nextmakelinks=\relax + \else + \let\nextmakelinks=\makelinks + \ifnum\lnkcount>0,\fi + \picknum{#1}% + \startlink attr{/Border [0 0 0]} + goto name{\pdfmkpgn{\the\pgn}}% + \linkcolor #1% + \advance\lnkcount by 1% + \endlink + \fi + \nextmakelinks + } + \def\picknum#1{\expandafter\pn#1} + \def\pn#1{% + \def\p{#1}% + \ifx\p\lbrace + \let\nextpn=\ppn + \else + \let\nextpn=\ppnn + \def\first{#1} + \fi + \nextpn + } + \def\ppn#1{\pgn=#1\gobble} + \def\ppnn{\pgn=\first} + \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,} + \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} + \def\skipspaces#1{\def\PP{#1}\def\D{|}% + \ifx\PP\D\let\nextsp\relax + \else\let\nextsp\skipspaces + \ifx\p\space\else\addtokens{\filename}{\PP}% + \advance\filenamelength by 1 + \fi + \fi + \nextsp} + \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax} + \ifnum\pdftexversion < 14 + \let \startlink \pdfannotlink + \else + \let \startlink \pdfstartlink + \fi + \def\pdfurl#1{% + \begingroup + \normalturnoffactive\def\@{@}% + \let\value=\expandablevalue + \leavevmode\Red + \startlink attr{/Border [0 0 0]}% + user{/Subtype /Link /A << /S /URI /URI (#1) >>}% + % #1 + \endgroup} + \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} + \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} + \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} + \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} + \def\maketoks{% + \expandafter\poptoks\the\toksA|ENDTOKS| + \ifx\first0\adn0 + \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 + \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 + \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 + \else + \ifnum0=\countA\else\makelink\fi + \ifx\first.\let\next=\done\else + \let\next=\maketoks + \addtokens{\toksB}{\the\toksD} + \ifx\first,\addtokens{\toksB}{\space}\fi + \fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \next} + \def\makelink{\addtokens{\toksB}% + {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} + \def\pdflink#1{% + \startlink attr{/Border [0 0 0]} goto name{\mkpgn{#1}} + \linkcolor #1\endlink} + \def\mkpgn#1{#1@} + \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} + \fi % \ifx\pdfoutput + + + \message{fonts,} + % Font-change commands. + + % Texinfo sort of supports the sans serif font style, which plain TeX does not. + % So we set up a \sf analogous to plain's \rm, etc. + \newfam\sffam + \def\sf{\fam=\sffam \tensf} + \let\li = \sf % Sometimes we call it \li, not \sf. + + % We don't need math for this one. + \def\ttsl{\tenttsl} + + % Use Computer Modern fonts at \magstephalf (11pt). + \newcount\mainmagstep + \mainmagstep=\magstephalf + + % Set the font macro #1 to the font named #2, adding on the + % specified font prefix (normally `cm'). + % #3 is the font's design size, #4 is a scale factor + \def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4} + + % Use cm as the default font prefix. + % To specify the font prefix, you must define \fontprefix + % before you read in texinfo.tex. + \ifx\fontprefix\undefined + \def\fontprefix{cm} + \fi + % Support font families that don't use the same naming scheme as CM. + \def\rmshape{r} + \def\rmbshape{bx} %where the normal face is bold + \def\bfshape{b} + \def\bxshape{bx} + \def\ttshape{tt} + \def\ttbshape{tt} + \def\ttslshape{sltt} + \def\itshape{ti} + \def\itbshape{bxti} + \def\slshape{sl} + \def\slbshape{bxsl} + \def\sfshape{ss} + \def\sfbshape{ss} + \def\scshape{csc} + \def\scbshape{csc} + + \ifx\bigger\relax + \let\mainmagstep=\magstep1 + \setfont\textrm\rmshape{12}{1000} + \setfont\texttt\ttshape{12}{1000} + \else + \setfont\textrm\rmshape{10}{\mainmagstep} + \setfont\texttt\ttshape{10}{\mainmagstep} + \fi + % Instead of cmb10, you many want to use cmbx10. + % cmbx10 is a prettier font on its own, but cmb10 + % looks better when embedded in a line with cmr10. + \setfont\textbf\bfshape{10}{\mainmagstep} + \setfont\textit\itshape{10}{\mainmagstep} + \setfont\textsl\slshape{10}{\mainmagstep} + \setfont\textsf\sfshape{10}{\mainmagstep} + \setfont\textsc\scshape{10}{\mainmagstep} + \setfont\textttsl\ttslshape{10}{\mainmagstep} + \font\texti=cmmi10 scaled \mainmagstep + \font\textsy=cmsy10 scaled \mainmagstep + + % A few fonts for @defun, etc. + \setfont\defbf\bxshape{10}{\magstep1} %was 1314 + \setfont\deftt\ttshape{10}{\magstep1} + \def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf} + + % Fonts for indices, footnotes, small examples (9pt). + \setfont\smallrm\rmshape{9}{1000} + \setfont\smalltt\ttshape{9}{1000} + \setfont\smallbf\bfshape{10}{900} + \setfont\smallit\itshape{9}{1000} + \setfont\smallsl\slshape{9}{1000} + \setfont\smallsf\sfshape{9}{1000} + \setfont\smallsc\scshape{10}{900} + \setfont\smallttsl\ttslshape{10}{900} + \font\smalli=cmmi9 + \font\smallsy=cmsy9 + + % Fonts for title page: + \setfont\titlerm\rmbshape{12}{\magstep3} + \setfont\titleit\itbshape{10}{\magstep4} + \setfont\titlesl\slbshape{10}{\magstep4} + \setfont\titlett\ttbshape{12}{\magstep3} + \setfont\titlettsl\ttslshape{10}{\magstep4} + \setfont\titlesf\sfbshape{17}{\magstep1} + \let\titlebf=\titlerm + \setfont\titlesc\scbshape{10}{\magstep4} + \font\titlei=cmmi12 scaled \magstep3 + \font\titlesy=cmsy10 scaled \magstep4 + \def\authorrm{\secrm} + + % Chapter (and unnumbered) fonts (17.28pt). + \setfont\chaprm\rmbshape{12}{\magstep2} + \setfont\chapit\itbshape{10}{\magstep3} + \setfont\chapsl\slbshape{10}{\magstep3} + \setfont\chaptt\ttbshape{12}{\magstep2} + \setfont\chapttsl\ttslshape{10}{\magstep3} + \setfont\chapsf\sfbshape{17}{1000} + \let\chapbf=\chaprm + \setfont\chapsc\scbshape{10}{\magstep3} + \font\chapi=cmmi12 scaled \magstep2 + \font\chapsy=cmsy10 scaled \magstep3 + + % Section fonts (14.4pt). + \setfont\secrm\rmbshape{12}{\magstep1} + \setfont\secit\itbshape{10}{\magstep2} + \setfont\secsl\slbshape{10}{\magstep2} + \setfont\sectt\ttbshape{12}{\magstep1} + \setfont\secttsl\ttslshape{10}{\magstep2} + \setfont\secsf\sfbshape{12}{\magstep1} + \let\secbf\secrm + \setfont\secsc\scbshape{10}{\magstep2} + \font\seci=cmmi12 scaled \magstep1 + \font\secsy=cmsy10 scaled \magstep2 + + % \setfont\ssecrm\bxshape{10}{\magstep1} % This size an font looked bad. + % \setfont\ssecit\itshape{10}{\magstep1} % The letters were too crowded. + % \setfont\ssecsl\slshape{10}{\magstep1} + % \setfont\ssectt\ttshape{10}{\magstep1} + % \setfont\ssecsf\sfshape{10}{\magstep1} + + %\setfont\ssecrm\bfshape{10}{1315} % Note the use of cmb rather than cmbx. + %\setfont\ssecit\itshape{10}{1315} % Also, the size is a little larger than + %\setfont\ssecsl\slshape{10}{1315} % being scaled magstep1. + %\setfont\ssectt\ttshape{10}{1315} + %\setfont\ssecsf\sfshape{10}{1315} + + %\let\ssecbf=\ssecrm + + % Subsection fonts (13.15pt). + \setfont\ssecrm\rmbshape{12}{\magstephalf} + \setfont\ssecit\itbshape{10}{1315} + \setfont\ssecsl\slbshape{10}{1315} + \setfont\ssectt\ttbshape{12}{\magstephalf} + \setfont\ssecttsl\ttslshape{10}{1315} + \setfont\ssecsf\sfbshape{12}{\magstephalf} + \let\ssecbf\ssecrm + \setfont\ssecsc\scbshape{10}{\magstep1} + \font\sseci=cmmi12 scaled \magstephalf + \font\ssecsy=cmsy10 scaled 1315 + % The smallcaps and symbol fonts should actually be scaled \magstep1.5, + % but that is not a standard magnification. + + % In order for the font changes to affect most math symbols and letters, + % we have to define the \textfont of the standard families. Since + % texinfo doesn't allow for producing subscripts and superscripts, we + % don't bother to reset \scriptfont and \scriptscriptfont (which would + % also require loading a lot more fonts). + % + \def\resetmathfonts{% + \textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy + \textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf + \textfont\ttfam = \tentt \textfont\sffam = \tensf + } + + + % The font-changing commands redefine the meanings of \tenSTYLE, instead + % of just \STYLE. We do this so that font changes will continue to work + % in math mode, where it is the current \fam that is relevant in most + % cases, not the current font. Plain TeX does \def\bf{\fam=\bffam + % \tenbf}, for example. By redefining \tenbf, we obviate the need to + % redefine \bf itself. + \def\textfonts{% + \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl + \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc + \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl + \resetmathfonts} + \def\titlefonts{% + \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl + \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc + \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy + \let\tenttsl=\titlettsl + \resetmathfonts \setleading{25pt}} + \def\titlefont#1{{\titlefonts\rm #1}} + \def\chapfonts{% + \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl + \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc + \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl + \resetmathfonts \setleading{19pt}} + \def\secfonts{% + \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl + \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc + \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl + \resetmathfonts \setleading{16pt}} + \def\subsecfonts{% + \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl + \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc + \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl + \resetmathfonts \setleading{15pt}} + \let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf? + \def\smallfonts{% + \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl + \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc + \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy + \let\tenttsl=\smallttsl + \resetmathfonts \setleading{11pt}} + + % Set up the default fonts, so we can use them for creating boxes. + % + \textfonts + + % Define these so they can be easily changed for other fonts. + \def\angleleft{$\langle$} + \def\angleright{$\rangle$} + + % Count depth in font-changes, for error checks + \newcount\fontdepth \fontdepth=0 + + % Fonts for short table of contents. + \setfont\shortcontrm\rmshape{12}{1000} + \setfont\shortcontbf\bxshape{12}{1000} + \setfont\shortcontsl\slshape{12}{1000} + + %% Add scribe-like font environments, plus @l for inline lisp (usually sans + %% serif) and @ii for TeX italic + + % \smartitalic{ARG} outputs arg in italics, followed by an italic correction + % unless the following character is such as not to need one. + \def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi} + \def\smartslanted#1{{\sl #1}\futurelet\next\smartitalicx} + \def\smartitalic#1{{\it #1}\futurelet\next\smartitalicx} + + \let\i=\smartitalic + \let\var=\smartslanted + \let\dfn=\smartslanted + \let\emph=\smartitalic + \let\cite=\smartslanted + + \def\b#1{{\bf #1}} + \let\strong=\b + + % We can't just use \exhyphenpenalty, because that only has effect at + % the end of a paragraph. Restore normal hyphenation at the end of the + % group within which \nohyphenation is presumably called. + % + \def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} + \def\restorehyphenation{\hyphenchar\font = `- } + + \def\t#1{% + {\tt \rawbackslash \frenchspacing #1}% + \null + } + \let\ttfont=\t + \def\samp#1{`\tclose{#1}'\null} + \setfont\keyrm\rmshape{8}{1000} + \font\keysy=cmsy9 + \def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% + \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% + \vbox{\hrule\kern-0.4pt + \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% + \kern-0.4pt\hrule}% + \kern-.06em\raise0.4pt\hbox{\angleright}}}} + % The old definition, with no lozenge: + %\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null} + \def\ctrl #1{{\tt \rawbackslash \hat}#1} + + % @file, @option are the same as @samp. + \let\file=\samp + \let\option=\samp + + % @code is a modification of @t, + % which makes spaces the same size as normal in the surrounding text. + \def\tclose#1{% + {% + % Change normal interword space to be same as for the current font. + \spaceskip = \fontdimen2\font + % + % Switch to typewriter. + \tt + % + % But `\ ' produces the large typewriter interword space. + \def\ {{\spaceskip = 0pt{} }}% + % + % Turn off hyphenation. + \nohyphenation + % + \rawbackslash + \frenchspacing + #1% + }% + \null + } + + % We *must* turn on hyphenation at `-' and `_' in \code. + % Otherwise, it is too hard to avoid overfull hboxes + % in the Emacs manual, the Library manual, etc. + + % Unfortunately, TeX uses one parameter (\hyphenchar) to control + % both hyphenation at - and hyphenation within words. + % We must therefore turn them both off (\tclose does that) + % and arrange explicitly to hyphenate at a dash. + % -- rms. + { + \catcode`\-=\active + \catcode`\_=\active + % + \global\def\code{\begingroup + \catcode`\-=\active \let-\codedash + \catcode`\_=\active \let_\codeunder + \codex + } + % + % If we end up with any active - characters when handling the index, + % just treat them as a normal -. + \global\def\indexbreaks{\catcode`\-=\active \let-\realdash} + } + + \def\realdash{-} + \def\codedash{-\discretionary{}{}{}} + \def\codeunder{\ifusingtt{\normalunderscore\discretionary{}{}{}}{\_}} + \def\codex #1{\tclose{#1}\endgroup} + + %\let\exp=\tclose %Was temporary + + % @kbd is like @code, except that if the argument is just one @key command, + % then @kbd has no effect. + + % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), + % `example' (@kbd uses ttsl only inside of @example and friends), + % or `code' (@kbd uses normal tty font always). + \def\kbdinputstyle{\parsearg\kbdinputstylexxx} + \def\kbdinputstylexxx#1{% + \def\arg{#1}% + \ifx\arg\worddistinct + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% + \else\ifx\arg\wordexample + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% + \else\ifx\arg\wordcode + \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% + \fi\fi\fi + } + \def\worddistinct{distinct} + \def\wordexample{example} + \def\wordcode{code} + + % Default is kbdinputdistinct. (Too much of a hassle to call the macro, + % the catcodes are wrong for parsearg to work.) + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl} + + \def\xkey{\key} + \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% + \ifx\one\xkey\ifx\threex\three \key{#2}% + \else{\tclose{\kbdfont\look}}\fi + \else{\tclose{\kbdfont\look}}\fi} + + % For @url, @env, @command quotes seem unnecessary, so use \code. + \let\url=\code + \let\env=\code + \let\command=\code + + % @uref (abbreviation for `urlref') takes an optional (comma-separated) + % second argument specifying the text to display and an optional third + % arg as text to display instead of (rather than in addition to) the url + % itself. First (mandatory) arg is the url. Perhaps eventually put in + % a hypertex \special here. + % + \def\uref#1{\douref #1,,,\finish} + \def\douref#1,#2,#3,#4\finish{\begingroup + \unsepspaces + \pdfurl{#1}% + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt + \unhbox0 % third arg given, show only that + \else + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \ifpdf + \unhbox0 % PDF: 2nd arg given, show only it + \else + \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url + \fi + \else + \code{#1}% only url given, so show it + \fi + \fi + \endlink + \endgroup} + + % rms does not like angle brackets --karl, 17may97. + % So now @email is just like @uref, unless we are pdf. + % + %\def\email#1{\angleleft{\tt #1}\angleright} + \ifpdf + \def\email#1{\doemail#1,,\finish} + \def\doemail#1,#2,#3\finish{\begingroup + \unsepspaces + \pdfurl{mailto:#1}% + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi + \endlink + \endgroup} + \else + \let\email=\uref + \fi + + % Check if we are currently using a typewriter font. Since all the + % Computer Modern typewriter fonts have zero interword stretch (and + % shrink), and it is reasonable to expect all typewriter fonts to have + % this property, we can check that font parameter. + % + \def\ifmonospace{\ifdim\fontdimen3\font=0pt } + + % Typeset a dimension, e.g., `in' or `pt'. The only reason for the + % argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. + % + \def\dmn#1{\thinspace #1} + + \def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par} + + % @l was never documented to mean ``switch to the Lisp font'', + % and it is not used as such in any manual I can find. We need it for + % Polish suppressed-l. --karl, 22sep96. + %\def\l#1{{\li #1}\null} + + % Explicit font changes: @r, @sc, undocumented @ii. + \def\r#1{{\rm #1}} % roman font + \def\sc#1{{\smallcaps#1}} % smallcaps font + \def\ii#1{{\it #1}} % italic font + + % @acronym downcases the argument and prints in smallcaps. + \def\acronym#1{{\smallcaps \lowercase{#1}}} + + % @pounds{} is a sterling sign. + \def\pounds{{\it\$}} + + + \message{page headings,} + + \newskip\titlepagetopglue \titlepagetopglue = 1.5in + \newskip\titlepagebottomglue \titlepagebottomglue = 2pc + + % First the title page. Must do @settitle before @titlepage. + \newif\ifseenauthor + \newif\iffinishedtitlepage + + % Do an implicit @contents or @shortcontents after @end titlepage if the + % user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. + % + \newif\ifsetcontentsaftertitlepage + \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue + \newif\ifsetshortcontentsaftertitlepage + \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue + + \def\shorttitlepage{\parsearg\shorttitlepagezzz} + \def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% + \endgroup\page\hbox{}\page} + + \def\titlepage{\begingroup \parindent=0pt \textfonts + \let\subtitlerm=\tenrm + \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}% + % + \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}% + % + % Leave some space at the very top of the page. + \vglue\titlepagetopglue + % + % Now you can print the title using @title. + \def\title{\parsearg\titlezzz}% + \def\titlezzz##1{\leftline{\titlefonts\rm ##1} + % print a rule at the page bottom also. + \finishedtitlepagefalse + \vskip4pt \hrule height 4pt width \hsize \vskip4pt}% + % No rule at page bottom unless we print one at the top with @title. + \finishedtitlepagetrue + % + % Now you can put text using @subtitle. + \def\subtitle{\parsearg\subtitlezzz}% + \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}% + % + % @author should come last, but may come many times. + \def\author{\parsearg\authorzzz}% + \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi + {\authorfont \leftline{##1}}}% + % + % Most title ``pages'' are actually two pages long, with space + % at the top of the second. We don't want the ragged left on the second. + \let\oldpage = \page + \def\page{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + \oldpage + \let\page = \oldpage + \hbox{}}% + % \def\page{\oldpage \hbox{}} + } + + \def\Etitlepage{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + % It is important to do the page break before ending the group, + % because the headline and footline are only empty inside the group. + % If we use the new definition of \page, we always get a blank page + % after the title page, which we certainly don't want. + \oldpage + \endgroup + % + % If they want short, they certainly want long too. + \ifsetshortcontentsaftertitlepage + \shortcontents + \contents + \global\let\shortcontents = \relax + \global\let\contents = \relax + \fi + % + \ifsetcontentsaftertitlepage + \contents + \global\let\contents = \relax + \global\let\shortcontents = \relax + \fi + % + \ifpdf \pdfmakepagedesttrue \fi + % + \HEADINGSon + } + + \def\finishtitlepage{% + \vskip4pt \hrule height 2pt width \hsize + \vskip\titlepagebottomglue + \finishedtitlepagetrue + } + + %%% Set up page headings and footings. + + \let\thispage=\folio + + \newtoks\evenheadline % headline on even pages + \newtoks\oddheadline % headline on odd pages + \newtoks\evenfootline % footline on even pages + \newtoks\oddfootline % footline on odd pages + + % Now make Tex use those variables + \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline + \else \the\evenheadline \fi}} + \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline + \else \the\evenfootline \fi}\HEADINGShook} + \let\HEADINGShook=\relax + + % Commands to set those variables. + % For example, this is what @headings on does + % @evenheading @thistitle|@thispage|@thischapter + % @oddheading @thischapter|@thispage|@thistitle + % @evenfooting @thisfile|| + % @oddfooting ||@thisfile + + \def\evenheading{\parsearg\evenheadingxxx} + \def\oddheading{\parsearg\oddheadingxxx} + \def\everyheading{\parsearg\everyheadingxxx} + + \def\evenfooting{\parsearg\evenfootingxxx} + \def\oddfooting{\parsearg\oddfootingxxx} + \def\everyfooting{\parsearg\everyfootingxxx} + + {\catcode`\@=0 % + + \gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish} + \gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{% + \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + + \gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish} + \gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{% + \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + + \gdef\everyheadingxxx#1{\oddheadingxxx{#1}\evenheadingxxx{#1}}% + + \gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish} + \gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{% + \global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + + \gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish} + \gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{% + \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% + % + % Leave some space for the footline. Hopefully ok to assume + % @evenfooting will not be used by itself. + \global\advance\pageheight by -\baselineskip + \global\advance\vsize by -\baselineskip + } + + \gdef\everyfootingxxx#1{\oddfootingxxx{#1}\evenfootingxxx{#1}} + % + }% unbind the catcode of @. + + % @headings double turns headings on for double-sided printing. + % @headings single turns headings on for single-sided printing. + % @headings off turns them off. + % @headings on same as @headings double, retained for compatibility. + % @headings after turns on double-sided headings after this page. + % @headings doubleafter turns on double-sided headings after this page. + % @headings singleafter turns on single-sided headings after this page. + % By default, they are off at the start of a document, + % and turned `on' after @end titlepage. + + \def\headings #1 {\csname HEADINGS#1\endcsname} + + \def\HEADINGSoff{ + \global\evenheadline={\hfil} \global\evenfootline={\hfil} + \global\oddheadline={\hfil} \global\oddfootline={\hfil}} + \HEADINGSoff + % When we turn headings on, set the page number to 1. + % For double-sided printing, put current file name in lower left corner, + % chapter name on inside top of right hand pages, document + % title on inside top of left hand pages, and page numbers on outside top + % edge of all pages. + \def\HEADINGSdouble{ + \global\pageno=1 + \global\evenfootline={\hfil} + \global\oddfootline={\hfil} + \global\evenheadline={\line{\folio\hfil\thistitle}} + \global\oddheadline={\line{\thischapter\hfil\folio}} + \global\let\contentsalignmacro = \chapoddpage + } + \let\contentsalignmacro = \chappager + + % For single-sided printing, chapter title goes across top left of page, + % page number on top right. + \def\HEADINGSsingle{ + \global\pageno=1 + \global\evenfootline={\hfil} + \global\oddfootline={\hfil} + \global\evenheadline={\line{\thischapter\hfil\folio}} + \global\oddheadline={\line{\thischapter\hfil\folio}} + \global\let\contentsalignmacro = \chappager + } + \def\HEADINGSon{\HEADINGSdouble} + + \def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} + \let\HEADINGSdoubleafter=\HEADINGSafter + \def\HEADINGSdoublex{% + \global\evenfootline={\hfil} + \global\oddfootline={\hfil} + \global\evenheadline={\line{\folio\hfil\thistitle}} + \global\oddheadline={\line{\thischapter\hfil\folio}} + \global\let\contentsalignmacro = \chapoddpage + } + + \def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} + \def\HEADINGSsinglex{% + \global\evenfootline={\hfil} + \global\oddfootline={\hfil} + \global\evenheadline={\line{\thischapter\hfil\folio}} + \global\oddheadline={\line{\thischapter\hfil\folio}} + \global\let\contentsalignmacro = \chappager + } + + % Subroutines used in generating headings + % This produces Day Month Year style of output. + % Only define if not already defined, in case a txi-??.tex file has set + % up a different format (e.g., txi-cs.tex does this). + \ifx\today\undefined + \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} + \fi + + % @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}} + + + \message{tables,} + % Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x). + + % default indentation of table text + \newdimen\tableindent \tableindent=.8in + % default indentation of @itemize and @enumerate text + \newdimen\itemindent \itemindent=.3in + % margin between end of table item and start of table text. + \newdimen\itemmargin \itemmargin=.1in + + % used internally for \itemindent minus \itemmargin + \newdimen\itemmax + + % Note @table, @vtable, and @vtable define @item, @itemx, etc., with + % these defs. + % They also define \itemindex + % to index the item name in whatever manner is desired (perhaps none). + + \newif\ifitemxneedsnegativevskip + + \def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} + + \def\internalBitem{\smallbreak \parsearg\itemzzz} + \def\internalBitemx{\itemxpar \parsearg\itemzzz} + + \def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz} + \def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz} + + \def\internalBkitem{\smallbreak \parsearg\kitemzzz} + \def\internalBkitemx{\itemxpar \parsearg\kitemzzz} + + \def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}% + \itemzzz {#1}} + + \def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}% + \itemzzz {#1}} + + \def\itemzzz #1{\begingroup % + \advance\hsize by -\rightskip + \advance\hsize by -\tableindent + \setbox0=\hbox{\itemfont{#1}}% + \itemindex{#1}% + \nobreak % This prevents a break before @itemx. + % + % If the item text does not fit in the space we have, put it on a line + % by itself, and do not allow a page break either before or after that + % line. We do not start a paragraph here because then if the next + % command is, e.g., @kindex, the whatsit would get put into the + % horizontal list on a line by itself, resulting in extra blank space. + \ifdim \wd0>\itemmax + % + % Make this a paragraph so we get the \parskip glue and wrapping, + % but leave it ragged-right. + \begingroup + \advance\leftskip by-\tableindent + \advance\hsize by\tableindent + \advance\rightskip by0pt plus1fil + \leavevmode\unhbox0\par + \endgroup + % + % We're going to be starting a paragraph, but we don't want the + % \parskip glue -- logically it's part of the @item we just started. + \nobreak \vskip-\parskip + % + % Stop a page break at the \parskip glue coming up. Unfortunately + % we can't prevent a possible page break at the following + % \baselineskip glue. + \nobreak + \endgroup + \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. + \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 + % eventually be printed. + \nobreak\kern-\tableindent + \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 + \unhbox0 + \nobreak\kern\dimen0 + \endgroup + \itemxneedsnegativevskiptrue + \fi + } + + \def\item{\errmessage{@item while not in a table}} + \def\itemx{\errmessage{@itemx while not in a table}} + \def\kitem{\errmessage{@kitem while not in a table}} + \def\kitemx{\errmessage{@kitemx while not in a table}} + \def\xitem{\errmessage{@xitem while not in a table}} + \def\xitemx{\errmessage{@xitemx while not in a table}} + + % Contains a kludge to get @end[description] to work. + \def\description{\tablez{\dontindex}{1}{}{}{}{}} + + % @table, @ftable, @vtable. + \def\table{\begingroup\inENV\obeylines\obeyspaces\tablex} + {\obeylines\obeyspaces% + \gdef\tablex #1^^M{% + \tabley\dontindex#1 \endtabley}} + + \def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex} + {\obeylines\obeyspaces% + \gdef\ftablex #1^^M{% + \tabley\fnitemindex#1 \endtabley + \def\Eftable{\endgraf\afterenvbreak\endgroup}% + \let\Etable=\relax}} + + \def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex} + {\obeylines\obeyspaces% + \gdef\vtablex #1^^M{% + \tabley\vritemindex#1 \endtabley + \def\Evtable{\endgraf\afterenvbreak\endgroup}% + \let\Etable=\relax}} + + \def\dontindex #1{} + \def\fnitemindex #1{\doind {fn}{\code{#1}}}% + \def\vritemindex #1{\doind {vr}{\code{#1}}}% + + {\obeyspaces % + \gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup% + \tablez{#1}{#2}{#3}{#4}{#5}{#6}}} + + \def\tablez #1#2#3#4#5#6{% + \aboveenvbreak % + \begingroup % + \def\Edescription{\Etable}% Necessary kludge. + \let\itemindex=#1% + \ifnum 0#3>0 \advance \leftskip by #3\mil \fi % + \ifnum 0#4>0 \tableindent=#4\mil \fi % + \ifnum 0#5>0 \advance \rightskip by #5\mil \fi % + \def\itemfont{#2}% + \itemmax=\tableindent % + \advance \itemmax by -\itemmargin % + \advance \leftskip by \tableindent % + \exdentamount=\tableindent + \parindent = 0pt + \parskip = \smallskipamount + \ifdim \parskip=0pt \parskip=2pt \fi% + \def\Etable{\endgraf\afterenvbreak\endgroup}% + \let\item = \internalBitem % + \let\itemx = \internalBitemx % + \let\kitem = \internalBkitem % + \let\kitemx = \internalBkitemx % + \let\xitem = \internalBxitem % + \let\xitemx = \internalBxitemx % + } + + % This is the counter used by @enumerate, which is really @itemize + + \newcount \itemno + + \def\itemize{\parsearg\itemizezzz} + + \def\itemizezzz #1{% + \begingroup % ended by the @end itemize + \itemizey {#1}{\Eitemize} + } + + \def\itemizey #1#2{% + \aboveenvbreak % + \itemmax=\itemindent % + \advance \itemmax by -\itemmargin % + \advance \leftskip by \itemindent % + \exdentamount=\itemindent + \parindent = 0pt % + \parskip = \smallskipamount % + \ifdim \parskip=0pt \parskip=2pt \fi% + \def#2{\endgraf\afterenvbreak\endgroup}% + \def\itemcontents{#1}% + \let\item=\itemizeitem} + + % Set sfcode to normal for the chars that usually have another value. + % These are `.?!:;,' + \def\frenchspacing{\sfcode46=1000 \sfcode63=1000 \sfcode33=1000 + \sfcode58=1000 \sfcode59=1000 \sfcode44=1000 } + + % \splitoff TOKENS\endmark defines \first to be the first token in + % TOKENS, and \rest to be the remainder. + % + \def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% + + % Allow an optional argument of an uppercase letter, lowercase letter, + % or number, to specify the first label in the enumerated list. No + % argument is the same as `1'. + % + \def\enumerate{\parsearg\enumeratezzz} + \def\enumeratezzz #1{\enumeratey #1 \endenumeratey} + \def\enumeratey #1 #2\endenumeratey{% + \begingroup % ended by the @end enumerate + % + % If we were given no argument, pretend we were given `1'. + \def\thearg{#1}% + \ifx\thearg\empty \def\thearg{1}\fi + % + % Detect if the argument is a single token. If so, it might be a + % letter. Otherwise, the only valid thing it can be is a number. + % (We will always have one token, because of the test we just made. + % This is a good thing, since \splitoff doesn't work given nothing at + % all -- the first parameter is undelimited.) + \expandafter\splitoff\thearg\endmark + \ifx\rest\empty + % Only one token in the argument. It could still be anything. + % A ``lowercase letter'' is one whose \lccode is nonzero. + % An ``uppercase letter'' is one whose \lccode is both nonzero, and + % not equal to itself. + % Otherwise, we assume it's a number. + % + % We need the \relax at the end of the \ifnum lines to stop TeX from + % continuing to look for a . + % + \ifnum\lccode\expandafter`\thearg=0\relax + \numericenumerate % a number (we hope) + \else + % It's a letter. + \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax + \lowercaseenumerate % lowercase letter + \else + \uppercaseenumerate % uppercase letter + \fi + \fi + \else + % Multiple tokens in the argument. We hope it's a number. + \numericenumerate + \fi + } + + % An @enumerate whose labels are integers. The starting integer is + % given in \thearg. + % + \def\numericenumerate{% + \itemno = \thearg + \startenumeration{\the\itemno}% + } + + % The starting (lowercase) letter is in \thearg. + \def\lowercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more lowercase letters in @enumerate; get a bigger + alphabet}% + \fi + \char\lccode\itemno + }% + } + + % The starting (uppercase) letter is in \thearg. + \def\uppercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more uppercase letters in @enumerate; get a bigger + alphabet} + \fi + \char\uccode\itemno + }% + } + + % Call itemizey, adding a period to the first argument and supplying the + % common last two arguments. Also subtract one from the initial value in + % \itemno, since @item increments \itemno. + % + \def\startenumeration#1{% + \advance\itemno by -1 + \itemizey{#1.}\Eenumerate\flushcr + } + + % @alphaenumerate and @capsenumerate are abbreviations for giving an arg + % to @enumerate. + % + \def\alphaenumerate{\enumerate{a}} + \def\capsenumerate{\enumerate{A}} + \def\Ealphaenumerate{\Eenumerate} + \def\Ecapsenumerate{\Eenumerate} + + % Definition of @item while inside @itemize. + + \def\itemizeitem{% + \advance\itemno by 1 + {\let\par=\endgraf \smallbreak}% + \ifhmode \errmessage{In hmode at itemizeitem}\fi + {\parskip=0in \hskip 0pt + \hbox to 0pt{\hss \itemcontents\hskip \itemmargin}% + \vadjust{\penalty 1200}}% + \flushcr} + + % @multitable macros + % Amy Hendrickson, 8/18/94, 3/6/96 + % + % @multitable ... @end multitable will make as many columns as desired. + % Contents of each column will wrap at width given in preamble. Width + % can be specified either with sample text given in a template line, + % or in percent of \hsize, the current width of text on page. + + % Table can continue over pages but will only break between lines. + + % To make preamble: + % + % Either define widths of columns in terms of percent of \hsize: + % @multitable @columnfractions .25 .3 .45 + % @item ... + % + % Numbers following @columnfractions are the percent of the total + % current hsize to be used for each column. You may use as many + % columns as desired. + + + % Or use a template: + % @multitable {Column 1 template} {Column 2 template} {Column 3 template} + % @item ... + % using the widest term desired in each column. + % + % For those who want to use more than one line's worth of words in + % the preamble, break the line within one argument and it + % will parse correctly, i.e., + % + % @multitable {Column 1 template} {Column 2 template} {Column 3 + % template} + % Not: + % @multitable {Column 1 template} {Column 2 template} + % {Column 3 template} + + % Each new table line starts with @item, each subsequent new column + % starts with @tab. Empty columns may be produced by supplying @tab's + % with nothing between them for as many times as empty columns are needed, + % ie, @tab@tab@tab will produce two empty columns. + + % @item, @tab, @multitable or @end multitable do not need to be on their + % own lines, but it will not hurt if they are. + + % Sample multitable: + + % @multitable {Column 1 template} {Column 2 template} {Column 3 template} + % @item first col stuff @tab second col stuff @tab third col + % @item + % first col stuff + % @tab + % second col stuff + % @tab + % third col + % @item first col stuff @tab second col stuff + % @tab Many paragraphs of text may be used in any column. + % + % They will wrap at the width determined by the template. + % @item@tab@tab This will be in third column. + % @end multitable + + % Default dimensions may be reset by user. + % @multitableparskip is vertical space between paragraphs in table. + % @multitableparindent is paragraph indent in table. + % @multitablecolmargin is horizontal space to be left between columns. + % @multitablelinespace is space to leave between table items, baseline + % to baseline. + % 0pt means it depends on current normal line spacing. + % + \newskip\multitableparskip + \newskip\multitableparindent + \newdimen\multitablecolspace + \newskip\multitablelinespace + \multitableparskip=0pt + \multitableparindent=6pt + \multitablecolspace=12pt + \multitablelinespace=0pt + + % Macros used to set up halign preamble: + % + \let\endsetuptable\relax + \def\xendsetuptable{\endsetuptable} + \let\columnfractions\relax + \def\xcolumnfractions{\columnfractions} + \newif\ifsetpercent + + % #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 + \else + \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 + \go + } + + % This used to have \hskip1sp. But then the space in a template line is + % not enough. That is bad. So let's go back to just & until we + % encounter the problem it was intended to solve again. + % --karl, nathan@acm.org, 20apr99. + \def\tab{&} + + % @multitable ... @end multitable definitions: + % + \def\multitable{\parsearg\dotable} + \def\dotable#1{\bgroup + \vskip\parskip + \let\item\crcr + \tolerance=9500 + \hbadness=9500 + \setmultitablespacing + \parskip=\multitableparskip + \parindent=\multitableparindent + \overfullrule=0pt + \global\colcount=0 + \def\Emultitable{\global\setpercentfalse\cr\egroup\egroup}% + % + % To parse everything between @multitable and @item: + \setuptable#1 \endsetuptable + % + % \everycr will reset column counter, \colcount, at the end of + % each line. Every column entry will cause \colcount to advance by one. + % The table preamble + % looks at the current \colcount to find the correct column width. + \everycr{\noalign{% + % + % \filbreak%% keeps underfull box messages off when table breaks over pages. + % Maybe so, but it also creates really weird page breaks when the table + % breaks over pages. Wouldn't \vfil be better? Wait until the problem + % manifests itself, so it can be fixed for real --karl. + \global\colcount=0\relax}}% + % + % This preamble sets up a generic column definition, which will + % be used as many times as user calls for columns. + % \vtop will set a single line and will also let text wrap and + % continue for many paragraphs if desired. + \halign\bgroup&\global\advance\colcount by 1\relax + \multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname + % + % 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 + % The first column will be indented with the surrounding text. + \advance\hsize by\leftskip + \else + \ifsetpercent \else + % If user has not set preamble in terms of percent of \hsize + % we will advance \hsize by \multitablecolspace. + \advance\hsize by \multitablecolspace + \fi + % In either case we will make \leftskip=\multitablecolspace: + \leftskip=\multitablecolspace + \fi + % Ignoring space at the beginning and end avoids an occasional spurious + % blank line, when TeX decides to break the line at the space before the + % box from the multistrut, so the strut ends up on a line by itself. + % For example: + % @multitable @columnfractions .11 .89 + % @item @code{#} + % @tab Legal holiday which is valid in major parts of the whole country. + % Is automatically provided with highlighting sequences respectively marking + % characters. + \noindent\ignorespaces##\unskip\multistrut}\cr + } + + \def\setmultitablespacing{% test to see if user has set \multitablelinespace. + % If so, do nothing. If not, give it an appropriate dimension based on + % current baselineskip. + \ifdim\multitablelinespace=0pt + \setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip + \global\advance\multitablelinespace by-\ht0 + %% strut to put in table in case some entry doesn't have descenders, + %% to keep lines equally spaced + \let\multistrut = \strut + \else + %% FIXME: what is \box0 supposed to be? + \gdef\multistrut{\vrule height\multitablelinespace depth\dp0 + width0pt\relax} \fi + %% Test to see if parskip is larger than space between lines of + %% table. If not, do nothing. + %% If so, set to same dimension as multitablelinespace. + \ifdim\multitableparskip>\multitablelinespace + \global\multitableparskip=\multitablelinespace + \global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller + %% than skip between lines in the table. + \fi% + \ifdim\multitableparskip=0pt + \global\multitableparskip=\multitablelinespace + \global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller + %% than skip between lines in the table. + \fi} + + + \message{conditionals,} + % Prevent errors for section commands. + % Used in @ignore and in failing conditionals. + \def\ignoresections{% + \let\chapter=\relax + \let\unnumbered=\relax + \let\top=\relax + \let\unnumberedsec=\relax + \let\unnumberedsection=\relax + \let\unnumberedsubsec=\relax + \let\unnumberedsubsection=\relax + \let\unnumberedsubsubsec=\relax + \let\unnumberedsubsubsection=\relax + \let\section=\relax + \let\subsec=\relax + \let\subsubsec=\relax + \let\subsection=\relax + \let\subsubsection=\relax + \let\appendix=\relax + \let\appendixsec=\relax + \let\appendixsection=\relax + \let\appendixsubsec=\relax + \let\appendixsubsection=\relax + \let\appendixsubsubsec=\relax + \let\appendixsubsubsection=\relax + \let\contents=\relax + \let\smallbook=\relax + \let\titlepage=\relax + } + + % Used in nested conditionals, where we have to parse the Texinfo source + % and so want to turn off most commands, in case they are used + % incorrectly. + % + \def\ignoremorecommands{% + \let\defcodeindex = \relax + \let\defcv = \relax + \let\deffn = \relax + \let\deffnx = \relax + \let\defindex = \relax + \let\defivar = \relax + \let\defmac = \relax + \let\defmethod = \relax + \let\defop = \relax + \let\defopt = \relax + \let\defspec = \relax + \let\deftp = \relax + \let\deftypefn = \relax + \let\deftypefun = \relax + \let\deftypeivar = \relax + \let\deftypeop = \relax + \let\deftypevar = \relax + \let\deftypevr = \relax + \let\defun = \relax + \let\defvar = \relax + \let\defvr = \relax + \let\ref = \relax + \let\xref = \relax + \let\printindex = \relax + \let\pxref = \relax + \let\settitle = \relax + \let\setchapternewpage = \relax + \let\setchapterstyle = \relax + \let\everyheading = \relax + \let\evenheading = \relax + \let\oddheading = \relax + \let\everyfooting = \relax + \let\evenfooting = \relax + \let\oddfooting = \relax + \let\headings = \relax + \let\include = \relax + \let\lowersections = \relax + \let\down = \relax + \let\raisesections = \relax + \let\up = \relax + \let\set = \relax + \let\clear = \relax + \let\item = \relax + } + + % Ignore @ignore ... @end ignore. + % + \def\ignore{\doignore{ignore}} + + % Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text. + % + \def\ifinfo{\doignore{ifinfo}} + \def\ifhtml{\doignore{ifhtml}} + \def\ifnottex{\doignore{ifnottex}} + \def\html{\doignore{html}} + \def\menu{\doignore{menu}} + \def\direntry{\doignore{direntry}} + + % @dircategory CATEGORY -- specify a category of the dir file + % which this file should belong to. Ignore this in TeX. + \let\dircategory = \comment + + % Ignore text until a line `@end #1'. + % + \def\doignore#1{\begingroup + % Don't complain about control sequences we have declared \outer. + \ignoresections + % + % Define a command to swallow text until we reach `@end #1'. + % This @ is a catcode 12 token (that is the normal catcode of @ in + % this texinfo.tex file). We change the catcode of @ below to match. + \long\def\doignoretext##1@end #1{\enddoignore}% + % + % Make sure that spaces turn into tokens that match what \doignoretext wants. + \catcode32 = 10 + % + % Ignore braces, too, so mismatched braces don't cause trouble. + \catcode`\{ = 9 + \catcode`\} = 9 + % + % We must not have @c interpreted as a control sequence. + \catcode`\@ = 12 + % + % Make the letter c a comment character so that the rest of the line + % will be ignored. This way, the document can have (for example) + % @c @end ifinfo + % and the @end ifinfo will be properly ignored. + % (We've just changed @ to catcode 12.) + \catcode`\c = 14 + % + % And now expand that command. + \doignoretext + } + + % What we do to finish off ignored text. + % + \def\enddoignore{\endgroup\ignorespaces}% + + \newif\ifwarnedobs\warnedobsfalse + \def\obstexwarn{% + \ifwarnedobs\relax\else + % We need to warn folks that they may have trouble with TeX 3.0. + % This uses \immediate\write16 rather than \message to get newlines. + \immediate\write16{} + \immediate\write16{WARNING: for users of Unix TeX 3.0!} + \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).} + \immediate\write16{If you are running another version of TeX, relax.} + \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.} + \immediate\write16{ Then upgrade your TeX installation if you can.} + \immediate\write16{ (See ftp://ftp.gnu.org/pub/gnu/TeX.README.)} + \immediate\write16{If you are stuck with version 3.0, run the} + \immediate\write16{ script ``tex3patch'' from the Texinfo distribution} + \immediate\write16{ to use a workaround.} + \immediate\write16{} + \global\warnedobstrue + \fi + } + + % **In TeX 3.0, setting text in \nullfont hangs tex. For a + % workaround (which requires the file ``dummy.tfm'' to be installed), + % uncomment the following line: + %%%%%\font\nullfont=dummy\let\obstexwarn=\relax + + % Ignore text, except that we keep track of conditional commands for + % purposes of nesting, up to an `@end #1' command. + % + \def\nestedignore#1{% + \obstexwarn + % We must actually expand the ignored text to look for the @end + % command, so that nested ignore constructs work. Thus, we put the + % text into a \vbox and then do nothing with the result. To minimize + % the change of memory overflow, we follow the approach outlined on + % page 401 of the TeXbook: make the current font be a dummy font. + % + \setbox0 = \vbox\bgroup + % Don't complain about control sequences we have declared \outer. + \ignoresections + % + % Define `@end #1' to end the box, which will in turn undefine the + % @end command again. + \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}% + % + % We are going to be parsing Texinfo commands. Most cause no + % trouble when they are used incorrectly, but some commands do + % complicated argument parsing or otherwise get confused, so we + % undefine them. + % + % We can't do anything about stray @-signs, unfortunately; + % they'll produce `undefined control sequence' errors. + \ignoremorecommands + % + % Set the current font to be \nullfont, a TeX primitive, and define + % all the font commands to also use \nullfont. We don't use + % dummy.tfm, as suggested in the TeXbook, because not all sites + % might have that installed. Therefore, math mode will still + % produce output, but that should be an extremely small amount of + % stuff compared to the main input. + % + \nullfont + \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont + \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont + \let\tensf=\nullfont + % Similarly for index fonts (mostly for their use in smallexample). + \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont + \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont + \let\smallsf=\nullfont + % + % Don't complain when characters are missing from the fonts. + \tracinglostchars = 0 + % + % Don't bother to do space factor calculations. + \frenchspacing + % + % Don't report underfull hboxes. + \hbadness = 10000 + % + % Do minimal line-breaking. + \pretolerance = 10000 + % + % Do not execute instructions in @tex + \def\tex{\doignore{tex}}% + % Do not execute macro definitions. + % `c' is a comment character, so the word `macro' will get cut off. + \def\macro{\doignore{ma}}% + } + + % @set VAR sets the variable VAR to an empty value. + % @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. + % + % Since we want to separate VAR from REST-OF-LINE (which might be + % empty), we can't just use \parsearg; we have to insert a space of our + % own to delimit the rest of the line, and then take it out again if we + % didn't need it. Make sure the catcode of space is correct to avoid + % losing inside @example, for instance. + % + \def\set{\begingroup\catcode` =10 + \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. + \parsearg\setxxx} + \def\setxxx#1{\setyyy#1 \endsetyyy} + \def\setyyy#1 #2\endsetyyy{% + \def\temp{#2}% + \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty + \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted. + \fi + \endgroup + } + % Can't use \xdef to pre-expand #2 and save some time, since \temp or + % \next or other control sequences that we've defined might get us into + % an infinite loop. Consider `@set foo @cite{bar}'. + \def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}} + + % @clear VAR clears (i.e., unsets) the variable VAR. + % + \def\clear{\parsearg\clearxxx} + \def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax} + + % @value{foo} gets the text saved in variable foo. + { + \catcode`\_ = \active + % + % We might end up with active _ or - characters in the argument if + % we're called from @code, as @code{@value{foo-bar_}}. So \let any + % such active characters to their normal equivalents. + \gdef\value{\begingroup + \catcode`\-=12 \catcode`\_=12 + \indexbreaks \let_\normalunderscore + \valuexxx} + } + \def\valuexxx#1{\expandablevalue{#1}\endgroup} + + % We have this subroutine so that we can handle at least some @value's + % properly in indexes (we \let\value to this in \indexdummies). Ones + % whose names contain - or _ still won't work, but we can't do anything + % about that. The command has to be fully expandable, since the result + % winds up in the index file. This means that if the variable's value + % contains other Texinfo commands, it's almost certain it will fail + % (although perhaps we could fix that with sufficient work to do a + % one-level expansion on the result, instead of complete). + % + \def\expandablevalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + {[No value for ``#1'']}% + \else + \csname SET#1\endcsname + \fi + } + + % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined + % with @set. + % + \def\ifset{\parsearg\ifsetxxx} + \def\ifsetxxx #1{% + \expandafter\ifx\csname SET#1\endcsname\relax + \expandafter\ifsetfail + \else + \expandafter\ifsetsucceed + \fi + } + \def\ifsetsucceed{\conditionalsucceed{ifset}} + \def\ifsetfail{\nestedignore{ifset}} + \defineunmatchedend{ifset} + + % @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been + % defined with @set, or has been undefined with @clear. + % + \def\ifclear{\parsearg\ifclearxxx} + \def\ifclearxxx #1{% + \expandafter\ifx\csname SET#1\endcsname\relax + \expandafter\ifclearsucceed + \else + \expandafter\ifclearfail + \fi + } + \def\ifclearsucceed{\conditionalsucceed{ifclear}} + \def\ifclearfail{\nestedignore{ifclear}} + \defineunmatchedend{ifclear} + + % @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text + % following, through the first @end iftex (etc.). Make `@end iftex' + % (etc.) valid only after an @iftex. + % + \def\iftex{\conditionalsucceed{iftex}} + \def\ifnothtml{\conditionalsucceed{ifnothtml}} + \def\ifnotinfo{\conditionalsucceed{ifnotinfo}} + \defineunmatchedend{iftex} + \defineunmatchedend{ifnothtml} + \defineunmatchedend{ifnotinfo} + + % We can't just want to start a group at @iftex (for example) and end it + % at @end iftex, since then @set commands inside the conditional have no + % effect (they'd get reverted at the end of the group). So we must + % define \Eiftex to redefine itself to be its previous value. (We can't + % just define it to fail again with an ``unmatched end'' error, since + % the @ifset might be nested.) + % + \def\conditionalsucceed#1{% + \edef\temp{% + % Remember the current value of \E#1. + \let\nece{prevE#1} = \nece{E#1}% + % + % At the `@end #1', redefine \E#1 to be its previous value. + \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}% + }% + \temp + } + + % We need to expand lots of \csname's, but we don't want to expand the + % control sequences after we've constructed them. + % + \def\nece#1{\expandafter\noexpand\csname#1\endcsname} + + % @defininfoenclose. + \let\definfoenclose=\comment + + + \message{indexing,} + % Index generation facilities + + % Define \newwrite to be identical to plain tex's \newwrite + % except not \outer, so it can be used within \newindex. + {\catcode`\@=11 + \gdef\newwrite{\alloc@7\write\chardef\sixt@@n}} + + % \newindex {foo} defines an index named foo. + % It automatically defines \fooindex such that + % \fooindex ...rest of line... puts an entry in the index foo. + % It also defines \fooindfile to be the number of the output channel for + % the file that accumulates this index. The file's extension is foo. + % The name of an index should be no more than 2 characters long + % for the sake of vms. + % + \def\newindex#1{% + \iflinks + \expandafter\newwrite \csname#1indfile\endcsname + \openout \csname#1indfile\endcsname \jobname.#1 % Open the file + \fi + \expandafter\xdef\csname#1index\endcsname{% % Define @#1index + \noexpand\doindex{#1}} + } + + % @defindex foo == \newindex{foo} + % + \def\defindex{\parsearg\newindex} + + % Define @defcodeindex, like @defindex except put all entries in @code. + % + \def\defcodeindex{\parsearg\newcodeindex} + % + \def\newcodeindex#1{% + \iflinks + \expandafter\newwrite \csname#1indfile\endcsname + \openout \csname#1indfile\endcsname \jobname.#1 + \fi + \expandafter\xdef\csname#1index\endcsname{% + \noexpand\docodeindex{#1}}% + } + + + % @synindex foo bar makes index foo feed into index bar. + % Do this instead of @defindex foo if you don't want it as a separate index. + % + % @syncodeindex foo bar similar, but put all entries made for index foo + % inside @code. + % + \def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} + \def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} + + % #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), + % #3 the target index (bar). + \def\dosynindex#1#2#3{% + % Only do \closeout if we haven't already done it, else we'll end up + % closing the target index. + \expandafter \ifx\csname donesynindex#2\endcsname \undefined + % The \closeout helps reduce unnecessary open files; the limit on the + % Acorn RISC OS is a mere 16 files. + \expandafter\closeout\csname#2indfile\endcsname + \expandafter\let\csname\donesynindex#2\endcsname = 1 + \fi + % redefine \fooindfile: + \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname + \expandafter\let\csname#2indfile\endcsname=\temp + % redefine \fooindex: + \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% + } + + % Define \doindex, the driver for all \fooindex macros. + % Argument #1 is generated by the calling \fooindex macro, + % and it is "foo", the name of the index. + + % \doindex just uses \parsearg; it calls \doind for the actual work. + % This is because \doind is more useful to call from other macros. + + % There is also \dosubind {index}{topic}{subtopic} + % which makes an entry in a two-level index such as the operation index. + + \def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} + \def\singleindexer #1{\doind{\indexname}{#1}} + + % like the previous two, but they put @code around the argument. + \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} + \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} + + \def\indexdummies{% + \def\ { }% + % Take care of the plain tex accent commands. + \def\"{\realbackslash "}% + \def\`{\realbackslash `}% + \def\'{\realbackslash '}% + \def\^{\realbackslash ^}% + \def\~{\realbackslash ~}% + \def\={\realbackslash =}% + \def\b{\realbackslash b}% + \def\c{\realbackslash c}% + \def\d{\realbackslash d}% + \def\u{\realbackslash u}% + \def\v{\realbackslash v}% + \def\H{\realbackslash H}% + % Take care of the plain tex special European modified letters. + \def\oe{\realbackslash oe}% + \def\ae{\realbackslash ae}% + \def\aa{\realbackslash aa}% + \def\OE{\realbackslash OE}% + \def\AE{\realbackslash AE}% + \def\AA{\realbackslash AA}% + \def\o{\realbackslash o}% + \def\O{\realbackslash O}% + \def\l{\realbackslash l}% + \def\L{\realbackslash L}% + \def\ss{\realbackslash ss}% + % Take care of texinfo commands likely to appear in an index entry. + % (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. + % 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 }% + %\def\rm{\realbackslash rm }% + \def\sl{\realbackslash sl }% + \def\sf{\realbackslash sf}% + \def\tt{\realbackslash tt}% + \def\gtr{\realbackslash gtr}% + \def\less{\realbackslash less}% + \def\hat{\realbackslash hat}% + \def\TeX{\realbackslash TeX}% + \def\dots{\realbackslash dots }% + \def\result{\realbackslash result}% + \def\equiv{\realbackslash equiv}% + \def\expansion{\realbackslash expansion}% + \def\print{\realbackslash print}% + \def\error{\realbackslash error}% + \def\point{\realbackslash point}% + \def\copyright{\realbackslash copyright}% + \def\tclose##1{\realbackslash tclose {##1}}% + \def\code##1{\realbackslash code {##1}}% + \def\uref##1{\realbackslash uref {##1}}% + \def\url##1{\realbackslash url {##1}}% + \def\env##1{\realbackslash env {##1}}% + \def\command##1{\realbackslash command {##1}}% + \def\option##1{\realbackslash option {##1}}% + \def\dotless##1{\realbackslash dotless {##1}}% + \def\samp##1{\realbackslash samp {##1}}% + \def\,##1{\realbackslash ,{##1}}% + \def\t##1{\realbackslash t {##1}}% + \def\r##1{\realbackslash r {##1}}% + \def\i##1{\realbackslash i {##1}}% + \def\b##1{\realbackslash b {##1}}% + \def\sc##1{\realbackslash sc {##1}}% + \def\cite##1{\realbackslash cite {##1}}% + \def\key##1{\realbackslash key {##1}}% + \def\file##1{\realbackslash file {##1}}% + \def\var##1{\realbackslash var {##1}}% + \def\kbd##1{\realbackslash kbd {##1}}% + \def\dfn##1{\realbackslash dfn {##1}}% + \def\emph##1{\realbackslash emph {##1}}% + \def\acronym##1{\realbackslash acronym {##1}}% + % + % Handle some cases of @value -- where the variable name does not + % contain - or _, and the value does not contain any + % (non-fully-expandable) commands. + \let\value = \expandablevalue + % + \unsepspaces + % Turn off macro expansion + \turnoffmacros + } + + % If an index command is used in an @example environment, any spaces + % therein should become regular spaces in the raw index file, not the + % expansion of \tie (\\leavevmode \penalty \@M \ ). + {\obeyspaces + \gdef\unsepspaces{\obeyspaces\let =\space}} + + % \indexnofonts no-ops all font-change commands. + % This is used when outputting the strings to sort the index by. + \def\indexdummyfont#1{#1} + \def\indexdummytex{TeX} + \def\indexdummydots{...} + + \def\indexnofonts{% + % Just ignore accents. + \let\,=\indexdummyfont + \let\"=\indexdummyfont + \let\`=\indexdummyfont + \let\'=\indexdummyfont + \let\^=\indexdummyfont + \let\~=\indexdummyfont + \let\==\indexdummyfont + \let\b=\indexdummyfont + \let\c=\indexdummyfont + \let\d=\indexdummyfont + \let\u=\indexdummyfont + \let\v=\indexdummyfont + \let\H=\indexdummyfont + \let\dotless=\indexdummyfont + % Take care of the plain tex special European modified letters. + \def\oe{oe}% + \def\ae{ae}% + \def\aa{aa}% + \def\OE{OE}% + \def\AE{AE}% + \def\AA{AA}% + \def\o{o}% + \def\O{O}% + \def\l{l}% + \def\L{L}% + \def\ss{ss}% + \let\w=\indexdummyfont + \let\t=\indexdummyfont + \let\r=\indexdummyfont + \let\i=\indexdummyfont + \let\b=\indexdummyfont + \let\emph=\indexdummyfont + \let\strong=\indexdummyfont + \let\cite=\indexdummyfont + \let\sc=\indexdummyfont + %Don't no-op \tt, since it isn't a user-level command + % and is used in the definitions of the active chars like <, >, |... + %\let\tt=\indexdummyfont + \let\tclose=\indexdummyfont + \let\code=\indexdummyfont + \let\url=\indexdummyfont + \let\uref=\indexdummyfont + \let\env=\indexdummyfont + \let\acronym=\indexdummyfont + \let\command=\indexdummyfont + \let\option=\indexdummyfont + \let\file=\indexdummyfont + \let\samp=\indexdummyfont + \let\kbd=\indexdummyfont + \let\key=\indexdummyfont + \let\var=\indexdummyfont + \let\TeX=\indexdummytex + \let\dots=\indexdummydots + \def\@{@}% + } + + % To define \realbackslash, we must make \ not be an escape. + % We must first make another character (@) an escape + % so we do not become unable to do a definition. + + {\catcode`\@=0 \catcode`\\=\other + @gdef@realbackslash{\}} + + \let\indexbackslash=0 %overridden during \printindex. + \let\SETmarginindex=\relax % put index entries in margin (undocumented)? + + % For \ifx comparisons. + \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 + \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}% + \fi + {% + \count255=\lastpenalty + {% + \indexdummies % Must do this here, since \bf, etc expand at this stage + \escapechar=`\\ + {% + \let\folio = 0% We will expand all macros now EXCEPT \folio. + \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now + % so it will be output as is; and it will print as backslash. + % + \def\thirdarg{#3}% + % + % If third arg is present, precede it with space in sort key. + \ifx\thirdarg\emptymacro + \let\subentry = \empty + \else + \def\subentry{ #3}% + \fi + % + % First process the index entry with all font commands turned + % off to get the string to sort by. + {\indexnofonts \xdef\indexsorttmp{#2\subentry}}% + % + % Now the real index entry with the fonts. + \toks0 = {#2}% + % + % If the third (subentry) arg is present, add it to the index + % line to write. + \ifx\thirdarg\emptymacro \else + \toks0 = \expandafter{\the\toks0{#3}}% + \fi + % + % Set up the complete index entry, with both the sort key and + % the original text, including any font commands. We write + % three arguments to \entry to the .?? file (four in the + % subentry case), texindex reduces to two when writing the .??s + % sorted result. + \edef\temp{% + \write\csname#1indfile\endcsname{% + \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}% + }% + % + % If a skip is the last thing on the list now, preserve it + % by backing up by \lastskip, doing the \write, then inserting + % the skip again. Otherwise, the whatsit generated by the + % \write will make \lastskip zero. The result is that sequences + % like this: + % @end defun + % @tindex whatever + % @defun ... + % 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 + \ifdim\lastskip = 0pt \else \nobreak\vskip-\lastskip \fi + \fi + % + \temp % do the write + % + % + \ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi + \fi + }% + }% + \penalty\count255 + }% + } + + % The index entry written in the file actually looks like + % \entry {sortstring}{page}{topic} + % or + % \entry {sortstring}{page}{topic}{subtopic} + % The texindex program reads in these files and writes files + % containing these kinds of lines: + % \initial {c} + % before the first topic whose initial is c + % \entry {topic}{pagelist} + % for a topic that is used without subtopics + % \primary {topic} + % for the beginning of a topic that is used with subtopics + % \secondary {subtopic}{pagelist} + % for each subtopic. + + % Define the user-accessible indexing commands + % @findex, @vindex, @kindex, @cindex. + + \def\findex {\fnindex} + \def\kindex {\kyindex} + \def\cindex {\cpindex} + \def\vindex {\vrindex} + \def\tindex {\tpindex} + \def\pindex {\pgindex} + + \def\cindexsub {\begingroup\obeylines\cindexsub} + {\obeylines % + \gdef\cindexsub "#1" #2^^M{\endgroup % + \dosubind{cp}{#2}{#1}}} + + % Define the macros used in formatting output of the sorted index material. + + % @printindex causes a particular index (the ??s file) to get printed. + % It does not print any chapter heading (usually an @unnumbered). + % + \def\printindex{\parsearg\doprintindex} + \def\doprintindex#1{\begingroup + \dobreak \chapheadingskip{10000}% + % + \smallfonts \rm + \tolerance = 9500 + \indexbreaks + % + % See if the index file exists and is nonempty. + % Change catcode of @ here so that if the index file contains + % \initial {@} + % as its first line, TeX doesn't complain about mismatched braces + % (because it thinks @} is a control sequence). + \catcode`\@ = 11 + \openin 1 \jobname.#1s + \ifeof 1 + % \enddoublecolumns gets confused if there is no text in the index, + % 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. + \putwordIndexNonexistent + \else + % + % If the index file exists but is empty, then \openin leaves \ifeof + % false. We have to make TeX try to read something from the file, so + % it can discover if there is anything in it. + \read 1 to \temp + \ifeof 1 + \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 + % to make right now. + \def\indexbackslash{\rawbackslashxx}% + \catcode`\\ = 0 + \escapechar = `\\ + \begindoublecolumns + \input \jobname.#1s + \enddoublecolumns + \fi + \fi + \closein 1 + \endgroup} + + % These macros are used by the sorted index file itself. + % Change them to control the appearance of the index. + + \def\initial#1{{% + % Some minor font changes for the special characters. + \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt + % + % 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 + % + % Typeset the initial. Making this add up to a whole number of + % 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}% + \vskip .33\baselineskip plus .1\baselineskip + % + % Do our best not to break after the initial. + \nobreak + }} + + % This typesets a paragraph consisting of #1, dot leaders, and then #2 + % flush to the right margin. It is used for index and table of contents + % entries. The paragraph is indented by \leftskip. + % + \def\entry#1#2{\begingroup + % + % Start a new paragraph if necessary, so our assignments below can't + % affect previous text. + \par + % + % Do not fill out the last line with white space. + \parfillskip = 0in + % + % No extra space above this paragraph. + \parskip = 0in + % + % Do not prefer a separate line ending with a hyphen to fewer lines. + \finalhyphendemerits = 0 + % + % \hangindent is only relevant when the entry text and page number + % don't both fit on one line. In that case, bob suggests starting the + % dots pretty far over on the line. Unfortunately, a large + % indentation looks wrong when the entry text itself is broken across + % lines. So we use a small indentation and put up with long leaders. + % + % \hangafter is reset to 1 (which is the value we want) at the start + % of each paragraph, so we need not do anything with that. + \hangindent = 2em + % + % When the entry text needs to be broken, just fill out the first line + % with blank space. + \rightskip = 0pt plus1fil + % + % A bit of stretch before each entry for the benefit of balancing columns. + \vskip 0pt plus1pt + % + % Start a ``paragraph'' for the index entry so the line breaking + % parameters we've set above will have an effect. + \noindent + % + % Insert the text of the index entry. TeX will do line-breaking on it. + #1% + % The following is kludged to not output a line of dots in the index if + % there are no page numbers. The next person who breaks this will be + % cursed by a Unix daemon. + \def\tempa{{\rm }}% + \def\tempb{#2}% + \edef\tempc{\tempa}% + \edef\tempd{\tempb}% + \ifx\tempc\tempd\ \else% + % + % If we must, put the page number on a line of its own, and fill out + % this line with blank space. (The \hfil is overwhelmed with the + % fill leaders glue in \indexdotfill if the page number does fit.) + \hfil\penalty50 + \null\nobreak\indexdotfill % Have leaders before the page number. + % + % The `\ ' here is removed by the implicit \unskip that TeX does as + % part of (the primitive) \par. Without it, a spurious underfull + % \hbox ensues. + \ifpdf + \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. + \else + \ #2% The page number ends the paragraph. + \fi + \fi% + \par + \endgroup} + + % Like \dotfill except takes at least 1 em. + \def\indexdotfill{\cleaders + \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill} + + \def\primary #1{\line{#1\hfil}} + + \newskip\secondaryindent \secondaryindent=0.5cm + \def\secondary#1#2{{% + \parfillskip=0in + \parskip=0in + \hangindent=1in + \hangafter=1 + \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill + \ifpdf + \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. + \else + #2 + \fi + \par + }} + + % Define two-column mode, which we use to typeset indexes. + % Adapted from the TeXbook, page 416, which is to say, + % the manmac.tex format used to print the TeXbook itself. + \catcode`\@=11 + + \newbox\partialpage + \newdimen\doublecolumnhsize + + \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns + % Grab any single-column material above us. + \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 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 + % + \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}% + % + % Change the page size parameters. We could do this once outside this + % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 + % format, but then we repeat the same computation. Repeating a couple + % of assignments once per index is clearly meaningless for the + % execution time, so we may as well do it in one place. + % + % First we halve the line length, less a little for the gutter between + % the columns. We compute the gutter based on the line length, so it + % changes automatically with the paper format. The magic constant + % below is chosen so that the gutter has the same value (well, +-<1pt) + % as it did when we hard-coded it. + % + % We put the result in a separate register, \doublecolumhsize, so we + % can restore it in \pagesofar, after \hsize itself has (potentially) + % been clobbered. + % + \doublecolumnhsize = \hsize + \advance\doublecolumnhsize by -.04154\hsize + \divide\doublecolumnhsize by 2 + \hsize = \doublecolumnhsize + % + % Double the \vsize as well. (We don't need a separate register here, + % since nobody clobbers \vsize.) + \vsize = 2\vsize + } + + % 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 + % (undoubled) page height minus any material left over from the + % previous page. + \dimen@ = \vsize + \divide\dimen@ by 2 + \advance\dimen@ by -\ht\partialpage + % + % box0 will be the left-hand column, box2 the right. + \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ + \onepageout\pagesofar + \unvbox255 + \penalty\outputpenalty + } + % + % Re-output the contents of the output page -- any previous material, + % followed by the two boxes we just split, in box0 and box2. + \def\pagesofar{% + \unvbox\partialpage + % + \hsize = \doublecolumnhsize + \wd0=\hsize \wd2=\hsize + \hbox to\pagewidth{\box0\hfil\box2}% + } + % + % All done with double columns. + \def\enddoublecolumns{% + \output = {% + % Split the last of the double-column material. Leave it on the + % current page, no automatic page break. + \balancecolumns + % + % If we end up splitting too much material for the current page, + % though, there will be another page break right after this \output + % invocation ends. Having called \balancecolumns once, we do not + % want to call it again. Therefore, reset \output to its normal + % definition right away. (We hope \balancecolumns will never be + % called on to balance too much material, but if it is, this makes + % the output somewhat more palatable.) + \global\output = {\onepageout{\pagecontents\PAGE}}% + }% + \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 + } + % + % Called at the end of the double column material. + \def\balancecolumns{% + \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. + \dimen@ = \ht0 + \advance\dimen@ by \topskip + \advance\dimen@ by-\baselineskip + \divide\dimen@ by 2 % target to split to + %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}% + \splittopskip = \topskip + % Loop until we get a decent breakpoint. + {% + \vbadness = 10000 + \loop + \global\setbox3 = \copy0 + \global\setbox1 = \vsplit3 to \dimen@ + \ifdim\ht3>\dimen@ + \global\advance\dimen@ by 1pt + \repeat + }% + %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}% + \setbox0=\vbox to\dimen@{\unvbox1}% + \setbox2=\vbox to\dimen@{\unvbox3}% + % + \pagesofar + } + \catcode`\@ = \other + + + \message{sectioning,} + % Chapters, sections, etc. + + \newcount\chapno + \newcount\secno \secno=0 + \newcount\subsecno \subsecno=0 + \newcount\subsubsecno \subsubsecno=0 + + % This counter is funny since it counts through charcodes of letters A, B, ... + \newcount\appendixno \appendixno = `\@ + % \def\appendixletter{\char\the\appendixno} + % We do the following for the sake of pdftex, which needs the actual + % letter in the expansion, not just typeset. + \def\appendixletter{% + \ifnum\appendixno=`A A% + \else\ifnum\appendixno=`B B% + \else\ifnum\appendixno=`C C% + \else\ifnum\appendixno=`D D% + \else\ifnum\appendixno=`E E% + \else\ifnum\appendixno=`F F% + \else\ifnum\appendixno=`G G% + \else\ifnum\appendixno=`H H% + \else\ifnum\appendixno=`I I% + \else\ifnum\appendixno=`J J% + \else\ifnum\appendixno=`K K% + \else\ifnum\appendixno=`L L% + \else\ifnum\appendixno=`M M% + \else\ifnum\appendixno=`N N% + \else\ifnum\appendixno=`O O% + \else\ifnum\appendixno=`P P% + \else\ifnum\appendixno=`Q Q% + \else\ifnum\appendixno=`R R% + \else\ifnum\appendixno=`S S% + \else\ifnum\appendixno=`T T% + \else\ifnum\appendixno=`U U% + \else\ifnum\appendixno=`V V% + \else\ifnum\appendixno=`W W% + \else\ifnum\appendixno=`X X% + \else\ifnum\appendixno=`Y Y% + \else\ifnum\appendixno=`Z Z% + % The \the is necessary, despite appearances, because \appendixletter is + % expanded while writing the .toc file. \char\appendixno is not + % expandable, thus it is written literally, thus all appendixes come out + % with the same letter (or @) in the toc without it. + \else\char\the\appendixno + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} + + % Each @chapter defines this as the name of the chapter. + % page headings and footings can use it. @section does likewise. + \def\thischapter{} + \def\thissection{} + + \newcount\absseclevel % used to calculate proper heading level + \newcount\secbase\secbase=0 % @raise/lowersections modify this count + + % @raisesections: treat @section as chapter, @subsection as section, etc. + \def\raisesections{\global\advance\secbase by -1} + \let\up=\raisesections % original BFox name + + % @lowersections: treat @chapter as section, @section as subsection, etc. + \def\lowersections{\global\advance\secbase by 1} + \let\down=\lowersections % original BFox name + + % Choose a numbered-heading macro + % #1 is heading level if unmodified by @raisesections or @lowersections + % #2 is text for heading + \def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 + \ifcase\absseclevel + \chapterzzz{#2} + \or + \seczzz{#2} + \or + \numberedsubseczzz{#2} + \or + \numberedsubsubseczzz{#2} + \else + \ifnum \absseclevel<0 + \chapterzzz{#2} + \else + \numberedsubsubseczzz{#2} + \fi + \fi + } + + % like \numhead, but chooses appendix heading levels + \def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 + \ifcase\absseclevel + \appendixzzz{#2} + \or + \appendixsectionzzz{#2} + \or + \appendixsubseczzz{#2} + \or + \appendixsubsubseczzz{#2} + \else + \ifnum \absseclevel<0 + \appendixzzz{#2} + \else + \appendixsubsubseczzz{#2} + \fi + \fi + } + + % like \numhead, but chooses numberless heading levels + \def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 + \ifcase\absseclevel + \unnumberedzzz{#2} + \or + \unnumberedseczzz{#2} + \or + \unnumberedsubseczzz{#2} + \or + \unnumberedsubsubseczzz{#2} + \else + \ifnum \absseclevel<0 + \unnumberedzzz{#2} + \else + \unnumberedsubsubseczzz{#2} + \fi + \fi + } + + % @chapter, @appendix, @unnumbered. + \def\thischaptername{No Chapter Title} + \outer\def\chapter{\parsearg\chapteryyy} + \def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz + \def\chapterzzz #1{% + \secno=0 \subsecno=0 \subsubsecno=0 + \global\advance \chapno by 1 \message{\putwordChapter\space \the\chapno}% + \chapmacro {#1}{\the\chapno}% + \gdef\thissection{#1}% + \gdef\thischaptername{#1}% + % We don't substitute the actual chapter name into \thischapter + % because we don't want its macros evaluated now. + \xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}% + \toks0 = {#1}% + \edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}% + {\the\chapno}}}% + \temp + \donoderef + \global\let\section = \numberedsec + \global\let\subsection = \numberedsubsec + \global\let\subsubsection = \numberedsubsubsec + } + + \outer\def\appendix{\parsearg\appendixyyy} + \def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz + \def\appendixzzz #1{% + \secno=0 \subsecno=0 \subsubsecno=0 + \global\advance \appendixno by 1 + \message{\putwordAppendix\space \appendixletter}% + \chapmacro {#1}{\putwordAppendix{} \appendixletter}% + \gdef\thissection{#1}% + \gdef\thischaptername{#1}% + \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% + \toks0 = {#1}% + \edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}% + {\putwordAppendix{} \appendixletter}}}% + \temp + \appendixnoderef + \global\let\section = \appendixsec + \global\let\subsection = \appendixsubsec + \global\let\subsubsection = \appendixsubsubsec + } + + % @centerchap is like @unnumbered, but the heading is centered. + \outer\def\centerchap{\parsearg\centerchapyyy} + \def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}} + + % @top is like @unnumbered. + \outer\def\top{\parsearg\unnumberedyyy} + + \outer\def\unnumbered{\parsearg\unnumberedyyy} + \def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz + \def\unnumberedzzz #1{% + \secno=0 \subsecno=0 \subsubsecno=0 + % + % This used to be simply \message{#1}, but TeX fully expands the + % argument to \message. Therefore, if #1 contained @-commands, TeX + % expanded them. For example, in `@unnumbered The @cite{Book}', TeX + % expanded @cite (which turns out to cause errors because \cite is meant + % to be executed, not expanded). + % + % Anyway, we don't want the fully-expanded definition of @cite to appear + % as a result of the \message, we just want `@cite' itself. We use + % \the to achieve this: TeX expands \the only once, + % simply yielding the contents of . (We also do this for + % the toc entries.) + \toks0 = {#1}\message{(\the\toks0)}% + % + \unnumbchapmacro {#1}% + \gdef\thischapter{#1}\gdef\thissection{#1}% + \toks0 = {#1}% + \edef\temp{\noexpand\writetocentry{\realbackslash unnumbchapentry{\the\toks0}}}% + \temp + \unnumbnoderef + \global\let\section = \unnumberedsec + \global\let\subsection = \unnumberedsubsec + \global\let\subsubsection = \unnumberedsubsubsec + } + + % Sections. + \outer\def\numberedsec{\parsearg\secyyy} + \def\secyyy #1{\numhead1{#1}} % normally calls seczzz + \def\seczzz #1{% + \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % + \gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}% + \toks0 = {#1}% + \edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}% + {\the\chapno}{\the\secno}}}% + \temp + \donoderef + \nobreak + } + + \outer\def\appendixsection{\parsearg\appendixsecyyy} + \outer\def\appendixsec{\parsearg\appendixsecyyy} + \def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz + \def\appendixsectionzzz #1{% + \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % + \gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}% + \toks0 = {#1}% + \edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}% + {\appendixletter}{\the\secno}}}% + \temp + \appendixnoderef + \nobreak + } + + \outer\def\unnumberedsec{\parsearg\unnumberedsecyyy} + \def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz + \def\unnumberedseczzz #1{% + \plainsecheading {#1}\gdef\thissection{#1}% + \toks0 = {#1}% + \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry{\the\toks0}}}% + \temp + \unnumbnoderef + \nobreak + } + + % Subsections. + \outer\def\numberedsubsec{\parsearg\numberedsubsecyyy} + \def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz + \def\numberedsubseczzz #1{% + \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % + \subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}% + \toks0 = {#1}% + \edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}% + {\the\chapno}{\the\secno}{\the\subsecno}}}% + \temp + \donoderef + \nobreak + } + + \outer\def\appendixsubsec{\parsearg\appendixsubsecyyy} + \def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz + \def\appendixsubseczzz #1{% + \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % + \subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}% + \toks0 = {#1}% + \edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}% + {\appendixletter}{\the\secno}{\the\subsecno}}}% + \temp + \appendixnoderef + \nobreak + } + + \outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy} + \def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz + \def\unnumberedsubseczzz #1{% + \plainsubsecheading {#1}\gdef\thissection{#1}% + \toks0 = {#1}% + \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry% + {\the\toks0}}}% + \temp + \unnumbnoderef + \nobreak + } + + % Subsubsections. + \outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy} + \def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz + \def\numberedsubsubseczzz #1{% + \gdef\thissection{#1}\global\advance \subsubsecno by 1 % + \subsubsecheading {#1} + {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}% + \toks0 = {#1}% + \edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}% + {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}% + \temp + \donoderef + \nobreak + } + + \outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy} + \def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz + \def\appendixsubsubseczzz #1{% + \gdef\thissection{#1}\global\advance \subsubsecno by 1 % + \subsubsecheading {#1} + {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}% + \toks0 = {#1}% + \edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}% + {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}% + \temp + \appendixnoderef + \nobreak + } + + \outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy} + \def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz + \def\unnumberedsubsubseczzz #1{% + \plainsubsubsecheading {#1}\gdef\thissection{#1}% + \toks0 = {#1}% + \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry% + {\the\toks0}}}% + \temp + \unnumbnoderef + \nobreak + } + + % These are variants which are not "outer", so they can appear in @ifinfo. + % Actually, they should now be obsolete; ordinary section commands should work. + \def\infotop{\parsearg\unnumberedzzz} + \def\infounnumbered{\parsearg\unnumberedzzz} + \def\infounnumberedsec{\parsearg\unnumberedseczzz} + \def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz} + \def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz} + + \def\infoappendix{\parsearg\appendixzzz} + \def\infoappendixsec{\parsearg\appendixseczzz} + \def\infoappendixsubsec{\parsearg\appendixsubseczzz} + \def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz} + + \def\infochapter{\parsearg\chapterzzz} + \def\infosection{\parsearg\sectionzzz} + \def\infosubsection{\parsearg\subsectionzzz} + \def\infosubsubsection{\parsearg\subsubsectionzzz} + + % These macros control what the section commands do, according + % to what kind of chapter we are in (ordinary, appendix, or unnumbered). + % Define them by default for a numbered chapter. + \global\let\section = \numberedsec + \global\let\subsection = \numberedsubsec + \global\let\subsubsection = \numberedsubsubsec + + % Define @majorheading, @heading and @subheading + + % NOTE on use of \vbox for chapter headings, section headings, and such: + % 1) We use \vbox rather than the earlier \line to permit + % overlong headings to fold. + % 2) \hyphenpenalty is set to 10000 because hyphenation in a + % heading is obnoxious; this forbids it. + % 3) Likewise, headings look best if no \parindent is used, and + % if justification is not attempted. Hence \raggedright. + + + \def\majorheading{\parsearg\majorheadingzzz} + \def\majorheadingzzz #1{% + {\advance\chapheadingskip by 10pt \chapbreak }% + {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt\raggedright + \rm #1\hfill}}\bigskip \par\penalty 200} + + \def\chapheading{\parsearg\chapheadingzzz} + \def\chapheadingzzz #1{\chapbreak % + {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt\raggedright + \rm #1\hfill}}\bigskip \par\penalty 200} + + % @heading, @subheading, @subsubheading. + \def\heading{\parsearg\plainsecheading} + \def\subheading{\parsearg\plainsubsecheading} + \def\subsubheading{\parsearg\plainsubsubsecheading} + + % These macros generate a chapter, section, etc. heading only + % (including whitespace, linebreaking, etc. around it), + % given all the information in convenient, parsed form. + + %%% Args are the skip and penalty (usually negative) + \def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} + + \def\setchapterstyle #1 {\csname CHAPF#1\endcsname} + + %%% Define plain chapter starts, and page on/off switching for it + % Parameter controlling skip before chapter headings (if needed) + + \newskip\chapheadingskip + + \def\chapbreak{\dobreak \chapheadingskip {-4000}} + \def\chappager{\par\vfill\supereject} + \def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi} + + \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} + + \def\CHAPPAGoff{% + \global\let\contentsalignmacro = \chappager + \global\let\pchapsepmacro=\chapbreak + \global\let\pagealignmacro=\chappager} + + \def\CHAPPAGon{% + \global\let\contentsalignmacro = \chappager + \global\let\pchapsepmacro=\chappager + \global\let\pagealignmacro=\chappager + \global\def\HEADINGSon{\HEADINGSsingle}} + + \def\CHAPPAGodd{ + \global\let\contentsalignmacro = \chapoddpage + \global\let\pchapsepmacro=\chapoddpage + \global\let\pagealignmacro=\chapoddpage + \global\def\HEADINGSon{\HEADINGSdouble}} + + \CHAPPAGon + + \def\CHAPFplain{ + \global\let\chapmacro=\chfplain + \global\let\unnumbchapmacro=\unnchfplain + \global\let\centerchapmacro=\centerchfplain} + + % Plain chapter opening. + % #1 is the text, #2 the chapter number or empty if unnumbered. + \def\chfplain#1#2{% + \pchapsepmacro + {% + \chapfonts \rm + \def\chapnum{#2}% + \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}% + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright + \hangindent = \wd0 \centerparametersmaybe + \unhbox0 #1\par}% + }% + \nobreak\bigskip % no page break after a chapter title + \nobreak + } + + % Plain opening for unnumbered. + \def\unnchfplain#1{\chfplain{#1}{}} + + % @centerchap -- centered and unnumbered. + \let\centerparametersmaybe = \relax + \def\centerchfplain#1{{% + \def\centerparametersmaybe{% + \advance\rightskip by 3\rightskip + \leftskip = \rightskip + \parfillskip = 0pt + }% + \chfplain{#1}{}% + }} + + \CHAPFplain % The default + + \def\unnchfopen #1{% + \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt\raggedright + \rm #1\hfill}}\bigskip \par\nobreak + } + + \def\chfopen #1#2{\chapoddpage {\chapfonts + \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% + \par\penalty 5000 % + } + + \def\centerchfopen #1{% + \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt + \hfill {\rm #1}\hfill}}\bigskip \par\nobreak + } + + \def\CHAPFopen{ + \global\let\chapmacro=\chfopen + \global\let\unnumbchapmacro=\unnchfopen + \global\let\centerchapmacro=\centerchfopen} + + + % Section titles. + \newskip\secheadingskip + \def\secheadingbreak{\dobreak \secheadingskip {-1000}} + \def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}} + \def\plainsecheading#1{\sectionheading{sec}{}{#1}} + + % Subsection titles. + \newskip \subsecheadingskip + \def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}} + \def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}} + \def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}} + + % Subsubsection titles. + \let\subsubsecheadingskip = \subsecheadingskip + \let\subsubsecheadingbreak = \subsecheadingbreak + \def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}} + \def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}} + + + % Print any size section title. + % + % #1 is the section type (sec/subsec/subsubsec), #2 is the section + % number (maybe empty), #3 the text. + \def\sectionheading#1#2#3{% + {% + \expandafter\advance\csname #1headingskip\endcsname by \parskip + \csname #1headingbreak\endcsname + }% + {% + % Switch to the right set of fonts. + \csname #1fonts\endcsname \rm + % + % Only insert the separating space if we have a section number. + \def\secnum{#2}% + \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}% + % + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright + \hangindent = \wd0 % zero if no section number + \unhbox0 #3}% + }% + \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak + } + + + \message{toc,} + % Table of contents. + \newwrite\tocfile + + % Write an entry to the toc file, opening it if necessary. + % Called from @chapter, etc. We supply {\folio} at the end of the + % argument, which will end up as the last argument to the \...entry macro. + % + % We open the .toc file here instead of at @setfilename or any other + % given time so that @contents can be put in the document anywhere. + % + \newif\iftocfileopened + \def\writetocentry#1{% + \iftocfileopened\else + \immediate\openout\tocfile = \jobname.toc + \global\tocfileopenedtrue + \fi + \iflinks \write\tocfile{#1{\folio}}\fi + } + + \newskip\contentsrightmargin \contentsrightmargin=1in + \newcount\savepageno + \newcount\lastnegativepageno \lastnegativepageno = -1 + + % 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 + % \contentsalignmacro in parallel with \pagealignmacro. + % From: Torbjorn Granlund + \contentsalignmacro + \immediate\closeout\tocfile + % + % Don't need to put `Contents' or `Short Contents' in the headline. + % It is abundantly clear what they are. + \unnumbchapmacro{#1}\def\thischapter{}% + \savepageno = \pageno + \begingroup % Set up to handle contents files properly. + \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11 + % We can't do this, because then an actual ^ in a section + % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97. + %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi + \raggedbottom % Worry more about breakpoints than the bottom. + \advance\hsize by -\contentsrightmargin % Don't use the full line length. + % + % Roman numerals for page numbers. + \ifnum \pageno>0 \pageno = \lastnegativepageno \fi + } + + + % Normal (long) toc. + \def\contents{% + \startcontents{\putwordTOC}% + \openin 1 \jobname.toc + \ifeof 1 \else + \closein 1 + \input \jobname.toc + \fi + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \pdfmakeoutlines + \endgroup + \lastnegativepageno = \pageno + \pageno = \savepageno + } + + % And just the chapters. + \def\summarycontents{% + \startcontents{\putwordShortTOC}% + % + \let\chapentry = \shortchapentry + \let\unnumbchapentry = \shortunnumberedentry + % We want a true roman here for the page numbers. + \secfonts + \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl + \rm + \hyphenpenalty = 10000 + \advance\baselineskip by 1pt % Open it up a little. + \def\secentry ##1##2##3##4{} + \def\unnumbsecentry ##1##2{} + \def\subsecentry ##1##2##3##4##5{} + \def\unnumbsubsecentry ##1##2{} + \def\subsubsecentry ##1##2##3##4##5##6{} + \def\unnumbsubsubsecentry ##1##2{} + \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 + } + \let\shortcontents = \summarycontents + + \ifpdf + \pdfcatalog{/PageMode /UseOutlines}% + \fi + + % These macros generate individual entries in the table of contents. + % The first argument is the chapter or section name. + % The last argument is the page number. + % The arguments in between are the chapter number, section number, ... + + % Chapter-level things, for both the long and short contents. + \def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}} + + % See comments in \dochapentry re vbox and related settings + \def\shortchapentry#1#2#3{% + \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}% + } + + % Typeset the label for a chapter or appendix for the short contents. + % The arg is, e.g. `Appendix A' for an appendix, or `3' for a chapter. + % We could simplify the code here by writing out an \appendixentry + % command in the toc file for appendices, instead of using \chapentry + % for both, but it doesn't seem worth it. + % + \newdimen\shortappendixwidth + % + \def\shortchaplabel#1{% + % Compute width of word "Appendix", may change with language. + \setbox0 = \hbox{\shortcontrm \putwordAppendix}% + \shortappendixwidth = \wd0 + % + % We typeset #1 in a box of constant width, regardless of the text of + % #1, so the chapter titles will come out aligned. + \setbox0 = \hbox{#1}% + \dimen0 = \ifdim\wd0 > \shortappendixwidth \shortappendixwidth \else 0pt \fi + % + % This space should be plenty, since a single number is .5em, and the + % widest letter (M) is 1em, at least in the Computer Modern fonts. + % (This space doesn't include the extra space that gets added after + % the label; that gets put in by \shortchapentry above.) + \advance\dimen0 by 1.1em + \hbox to \dimen0{#1\hfil}% + } + + \def\unnumbchapentry#1#2{\dochapentry{#1}{#2}} + \def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}} + + % Sections. + \def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} + \def\unnumbsecentry#1#2{\dosecentry{#1}{#2}} + + % Subsections. + \def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}} + \def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}} + + % And subsubsections. + \def\subsubsecentry#1#2#3#4#5#6{% + \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} + \def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}} + + % This parameter controls the indentation of the various levels. + \newdimen\tocindent \tocindent = 3pc + + % Now for the actual typesetting. In all these, #1 is the text and #2 is the + % page number. + % + % If the toc has to be broken over pages, we want it to be at chapters + % if at all possible; hence the \penalty. + \def\dochapentry#1#2{% + \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip + \begingroup + \chapentryfonts + \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \endgroup + \nobreak\vskip .25\baselineskip plus.1\baselineskip + } + + \def\dosecentry#1#2{\begingroup + \secentryfonts \leftskip=\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \endgroup} + + \def\dosubsecentry#1#2{\begingroup + \subsecentryfonts \leftskip=2\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \endgroup} + + \def\dosubsubsecentry#1#2{\begingroup + \subsubsecentryfonts \leftskip=3\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \endgroup} + + % Final typesetting of a toc entry; we use the same \entry macro as for + % the index entries, but we want to suppress hyphenation here. (We + % can't do that in the \entry macro, since index entries might consist + % of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.) + \def\tocentry#1#2{\begingroup + \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks + % Do not use \turnoffactive in these arguments. Since the toc is + % typeset in cmr, so characters such as _ would come out wrong; we + % have to do the usual translation tricks. + \entry{#1}{#2}% + \endgroup} + + % Space between chapter (or whatever) number and the title. + \def\labelspace{\hskip1em \relax} + + \def\dopageno#1{{\rm #1}} + \def\doshortpageno#1{{\rm #1}} + + \def\chapentryfonts{\secfonts \rm} + \def\secentryfonts{\textfonts} + \let\subsecentryfonts = \textfonts + \let\subsubsecentryfonts = \textfonts + + + \message{environments,} + % @foo ... @end foo. + + % Since these characters are used in examples, it should be an even number of + % \tt widths. Each \tt character is 1en, so two makes it 1em. + % Furthermore, these definitions must come after we define our fonts. + \newbox\dblarrowbox \newbox\longdblarrowbox + \newbox\pushcharbox \newbox\bullbox + \newbox\equivbox \newbox\errorbox + + %{\tentt + %\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil} + %\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil} + %\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil} + %\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil} + % Adapted from the manmac format (p.420 of TeXbook) + %\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex + % depth .1ex\hfil} + %} + + % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. + \def\point{$\star$} + \def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} + \def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} + \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} + \def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} + + % Adapted from the TeXbook's \boxit. + {\tentt \global\dimen0 = 3em}% Width of the box. + \dimen2 = .55pt % Thickness of rules + % The text. (`r' is open on the right, `e' somewhat less so on the left.) + \setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt} + + \global\setbox\errorbox=\hbox to \dimen0{\hfil + \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. + \advance\hsize by -2\dimen2 % Rules. + \vbox{ + \hrule height\dimen2 + \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. + \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. + \kern3pt\vrule width\dimen2}% Space to right. + \hrule height\dimen2} + \hfil} + + % The @error{} command. + \def\error{\leavevmode\lower.7ex\copy\errorbox} + + % @tex ... @end tex escapes into raw Tex temporarily. + % One exception: @ is still an escape character, so that @end tex works. + % But \@ or @@ will get a plain tex @ character. + + \def\tex{\begingroup + \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 + \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 + \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie + \catcode `\%=14 + \catcode 43=12 % plus + \catcode`\"=12 + \catcode`\==12 + \catcode`\|=12 + \catcode`\<=12 + \catcode`\>=12 + \escapechar=`\\ + % + \let\b=\ptexb + \let\bullet=\ptexbullet + \let\c=\ptexc + \let\,=\ptexcomma + \let\.=\ptexdot + \let\dots=\ptexdots + \let\equiv=\ptexequiv + \let\!=\ptexexclam + \let\i=\ptexi + \let\{=\ptexlbrace + \let\+=\tabalign + \let\}=\ptexrbrace + \let\*=\ptexstar + \let\t=\ptext + % + \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% + \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% + \def\@{@}% + \let\Etex=\endgroup} + + % Define @lisp ... @endlisp. + % @lisp does a \begingroup so it can rebind things, + % including the definition of @endlisp (which normally is erroneous). + + % Amount to narrow the margins by for @lisp. + \newskip\lispnarrowing \lispnarrowing=0.4in + + % This is the definition that ^^M gets inside @lisp, @example, and other + % such environments. \null is better than a space, since it doesn't + % have any width. + \def\lisppar{\null\endgraf} + + % Make each space character in the input produce a normal interword + % space in the output. Don't allow a line break at this space, as this + % is used only in environments like @example, where each line of input + % should produce a line of output anyway. + % + {\obeyspaces % + \gdef\sepspaces{\obeyspaces\let =\tie}} + + % Define \obeyedspace to be our active space, whatever it is. This is + % for use in \parsearg. + {\sepspaces% + \global\let\obeyedspace= } + + % This space is always present above and below environments. + \newskip\envskipamount \envskipamount = 0pt + + % Make spacing and below environment symmetrical. We use \parskip here + % to help in doing that, since in @example-like environments \parskip + % is reset to zero; thus the \afterenvbreak inserts no space -- but the + % start of the next paragraph will insert \parskip + % + \def\aboveenvbreak{{% + \ifnum\lastpenalty < 10000 + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip + \penalty-50 + \vskip\envskipamount + \fi + \fi + }} + + \let\afterenvbreak = \aboveenvbreak + + % \nonarrowing is a flag. If "set", @lisp etc don't narrow margins. + \let\nonarrowing=\relax + + % @cartouche ... @end cartouche: draw rectangle w/rounded corners around + % environment contents. + \font\circle=lcircle10 + \newdimen\circthick + \newdimen\cartouter\newdimen\cartinner + \newskip\normbskip\newskip\normpskip\newskip\normlskip + \circthick=\fontdimen8\circle + % + \def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth + \def\ctr{{\hskip 6pt\circle\char'010}} + \def\cbl{{\circle\char'012\hskip -6pt}} + \def\cbr{{\hskip 6pt\circle\char'011}} + \def\carttop{\hbox to \cartouter{\hskip\lskip + \ctl\leaders\hrule height\circthick\hfil\ctr + \hskip\rskip}} + \def\cartbot{\hbox to \cartouter{\hskip\lskip + \cbl\leaders\hrule height\circthick\hfil\cbr + \hskip\rskip}} + % + \newskip\lskip\newskip\rskip + + \long\def\cartouche{% + \begingroup + \lskip=\leftskip \rskip=\rightskip + \leftskip=0pt\rightskip=0pt %we want these *outside*. + \cartinner=\hsize \advance\cartinner by-\lskip + \advance\cartinner by-\rskip + \cartouter=\hsize + \advance\cartouter by 18.4pt % allow for 3pt kerns on either + % side, and for 6pt waste from + % each corner char, and rule thickness + \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip + % Flag to tell @lisp, etc., not to narrow margin. + \let\nonarrowing=\comment + \vbox\bgroup + \baselineskip=0pt\parskip=0pt\lineskip=0pt + \carttop + \hbox\bgroup + \hskip\lskip + \vrule\kern3pt + \vbox\bgroup + \hsize=\cartinner + \kern3pt + \begingroup + \baselineskip=\normbskip + \lineskip=\normlskip + \parskip=\normpskip + \vskip -\parskip + \def\Ecartouche{% + \endgroup + \kern3pt + \egroup + \kern3pt\vrule + \hskip\rskip + \egroup + \cartbot + \egroup + \endgroup + }} + + + % This macro is called at the beginning of all the @example variants, + % inside a group. + \def\nonfillstart{% + \aboveenvbreak + \inENV % This group ends at the end of the body + \hfuzz = 12pt % Don't be fussy + \sepspaces % Make spaces be word-separators rather than space tokens. + \singlespace + \let\par = \lisppar % don't ignore blank lines + \obeylines % each line of input is a line of output + \parskip = 0pt + \parindent = 0pt + \emergencystretch = 0pt % don't try to avoid overfull boxes + % @cartouche defines \nonarrowing to inhibit narrowing + % at next level down. + \ifx\nonarrowing\relax + \advance \leftskip by \lispnarrowing + \exdentamount=\lispnarrowing + \let\exdent=\nofillexdent + \let\nonarrowing=\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 + % inserted at the beginning of the next paragraph in the document, after + % the environment. + % + \def\nonfillfinish{\afterenvbreak\endgroup} + + % @lisp: indented, narrowed, typewriter font. + \def\lisp{\begingroup + \nonfillstart + \let\Elisp = \nonfillfinish + \tt + \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. + \gobble % eat return + } + + % @example: Same as @lisp. + \def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp} + + % @small... is usually equivalent to the non-small (@smallbook + % 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. + % + \def\smalldisplay{\begingroup\def\Esmalldisplay{\nonfillfinish\endgroup}\display} + \def\smallexample{\begingroup\def\Esmallexample{\nonfillfinish\endgroup}\lisp} + \def\smallformat{\begingroup\def\Esmallformat{\nonfillfinish\endgroup}\format} + \def\smalllisp{\begingroup\def\Esmalllisp{\nonfillfinish\endgroup}\lisp} + + % Real @smallexample and @smalllisp (when @smallbook): use smaller fonts. + % Originally contributed by Pavel@xerox. + \def\smalllispx{\begingroup + \def\Esmalllisp{\nonfillfinish\endgroup}% + \def\Esmallexample{\nonfillfinish\endgroup}% + \smallfonts + \lisp + } + + % @display: same as @lisp except keep current font. + % + \def\display{\begingroup + \nonfillstart + \let\Edisplay = \nonfillfinish + \gobble + } + + % @smalldisplay (when @smallbook): @display plus smaller fonts. + % + \def\smalldisplayx{\begingroup + \def\Esmalldisplay{\nonfillfinish\endgroup}% + \smallfonts \rm + \display + } + + % @format: same as @display except don't narrow margins. + % + \def\format{\begingroup + \let\nonarrowing = t + \nonfillstart + \let\Eformat = \nonfillfinish + \gobble + } + + % @smallformat (when @smallbook): @format plus smaller fonts. + % + \def\smallformatx{\begingroup + \def\Esmallformat{\nonfillfinish\endgroup}% + \smallfonts \rm + \format + } + + % @flushleft (same as @format). + % + \def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format} + + % @flushright. + % + \def\flushright{\begingroup + \let\nonarrowing = t + \nonfillstart + \let\Eflushright = \nonfillfinish + \advance\leftskip by 0pt plus 1fill + \gobble + } + + + % @quotation does normal linebreaking (hence we can't use \nonfillstart) + % and narrows the margins. + % + \def\quotation{% + \begingroup\inENV %This group ends at the end of the @quotation body + {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip + \singlespace + \parindent=0pt + % We have retained a nonzero parskip for the environment, since we're + % doing normal filling. So to avoid extra space below the environment... + \def\Equotation{\parskip = 0pt \nonfillfinish}% + % + % @cartouche defines \nonarrowing to inhibit narrowing at next level down. + \ifx\nonarrowing\relax + \advance\leftskip by \lispnarrowing + \advance\rightskip by \lispnarrowing + \exdentamount = \lispnarrowing + \let\nonarrowing = \relax + \fi + } + + + % LaTeX-like @verbatim...@end verbatim and @verb{...} + % If we want to allow any as delimiter, + % we need the curly braces so that makeinfo sees the @verb command, eg: + % `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org + % + % [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. + % + % [Knuth] p. 344; only we need to do '@' too + \def\dospecials{% + \do\ \do\\\do\@\do\{\do\}\do\$\do\&% + \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~} + % + % [Knuth] p. 380 + \def\uncatcodespecials{% + \def\do##1{\catcode`##1=12}\dospecials} + % + % [Knuth] pp. 380,381,391 + % Disable Spanish ligatures ?` and !` of \tt font + \begingroup + \catcode`\`=\active\gdef`{\relax\lq} + \endgroup + % + % Setup for the @verb command. + % + % Eight spaces for a tab + \begingroup + \catcode`\^^I=\active + \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} + \endgroup + % + \def\setupverb{% + \tt % easiest (and conventionally used) font for verbatim + \def\par{\leavevmode\endgraf}% + \catcode`\`=\active + \tabeightspaces + % Respect line breaks, + % print special symbols as themselves, and + % make each space count + % must do in this order: + \obeylines \uncatcodespecials \sepspaces + } + + % Setup for the @verbatim environment + % + % Real tab expansion + \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount + % + \def\starttabbox{\setbox0=\hbox\bgroup} + \begingroup + \catcode`\^^I=\active + \gdef\tabexpand{% + \catcode`\^^I=\active + \def^^I{\leavevmode\egroup + \dimen0=\wd0 % the width so far, or since the previous tab + \divide\dimen0 by\tabw + \multiply\dimen0 by\tabw % compute previous multiple of \tabw + \advance\dimen0 by\tabw % advance to next multiple of \tabw + \wd0=\dimen0 \box0 \starttabbox + }% + } + \endgroup + \def\setupverbatim{% + % Easiest (and conventionally used) font for verbatim + \tt + \def\par{\leavevmode\egroup\box0\endgraf}% + \catcode`\`=\active + \tabexpand + % Respect line breaks, + % print special symbols as themselves, and + % make each space count + % must do in this order: + \obeylines \uncatcodespecials \sepspaces + \everypar{\starttabbox}% + } + + % Do the @verb magic: verbatim text is quoted by unique + % delimiter characters. Before first delimiter expect a + % right brace, after last delimiter expect closing brace: + % + % \def\doverb'{'#1'}'{#1} + % + % [Knuth] p. 382; only eat outer {} + \begingroup + \catcode`[=1\catcode`]=2\catcode`\{=12\catcode`\}=12 + \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] + \endgroup + % + \def\verb{\begingroup\setupverb\doverb} + % + % + % Do the @verbatim magic: define the macro \doverbatim so that + % the (first) argument ends when '@end verbatim' is reached, ie: + % + % \def\doverbatim#1@end verbatim{#1} + % + % For Texinfo it's a lot easier than for LaTeX, + % because texinfo's \verbatim doesn't stop at '\end{verbatim}': + % we need not redefine '\', '{' and '}' + % + % Inspired by LaTeX's verbatim command set [latex.ltx] + %% Include LaTeX hack for completeness -- never know + %% \begingroup + %% \catcode`|=0 \catcode`[=1 + %% \catcode`]=2\catcode`\{=12\catcode`\}=12\catcode`\ =\active + %% \catcode`\\=12|gdef|doverbatim#1@end verbatim[ + %% #1|endgroup|def|Everbatim[]|end[verbatim]] + %% |endgroup + \begingroup + \catcode`\ =\active + \gdef\doverbatim#1@end verbatim{#1\end{verbatim}} + \endgroup + % + \def\verbatim{% + \def\Everbatim{\nonfillfinish\endgroup}% + \begingroup + \nonfillstart + \advance\leftskip by -\defbodyindent + \begingroup\setupverbatim\doverbatim + } + + % @verbatiminclude FILE - insert text of file in verbatim environment. + % + % Allow normal characters that we make active in the argument (a file name). + \def\verbatiminclude{% + \begingroup + \catcode`\\=12 + \catcode`~=12 + \catcode`^=12 + \catcode`_=12 + \catcode`|=12 + \catcode`<=12 + \catcode`>=12 + \catcode`+=12 + \parsearg\doverbatiminclude + } + \def\setupverbatiminclude{% + \begingroup + \nonfillstart + \advance\leftskip by -\defbodyindent + \begingroup\setupverbatim + } + % + \def\doverbatiminclude#1{% + % Restore active chars for included file. + \endgroup + \begingroup + \def\thisfile{#1}% + \expandafter\expandafter\setupverbatiminclude\input\thisfile + \endgroup\nonfillfinish\endgroup + } + + + \message{defuns,} + % @defun etc. + + % Allow user to change definition object font (\df) internally + \def\setdeffont #1 {\csname DEF#1\endcsname} + + \newskip\defbodyindent \defbodyindent=.4in + \newskip\defargsindent \defargsindent=50pt + \newskip\deftypemargin \deftypemargin=12pt + \newskip\deflastargmargin \deflastargmargin=18pt + + \newcount\parencount + % define \functionparens, which makes ( and ) and & do special things. + % \functionparens affects the group it is contained in. + \def\activeparens{% + \catcode`\(=\active \catcode`\)=\active \catcode`\&=\active + \catcode`\[=\active \catcode`\]=\active} + + % Make control sequences which act like normal parenthesis chars. + \let\lparen = ( \let\rparen = ) + + {\activeparens % Now, smart parens don't turn on until &foo (see \amprm) + + % Be sure that we always have a definition for `(', etc. For example, + % if the fn name has parens in it, \boldbrax will not be in effect yet, + % so TeX would otherwise complain about undefined control sequence. + \global\let(=\lparen \global\let)=\rparen + \global\let[=\lbrack \global\let]=\rbrack + + \gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 } + \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} + % This is used to turn on special parens + % but make & act ordinary (given that it's active). + \gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr} + + % Definitions of (, ) and & used in args for functions. + % This is the definition of ( outside of all parentheses. + \gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested + \global\advance\parencount by 1 + } + % + % This is the definition of ( when already inside a level of parens. + \gdef\opnested{\char`\(\global\advance\parencount by 1 } + % + \gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0. + % also in that case restore the outer-level definition of (. + \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi + \global\advance \parencount by -1 } + % If we encounter &foo, then turn on ()-hacking afterwards + \gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ } + % + \gdef\normalparens{\boldbrax\let&=\ampnr} + } % End of definition inside \activeparens + %% These parens (in \boldbrax) actually are a little bolder than the + %% contained text. This is especially needed for [ and ] + \def\opnr{{\sf\char`\(}\global\advance\parencount by 1 } + \def\clnr{{\sf\char`\)}\global\advance\parencount by -1 } + \let\ampnr = \& + \def\lbrb{{\bf\char`\[}} + \def\rbrb{{\bf\char`\]}} + + % Active &'s sneak into the index arguments, so make sure it's defined. + { + \catcode`& = 13 + \global\let& = \ampnr + } + + % First, defname, which formats the header line itself. + % #1 should be the function name. + % #2 should be the type of definition, such as "Function". + + \def\defname #1#2{% + % Get the values of \leftskip and \rightskip as they were + % outside the @def... + \dimen2=\leftskip + \advance\dimen2 by -\defbodyindent + \noindent + \setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}% + \dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line + \dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations + \parshape 2 0in \dimen0 \defargsindent \dimen1 + % Now output arg 2 ("Function" or some such) + % ending at \deftypemargin from the right margin, + % but stuck inside a box of width 0 so it does not interfere with linebreaking + {% Adjust \hsize to exclude the ambient margins, + % so that \rightline will obey them. + \advance \hsize by -\dimen2 + \rlap{\rightline{{\rm #2}\hskip -1.25pc }}}% + % Make all lines underfull and no complaints: + \tolerance=10000 \hbadness=10000 + \advance\leftskip by -\defbodyindent + \exdentamount=\defbodyindent + {\df #1}\enskip % Generate function name + } + + % Actually process the body of a definition + % #1 should be the terminating control sequence, such as \Edefun. + % #2 should be the "another name" control sequence, such as \defunx. + % #3 should be the control sequence that actually processes the header, + % such as \defunheader. + + \def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody + \medbreak % + % Define the end token that this defining construct specifies + % so that it will exit this group. + \def#1{\endgraf\endgroup\medbreak}% + \def#2{\begingroup\obeylines\activeparens\spacesplit#3}% + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent + \begingroup % + \catcode 61=\active % 61 is `=' + \obeylines\activeparens\spacesplit#3} + + % #1 is the \E... control sequence to end the definition (which we define). + % #2 is the \...x control sequence for consecutive fns (which we define). + % #3 is the control sequence to call to resume processing. + % #4, delimited by the space, is the class name. + % + \def\defmethparsebody#1#2#3#4 {\begingroup\inENV % + \medbreak % + % Define the end token that this defining construct specifies + % so that it will exit this group. + \def#1{\endgraf\endgroup\medbreak}% + \def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}% + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent + \begingroup\obeylines\activeparens\spacesplit{#3{#4}}} + + % Used for @deftypemethod and @deftypeivar. + % #1 is the \E... control sequence to end the definition (which we define). + % #2 is the \...x control sequence for consecutive fns (which we define). + % #3 is the control sequence to call to resume processing. + % #4, delimited by a space, is the class name. + % #5 is the method's return type. + % + \def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV + \medbreak + \def#1{\endgraf\endgroup\medbreak}% + \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}% + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent + \begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}} + + % Used for @deftypeop. The change from \deftypemethparsebody is an + % extra argument at the beginning which is the `category', instead of it + % being the hardwired string `Method' or `Instance Variable'. We have + % to account for this both in the \...x definition and in parsing the + % input at hand. Thus also need a control sequence (passed as #5) for + % the \E... definition to assign the category name to. + % + \def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV + \medbreak + \def#1{\endgraf\endgroup\medbreak}% + \def#2##1 ##2 ##3 {% + \def#4{##1}% + \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}% + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent + \begingroup\obeylines\activeparens\spacesplit{#3{#5}{#6}}} + + \def\defopparsebody #1#2#3#4#5 {\begingroup\inENV % + \medbreak % + % Define the end token that this defining construct specifies + % so that it will exit this group. + \def#1{\endgraf\endgroup\medbreak}% + \def#2##1 ##2 {\def#4{##1}% + \begingroup\obeylines\activeparens\spacesplit{#3{##2}}}% + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent + \begingroup\obeylines\activeparens\spacesplit{#3{#5}}} + + % These parsing functions are similar to the preceding ones + % except that they do not make parens into active characters. + % These are used for "variables" since they have no arguments. + + \def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody + \medbreak % + % Define the end token that this defining construct specifies + % so that it will exit this group. + \def#1{\endgraf\endgroup\medbreak}% + \def#2{\begingroup\obeylines\spacesplit#3}% + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent + \begingroup % + \catcode 61=\active % + \obeylines\spacesplit#3} + + % This is used for \def{tp,vr}parsebody. It could probably be used for + % some of the others, too, with some judicious conditionals. + % + \def\parsebodycommon#1#2#3{% + \begingroup\inENV % + \medbreak % + % Define the end token that this defining construct specifies + % so that it will exit this group. + \def#1{\endgraf\endgroup\medbreak}% + \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}% + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent + \begingroup\obeylines + } + + \def\defvrparsebody#1#2#3#4 {% + \parsebodycommon{#1}{#2}{#3}% + \spacesplit{#3{#4}}% + } + + % This loses on `@deftp {Data Type} {struct termios}' -- it thinks the + % type is just `struct', because we lose the braces in `{struct + % termios}' when \spacesplit reads its undelimited argument. Sigh. + % \let\deftpparsebody=\defvrparsebody + % + % So, to get around this, we put \empty in with the type name. That + % way, TeX won't find exactly `{...}' as an undelimited argument, and + % won't strip off the braces. + % + \def\deftpparsebody #1#2#3#4 {% + \parsebodycommon{#1}{#2}{#3}% + \spacesplit{\parsetpheaderline{#3{#4}}}\empty + } + + % Fine, but then we have to eventually remove the \empty *and* the + % braces (if any). That's what this does. + % + \def\removeemptybraces\empty#1\relax{#1} + + % After \spacesplit has done its work, this is called -- #1 is the final + % thing to call, #2 the type name (which starts with \empty), and #3 + % (which might be empty) the arguments. + % + \def\parsetpheaderline#1#2#3{% + #1{\removeemptybraces#2\relax}{#3}% + }% + + \def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV % + \medbreak % + % Define the end token that this defining construct specifies + % so that it will exit this group. + \def#1{\endgraf\endgroup\medbreak}% + \def#2##1 ##2 {\def#4{##1}% + \begingroup\obeylines\spacesplit{#3{##2}}}% + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent + \begingroup\obeylines\spacesplit{#3{#5}}} + + % Split up #2 at the first space token. + % call #1 with two arguments: + % the first is all of #2 before the space token, + % the second is all of #2 after that space token. + % If #2 contains no space token, all of it is passed as the first arg + % and the second is passed as empty. + + {\obeylines + \gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}% + \long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{% + \ifx\relax #3% + #1{#2}{}\else #1{#2}{#3#4}\fi}} + + % So much for the things common to all kinds of definitions. + + % Define @defun. + + % First, define the processing that is wanted for arguments of \defun + % Use this to expand the args and terminate the paragraph they make up + + \def\defunargs#1{\functionparens \sl + % Expand, preventing hyphenation at `-' chars. + % Note that groups don't affect changes in \hyphenchar. + % Set the font temporarily and use \font in case \setfont made \tensl a macro. + {\tensl\hyphenchar\font=0}% + #1% + {\tensl\hyphenchar\font=45}% + \ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi% + \interlinepenalty=10000 + \advance\rightskip by 0pt plus 1fil + \endgraf\nobreak\vskip -\parskip\nobreak + } + + \def\deftypefunargs #1{% + % Expand, preventing hyphenation at `-' chars. + % Note that groups don't affect changes in \hyphenchar. + % Use \boldbraxnoamp, not \functionparens, so that & is not special. + \boldbraxnoamp + \tclose{#1}% avoid \code because of side effects on active chars + \interlinepenalty=10000 + \advance\rightskip by 0pt plus 1fil + \endgraf\nobreak\vskip -\parskip\nobreak + } + + % Do complete processing of one @defun or @defunx line already parsed. + + % @deffn Command forward-char nchars + + \def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader} + + \def\deffnheader #1#2#3{\doind {fn}{\code{#2}}% + \begingroup\defname {#2}{#1}\defunargs{#3}\endgroup % + \catcode 61=\other % Turn off change made in \defparsebody + } + + % @defun == @deffn Function + + \def\defun{\defparsebody\Edefun\defunx\defunheader} + + \def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index + \begingroup\defname {#1}{\putwordDeffunc}% + \defunargs {#2}\endgroup % + \catcode 61=\other % Turn off change made in \defparsebody + } + + % @deftypefun int foobar (int @var{foo}, float @var{bar}) + + \def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader} + + % #1 is the data type. #2 is the name and args. + \def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax} + % #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}{\putwordDeftypefun}% + \deftypefunargs {#3}\endgroup % + \catcode 61=\other % Turn off change made in \defparsebody + } + + % @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar}) + + \def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader} + + % \defheaderxcond#1\relax$$$ + % puts #1 in @code, followed by a space, but does nothing if #1 is null. + \def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi} + + % #1 is the classification. #2 is the data type. #3 is the name and args. + \def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax} + % #1 is the classification, #2 the data type, #3 the name, #4 the args. + \def\deftypefnheaderx #1#2#3 #4\relax{% + \doind {fn}{\code{#3}}% Make entry in function index + \begingroup + \normalparens % notably, turn off `&' magic, which prevents + % at least some C++ text from working + \defname {\defheaderxcond#2\relax$$$#3}{#1}% + \deftypefunargs {#4}\endgroup % + \catcode 61=\other % Turn off change made in \defparsebody + } + + % @defmac == @deffn Macro + + \def\defmac{\defparsebody\Edefmac\defmacx\defmacheader} + + \def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index + \begingroup\defname {#1}{\putwordDefmac}% + \defunargs {#2}\endgroup % + \catcode 61=\other % Turn off change made in \defparsebody + } + + % @defspec == @deffn Special Form + + \def\defspec{\defparsebody\Edefspec\defspecx\defspecheader} + + \def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index + \begingroup\defname {#1}{\putwordDefspec}% + \defunargs {#2}\endgroup % + \catcode 61=\other % Turn off change made in \defparsebody + } + + % @defop CATEGORY CLASS OPERATION ARG... + % + \def\defop #1 {\def\defoptype{#1}% + \defopparsebody\Edefop\defopx\defopheader\defoptype} + % + \def\defopheader#1#2#3{% + \dosubind {fn}{\code{#2}}{\putwordon\ #1}% Make entry in function index + \begingroup\defname {#2}{\defoptype\ \putwordon\ #1}% + \defunargs {#3}\endgroup % + } + + % @deftypeop CATEGORY CLASS TYPE OPERATION ARG... + % + \def\deftypeop #1 {\def\deftypeopcategory{#1}% + \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader + \deftypeopcategory} + % + % #1 is the class name, #2 the data type, #3 the operation name, #4 the args. + \def\deftypeopheader#1#2#3#4{% + \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index + \begingroup + \defname{\defheaderxcond#2\relax$$$#3} + {\deftypeopcategory\ \putwordon\ \code{#1}}% + \deftypefunargs{#4}% + \endgroup + } + + % @deftypemethod CLASS TYPE METHOD ARG... + % + \def\deftypemethod{% + \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader} + % + % #1 is the class name, #2 the data type, #3 the method name, #4 the args. + \def\deftypemethodheader#1#2#3#4{% + \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index + \begingroup + \defname{\defheaderxcond#2\relax$$$#3}{\putwordMethodon\ \code{#1}}% + \deftypefunargs{#4}% + \endgroup + } + + % @deftypeivar CLASS TYPE VARNAME + % + \def\deftypeivar{% + \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader} + % + % #1 is the class name, #2 the data type, #3 the variable name. + \def\deftypeivarheader#1#2#3{% + \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index + \begingroup + \defname{\defheaderxcond#2\relax$$$#3} + {\putwordInstanceVariableof\ \code{#1}}% + \defvarargs{#3}% + \endgroup + } + + % @defmethod == @defop Method + % + \def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader} + % + % #1 is the class name, #2 the method name, #3 the args. + \def\defmethodheader#1#2#3{% + \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% entry in function index + \begingroup + \defname{#2}{\putwordMethodon\ \code{#1}}% + \defunargs{#3}% + \endgroup + } + + % @defcv {Class Option} foo-class foo-flag + + \def\defcv #1 {\def\defcvtype{#1}% + \defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype} + + \def\defcvarheader #1#2#3{% + \dosubind {vr}{\code{#2}}{\putwordof\ #1}% Make entry in var index + \begingroup\defname {#2}{\defcvtype\ \putwordof\ #1}% + \defvarargs {#3}\endgroup % + } + + % @defivar CLASS VARNAME == @defcv {Instance Variable} CLASS VARNAME + % + \def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader} + % + \def\defivarheader#1#2#3{% + \dosubind {vr}{\code{#2}}{\putwordof\ #1}% entry in var index + \begingroup + \defname{#2}{\putwordInstanceVariableof\ #1}% + \defvarargs{#3}% + \endgroup + } + + % @defvar + % First, define the processing that is wanted for arguments of @defvar. + % This is actually simple: just print them in roman. + % This must expand the args and terminate the paragraph they make up + \def\defvarargs #1{\normalparens #1% + \interlinepenalty=10000 + \endgraf\nobreak\vskip -\parskip\nobreak} + + % @defvr Counter foo-count + + \def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader} + + \def\defvrheader #1#2#3{\doind {vr}{\code{#2}}% + \begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup} + + % @defvar == @defvr Variable + + \def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader} + + \def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index + \begingroup\defname {#1}{\putwordDefvar}% + \defvarargs {#2}\endgroup % + } + + % @defopt == @defvr {User Option} + + \def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader} + + \def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index + \begingroup\defname {#1}{\putwordDefopt}% + \defvarargs {#2}\endgroup % + } + + % @deftypevar int foobar + + \def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader} + + % #1 is the data type. #2 is the name, perhaps followed by text that + % 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}{\putwordDeftypevar}% + \interlinepenalty=10000 + \endgraf\nobreak\vskip -\parskip\nobreak + \endgroup} + \def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}} + + % @deftypevr {Global Flag} int enable + + \def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} + + \def\deftypevrheader #1#2#3{\dovarind#3 \relax% + \begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1} + \interlinepenalty=10000 + \endgraf\nobreak\vskip -\parskip\nobreak + \endgroup} + + % Now define @deftp + % Args are printed in bold, a slight difference from @defvar. + + \def\deftpargs #1{\bf \defvarargs{#1}} + + % @deftp Class window height width ... + + \def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader} + + \def\deftpheader #1#2#3{\doind {tp}{\code{#2}}% + \begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup} + + % These definitions are used if you use @defunx (etc.) + % anywhere other than immediately after a @defun or @defunx. + % + \def\defcvx#1 {\errmessage{@defcvx in invalid context}} + \def\deffnx#1 {\errmessage{@deffnx in invalid context}} + \def\defivarx#1 {\errmessage{@defivarx in invalid context}} + \def\defmacx#1 {\errmessage{@defmacx in invalid context}} + \def\defmethodx#1 {\errmessage{@defmethodx in invalid context}} + \def\defoptx #1 {\errmessage{@defoptx in invalid context}} + \def\defopx#1 {\errmessage{@defopx in invalid context}} + \def\defspecx#1 {\errmessage{@defspecx in invalid context}} + \def\deftpx#1 {\errmessage{@deftpx in invalid context}} + \def\deftypefnx#1 {\errmessage{@deftypefnx in invalid context}} + \def\deftypefunx#1 {\errmessage{@deftypefunx in invalid context}} + \def\deftypeivarx#1 {\errmessage{@deftypeivarx in invalid context}} + \def\deftypemethodx#1 {\errmessage{@deftypemethodx in invalid context}} + \def\deftypeopx#1 {\errmessage{@deftypeopx in invalid context}} + \def\deftypevarx#1 {\errmessage{@deftypevarx in invalid context}} + \def\deftypevrx#1 {\errmessage{@deftypevrx in invalid context}} + \def\defunx#1 {\errmessage{@defunx in invalid context}} + \def\defvarx#1 {\errmessage{@defvarx in invalid context}} + \def\defvrx#1 {\errmessage{@defvrx in invalid context}} + + + \message{macros,} + % @macro. + + % To do this right we need a feature of e-TeX, \scantokens, + % which we arrange to emulate with a temporary file in ordinary TeX. + \ifx\eTeXversion\undefined + \newwrite\macscribble + \def\scanmacro#1{% + \begingroup \newlinechar`\^^M + % Undo catcode changes of \startcontents and \doprintindex + \catcode`\@=0 \catcode`\\=12 \escapechar=`\@ + % Append \endinput to make sure that TeX does not see the ending newline. + \toks0={#1\endinput}% + \immediate\openout\macscribble=\jobname.tmp + \immediate\write\macscribble{\the\toks0}% + \immediate\closeout\macscribble + \let\xeatspaces\eatspaces + \input \jobname.tmp + \endgroup + } + \else + \def\scanmacro#1{% + \begingroup \newlinechar`\^^M + % Undo catcode changes of \startcontents and \doprintindex + \catcode`\@=0 \catcode`\\=12 \escapechar=`\@ + \let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup} + \fi + + \newcount\paramno % Count of parameters + \newtoks\macname % Macro name + \newif\ifrecursive % Is it recursive? + \def\macrolist{} % List of all defined macros in the form + % \do\macro1\do\macro2... + + % Utility routines. + % Thisdoes \let #1 = #2, except with \csnames. + \def\cslet#1#2{% + \expandafter\expandafter + \expandafter\let + \expandafter\expandafter + \csname#1\endcsname + \csname#2\endcsname} + + % Trim leading and trailing spaces off a string. + % Concepts from aro-bend problem 15 (see CTAN). + {\catcode`\@=11 + \gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} + \gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} + \gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} + \def\unbrace#1{#1} + \unbrace{\gdef\trim@@@ #1 } #2@{#1} + } + + % Trim a single trailing ^^M off a string. + {\catcode`\^^M=12\catcode`\Q=3% + \gdef\eatcr #1{\eatcra #1Q^^MQ}% + \gdef\eatcra#1^^MQ{\eatcrb#1Q}% + \gdef\eatcrb#1Q#2Q{#1}% + } + + % Macro bodies are absorbed as an argument in a context where + % 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 + % body, and then making it the \newlinechar in \scanmacro. + + \def\macrobodyctxt{% + \catcode`\~=12 + \catcode`\^=12 + \catcode`\_=12 + \catcode`\|=12 + \catcode`\<=12 + \catcode`\>=12 + \catcode`\+=12 + \catcode`\{=12 + \catcode`\}=12 + \catcode`\@=12 + \catcode`\^^M=12 + \usembodybackslash} + + \def\macroargctxt{% + \catcode`\~=12 + \catcode`\^=12 + \catcode`\_=12 + \catcode`\|=12 + \catcode`\<=12 + \catcode`\>=12 + \catcode`\+=12 + \catcode`\@=12 + \catcode`\\=12} + + % \mbodybackslash is the definition of \ in @macro bodies. + % It maps \foo\ => \csname macarg.foo\endcsname => #N + % where N is the macro parameter number. + % We define \csname macarg.\endcsname to be \realbackslash, so + % \\ in macro replacement text gets you a backslash. + + {\catcode`@=0 @catcode`@\=@active + @gdef@usembodybackslash{@let\=@mbodybackslash} + @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} + } + \expandafter\def\csname macarg.\endcsname{\realbackslash} + + \def\macro{\recursivefalse\parsearg\macroxxx} + \def\rmacro{\recursivetrue\parsearg\macroxxx} + + \def\macroxxx#1{% + \getargs{#1}% now \macname is the macname and \argl the arglist + \ifx\argl\empty % no arguments + \paramno=0% + \else + \expandafter\parsemargdef \argl;% + \fi + \if1\csname ismacro.\the\macname\endcsname + \message{Warning: redefining \the\macname}% + \else + \expandafter\ifx\csname \the\macname\endcsname \relax + \else \errmessage{The name \the\macname\space is reserved}\fi + \global\cslet{macsave.\the\macname}{\the\macname}% + \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% + % Add the macroname to \macrolist + \toks0 = \expandafter{\macrolist\do}% + \xdef\macrolist{\the\toks0 + \expandafter\noexpand\csname\the\macname\endcsname}% + \fi + \begingroup \macrobodyctxt + \ifrecursive \expandafter\parsermacbody + \else \expandafter\parsemacbody + \fi} + + \def\unmacro{\parsearg\unmacroxxx} + \def\unmacroxxx#1{% + \if1\csname ismacro.#1\endcsname + \global\cslet{#1}{macsave.#1}% + \global\expandafter\let \csname ismacro.#1\endcsname=0% + % Remove the macro name from \macrolist + \begingroup + \edef\tempa{\expandafter\noexpand\csname#1\endcsname}% + \def\do##1{% + \def\tempb{##1}% + \ifx\tempa\tempb + % remove this + \else + \toks0 = \expandafter{\newmacrolist\do}% + \edef\newmacrolist{\the\toks0\expandafter\noexpand\tempa}% + \fi}% + \def\newmacrolist{}% + % Execute macro list to define \newmacrolist + \macrolist + \global\let\macrolist\newmacrolist + \endgroup + \else + \errmessage{Macro #1 not defined}% + \fi + } + + % This makes use of the obscure feature that if the last token of a + % is #, then the preceding argument is delimited by + % an opening brace, and that opening brace is not consumed. + \def\getargs#1{\getargsxxx#1{}} + \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} + \def\getmacname #1 #2\relax{\macname={#1}} + \def\getmacargs#1{\def\argl{#1}} + + % Parse the optional {params} list. Set up \paramno and \paramlist + % so \defmacro knows what to do. Define \macarg.blah for each blah + % in the params list, to be ##N where N is the position in that list. + % That gets used by \mbodybackslash (above). + + % We need to get `macro parameter char #' into several definitions. + % The technique used is stolen from LaTeX: let \hash be something + % unexpandable, insert that wherever you need a #, and then redefine + % it to # just before using the token list produced. + % + % The same technique is used to protect \eatspaces till just before + % the macro is used. + + \def\parsemargdef#1;{\paramno=0\def\paramlist{}% + \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,} + \def\parsemargdefxxx#1,{% + \if#1;\let\next=\relax + \else \let\next=\parsemargdefxxx + \advance\paramno by 1% + \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname + {\xeatspaces{\hash\the\paramno}}% + \edef\paramlist{\paramlist\hash\the\paramno,}% + \fi\next} + + % These two commands read recursive and nonrecursive macro bodies. + % (They're different since rec and nonrec macros end differently.) + + \long\def\parsemacbody#1@end macro% + {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% + \long\def\parsermacbody#1@end rmacro% + {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% + + % This defines the macro itself. There are six cases: recursive and + % nonrecursive macros of zero, one, and many arguments. + % Much magic with \expandafter here. + % \xdef is used so that macro definitions will survive the file + % they're defined in; @include reads the file inside a group. + \def\defmacro{% + \let\hash=##% convert placeholders to macro parameter chars + \ifrecursive + \ifcase\paramno + % 0 + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\scanmacro{\temp}}% + \or % 1 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\braceorline + \expandafter\noexpand\csname\the\macname xxx\endcsname}% + \expandafter\xdef\csname\the\macname xxx\endcsname##1{% + \egroup\noexpand\scanmacro{\temp}}% + \else % many + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\csname\the\macname xx\endcsname}% + \expandafter\xdef\csname\the\macname xx\endcsname##1{% + \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname xxx\endcsname + \paramlist{\egroup\noexpand\scanmacro{\temp}}% + \fi + \else + \ifcase\paramno + % 0 + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \or % 1 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\braceorline + \expandafter\noexpand\csname\the\macname xxx\endcsname}% + \expandafter\xdef\csname\the\macname xxx\endcsname##1{% + \egroup + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \else % many + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \expandafter\noexpand\csname\the\macname xx\endcsname}% + \expandafter\xdef\csname\the\macname xx\endcsname##1{% + \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname xxx\endcsname + \paramlist{% + \egroup + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \fi + \fi} + + \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} + + % \braceorline decides whether the next nonwhitespace character is a + % {. If so it reads up to the closing }, if not, it reads the whole + % line. Whatever was read is then fed to the next control sequence + % as an argument (by \parsebrace or \parsearg) + \def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx} + \def\braceorlinexxx{% + \ifx\nchar\bgroup\else + \expandafter\parsearg + \fi \next} + + % We mant to disable all macros during \shipout so that they are not + % expanded by \write. + \def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}% + \edef\next{\macrolist}\expandafter\endgroup\next} + + + % @alias. + % We need some trickery to remove the optional spaces around the equal + % sign. Just make them active and then expand them all to nothing. + \def\alias{\begingroup\obeyspaces\parsearg\aliasxxx} + \def\aliasxxx #1{\aliasyyy#1\relax} + \def\aliasyyy #1=#2\relax{\ignoreactivespaces + \edef\next{\global\let\expandafter\noexpand\csname#1\endcsname=% + \expandafter\noexpand\csname#2\endcsname}% + \expandafter\endgroup\next} + + + \message{cross references,} + % @xref etc. + + \newwrite\auxfile + + \newif\ifhavexrefs % True if xref values are known. + \newif\ifwarnedxrefs % True if we warned once that they aren't known. + + % @inforef is relatively simple. + \def\inforef #1{\inforefzzz #1,,,,**} + \def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, + node \samp{\ignorespaces#1{}}} + + % @node's job is to define \lastnode. + \def\node{\ENVcheck\parsearg\nodezzz} + \def\nodezzz#1{\nodexxx [#1,]} + \def\nodexxx[#1,#2]{\gdef\lastnode{#1}} + \let\nwnode=\node + \let\lastnode=\relax + + % The sectioning commands (@chapter, etc.) call these. + \def\donoderef{% + \ifx\lastnode\relax\else + \expandafter\expandafter\expandafter\setref{\lastnode}% + {Ysectionnumberandtype}% + \global\let\lastnode=\relax + \fi + } + \def\unnumbnoderef{% + \ifx\lastnode\relax\else + \expandafter\expandafter\expandafter\setref{\lastnode}{Ynothing}% + \global\let\lastnode=\relax + \fi + } + \def\appendixnoderef{% + \ifx\lastnode\relax\else + \expandafter\expandafter\expandafter\setref{\lastnode}% + {Yappendixletterandtype}% + \global\let\lastnode=\relax + \fi + } + + + % @anchor{NAME} -- define xref target at arbitrary point. + % + \newcount\savesfregister + \gdef\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} + \gdef\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} + \gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} + + % \setref{NAME}{SNT} defines a cross-reference point NAME, namely + % NAME-title, NAME-pg, and NAME-SNT. Called from \foonoderef. We have + % to set \indexdummies so commands such as @code in a section title + % aren't expanded. It would be nicer not to expand the titles in the + % first place, but there's so many layers that that is hard to do. + % + \def\setref#1#2{{% + \indexdummies + \pdfmkdest{#1}% + \dosetq{#1-title}{Ytitle}% + \dosetq{#1-pg}{Ypagenumber}% + \dosetq{#1-snt}{#2}% + }} + + % @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is + % the node name, #2 the name of the Info cross-reference, #3 the printed + % node name, #4 the name of the Info file, #5 the name of the printed + % manual. All but the node name can be omitted. + % + \def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} + \def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} + \def\ref#1{\xrefX[#1,,,,,,,]} + \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup + \unsepspaces + \def\printedmanual{\ignorespaces #5}% + \def\printednodename{\ignorespaces #3}% + \setbox1=\hbox{\printedmanual}% + \setbox0=\hbox{\printednodename}% + \ifdim \wd0 = 0pt + % No printed node name was explicitly given. + \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax + % Use the node name inside the square brackets. + \def\printednodename{\ignorespaces #1}% + \else + % Use the actual chapter/section title appear inside + % the square brackets. Use the real section title if we have it. + \ifdim \wd1 > 0pt + % It is in another manual, so we don't have it. + \def\printednodename{\ignorespaces #1}% + \else + \ifhavexrefs + % We know the real title if we have the xref values. + \def\printednodename{\refx{#1-title}{}}% + \else + % Otherwise just copy the Info node name. + \def\printednodename{\ignorespaces #1}% + \fi% + \fi + \fi + \fi + % + % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not + % insert empty discretionaries after hyphens, which means that it will + % not find a line break at a hyphen in a node names. Since some manuals + % are best written with fairly long node names, containing hyphens, this + % is a loss. Therefore, we give the text of the node name again, so it + % is as if TeX is seeing it for the first time. + \ifpdf + \leavevmode + \getfilename{#4}% + \ifnum\filenamelength>0 + \startlink attr{/Border [0 0 0]}% + goto file{\the\filename.pdf} name{#1@}% + \else + \startlink attr{/Border [0 0 0]}% + goto name{#1@}% + \fi + \linkcolor + \fi + % + \ifdim \wd1 > 0pt + \putwordsection{} ``\printednodename'' \putwordin{} \cite{\printedmanual}% + \else + % _ (for example) has to be the character _ for the purposes of the + % control sequence corresponding to the node, but it has to expand + % into the usual \leavevmode...\vrule stuff for purposes of + % printing. So we \turnoffactive for the \refx-snt, back on for the + % printing, back off for the \refx-pg. + {\normalturnoffactive + % Only output a following space if the -snt ref is nonempty; for + % @unnumbered and @anchor, it won't be. + \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% + \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi + }% + % [mynode], + [\printednodename],\space + % page 3 + \turnoffactive \putwordpage\tie\refx{#1-pg}{}% + \fi + \endlink + \endgroup} + + % \dosetq is the interface for calls from other macros + + % Use \normalturnoffactive so that punctuation chars such as underscore + % and backslash work in node names. (\turnoffactive doesn't do \.) + \def\dosetq#1#2{% + {\let\folio=0% + \normalturnoffactive + \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}% + \iflinks + \next + \fi + }% + } + + % \internalsetq {foo}{page} expands into + % CHARACTERS 'xrdef {foo}{...expansion of \Ypage...} + % When the aux file is read, ' is the escape character + + \def\internalsetq #1#2{'xrdef {#1}{\csname #2\endcsname}} + + % Things to be expanded by \internalsetq + + \def\Ypagenumber{\folio} + + \def\Ytitle{\thissection} + + \def\Ynothing{} + + \def\Ysectionnumberandtype{% + \ifnum\secno=0 \putwordChapter\xreftie\the\chapno % + \else \ifnum \subsecno=0 \putwordSection\xreftie\the\chapno.\the\secno % + \else \ifnum \subsubsecno=0 % + \putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno % + \else % + \putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno % + \fi \fi \fi } + + \def\Yappendixletterandtype{% + \ifnum\secno=0 \putwordAppendix\xreftie'char\the\appendixno{}% + \else \ifnum \subsecno=0 \putwordSection\xreftie'char\the\appendixno.\the\secno % + \else \ifnum \subsubsecno=0 % + \putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno % + \else % + \putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno % + \fi \fi \fi } + + \gdef\xreftie{'tie} + + % Use TeX 3.0's \inputlineno to get the line number, for better error + % messages, but if we're using an old version of TeX, don't do anything. + % + \ifx\inputlineno\thisisundefined + \let\linenumber = \empty % Non-3.0. + \else + \def\linenumber{\the\inputlineno:\space} + \fi + + % Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. + % If its value is nonempty, SUFFIX is output afterward. + + \def\refx#1#2{% + \expandafter\ifx\csname X#1\endcsname\relax + % If not defined, say something at least. + \angleleft un\-de\-fined\angleright + \iflinks + \ifhavexrefs + \message{\linenumber Undefined cross reference `#1'.}% + \else + \ifwarnedxrefs\else + \global\warnedxrefstrue + \message{Cross reference values unknown; you must run TeX again.}% + \fi + \fi + \fi + \else + % It's defined, so just use it. + \csname X#1\endcsname + \fi + #2% Output the suffix in any case. + } + + % 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 + \afterassignment\endgroup + \expandafter\gdef\csname X#1\endcsname + } + + % Read the last existing aux file, if any. No error if none exists. + \def\readauxfile{\begingroup + \catcode`\^^@=\other + \catcode`\^^A=\other + \catcode`\^^B=\other + \catcode`\^^C=\other + \catcode`\^^D=\other + \catcode`\^^E=\other + \catcode`\^^F=\other + \catcode`\^^G=\other + \catcode`\^^H=\other + \catcode`\^^K=\other + \catcode`\^^L=\other + \catcode`\^^N=\other + \catcode`\^^P=\other + \catcode`\^^Q=\other + \catcode`\^^R=\other + \catcode`\^^S=\other + \catcode`\^^T=\other + \catcode`\^^U=\other + \catcode`\^^V=\other + \catcode`\^^W=\other + \catcode`\^^X=\other + \catcode`\^^Z=\other + \catcode`\^^[=\other + \catcode`\^^\=\other + \catcode`\^^]=\other + \catcode`\^^^=\other + \catcode`\^^_=\other + \catcode`\@=\other + \catcode`\^=\other + % It was suggested to define this as 7, which would allow ^^e4 etc. + % in xref tags, i.e., node names. But since ^^e4 notation isn't + % supported in the main text, it doesn't seem desirable. Furthermore, + % that is not enough: for node names that actually contain a ^ + % character, we would end up writing a line like this: 'xrdef {'hat + % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first + % argument, and \hat is not an expandable control sequence. It could + % all be worked out, but why? Either we support ^^ or we don't. + % + % The other change necessary for this was to define \auxhat: + % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter + % and then to call \auxhat in \setq. + % + \catcode`\~=\other + \catcode`\[=\other + \catcode`\]=\other + \catcode`\"=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\$=\other + \catcode`\#=\other + \catcode`\&=\other + \catcode`+=\other % avoid \+ for paranoia even though we've turned it off + % Make the characters 128-255 be printing characters + {% + \count 1=128 + \def\loop{% + \catcode\count 1=\other + \advance\count 1 by 1 + \ifnum \count 1<256 \loop \fi + }% + }% + % The aux file uses ' as the escape (for now). + % Turn off \ as an escape so we do not lose on + % entries which were dumped with control sequences in their names. + % For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^ + % Reference to such entries still does not work the way one would wish, + % but at least they do not bomb out when the aux file is read in. + \catcode`\{=1 + \catcode`\}=2 + \catcode`\%=\other + \catcode`\'=0 + \catcode`\\=\other + % + \openin 1 \jobname.aux + \ifeof 1 \else + \closein 1 + \input \jobname.aux + \global\havexrefstrue + \global\warnedobstrue + \fi + % Open the new aux file. TeX will close it automatically at exit. + \openout\auxfile=\jobname.aux + \endgroup} + + + % Footnotes. + + \newcount \footnoteno + + % The trailing space in the following definition for supereject is + % vital for proper filling; pages come out unaligned when you do a + % pagealignmacro call if that space before the closing brace is + % removed. (Generally, numeric constants should always be followed by a + % space to prevent strange expansion errors.) + \def\supereject{\par\penalty -20000\footnoteno =0 } + + % @footnotestyle is meaningful for info output only. + \let\footnotestyle=\comment + + \let\ptexfootnote=\footnote + + {\catcode `\@=11 + % + % Auto-number footnotes. Otherwise like plain. + \gdef\footnote{% + \global\advance\footnoteno by \@ne + \edef\thisfootno{$^{\the\footnoteno}$}% + % + % In case the footnote comes at the end of a sentence, preserve the + % extra spacing after we do the footnote number. + \let\@sf\empty + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi + % + % Remove inadvertent blank space before typesetting the footnote number. + \unskip + \thisfootno\@sf + \footnotezzz + }% + + % Don't bother with the trickery in plain.tex to not require the + % footnote text as a parameter. Our footnotes don't need to be so general. + % + % Oh yes, they do; otherwise, @ifset and anything else that uses + % \parseargline fail inside footnotes because the tokens are fixed when + % the footnote is read. --karl, 16nov96. + % + \long\gdef\footnotezzz{\insert\footins\bgroup + % We want to typeset this text as a normal paragraph, even if the + % footnote reference occurs in (for example) a display environment. + % So reset some parameters. + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox + \floatingpenalty\@MM + \leftskip\z@skip + \rightskip\z@skip + \spaceskip\z@skip + \xspaceskip\z@skip + \parindent\defaultparindent + % + \smallfonts \rm + % + % Hang the footnote text off the number. + \hang + \textindent{\thisfootno}% + % + % Don't crash into the line above the footnote text. Since this + % expands into a box, it must come within the paragraph, lest it + % provide a place where TeX can split the footnote. + \footstrut + \futurelet\next\fo@t + } + \def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t + \else\let\next\f@t\fi \next} + \def\f@@t{\bgroup\aftergroup\@foot\let\next} + \def\f@t#1{#1\@foot} + \def\@foot{\strut\par\egroup} + + }%end \catcode `\@=11 + + % Set the baselineskip to #1, and the lineskip and strut size + % correspondingly. There is no deep meaning behind these magic numbers + % used as factors; they just match (closely enough) what Knuth defined. + % + \def\lineskipfactor{.08333} + \def\strutheightpercent{.70833} + \def\strutdepthpercent {.29167} + % + \def\setleading#1{% + \normalbaselineskip = #1\relax + \normallineskip = \lineskipfactor\normalbaselineskip + \normalbaselines + \setbox\strutbox =\hbox{% + \vrule width0pt height\strutheightpercent\baselineskip + depth \strutdepthpercent \baselineskip + }% + } + + % @| inserts a changebar to the left of the current line. It should + % surround any changed text. This approach does *not* work if the + % change spans more than two lines of output. To handle that, we would + % have adopt a much more difficult approach (putting marks into the main + % vertical list for the beginning and end of each change). + % + \def\|{% + % \vadjust can only be used in horizontal mode. + \leavevmode + % + % Append this vertical mode material after the current line in the output. + \vadjust{% + % We want to insert a rule with the height and depth of the current + % leading; that is exactly what \strutbox is supposed to record. + \vskip-\baselineskip + % + % \vadjust-items are inserted at the left edge of the type. So + % the \llap here moves out into the left-hand margin. + \llap{% + % + % For a thicker or thinner bar, change the `1pt'. + \vrule height\baselineskip width1pt + % + % This is the space between the bar and the text. + \hskip 12pt + }% + }% + } + + % For a final copy, take out the rectangles + % that mark overfull boxes (in case you have decided + % that the text looks ok even though it passes the margin). + % + \def\finalout{\overfullrule=0pt} + + % @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. + \openin 1 = epsf.tex + \ifeof 1 \else + \closein 1 + % Do not bother showing banner with post-v2.7 epsf.tex (available in + % doc/epsf.tex until it shows up on ctan). + \def\epsfannounce{\toks0 = }% + \input epsf.tex + \fi + % + % We will only complain once about lack of epsf.tex. + \newif\ifwarnednoepsf + \newhelp\noepsfhelp{epsf.tex must be installed for images to + work. It is also included in the Texinfo distribution, or you can get + it from ftp://tug.org/tex/epsf.tex.} + % + \def\image#1{% + \ifx\epsfbox\undefined + \ifwarnednoepsf \else + \errhelp = \noepsfhelp + \errmessage{epsf.tex not found, images will be ignored}% + \global\warnednoepsftrue + \fi + \else + \imagexxx #1,,,\finish + \fi + } + % + % Arguments to @image: + % #1 is (mandatory) image filename; we tack on .eps extension. + % #2 is (optional) width, #3 is (optional) height. + % #4 is just the usual extra ignored arg for parsing this stuff. + \def\imagexxx#1,#2,#3,#4\finish{% + \ifpdf + \centerline{\dopdfimage{#1}{#2}{#3}}% + \else + % \epsfbox itself resets \epsf?size at each figure. + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi + \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi + \begingroup + \catcode`\^^M = 5 % in case we're inside an example + \normalturnoffactive % allow _ et al. in names + % If the image is by itself, center it. + \ifvmode + \nobreak\bigskip + % Usually we'll have text after the image which will insert + % \parskip glue, so insert it here too to equalize the space + % above and below. + \nobreak\vskip\parskip + \nobreak + \centerline{\epsfbox{#1.eps}}% + \bigbreak + \else + % In the middle of a paragraph, no extra space. + \epsfbox{#1.eps}% + \fi + \endgroup + \fi + } + + + \message{localization,} + % and i18n. + + % @documentlanguage is usually given very early, just after + % @setfilename. If done too late, it may not override everything + % properly. Single argument is the language abbreviation. + % It would be nice if we could set up a hyphenation file here. + % + \def\documentlanguage{\parsearg\dodocumentlanguage} + \def\dodocumentlanguage#1{% + \tex % read txi-??.tex file in plain TeX. + % Read the file if it exists. + \openin 1 txi-#1.tex + \ifeof1 + \errhelp = \nolanghelp + \errmessage{Cannot read language file txi-#1.tex}% + \let\temp = \relax + \else + \def\temp{\input txi-#1.tex }% + \fi + \temp + \endgroup + } + \newhelp\nolanghelp{The given language definition file cannot be found or + is empty. Maybe you need to install it? In the current directory + should work if nowhere else does.} + + + % @documentencoding should change something in TeX eventually, most + % likely, but for now just recognize it. + \let\documentencoding = \comment + + + % Page size parameters. + % + \newdimen\defaultparindent \defaultparindent = 15pt + + \chapheadingskip = 15pt plus 4pt minus 2pt + \secheadingskip = 12pt plus 3pt minus 2pt + \subsecheadingskip = 9pt plus 2pt minus 2pt + + % Prevent underfull vbox error messages. + \vbadness = 10000 + + % Don't be so finicky about underfull hboxes, either. + \hbadness = 2000 + + % Following George Bush, just get rid of widows and orphans. + \widowpenalty=10000 + \clubpenalty=10000 + + % Use TeX 3.0's \emergencystretch to help line breaking, but if we're + % using an old version of TeX, don't do anything. We want the amount of + % stretch added to depend on the line length, hence the dependence on + % \hsize. We call this whenever the paper size is set. + % + \def\setemergencystretch{% + \ifx\emergencystretch\thisisundefined + % Allow us to assign to \emergencystretch anyway. + \def\emergencystretch{\dimen0}% + \else + \emergencystretch = .15\hsize + \fi + } + + % Parameters in order: 1) textheight; 2) textwidth; 3) voffset; + % 4) hoffset; 5) binding offset; 6) topskip. Then whoever calls us can + % set \parskip and call \setleading for \baselineskip. + % + \def\internalpagesizes#1#2#3#4#5#6{% + \voffset = #3\relax + \topskip = #6\relax + \splittopskip = \topskip + % + \vsize = #1\relax + \advance\vsize by \topskip + \outervsize = \vsize + \advance\outervsize by 2\topandbottommargin + \pageheight = \vsize + % + \hsize = #2\relax + \outerhsize = \hsize + \advance\outerhsize by 0.5in + \pagewidth = \hsize + % + \normaloffset = #4\relax + \bindingoffset = #5\relax + % + \parindent = \defaultparindent + \setemergencystretch + } + + % Use `small' versions. + % + \def\smallenvironments{% + \let\smalldisplay = \smalldisplayx + \let\smallexample = \smalllispx + \let\smallformat = \smallformatx + \let\smalllisp = \smalllispx + } + + % @letterpaper (the default). + \def\letterpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \setleading{13.2pt}% + % + % If page is nothing but text, make it come out even. + \internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}% + }} + + % Use @smallbook to reset parameters for 7x9.5 (or so) format. + \def\smallbook{{\globaldefs = 1 + \parskip = 2pt plus 1pt + \setleading{12pt}% + % + \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}% + % + \lispnarrowing = 0.3in + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \deftypemargin = 0pt + \defbodyindent = .5cm + \smallenvironments + }} + + % Use @afourpaper to print on European A4 paper. + \def\afourpaper{{\globaldefs = 1 + \setleading{12pt}% + \parskip = 3pt plus 2pt minus 1pt + % + \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}% + % + \tolerance = 700 + \hfuzz = 1pt + }} + + % Use @afivepaper to print on European A5 paper. + % From romildo@urano.iceb.ufop.br, 2 July 2000. + % He also recommends making @example and @lisp be small. + \def\afivepaper{{\globaldefs = 1 + \setleading{12.5pt}% + \parskip = 2pt plus 1pt minus 0.1pt + % + \internalpagesizes{166mm}{120mm}{\voffset}{-8mm}{\bindingoffset}{8pt}% + % + \lispnarrowing = 0.2in + \tolerance = 800 + \hfuzz = 1.2pt + \contentsrightmargin = 0mm + \deftypemargin = 0pt + \defbodyindent = 2mm + \tableindent = 12mm + % + \smallenvironments + }} + + % A specific text layout, 24x15cm overall, intended for A4 paper. Top margin + % 29mm, hence bottom margin 28mm, nominal side margin 3cm. + \def\afourlatex{{\globaldefs = 1 + \setleading{13.6pt}% + % + \afourpaper + \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}% + % + \globaldefs = 0 + }} + + % Use @afourwide to print on European A4 paper in wide format. + \def\afourwide{% + \afourpaper + \internalpagesizes{6.5in}{9.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}% + % + \globaldefs = 0 + } + + % @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{{% + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi + \globaldefs = 1 + % + \parskip = 3pt plus 2pt minus 1pt + \setleading{13.2pt}% + % + \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}% + }} + + % Set default to letter. + % + \letterpaper + + + \message{and turning on texinfo input format.} + + % Define macros to output various characters with catcode for normal text. + \catcode`\"=\other + \catcode`\~=\other + \catcode`\^=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\+=\other + \catcode`\$=\other + \def\normaldoublequote{"} + \def\normaltilde{~} + \def\normalcaret{^} + \def\normalunderscore{_} + \def\normalverticalbar{|} + \def\normalless{<} + \def\normalgreater{>} + \def\normalplus{+} + \def\normaldollar{$} + + % This macro is used to make a character print one way in ttfont + % where it can probably just be output, and another way in other fonts, + % where something hairier probably needs to be done. + % + % #1 is what to print if we are indeed using \tt; #2 is what to print + % otherwise. Since all the Computer Modern typewriter fonts have zero + % interword stretch (and shrink), and it is reasonable to expect all + % typewriter fonts to have this, we can check that font parameter. + % + \def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} + + % Same as above, but check for italic font. Actually this also catches + % non-italic slanted fonts since it is impossible to distinguish them from + % italic fonts. But since this is only used by $ and it uses \sl anyway + % this is not a problem. + \def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} + + % Turn off all special characters except @ + % (and those which the user can use as if they were ordinary). + % Most of these we simply print from the \tt font, but for some, we can + % use math or other variants that look better in normal text. + + \catcode`\"=\active + \def\activedoublequote{{\tt\char34}} + \let"=\activedoublequote + \catcode`\~=\active + \def~{{\tt\char126}} + \chardef\hat=`\^ + \catcode`\^=\active + \def^{{\tt \hat}} + + \catcode`\_=\active + \def_{\ifusingtt\normalunderscore\_} + % Subroutine for the previous macro. + \def\_{\leavevmode \kern.06em \vbox{\hrule width.3em height.1ex}} + + \catcode`\|=\active + \def|{{\tt\char124}} + \chardef \less=`\< + \catcode`\<=\active + \def<{{\tt \less}} + \chardef \gtr=`\> + \catcode`\>=\active + \def>{{\tt \gtr}} + \catcode`\+=\active + \def+{{\tt \char 43}} + \catcode`\$=\active + \def${\ifusingit{{\sl\$}}\normaldollar} + %\catcode 27=\active + %\def^^[{$\diamondsuit$} + + % Set up an active definition for =, but don't enable it most of the time. + {\catcode`\==\active + \global\def={{\tt \char 61}}} + + \catcode`+=\active + \catcode`\_=\active + + % If a .fmt file is being used, characters that might appear in a file + % name cannot be active until we have parsed the command line. + % So turn them off again, and have \everyjob (or @setfilename) turn them on. + % \otherifyactive is called near the end of this file. + \def\otherifyactive{\catcode`+=\other \catcode`\_=\other} + + \catcode`\@=0 + + % \rawbackslashxx output one backslash character in current font + \global\chardef\rawbackslashxx=`\\ + %{\catcode`\\=\other + %@gdef@rawbackslashxx{\}} + + % \rawbackslash redefines \ as input to do \rawbackslashxx. + {\catcode`\\=\active + @gdef@rawbackslash{@let\=@rawbackslashxx }} + + % \normalbackslash outputs one backslash in fixed width font. + \def\normalbackslash{{\tt\rawbackslashxx}} + + % \catcode 17=0 % Define control-q + \catcode`\\=\active + + % Used sometimes to turn off (effectively) the active characters + % even after parsing them. + @def@turnoffactive{@let"=@normaldoublequote + @let\=@realbackslash + @let~=@normaltilde + @let^=@normalcaret + @let_=@normalunderscore + @let|=@normalverticalbar + @let<=@normalless + @let>=@normalgreater + @let+=@normalplus + @let$=@normaldollar} + + @def@normalturnoffactive{@let"=@normaldoublequote + @let\=@normalbackslash + @let~=@normaltilde + @let^=@normalcaret + @let_=@normalunderscore + @let|=@normalverticalbar + @let<=@normalless + @let>=@normalgreater + @let+=@normalplus + @let$=@normaldollar} + + % Make _ and + \other characters, temporarily. + % This is canceled by @fixbackslash. + @otherifyactive + + % If a .fmt file is being used, we don't want the `\input texinfo' to show up. + % That is what \eatinput is for; after that, the `\' should revert to printing + % a backslash. + % + @gdef@eatinput input texinfo{@fixbackslash} + @global@let\ = @eatinput + + % On the other hand, perhaps the file did not have a `\input texinfo'. Then + % the first `\{ in the file would cause an error. This macro tries to fix + % that, assuming it is called before the first `\' could plausibly occur. + % Also back turn on active characters that might appear in the input + % file name, in case not using a pre-dumped format. + % + @gdef@fixbackslash{% + @ifx\@eatinput @let\ = @normalbackslash @fi + @catcode`+=@active + @catcode`@_=@active + } + + % Say @foo, not \foo, in error messages. + @escapechar = `@@ + + % These look ok in all fonts, so just make them not special. + @catcode`@& = @other + @catcode`@# = @other + @catcode`@% = @other + + @c Set initial fonts. + @textfonts + @rm + + + @c Local variables: + @c eval: (add-hook 'write-file-hooks 'time-stamp) + @c page-delimiter: "^\\\\message" + @c time-stamp-start: "def\\\\texinfoversion{" + @c time-stamp-format: "%:y-%02m-%02d.%02H" + @c time-stamp-end: "}" + @c End: diff -Nrc3pad gcc-3.0/gcc/doc/install-old.texi gcc-3.0.1/gcc/doc/install-old.texi *** gcc-3.0/gcc/doc/install-old.texi Thu Jun 14 04:19:49 2001 --- gcc-3.0.1/gcc/doc/install-old.texi Wed Jun 27 08:08:24 2001 *************** ignored. So you might as well specify t *** 82,163 **** See @ref{Configurations}, for a list of supported configuration names and notes on many of the configurations. You should check the notes in that ! section before proceeding any further with the installation of GNU CC. ! ! @item ! When running @code{configure}, you may also need to specify certain ! additional options that describe variant hardware and software ! configurations. These are @option{--with-gnu-as}, @option{--with-gnu-ld}, ! @option{--with-stabs} and @option{--nfp}. ! ! @table @samp ! @item --with-gnu-as ! If you will use GNU CC with the GNU assembler (GAS), you should declare ! this by using the @option{--with-gnu-as} option when you run ! @file{configure}. ! ! Using this option does not install GAS. It only modifies the output of ! GNU CC to work with GAS. Building and installing GAS is up to you. ! ! Conversely, if you @emph{do not} wish to use GAS and do not specify ! @option{--with-gnu-as} when building GNU CC, it is up to you to make sure ! that GAS is not installed. GNU CC searches for a program named ! @code{as} in various directories; if the program it finds is GAS, then ! it runs GAS. If you are not sure where GNU CC finds the assembler it is ! using, try specifying @option{-v} when you run it. ! ! The systems where it makes a difference whether you use GAS 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. ! ! On the systems listed above (except for the HP-PA, for ISC on the ! 386, and for @samp{mips-sgi-irix5.*}), if you use GAS, you should also ! use the GNU linker (and specify @option{--with-gnu-ld}). ! ! @item --with-gnu-ld ! Specify the option @option{--with-gnu-ld} if you plan to use the GNU ! linker with GNU CC. ! ! This option does not cause the GNU linker to be installed; it just ! modifies the behavior of GNU CC to work with the GNU linker. ! @c Specifically, it inhibits the installation of @code{collect2}, a program ! @c which otherwise serves as a front-end for the system's linker on most ! @c configurations. ! ! @item --with-stabs ! On MIPS based systems and on Alphas, you must specify whether you want ! GNU CC to create the normal ECOFF debugging format, or to use BSD-style ! stabs passed through the ECOFF symbol table. The normal ECOFF debug ! format cannot fully handle languages other than C. BSD stabs format can ! handle other languages, but it only works with the GNU debugger GDB. ! ! Normally, GNU CC uses the ECOFF debugging format by default; if you ! prefer BSD stabs, specify @option{--with-stabs} when you configure GNU ! CC. ! ! No matter which default you choose when you configure GNU CC, the user ! can use the @option{-gcoff} and @option{-gstabs+} options to specify explicitly ! the debug format for a particular compilation. ! ! @option{--with-stabs} is meaningful on the ISC system on the 386, also, if ! @option{--with-gas} is used. It selects use of stabs debugging ! information embedded in COFF output. This kind of debugging information ! supports C++ well; ordinary COFF debugging information does not. ! ! @option{--with-stabs} is also meaningful on 386 systems running SVR4. It ! selects use of stabs debugging information embedded in ELF output. The ! C++ compiler currently (2.6.0) does not support the DWARF debugging ! information normally used on 386 SVR4 platforms; stabs provide a ! workable alternative. This requires gas and gdb, as the normal SVR4 ! tools can not generate or interpret stabs. ! ! @end table @end enumerate --- 82,88 ---- See @ref{Configurations}, for a list of supported configuration names and notes on many of the configurations. You should check the notes in that ! section before proceeding any further with the installation of GNU CC@. @end enumerate *************** operating system from the CPU and compan *** 260,266 **** You can add a version number to the system type; this may or may not make a difference. For example, you can write @samp{bsd4.3} or ! @samp{bsd4.4} to distinguish versions of BSD. In practice, the version number is most needed for @samp{sysv3} and @samp{sysv4}, which are often treated differently. --- 185,191 ---- You can add a version number to the system type; this may or may not make a difference. For example, you can write @samp{bsd4.3} or ! @samp{bsd4.4} to distinguish versions of BSD@. In practice, the version number is most needed for @samp{sysv3} and @samp{sysv4}, which are often treated differently. *************** things you must know: *** 317,323 **** @table @samp @item vax-dec-vms ! See @ref{VMS Install}, for details on how to install GNU CC on VMS. @end table @node Cross-Compiler --- 242,248 ---- @table @samp @item vax-dec-vms ! See @ref{VMS Install}, for details on how to install GNU CC on VMS@. @end table @node Cross-Compiler *************** startup files (typically @file{crt@dots{ *** 386,392 **** @end itemize It is most convenient to do all of these steps on the same host machine, ! since then you can do it all with a single invocation of GNU CC. This requires a suitable cross-assembler and cross-linker. For some targets, the GNU assembler and linker are available. --- 311,317 ---- @end itemize It is most convenient to do all of these steps on the same host machine, ! since then you can do it all with a single invocation of GNU CC@. This requires a suitable cross-assembler and cross-linker. For some targets, the GNU assembler and linker are available. *************** and copy or link them to the proper plac *** 433,439 **** find them when run later. The easiest way to provide these files is to build the Binutils package ! and GAS. Configure them with the same @option{--host} and @option{--target} options that you use for configuring GNU CC, then build and install them. They install their executables automatically into the proper directory. Alas, they do not support all the targets that GNU CC --- 358,364 ---- find them when run later. The easiest way to provide these files is to build the Binutils package ! and GAS@. Configure them with the same @option{--host} and @option{--target} options that you use for configuring GNU CC, then build and install them. They install their executables automatically into the proper directory. Alas, they do not support all the targets that GNU CC *************** them. *** 514,520 **** Provide the header files before you build the cross-compiler, because the build stage actually runs the cross-compiler to produce parts of @file{libgcc.a}. (These are the parts that @emph{can} be compiled with ! GNU CC.) Some of them need suitable header files. Here's an example showing how to copy the header files from a target machine. On the target machine, do this: --- 439,445 ---- Provide the header files before you build the cross-compiler, because the build stage actually runs the cross-compiler to produce parts of @file{libgcc.a}. (These are the parts that @emph{can} be compiled with ! GNU CC@.) Some of them need suitable header files. Here's an example showing how to copy the header files from a target machine. On the target machine, do this: *************** file for GNU CC as follows: *** 578,584 **** Define the VMS logical names @samp{GNU_CC} and @samp{GNU_CC_INCLUDE} to point to the directories where the GNU CC executables (@file{gcc-cpp.exe}, @file{gcc-cc1.exe}, etc.) and the C include files are ! kept respectively. This should be done with the commands:@refill @smallexample $ assign /system /translation=concealed - --- 503,509 ---- Define the VMS logical names @samp{GNU_CC} and @samp{GNU_CC_INCLUDE} to point to the directories where the GNU CC executables (@file{gcc-cpp.exe}, @file{gcc-cc1.exe}, etc.) and the C include files are ! kept respectively. This should be done with the commands: @smallexample $ assign /system /translation=concealed - *************** perform the following steps: *** 622,628 **** @item Define the VMS logical name @samp{GNU_GXX_INCLUDE} to point to the directory where the preprocessor will search for the C++ header files. ! This can be done with the command:@refill @smallexample $ assign /system /translation=concealed - --- 547,553 ---- @item Define the VMS logical name @samp{GNU_GXX_INCLUDE} to point to the directory where the preprocessor will search for the C++ header files. ! This can be done with the command: @smallexample $ assign /system /translation=concealed - *************** Execute the command procedure @file{vmsc *** 657,663 **** @file{tm.h}, @file{config.h}, @file{aux-output.c}, and @file{md.}, and to create files @file{tconfig.h} and @file{hconfig.h}. This procedure also creates several linker option files used by @file{make-cc1.com} and ! a data file used by @file{make-l2.com}.@refill @smallexample $ @@vmsconfig.com --- 582,588 ---- @file{tm.h}, @file{config.h}, @file{aux-output.c}, and @file{md.}, and to create files @file{tconfig.h} and @file{hconfig.h}. This procedure also creates several linker option files used by @file{make-cc1.com} and ! a data file used by @file{make-l2.com}. @smallexample $ @@vmsconfig.com *************** $ @@vmsconfig.com *** 667,673 **** Setup the logical names and command tables as defined above. In addition, define the VMS logical name @samp{GNU_BISON} to point at the to the directories where the Bison executable is kept. This should be ! done with the command:@refill @smallexample $ assign /system /translation=concealed - --- 592,598 ---- Setup the logical names and command tables as defined above. In addition, define the VMS logical name @samp{GNU_BISON} to point at the to the directories where the Bison executable is kept. This should be ! done with the command: @smallexample $ assign /system /translation=concealed - *************** You may, if you choose, use the @file{IN *** 678,684 **** @file{[BISON]} directory. @item ! Install the @samp{BISON} command with the command line:@refill @smallexample $ set command /table=sys$common:[syslib]dcltables - --- 603,609 ---- @file{[BISON]} directory. @item ! Install the @samp{BISON} command with the command line: @smallexample $ set command /table=sys$common:[syslib]dcltables - *************** Type @samp{@@make-gcc} to recompile ever *** 692,698 **** the file @file{make-gcc.com} to a batch queue). If you wish to build the GNU C++ compiler as well as the GNU CC compiler, you must first edit @file{make-gcc.com} and follow the instructions that appear in the ! comments.@refill @item In order to use GCC, you need a library of functions which GCC compiled code --- 617,623 ---- the file @file{make-gcc.com} to a batch queue). If you wish to build the GNU C++ compiler as well as the GNU CC compiler, you must first edit @file{make-gcc.com} and follow the instructions that appear in the ! comments. @item In order to use GCC, you need a library of functions which GCC compiled code *************** file @file{libgcc2.c}. To compile this *** 703,709 **** the same distribution that @file{libgcc2.c} came from, and @file{make-gcc.com} will automatically do all of this for you. ! To install the library, use the following commands:@refill @smallexample $ library gnu_cc:[000000]gcclib/delete=(new,eprintf) --- 628,634 ---- the same distribution that @file{libgcc2.c} came from, and @file{make-gcc.com} will automatically do all of this for you. ! To install the library, use the following commands: @smallexample $ library gnu_cc:[000000]gcclib/delete=(new,eprintf) *************** make minor changes in @file{make-cccp.co *** 767,773 **** to choose alternate definitions of @code{CC}, @code{CFLAGS}, and @code{LIBS}. See comments in those files. However, you must also have a working version of the GNU assembler (GNU as, aka GAS) as ! it is used as the back-end for GNU CC to produce binary object modules and is not included in the GNU CC sources. GAS is also needed to compile @file{libgcc2} in order to build @file{gcclib} (see above); @file{make-l2.com} expects to be able to find it operational in --- 692,698 ---- to choose alternate definitions of @code{CC}, @code{CFLAGS}, and @code{LIBS}. See comments in those files. However, you must also have a working version of the GNU assembler (GNU as, aka GAS) as ! it is used as the back end for GNU CC to produce binary object modules and is not included in the GNU CC sources. GAS is also needed to compile @file{libgcc2} in order to build @file{gcclib} (see above); @file{make-l2.com} expects to be able to find it operational in *************** compiles it, and links the program a sec *** 823,829 **** The actual calls to the constructors are carried out by a subroutine called @code{__main}, which is called (automatically) at the beginning of the body of @code{main} (provided @code{main} was compiled with GNU ! CC). Calling @code{__main} is necessary, even when compiling C code, to allow linking C and C++ object code together. (If you use @option{-nostdlib}, you get an unresolved reference to @code{__main}, since it's defined in the standard GCC library. Include @option{-lgcc} at --- 748,754 ---- The actual calls to the constructors are carried out by a subroutine called @code{__main}, which is called (automatically) at the beginning of the body of @code{main} (provided @code{main} was compiled with GNU ! CC)@. Calling @code{__main} is necessary, even when compiling C code, to allow linking C and C++ object code together. (If you use @option{-nostdlib}, you get an unresolved reference to @code{__main}, since it's defined in the standard GCC library. Include @option{-lgcc} at diff -Nrc3pad gcc-3.0/gcc/doc/install.texi gcc-3.0.1/gcc/doc/install.texi *** gcc-3.0/gcc/doc/install.texi Fri Jun 15 12:39:05 2001 --- gcc-3.0.1/gcc/doc/install.texi Fri Aug 17 16:32:52 2001 *************** *** 33,39 **** @settitle Installing GCC: Binaries @end ifset - @comment $Id: install.texi,v 1.1.2.27 2001/06/15 19:39:05 aj Exp $ @c Copyright (C) 2001 Free Software Foundation, Inc. @c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com --- 33,38 ---- *************** Copyright @copyright{} 2001 Free Softwar *** 75,81 **** @menu * Installing GCC:: This document describes the generic installation procedure for GCC as well as detailing some target ! specific installation instructions. * Specific:: Host/target specific installation notes for GCC. * Binaries:: Where to get pre-compiled binaries. --- 74,80 ---- @menu * Installing GCC:: This document describes the generic installation procedure for GCC as well as detailing some target ! specific installation instructions. * Specific:: Host/target specific installation notes for GCC. * Binaries:: Where to get pre-compiled binaries. *************** Copyright @copyright{} 2001 Free Softwar *** 99,126 **** @end ifnothtml The latest version of this document is always available at ! @uref{http://gcc.gnu.org/install/,,http://gcc.gnu.org/install/}. This document describes the generic installation procedure for GCC as well ! as detailing some target specific installation instructions. ! GCC includes several components that previously were separate distributions ! with their own installation instructions. This document supersedes all ! package specific installation instructions. We provide the component ! specific installation information in the source distribution for historical ! reference purposes only. ! @emph{Before} starting the build/install procedure please check the @ifnothtml ! @xref{Specific, host/target specific installation notes}. @end ifnothtml @ifnotinfo ! @uref{specific.html,,host/target specific installation notes}. @end ifnotinfo ! We recommend you browse the entire generic installation instructions before you proceed. ! The installation procedure itself is broken into five steps. @ifinfo @menu --- 98,128 ---- @end ifnothtml The latest version of this document is always available at ! @uref{http://gcc.gnu.org/install/,,http://gcc.gnu.org/install/}. This document describes the generic installation procedure for GCC as well ! as detailing some target specific installation instructions. ! GCC includes several components that previously were separate distributions ! with their own installation instructions. This document supersedes all ! package specific installation instructions. ! @emph{Before} starting the build/install procedure please check the @ifnothtml ! @ref{Specific, host/target specific installation notes}. @end ifnothtml @ifnotinfo ! @uref{specific.html,,host/target specific installation notes}. @end ifnotinfo ! We recommend you browse the entire generic installation instructions before you proceed. ! A ! @uref{http://gcc.gnu.org/gcc-3.0/buildstat.html,,list of successful builds} ! for GCC 3.0 releases is available at our web pages. This list is updated ! as new information becomes available. ! ! The installation procedure itself is broken into five steps. @ifinfo @menu *************** The installation procedure itself is bro *** 133,156 **** @end ifinfo @ifnotinfo @enumerate ! @item @uref{download.html,,Downloading the source} - @item - @uref{configure.html,,Configuration} @item ! @uref{build.html,,Building} ! @item ! @uref{test.html,,Testing} (optional) @item @uref{finalinstall.html,,Final install} @end enumerate @end ifnotinfo Please note that GCC does not support @samp{make uninstall} and probably ! won't do so in the near future as this would open a can of worms. Instead, we suggest that you install GCC into a directory of its own and simply remove that directory when you do not need that specific version of GCC ! any longer. @html
      --- 135,159 ---- @end ifinfo @ifnotinfo @enumerate ! @item @uref{download.html,,Downloading the source} @item ! @uref{configure.html,,Configuration} ! @item ! @uref{build.html,,Building} ! @item ! @uref{test.html,,Testing} (optional) @item @uref{finalinstall.html,,Final install} @end enumerate @end ifnotinfo Please note that GCC does not support @samp{make uninstall} and probably ! won't do so in the near future as this would open a can of worms. Instead, we suggest that you install GCC into a directory of its own and simply remove that directory when you do not need that specific version of GCC ! any longer, and, if shared libraries are installed there as well, no ! more binaries exist that use them. @html
      *************** any longer. *** 176,200 **** @cindex Downloading GCC @cindex Downloading the Source ! GCC is distributed via CVS and FTP tarballs compressed with @command{gzip} or @command{bzip2}. It is possible to download a full distribution or specific components. Please refer to our @uref{http://gcc.gnu.org/releases.html,,releases web page} ! for information on how to obtain GCC. The full distribution includes the C, C++, Objective-C, Fortran, Java, ! and Chill compilers. The full distribution also includes runtime libraries ! for C++, Objective-C, Fortran, Java and Chill. (GCC 3.0 does not ! include Chill. Releases before 3.0 do not include the Java runtime ! library.) In GCC 3.0 and later versions, GNU compiler testsuites are also included in the full distribution. If you choose to download specific components, you must download the core ! gcc distribution plus any language specific distributions you wish to ! use. The core distribution includes the C language front-end as well as the ! shared components. Each language has a tarball which includes the language ! front-end as well as the language runtime (when appropriate). Unpack the core distribution as well as any language specific distributions in the same directory. --- 179,203 ---- @cindex Downloading GCC @cindex Downloading the Source ! GCC is distributed via @uref{http://gcc.gnu.org/cvs.html,,CVS} and FTP ! tarballs compressed with @command{gzip} or @command{bzip2}. It is possible to download a full distribution or specific components. Please refer to our @uref{http://gcc.gnu.org/releases.html,,releases web page} ! for information on how to obtain GCC@. The full distribution includes the C, C++, Objective-C, Fortran, Java, ! and CHILL compilers. The full distribution also includes runtime libraries ! for C++, Objective-C, Fortran, Java and CHILL. (GCC 3.0 does not ! include CHILL.) In GCC 3.0 and later versions, GNU compiler testsuites are also included in the full distribution. If you choose to download specific components, you must download the core ! GCC distribution plus any language specific distributions you wish to ! use. The core distribution includes the C language front end as well as the ! shared components. Each language has a tarball which includes the language ! front end as well as the language runtime (when appropriate). Unpack the core distribution as well as any language specific distributions in the same directory. *************** where @var{srcdir} == @var{objdir} shoul *** 249,255 **** get extensive testing; building where @var{objdir} is a subdirectory of @var{srcdir} is unsupported. ! If you have built GNU CC previously in the same directory for a different target machine, do @samp{make distclean} to delete all files that might be invalid. One of the files this deletes is @file{Makefile}; if @samp{make distclean} complains that @file{Makefile} --- 252,258 ---- get extensive testing; building where @var{objdir} is a subdirectory of @var{srcdir} is unsupported. ! If you have previously built GCC in the same directory for a different target machine, do @samp{make distclean} to delete all files that might be invalid. One of the files this deletes is @file{Makefile}; if @samp{make distclean} complains that @file{Makefile} *************** Second, when configuring a native system *** 263,274 **** your environment before running configure. Otherwise the configuration scripts may fail. To configure GCC: @example % mkdir @var{objdir} % cd @var{objdir} ! % @var{srcdir}/configure [@var{target}] [@var{options}] @end example --- 266,288 ---- your environment before running configure. Otherwise the configuration scripts may fail. + Note that the bootstrap compiler and the resulting GCC must be link + compatible, else the bootstrap will fail with linker errors about + incompatible object file formats. Several multilibed targets are + affected by this requirement, see + @ifnothtml + @ref{Specific, host/target specific installation notes}. + @end ifnothtml + @ifnotinfo + @uref{specific.html,,host/target specific installation notes}. + @end ifnotinfo + To configure GCC: @example % mkdir @var{objdir} % cd @var{objdir} ! % @var{srcdir}/configure [@var{options}] [@var{target}] @end example *************** To configure GCC: *** 276,287 **** @itemize @bullet @item GCC has code to correctly determine the correct value for @var{target} ! for nearly all native systems. Therefore, we highly recommend you not provide a configure target when configuring a native compiler. @item @var{target} must be specified as @option{--target=@var{target}} ! when configuring a cross compiler; examples of valid targets would be i960-rtems, m68k-coff, sh-elf, etc. @item --- 290,301 ---- @itemize @bullet @item GCC has code to correctly determine the correct value for @var{target} ! for nearly all native systems. Therefore, we highly recommend you not provide a configure target when configuring a native compiler. @item @var{target} must be specified as @option{--target=@var{target}} ! when configuring a cross compiler; examples of valid targets would be i960-rtems, m68k-coff, sh-elf, etc. @item *************** implies that the host defaults to @var{t *** 293,299 **** @heading Options specification Use @var{options} to override several configure time options for ! GCC. A partial list of supported @var{options}: @table @code @item --prefix=@var{dirname} --- 307,313 ---- @heading Options specification Use @var{options} to override several configure time options for ! GCC@. A partial list of supported @var{options}: @table @code @item --prefix=@var{dirname} *************** Specify the installation directory for t *** 320,326 **** @item --libdir=@var{dirname} Specify the installation directory for object code libraries and ! internal parts of GCC. The default is @file{@var{exec-prefix}/lib}. @item --with-slibdir=@var{dirname} Specify the installation directory for the shared libgcc library. The --- 334,340 ---- @item --libdir=@var{dirname} Specify the installation directory for object code libraries and ! internal parts of GCC@. The default is @file{@var{exec-prefix}/lib}. @item --with-slibdir=@var{dirname} Specify the installation directory for the shared libgcc library. The *************** manual.) *** 340,346 **** @item --with-gxx-include-dir=@var{dirname} Specify ! the installation directory for g++ header files. The default is @file{@var{prefix}/include/g++-v3}. @end table --- 354,360 ---- @item --with-gxx-include-dir=@var{dirname} Specify ! the installation directory for G++ header files. The default is @file{@var{prefix}/include/g++-v3}. @end table *************** logical. *** 364,370 **** The purpose of @option{--prefix} is to specify where to @emph{install GCC}. The local header files in @file{/usr/local/include}---if you put ! any in that directory---are not part of GCC. They are part of other programs---perhaps many others. (GCC installs its own header files in another directory which is based on the @option{--prefix} value.) --- 378,384 ---- The purpose of @option{--prefix} is to specify where to @emph{install GCC}. The local header files in @file{/usr/local/include}---if you put ! any in that directory---are not part of GCC@. They are part of other programs---perhaps many others. (GCC installs its own header files in another directory which is based on the @option{--prefix} value.) *************** file corrections made by the @code{fixin *** 377,389 **** 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 ! install part of GCC. Perhaps they make this assumption because installing GCC creates the directory. @item --enable-shared[=@var{package}[,@dots{}]] Build shared versions of libraries, if shared libraries are supported on the target platform. Unlike GCC 2.95.x and earlier, shared libraries ! are enabled by default on all platforms that support shared libraries. If a list of packages is given as an argument, build shared libraries only for the listed packages. For other packages, only static libraries --- 391,405 ---- 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 ! install part of GCC@. Perhaps they make this assumption because installing GCC creates the directory. @item --enable-shared[=@var{package}[,@dots{}]] Build shared versions of libraries, if shared libraries are supported on the target platform. Unlike GCC 2.95.x and earlier, shared libraries ! are enabled by default on all platforms that support shared libraries, ! except for @samp{libobjc} which is built as a static library only by ! default. If a list of packages is given as an argument, build shared libraries only for the listed packages. For other packages, only static libraries *************** will be built. Package names currently *** 392,398 **** @samp{libstdc++-v3}), @samp{libffi}, @samp{zlib}, @samp{boehm-gc} and @samp{libjava}. Note that @samp{libobjc} does not recognize itself by any name, so, if you list package names in @option{--enable-shared}, ! you'll only get static Objective C libraries. @samp{libf2c} and @samp{libiberty} do not support shared libraries at all. Use @option{--disable-shared} to build only static libraries. Note that --- 408,414 ---- @samp{libstdc++-v3}), @samp{libffi}, @samp{zlib}, @samp{boehm-gc} and @samp{libjava}. Note that @samp{libobjc} does not recognize itself by any name, so, if you list package names in @option{--enable-shared}, ! you will only get static Objective-C libraries. @samp{libf2c} and @samp{libiberty} do not support shared libraries at all. Use @option{--disable-shared} to build only static libraries. Note that *************** argument, only @option{--enable-shared} *** 401,413 **** @item @anchor{with-gnu-as}--with-gnu-as Specify that the compiler should assume that the ! assembler it finds is the GNU assembler. However, this does not modify the rules to find an assembler and will result in confusion if found ! assembler is not actually the GNU assembler. If you have more than one assembler installed on your system, you may want to use this option in ! connection with @option{--with-as=@file{/path/to/gas}}. ! @item --with-as=@file{/path/to/as} Specify that the compiler should use the assembler pointed to by @var{pathname}, rather than the one found by the standard rules to find an assembler, which --- 417,445 ---- @item @anchor{with-gnu-as}--with-gnu-as Specify that the compiler should assume that the ! assembler it finds is the GNU assembler. However, this does not modify the rules to find an assembler and will result in confusion if found ! assembler is not actually the GNU assembler. (Confusion will also ! result if the compiler finds the GNU assembler but has not been ! 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. ! ! 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, ! you should also use the GNU linker (and specify @option{--with-gnu-ld}). ! ! @item --with-as=@var{pathname} Specify that the compiler should use the assembler pointed to by @var{pathname}, rather than the one found by the standard rules to find an assembler, which *************** Check the *** 418,431 **** @file{@var{exec_prefix}/lib/gcc-lib/@var{target}/@var{version}} directory, where @var{exec_prefix} defaults to @var{prefix} which defaults to @file{/usr/local} unless overridden by the ! @option{--prefix=/pathname} switch described above. @var{target} is the ! target system triple, such as @var{sparc-sun-solaris2.7}, and ! @var{version} denotes the GCC version, such as 2.95.2. @item ! Check operating system specific directories (e.g. @file{/usr/ccs/bin} on Sun Solaris). @end itemize ! Note that these rules do not check for the value of @env{PATH}. You may want to use @option{--with-as} if no assembler is installed in the directories listed above, or if you have multiple assemblers installed and want to choose one that is not found by the above rules. --- 450,463 ---- @file{@var{exec_prefix}/lib/gcc-lib/@var{target}/@var{version}} directory, where @var{exec_prefix} defaults to @var{prefix} which defaults to @file{/usr/local} unless overridden by the ! @option{--prefix=@var{pathname}} switch described above. @var{target} is the ! target system triple, such as @samp{sparc-sun-solaris2.7}, and ! @var{version} denotes the GCC version, such as 3.0. @item ! Check operating system specific directories (e.g.@: @file{/usr/ccs/bin} on Sun Solaris). @end itemize ! Note that these rules do not check for the value of @env{PATH}. You may want to use @option{--with-as} if no assembler is installed in the directories listed above, or if you have multiple assemblers installed and want to choose one that is not found by the above rules. *************** Same as @uref{#with-gnu-as,,@option{--wi *** 435,441 **** but for linker. ! @item --with-ld=@file{/path/to/ld} Same as @option{--with-as}, but for the linker. --- 467,473 ---- but for linker. ! @item --with-ld=@var{pathname} Same as @option{--with-as}, but for the linker. *************** Specify that stabs debugging *** 444,453 **** information should be used instead of whatever format the host normally uses. Normally GCC uses the same debug format as the host system. ! @item --enable-multilib Specify that multiple target ! libraries should be built to support different target variants, calling ! conventions, etc. This is the default. @item --enable-threads Specify that the target --- 476,533 ---- information should be used instead of whatever format the host normally uses. Normally GCC uses the same debug format as the host system. ! On MIPS based systems and on Alphas, you must specify whether you want ! GCC to create the normal ECOFF debugging format, or to use BSD-style ! stabs passed through the ECOFF symbol table. The normal ECOFF debug ! format cannot fully handle languages other than C@. BSD stabs format can ! handle other languages, but it only works with the GNU debugger GDB@. ! ! Normally, GCC uses the ECOFF debugging format by default; if you ! prefer BSD stabs, specify @option{--with-stabs} when you configure GCC@. ! ! No matter which default you choose when you configure GCC, the user ! can use the @option{-gcoff} and @option{-gstabs+} options to specify explicitly ! the debug format for a particular compilation. ! ! @option{--with-stabs} is meaningful on the ISC system on the 386, also, if ! @option{--with-gas} is used. It selects use of stabs debugging ! information embedded in COFF output. This kind of debugging information ! supports C++ well; ordinary COFF debugging information does not. ! ! @option{--with-stabs} is also meaningful on 386 systems running SVR4. It ! selects use of stabs debugging information embedded in ELF output. The ! C++ compiler currently (2.6.0) does not support the DWARF debugging ! information normally used on 386 SVR4 platforms; stabs provide a ! workable alternative. This requires gas and gdb, as the normal SVR4 ! tools can not generate or interpret stabs. ! ! @item --disable-multilib Specify that multiple target ! libraries to support different target variants, calling ! conventions, etc should not be built. The default is to build a ! predefined set of them. ! ! Some targets provide finer-grained control over which multilibs are built ! (e.g., @option{--disable-softfloat}): ! @table @code ! ! @item arc-*-elf* ! biendian. ! ! @item arm-*-* ! fpu, 26bit, underscore, interwork, biendian, nofmult. ! ! @item m68*-*-* ! softfloat, m68881, m68000, m68020. ! ! @item mips*-*-* ! single-float, biendian, softfloat. ! ! @item powerpc*-*-*, rs6000*-*-* ! aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian, ! sysv, aix. ! ! @end table @item --enable-threads Specify that the target *************** supports threads. This affects the Obje *** 455,460 **** --- 535,550 ---- library, and exception handling for other languages like C++ and Java. On some systems, this is the default. + In general, the best (and, in many cases, the only known) threading + model available will be configured for use. Beware that on some + systems, gcc has not been taught what threading models are generally + available for the system. In this case, @option{--enable-threads} is an + alias for @option{--enable-threads=single}. + + @item --disable-threads + Specify that threading support should be disabled for the system. + This is an alias for @option{--enable-threads=single}. + @item --enable-threads=@var{lib} Specify that @var{lib} is the thread support library. This affects the Objective-C *************** like C++ and Java. The possibilities fo *** 466,487 **** AIX thread support. @item dce DCE thread support. - @item decosf1 - DEC OSF/1 thread support. - @item irix - SGI IRIX thread support. @item mach ! Generic MACH thread support, known to work on NEXTSTEP. ! @item os2 ! IBM OS/2 thread support. @item posix Generic POSIX thread support. @item pthreads ! Same as @samp{posix}. @item single Disable thread support, should work for all platforms. @item solaris ! SUN Solaris thread support. @item vxworks VxWorks thread support. @item win32 --- 556,579 ---- AIX thread support. @item dce DCE thread support. @item mach ! Generic MACH thread support, known to work on NeXTSTEP@. (Please note ! that the file needed to support this configuration, @file{gthr-mach.h}, is ! missing and thus this setting will cause a known bootstrap failure.) ! @item no ! This is an alias for @samp{single}. @item posix Generic POSIX thread support. @item pthreads ! Same as @samp{posix} on arm*-*-linux*, *-*-chorusos* and *-*-freebsd* ! only. A future release of gcc might remove this alias or extend it ! to all platforms. ! @item rtems ! RTEMS thread support. @item single Disable thread support, should work for all platforms. @item solaris ! Sun Solaris 2 thread support. @item vxworks VxWorks thread support. @item win32 *************** Microsoft Win32 API thread support. *** 492,498 **** Specify which cpu variant the compiler should generate code for by default. This is currently only supported on the some ports, specifically arm, powerpc, and ! SPARC. If configure does not recognize the model name (e.g. arm700, 603e, or ultrasparc) you provide, please check the configure script for a complete list of supported models. --- 584,590 ---- Specify which cpu variant the compiler should generate code for by default. This is currently only supported on the some ports, specifically arm, powerpc, and ! SPARC@. If configure does not recognize the model name (e.g.@: arm700, 603e, or ultrasparc) you provide, please check the configure script for a complete list of supported models. *************** in @file{@var{prefix}/@var{dirname}/cpp} *** 511,544 **** @item --enable-maintainer-mode The build rules that regenerate the GCC master message catalog @file{gcc.pot} are normally ! disabled. This is because it can only be rebuilt if the complete source ! tree is present. If you have changed the sources and want to rebuild the catalog, configuring with @option{--enable-maintainer-mode} will enable ! this. Note that you need a recent version of the @code{gettext} tools to do so. @item --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in the compiler specific subdirectory (@file{@var{libsubdir}}) rather than the usual places. In ! addition, libstdc++'s include files will be installed in @file{@var{libsubdir}/include/g++} unless you overruled it by using @option{--with-gxx-include-dir=@var{dirname}}. Using this option is particularly useful if you intend to use several versions of GCC in parallel. This is currently supported by @samp{libf2c} and ! @samp{libstdc++}. @item --enable-languages=@var{lang1},@var{lang2},@dots{} Specify that only a particular subset of compilers and ! their runtime libraries should be built. For a list of valid values for @var{langN} you can issue the following command in the ! @file{gcc} directory of your GCC source tree:@* @samp{grep language= ! */config-lang.in}@* Currently, you can use any of the following: ! @code{c++}, @code{f77}, @code{java} and @code{objc}. @code{CHILL} is not currently maintained, and will almost ! certainly fail to compile. Note that this switch does not work with ! EGCS 1.1.2 or older versions of egcs. It is supported in GCC 2.95 ! and newer versions.@* If you do not pass this flag, all languages available in the @file{gcc} sub-tree will be configured. Re-defining @code{LANGUAGES} when calling @samp{make bootstrap} @strong{does not} work anymore, as those --- 603,638 ---- @item --enable-maintainer-mode The build rules that regenerate the GCC master message catalog @file{gcc.pot} are normally ! disabled. This is because it can only be rebuilt if the complete source ! tree is present. If you have changed the sources and want to rebuild the catalog, configuring with @option{--enable-maintainer-mode} will enable ! this. Note that you need a recent version of the @code{gettext} tools to do so. @item --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in the compiler specific subdirectory (@file{@var{libsubdir}}) rather than the usual places. In ! addition, @samp{libstdc++}'s include files will be installed in @file{@var{libsubdir}/include/g++} unless you overruled it by using @option{--with-gxx-include-dir=@var{dirname}}. Using this option is particularly useful if you intend to use several versions of GCC in parallel. This is currently supported by @samp{libf2c} and ! @samp{libstdc++}, and is the default for @samp{libobjc} which cannot be ! changed in this case. @item --enable-languages=@var{lang1},@var{lang2},@dots{} Specify that only a particular subset of compilers and ! their runtime libraries should be built. For a list of valid values for @var{langN} you can issue the following command in the ! @file{gcc} directory of your GCC source tree:@* ! @example ! grep language= */config-lang.in ! @end example ! Currently, you can use any of the following: ! @code{c}, @code{c++}, @code{f77}, @code{java} and @code{objc}. @code{CHILL} is not currently maintained, and will almost ! certainly fail to compile.@* If you do not pass this flag, all languages available in the @file{gcc} sub-tree will be configured. Re-defining @code{LANGUAGES} when calling @samp{make bootstrap} @strong{does not} work anymore, as those *************** Specify that the run-time libraries *** 549,580 **** used by GCJ should not be built. This is useful in case you intend to use GCJ with some other run-time, or you're going to install it separately, or it just happens not to build on your particular ! machine. In general, if the Java front-end is enabled, the GCJ libraries will be enabled too, unless they're known to not work on ! the target platform. If GCJ is enabled but libgcj isn't built, you may need to port it; in this case, before modifying the top-level ! @file{configure.in} so that libgcj is enabled by default on this platform, you may use @option{--enable-libgcj} to override the default. @item --with-dwarf2 Specify that the compiler should ! use DWARF2 debugging information as the default. @item --enable-win32-registry ! @itemx --enable-win32-registry=@var{KEY} @itemx --disable-win32-registry The @option{--enable-win32-registry} option enables Windows-hosted GCC to look up installations paths in the registry using the following key: @smallexample ! @code{HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\@var{KEY}} @end smallexample ! @var{KEY} defaults to GCC version number, and can be overridden by the ! @option{--enable-win32-registry=@var{KEY}} option. Vendors and distributors who use custom installers are encouraged to provide a different key, perhaps one comprised of vendor name and GCC version number, to ! avoid conflict with existing installations. This feature is enabled by default, and can be disabled by @option{--disable-win32-registry} option. This option has no effect on the other hosts. --- 643,674 ---- used by GCJ should not be built. This is useful in case you intend to use GCJ with some other run-time, or you're going to install it separately, or it just happens not to build on your particular ! machine. In general, if the Java front end is enabled, the GCJ libraries will be enabled too, unless they're known to not work on ! the target platform. If GCJ is enabled but @samp{libgcj} isn't built, you may need to port it; in this case, before modifying the top-level ! @file{configure.in} so that @samp{libgcj} is enabled by default on this platform, you may use @option{--enable-libgcj} to override the default. @item --with-dwarf2 Specify that the compiler should ! use DWARF 2 debugging information as the default. @item --enable-win32-registry ! @itemx --enable-win32-registry=@var{key} @itemx --disable-win32-registry The @option{--enable-win32-registry} option enables Windows-hosted GCC to look up installations paths in the registry using the following key: @smallexample ! @code{HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\@var{key}} @end smallexample ! @var{key} defaults to GCC version number, and can be overridden by the ! @option{--enable-win32-registry=@var{key}} option. Vendors and distributors who use custom installers are encouraged to provide a different key, perhaps one comprised of vendor name and GCC version number, to ! avoid conflict with existing installations. This feature is enabled by default, and can be disabled by @option{--disable-win32-registry} option. This option has no effect on the other hosts. *************** of tree node types when referencing fiel *** 590,596 **** internal consistency checks. This does not change the generated code, but adds error checking within the compiler. This will slow down the compiler and may only work properly if you are building the compiler ! with GNU C. This is on by default when building from CVS or snapshots, but off for releases. More control over the checks may be had by specifying @var{list}; the categories of checks available are @samp{misc}, @samp{tree}, @samp{gc}, @samp{rtl} and @samp{gcac}. The --- 684,690 ---- internal consistency checks. This does not change the generated code, but adds error checking within the compiler. This will slow down the compiler and may only work properly if you are building the compiler ! with GCC@. This is on by default when building from CVS or snapshots, but off for releases. More control over the checks may be had by specifying @var{list}; the categories of checks available are @samp{misc}, @samp{tree}, @samp{gc}, @samp{rtl} and @samp{gcac}. The *************** checks @samp{rtl} and @samp{gcac} are ve *** 601,612 **** @itemx --disable-nls The @option{--enable-nls} option enables Native Language Support (NLS), which lets GCC output diagnostics in languages other than American ! English. Native Language Support is enabled by default if not doing a ! canadian cross build. The @option{--disable-nls} option disables NLS. @item --with-included-gettext If NLS is enabled, the @option{--with-included-gettext} option causes the build ! procedure to prefer its copy of GNU @code{gettext}. @item --with-catgets If NLS is enabled, and if the host lacks @code{gettext} but has the --- 695,706 ---- @itemx --disable-nls The @option{--enable-nls} option enables Native Language Support (NLS), which lets GCC output diagnostics in languages other than American ! English. Native Language Support is enabled by default if not doing a ! canadian cross build. The @option{--disable-nls} option disables NLS@. @item --with-included-gettext If NLS is enabled, the @option{--with-included-gettext} option causes the build ! procedure to prefer its copy of GNU @command{gettext}. @item --with-catgets If NLS is enabled, and if the host lacks @code{gettext} but has the *************** which has target include files. *** 625,642 **** 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{gcc}. @item --with-libs=``@var{dir1} @var{dir2} @dots{} @var{dirN}'' Specifies a list of directories which contain the target runtime libraries. These libraries will be copied into the @file{gcc} install directory. @item --with-newlib ! Specifies that ``newlib'' is being used as the target C library. This causes @code{__eprintf} to be ! omitted from libgcc.a on the assumption that it will be provided by ! newlib. @end table ! Note that each @option{--enable} option has a corresponding @option{--disable} option and that each @option{--with} option has a corresponding @option{--without} option. --- 719,736 ---- 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 ! GCC. @item --with-libs=``@var{dir1} @var{dir2} @dots{} @var{dirN}'' Specifies a list of directories which contain the target runtime libraries. These libraries will be copied into the @file{gcc} install directory. @item --with-newlib ! Specifies that @samp{newlib} is being used as the target C library. This causes @code{__eprintf} to be ! omitted from @file{libgcc.a} on the assumption that it will be provided by ! @samp{newlib}. @end table ! Note that each @option{--enable} option has a corresponding @option{--disable} option and that each @option{--with} option has a corresponding @option{--without} option. *************** result in a failure to fix the declarati *** 699,705 **** @file{sys/types.h}. If you find that @code{size_t} is a signed type and that type mismatches occur, this could be the cause. ! The solution is not to use such a directory for building GCC. When building from CVS or snapshots, or if you modify parser sources, you need the Bison parser generator installed. Any version 1.25 or --- 793,799 ---- @file{sys/types.h}. If you find that @code{size_t} is a signed type and that type mismatches occur, this could be the cause. ! The solution is not to use such a directory for building GCC@. When building from CVS or snapshots, or if you modify parser sources, you need the Bison parser generator installed. Any version 1.25 or *************** documentation pre-built for the unmodifi *** 714,720 **** @section Building a native compiler ! For a native build issue the command @samp{make bootstrap}. This will build the entire GCC system, which includes the following steps: @itemize @bullet --- 808,814 ---- @section Building a native compiler ! For a native build issue the command @samp{make bootstrap}. This will build the entire GCC system, which includes the following steps: @itemize @bullet *************** gperf. *** 724,730 **** @item Build target tools for use by the compiler such as binutils (bfd, ! binutils, gas, gprof, ld, and opcodes)@* if they have been individually linked or moved into the top level GCC source tree before configuring. --- 818,824 ---- @item Build target tools for use by the compiler such as binutils (bfd, ! binutils, gas, gprof, ld, and opcodes) if they have been individually linked or moved into the top level GCC source tree before configuring. *************** Perform a comparison test of the stage2 *** 736,742 **** @item Build runtime libraries using the stage3 compiler from the previous step. ! @end itemize If you are short on disk space you might consider @samp{make --- 830,836 ---- @item Build runtime libraries using the stage3 compiler from the previous step. ! @end itemize If you are short on disk space you might consider @samp{make *************** without debugging information with @samp *** 753,760 **** roughly 40% of disk space both for the bootstrap and the final installation. (Libraries will still contain debugging information.) ! If you wish to use non-default flags when compiling the stage2 and ! stage3 compile, set @code{BOOT_CFLAGS} on the command line when doing @samp{make bootstrap}. Non-default optimization flags are less well tested here than the default of @samp{-g -O2}, but should still work. In a few cases, you may find that you need to specify special flags such --- 847,854 ---- roughly 40% of disk space both for the bootstrap and the final installation. (Libraries will still contain debugging information.) ! 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 tested here than the default of @samp{-g -O2}, but should still work. In a few cases, you may find that you need to specify special flags such *************** bootstrap4} to increase the number of st *** 766,778 **** If you used the flag @option{--enable-languages=@dots{}} to restrict the compilers to be built, only those you've actually enabled will be ! built. This will of course only build those runtime libraries, for which the particular compiler has been built. Please note, ! that re-defining LANGUAGES when calling @samp{make bootstrap} @strong{does not} work anymore! If the comparison of stage2 and stage3 fails, this normally indicates ! that the stage 2 compiler has compiled GCC incorrectly, and is therefore a potentially serious bug which you should investigate and report. (On a few systems, meaningful comparison of object files is impossible; they always appear ``different''. If you encounter this problem, you will --- 860,872 ---- If you used the flag @option{--enable-languages=@dots{}} to restrict the compilers to be built, only those you've actually enabled will be ! built. This will of course only build those runtime libraries, for which the particular compiler has been built. Please note, ! that re-defining @env{LANGUAGES} when calling @samp{make bootstrap} @strong{does not} work anymore! If the comparison of stage2 and stage3 fails, this normally indicates ! that the stage2 compiler has compiled GCC incorrectly, and is therefore a potentially serious bug which you should investigate and report. (On a few systems, meaningful comparison of object files is impossible; they always appear ``different''. If you encounter this problem, you will *************** for information about building cross com *** 786,792 **** When building a cross compiler, it is not generally possible to do a 3-stage bootstrap of the compiler. This makes for an interesting problem ! as parts of GCC can only be built with GCC. To build a cross compiler, we first recommend building and installing a native compiler. You can then use the native GCC compiler to build the --- 880,886 ---- When building a cross compiler, it is not generally possible to do a 3-stage bootstrap of the compiler. This makes for an interesting problem ! as parts of GCC can only be built with GCC@. To build a cross compiler, we first recommend building and installing a native compiler. You can then use the native GCC compiler to build the *************** Note that if an error occurs in any step *** 821,827 **** If you have a multiprocessor system you can use @samp{make bootstrap MAKE="make -j 2" -j 2} or just @samp{make -j 2 bootstrap} for GNU Make 3.79 and above instead of just @samp{make bootstrap} ! when building GCC. You can use a bigger number instead of two if you like. In most cases, it won't help to use a number bigger than the number of processors in your machine. --- 915,921 ---- If you have a multiprocessor system you can use @samp{make bootstrap MAKE="make -j 2" -j 2} or just @samp{make -j 2 bootstrap} for GNU Make 3.79 and above instead of just @samp{make bootstrap} ! when building GCC@. You can use a bigger number instead of two if you like. In most cases, it won't help to use a number bigger than the number of processors in your machine. *************** the number of processors in your machine *** 850,864 **** @cindex Installing GCC: Testing @cindex Testsuite ! @strong{Please note that this is only applicable ! to current development versions of GCC and GCC 3.0 or later. ! GCC 2.95.x does not come with a testsuite.} ! ! Before you install GCC, you might wish to run the testsuite. This step is optional and may require you to download additional software. ! First, you must have @uref{download.html,,downloaded the testsuites}. ! The full distribution contains testsuites; only if you downloaded the ``core'' compiler plus any front ends, you do not have the testsuites. Second, you must have a @uref{http://www.gnu.org/software/dejagnu/,,current version of DejaGnu} installed; --- 944,954 ---- @cindex Installing GCC: Testing @cindex Testsuite ! Before you install GCC, you might wish to run the testsuite. This step is optional and may require you to download additional software. ! First, you must have @uref{download.html,,downloaded the testsuites}. ! The full distribution contains testsuites; only if you downloaded the ``core'' compiler plus any front ends, you do not have the testsuites. Second, you must have a @uref{http://www.gnu.org/software/dejagnu/,,current version of DejaGnu} installed; *************** dejagnu 1.3 is not sufficient. *** 867,877 **** Now you may need specific preparations: @itemize @bullet - @item - In order to run the libio tests in GCC 2.95 and earlier versions of GCC - on targets which do not fully - support Unix/POSIX commands (e.g. Cygwin), the references to the @file{dbz} - directory have to be deleted from @file{libio/configure.in}. @item The following environment variables may need to be set appropriately, as in --- 957,962 ---- *************** Finally, you can run the testsuite (whic *** 899,925 **** @end example The testing process will try to test as many components in the GCC ! distribution as possible, including the C, C++, Objective C and Fortran compilers as well as the C++ and Java runtime libraries. @section How can I run the test suite on selected tests? As a first possibility to cut down the number of tests that are run it is possible to use @samp{make check-gcc} or @samp{make check-g++} ! in the gcc subdirectory of the object directory. To further cut down the tests the following is possible: @example make check-gcc RUNTESTFLAGS="execute.exp @var{other-options}" @end example ! This will run all gcc execute tests in the testsuite. @example make check-g++ RUNTESTFLAGS="old-deja.exp=9805* @var{other-options}" @end example ! This will run the g++ ``old-deja'' tests in the testsuite where the filename matches @samp{9805*}. The @file{*.exp} files are located in the testsuite directories of the GCC --- 984,1010 ---- @end example The testing process will try to test as many components in the GCC ! distribution as possible, including the C, C++, Objective-C and Fortran compilers as well as the C++ and Java runtime libraries. @section How can I run the test suite on selected tests? As a first possibility to cut down the number of tests that are run it is possible to use @samp{make check-gcc} or @samp{make check-g++} ! in the @file{gcc} subdirectory of the object directory. To further cut down the tests the following is possible: @example make check-gcc RUNTESTFLAGS="execute.exp @var{other-options}" @end example ! This will run all @command{gcc} execute tests in the testsuite. @example make check-g++ RUNTESTFLAGS="old-deja.exp=9805* @var{other-options}" @end example ! This will run the @command{g++} ``old-deja'' tests in the testsuite where the filename matches @samp{9805*}. The @file{*.exp} files are located in the testsuite directories of the GCC *************** output of @samp{make check} into a file *** 932,940 **** @section How to interpret test results After the testsuite has run you'll find various @file{*.sum} and @file{*.log} ! files in the testsuite subdirectories. The @file{*.log} files contain a detailed log of the compiler invocations and the corresponding ! results, the @file{*.sum} files summarize the results. These summaries list all the tests that have been run with a corresponding status code: @itemize @bullet --- 1017,1025 ---- @section How to interpret test results After the testsuite has run you'll find various @file{*.sum} and @file{*.log} ! files in the testsuite subdirectories. The @file{*.log} files contain a detailed log of the compiler invocations and the corresponding ! results, the @file{*.sum} files summarize the results. These summaries list all the tests that have been run with a corresponding status code: @itemize @bullet *************** problem in future releases. *** 963,969 **** @section Submitting test results If you want to report the results to the GCC project, use the ! @file{contrib/test_summary} shell script. Start it in the @var{objdir} with @example @var{srcdir}/contrib/test_summary -p your_commentary.txt \ --- 1048,1054 ---- @section Submitting test results If you want to report the results to the GCC project, use the ! @file{contrib/test_summary} shell script. Start it in the @var{objdir} with @example @var{srcdir}/contrib/test_summary -p your_commentary.txt \ *************** If you want to report the results to the *** 971,984 **** @end example This script uses the @command{Mail} program to send the results, so ! make sure it is in your @env{PATH}. The file @file{your_commentary.txt} is prepended to the testsuite summary and should contain any special ! remarks you have on your results or your build environment. Please do not edit the testsuite result block or the subject line, as these ! messages are automatically parsed and presented at the @uref{http://gcc.gnu.org/testresults/,,GCC testresults} web page. Here you can also gather information on how specific tests ! behave on different platforms and compare them with your results. A few failing testcases are possible even on released versions and you should look here first if you think your results are unreasonable. --- 1056,1069 ---- @end example This script uses the @command{Mail} program to send the results, so ! make sure it is in your @env{PATH}. The file @file{your_commentary.txt} is prepended to the testsuite summary and should contain any special ! remarks you have on your results or your build environment. Please do not edit the testsuite result block or the subject line, as these ! messages are automatically parsed and presented at the @uref{http://gcc.gnu.org/testresults/,,GCC testresults} web page. Here you can also gather information on how specific tests ! behave on different platforms and compare them with your results. A few failing testcases are possible even on released versions and you should look here first if you think your results are unreasonable. *************** should look here first if you think your *** 997,1004 **** @chapter Installing GCC: Final installation @end ifnothtml ! Now that GCC has been built and tested, you can install it with ! @samp{cd @var{objdir}; make install}. That step completes the installation of GCC; user level binaries can be found in @file{@var{prefix}/bin} where @var{prefix} is the value you --- 1082,1091 ---- @chapter Installing GCC: Final installation @end ifnothtml ! Now that GCC has been built (and optionally tested), you can install it with ! @example ! cd @var{objdir}; make install ! @end example That step completes the installation of GCC; user level binaries can be found in @file{@var{prefix}/bin} where @var{prefix} is the value you *************** in @file{@var{libdir}} (normally @file{@ *** 1011,1025 **** 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 don't mind, please quickly review the ! @uref{http://gcc.gnu.org/gcc-3.0/buildstat.html,,build status page}. If your system is not listed, send a note to ! @uref{mailto:gcc@@gcc.gnu.org,,gcc@@gcc.gnu.org} indicating that you successfully built and installed GCC. Include the output from running @file{@var{srcdir}/config.guess}. (Do ! not send us the config.guess file itself, just the one-line output from ! running it!) If you find a bug, please report it following our @uref{../bugs.html,,bug reporting guidelines}. --- 1098,1123 ---- 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 don't mind, please quickly review the ! @uref{http://gcc.gnu.org/gcc-3.0/buildstat.html,,3.0 build status page}. If your system is not listed, send a note to ! @email{gcc@@gcc.gnu.org} indicating that you successfully built and installed GCC. Include the output from running @file{@var{srcdir}/config.guess}. (Do ! not send us the @file{config.guess} file itself, just the one-line output from ! running it!) Also specify which version you built. ! ! We'd also like to know if the ! @ifnothtml ! @ref{Specific, host/target specific installation notes} ! @end ifnothtml ! @ifhtml ! @uref{specific.html,,host/target specific installation notes} ! @end ifhtml ! didn't include your host/target information or if that information is ! incomplete or out of date. Send a note to ! @email{gcc@@gcc.gnu.org} telling us how the information should be changed. If you find a bug, please report it following our @uref{../bugs.html,,bug reporting guidelines}. *************** subdirectories of @file{@var{objdir}}; t *** 1031,1037 **** printing with programs such as @command{dvips}. You can also @uref{http://www.gnu.org/order/order.html,,buy printed manuals from the Free Software Foundation}, though such manuals may not be for the most ! recent version of GCC. @html
      --- 1129,1135 ---- printing with programs such as @command{dvips}. You can also @uref{http://www.gnu.org/order/order.html,,buy printed manuals from the Free Software Foundation}, though such manuals may not be for the most ! recent version of GCC@. @html
      *************** recent version of GCC. *** 1057,1063 **** @cindex Binaries @cindex Installing GCC: Binaries ! We are often asked about pre-compiled versions of GCC. While we cannot provide these for all platforms, below you'll find links to binaries for various platforms where creating them by yourself is not easy due to various reasons. --- 1155,1161 ---- @cindex Binaries @cindex Installing GCC: Binaries ! We are often asked about pre-compiled versions of GCC@. While we cannot provide these for all platforms, below you'll find links to binaries for various platforms where creating them by yourself is not easy due to various reasons. *************** contact their makers. *** 1071,1081 **** AIX: @itemize @item ! @uref{http://www-frec.bull.com/docs/download.htm,,Bull's Freeware and ! Shareware Archive for AIX}; @item ! @uref{http://aixpdlib.seas.ucla.edu,,UCLA Software Library for AIX}; @end itemize @item --- 1169,1178 ---- AIX: @itemize @item ! @uref{http://freeware.bull.net,,Bull's Freeware and Shareware Archive for AIX}; @item ! @uref{http://aixpdslib.seas.ucla.edu,,UCLA Software Library for AIX}; @end itemize @item *************** Development Tools for the Hitachi H8/300 *** 1117,1127 **** In addition to those specific offerings, you can get a binary distribution CD-ROM from the ! @uref{http://www.fsf.org/order/order.html,,Free Software Foundation}. It contains binaries for a number of platforms, and ! includes not only GCC, but other stuff as well. The current CD does not contain the latest version of GCC, but it should allow ! bootstrapping the compiler. An updated version of that disk is in the works. @html --- 1214,1224 ---- In addition to those specific offerings, you can get a binary distribution CD-ROM from the ! @uref{http://www.fsf.org/order/order.html,,Free Software Foundation}. It contains binaries for a number of platforms, and ! includes not only GCC, but other stuff as well. The current CD does not contain the latest version of GCC, but it should allow ! bootstrapping the compiler. An updated version of that disk is in the works. @html *************** works. *** 1154,1159 **** --- 1251,1261 ---- Please read this document carefully @emph{before} installing the GNU Compiler Collection on your machine. + A + @uref{http://gcc.gnu.org/gcc-3.0/buildstat.html,,list of successful builds} + for GCC 3.0 releases is available at our web pages. This list is updated + as new information becomes available. + @ifhtml @itemize @item *************** GNU Compiler Collection on your machine. *** 1181,1194 **** @item @uref{#c4x,,c4x} @item - @uref{#decstation-*,,decstation-*} - @item @uref{#dos,,DOS} @item @uref{#dsp16xx,,dsp16xx} @item @uref{#elxsi-elxsi-bsd,,elxsi-elxsi-bsd} @item @uref{#h8300-hms,,h8300-hms} @item @uref{#hppa*-hp-hpux*,,hppa*-hp-hpux*} --- 1283,1296 ---- @item @uref{#c4x,,c4x} @item @uref{#dos,,DOS} @item @uref{#dsp16xx,,dsp16xx} @item @uref{#elxsi-elxsi-bsd,,elxsi-elxsi-bsd} @item + @uref{#*-*-freebsd*,,*-*-freebsd*} + @item @uref{#h8300-hms,,h8300-hms} @item @uref{#hppa*-hp-hpux*,,hppa*-hp-hpux*} *************** GNU Compiler Collection on your machine. *** 1199,1206 **** @item @uref{#hppa*-hp-hpux11,,hppa*-hp-hpux11} @item - @uref{#*-*-freebsd*,,*-*-freebsd*} - @item @uref{#i370-*-*,,i370-*-*} @item @uref{#*-*-linux-gnu,,*-*-linux-gnu} --- 1301,1306 ---- *************** GNU Compiler Collection on your machine. *** 1273,1285 **** @item @uref{#mips-*-*,,mips-*-*} @item @uref{#mips-mips-bsd,,mips-mips-bsd} @item @uref{#mips-mips-riscos*,,mips-mips-riscos*} @item ! @uref{#mips*-sgi-irix[45],,mips*-sgi-irix[45]} @item ! @uref{#mips*-sgi-irix6,,mips*-sgi-irix6} @item @uref{#mips-sony-sysv,,mips-sony-sysv} @item --- 1373,1389 ---- @item @uref{#mips-*-*,,mips-*-*} @item + @uref{#mips-dec-*,,mips-dec-*} + @item @uref{#mips-mips-bsd,,mips-mips-bsd} @item @uref{#mips-mips-riscos*,,mips-mips-riscos*} @item ! @uref{#mips-sgi-irix4,,mips-sgi-irix4} @item ! @uref{#mips-sgi-irix5,,mips-sgi-irix5} ! @item ! @uref{#mips-sgi-irix6,,mips-sgi-irix6} @item @uref{#mips-sony-sysv,,mips-sony-sysv} @item *************** GNU Compiler Collection on your machine. *** 1291,1296 **** --- 1395,1402 ---- @item @uref{#ns32k-utek,,ns32k-utek} @item + @uref{#powerpc*-*-*,,powerpc*-*-*, powerpc-*-sysv4} + @item @uref{#powerpc-*-elf,,powerpc-*-elf, powerpc-*-sysv4} @item @uref{#powerpc-*-linux-gnu*,,powerpc-*-linux-gnu*} *************** GNU Compiler Collection on your machine. *** 1311,1319 **** @item @uref{#romp-*-aos,,romp-*-aos, romp-*-mach} @item ! @uref{#*-*-solaris*,,*-*-solaris*} @item ! @uref{#sparc-sun-*,,sparc-sun-*} @item @uref{#sparc-sun-solaris*,,sparc-sun-solaris*} @item --- 1417,1427 ---- @item @uref{#romp-*-aos,,romp-*-aos, romp-*-mach} @item ! @uref{#s390-*-linux*} @item ! @uref{#s390x-*-linux*} ! @item ! @uref{#*-*-solaris*,,*-*-solaris*} @item @uref{#sparc-sun-solaris*,,sparc-sun-solaris*} @item *************** GNU Compiler Collection on your machine. *** 1321,1328 **** @item @uref{#*-sun-solaris2.8,,*-sun-solaris2.8} @item - @uref{#sunv5,,Sun V5.0 Compiler Bugs} - @item @uref{#sparc-sun-sunos*,,sparc-sun-sunos*} @item @uref{#sparc-unknown-linux-gnulibc1,,sparc-unknown-linux-gnulibc1} --- 1429,1434 ---- *************** GNU Compiler Collection on your machine. *** 1357,1375 **** MIL-STD-1750A processors. The MIL-STD-1750A cross configuration produces output for ! @code{as1750}, an assembler/linker available under the GNU Public ! License for the 1750A. @code{as1750} can be obtained at @uref{ftp://ftp.fta-berlin.de/pub/crossgcc/1750gals/}. A similarly licensed simulator for the 1750A is available from same address. ! You should ignore a fatal error during the building of libgcc (libgcc is ! not yet implemented for the 1750A.) The @code{as1750} assembler requires the file @file{ms1750.inc}, which is ! found in the directory @file{config/1750a}. ! GNU CC produced the same sections as the Fairchild F9450 C Compiler, namely: @table @code --- 1463,1481 ---- MIL-STD-1750A processors. The MIL-STD-1750A cross configuration produces output for ! @code{as1750}, an assembler/linker available under the GNU General Public ! License for the 1750A@. @code{as1750} can be obtained at @uref{ftp://ftp.fta-berlin.de/pub/crossgcc/1750gals/}. A similarly licensed simulator for the 1750A is available from same address. ! You should ignore a fatal error during the building of @samp{libgcc} ! (@samp{libgcc} is not yet implemented for the 1750A@.) The @code{as1750} assembler requires the file @file{ms1750.inc}, which is ! found in the directory @file{gcc/config/1750a}. ! GCC produced the same sections as the Fairchild F9450 C Compiler, namely: @table @code *************** The read/write (RAM) data section. *** 1383,1395 **** The read-only (ROM) constants section. @item Init ! Initialization section (code to copy KREL to SREL). @end table ! The smallest addressable unit is 16 bits (BITS_PER_UNIT is 16). This means that type @code{char} is represented with a 16-bit word per character. The 1750A's ``Load/Store Upper/Lower Byte'' instructions are not used by ! GNU CC. @html

      --- 1489,1501 ---- The read-only (ROM) constants section. @item Init ! Initialization section (code to copy KREL to SREL)@. @end table ! The smallest addressable unit is 16 bits (@code{BITS_PER_UNIT} is 16). This means that type @code{char} is represented with a 16-bit word per character. The 1750A's ``Load/Store Upper/Lower Byte'' instructions are not used by ! GCC@. @html

      *************** AMD Am29050 used in a system running a v *** 1420,1450 **** This section contains general configuration information for all alpha-based platforms using ELF (in particular, ignore this section for ! DEC OSF/1, Digital UNIX and Tru64 UNIX). In addition to reading this section, please read all other sections that match your target. ! We require binutils 2.11.1 (as of yet unreleased), binutils with ! @samp{binutils-2_11-branch} tag after May 31, 2001 (as taken below), or newer. ! Previous binutils releases had a number of problems with DWARF2 debugging information, not the least of which is incorrect linking of shared libraries. - Until binutils 2.11.1 is released, these sample commands may be useful: - - @smallexample - mkdir binutils-2.11.X; cd binutils-2.11.X - cvs -d :pserver:anoncvs@@anoncvs.cygnus.com:/cvs/src \ - co -rbinutils-2_11-branch -P binutils - mkdir obj; cd obj - ../src/configure --prefix=@emph{an-absolute-path} - make all check install - @end smallexample - - When configuring gcc, provide explicit @option{--with-gnu-as} - @option{--with-as=@emph{an-absolute-path/bin/as}} and - @option{--with-gnu-ld} @option{--with-ld=@emph{an-absolute-path/bin/ld}} - options to point into the prefix used above. - @html


      --- 1526,1539 ---- This section contains general configuration information for all alpha-based platforms using ELF (in particular, ignore this section for ! DEC OSF/1, Digital UNIX and Tru64 UNIX)@. In addition to reading this section, please read all other sections that match your target. ! We require binutils 2.11.2 or newer. ! Previous binutils releases had a number of problems with DWARF 2 debugging information, not the least of which is incorrect linking of shared libraries. @html


      *************** we need to use the old assembler, invoke *** 1461,1476 **** Compaq C Compiler: @example ! % CC=cc @var{srcdir}/configure [@var{target}] [@var{options}] @end example or you can use a copy of GCC 2.95.3 or higher built on Tru64 UNIX V4.0: @example ! % CC=gcc -Wa,-oldas @var{srcdir}/configure [@var{target}] [@var{options}] @end example ! GNU CC writes a @samp{.verstamp} directive to the assembler output file unless it is built as a cross-compiler. It gets the version to use from the system header file @file{/usr/include/stamp.h}. If you install a new version of DEC Unix, you should rebuild GCC to pick up the new version --- 1550,1574 ---- Compaq C Compiler: @example ! % CC=cc @var{srcdir}/configure [@var{options}] [@var{target}] @end example or you can use a copy of GCC 2.95.3 or higher built on Tru64 UNIX V4.0: @example ! % CC=gcc -Wa,-oldas @var{srcdir}/configure [@var{options}] [@var{target}] @end example ! As of GNU binutils 2.11.2, neither GNU @command{as} nor GNU @command{ld} ! are supported on Tru64 UNIX, so you must not configure GCC with ! @option{--with-gnu-as} or @option{--with-gnu-ld}. ! ! The @option{--enable-threads} options isn't supported yet. A patch is ! in preparation for a future release. The Java runtime library has been ! reported to work on Tru64 UNIX V4.0F, V5.0, and V5.1, so you may try ! @option{--enable-libgcj} and report your results. ! ! GCC writes a @samp{.verstamp} directive to the assembler output file unless it is built as a cross-compiler. It gets the version to use from the system header file @file{/usr/include/stamp.h}. If you install a new version of DEC Unix, you should rebuild GCC to pick up the new version *************** unless the comparisons fail without that *** 1495,1515 **** @option{-save-temps}, you will have to manually delete the @samp{.i} and @samp{.s} files after each series of compilations. ! GNU CC now supports both the native (ECOFF) debugging format used by DBX ! and GDB and an encapsulated STABS format for use only with GDB. See the discussion of the @option{--with-stabs} option of @file{configure} above for more information on these formats and how to select them. There is a bug in DEC's assembler that produces incorrect line numbers for ECOFF format when the @samp{.align} directive is used. To work ! around this problem, GNU CC will not emit such alignment directives while writing ECOFF format debugging information even if optimization is being performed. Unfortunately, this has the very undesirable side-effect that code addresses when @option{-O} is specified are different depending on whether or not @option{-g} is also specified. To avoid this behavior, specify @option{-gstabs+} and use GDB instead of ! DBX. DEC is now aware of this problem with the assembler and hopes to provide a fix shortly. @html --- 1593,1613 ---- @option{-save-temps}, you will have to manually delete the @samp{.i} and @samp{.s} files after each series of compilations. ! GCC now supports both the native (ECOFF) debugging format used by DBX ! and GDB and an encapsulated STABS format for use only with GDB@. See the discussion of the @option{--with-stabs} option of @file{configure} above for more information on these formats and how to select them. There is a bug in DEC's assembler that produces incorrect line numbers for ECOFF format when the @samp{.align} directive is used. To work ! around this problem, GCC will not emit such alignment directives while writing ECOFF format debugging information even if optimization is being performed. Unfortunately, this has the very undesirable side-effect that code addresses when @option{-O} is specified are different depending on whether or not @option{-g} is also specified. To avoid this behavior, specify @option{-gstabs+} and use GDB instead of ! DBX@. DEC is now aware of this problem with the assembler and hopes to provide a fix shortly. @html *************** You will need to install GNU @command{se *** 1571,1581 **** @heading @anchor{avr}avr ATMEL AVR-family micro controllers. These are used in embedded ! applications. There are no standard Unix configurations. @xref{AVR ! Options,, AVR Options, gcc, Using and Porting the GNU Compiler ! Collection (GCC)}, for the list of supported MCU types. ! Use @samp{configure --target=avr --enable-languages="c"} to configure GCC. Further installation notes and other useful information about AVR tools can also be obtained from: --- 1669,1685 ---- @heading @anchor{avr}avr ATMEL AVR-family micro controllers. These are used in embedded ! applications. There are no standard Unix configurations. ! @ifnothtml ! @xref{AVR Options,, AVR Options, gcc, Using and Porting the GNU Compiler ! Collection (GCC)}, ! @end ifnothtml ! @ifhtml ! See ``AVR Options'' in the main manual ! @end ifhtml ! for the list of supported MCU types. ! Use @samp{configure --target=avr --enable-languages="c"} to configure GCC@. Further installation notes and other useful information about AVR tools can also be obtained from: *************** indicates that you should upgrade to a n *** 1604,1612 **** Texas Instruments TMS320C3x and TMS320C4x Floating Point Digital Signal Processors. These are used in embedded applications. There are no ! standard Unix configurations. @xref{C4x Options,, C4x Options, gcc, ! Using and Porting the GNU Compiler Collection (GCC)}, for the list of ! supported MCU types. GCC can be configured as a cross compiler for both the C3x and C4x architectures on the same system. Use @samp{configure --target=c4x --- 1708,1722 ---- Texas Instruments TMS320C3x and TMS320C4x Floating Point Digital Signal Processors. These are used in embedded applications. There are no ! standard Unix configurations. ! @ifnothtml ! @xref{TMS320C3x/C4x Options,, TMS320C3x/C4x Options, gcc, Using and ! Porting the GNU Compiler Collection (GCC)}, ! @end ifnothtml ! @ifhtml ! See ``TMS320C3x/C4x Options'' in the main manual ! @end ifhtml ! for the list of supported MCU types. GCC can be configured as a cross compiler for both the C3x and C4x architectures on the same system. Use @samp{configure --target=c4x *************** can also be obtained from: *** 1618,1667 **** @itemize @bullet @item ! @uref{http://www.elec.canterbury.ac.nz/c4x,,http://www.elec.canterbury.ac.nz/c4x} @end itemize @html


      @end html - @heading @anchor{decstation-*}decstation-* - MIPS-based DECstations can support three different personalities: - Ultrix, DEC OSF/1, and OSF/rose. (Alpha-based DECstation products have - a configuration name beginning with @samp{alpha-dec}.) To configure GCC - for these platforms use the following configurations: - - @table @samp - @item decstation-ultrix - Ultrix configuration. - - @item decstation-osf1 - Dec's version of OSF/1. - - @item decstation-osfrose - Open Software Foundation reference port of OSF/1 which uses the - OSF/rose object file format instead of ECOFF. Normally, you - would not select this configuration. - @end table - - The MIPS C compiler needs to be told to increase its table size - for switch statements with the @option{-Wf,-XNg1500} option in - order to compile @file{cp/parse.c}. If you use the @option{-O2} - optimization option, you also need to use @option{-Olimit 3000}. - Both of these options are automatically generated in the - @file{Makefile} that the shell script @file{configure} builds. - If you override the @code{CC} make variable and use the MIPS - compilers, you may need to add @option{-Wf,-XNg1500 -Olimit 3000}. - - @html -

      -
      - @end html @heading @anchor{dos}DOS Please have a look at our @uref{binaries.html,,binaries page}. ! You cannot install GNU C by itself on MSDOS; it will not compile under any MSDOS compiler except itself. You need to get the complete compilation package DJGPP, which includes binaries as well as sources, and includes all the necessary compilation tools and libraries. --- 1728,1745 ---- @itemize @bullet @item ! @uref{http://www.elec.canterbury.ac.nz/c4x/,,http://www.elec.canterbury.ac.nz/c4x/} @end itemize @html


      @end html @heading @anchor{dos}DOS Please have a look at our @uref{binaries.html,,binaries page}. ! You cannot install GCC by itself on MSDOS; it will not compile under any MSDOS compiler except itself. You need to get the complete compilation package DJGPP, which includes binaries as well as sources, and includes all the necessary compilation tools and libraries. *************** A port to the AT&T DSP1610 family of pro *** 1677,1685 ****


      @end html @heading @anchor{elxsi-elxsi-bsd}elxsi-elxsi-bsd The Elxsi's C compiler has known limitations that prevent it from ! compiling GNU C. Please contact @email{mrs@@cygnus.com} for more details. @html

      --- 1755,1794 ----


      @end html + @heading @anchor{*-*-freebsd*}*-*-freebsd* + + The version of binutils installed in @file{/usr/bin} is known to work unless + otherwise specified in any per-architecture notes. However, binutils + 2.11 is known to improve overall testsuite results. + + For FreeBSD 1, FreeBSD 2 or any mutant a.out versions of FreeBSD 3: All + configuration support and files as shipped with GCC 2.95 are still in + place. FreeBSD 2.2.7 has been known to bootstrap completely; however, + it is unknown which version of binutils was used (it is assumed that it + was the system copy in @file{/usr/bin}) and C++ EH failures were noted. + + For FreeBSD using the ELF file format: DWARF 2 debugging is now the + default for all CPU architectures. It had been the default on + FreeBSD/alpha since its inception. You may use @option{-gstabs} instead + of @option{-g}, if you really want the old debugging format. There are + no known issues with mixing object files and libraries with different + debugging formats. Otherwise, this release of GCC should now match more + of the configuration used in the stock FreeBSD configuration of GCC. In + particular, @option{--enable-threads} is now configured by default. + However, as a general user, do not attempt to replace the system + compiler with this release. Known to bootstrap and check with good + results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3 and 5-CURRENT@. + + At this time, @option{--enable-threads} is not compatible with + @option{--enable-libgcj} on FreeBSD@. + + @html +

      +
      + @end html @heading @anchor{elxsi-elxsi-bsd}elxsi-elxsi-bsd The Elxsi's C compiler has known limitations that prevent it from ! compiling GCC@. Please contact @email{mrs@@wrs.com} for more details. @html

      *************** longer a multiple of 2 bytes. *** 1701,1708 **** @end html @heading @anchor{hppa*-hp-hpux*}hppa*-hp-hpux* ! We @emph{highly} recommend using gas/binutils-2.8 or newer on all hppa ! platforms; you may encounter a variety of problems when using the HP assembler. Specifically, @option{-g} does not work on HP-UX (since that system --- 1810,1817 ---- @end html @heading @anchor{hppa*-hp-hpux*}hppa*-hp-hpux* ! We @emph{highly} recommend using gas/binutils 2.8 or newer on all hppa ! platforms; you may encounter a variety of problems when using the HP assembler. Specifically, @option{-g} does not work on HP-UX (since that system *************** use GAS and GDB and configure GCC with t *** 1712,1721 **** @option{--with-as=@dots{}} options. If you wish to use pa-risc 2.0 architecture support, you must use either ! the HP assembler, gas/binutils-2.11 or a recent @uref{ftp://sources.redhat.com/pub/binutils/snapshots,,snapshot of gas}. ! More specific information to hppa*-hp-hpux* targets follows. @html

      --- 1821,1830 ---- @option{--with-as=@dots{}} options. If you wish to use pa-risc 2.0 architecture support, you must use either ! the HP assembler, gas/binutils 2.11 or a recent @uref{ftp://sources.redhat.com/pub/binutils/snapshots,,snapshot of gas}. ! More specific information to @samp{hppa*-hp-hpux*} targets follows. @html

      *************** and @env{SHELL} to @file{/bin/ksh} in yo *** 1740,1747 **** @end html @heading @anchor{hppa*-hp-hpux10}hppa*-hp-hpux10 ! For hpux10.20, we @emph{highly} recommend you pick up the latest sed patch ! @code{PHCO_19798} from HP. HP has two sites which provide patches free of charge: @itemize @bullet --- 1849,1856 ---- @end html @heading @anchor{hppa*-hp-hpux10}hppa*-hp-hpux10 ! For hpux10.20, we @emph{highly} recommend you pick up the latest sed patch ! @code{PHCO_19798} from HP@. HP has two sites which provide patches free of charge: @itemize @bullet *************** Latin-America *** 1761,1768 **** The HP assembler on these systems is much better than the hpux9 assembler, but still has some problems. Most notably the assembler inserts timestamps into each object file it creates, causing the 3-stage comparison test to fail ! during a @samp{make bootstrap}. You should be able to continue by ! saying @samp{make all} after getting the failure from @samp{make bootstrap}. --- 1870,1877 ---- The HP assembler on these systems is much better than the hpux9 assembler, but still has some problems. Most notably the assembler inserts timestamps into each object file it creates, causing the 3-stage comparison test to fail ! during a @samp{make bootstrap}. You should be able to continue by ! saying @samp{make all} after getting the failure from @samp{make bootstrap}. *************** this platform. *** 1779,1815 ****


      @end html - @heading @anchor{*-*-freebsd*}*-*-freebsd* - - The version of binutils installed in @file{/usr/bin} is known to work unless - otherwise specified in any per-architecture notes. However, binutils - 2.11 is known to improve overall testsuite results. - - For FreeBSD 1, FreeBSD 2 or any mutant a.out versions of FreeBSD 3: All - configuration support and files as shipped with gcc 2.95 are still in - place. FreeBSD 2.2.7 has been known to bootstrap completely; however, - it is unknown which version of binutils was used (it is assumed that it - was the system copy in @file{/usr/bin}) and C++ EH failures were noted. - - For FreeBSD using the ELF file format: DWARF2 debugging is now the - default for all CPU architectures. It had been the default on - FreeBSD/alpha since its inception. You may use @option{-gstabs} instead - of @option{-g}, if you really want the old debugging format. There are - no known issues with mixing object files and libraries with different - debugging formats. Otherwise, this release of gcc should now match more - of the configuration used in the stock FreeBSD configuration of gcc. In - particular, @option{--enable-threads} is now configured by default. - However, as a general user, do not attempt to replace the system - compiler with this release. Known to bootstrap and check with good - results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3 and 5-CURRENT. - - At this time, @option{--enable-threads} is not compatible with - @option{--enable-libgcj} on FreeBSD. - - @html -

      -
      - @end html @heading @anchor{i370-*-*}i370-*-* This port is very preliminary and has many known bugs. We hope to have a higher-quality port for this machine soon. --- 1888,1893 ---- *************** have a higher-quality port for this mach *** 1821,1833 **** @heading @anchor{*-*-linux-gnu}*-*-linux-gnu If you use glibc 2.2 (or 2.1.9x), GCC 2.95.2 won't install ! out-of-the-box. You'll get compile errors while building libstdc++. The patch @uref{glibc-2.2.patch,,glibc-2.2.patch}, that is to be applied in the GCC source tree, fixes the compatibility problems. @html

      -
      @end html @html --- 1899,1910 ---- @heading @anchor{*-*-linux-gnu}*-*-linux-gnu If you use glibc 2.2 (or 2.1.9x), GCC 2.95.2 won't install ! out-of-the-box. You'll get compile errors while building @samp{libstdc++}. The patch @uref{glibc-2.2.patch,,glibc-2.2.patch}, that is to be applied in the GCC source tree, fixes the compatibility problems. @html

      @end html @html *************** applied in the GCC source tree, fixes th *** 1835,1844 **** @end html Currently Glibc 2.2.3 (and older releases) and GCC 3.0 are out of sync ! since the latest exception handling changes for GCC. Compiling glibc with GCC 3.0 will give a binary incompatible glibc and therefore cause lots of problems and might make your system completly unusable. This ! will definitly need fixes in glibc but might also need fixes in GCC. We strongly advise to wait for glibc 2.2.4 and to read the release notes of glibc 2.2.4 whether patches for GCC 3.0 are needed. You can use glibc 2.2.3 with GCC 3.0, just do not try to recompile it. --- 1912,1921 ---- @end html Currently Glibc 2.2.3 (and older releases) and GCC 3.0 are out of sync ! since the latest exception handling changes for GCC@. Compiling glibc with GCC 3.0 will give a binary incompatible glibc and therefore cause lots of problems and might make your system completly unusable. This ! will definitly need fixes in glibc but might also need fixes in GCC@. We strongly advise to wait for glibc 2.2.4 and to read the release notes of glibc 2.2.4 whether patches for GCC 3.0 are needed. You can use glibc 2.2.3 with GCC 3.0, just do not try to recompile it. *************** glibc 2.2.4 whether patches for GCC 3.0 *** 1850,1856 **** @heading @anchor{ix86-*-linux*oldld}i?86-*-linux*oldld Use this configuration to generate @file{a.out} binaries on Linux-based GNU systems if you do not have gas/binutils version 2.5.2 or later ! installed. This is an obsolete configuration. @html

      --- 1927,1933 ---- @heading @anchor{ix86-*-linux*oldld}i?86-*-linux*oldld Use this configuration to generate @file{a.out} binaries on Linux-based GNU systems if you do not have gas/binutils version 2.5.2 or later ! installed. This is an obsolete configuration. @html

      *************** installed. This is an obsolete configura *** 1858,1864 **** @end html @heading @anchor{ix86-*-linux*aout}i?86-*-linux*aout Use this configuration to generate @file{a.out} binaries on Linux-based ! GNU systems. This configuration is being superseded. You must use gas/binutils version 2.5.2 or later. @html --- 1935,1941 ---- @end html @heading @anchor{ix86-*-linux*aout}i?86-*-linux*aout Use this configuration to generate @file{a.out} binaries on Linux-based ! GNU systems. This configuration is being superseded. You must use gas/binutils version 2.5.2 or later. @html *************** gas/binutils version 2.5.2 or later. *** 1867,1873 **** @end html @heading @anchor{ix86-*-linux*}i?86-*-linux* ! You will need binutils-2.9.1.0.15 or newer for exception handling to work. If you receive Signal 11 errors when building on GNU/Linux, then it is possible you have a hardware problem. Further information on this can be --- 1944,1950 ---- @end html @heading @anchor{ix86-*-linux*}i?86-*-linux* ! You will need binutils 2.9.1.0.15 or newer for exception handling to work. If you receive Signal 11 errors when building on GNU/Linux, then it is possible you have a hardware problem. Further information on this can be *************** Use this for the SCO OpenServer Release *** 1898,1920 **** Unlike earlier versions of GCC, the ability to generate COFF with this target is no longer provided. ! Earlier versions of GCC emitted Dwarf-1 when generating ELF to allow the system debugger to be used. That support was too burdensome to ! maintain. GCC now emits only dwarf-2 for this target. This means you may use either the UDK debugger or GDB to debug programs built by this ! version of GCC. ! ! If you are building languages other than C, you must follow the instructions ! about invoking @samp{make bootstrap} because the native OpenServer ! compiler will build a @command{cc1plus} that will not correctly parse many ! valid C++ programs including those in @file{libgcc.a}. ! @strong{You must do a @samp{make bootstrap} if you are building with the ! native compiler.} ! Use of the @option{-march-pentiumpro} flag can result in unrecognized opcodes when using the native assembler on OS versions before ! 5.0.6. (Support for P6 opcodes was added to the native ELF assembler in ! that version.) While it's rather rare to see these emitted by GCC yet, errors of the basic form: @example --- 1975,1990 ---- Unlike earlier versions of GCC, the ability to generate COFF with this target is no longer provided. ! Earlier versions of GCC emitted DWARF 1 when generating ELF to allow the system debugger to be used. That support was too burdensome to ! maintain. GCC now emits only DWARF 2 for this target. This means you may use either the UDK debugger or GDB to debug programs built by this ! version of GCC@. ! Use of the @option{-march=pentiumpro} flag can result in unrecognized opcodes when using the native assembler on OS versions before ! 5.0.6. (Support for P6 opcodes was added to the native ELF assembler in ! that version.) While it's rather rare to see these emitted by GCC yet, errors of the basic form: @example *************** errors of the basic form: *** 1924,1930 **** are symptoms of this problem. You may work around this by not building affected files with that flag, by using the GNU assembler, or ! by using the assembler provided with the current version of the OS. Users of GNU assembler should see the note below for hazards on doing so. --- 1994,2000 ---- are symptoms of this problem. You may work around this by not building affected files with that flag, by using the GNU assembler, or ! by using the assembler provided with the current version of the OS@. Users of GNU assembler should see the note below for hazards on doing so. *************** Look in @file{gcc/config/i386/sco5.h} (s *** 1943,1949 **** additional OpenServer-specific flags. Systems based on OpenServer before 5.0.4 (@samp{uname -X} ! will tell you what you're running) require TLS597 from ftp.sco.com/TLS for C++ constructors and destructors to work right. The system linker in (at least) 5.0.4 and 5.0.5 will sometimes --- 2013,2020 ---- additional OpenServer-specific flags. Systems based on OpenServer before 5.0.4 (@samp{uname -X} ! will tell you what you're running) require TLS597 from ! @uref{ftp://ftp.sco.com/TLS/,,ftp://ftp.sco.com/TLS/} for C++ constructors and destructors to work right. The system linker in (at least) 5.0.4 and 5.0.5 will sometimes *************** do the wrong thing for a construct that *** 1951,1972 **** code. This can be seen as execution testsuite failures when using @option{-fPIC} on @file{921215-1.c}, @file{931002-1.c}, @file{nestfunc-1.c}, and @file{gcov-1.c}. For 5.0.5, an updated linker that will cure this problem is ! available. You must install both @uref{ftp://ftp.sco.com/Supplements/rs505a/,,ftp://ftp.sco.com/Supplements/rs505a/} and @uref{ftp://ftp.sco.com/SLS/,,OSS499A}. The dynamic linker in OpenServer 5.0.5 (earlier versions may show ! the same problem) aborts on certain g77-compiled programs. It's particularly likely to be triggered by building Fortran code with the @option{-fPIC} flag. Although it's conceivable that the error could be triggered by other code, only G77-compiled code has been observed to cause this abort. If you are getting core dumps immediately upon execution of your ! g77 program---and especially if it's compiled with @option{-fPIC}---try applying ! @uref{sco_osr5_g77.patch,,@file{sco_osr5_g77.patch}} to your libf2c and ! rebuilding GCC. Affected faults, when analyzed in a debugger, will show a stack backtrace with a fault occurring in @code{rtld()} and the program ! running as @file{/usr/lib/ld.so.1}. This problem has been reported to SCO engineering and will hopefully be addressed in later releases. --- 2022,2043 ---- code. This can be seen as execution testsuite failures when using @option{-fPIC} on @file{921215-1.c}, @file{931002-1.c}, @file{nestfunc-1.c}, and @file{gcov-1.c}. For 5.0.5, an updated linker that will cure this problem is ! available. You must install both @uref{ftp://ftp.sco.com/Supplements/rs505a/,,ftp://ftp.sco.com/Supplements/rs505a/} and @uref{ftp://ftp.sco.com/SLS/,,OSS499A}. The dynamic linker in OpenServer 5.0.5 (earlier versions may show ! the same problem) aborts on certain G77-compiled programs. It's particularly likely to be triggered by building Fortran code with the @option{-fPIC} flag. Although it's conceivable that the error could be triggered by other code, only G77-compiled code has been observed to cause this abort. If you are getting core dumps immediately upon execution of your ! G77 program---and especially if it's compiled with @option{-fPIC}---try applying ! @uref{sco_osr5_g77.patch,,@file{sco_osr5_g77.patch}} to your @samp{libf2c} and ! rebuilding GCC@. Affected faults, when analyzed in a debugger, will show a stack backtrace with a fault occurring in @code{rtld()} and the program ! running as @file{/usr/lib/ld.so.1}. This problem has been reported to SCO engineering and will hopefully be addressed in later releases. *************** engineering and will hopefully be addres *** 1977,2008 **** @heading @anchor{ix86-*-udk}i?86-*-udk This target emulates the SCO Universal Development Kit and requires that ! package be installed. (If it is installed, you will have a ! @file{/udk/usr/ccs/bin/cc} file present.) It's very much like the ! @code{i?86-*-unixware7*} target but is meant to be used when hosting on a system where UDK isn't the default compiler such as OpenServer 5 or Unixware 2. This target will ! generate binaries that will run on OpenServer, Unixware 2, or Unixware 7, ! with the same warnings and caveats as the SCO UDK. ! ! You can stage1 with either your native compiler or with UDK. If you ! don't do a full bootstrap when initially building with your native compiler ! you will have an utterly unusable pile of bits as your reward. This target is a little tricky to build because we have to distinguish it from the native tools (so it gets headers, startups, and libraries ! 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-} @emph{You should substitute @samp{i686} in the above command with the appropriate processor for your host.} ! You should follow this with a @samp{make bootstrap} then ! @samp{make install}. You can then access the UDK-targeted GCC tools by adding @command{udk-} before the commonly known name. For example, to invoke the C compiler, you would use @command{udk-gcc}. They will coexist peacefully with any native-target GCC tools you may --- 2048,2075 ---- @heading @anchor{ix86-*-udk}i?86-*-udk This target emulates the SCO Universal Development Kit and requires that ! package be installed. (If it is installed, you will have a ! @file{/udk/usr/ccs/bin/cc} file present.) It's very much like the ! @samp{i?86-*-unixware7*} target but is meant to be used when hosting on a system where UDK isn't the default compiler such as OpenServer 5 or Unixware 2. This target will ! generate binaries that will run on OpenServer, Unixware 2, or Unixware 7, ! with the same warnings and caveats as the SCO UDK@. This target is a little tricky to build because we have to distinguish it from the native tools (so it gets headers, startups, and libraries ! 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-} @emph{You should substitute @samp{i686} in the above command with the appropriate processor for your host.} ! After the usual @samp{make bootstrap} and ! @samp{make install}, you can then access the UDK-targeted GCC tools by adding @command{udk-} before the commonly known name. For example, to invoke the C compiler, you would use @command{udk-gcc}. They will coexist peacefully with any native-target GCC tools you may *************** Go to the Berkeley universe before compi *** 2048,2054 ****
      @end html @heading @anchor{ix86-sequent-ptx1*}i?86-sequent-ptx1*, i?86-sequent-ptx2* ! You must install GNU @file{sed} before running @file{configure}. @html

      --- 2115,2121 ----
      @end html @heading @anchor{ix86-sequent-ptx1*}i?86-sequent-ptx1*, i?86-sequent-ptx2* ! You must install GNU @command{sed} before running @command{configure}. @html

      *************** You must install GNU @file{sed} before r *** 2057,2063 **** @heading @anchor{#ix86-*-sysv3*}i?86-*-sysv3* The @code{fixproto} shell script may trigger a bug in the system shell. If you encounter this problem, upgrade your operating system or ! use BASH (the GNU shell) to run @code{fixproto}. @html --- 2124,2130 ---- @heading @anchor{#ix86-*-sysv3*}i?86-*-sysv3* The @code{fixproto} shell script may trigger a bug in the system shell. If you encounter this problem, upgrade your operating system or ! use @command{bash} (the GNU shell) to run @code{fixproto}. @html *************** use BASH (the GNU shell) to run @code{fi *** 2067,2073 **** @heading @anchor{i860-intel-osf*}i860-intel-osf* On the Intel Paragon (an i860 machine), if you are using operating system version 1.0, you will get warnings or errors about redefinition ! of @code{va_arg} when you build GCC. If this happens, then you need to link most programs with the library @file{iclib.a}. You must also modify @file{stdio.h} as follows: before --- 2134,2140 ---- @heading @anchor{i860-intel-osf*}i860-intel-osf* On the Intel Paragon (an i860 machine), if you are using operating system version 1.0, you will get warnings or errors about redefinition ! of @code{va_arg} when you build GCC@. If this happens, then you need to link most programs with the library @file{iclib.a}. You must also modify @file{stdio.h} as follows: before *************** These problems don't exist in operating *** 2108,2118 ****
      @end html @heading @anchor{*-lynx-lynxos}*-lynx-lynxos ! LynxOS 2.2 and earlier comes with GNU CC 1.x already installed as @file{/bin/gcc}. You should compile with this instead of @file{/bin/cc}. ! You can tell GNU CC to use the GNU assembler and linker, by specifying @samp{--with-gnu-as --with-gnu-ld} when configuring. These will produce ! COFF format object files and executables; otherwise GNU CC will use the installed tools, which produce @file{a.out} format executables. @html --- 2175,2185 ----
      @end html @heading @anchor{*-lynx-lynxos}*-lynx-lynxos ! LynxOS 2.2 and earlier comes with GCC 1.x already installed as @file{/bin/gcc}. You should compile with this instead of @file{/bin/cc}. ! You can tell GCC to use the GNU assembler and linker, by specifying @samp{--with-gnu-as --with-gnu-ld} when configuring. These will produce ! COFF format object files and executables; otherwise GCC will use the installed tools, which produce @file{a.out} format executables. @html *************** AIX Make frequently has problems with GC *** 2126,2133 **** newer is recommended to build on this platform. Errors involving @code{alloca} when building GCC generally are due ! to an incorrect definition of @var{CC} in the Makefile or mixing files ! compiled with the native C compiler and GCC. During the stage1 phase of the build, the native AIX compiler @strong{must} be invoked as @command{cc} (not @command{xlc}). Once @command{configure} has been informed of @command{xlc}, one needs to use @samp{make distclean} to remove the --- 2193,2200 ---- newer is recommended to build on this platform. Errors involving @code{alloca} when building GCC generally are due ! to an incorrect definition of @code{CC} in the Makefile or mixing files ! compiled with the native C compiler and GCC@. During the stage1 phase of the build, the native AIX compiler @strong{must} be invoked as @command{cc} (not @command{xlc}). Once @command{configure} has been informed of @command{xlc}, one needs to use @samp{make distclean} to remove the *************** Binutils 2.10 does not support AIX 4.3. *** 2140,2148 **** @uref{http://www-1.ibm.com/servers/aix/products/aixos/linux/,,AIX Toolbox for Linux: GNU and Open Source tools for AIX}; website does work. Binutils 2.11 is expected to include AIX 4.3 ! support. The GNU Assembler is necessary for libstdc++ to build. The ! AIX native ld still is recommended. The native AIX tools do ! interoperate with GCC. Linking executables and shared libraries may produce warnings of duplicate symbols. The assembly files generated by GCC for AIX always --- 2207,2215 ---- @uref{http://www-1.ibm.com/servers/aix/products/aixos/linux/,,AIX Toolbox for Linux: GNU and Open Source tools for AIX}; website does work. Binutils 2.11 is expected to include AIX 4.3 ! support. The GNU Assembler is necessary for @samp{libstdc++} to build. The ! AIX native @command{ld} still is recommended. The native AIX tools do ! interoperate with GCC@. Linking executables and shared libraries may produce warnings of duplicate symbols. The assembly files generated by GCC for AIX always *************** routines is shipped with AIX 4.3.2. *** 2163,2176 **** Some versions of the AIX binder (linker) can fail with a relocation overflow severe error when the @option{-bbigtoc} option is used to link ! GCC-produced object files into an executable that overflows the TOC. A fix for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is available from IBM Customer Support and from its @uref{http://service.boulder.ibm.com/,,service.boulder.ibm.com} website as PTF U455193. The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core ! with a segmentation fault when invoked by any version of GCC. A fix for APAR IX87327 is available from IBM Customer Support and from its @uref{http://service.boulder.ibm.com/,,service.boulder.ibm.com} website as PTF U461879. This fix is incorporated in AIX 4.3.3 and above. --- 2230,2243 ---- Some versions of the AIX binder (linker) can fail with a relocation overflow severe error when the @option{-bbigtoc} option is used to link ! GCC-produced object files into an executable that overflows the TOC@. A fix for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is available from IBM Customer Support and from its @uref{http://service.boulder.ibm.com/,,service.boulder.ibm.com} website as PTF U455193. The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core ! with a segmentation fault when invoked by any version of GCC@. A fix for APAR IX87327 is available from IBM Customer Support and from its @uref{http://service.boulder.ibm.com/,,service.boulder.ibm.com} website as PTF U461879. This fix is incorporated in AIX 4.3.3 and above. *************** TO ASSEMBLE/BIND) is available from IBM *** 2181,2187 **** @uref{http://service.boulder.ibm.com/,,service.boulder.ibm.com} website as PTF U453956. This fix is incorporated in AIX 4.3.1 and above. ! AIX provides National Language Support (NLS). Compilers and assemblers use NLS to support locale-specific representations of various data formats including floating-point numbers (e.g., @samp{.} vs @samp{,} for separating decimal fractions). There have been problems reported where --- 2248,2254 ---- @uref{http://service.boulder.ibm.com/,,service.boulder.ibm.com} website as PTF U453956. This fix is incorporated in AIX 4.3.1 and above. ! AIX provides National Language Support (NLS)@. Compilers and assemblers use NLS to support locale-specific representations of various data formats including floating-point numbers (e.g., @samp{.} vs @samp{,} for separating decimal fractions). There have been problems reported where *************** This configuration is intended for embed *** 2208,2216 ****
      @end html @heading @anchor{m68000-hp-bsd}m68000-hp-bsd ! HP 9000 series 200 running BSD. Note that the C compiler that comes ! with this system cannot compile GNU CC; contact @email{law@@cygnus.com} ! to get binaries of GNU CC for bootstrapping. @html

      --- 2275,2283 ----
      @end html @heading @anchor{m68000-hp-bsd}m68000-hp-bsd ! HP 9000 series 200 running BSD@. Note that the C compiler that comes ! with this system cannot compile GCC; contact @email{law@@cygnus.com} ! to get binaries of GCC for bootstrapping. @html

      *************** applications. There are no standard Uni *** 2234,2255 **** @end html @heading @anchor{m68k-altos}m68k-altos Altos 3068. You must use the GNU assembler, linker and debugger. ! Also, you must fix a kernel bug. Details in the file @file{README.ALTOS}. @html


      @end html @heading @anchor{m68k-apple-aux}m68k-apple-aux ! Apple Macintosh running A/UX. You may configure GCC to use either the system assembler and linker or the GNU assembler and linker. You should use the GNU configuration ! if you can, especially if you also want to use GNU C++. You enabled ! that configuration with + the @option{--with-gnu-as} and @option{--with-gnu-ld} options to @code{configure}. Note the C compiler that comes ! with this system cannot compile GNU CC. You can find binaries of GNU CC for bootstrapping on @code{jagubox.gsfc.nasa.gov}. You will also a patched version of @file{/bin/ld} there that raises some of the arbitrary limits found in the original. --- 2301,2322 ---- @end html @heading @anchor{m68k-altos}m68k-altos Altos 3068. You must use the GNU assembler, linker and debugger. ! Also, you must fix a kernel bug. @html


      @end html @heading @anchor{m68k-apple-aux}m68k-apple-aux ! Apple Macintosh running A/UX@. You may configure GCC to use either the system assembler and linker or the GNU assembler and linker. You should use the GNU configuration ! if you can, especially if you also want to use G++. You enable ! that configuration with the @option{--with-gnu-as} and @option{--with-gnu-ld} options to @code{configure}. Note the C compiler that comes ! with this system cannot compile GCC@. You can find binaries of GCC for bootstrapping on @code{jagubox.gsfc.nasa.gov}. You will also a patched version of @file{/bin/ld} there that raises some of the arbitrary limits found in the original. *************** raises some of the arbitrary limits foun *** 2259,2265 ****
      @end html @heading @anchor{m68k-att-sysv}m68k-att-sysv ! AT&T 3b1, a.k.a. 7300 PC. This version of GNU CC cannot be compiled with the system C compiler, which is too buggy. You will need to get a previous version of GCC and use it to bootstrap. Binaries are available from the OSU-CIS archive, at --- 2326,2332 ----
      @end html @heading @anchor{m68k-att-sysv}m68k-att-sysv ! AT&T 3b1, a.k.a.@: 7300 PC@. This version of GCC cannot be compiled with the system C compiler, which is too buggy. You will need to get a previous version of GCC and use it to bootstrap. Binaries are available from the OSU-CIS archive, at *************** bootstrap. Binaries are available from *** 2270,2280 ****
      @end html @heading @anchor{m68k-bull-sysv}m68k-bull-sysv ! Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to BOS-2.01. GNU CC works ! either with native assembler or GNU assembler. You can use ! GNU assembler with native coff generation by providing @option{--with-gnu-as} to ! the configure script or use GNU assembler with dbx-in-coff encapsulation ! by providing @samp{--with-gnu-as --stabs}. For any problem with native assembler or for availability of the DPX/2 port of GAS, contact @email{F.Pierresteguy@@frcl.bull.fr}. --- 2337,2347 ----
      @end html @heading @anchor{m68k-bull-sysv}m68k-bull-sysv ! Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to BOS-2.01. GCC works ! either with native assembler or GNU assembler. You can use ! GNU assembler with native COFF generation by providing @option{--with-gnu-as} to ! the configure script or use GNU assembler with stabs-in-COFF encapsulation ! by providing @samp{--with-gnu-as --stabs}. For any problem with the native assembler or for availability of the DPX/2 port of GAS, contact @email{F.Pierresteguy@@frcl.bull.fr}. *************** Use @samp{configure unos} for building o *** 2287,2293 **** The Unos assembler is named @code{casm} instead of @code{as}. For some strange reason linking @file{/bin/as} to @file{/bin/casm} changes the ! behavior, and does not work. So, when installing GNU CC, you should install the following script as @file{as} in the subdirectory where the passes of GCC are installed: --- 2354,2360 ---- The Unos assembler is named @code{casm} instead of @code{as}. For some strange reason linking @file{/bin/as} to @file{/bin/casm} changes the ! behavior, and does not work. So, when installing GCC, you should install the following script as @file{as} in the subdirectory where the passes of GCC are installed: *************** casm $* *** 2297,2308 **** @end example The default Unos library is named @file{libunos.a} instead of ! @file{libc.a}. To allow GNU CC to function, either change all references to @option{-lc} in @file{gcc.c} to @option{-lunos} or link @file{/lib/libc.a} to @file{/lib/libunos.a}. @cindex @code{alloca}, for Unos ! When compiling GNU CC with the standard compiler, to overcome bugs in the support of @code{alloca}, do not use @option{-O} when making stage 2. Then use the stage 2 compiler with @option{-O} to make the stage 3 compiler. This compiler will have the same characteristics as the usual --- 2364,2375 ---- @end example The default Unos library is named @file{libunos.a} instead of ! @file{libc.a}. To allow GCC to function, either change all references to @option{-lc} in @file{gcc.c} to @option{-lunos} or link @file{/lib/libc.a} to @file{/lib/libunos.a}. @cindex @code{alloca}, for Unos ! When compiling GCC with the standard compiler, to overcome bugs in the support of @code{alloca}, do not use @option{-O} when making stage 2. Then use the stage 2 compiler with @option{-O} to make the stage 3 compiler. This compiler will have the same characteristics as the usual *************** and linking from that library. *** 2323,2330 ****
      @end html @heading @anchor{m68k-hp-hpux}m68k-hp-hpux ! HP 9000 series 300 or 400 running HP-UX. HP-UX version 8.0 has a bug in ! the assembler that prevents compilation of GNU CC. This bug manifests itself during the first stage of compilation, while building @file{libgcc2.a}: --- 2390,2397 ----
      @end html @heading @anchor{m68k-hp-hpux}m68k-hp-hpux ! HP 9000 series 300 or 400 running HP-UX@. HP-UX version 8.0 has a bug in ! the assembler that prevents compilation of GCC@. This bug manifests itself during the first stage of compilation, while building @file{libgcc2.a}: *************** library version of ``cvtnum(3c)'' and th *** 2352,2358 **** This patch is also known as PHCO_4484. ! In addition, if you wish to use gas @option{--with-gnu-as} you must use gas version 2.1 or later, and you must use the GNU linker version 2.1 or later. Earlier versions of gas relied upon a program which converted the gas output into the native HP-UX format, but that program has not been --- 2419,2425 ---- This patch is also known as PHCO_4484. ! In addition, if you wish to use gas, you must use gas version 2.1 or later, and you must use the GNU linker version 2.1 or later. Earlier versions of gas relied upon a program which converted the gas output into the native HP-UX format, but that program has not been *************** to look like: *** 2386,2399 **** Current GCC versions probably do not work on version 2 of the NeXT operating system. ! On NeXTStep 3.0, the Objective C compiler does not work, due, apparently, to a kernel bug that it happens to trigger. This problem does not happen on 3.1. You absolutely @strong{must} use GNU sed and GNU make on this platform. ! On NEXTSTEP 3.x where x < 3 the build of GCC will abort during stage1 with an error message like this: @example --- 2453,2466 ---- Current GCC versions probably do not work on version 2 of the NeXT operating system. ! On NeXTStep 3.0, the Objective-C compiler does not work, due, apparently, to a kernel bug that it happens to trigger. This problem does not happen on 3.1. You absolutely @strong{must} use GNU sed and GNU make on this platform. ! On NeXTSTEP 3.x where x < 3 the build of GCC will abort during stage1 with an error message like this: @example *************** stage1 with an error message like this: *** 2403,2414 **** valued 95 (_). @end example ! The reason for this is the fact that NeXT's assembler for these versions of the operating system does not support the @samp{.section} pseudo op that's needed for full C++ exception functionality. ! As NeXT's assembler is a derived work from GNU as, a free ! replacement that does can be obtained at @uref{ftp://ftp.next.peak.org:/next-ftp/next/apps/devtools/as.3.3.NIHS.s.tar.gz,,ftp://ftp.next.peak.org:/next-ftp/next/apps/devtools/as.3.3.NIHS.s.tar.gz}. If you try to build the integrated C++ & C++ runtime libraries on this system --- 2470,2481 ---- valued 95 (_). @end example ! The reason for this is the fact that NeXT's assembler for these versions of the operating system does not support the @samp{.section} pseudo op that's needed for full C++ exception functionality. ! As NeXT's assembler is a derived work from GNU as, a free ! replacement that does can be obtained at @uref{ftp://ftp.next.peak.org:/next-ftp/next/apps/devtools/as.3.3.NIHS.s.tar.gz,,ftp://ftp.next.peak.org:/next-ftp/next/apps/devtools/as.3.3.NIHS.s.tar.gz}. If you try to build the integrated C++ & C++ runtime libraries on this system *************** MAXUMEM = 4096 *** 2451,2457 **** @heading @anchor{m68k-sun}m68k-sun Sun 3. We do not provide a configuration file to use the Sun FPA by default, because programs that establish signal handlers for floating ! point traps inherently cannot work with the FPA. @html

      --- 2518,2524 ---- @heading @anchor{m68k-sun}m68k-sun Sun 3. We do not provide a configuration file to use the Sun FPA by default, because programs that establish signal handlers for floating ! point traps inherently cannot work with the FPA@. @html

      *************** compiler. If the stage 3 and stage 4 ob *** 2476,2482 **** suggests you encountered a problem with the standard C compiler; the stage 3 and 4 compilers may be usable. ! It is best, however, to use an older version of GNU CC for bootstrapping if you have one. @html --- 2543,2549 ---- suggests you encountered a problem with the standard C compiler; the stage 3 and 4 compilers may be usable. ! It is best, however, to use an older version of GCC for bootstrapping if you have one. @html *************** if you have one. *** 2484,2490 ****
      @end html @heading @anchor{m88k-*-dgux}m88k-*-dgux ! Motorola m88k running DG/UX. To build 88open BCS native or cross compilers on DG/UX, specify the configuration name as @samp{m88k-*-dguxbcs} and build in the 88open BCS software development environment. To build ELF native or cross compilers on DG/UX, specify --- 2551,2557 ----
      @end html @heading @anchor{m88k-*-dgux}m88k-*-dgux ! Motorola m88k running DG/UX@. To build 88open BCS native or cross compilers on DG/UX, specify the configuration name as @samp{m88k-*-dguxbcs} and build in the 88open BCS software development environment. To build ELF native or cross compilers on DG/UX, specify *************** configuration based on the current softw *** 2503,2509 **** @heading @anchor{m88k-tektronix-sysv3}m88k-tektronix-sysv3 Tektronix XD88 running UTekV 3.2e. Do not turn on optimization while building stage1 if you bootstrap with ! the buggy Green Hills compiler. Also, The bundled LAI System V NFS is buggy so if you build in an NFS mounted directory, start from a fresh reboot, or avoid NFS all together. Otherwise you may have trouble getting clean comparisons --- 2570,2576 ---- @heading @anchor{m88k-tektronix-sysv3}m88k-tektronix-sysv3 Tektronix XD88 running UTekV 3.2e. Do not turn on optimization while building stage1 if you bootstrap with ! the buggy Green Hills compiler. Also, the bundled LAI System V NFS is buggy so if you build in an NFS mounted directory, start from a fresh reboot, or avoid NFS all together. Otherwise you may have trouble getting clean comparisons *************** possible that some old versions of the s *** 2552,2560 **** system lacks these, you must remove or undo the definition of @code{TARGET_MEM_FUNCTIONS} in @file{mips-bsd.h}. ! The MIPS C compiler needs to be told to increase its table size ! for switch statements with the @option{-Wf,-XNg1500} option in ! order to compile @file{cp/parse.c}. If you use the @option{-O2} optimization option, you also need to use @option{-Olimit 3000}. Both of these options are automatically generated in the @file{Makefile} that the shell script @file{configure} builds. --- 2619,2659 ---- system lacks these, you must remove or undo the definition of @code{TARGET_MEM_FUNCTIONS} in @file{mips-bsd.h}. ! If you use the MIPS C compiler to bootstrap, it may be necessary ! to increase its table size for switch statements with the ! @option{-Wf,-XNg1500} option. If you use the @option{-O2} ! optimization option, you also need to use @option{-Olimit 3000}. ! Both of these options are automatically generated in the ! @file{Makefile} that the shell script @file{configure} builds. ! If you override the @code{CC} make variable and use the MIPS ! compilers, you may need to add @option{-Wf,-XNg1500 -Olimit 3000}. ! ! @html !

      !
      ! @end html ! @heading @anchor{mips-dec-*}mips-dec-* ! MIPS-based DECstations can support three different personalities: ! Ultrix, DEC OSF/1, and OSF/rose. (Alpha-based DECstation products have ! a configuration name beginning with @samp{alpha*-dec}.) To configure GCC ! for these platforms use the following configurations: ! ! @table @samp ! @item mips-dec-ultrix ! Ultrix configuration. ! ! @item mips-dec-osf1 ! DEC's version of OSF/1. ! ! @item mips-dec-osfrose ! Open Software Foundation reference port of OSF/1 which uses the ! OSF/rose object file format instead of ECOFF@. Normally, you ! would not select this configuration. ! @end table ! ! If you use the MIPS C compiler to bootstrap, it may be necessary ! to increase its table size for switch statements with the ! @option{-Wf,-XNg1500} option. If you use the @option{-O2} optimization option, you also need to use @option{-Olimit 3000}. Both of these options are automatically generated in the @file{Makefile} that the shell script @file{configure} builds. *************** compilers, you may need to add @option{- *** 2566,2574 ****
      @end html @heading @anchor{mips-mips-riscos*}mips-mips-riscos* ! The MIPS C compiler needs to be told to increase its table size ! for switch statements with the @option{-Wf,-XNg1500} option in ! order to compile @file{cp/parse.c}. If you use the @option{-O2} optimization option, you also need to use @option{-Olimit 3000}. Both of these options are automatically generated in the @file{Makefile} that the shell script @file{configure} builds. --- 2665,2673 ----
      @end html @heading @anchor{mips-mips-riscos*}mips-mips-riscos* ! If you use the MIPS C compiler to bootstrap, it may be necessary ! to increase its table size for switch statements with the ! @option{-Wf,-XNg1500} option. If you use the @option{-O2} optimization option, you also need to use @option{-Olimit 3000}. Both of these options are automatically generated in the @file{Makefile} that the shell script @file{configure} builds. *************** personalities: default, BSD 4.3, System *** 2581,2601 **** for these platforms use the following configurations: @table @samp ! @item mips-mips-riscos@code{rev} ! Default configuration for RISC-OS, revision @code{rev}. ! @item mips-mips-riscos@code{rev}bsd ! BSD 4.3 configuration for RISC-OS, revision @code{rev}. ! @item mips-mips-riscos@code{rev}sysv4 ! System V.4 configuration for RISC-OS, revision @code{rev}. @html


      @end html ! @item mips-mips-riscos@code{rev}sysv ! System V.3 configuration for RISC-OS, revision @code{rev}. @end table The revision @code{rev} mentioned above is the revision of --- 2680,2700 ---- for these platforms use the following configurations: @table @samp ! @item mips-mips-riscos@var{rev} ! Default configuration for RISC-OS, revision @var{rev}. ! @item mips-mips-riscos@var{rev}bsd ! BSD 4.3 configuration for RISC-OS, revision @var{rev}. ! @item mips-mips-riscos@var{rev}sysv4 ! System V.4 configuration for RISC-OS, revision @var{rev}. @html


      @end html ! @item mips-mips-riscos@var{rev}sysv ! System V.3 configuration for RISC-OS, revision @var{rev}. @end table The revision @code{rev} mentioned above is the revision of *************** avoiding a linker bug. *** 2607,2643 ****


      @end html ! @heading @anchor{mips*-sgi-irix[45]}mips*-sgi-irix[45] In order to compile GCC on an SGI running IRIX 4, the ``c.hdr.lib'' option must be installed from the CD-ROM supplied from Silicon Graphics. This is found on the 2nd CD in release 4.0.1. ! In order to compile GCC on an SGI running IRIX 5, the ``compiler_dev.hdr'' ! subsystem must be installed from the IDO CD-ROM supplied by Silicon ! Graphics. ! ! @code{make compare} may fail on version 5 of IRIX unless you add ! @option{-save-temps} to @code{CFLAGS}. On these systems, the name of the ! assembler input file is stored in the object file, and that makes ! comparison fail if it differs between the @code{stage1} and ! @code{stage2} compilations. The option @option{-save-temps} forces a ! fixed name to be used for the assembler input file, instead of a ! randomly chosen name in @file{/tmp}. Do not add @option{-save-temps} ! unless the comparisons fail without that option. If you do you ! @option{-save-temps}, you will have to manually delete the @samp{.i} and ! @samp{.s} files after each series of compilations. ! ! The MIPS C compiler needs to be told to increase its table size ! for switch statements with the @option{-Wf,-XNg1500} option in ! order to compile @file{cp/parse.c}. If you use the @option{-O2} ! optimization option, you also need to use @option{-Olimit 3000}. ! Both of these options are automatically generated in the ! @file{Makefile} that the shell script @file{configure} builds. ! If you override the @code{CC} make variable and use the MIPS ! compilers, you may need to add @samp{-Wf,-XNg1500 -Olimit 3000}. ! ! On Irix version 4.0.5F, and perhaps on some other versions as well, there is an assembler bug that reorders instructions incorrectly. To work around it, specify the target configuration @samp{mips-sgi-irix4loser}. This configuration inhibits assembler --- 2706,2718 ----


      @end html ! @heading @anchor{mips-sgi-irix4}mips-sgi-irix4 In order to compile GCC on an SGI running IRIX 4, the ``c.hdr.lib'' option must be installed from the CD-ROM supplied from Silicon Graphics. This is found on the 2nd CD in release 4.0.1. ! On IRIX version 4.0.5F, and perhaps on some other versions as well, there is an assembler bug that reorders instructions incorrectly. To work around it, specify the target configuration @samp{mips-sgi-irix4loser}. This configuration inhibits assembler *************** inhibit reordering. *** 2651,2758 **** The @option{-noasmopt} option can be useful for testing whether a problem is due to erroneous assembler reordering. Even if a problem does not go away with @option{-noasmopt}, it may still be due to assembler ! reordering---perhaps GNU CC itself was miscompiled as a result. ! ! To enable debugging under Irix 5, you must use GNU as 2.5 or later, ! and use the @option{--with-gnu-as} configure option when configuring gcc. ! GNU as is distributed as part of the binutils package. ! ! You must use GAS on these platforms, as the native assembler can not handle ! the code for exception handling support. Either of these messages indicates ! that you are using the MIPS assembler when instead you should be using GAS: ! ! @samp{ as0: Error: ./libgcc2.c, line 1:Badly delimited numeric literal ! .4byte $LECIE1-$LSCIE1 ! as0: Error: ./libgcc2.c, line 1:malformed statement} ! ! or: ! ! @samp{ as0: Error: /src/bld-gcc/gcc/libgcc2.c, line 1:undefined symbol in expression ! .word $LECIE1-$LSCIE1} ! ! These systems don't have ranlib, which various components in GCC need; you ! should be able to avoid this problem by installing GNU binutils, which includes ! a functional ranlib for this system. ! You may get the following warning on irix4 platforms, it can be safely ignored. @example warning: foo.o does not have gp tables for all its sections. @end example ! When building GCC, the build process loops rebuilding @command{cc1} over and ! over again. This happens on mips-sgi-irix5.2, and possibly other platforms.@* ! It has been reported that this is a known bug in the @command{make} shipped with ! IRIX 5.2. We recommend you use GNU @command{make} instead of the vendor supplied ! @command{make} program; however, you may have success with @command{smake} on IRIX 5.2 if ! you do not have GNU @command{make} available. ! See @uref{http://freeware.sgi.com/,,http://freeware.sgi.com/} for more ! information about using GCC on IRIX platforms. @html


      @end html ! @heading @anchor{mips*-sgi-irix6}mips*-sgi-irix6 ! ! You must @emph{not} use GAS on irix6 platforms; doing so will only ! cause problems. ! ! These systems don't have @command{ranlib}, which various components in GCC need; you ! should be able to avoid this problem by making a dummy script called @command{ranlib} ! which just exits with zero status and placing it in your path. ! If you are using Irix @command{cc} as your bootstrap compiler, you must ensure that the N32 ABI is in use. To test this, compile a simple C file with @command{cc} and then run @command{file} on the resulting object file. The output should look like: @example ! @code{ test.o: ELF N32 MSB @dots{}} @end example If you see: @example ! @code{ test.o: ELF 32-bit MSB} @end example ! then your version of @command{cc} uses the O32 ABI default. You should set the environment variable @env{CC} to @samp{cc -n32} ! before configuring GCC. GCC does not currently support generating O32 ABI binaries in the ! mips-sgi-irix6 configurations. It used to be possible to create a GCC ! with O32 ABI only support by configuring it for the mips-sgi-irix5 ! target. See the link below for details. GCC does not correctly pass/return structures which are ! smaller than 16 bytes and which are not 8 bytes. The problem is very ! involved and difficult to fix. It affects a number of other targets also, but IRIX 6 is affected the most, because it is a 64 bit target, and 4 byte ! structures are common. The exact problem is that structures are being padded ! at the wrong end, e.g. a 4 byte structure is loaded into the lower 4 bytes of the register when it should be loaded into the upper 4 bytes of the register. GCC is consistent with itself, but not consistent with the SGI C compiler (and the SGI supplied runtime libraries), so the only failures that can happen are when there are library functions that take/return such ! structures. There are very few such library functions. I can only recall ! seeing two of them: inet_ntoa, and semctl. See @uref{http://freeware.sgi.com/,,http://freeware.sgi.com/} for more information about using GCC on IRIX platforms. - @html


      @end html @heading @anchor{mips-sony-sysv}mips-sony-sysv ! Sony MIPS NEWS. This works in NEWSOS 5.0.1, but not in 5.0.2 (which ! uses ELF instead of COFF). Support for 5.0.2 will probably be provided soon by volunteers. In particular, the linker does not like the code generated by GCC when shared libraries are linked in. --- 2726,2871 ---- The @option{-noasmopt} option can be useful for testing whether a problem is due to erroneous assembler reordering. Even if a problem does not go away with @option{-noasmopt}, it may still be due to assembler ! reordering---perhaps GCC itself was miscompiled as a result. ! You may get the following warning on IRIX 4 platforms, it can be safely ignored. @example warning: foo.o does not have gp tables for all its sections. @end example ! @html !

      !
      ! @end html ! @heading @anchor{mips-sgi-irix5}mips-sgi-irix5 ! This configuration has considerable problems, which will be fixed in a ! future release. + In order to compile GCC on an SGI running IRIX 5, the ``compiler_dev.hdr'' + subsystem must be installed from the IDO CD-ROM supplied by Silicon + Graphics. It is also available for download from + @uref{http://www.sgi.com/developers/devtools/apis/ido.html,,http://www.sgi.com/developers/devtools/apis/ido.html}. + + @code{make compare} may fail on version 5 of IRIX unless you add + @option{-save-temps} to @code{CFLAGS}. On these systems, the name of the + assembler input file is stored in the object file, and that makes + comparison fail if it differs between the @code{stage1} and + @code{stage2} compilations. The option @option{-save-temps} forces a + fixed name to be used for the assembler input file, instead of a + randomly chosen name in @file{/tmp}. Do not add @option{-save-temps} + unless the comparisons fail without that option. If you do you + @option{-save-temps}, you will have to manually delete the @samp{.i} and + @samp{.s} files after each series of compilations. + + If you use the MIPS C compiler to bootstrap, it may be necessary + to increase its table size for switch statements with the + @option{-Wf,-XNg1500} option. If you use the @option{-O2} + optimization option, you also need to use @option{-Olimit 3000}. + + To enable debugging under IRIX 5, you must use GNU @command{as} 2.11.2 + or later, + and use the @option{--with-gnu-as} configure option when configuring GCC. + GNU @command{as} is distributed as part of the binutils package. + When using release 2.11.2, you need to apply a patch + @uref{http://sources.redhat.com/ml/binutils/2001-07/msg00352.html,,http://sources.redhat.com/ml/binutils/2001-07/msg00352.html} + which will be included in the next release of binutils. + + When building GCC, the build process loops rebuilding @command{cc1} over + and over again. This happens on @samp{mips-sgi-irix5.2}, and possibly + other platforms. It has been reported that this is a known bug in the + @command{make} shipped with IRIX 5.2. We recommend you use GNU + @command{make} instead of the vendor supplied @command{make} program; + however, you may have success with @command{smake} on IRIX 5.2 if you do + not have GNU @command{make} available. @html


      @end html ! @heading @anchor{mips-sgi-irix6}mips-sgi-irix6 ! If you are using IRIX @command{cc} as your bootstrap compiler, you must ensure that the N32 ABI is in use. To test this, compile a simple C file with @command{cc} and then run @command{file} on the resulting object file. The output should look like: @example ! test.o: ELF N32 MSB @dots{} @end example If you see: + @example ! test.o: ELF 32-bit MSB @dots{} @end example ! or ! ! @example ! test.o: ELF 64-bit MSB @dots{} ! @end example ! ! then your version of @command{cc} uses the O32 or N64 ABI by default. You should set the environment variable @env{CC} to @samp{cc -n32} ! before configuring GCC@. ! ! GCC on IRIX 6 is usually built to support both the N32 and N64 ABIs. If ! you build GCC on a system that doesn't have the N64 libraries installed, ! you need to configure with @option{--disable-multilib} so GCC doesn't ! try to use them. Look for @file{/usr/lib64/libc.so.1} to see if you ! have the 64-bit libraries installed. ! ! You must @emph{not} use GNU @command{as} (which isn't built anyway as of ! binutils 2.11.2) on IRIX 6 platforms; doing so will only cause problems. GCC does not currently support generating O32 ABI binaries in the ! @samp{mips-sgi-irix6} configurations. It is possible to create a GCC ! with O32 ABI only support by configuring it for the @samp{mips-sgi-irix5} ! target and using a patched GNU @command{as} 2.11.2 as documented in the ! @uref{#mips-sgi-irix5,,@samp{mips-sgi-irix5}} section above. Using the ! native assembler requires patches to GCC which will be included in a ! future release. It is ! expected that O32 ABI support will be available again in a future release. ! ! The @option{--enable-threads} option doesn't currently work, a patch is ! in preparation for a future release. The @option{--enable-libgcj} ! option is disabled by default: IRIX 6 uses a very low default limit ! (20480) for the command line length. Although libtool contains a ! workaround for this problem, at least the N64 @samp{libgcj} is known not ! to build despite this, running into an internal error of the native ! @command{ld}. A sure fix is to increase this limit (@samp{ncargs}) to ! its maximum of 262144 bytes. If you have root access, you can use the ! @command{systune} command to do this. GCC does not correctly pass/return structures which are ! smaller than 16 bytes and which are not 8 bytes. The problem is very ! involved and difficult to fix. It affects a number of other targets also, but IRIX 6 is affected the most, because it is a 64 bit target, and 4 byte ! structures are common. The exact problem is that structures are being padded ! at the wrong end, e.g.@: a 4 byte structure is loaded into the lower 4 bytes of the register when it should be loaded into the upper 4 bytes of the register. GCC is consistent with itself, but not consistent with the SGI C compiler (and the SGI supplied runtime libraries), so the only failures that can happen are when there are library functions that take/return such ! structures. There are very few such library functions. Currently this ! is known to affect @code{inet_ntoa}, @code{inet_lnaof}, ! @code{inet_netof}, @code{inet_makeaddr}, and @code{semctl}. Until the ! bug is fixed, GCC contains workarounds for the known affected functions. See @uref{http://freeware.sgi.com/,,http://freeware.sgi.com/} for more information about using GCC on IRIX platforms. @html


      @end html @heading @anchor{mips-sony-sysv}mips-sony-sysv ! Sony MIPS NEWS@. This works in NEWSOS 5.0.1, but not in 5.0.2 (which ! uses ELF instead of COFF)@. Support for 5.0.2 will probably be provided soon by volunteers. In particular, the linker does not like the code generated by GCC when shared libraries are linked in. *************** code generated by GCC when shared librar *** 2762,2768 ****
      @end html @heading @anchor{ns32k-encore}ns32k-encore ! Encore ns32000 system. Encore systems are supported only under BSD. @html

      --- 2875,2881 ----
      @end html @heading @anchor{ns32k-encore}ns32k-encore ! Encore ns32000 system. Encore systems are supported only under BSD@. @html

      *************** Go to the Berkeley universe before compi *** 2786,2801 **** @end html @heading @anchor{ns32k-utek}ns32k-utek UTEK ns32000 system (``merlin''). The C compiler that comes with this ! system cannot compile GNU CC; contact @samp{tektronix!reed!mason} to get ! binaries of GNU CC for bootstrapping. @html


      @end html ! @heading @anchor{powerpc-*-elf}powerpc-*-elf, powerpc-*-sysv4 ! PowerPC system in big endian mode, running System V.4. You can specify a default version for the @option{-mcpu=@var{cpu_type}} switch by using the configure option @option{--with-cpu-@var{cpu_type}}. --- 2899,2913 ---- @end html @heading @anchor{ns32k-utek}ns32k-utek UTEK ns32000 system (``merlin''). The C compiler that comes with this ! system cannot compile GCC; contact @samp{tektronix!reed!mason} to get ! binaries of GCC for bootstrapping. @html


      @end html ! @heading @anchor{powerpc*-*-*}powerpc-*-* You can specify a default version for the @option{-mcpu=@var{cpu_type}} switch by using the configure option @option{--with-cpu-@var{cpu_type}}. *************** switch by using the configure option @op *** 2804,2819 ****


      @end html @heading @anchor{powerpc-*-linux-gnu*}powerpc-*-linux-gnu* ! You will need ! @uref{ftp://ftp.varesearch.com/pub/support/hjl/binutils,,binutils-2.9.4.0.8} ! or newer for a working GCC. It is strongly recommended to recompile binutils if you initially built it with gcc-2.7.2.x. - You can specify a default version for the @option{-mcpu=@var{cpu_type}} - switch by using the configure option @option{--with-cpu-@var{cpu_type}}. - @html


      --- 2916,2935 ----


      @end html + @heading @anchor{powerpc-*-elf}powerpc-*-elf, powerpc-*-sysv4 + PowerPC system in big endian mode, running System V.4. + + @html +

      +
      + @end html @heading @anchor{powerpc-*-linux-gnu*}powerpc-*-linux-gnu* ! You will need ! @uref{ftp://ftp.varesearch.com/pub/support/hjl/binutils,,binutils 2.9.4.0.8} ! or newer for a working GCC@. It is strongly recommended to recompile binutils if you initially built it with gcc-2.7.2.x. @html


      *************** switch by using the configure option @op *** 2822,2830 **** Embedded PowerPC system in big endian mode with @option{-mcall-aix} selected as the default. - You can specify a default version for the @option{-mcpu=@var{cpu_type}} - switch by using the configure option @option{--with-cpu-@var{cpu_type}}. - @html


      --- 2938,2943 ---- *************** switch by using the configure option @op *** 2833,2841 **** Embedded PowerPC system in big endian mode for use in running under the PSIM simulator. - You can specify a default version for the @option{-mcpu=@var{cpu_type}} - switch by using the configure option @option{--with-cpu-@var{cpu_type}}. - @html


      --- 2946,2951 ---- *************** switch by using the configure option @op *** 2843,2851 **** @heading @anchor{powerpc-*-eabi}powerpc-*-eabi Embedded PowerPC system in big endian mode. - You can specify a default version for the @option{-mcpu=@var{cpu_type}} - switch by using the configure option @option{--with-cpu-@var{cpu_type}}. - @html


      --- 2953,2958 ---- *************** switch by using the configure option @op *** 2853,2861 **** @heading @anchor{powerpcle-*-elf}powerpcle-*-elf, powerpcle-*-sysv4 PowerPC system in little endian mode, running System V.4. - You can specify a default version for the @option{-mcpu=@var{cpu_type}} - switch by using the configure option @option{--with-cpu-@var{cpu_type}}. - @html


      --- 2960,2965 ---- *************** the PSIM simulator. *** 2871,2888 **** @heading @anchor{powerpcle-*-eabi}powerpcle-*-eabi Embedded PowerPC system in little endian mode. - You can specify a default version for the @option{-mcpu=@var{cpu_type}} - switch by using the configure option @option{--with-cpu-@var{cpu_type}}. - @html


      @end html @heading @anchor{powerpcle-*-winnt}powerpcle-*-winnt, powerpcle-*-pe ! PowerPC system in little endian mode running Windows NT. ! ! You can specify a default version for the @option{-mcpu=@var{cpu_type}} ! switch by using the configure option @option{--with-cpu-@var{cpu_type}}. @html

      --- 2975,2986 ---- @heading @anchor{powerpcle-*-eabi}powerpcle-*-eabi Embedded PowerPC system in little endian mode. @html


      @end html @heading @anchor{powerpcle-*-winnt}powerpcle-*-winnt, powerpcle-*-pe ! PowerPC system in little endian mode running Windows NT@. @html

      *************** switch by using the configure option @op *** 2890,2898 **** @end html @heading @anchor{romp-*-aos}romp-*-aos, romp-*-mach The only operating systems supported for the IBM RT PC are AOS and ! MACH. GNU CC does not support AIX running on the RT. We recommend you ! compile GNU CC with an earlier version of itself; if you compile GNU CC ! with @code{hc}, the Metaware compiler, it will work, but you will get mismatches between the stage 2 and stage 3 compilers in various files. These errors are minor differences in some floating-point constants and can be safely ignored; the stage 3 compiler is correct. --- 2988,2996 ---- @end html @heading @anchor{romp-*-aos}romp-*-aos, romp-*-mach The only operating systems supported for the IBM RT PC are AOS and ! MACH@. GCC does not support AIX running on the RT@. We recommend you ! compile GCC with an earlier version of itself; if you compile GCC ! with @command{hc}, the Metaware compiler, it will work, but you will get mismatches between the stage 2 and stage 3 compilers in various files. These errors are minor differences in some floating-point constants and can be safely ignored; the stage 3 compiler is correct. *************** can be safely ignored; the stage 3 compi *** 2901,2992 ****


      @end html ! @heading @anchor{*-*-solaris*}*-*-solaris* ! ! Starting with Solaris, Sun does not ship a C compiler any more. To ! bootstrap and install GCC you first have to install a pre-built ! compiler, see our @uref{binaries.html,,binaries page} for ! details. ! ! You must use GNU Make to build GCC on Solaris 2. If you don't have GNU ! Make installed, you can use the prebuilt compiler mentioned above to ! build it. ! ! Sun 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.} ! ! This is Sun bug 4237974. This is fixed with patch 108908-02 and has ! been fixed in later (5.x) versions of the assembler. ! ! Solaris' @file{/bin/sh} will often fail to configure libstdc++-v3, boehm-gc or ! libjava. If you encounter this problem, set @var{CONFIG_SHELL} to ! @file{/bin/ksh} in your environment and run @samp{make bootstrap} again. ! Another possibility that sometimes helps is to remove ! @file{*-*-solaris*/config.cache}. @html !


      @end html ! @heading @anchor{sparc-sun-*}sparc-sun-* ! Sometimes on a Sun 4 you may observe a crash in the program ! @code{genflags} or @code{genoutput} while building GCC. This is said to ! be due to a bug in @code{sh}. You can probably get around it by running ! @code{genflags} or @code{genoutput} manually and then retrying the ! @code{make}. @html !


      @end html ! @heading @anchor{sparc-sun-solaris*}sparc-sun-solaris* ! On Solaris 2, executables of GCC version 2.0.2 are commonly ! available, but they have a bug that shows up when compiling current ! versions of GCC: undefined symbol errors occur during assembly if you ! use @option{-g}. ! The solution is to compile the current version of GCC without ! @option{-g}. That makes a working compiler which you can use to recompile ! with @option{-g}. Solaris 2 comes with a number of optional OS packages. Some of these ! packages are needed to use GCC fully. If you did not install all optional packages when installing Solaris, you will need to verify that the packages that GCC needs are installed. To check whether an optional package is installed, use ! the @code{pkginfo} command. To add an optional package, use the ! @code{pkgadd} command. For further details, see the Solaris documentation. ! For Solaris 2.0 and 2.1, GCC needs six packages: @samp{SUNWarc}, ! @samp{SUNWbtool}, @samp{SUNWesu}, @samp{SUNWhea}, @samp{SUNWlibm}, and ! @samp{SUNWtoo}. ! ! For Solaris 2.2, GCC needs an additional seventh package: @samp{SUNWsprot}. ! ! On Solaris 2, trying to use the linker and other tools in @file{/usr/ucb} to install GCC has been observed to cause trouble. For example, the linker may hang indefinitely. The fix is to remove @file{/usr/ucb} from your @code{PATH}. ! All releases of GNU binutils prior to 2.11.1 have known bugs on this ! platform. We recommend the use of GNU binutils 2.11.1 or the vendor ! tools (Sun as, Sun ld). ! Unfortunately, C++ shared libraries, including libstdc++, won't work ! properly if assembled with Sun as: the linker will complain about relocations in read-only sections, in the definition of virtual ! tables. Also, Sun as fails to process long symbols resulting from mangling template-heavy C++ function names. @html


      @end html @heading @anchor{sparc-sun-solaris2.7}sparc-sun-solaris2.7 Sun patch 107058-01 (1999-01-13) for SPARC Solaris 7 triggers a bug in --- 2999,3076 ----


      @end html ! @heading @anchor{s390-*-linux*}s390-*-linux* ! IBM S/390 system running Linux for S/390. @html !


      @end html ! @heading @anchor{s390x-*-linux*}s390x-*-linux* ! IBM zSeries system (64 bit) running Linux for zSeries. @html !


      @end html ! @heading @anchor{*-*-solaris*}*-*-solaris* ! Sun does not ship a C compiler with Solaris. To bootstrap and install ! GCC you first have to install a pre-built compiler, see our ! @uref{binaries.html,,binaries page} for details. ! ! Solaris' @file{/bin/sh} will often fail to configure @file{libstdc++-v3}, @file{boehm-gc} or ! @file{libjava}. If you encounter this problem, set @env{CONFIG_SHELL} to ! @file{/bin/ksh} in your environment and run @command{make bootstrap} again. ! Another possibility that sometimes helps is to remove ! @file{*-*-solaris*/config.cache}. Solaris 2 comes with a number of optional OS packages. Some of these ! packages are needed to use GCC fully, namely @code{SUNWarc}, ! @code{SUNWbtool}, @code{SUNWesu}, @code{SUNWhea}, @code{SUNWlibm}, ! @code{SUNWsprot}, and @code{SUNWtoo}. If you did not install all optional packages when installing Solaris, you will need to verify that the packages that GCC needs are installed. To check whether an optional package is installed, use ! the @command{pkginfo} command. To add an optional package, use the ! @command{pkgadd} command. For further details, see the Solaris documentation. ! On some versions of Solaris, trying to use the linker and other tools in @file{/usr/ucb} to install GCC has been observed to cause trouble. For example, the linker may hang indefinitely. The fix is to remove @file{/usr/ucb} from your @code{PATH}. ! All releases of GNU binutils prior to 2.11.2 have known bugs on this ! platform. We recommend the use of GNU binutils 2.11.2 or the vendor ! tools (Sun @command{as}, Sun @command{ld}). ! Unfortunately, C++ shared libraries, including @samp{libstdc++}, won't work ! properly if assembled with Sun @command{as}: the linker will complain about relocations in read-only sections, in the definition of virtual ! tables. Also, Sun @command{as} fails to process long symbols resulting from mangling template-heavy C++ function names. @html


      @end html + @heading @anchor{sparc-sun-solaris*}sparc-sun-solaris* + + 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.} + + This is Sun bug 4237974. This is fixed with patch 108908-02 and has + been fixed in later (5.x) versions of the assembler. + + @html +

      +
      + @end html @heading @anchor{sparc-sun-solaris2.7}sparc-sun-solaris2.7 Sun patch 107058-01 (1999-01-13) for SPARC Solaris 7 triggers a bug in *************** the dynamic linker. This problem (Sun b *** 2994,3000 **** and later, including all EGCS releases. Sun formerly recommended 107058-01 for all Solaris 7 users, but around 1999-09-01 it started to recommend it only for people who use Sun's compilers. ! Here are some workarounds to this problem: @itemize @bullet @item --- 3078,3084 ---- and later, including all EGCS releases. Sun formerly recommended 107058-01 for all Solaris 7 users, but around 1999-09-01 it started to recommend it only for people who use Sun's compilers. ! Here are some workarounds to this problem: @itemize @bullet @item *************** complete patch for bug 4210064. This is *** 3003,3013 **** unless you must also use Sun's C compiler. Unfortunately 107058-01 is preinstalled on some new Solaris-based hosts, so you may have to back it out. ! @item Copy the original, unpatched Solaris 7 @command{/usr/ccs/bin/as} into ! @command{/usr/local/lib/gcc-lib/sparc-sun-solaris2.7/2.95.1/as}, adjusting the latter name to fit your local conventions and software version numbers. --- 3087,3097 ---- unless you must also use Sun's C compiler. Unfortunately 107058-01 is preinstalled on some new Solaris-based hosts, so you may have to back it out. ! @item Copy the original, unpatched Solaris 7 @command{/usr/ccs/bin/as} into ! @command{/usr/local/lib/gcc-lib/sparc-sun-solaris2.7/3.0/as}, adjusting the latter name to fit your local conventions and software version numbers. *************** for two reasons. First, you must instal *** 3019,3027 **** run code generated by GCC; it doesn't suffice to install it only on the hosts that run GCC itself. Second, Sun says that 106950-03 is only a partial fix for bug 4210064, but Sun doesn't know whether the ! partial fix is adequate for GCC. Revision -08 or later should fix the bug, but (as of 1999-10-06) it is still being tested. ! @end itemize @html --- 3103,3111 ---- run code generated by GCC; it doesn't suffice to install it only on the hosts that run GCC itself. Second, Sun says that 106950-03 is only a partial fix for bug 4210064, but Sun doesn't know whether the ! partial fix is adequate for GCC@. Revision -08 or later should fix the bug, but (as of 1999-10-06) it is still being tested. ! @end itemize @html *************** will assume that any missing type is @co *** 3042,3051 **** For Solaris 8, this is fixed by revision 24 or later of patch 108652 (for SPARCs) or 108653 (for Intels). ! Solaris 8's linker fails to link some libjava programs if previously-installed GCC java libraries already exist in the configured ! prefix. For this reason, libgcj is disabled by default on Solaris 8. ! If you use GNU ld, or if you don't have a previously-installed libgcj in the same prefix, use @option{--enable-libgcj} to build and install the Java libraries. --- 3126,3135 ---- For Solaris 8, this is fixed by revision 24 or later of patch 108652 (for SPARCs) or 108653 (for Intels). ! Solaris 8's linker fails to link some @samp{libjava} programs if previously-installed GCC java libraries already exist in the configured ! prefix. For this reason, @samp{libgcj} is disabled by default on Solaris 8. ! If you use GNU ld, or if you don't have a previously-installed @samp{libgcj} in the same prefix, use @option{--enable-libgcj} to build and install the Java libraries. *************** Java libraries. *** 3053,3079 ****


      @end html - @heading @anchor{sunv5}Sun V5.0 Compiler Bugs - - The Sun V5.0 compilers are known to mis-compile GCC 2.95 and GCC 2.95.1, - which in turn causes GCC to fail its bootstrap comparison test. - GCC 2.95.2 has a workaround. - - - @html -

      -
      - @end html @heading @anchor{sparc-sun-sunos*}sparc-sun-sunos* ! A bug in the SunOS4 linker will cause it to crash when linking @option{-fPIC} compiled objects (and will therefore not allow you to build shared libraries). To fix this problem you can either use the most recent version of ! binutils or get the latest SunOS4 linker patch (patch ID 100170-10) from Sun's patch site. @html

      --- 3137,3157 ----


      @end html @heading @anchor{sparc-sun-sunos*}sparc-sun-sunos* ! A bug in the SunOS 4 linker will cause it to crash when linking @option{-fPIC} compiled objects (and will therefore not allow you to build shared libraries). To fix this problem you can either use the most recent version of ! binutils or get the latest SunOS 4 linker patch (patch ID 100170-10) from Sun's patch site. + Sometimes on a Sun 4 you may observe a crash in the program + @command{genflags} or @command{genoutput} while building GCC. This is said to + be due to a bug in @command{sh}. You can probably get around it by running + @command{genflags} or @command{genoutput} manually and then retrying the + @command{make}. @html

      *************** from Sun's patch site. *** 3081,3088 **** @end html @heading @anchor{sparc-unknown-linux-gnulibc1}sparc-unknown-linux-gnulibc1 ! It has been reported that you might need ! @uref{ftp://ftp.yggdrasil.com/private/hjl,,binutils-2.8.1.0.23} for this platform, too. --- 3159,3166 ---- @end html @heading @anchor{sparc-unknown-linux-gnulibc1}sparc-unknown-linux-gnulibc1 ! It has been reported that you might need ! @uref{ftp://ftp.yggdrasil.com/private/hjl,,binutils 2.8.1.0.23} for this platform, too. *************** for this platform, too. *** 3094,3102 **** GCC version 2.95 is not able to compile code correctly for @code{sparc64} targets. Users of the Linux kernel, at least, ! 12~can use the @code{sparc32} program to start up a new shell invocation with an environment that causes @command{configure} to ! recognize (via @samp{uname -a}) the system as @var{sparc-*-*} instead. @html --- 3172,3180 ---- GCC version 2.95 is not able to compile code correctly for @code{sparc64} targets. Users of the Linux kernel, at least, ! can use the @code{sparc32} program to start up a new shell invocation with an environment that causes @command{configure} to ! recognize (via @samp{uname -a}) the system as @samp{sparc-*-*} instead. @html *************** ld fatal: failed to write symbol name @v *** 3112,3118 **** in strings table for file @var{whatever} @end smallexample ! This probably indicates that the disk is full or your ULIMIT won't allow the file to be as large as it needs to be. This problem can also result because the kernel parameter @code{MAXUMEM} --- 3190,3196 ---- in strings table for file @var{whatever} @end smallexample ! This probably indicates that the disk is full or your ulimit won't allow the file to be as large as it needs to be. This problem can also result because the kernel parameter @code{MAXUMEM} *************** On System V, if you get an error like th *** 3128,3134 **** @end example @noindent ! that too indicates a problem with disk space, ULIMIT, or @code{MAXUMEM}. On a System V release 4 system, make sure @file{/usr/bin} precedes @file{/usr/ucb} in @code{PATH}. The @code{cc} command in --- 3206,3212 ---- @end example @noindent ! that too indicates a problem with disk space, ulimit, or @code{MAXUMEM}. On a System V release 4 system, make sure @file{/usr/bin} precedes @file{/usr/ucb} in @code{PATH}. The @code{cc} command in *************** On a System V release 4 system, make sur *** 3139,3152 ****
      @end html @heading @anchor{vax-dec-ultrix}vax-dec-ultrix ! Don't try compiling with Vax C (@code{vcc}). It produces incorrect code in some cases (for example, when @code{alloca} is used). - Meanwhile, compiling @file{cp/parse.c} with pcc does not work because of - an internal table size limitation in that compiler. To avoid this - problem, compile just the GNU C compiler first, and use it to recompile - building all the languages that you want to run. - @html


      --- 3217,3225 ----
      @end html @heading @anchor{vax-dec-ultrix}vax-dec-ultrix ! Don't try compiling with VAX C (@code{vcc}). It produces incorrect code in some cases (for example, when @code{alloca} is used). @html


      *************** system's linker seems to be unable to ha *** 3160,3166 **** debugging information. The system's compiler runs out of capacity when compiling @file{stmt.c} ! in GNU CC. You can work around this by building @file{cpp} in GNU CC first, then use that instead of the system's preprocessor with the system's C compiler to compile @file{stmt.c}. Here is how: --- 3233,3239 ---- debugging information. The system's compiler runs out of capacity when compiling @file{stmt.c} ! in GCC@. You can work around this by building @file{cpp} in GCC first, then use that instead of the system's preprocessor with the system's C compiler to compile @file{stmt.c}. Here is how: *************** echo '/lib/cpp.gnu -traditional $@{1+"$@ *** 3171,3177 **** chmod +x /lib/cpp @end smallexample ! The system's compiler produces bad code for some of the GNU CC optimization files. So you must build the stage 2 compiler without optimization. Then build a stage 3 compiler with optimization. That executable should work. Here are the necessary commands: --- 3244,3250 ---- chmod +x /lib/cpp @end smallexample ! The system's compiler produces bad code for some of the GCC optimization files. So you must build the stage 2 compiler without optimization. Then build a stage 3 compiler with optimization. That executable should work. Here are the necessary commands: *************** as the file @file{cc1plus} is larger tha *** 3191,3197 **** @end html @heading @anchor{windows}Microsoft Windows (32 bit) ! A port of GCC 2.95.x is included with the @uref{http://www.cygwin.com/,,Cygwin environment}. Current (as of early 2001) snapshots of GCC will build under Cygwin --- 3264,3270 ---- @end html @heading @anchor{windows}Microsoft Windows (32 bit) ! A port of GCC 2.95.x is included with the @uref{http://www.cygwin.com/,,Cygwin environment}. Current (as of early 2001) snapshots of GCC will build under Cygwin *************** GCC does not currently support OS/2. Ho *** 3207,3213 **** working on a generic OS/2 port with pgcc. The current code code can be found at @uref{http://www.goof.com/pcg/os2/,,http://www.goof.com/pcg/os2/}. ! An older copy of GCC 2.8.1 is included with the EMX tools available at @uref{ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/,, ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/}. --- 3280,3286 ---- working on a generic OS/2 port with pgcc. The current code code can be found at @uref{http://www.goof.com/pcg/os2/,,http://www.goof.com/pcg/os2/}. ! An older copy of GCC 2.8.1 is included with the EMX tools available at @uref{ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/,, ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/}. *************** ftp://ftp.leo.org/pub/comp/os/os2/leo/de *** 3216,3260 ****
      @end html @heading @anchor{older}Older systems ! ! GCC contains support files for many older (1980s and early ! 1990s) Unix variants. For the most part, support for these systems ! has not been deliberately removed, but it has not been maintained for ! several years and may suffer from bitrot. Support from some systems ! has been removed from GCC 3: fx80, ns32-ns-genix, pyramid, tahoe, ! gmicro, spur; most of these targets had not been updated since GCC version 1. ! ! Support for older systems as targets for cross-compilation is less ! problematic than support for them as hosts for GCC; if an enthusiast ! wishes to make such a target work again (including resurrecting any ! of the targets that never worked with GCC 2, starting from the last ! CVS version before they were removed), patches ! @uref{../contribute.html,,following the usual requirements} ! would be likely to be accepted, since they should not affect the support for more modern targets. ! ! Support for old systems as hosts for GCC can cause problems if the ! workarounds for compiler, library and operating system bugs affect the ! cleanliness or maintainability of the rest of GCC. In some cases, to ! bring GCC up on such a system, if still possible with current GCC, may ! require first installing an old version of GCC which did work on that ! system, and using it to compile a more recent GCC, to avoid bugs in ! the vendor compiler. Old releases of GCC 1 and GCC 2 are available in ! the old-releases directory on the ! @uref{../mirrors.html,,GCC mirror sites}. Header bugs may generally be avoided using @command{fixincludes}, but bugs or deficiencies in libraries and the operating system may still cause problems. ! ! For some systems, old versions of GNU binutils may also be useful, ! and are available from pub/binutils/old-releases on @uref{http://sources.redhat.com/mirrors.html,,sources.redhat.com mirror sites}. ! ! Some of the information on specific systems above relates to ! such older systems, but much of the information ! about GCC on such systems (which may no longer be applicable to current GCC) is to be found in the GCC texinfo manual. ! @html


      --- 3289,3333 ----
      @end html @heading @anchor{older}Older systems ! ! GCC contains support files for many older (1980s and early ! 1990s) Unix variants. For the most part, support for these systems ! has not been deliberately removed, but it has not been maintained for ! several years and may suffer from bitrot. Support from some systems ! has been removed from GCC 3: fx80, ns32-ns-genix, pyramid, tahoe, ! gmicro, spur; most of these targets had not been updated since GCC version 1. ! ! Support for older systems as targets for cross-compilation is less ! problematic than support for them as hosts for GCC; if an enthusiast ! wishes to make such a target work again (including resurrecting any ! of the targets that never worked with GCC 2, starting from the last ! CVS version before they were removed), patches ! @uref{../contribute.html,,following the usual requirements} ! would be likely to be accepted, since they should not affect the support for more modern targets. ! ! Support for old systems as hosts for GCC can cause problems if the ! workarounds for compiler, library and operating system bugs affect the ! cleanliness or maintainability of the rest of GCC@. In some cases, to ! bring GCC up on such a system, if still possible with current GCC, may ! require first installing an old version of GCC which did work on that ! system, and using it to compile a more recent GCC, to avoid bugs in ! the vendor compiler. Old releases of GCC 1 and GCC 2 are available in ! the @file{old-releases} directory on the ! @uref{../mirrors.html,,GCC mirror sites}. Header bugs may generally be avoided using @command{fixincludes}, but bugs or deficiencies in libraries and the operating system may still cause problems. ! ! For some systems, old versions of GNU binutils may also be useful, ! and are available from @file{pub/binutils/old-releases} on @uref{http://sources.redhat.com/mirrors.html,,sources.redhat.com mirror sites}. ! ! Some of the information on specific systems above relates to ! such older systems, but much of the information ! about GCC on such systems (which may no longer be applicable to current GCC) is to be found in the GCC texinfo manual. ! @html


      diff -Nrc3pad gcc-3.0/gcc/doc/invoke.texi gcc-3.0.1/gcc/doc/invoke.texi *** gcc-3.0/gcc/doc/invoke.texi Thu Jun 14 15:54:20 2001 --- gcc-3.0.1/gcc/doc/invoke.texi Fri Aug 17 12:20:39 2001 *************** script to report bugs is recommended. *** 50,56 **** @c man end @c man begin AUTHOR See the Info entry for @file{gcc}, or ! @w{@uref{http://gcc.gnu.org/thanks.html}}, for contributors to GCC. @c man end @end ignore --- 50,56 ---- @c man end @c man begin AUTHOR See the Info entry for @file{gcc}, or ! @w{@uref{http://gcc.gnu.org/thanks.html}}, for contributors to GCC@. @c man end @end ignore *************** in the following sections. *** 174,180 **** -fno-elide-constructors @gol -fno-enforce-eh-specs -fexternal-templates @gol -falt-external-templates @gol ! -ffor-scope -fno-for-scope -fno-gnu-keywords -fno-honor-std @gol -fno-implicit-templates @gol -fno-implicit-inline-templates @gol -fno-implement-inlines -fms-extensions @gol --- 174,180 ---- -fno-elide-constructors @gol -fno-enforce-eh-specs -fexternal-templates @gol -falt-external-templates @gol ! -ffor-scope -fno-for-scope -fno-gnu-keywords @gol -fno-implicit-templates @gol -fno-implicit-inline-templates @gol -fno-implement-inlines -fms-extensions @gol *************** in the following sections. *** 237,243 **** @xref{Debugging Options,,Options for Debugging Your Program or GCC}. @gccoptlist{ -a -ax -d@var{letters} -dumpspecs -dumpmachine -dumpversion @gol ! -fdump-unnumbered -fdump-translation-unit@r{[}-@var{n}@r{]} -fdump-class-hierarchy@r{[}-@var{n}@r{]} @gol -fdump-ast-original@r{[}-@var{n}@r{]} -fdump-ast-optimized@r{[}-@var{n}@r{]} @gol -fmem-report -fpretend-float @gol -fprofile-arcs -ftest-coverage -ftime-report @gol --- 237,244 ---- @xref{Debugging Options,,Options for Debugging Your Program or GCC}. @gccoptlist{ -a -ax -d@var{letters} -dumpspecs -dumpmachine -dumpversion @gol ! -fdump-unnumbered -fdump-translation-unit@r{[}-@var{n}@r{]} @gol ! -fdump-class-hierarchy@r{[}-@var{n}@r{]} @gol -fdump-ast-original@r{[}-@var{n}@r{]} -fdump-ast-optimized@r{[}-@var{n}@r{]} @gol -fmem-report -fpretend-float @gol -fprofile-arcs -ftest-coverage -ftime-report @gol *************** in the following sections. *** 285,296 **** -iprefix @var{file} -iwithprefix @var{dir} @gol -iwithprefixbefore @var{dir} -isystem @var{dir} @gol -M -MM -MF -MG -MP -MQ -MT -nostdinc -P -remap @gol ! -trigraphs -undef -U@var{macro} -Wp\,@var{option}} @item Assembler Option @xref{Assembler Options,,Passing Options to the Assembler}. @gccoptlist{ ! -Wa\,@var{option}} @item Linker Options @xref{Link Options,,Options for Linking}. --- 286,297 ---- -iprefix @var{file} -iwithprefix @var{dir} @gol -iwithprefixbefore @var{dir} -isystem @var{dir} @gol -M -MM -MF -MG -MP -MQ -MT -nostdinc -P -remap @gol ! -trigraphs -undef -U@var{macro} -Wp,@var{option}} @item Assembler Option @xref{Assembler Options,,Passing Options to the Assembler}. @gccoptlist{ ! -Wa,@var{option}} @item Linker Options @xref{Link Options,,Options for Linking}. *************** in the following sections. *** 298,304 **** @var{object-file-name} -l@var{library} @gol -nostartfiles -nodefaultlibs -nostdlib @gol -s -static -static-libgcc -shared -shared-libgcc -symbolic @gol ! -Wl\,@var{option} -Xlinker @var{option} @gol -u @var{symbol}} @item Directory Options --- 299,305 ---- @var{object-file-name} -l@var{library} @gol -nostartfiles -nodefaultlibs -nostdlib @gol -s -static -static-libgcc -shared -shared-libgcc -symbolic @gol ! -Wl,@var{option} -Xlinker @var{option} @gol -u @var{symbol}} @item Directory Options *************** in the following sections. *** 525,531 **** @emph{System V Options} @gccoptlist{ ! -Qy -Qn -YP\,@var{paths} -Ym\,@var{dir}} @emph{ARC Options} @gccoptlist{ --- 526,532 ---- @emph{System V Options} @gccoptlist{ ! -Qy -Qn -YP,@var{paths} -Ym,@var{dir}} @emph{ARC Options} @gccoptlist{ *************** in the following sections. *** 575,580 **** --- 576,587 ---- -minline-divide-max-throughput -mno-dwarf2-asm @gol -mfixed-range=@var{register-range}} + @emph{S/390 and zSeries Options} + @gccoptlist{ + -mhard-float -msoft-float -mbackchain -mno-backchain @gol + -msmall-exec -mno-small-exec -mmvcle -mno-mvcle @gol + -m64 -m31 -mdebug -mno-debug} + @item Code Generation Options @xref{Code Gen Options,,Options for Code Generation Conventions}. @gccoptlist{ *************** C header file (not to be compiled or lin *** 657,663 **** @itemx @var{file}.C C++ source code which must be preprocessed. Note that in @samp{.cxx}, the last two letters must both be literally @samp{x}. Likewise, ! @samp{.C} refers to a literal capital C. @item @var{file}.f @itemx @var{file}.for --- 664,670 ---- @itemx @var{file}.C C++ source code which must be preprocessed. Note that in @samp{.cxx}, the last two letters must both be literally @samp{x}. Likewise, ! @samp{.C} refers to a literal capital C@. @item @var{file}.f @itemx @var{file}.for *************** preprocessor). *** 672,678 **** @item @var{file}.r Fortran source code which must be preprocessed with a RATFOR ! preprocessor (not included with GCC). @xref{Overall Options,,Options Controlling the Kind of Output, g77, Using and Porting GNU Fortran}, for more details of the handling of --- 679,685 ---- @item @var{file}.r Fortran source code which must be preprocessed with a RATFOR ! preprocessor (not included with GCC)@. @xref{Overall Options,,Options Controlling the Kind of Output, g77, Using and Porting GNU Fortran}, for more details of the handling of *************** producing an executable file as output. *** 789,795 **** If @option{-o} is not specified, the default is to put an executable file in @file{a.out}, the object file for @file{@var{source}.@var{suffix}} in @file{@var{source}.o}, its assembler file in @file{@var{source}.s}, and ! all preprocessed C source on standard output.@refill @item -v @opindex v --- 796,802 ---- If @option{-o} is not specified, the default is to put an executable file in @file{a.out}, the object file for @file{@var{source}.@var{suffix}} in @file{@var{source}.o}, its assembler file in @file{@var{source}.s}, and ! all preprocessed C source on standard output. @item -v @opindex v *************** command-line options that you use for co *** 849,855 **** language; or command-line options meaningful for C and related languages; or options that are meaningful only for C++ programs. @xref{C Dialect Options,,Options Controlling C Dialect}, for ! explanations of options for languages related to C. @xref{C++ Dialect Options,,Options Controlling C++ Dialect}, for explanations of options that are meaningful only for C++ programs. --- 856,862 ---- language; or command-line options meaningful for C and related languages; or options that are meaningful only for C++ programs. @xref{C Dialect Options,,Options Controlling C Dialect}, for ! explanations of options for languages related to C@. @xref{C++ Dialect Options,,Options Controlling C++ Dialect}, for explanations of options that are meaningful only for C++ programs. *************** In C mode, support all ISO C89 programs. *** 871,877 **** remove GNU extensions that conflict with ISO C++. This turns off certain features of GCC that are incompatible with ISO ! C (when compiling C code), or of standard C++ (when compiling C++ code), such as the @code{asm} and @code{typeof} keywords, and predefined macros such as @code{unix} and @code{vax} that identify the type of system you are using. It also enables the undesirable and --- 878,884 ---- remove GNU extensions that conflict with ISO C++. This turns off certain features of GCC that are incompatible with ISO ! C89 (when compiling C code), or of standard C++ (when compiling C++ code), such as the @code{asm} and @code{typeof} keywords, and predefined macros such as @code{unix} and @code{vax} that identify the type of system you are using. It also enables the undesirable and *************** programs that might use these names for *** 900,944 **** Functions which would normally be built in but do not have semantics defined by ISO C (such as @code{alloca} and @code{ffs}) are not built-in functions with @option{-ansi} is used. @xref{Other Builtins,,Other ! built-in functions provided by GNU CC}, for details of the functions affected. @item -std= @opindex std ! Determine the language standard. A value for this option must be provided; possible values are @table @samp ! @item iso9899:1990 ! Same as @option{-ansi} @item iso9899:199409 ! ISO C as modified in amend. 1 ! ! @item iso9899:1999 ! ISO C99. Note that this standard is not yet fully supported; see ! @w{@uref{http://gcc.gnu.org/gcc-3.0/c99status.html}} for more information. ! ! @item c89 ! same as @option{-std=iso9899:1990} @item c99 ! same as @option{-std=iso9899:1999} @item gnu89 ! default, iso9899:1990 + gnu extensions @item gnu99 ! iso9899:1999 + gnu extensions ! ! @item iso9899:199x ! same as @option{-std=iso9899:1999}, deprecated ! ! @item c9x ! same as @option{-std=iso9899:1999}, deprecated ! ! @item gnu9x ! same as @option{-std=gnu99}, deprecated @end table --- 907,944 ---- Functions which would normally be built in but do not have semantics defined by ISO C (such as @code{alloca} and @code{ffs}) are not built-in functions with @option{-ansi} is used. @xref{Other Builtins,,Other ! built-in functions provided by GCC}, for details of the functions affected. @item -std= @opindex std ! Determine the language standard. This option is currently only ! supported when compiling C@. A value for this option must be provided; possible values are @table @samp ! @item c89 ! @itemx iso9899:1990 ! ISO C89 (same as @option{-ansi}). @item iso9899:199409 ! ISO C89 as modified in amendment 1. @item c99 ! @itemx c9x ! @itemx iso9899:1999 ! @itemx iso9899:199x ! ISO C99. Note that this standard is not yet fully supported; see ! @w{@uref{http://gcc.gnu.org/c99status.html}} for more information. The ! names @samp{c9x} and @samp{iso9899:199x} are deprecated. @item gnu89 ! Default, ISO C89 plus GNU extensions (including some C99 features). @item gnu99 ! @itemx gnu9x ! ISO C99 plus GNU extensions. When ISO C99 is fully implemented in GCC, ! this will become the default. The name @samp{gnu9x} is deprecated. @end table *************** these standard versions. *** 959,965 **** @opindex aux-info Output to the given filename prototyped declarations for all functions declared and/or defined in a translation unit, including those in header ! files. This option is silently ignored in any language other than C. Besides declarations, the file indicates, in comments, the origin of each declaration (source file and line), whether the declaration was --- 959,965 ---- @opindex aux-info Output to the given filename prototyped declarations for all functions declared and/or defined in a translation unit, including those in header ! files. This option is silently ignored in any language other than C@. Besides declarations, the file indicates, in comments, the origin of each declaration (source file and line), whether the declaration was *************** switch only affects the @code{asm} and @ *** 990,996 **** @cindex built-in functions Don't recognize built-in functions that do not begin with @samp{__builtin_} as prefix. @xref{Other Builtins,,Other built-in ! functions provided by GNU CC}, for details of the functions affected, including those which are not built-in functions when @option{-ansi} or @option{-std} options for strict ISO C conformance are used because they do not have an ISO standard meaning. --- 990,996 ---- @cindex built-in functions Don't recognize built-in functions that do not begin with @samp{__builtin_} as prefix. @xref{Other Builtins,,Other built-in ! functions provided by GCC}, for details of the functions affected, including those which are not built-in functions when @option{-ansi} or @option{-std} options for strict ISO C conformance are used because they do not have an ISO standard meaning. *************** with ISO or GNU C conventions (the defau *** 1223,1229 **** @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 --- 1223,1229 ---- @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 *************** g++ -g -frepo -O -c firstClass.C *** 1244,1250 **** @noindent In this example, only @option{-frepo} is an option meant only for C++ programs; you can use the other options with any ! language supported by GCC. Here is a list of options that are @emph{only} for compiling C++ programs: --- 1244,1250 ---- @noindent In this example, only @option{-frepo} is an option meant only for C++ programs; you can use the other options with any ! language supported by GCC@. Here is a list of options that are @emph{only} for compiling C++ programs: *************** this check is normally unnecessary. *** 1263,1269 **** An alternative to using this option is to specify that your @code{operator new} does not throw any exceptions; if you declare it ! @samp{throw()}, g++ will check the return value. See also @samp{new (nothrow)}. @item -fconserve-space --- 1263,1269 ---- An alternative to using this option is to specify that your @code{operator new} does not throw any exceptions; if you declare it ! @samp{throw()}, G++ will check the return value. See also @samp{new (nothrow)}. @item -fconserve-space *************** identifiers. However, ISO C and C++ for *** 1302,1308 **** @opindex fno-elide-constructors The C++ standard allows an implementation to omit creating a temporary which is only used to initialize another object of the same type. ! Specifying this option disables that optimization, and forces g++ to call the copy constructor in all cases. @item -fno-enforce-eh-specs --- 1302,1308 ---- @opindex fno-elide-constructors The C++ standard allows an implementation to omit creating a temporary which is only used to initialize another object of the same type. ! Specifying this option disables that optimization, and forces G++ to call the copy constructor in all cases. @item -fno-enforce-eh-specs *************** a @i{for-init-statement} is limited to t *** 1338,1344 **** as specified by the C++ standard. If @option{-fno-for-scope} is specified, the scope of variables declared in a @i{for-init-statement} extends to the end of the enclosing scope, ! as was the case in old versions of gcc, and other (traditional) implementations of C++. The default if neither flag is given to follow the standard, --- 1338,1344 ---- as specified by the C++ standard. If @option{-fno-for-scope} is specified, the scope of variables declared in a @i{for-init-statement} extends to the end of the enclosing scope, ! as was the case in old versions of G++, and other (traditional) implementations of C++. The default if neither flag is given to follow the standard, *************** otherwise be invalid, or have different *** 1348,1373 **** @item -fno-gnu-keywords @opindex fno-gnu-keywords Do not recognize @code{typeof} as a keyword, so that code can use this ! word as an identifier. You can use the keyword @code{__typeof__} instead. @option{-ansi} implies @option{-fno-gnu-keywords}. - @item -fno-honor-std - @opindex fno-honor-std - Ignore @code{namespace std}, instead of treating it as a real namespace. - With this switch, the compiler will ignore - @code{namespace-declarations}, @code{using-declarations}, - @code{using-directives}, and @code{namespace-names}, if they involve - @code{std}. - - This option is only useful if you have manually compiled the C++ - run-time library with the same switch. Otherwise, your programs will - not link. The use of this option is not recommended, and the option may - be removed from a future version of G++. - @item -fno-implicit-templates @opindex fno-implicit-templates Never emit code for non-inline templates which are instantiated ! implicitly (i.e. by use); only emit code for explicit instantiations. @xref{Template Instantiation}, for more information. @item -fno-implicit-inline-templates --- 1348,1360 ---- @item -fno-gnu-keywords @opindex fno-gnu-keywords Do not recognize @code{typeof} as a keyword, so that code can use this ! word as an identifier. You can use the keyword @code{__typeof__} instead. @option{-ansi} implies @option{-fno-gnu-keywords}. @item -fno-implicit-templates @opindex fno-implicit-templates Never emit code for non-inline templates which are instantiated ! implicitly (i.e.@: by use); only emit code for explicit instantiations. @xref{Template Instantiation}, for more information. @item -fno-implicit-inline-templates *************** int and getting a pointer to member func *** 1390,1396 **** @item -fno-nonansi-builtins @opindex fno-nonansi-builtins Disable built-in declarations of functions that are not mandated by ! ANSI/ISO C. These include @code{ffs}, @code{alloca}, @code{_exit}, @code{index}, @code{bzero}, @code{conjf}, and other related functions. @item -fno-operator-names --- 1377,1383 ---- @item -fno-nonansi-builtins @opindex fno-nonansi-builtins Disable built-in declarations of functions that are not mandated by ! ANSI/ISO C@. These include @code{ffs}, @code{alloca}, @code{_exit}, @code{index}, @code{bzero}, @code{conjf}, and other related functions. @item -fno-operator-names *************** synonyms as keywords. *** 1402,1416 **** @item -fno-optional-diags @opindex fno-optional-diags Disable diagnostics that the standard says a compiler does not need to ! issue. Currently, the only such diagnostic issued by g++ is the one for a name having multiple meanings within a class. @item -fpermissive @opindex fpermissive Downgrade messages about nonconformant code from errors to warnings. By ! default, g++ effectively sets @option{-pedantic-errors} without @option{-pedantic}; this option reverses that. This behavior and this ! option are superseded by @option{-pedantic}, which works as it does for GNU C. @item -frepo @opindex frepo --- 1389,1403 ---- @item -fno-optional-diags @opindex fno-optional-diags Disable diagnostics that the standard says a compiler does not need to ! issue. Currently, the only such diagnostic issued by G++ is the one for a name having multiple meanings within a class. @item -fpermissive @opindex fpermissive Downgrade messages about nonconformant code from errors to warnings. By ! default, G++ effectively sets @option{-pedantic-errors} without @option{-pedantic}; this option reverses that. This behavior and this ! option are superseded by @option{-pedantic}, which works as it does for GNU C@. @item -frepo @opindex frepo *************** This information is generally only usefu *** 1436,1442 **** @opindex ftemplate-depth Set the maximum instantiation depth for template classes to @var{n}. A limit on the template instantiation depth is needed to detect ! endless recursions during template class instantiation. ANSI/ISO C++ conforming programs must not rely on a maximum depth greater than 17. @item -fuse-cxa-atexit --- 1423,1429 ---- @opindex ftemplate-depth Set the maximum instantiation depth for template classes to @var{n}. A limit on the template instantiation depth is needed to detect ! endless recursions during template class instantiation. ANSI/ISO C++ conforming programs must not rely on a maximum depth greater than 17. @item -fuse-cxa-atexit *************** Do not assume @samp{inline} for function *** 1473,1490 **** functions will have linkage like inline functions; they just won't be inlined by default. ! @item -Wctor-dtor-privacy (C++ only) @opindex Wctor-dtor-privacy Warn when a class seems unusable, because all the constructors or destructors in a class are private and the class has no friends or public static member functions. ! @item -Wnon-virtual-dtor (C++ only) @opindex Wnon-virtual-dtor Warn when a class declares a non-virtual destructor that should probably be virtual, because it looks like the class will be used polymorphically. ! @item -Wreorder (C++ only) @opindex Wreorder @cindex reordering, warning @cindex warning for reordering of member initializers --- 1460,1477 ---- functions will have linkage like inline functions; they just won't be inlined by default. ! @item -Wctor-dtor-privacy @r{(C++ only)} @opindex Wctor-dtor-privacy Warn when a class seems unusable, because all the constructors or destructors in a class are private and the class has no friends or public static member functions. ! @item -Wnon-virtual-dtor @r{(C++ only)} @opindex Wnon-virtual-dtor Warn when a class declares a non-virtual destructor that should probably be virtual, because it looks like the class will be used polymorphically. ! @item -Wreorder @r{(C++ only)} @opindex Wreorder @cindex reordering, warning @cindex warning for reordering of member initializers *************** members. *** 1507,1547 **** The following @option{-W@dots{}} options are not affected by @option{-Wall}. @table @gcctabopt ! @item -Weffc++ (C++ only) @opindex Weffc++ Warn about violations of various style guidelines from Scott Meyers' @cite{Effective C++} books. If you use this option, you should be aware that the standard library headers do not obey all of these guidelines; you can use @samp{grep -v} to filter out those warnings. ! @item -Wno-deprecated (C++ only) @opindex Wno-deprecated ! Do not warn about usage of deprecated features. @xref{Deprecated Features}. ! @item -Wno-non-template-friend (C++ only) @opindex Wno-non-template-friend Disable warnings when non-templatized friend functions are declared ! within a template. With the advent of explicit template specification ! support in g++, if the name of the friend is an unqualified-id (i.e., @samp{friend foo(int)}), the C++ language specification demands that the ! friend declare or define an ordinary, nontemplate function. (Section ! 14.5.3). Before g++ implemented explicit specification, unqualified-ids could be interpreted as a particular specialization of a templatized ! function. Because this non-conforming behavior is no longer the default ! behavior for g++, @option{-Wnon-template-friend} allows the compiler to check existing code for potential trouble spots, and is on by default. This new compiler behavior can be turned off with @option{-Wno-non-template-friend} which keeps the conformant compiler code but disables the helpful warning. ! @item -Wold-style-cast (C++ only) @opindex Wold-style-cast Warn if an old-style (C-style) cast is used within a C++ program. The new-style casts (@samp{static_cast}, @samp{reinterpret_cast}, and @samp{const_cast}) are less vulnerable to unintended effects, and much easier to grep for. ! @item -Woverloaded-virtual (C++ only) @opindex Woverloaded-virtual @cindex overloaded virtual fn, warning @cindex warning for overloaded virtual fn --- 1494,1534 ---- The following @option{-W@dots{}} options are not affected by @option{-Wall}. @table @gcctabopt ! @item -Weffc++ @r{(C++ only)} @opindex Weffc++ Warn about violations of various style guidelines from Scott Meyers' @cite{Effective C++} books. If you use this option, you should be aware that the standard library headers do not obey all of these guidelines; you can use @samp{grep -v} to filter out those warnings. ! @item -Wno-deprecated @r{(C++ only)} @opindex Wno-deprecated ! Do not warn about usage of deprecated features. @xref{Deprecated Features}. ! @item -Wno-non-template-friend @r{(C++ only)} @opindex Wno-non-template-friend Disable warnings when non-templatized friend functions are declared ! within a template. With the advent of explicit template specification ! support in G++, if the name of the friend is an unqualified-id (i.e., @samp{friend foo(int)}), the C++ language specification demands that the ! friend declare or define an ordinary, nontemplate function. (Section ! 14.5.3). Before G++ implemented explicit specification, unqualified-ids could be interpreted as a particular specialization of a templatized ! function. Because this non-conforming behavior is no longer the default ! behavior for G++, @option{-Wnon-template-friend} allows the compiler to check existing code for potential trouble spots, and is on by default. This new compiler behavior can be turned off with @option{-Wno-non-template-friend} which keeps the conformant compiler code but disables the helpful warning. ! @item -Wold-style-cast @r{(C++ only)} @opindex Wold-style-cast Warn if an old-style (C-style) cast is used within a C++ program. The new-style casts (@samp{static_cast}, @samp{reinterpret_cast}, and @samp{const_cast}) are less vulnerable to unintended effects, and much easier to grep for. ! @item -Woverloaded-virtual @r{(C++ only)} @opindex Woverloaded-virtual @cindex overloaded virtual fn, warning @cindex warning for overloaded virtual fn *************** compiler warns when you define a functio *** 1553,1575 **** virtual function, but with a type signature that does not match any declarations from the base class. ! @item -Wno-pmf-conversions (C++ only) @opindex Wno-pmf-conversions Disable the diagnostic for converting a bound pointer to member function to a plain pointer. ! @item -Wsign-promo (C++ only) @opindex Wsign-promo Warn when overload resolution chooses a promotion from unsigned or enumeral type to a signed type over a conversion to an unsigned type of ! the same size. Previous versions of g++ would try to preserve unsignedness, but the standard mandates the current behavior. ! @item -Wsynth (C++ only) @opindex Wsynth @cindex warning for synthesized methods @cindex synthesized methods, warning ! Warn when g++'s synthesis behavior does not match that of cfront. For instance: @smallexample --- 1540,1562 ---- virtual function, but with a type signature that does not match any declarations from the base class. ! @item -Wno-pmf-conversions @r{(C++ only)} @opindex Wno-pmf-conversions Disable the diagnostic for converting a bound pointer to member function to a plain pointer. ! @item -Wsign-promo @r{(C++ only)} @opindex Wsign-promo Warn when overload resolution chooses a promotion from unsigned or enumeral type to a signed type over a conversion to an unsigned type of ! the same size. Previous versions of G++ would try to preserve unsignedness, but the standard mandates the current behavior. ! @item -Wsynth @r{(C++ only)} @opindex Wsynth @cindex warning for synthesized methods @cindex synthesized methods, warning ! Warn when G++'s synthesis behavior does not match that of cfront. For instance: @smallexample *************** main () *** 1585,1591 **** @} @end smallexample ! In this example, g++ will synthesize a default @samp{A& operator = (const A&);}, while cfront will use the user-defined @samp{operator =}. @end table --- 1572,1578 ---- @} @end smallexample ! In this example, G++ will synthesize a default @samp{A& operator = (const A&);}, while cfront will use the user-defined @samp{operator =}. @end table *************** gcc -g -fgnu-runtime -O -c some_class.m *** 1607,1613 **** @noindent In this example, only @option{-fgnu-runtime} is an option meant only for Objective-C programs; you can use the other options with any language ! supported by GCC. Here is a list of options that are @emph{only} for compiling Objective-C programs: --- 1594,1600 ---- @noindent In this example, only @option{-fgnu-runtime} is an option meant only for Objective-C programs; you can use the other options with any language ! supported by GCC@. Here is a list of options that are @emph{only} for compiling Objective-C programs: *************** runtime. This is the default for most t *** 1627,1633 **** @item -fnext-runtime @opindex fnext-runtime Generate output compatible with the NeXT runtime. This is the default ! for NeXT-based systems, including Darwin and Mac OS X. @item -gen-decls @opindex gen-decls --- 1614,1620 ---- @item -fnext-runtime @opindex fnext-runtime Generate output compatible with the NeXT runtime. This is the default ! for NeXT-based systems, including Darwin and Mac OS X@. @item -gen-decls @opindex gen-decls *************** Warn if a selector has multiple methods *** 1655,1673 **** @cindex message formatting Traditionally, diagnostic messages have been formatted irrespective of ! the output device's aspect (e.g. its width, @dots{}). The options described below can be used to control the diagnostic messages formatting ! algorithm, e.g. how many characters per line, how often source location ! information should be reported. Right now, only the C++ front-end can honor these options. However it is expected, in the near future, that ! the remaining front-ends would be able to digest them correctly. @table @gcctabopt @item -fmessage-length=@var{n} @opindex fmessage-length Try to format error messages so that they fit on lines of about @var{n} ! characters. The default is 72 characters for g++ and 0 for the rest of ! the front-ends supported by GCC. If @var{n} is zero, then no line-wrapping will be done; each error message will appear on a single line. --- 1642,1660 ---- @cindex message formatting Traditionally, diagnostic messages have been formatted irrespective of ! the output device's aspect (e.g.@: its width, @dots{}). The options described below can be used to control the diagnostic messages formatting ! algorithm, e.g.@: how many characters per line, how often source location ! information should be reported. Right now, only the C++ front end can honor these options. However it is expected, in the near future, that ! the remaining front ends would be able to digest them correctly. @table @gcctabopt @item -fmessage-length=@var{n} @opindex fmessage-length Try to format error messages so that they fit on lines of about @var{n} ! characters. The default is 72 characters for @command{g++} and 0 for the rest of ! the front ends supported by GCC@. If @var{n} is zero, then no line-wrapping will be done; each error message will appear on a single line. *************** version of the ISO C standard specified *** 1723,1729 **** Valid ISO C and ISO C++ programs should compile properly with or without this option (though a rare few will require @option{-ansi} or a ! @option{-std} option specifying the required version of ISO C). However, without this option, certain GNU extensions and traditional C and C++ features are supported as well. With this option, they are rejected. --- 1710,1716 ---- Valid ISO C and ISO C++ programs should compile properly with or without this option (though a rare few will require @option{-ansi} or a ! @option{-std} option specifying the required version of ISO C)@. However, without this option, certain GNU extensions and traditional C and C++ features are supported as well. With this option, they are rejected. *************** Also warn about constructions where ther *** 1891,1896 **** --- 1878,1884 ---- such a case: @smallexample + @group @{ if (a) if (b) *************** such a case: *** 1898,1915 **** else bar (); @} @end smallexample In C, every @code{else} branch belongs to the innermost possible @code{if} statement, which in this example is @code{if (b)}. This is often not what the programmer expected, as illustrated in the above example by indentation the programmer chose. When there is the potential for this ! confusion, GNU C will issue a warning when this flag is specified. To eliminate the warning, add explicit braces around the innermost @code{if} statement so there is no way the @code{else} could belong to the enclosing @code{if}. The resulting code would look like this: @smallexample @{ if (a) @{ --- 1886,1905 ---- else bar (); @} + @end group @end smallexample In C, every @code{else} branch belongs to the innermost possible @code{if} statement, which in this example is @code{if (b)}. This is often not what the programmer expected, as illustrated in the above example by indentation the programmer chose. When there is the potential for this ! confusion, GCC will issue a warning when this flag is specified. To eliminate the warning, add explicit braces around the innermost @code{if} statement so there is no way the @code{else} could belong to the enclosing @code{if}. The resulting code would look like this: @smallexample + @group @{ if (a) @{ *************** the enclosing @code{if}. The resulting *** 1919,1924 **** --- 1909,1915 ---- bar (); @} @} + @end group @end smallexample @item -Wsequence-point *************** Warn whenever a function is defined with *** 1973,1979 **** return-value in a function whose return-type is not @code{void}. For C++, a function without return type always produces a diagnostic ! message, even when @option{-Wno-return-type} is specified. The only exceptions are @samp{main} and functions defined in system headers. @item -Wswitch --- 1964,1970 ---- return-value in a function whose return-type is not @code{void}. For C++, a function without return type always produces a diagnostic ! message, even when @option{-Wno-return-type} is specified. The only exceptions are @samp{main} and functions defined in system headers. @item -Wswitch *************** despite appearing to have an error. Her *** 2057,2062 **** --- 2048,2054 ---- this can happen: @smallexample + @group @{ int x; switch (y) *************** this can happen: *** 2069,2074 **** --- 2061,2067 ---- @} foo (x); @} + @end group @end smallexample @noindent *************** Some spurious warnings can be avoided if *** 2103,2109 **** you use that never return as @code{noreturn}. @xref{Function Attributes}. ! @item -Wreorder (C++ only) @opindex Wreorder @cindex reordering, warning @cindex warning for reordering of member initializers --- 2096,2102 ---- you use that never return as @code{noreturn}. @xref{Function Attributes}. ! @item -Wreorder @r{(C++ only)} @opindex Wreorder @cindex reordering, warning @cindex warning for reordering of member initializers *************** match the order in which they must be ex *** 2116,2122 **** @cindex unknown pragmas, warning @cindex pragmas, warning of unknown Warn when a #pragma directive is encountered which is not understood by ! GCC. If this command line option is used, warnings will even be issued for unknown pragmas in system header files. This is not the case if the warnings were only enabled by the @option{-Wall} command line option. --- 2109,2115 ---- @cindex unknown pragmas, warning @cindex pragmas, warning of unknown Warn when a #pragma directive is encountered which is not understood by ! GCC@. If this command line option is used, warnings will even be issued for unknown pragmas in system header files. This is not the case if the warnings were only enabled by the @option{-Wall} command line option. *************** would check to see whether the two value *** 2242,2258 **** this is done with the relational operators, so equality comparisons are probably mistaken. ! @item -Wtraditional (C only) @opindex Wtraditional Warn about certain constructs that behave differently in traditional and ! ISO C. Also warn about ISO C constructs that have no traditional C equivalent, and/or problematic constructs which should be avoided. @itemize @bullet @item Macro parameters that appear within string literals in the macro body. In traditional C macro replacement takes place within string literals, ! but does not in ISO C. @item In traditional C, some preprocessor directives did not exist. --- 2235,2251 ---- this is done with the relational operators, so equality comparisons are probably mistaken. ! @item -Wtraditional @r{(C only)} @opindex Wtraditional Warn about certain constructs that behave differently in traditional and ! ISO C@. Also warn about ISO C constructs that have no traditional C equivalent, and/or problematic constructs which should be avoided. @itemize @bullet @item Macro parameters that appear within string literals in the macro body. In traditional C macro replacement takes place within string literals, ! but does not in ISO C@. @item In traditional C, some preprocessor directives did not exist. *************** The unary plus operator. *** 2275,2281 **** The @samp{U} integer constant suffix, or the @samp{F} or @samp{L} floating point constant suffixes. (Traditional C does support the @samp{L} suffix on integer constants.) Note, these suffixes appear in macros defined in the system ! headers of most modern systems, e.g. the @samp{_MIN}/@samp{_MAX} macros in @code{}. Use of these macros in user code might normally lead to spurious warnings, however gcc's integrated preprocessor has enough context to avoid warning in these cases. --- 2268,2274 ---- The @samp{U} integer constant suffix, or the @samp{F} or @samp{L} floating point constant suffixes. (Traditional C does support the @samp{L} suffix on integer constants.) Note, these suffixes appear in macros defined in the system ! headers of most modern systems, e.g.@: the @samp{_MIN}/@samp{_MAX} macros in @code{}. Use of these macros in user code might normally lead to spurious warnings, however gcc's integrated preprocessor has enough context to avoid warning in these cases. *************** This construct is not accepted by some t *** 2294,2300 **** @item The ISO type of an integer constant has a different width or signedness from its traditional type. This warning is only issued if ! the base of the constant is ten. I.e. hexadecimal or octal values, which typically represent bit patterns, are not warned about. @item --- 2287,2293 ---- @item The ISO type of an integer constant has a different width or signedness from its traditional type. This warning is only issued if ! the base of the constant is ten. I.e.@: hexadecimal or octal values, which typically represent bit patterns, are not warned about. @item *************** namespace for labels. *** 2310,2316 **** @item Initialization of unions. If the initializer is zero, the warning is omitted. This is done under the assumption that the zero initializer in ! user code appears conditioned on e.g. @code{__STDC__} to avoid missing initializer warnings and relies on default initialization to zero in the traditional C case. --- 2303,2309 ---- @item Initialization of unions. If the initializer is zero, the warning is omitted. This is done under the assumption that the zero initializer in ! user code appears conditioned on e.g.@: @code{__STDC__} to avoid missing initializer warnings and relies on default initialization to zero in the traditional C case. *************** of @code{void}. GNU C assigns these typ *** 2347,2353 **** convenience in calculations with @code{void *} pointers and pointers to functions. ! @item -Wbad-function-cast (C only) @opindex Wbad-function-cast Warn whenever a function call is cast to a non-matching type. For example, warn if @code{int malloc()} is cast to @code{anything *}. --- 2340,2346 ---- convenience in calculations with @code{void *} pointers and pointers to functions. ! @item -Wbad-function-cast @r{(C only)} @opindex Wbad-function-cast Warn whenever a function call is cast to a non-matching type. For example, warn if @code{int malloc()} is cast to @code{anything *}. *************** two- or four-byte boundaries. *** 2367,2375 **** @item -Wwrite-strings @opindex Wwrite-strings ! Give string constants the type @code{const char[@var{length}]} so that copying the address of one into a non-@code{const} @code{char *} ! pointer will get a warning. These warnings will help you find at compile time code that can try to write into a string constant, but only if you have been very careful about using @code{const} in declarations and prototypes. Otherwise, it will just be a nuisance; --- 2360,2371 ---- @item -Wwrite-strings @opindex Wwrite-strings ! When compiling C, give string constants the type @code{const ! char[@var{length}]} so that copying the address of one into a non-@code{const} @code{char *} ! pointer will get a warning; when compiling C++, warn about the ! deprecated conversion from string constants to @code{char *}. ! These warnings will help you find at compile time code that can try to write into a string constant, but only if you have been very careful about using @code{const} in declarations and prototypes. Otherwise, it will just be a nuisance; *************** Warn if any functions that return struct *** 2404,2417 **** called. (In languages where you can return an array, this also elicits a warning.) ! @item -Wstrict-prototypes (C only) @opindex Wstrict-prototypes Warn if a function is declared or defined without specifying the argument types. (An old-style function definition is permitted without a warning if preceded by a declaration which specifies the argument types.) ! @item -Wmissing-prototypes (C only) @opindex Wmissing-prototypes Warn if a global function is defined without a previous prototype declaration. This warning is issued even if the definition itself --- 2400,2413 ---- called. (In languages where you can return an array, this also elicits a warning.) ! @item -Wstrict-prototypes @r{(C only)} @opindex Wstrict-prototypes Warn if a function is declared or defined without specifying the argument types. (An old-style function definition is permitted without a warning if preceded by a declaration which specifies the argument types.) ! @item -Wmissing-prototypes @r{(C only)} @opindex Wmissing-prototypes Warn if a global function is defined without a previous prototype declaration. This warning is issued even if the definition itself *************** reduce the padding and so make the struc *** 2480,2486 **** Warn if anything is declared more than once in the same scope, even in cases where multiple declaration is valid and changes nothing. ! @item -Wnested-externs (C only) @opindex Wnested-externs Warn if an @code{extern} declaration is encountered within a function. --- 2476,2482 ---- Warn if anything is declared more than once in the same scope, even in cases where multiple declaration is valid and changes nothing. ! @item -Wnested-externs @r{(C only)} @opindex Wnested-externs Warn if an @code{extern} declaration is encountered within a function. *************** either your program or GCC: *** 2544,2550 **** @item -g @opindex g Produce debugging information in the operating system's native format ! (stabs, COFF, XCOFF, or DWARF). GDB can work with this debugging information. On most systems that use stabs format, @option{-g} enables use of extra --- 2540,2546 ---- @item -g @opindex g Produce debugging information in the operating system's native format ! (stabs, COFF, XCOFF, or DWARF)@. GDB can work with this debugging information. On most systems that use stabs format, @option{-g} enables use of extra *************** capability for more than one debugging f *** 2572,2578 **** @item -ggdb @opindex ggdb ! Produce debugging information for use by GDB. This means to use the most expressive format available (DWARF 2, stabs, or the native format if neither of those are supported), including GDB extensions if at all possible. --- 2568,2574 ---- @item -ggdb @opindex ggdb ! Produce debugging information for use by GDB@. This means to use the most expressive format available (DWARF 2, stabs, or the native format if neither of those are supported), including GDB extensions if at all possible. *************** possible. *** 2582,2594 **** Produce debugging information in stabs format (if that is supported), without GDB extensions. This is the format used by DBX on most BSD systems. On MIPS, Alpha and System V Release 4 systems this option ! produces stabs debugging output which is not understood by DBX or SDB. On System V Release 4 systems this option requires the GNU assembler. @item -gstabs+ @opindex gstabs+ Produce debugging information in stabs format (if that is supported), ! using GNU extensions understood only by the GNU debugger (GDB). The use of these extensions is likely to make other debuggers crash or refuse to read the program. --- 2578,2590 ---- Produce debugging information in stabs format (if that is supported), without GDB extensions. This is the format used by DBX on most BSD systems. On MIPS, Alpha and System V Release 4 systems this option ! produces stabs debugging output which is not understood by DBX or SDB@. On System V Release 4 systems this option requires the GNU assembler. @item -gstabs+ @opindex gstabs+ Produce debugging information in stabs format (if that is supported), ! using GNU extensions understood only by the GNU debugger (GDB)@. The use of these extensions is likely to make other debuggers crash or refuse to read the program. *************** This is the format used by the DBX debug *** 2606,2612 **** @item -gxcoff+ @opindex gxcoff+ Produce debugging information in XCOFF format (if that is supported), ! using GNU extensions understood only by the GNU debugger (GDB). The use of these extensions is likely to make other debuggers crash or refuse to read the program, and may cause assemblers other than the GNU assembler (GAS) to fail with an error. --- 2602,2608 ---- @item -gxcoff+ @opindex gxcoff+ Produce debugging information in XCOFF format (if that is supported), ! using GNU extensions understood only by the GNU debugger (GDB)@. The use of these extensions is likely to make other debuggers crash or refuse to read the program, and may cause assemblers other than the GNU assembler (GAS) to fail with an error. *************** systems. *** 2621,2627 **** @opindex gdwarf+ Produce debugging information in DWARF version 1 format (if that is supported), using GNU extensions understood only by the GNU debugger ! (GDB). The use of these extensions is likely to make other debuggers crash or refuse to read the program. @item -gdwarf-2 --- 2617,2623 ---- @opindex gdwarf+ Produce debugging information in DWARF version 1 format (if that is supported), using GNU extensions understood only by the GNU debugger ! (GDB)@. The use of these extensions is likely to make other debuggers crash or refuse to read the program. @item -gdwarf-2 *************** numbers and line number note output. Th *** 2963,2998 **** use diff on debugging dumps for compiler invocations with different options, in particular with and without @option{-g}. ! @item -fdump-translation-unit (C and C++ only) ! @item -fdump-translation-unit-@var{number} (C and C++ only) @opindex fdump-translation-unit Dump a representation of the tree structure for the entire translation ! unit to a file. The file name is made by appending @file{.tu} to the ! source file name. If the @samp{-@var{number}} form is used, @var{number} controls the details of the dump as described for the @option{-fdump-tree} options. ! @item -fdump-class-hierarchy (C++ only) ! @item -fdump-class-hierarchy-@var{number} (C++ only) @opindex fdump-class-hierarchy Dump a representation of each class's hierarchy and virtual function ! table layout to a file. The file name is made by appending @file{.class} ! to the source file name. If the @samp{-@var{number}} form is used, @var{number} controls the details of the dump as described for the @option{-fdump-tree} options. ! @item -fdump-ast-@var{switch} (C++ only) ! @item -fdump-ast-@var{switch}-@var{number} (C++ only) @opindex fdump-ast Control the dumping at various stages of processing the abstract syntax ! tree to a file. The file name is generated by appending a switch ! specific suffix to the source file name. If the @samp{-@var{number}} form is used, @var{number} is a bit mask which controls the details of the ! dump. The following bits are meaningful (these are not set symbolically, as the primary function of these dumps is for debugging gcc itself): @table @samp @item bit0 (1) ! Print the address of each node. Usually this is not meaningful as it changes according to the environment and source file. @item bit1 (2) Inhibit dumping of members of a scope or body of a function, unless they --- 2959,2994 ---- use diff on debugging dumps for compiler invocations with different options, in particular with and without @option{-g}. ! @item -fdump-translation-unit @r{(C and C++ only)} ! @itemx -fdump-translation-unit-@var{number} @r{(C and C++ only)} @opindex fdump-translation-unit Dump a representation of the tree structure for the entire translation ! unit to a file. The file name is made by appending @file{.tu} to the ! source file name. If the @samp{-@var{number}} form is used, @var{number} controls the details of the dump as described for the @option{-fdump-tree} options. ! @item -fdump-class-hierarchy @r{(C++ only)} ! @itemx -fdump-class-hierarchy-@var{number} @r{(C++ only)} @opindex fdump-class-hierarchy Dump a representation of each class's hierarchy and virtual function ! table layout to a file. The file name is made by appending @file{.class} ! to the source file name. If the @samp{-@var{number}} form is used, @var{number} controls the details of the dump as described for the @option{-fdump-tree} options. ! @item -fdump-ast-@var{switch} @r{(C++ only)} ! @itemx -fdump-ast-@var{switch}-@var{number} @r{(C++ only)} @opindex fdump-ast Control the dumping at various stages of processing the abstract syntax ! tree to a file. The file name is generated by appending a switch ! specific suffix to the source file name. If the @samp{-@var{number}} form is used, @var{number} is a bit mask which controls the details of the ! dump. The following bits are meaningful (these are not set symbolically, as the primary function of these dumps is for debugging gcc itself): @table @samp @item bit0 (1) ! Print the address of each node. Usually this is not meaningful as it changes according to the environment and source file. @item bit1 (2) Inhibit dumping of members of a scope or body of a function, unless they *************** and @option{-fdefer-pop} on all machines *** 3139,3145 **** @option{-fdelayed-branch} on machines that have delay slots, and @option{-fomit-frame-pointer} on machines that can support debugging even without a frame pointer. On some machines the compiler also turns ! on other flags.@refill @item -O2 @opindex O2 --- 3135,3141 ---- @option{-fdelayed-branch} on machines that have delay slots, and @option{-fomit-frame-pointer} on machines that can support debugging even without a frame pointer. On some machines the compiler also turns ! on other flags. @item -O2 @opindex O2 *************** function inlining, and register renaming *** 3154,3159 **** --- 3150,3158 ---- @option{-fforce-mem} option on all machines and frame pointer elimination on machines where doing so does not interfere with debugging. + Please note the warning under @option{-fgcse} about + invoking @option{-O2} on programs that use computed gotos. + @item -O3 @opindex O3 Optimize yet more. @option{-O3} turns on all optimizations specified by *************** On some machines, such as the Vax, this *** 3239,3245 **** the standard calling sequence automatically handles the frame pointer and nothing is saved by pretending it doesn't exist. The machine-description macro @code{FRAME_POINTER_REQUIRED} controls ! whether a target machine supports this flag. @xref{Registers}.@refill @end ifset @ifclear INTERNALS On some machines, such as the Vax, this flag has no effect, because --- 3238,3244 ---- the standard calling sequence automatically handles the frame pointer and nothing is saved by pretending it doesn't exist. The machine-description macro @code{FRAME_POINTER_REQUIRED} controls ! whether a target machine supports this flag. @xref{Registers}. @end ifset @ifclear INTERNALS On some machines, such as the Vax, this flag has no effect, because *************** the standard calling sequence automatica *** 3247,3253 **** and nothing is saved by pretending it doesn't exist. The machine-description macro @code{FRAME_POINTER_REQUIRED} controls whether a target machine supports this flag. @xref{Registers,,Register ! Usage, gcc.info, Using and Porting GCC}.@refill @end ifclear @item -foptimize-sibling-calls --- 3246,3252 ---- and nothing is saved by pretending it doesn't exist. The machine-description macro @code{FRAME_POINTER_REQUIRED} controls whether a target machine supports this flag. @xref{Registers,,Register ! Usage, gcc.info, Using and Porting GCC}. @end ifclear @item -foptimize-sibling-calls *************** allows the control of this limit for fun *** 3282,3292 **** inline (ie marked with the inline keyword or defined within the class definition in c++). @var{n} is the size of functions that can be inlined in number of pseudo instructions (not counting parameter handling). The default ! value of n is 10000. Increasing this value can result in more inlined code at the cost of compilation time and memory consumption. Decreasing usually makes the compilation faster and less code will be inlined (which presumably means slower programs). This option is particularly useful for programs that ! use inlining heavily such as those based on recursive templates with c++. @emph{Note:} pseudo instruction represents, in this particular context, an abstract measurement of function's size. In no way, it represents a count --- 3281,3292 ---- inline (ie marked with the inline keyword or defined within the class definition in c++). @var{n} is the size of functions that can be inlined in number of pseudo instructions (not counting parameter handling). The default ! value of @var{n} is 600. ! Increasing this value can result in more inlined code at the cost of compilation time and memory consumption. Decreasing usually makes the compilation faster and less code will be inlined (which presumably means slower programs). This option is particularly useful for programs that ! use inlining heavily such as those based on recursive templates with C++. @emph{Note:} pseudo instruction represents, in this particular context, an abstract measurement of function's size. In no way, it represents a count *************** Run the loop optimizer twice. *** 3399,3410 **** Perform a global common subexpression elimination pass. This pass also performs global constant and copy propagation. @item -fdelete-null-pointer-checks @opindex fdelete-null-pointer-checks Use global dataflow analysis to identify and eliminate useless null pointer checks. Programs which rely on NULL pointer dereferences @emph{not} halting the program may not work properly with this option. Use ! -fno-delete-null-pointer-checks to disable this optimizing for programs which depend on that behavior. @item -fexpensive-optimizations --- 3399,3415 ---- Perform a global common subexpression elimination pass. This pass also performs global constant and copy propagation. + @emph{Note:} When compiling a program using computed gotos, a GCC + extension, you may get better runtime performance if you disable + the global common subexpression elmination pass by adding + @option{-fno-gcse} to the command line. + @item -fdelete-null-pointer-checks @opindex fdelete-null-pointer-checks Use global dataflow analysis to identify and eliminate useless null pointer checks. Programs which rely on NULL pointer dereferences @emph{not} halting the program may not work properly with this option. Use ! @option{-fno-delete-null-pointer-checks} to disable this optimizing for programs which depend on that behavior. @item -fexpensive-optimizations *************** order to perform the global common subex *** 3714,3719 **** --- 3719,3730 ---- optimization. If more memory than specified is required, the optimization will not be done. + @item max-pending-list-length + The maximum number of pending dependancies scheduling will allow + before flushing the current state and starting over. Large functions + with few branches or calls can create excessively large lists which + needlessly consume memory and resources. + @item max-inline-insns If an function contains more than this many instructions, it will not be inlined. This option is precisely equivalent to *************** file. The preprocessor outputs one @cod *** 3836,3842 **** object file name for that source file, a colon, and the names of all the included files. Unless overridden explicitly, the object file name consists of the basename of the source file with any suffix replaced with ! object file suffix. If there are many included files then the rule is split into several lines using @samp{\}-newline. @option{-M} implies @option{-E}. --- 3847,3853 ---- object file name for that source file, a colon, and the names of all the included files. Unless overridden explicitly, the object file name consists of the basename of the source file with any suffix replaced with ! object file suffix. If there are many included files then the rule is split into several lines using @samp{\}-newline. @option{-M} implies @option{-E}. *************** converts them. See the @option{-std} an *** 4010,4040 **** The nine trigraph sequences are @table @samp @item ??( ! -> @samp{[} @item ??) ! -> @samp{]} @item ??< ! -> @samp{@{} @item ??> ! -> @samp{@}} @item ??= ! -> @samp{#} @item ??/ ! -> @samp{\} @item ??' ! -> @samp{^} @item ??! ! -> @samp{|} @item ??- ! -> @samp{~} @end table --- 4021,4051 ---- The nine trigraph sequences are @table @samp @item ??( ! @expansion{} @samp{[} @item ??) ! @expansion{} @samp{]} @item ??< ! @expansion{} @samp{@{} @item ??> ! @expansion{} @samp{@}} @item ??= ! @expansion{} @samp{#} @item ??/ ! @expansion{} @samp{\} @item ??' ! @expansion{} @samp{^} @item ??! ! @expansion{} @samp{|} @item ??- ! @expansion{} @samp{~} @end table *************** Trigraph support is not popular, so many *** 4042,4048 **** properly. Portable code should not rely on trigraphs being either converted or ignored. ! @item -Wp\,@var{option} @opindex Wp Pass @var{option} as an option to the preprocessor. If @var{option} contains commas, it is split into multiple options at the commas. --- 4053,4059 ---- properly. Portable code should not rely on trigraphs being either converted or ignored. ! @item -Wp,@var{option} @opindex Wp Pass @var{option} as an option to the preprocessor. If @var{option} contains commas, it is split into multiple options at the commas. *************** contains commas, it is split into multip *** 4055,4061 **** You can pass options to the assembler. @table @gcctabopt ! @item -Wa\,@var{option} @opindex Wa Pass @var{option} as an option to the assembler. If @var{option} contains commas, it is split into multiple options at the commas. --- 4066,4072 ---- You can pass options to the assembler. @table @gcctabopt ! @item -Wa,@var{option} @opindex Wa Pass @var{option} as an option to the assembler. If @var{option} contains commas, it is split into multiple options at the commas. *************** mechanism when this option is specified. *** 4142,4148 **** @opindex nostdlib Do not use the standard system startup files or libraries when linking. No startup files and only the libraries you specify will be passed to ! the linker. The compiler may generate calls to memcmp, memset, and memcpy for System V (and ISO C) environments or to bcopy and bzero for BSD environments. These entries are usually resolved by entries in libc. These entry points should be supplied through some other --- 4153,4159 ---- @opindex nostdlib Do not use the standard system startup files or libraries when linking. No startup files and only the libraries you specify will be passed to ! the linker. The compiler may generate calls to memcmp, memset, and memcpy for System V (and ISO C) environments or to bcopy and bzero for BSD environments. These entries are usually resolved by entries in libc. These entry points should be supplied through some other *************** form an executable. Not all systems sup *** 4189,4198 **** results, you must also specify the same set of options that were used to generate code (@option{-fpic}, @option{-fPIC}, or model suboptions) when you specify this option.@footnote{On some systems, @samp{gcc -shared} ! needs to build supplementary stub code for constructors to work. On multi-libbed systems, @samp{gcc -shared} must select the correct support libraries to link against. Failing to supply the correct flags may lead ! to subtle defects. Supplying them in cases where they are not necessary is innocuous.} @item -shared-libgcc --- 4200,4209 ---- results, you must also specify the same set of options that were used to generate code (@option{-fpic}, @option{-fPIC}, or model suboptions) when you specify this option.@footnote{On some systems, @samp{gcc -shared} ! needs to build supplementary stub code for constructors to work. On multi-libbed systems, @samp{gcc -shared} must select the correct support libraries to link against. Failing to supply the correct flags may lead ! to subtle defects. Supplying them in cases where they are not necessary is innocuous.} @item -shared-libgcc *************** For example, to pass @option{-assert def *** 4241,4247 **** @option{-Xlinker "-assert definitions"}, because this passes the entire string as a single argument, which is not what the linker expects. ! @item -Wl\,@var{option} @opindex Wl Pass @var{option} as an option to the linker. If @var{option} contains commas, it is split into multiple options at the commas. --- 4252,4258 ---- @option{-Xlinker "-assert definitions"}, because this passes the entire string as a single argument, which is not what the linker expects. ! @item -Wl,@var{option} @opindex Wl Pass @var{option} as an option to the linker. If @var{option} contains commas, it is split into multiple options at the commas. *************** searched for header files. This can be *** 4270,4276 **** file, substituting your own version, since these directories are searched before the system header file directories. However, you should not use this option to add directories that contain vendor-supplied ! system header files (use @option{-isystem} for that). If you use more than one @option{-I} option, the directories are scanned in left-to-right order; the standard system directories come after. --- 4281,4287 ---- file, substituting your own version, since these directories are searched before the system header file directories. However, you should not use this option to add directories that contain vendor-supplied ! system header files (use @option{-isystem} for that). If you use more than one @option{-I} option, the directories are scanned in left-to-right order; the standard system directories come after. *************** simply substituted with a file name chos *** 4544,4550 **** without regard to any appended suffix. @item %j@var{SUFFIX} ! Substitutes the name of the HOST_BIT_BUCKET, if any, and if it is writable, and if save-temps is off; otherwise, substitute the name of a temporary file, just like @samp{%u}. This temporary file is not meant for communication between processes, but rather as a junk --- 4555,4561 ---- without regard to any appended suffix. @item %j@var{SUFFIX} ! Substitutes the name of the @code{HOST_BIT_BUCKET}, if any, and if it is writable, and if save-temps is off; otherwise, substitute the name of a temporary file, just like @samp{%u}. This temporary file is not meant for communication between processes, but rather as a junk *************** disposal mechanism. *** 4552,4558 **** @item %.@var{SUFFIX} Substitutes @var{.SUFFIX} for the suffixes of a matched switch's args ! when it is subsequently output with @samp{%*}. @var{SUFFIX} is terminated by the next space or %. @item %w --- 4563,4569 ---- @item %.@var{SUFFIX} Substitutes @var{.SUFFIX} for the suffixes of a matched switch's args ! when it is subsequently output with @samp{%*}. @var{SUFFIX} is terminated by the next space or %. @item %w *************** current target machine. Use this when r *** 4586,4595 **** Like @samp{%p}, but puts @samp{__} before and after the name of each predefined macro, except for macros that start with @samp{__} or with @samp{_@var{L}}, where @var{L} is an uppercase letter. This is for ISO ! C. @item %I ! Substitute a @option{-iprefix} option made from GCC_EXEC_PREFIX. @item %s Current argument is the name of a library or startup file of some sort. --- 4597,4606 ---- Like @samp{%p}, but puts @samp{__} before and after the name of each predefined macro, except for macros that start with @samp{__} or with @samp{_@var{L}}, where @var{L} is an uppercase letter. This is for ISO ! C@. @item %I ! Substitute a @option{-iprefix} option made from @env{GCC_EXEC_PREFIX}. @item %s Current argument is the name of a library or startup file of some sort. *************** Output the accumulated assembler options *** 4623,4637 **** Output the accumulated preprocessor options specified by @option{-Wp}. @item %v1 ! Substitute the major version number of GCC. (For version 2.9.5, this is 2.) @item %v2 ! Substitute the minor version number of GCC. (For version 2.9.5, this is 9.) @item %v3 ! Substitute the patch level number of GCC. (For version 2.9.5, this is 5.) @item %a --- 4634,4648 ---- Output the accumulated preprocessor options specified by @option{-Wp}. @item %v1 ! Substitute the major version number of GCC@. (For version 2.9.5, this is 2.) @item %v2 ! Substitute the minor version number of GCC@. (For version 2.9.5, this is 9.) @item %v3 ! Substitute the patch level number of GCC@. (For version 2.9.5, this is 5.) @item %a *************** Note that each comma in the substituted *** 4700,4706 **** a single space. @item %@{@code{S}@} ! Substitutes the @code{-S} switch, if that switch was given to GCC. If that switch was not specified, this substitutes nothing. Note that the leading dash is omitted when specifying this option, and it is automatically inserted if the substitution is performed. Thus the spec --- 4711,4717 ---- a single space. @item %@{@code{S}@} ! Substitutes the @code{-S} switch, if that switch was given to GCC@. If that switch was not specified, this substitutes nothing. Note that the leading dash is omitted when specifying this option, and it is automatically inserted if the substitution is performed. Thus the spec *************** string after this option will not. *** 4737,4751 **** @item %@{@code{S}*:@code{X}@} Substitutes @code{X} if one or more switches whose names start with ! @code{-S} are specified to GCC. Note that the tail part of the ! @code{-S} option (i.e. the part matched by the @samp{*}) will be substituted for each occurrence of @samp{%*} within @code{X}. @item %@{@code{S}:@code{X}@} ! Substitutes @code{X}, but only if the @samp{-S} switch was given to GCC. @item %@{!@code{S}:@code{X}@} ! Substitutes @code{X}, but only if the @samp{-S} switch was @emph{not} given to GCC. @item %@{|@code{S}:@code{X}@} Like %@{@code{S}:@code{X}@}, but if no @code{S} switch, substitute @samp{-}. --- 4748,4762 ---- @item %@{@code{S}*:@code{X}@} Substitutes @code{X} if one or more switches whose names start with ! @code{-S} are specified to GCC@. Note that the tail part of the ! @code{-S} option (i.e.@: the part matched by the @samp{*}) will be substituted for each occurrence of @samp{%*} within @code{X}. @item %@{@code{S}:@code{X}@} ! Substitutes @code{X}, but only if the @samp{-S} switch was given to GCC@. @item %@{!@code{S}:@code{X}@} ! Substitutes @code{X}, but only if the @samp{-S} switch was @emph{not} given to GCC@. @item %@{|@code{S}:@code{X}@} Like %@{@code{S}:@code{X}@}, but if no @code{S} switch, substitute @samp{-}. *************** Substitutes @code{X}, but only if proces *** 4760,4766 **** Substitutes @code{X}, but only if @emph{not} processing a file with suffix @code{S}. @item %@{@code{S}|@code{P}:@code{X}@} ! Substitutes @code{X} if either @code{-S} or @code{-P} was given to GCC. This may be combined with @samp{!} and @samp{.} sequences as well, although they have a stronger binding than the @samp{|}. For example a spec string like this: --- 4771,4777 ---- Substitutes @code{X}, but only if @emph{not} processing a file with suffix @code{S}. @item %@{@code{S}|@code{P}:@code{X}@} ! Substitutes @code{X} if either @code{-S} or @code{-P} was given to GCC@. This may be combined with @samp{!} and @samp{.} sequences as well, although they have a stronger binding than the @samp{|}. For example a spec string like this: *************** version of GCC that you installed. *** 4859,4865 **** The @option{-b} and @option{-V} options actually work by controlling part of the file name used for the executable files and libraries used for compilation. A given version of GCC, for a given target machine, is ! normally kept in the directory @file{/usr/local/lib/gcc-lib/@var{machine}/@var{version}}.@refill Thus, sites can customize the effect of @option{-b} or @option{-V} either by changing the names of these directories or adding alternate names (or --- 4870,4876 ---- The @option{-b} and @option{-V} options actually work by controlling part of the file name used for the executable files and libraries used for compilation. A given version of GCC, for a given target machine, is ! normally kept in the directory @file{/usr/local/lib/gcc-lib/@var{machine}/@var{version}}. Thus, sites can customize the effect of @option{-b} or @option{-V} either by changing the names of these directories or adding alternate names (or *************** command with the @option{-V} option. *** 4908,4914 **** Earlier we discussed the standard option @option{-b} which chooses among different installed compilers for completely different target ! machines, such as Vax vs. 68000 vs. 80386. In addition, each of these target machine types can have its own special options, starting with @samp{-m}, to choose among various --- 4919,4925 ---- Earlier we discussed the standard option @option{-b} which chooses among different installed compilers for completely different target ! machines, such as Vax vs.@: 68000 vs.@: 80386. In addition, each of these target machine types can have its own special options, starting with @samp{-m}, to choose among various *************** that macro, which enables you to change *** 4958,4963 **** --- 4969,4975 ---- * MCore Options:: * IA-64 Options:: * D30V Options:: + * S/390 and zSeries Options:: @end menu @node M680x0 Options *************** does not have code to emulate those inst *** 5018,5024 **** @item -mcpu32 @opindex mcpu32 ! Generate output for a CPU32. This is the default when the compiler is configured for CPU32-based systems. Use this option for microcontrollers with a --- 5030,5036 ---- @item -mcpu32 @opindex mcpu32 ! Generate output for a CPU32. This is the default when the compiler is configured for CPU32-based systems. Use this option for microcontrollers with a *************** instructions. *** 5250,5256 **** @opindex msoft-quad-float Generate output containing library calls for quad-word (long double) floating point instructions. The functions called are those specified ! in the SPARC ABI. This is the default. As of this writing, there are no sparc implementations that have hardware support for the quad-word floating point instructions. They all invoke --- 5262,5268 ---- @opindex msoft-quad-float Generate output containing library calls for quad-word (long double) floating point instructions. The functions called are those specified ! in the SPARC ABI@. This is the default. As of this writing, there are no sparc implementations that have hardware support for the quad-word floating point instructions. They all invoke *************** With @option{-mflat}, the compiler does *** 5279,5285 **** and will use a ``flat'' or single register window calling convention. This model uses %i7 as the frame pointer and is compatible with the normal register window model. Code from either may be intermixed. ! The local registers and the input registers (0-5) are still treated as ``call saved'' registers and will be saved on the stack as necessary. With @option{-mno-flat} (the default), the compiler emits save/restore --- 5291,5297 ---- and will use a ``flat'' or single register window calling convention. This model uses %i7 as the frame pointer and is compatible with the normal register window model. Code from either may be intermixed. ! The local registers and the input registers (0--5) are still treated as ``call saved'' registers and will be saved on the stack as necessary. With @option{-mno-flat} (the default), the compiler emits save/restore *************** should have 8 byte alignment. This enab *** 5307,5315 **** @code{ldd} and @code{std} instructions for copies in structure assignment, in place of twice as many @code{ld} and @code{st} pairs. However, the use of this changed alignment directly violates the Sparc ! ABI. Thus, it's intended only for use on targets where the developer acknowledges that their resulting code will not be directly in line with ! the rules of the ABI. @item -mv8 @itemx -msparclite --- 5319,5327 ---- @code{ldd} and @code{std} instructions for copies in structure assignment, in place of twice as many @code{ld} and @code{st} pairs. However, the use of this changed alignment directly violates the Sparc ! ABI@. Thus, it's intended only for use on targets where the developer acknowledges that their resulting code will not be directly in line with ! the rules of the ABI@. @item -mv8 @itemx -msparclite *************** Cypress CY7C602 chip, as used in the Spa *** 5342,5348 **** This is also appropriate for the older SparcStation 1, 2, IPX etc. With @option{-msupersparc} the compiler optimizes code for the SuperSparc cpu, as ! used in the SparcStation 10, 1000 and 2000 series. This flag also enables use of the full SPARC v8 instruction set. These options are deprecated and will be deleted in a future GCC release. --- 5354,5360 ---- This is also appropriate for the older SparcStation 1, 2, IPX etc. With @option{-msupersparc} the compiler optimizes code for the SuperSparc cpu, as ! used in the SparcStation 10, 1000 and 2000 series. This flag also enables use of the full SPARC v8 instruction set. These options are deprecated and will be deleted in a future GCC release. *************** of a @code{const}, @code{consth}, @code{ *** 5576,5582 **** Use the normal memory model: Generate @code{call} instructions only when calling functions in the same file and @code{calli} instructions otherwise. This works if each file occupies less than 256 KB but allows ! the entire executable to be larger than 256 KB. This is the default. @item -mlarge @opindex mlarge --- 5588,5594 ---- Use the normal memory model: Generate @code{call} instructions only when calling functions in the same file and @code{calli} instructions otherwise. This works if each file occupies less than 256 KB but allows ! the entire executable to be larger than 256 KB@. This is the default. @item -mlarge @opindex mlarge *************** not pass @option{-assert pure-text} to t *** 5643,5649 **** @item -msoft-float @opindex msoft-float Generate output containing library calls for floating point. ! @strong{Warning:} the requisite libraries are not part of GCC. Normally the facilities of the machine's usual C compiler are used, but this can't be done directly in cross-compilation. You must make your own arrangements to provide suitable library functions for --- 5655,5661 ---- @item -msoft-float @opindex msoft-float Generate output containing library calls for floating point. ! @strong{Warning:} the requisite libraries are not part of GCC@. Normally the facilities of the machine's usual C compiler are used, but this can't be done directly in cross-compilation. You must make your own arrangements to provide suitable library functions for *************** system is required to provide these func *** 5705,5711 **** @item -mapcs-float @opindex mapcs-float Pass floating point arguments using the float point registers. This is ! one of the variants of the APCS. This option is recommended if the target hardware has a floating point unit or if a lot of floating point arithmetic is going to be performed by the code. The default is @option{-mno-apcs-float}, since integer only code is slightly increased in --- 5717,5723 ---- @item -mapcs-float @opindex mapcs-float Pass floating point arguments using the float point registers. This is ! one of the variants of the APCS@. This option is recommended if the target hardware has a floating point unit or if a lot of floating point arithmetic is going to be performed by the code. The default is @option{-mno-apcs-float}, since integer only code is slightly increased in *************** objects in memory. *** 5796,5802 **** @opindex mno-alignment-traps Generate code that assumes that the MMU will not trap unaligned accesses. This produces better code when the target instruction set ! does not have half-word memory operations (i.e. implementations prior to ARMv4). Note that you cannot use this option to access unaligned word objects, --- 5808,5814 ---- @opindex mno-alignment-traps Generate code that assumes that the MMU will not trap unaligned accesses. This produces better code when the target instruction set ! does not have half-word memory operations (i.e.@: implementations prior to ARMv4). Note that you cannot use this option to access unaligned word objects, *************** This are deprecated aliases for @option{ *** 5821,5837 **** @item -mbsd @opindex mbsd ! This option only applies to RISC iX. Emulate the native BSD-mode compiler. This is the default if @option{-ansi} is not specified. @item -mxopen @opindex mxopen ! This option only applies to RISC iX. Emulate the native X/Open-mode compiler. @item -mno-symrename @opindex mno-symrename ! This option only applies to RISC iX. Do not run the assembler post-processor, @samp{symrename}, after code has been assembled. Normally it is necessary to modify some of the standard symbols in preparation for linking with the RISC iX C library; this option --- 5833,5849 ---- @item -mbsd @opindex mbsd ! This option only applies to RISC iX@. Emulate the native BSD-mode compiler. This is the default if @option{-ansi} is not specified. @item -mxopen @opindex mxopen ! This option only applies to RISC iX@. Emulate the native X/Open-mode compiler. @item -mno-symrename @opindex mno-symrename ! This option only applies to RISC iX@. Do not run the assembler post-processor, @samp{symrename}, after code has been assembled. Normally it is necessary to modify some of the standard symbols in preparation for linking with the RISC iX C library; this option *************** compiler is built for cross-compilation. *** 5842,5853 **** @opindex mcpu This specifies the name of the target ARM processor. GCC uses this name to determine what kind of instructions it can emit when generating ! assembly code. Permissible names are: arm2, arm250, arm3, arm6, arm60, ! arm600, arm610, arm620, arm7, arm7m, arm7d, arm7dm, arm7di, arm7dmi, ! arm70, arm700, arm700i, arm710, arm710c, arm7100, arm7500, arm7500fe, ! arm7tdmi, arm8, strongarm, strongarm110, strongarm1100, arm8, arm810, ! arm9, arm9e, arm920, arm920t, arm940t, arm9tdmi, arm10tdmi, arm1020t, ! xscale. @itemx -mtune=@var{name} @opindex mtune --- 5854,5869 ---- @opindex mcpu This specifies the name of the target ARM processor. GCC uses this name to determine what kind of instructions it can emit when generating ! assembly code. Permissible names are: @samp{arm2}, @samp{arm250}, ! @samp{arm3}, @samp{arm6}, @samp{arm60}, @samp{arm600}, @samp{arm610}, ! @samp{arm620}, @samp{arm7}, @samp{arm7m}, @samp{arm7d}, @samp{arm7dm}, ! @samp{arm7di}, @samp{arm7dmi}, @samp{arm70}, @samp{arm700}, ! @samp{arm700i}, @samp{arm710}, @samp{arm710c}, @samp{arm7100}, ! @samp{arm7500}, @samp{arm7500fe}, @samp{arm7tdmi}, @samp{arm8}, ! @samp{strongarm}, @samp{strongarm110}, @samp{strongarm1100}, ! @samp{arm8}, @samp{arm810}, @samp{arm9}, @samp{arm9e}, @samp{arm920}, ! @samp{arm920t}, @samp{arm940t}, @samp{arm9tdmi}, @samp{arm10tdmi}, ! @samp{arm1020t}, @samp{xscale}. @itemx -mtune=@var{name} @opindex mtune *************** this option. *** 5865,5872 **** This specifies the name of the target ARM architecture. GCC uses this name to determine what kind of instructions it can emit when generating assembly code. This option can be used in conjunction with or instead ! of the @option{-mcpu=} option. Permissible names are: armv2, armv2a, ! armv3, armv3m, armv4, armv4t, armv5, armv5t, armv5te. @item -mfpe=@var{number} @itemx -mfp=@var{number} --- 5881,5889 ---- This specifies the name of the target ARM architecture. GCC uses this name to determine what kind of instructions it can emit when generating assembly code. This option can be used in conjunction with or instead ! of the @option{-mcpu=} option. Permissible names are: @samp{armv2}, ! @samp{armv2a}, @samp{armv3}, @samp{armv3m}, @samp{armv4}, @samp{armv4t}, ! @samp{armv5}, @samp{armv5t}, @samp{armv5te}. @item -mfpe=@var{number} @itemx -mfp=@var{number} *************** armv3, armv3m, armv4, armv4t, armv5, arm *** 5874,5880 **** @opindex mfp This specifies the version of the floating point emulation available on the target. Permissible values are 2 and 3. @option{-mfp=} is a synonym ! for @option{-mfpe=}, for compatibility with older versions of GCC. @item -mstructure-size-boundary=@var{n} @opindex mstructure-size-boundary --- 5891,5897 ---- @opindex mfp This specifies the version of the floating point emulation available on the target. Permissible values are 2 and 3. @option{-mfp=} is a synonym ! for @option{-mfpe=}, for compatibility with older versions of GCC@. @item -mstructure-size-boundary=@var{n} @opindex mstructure-size-boundary *************** pointers. *** 5924,5930 **** @item -mnop-fun-dllimport @opindex mnop-fun-dllimport ! Disable support for the @emph{dllimport} attribute. @item -msingle-pic-base @opindex msingle-pic-base --- 5941,5947 ---- @item -mnop-fun-dllimport @opindex mnop-fun-dllimport ! Disable support for the @code{dllimport} attribute. @item -msingle-pic-base @opindex msingle-pic-base *************** underscore as prefix on each name. *** 6165,6171 **** @cindex debugging, 88k OCS Include (or omit) additional debugging information (about registers used in each stack frame) as specified in the 88open Object Compatibility ! Standard, ``OCS''. This extra information allows debugging of code that has had the frame pointer eliminated. The default for DG/UX, SVr4, and Delta 88 SVr3.2 is to include this information; other 88k configurations omit this information by default. --- 6182,6188 ---- @cindex debugging, 88k OCS Include (or omit) additional debugging information (about registers used in each stack frame) as specified in the 88open Object Compatibility ! Standard, ``OCS''@. This extra information allows debugging of code that has had the frame pointer eliminated. The default for DG/UX, SVr4, and Delta 88 SVr3.2 is to include this information; other 88k configurations omit this information by default. *************** references. In particular, a load instr *** 6228,6239 **** a preceding store instruction. Such reordering violates sequential consistency of volatile memory references, when there are multiple processors. When consistency must be guaranteed, ! GNU C generates special instructions, as needed, to force execution in the proper order. The MC88100 processor does not reorder memory references and so ! always provides sequential consistency. However, by default, GNU ! C generates the special instructions to guarantee consistency even when you use @option{-m88100}, so that the code may be run on an MC88110 processor. If you intend to run your code only on the MC88100 processor, you may use @option{-mno-serialize-volatile}. --- 6245,6256 ---- a preceding store instruction. Such reordering violates sequential consistency of volatile memory references, when there are multiple processors. When consistency must be guaranteed, ! GCC generates special instructions, as needed, to force execution in the proper order. The MC88100 processor does not reorder memory references and so ! always provides sequential consistency. However, by default, GCC ! generates the special instructions to guarantee consistency even when you use @option{-m88100}, so that the code may be run on an MC88110 processor. If you intend to run your code only on the MC88100 processor, you may use @option{-mno-serialize-volatile}. *************** SVr4. *** 6263,6269 **** @end enumerate @option{-msvr4} is the default for the m88k-motorola-sysv4 and ! m88k-dg-dgux m88k configurations. @option{-msvr3} is the default for all other m88k configurations. @item -mversion-03.00 --- 6280,6286 ---- @end enumerate @option{-msvr4} is the default for the m88k-motorola-sysv4 and ! m88k-dg-dgux m88k configurations. @option{-msvr3} is the default for all other m88k configurations. @item -mversion-03.00 *************** zero will be detected. By default, dete *** 6281,6293 **** Some models of the MC88100 processor fail to trap upon integer division by zero under certain conditions. By default, when ! compiling code that might be run on such a processor, GNU C generates code that explicitly checks for zero-valued divisors and traps with exception number 503 when one is detected. Use of mno-check-zero-division suppresses such checking for code generated to run on an MC88100 processor. ! GNU C assumes that the MC88110 processor correctly detects all instances of integer division by zero. When @option{-m88110} is specified, both @option{-mcheck-zero-division} and @option{-mno-check-zero-division} are ignored, and no explicit checks for --- 6298,6310 ---- Some models of the MC88100 processor fail to trap upon integer division by zero under certain conditions. By default, when ! compiling code that might be run on such a processor, GCC generates code that explicitly checks for zero-valued divisors and traps with exception number 503 when one is detected. Use of mno-check-zero-division suppresses such checking for code generated to run on an MC88100 processor. ! GCC assumes that the MC88110 processor correctly detects all instances of integer division by zero. When @option{-m88110} is specified, both @option{-mcheck-zero-division} and @option{-mno-check-zero-division} are ignored, and no explicit checks for *************** On the MC88100 processor the signed inte *** 6303,6309 **** div) traps to the operating system on a negative operand. The operating system transparently completes the operation, but at a large cost in execution time. By default, when compiling code ! that might be run on an MC88100 processor, GNU C emulates signed integer division using the unsigned integer division instruction divu), thereby avoiding the large penalty of a trap to the operating system. Such emulation has its own, smaller, execution --- 6320,6326 ---- div) traps to the operating system on a negative operand. The operating system transparently completes the operation, but at a large cost in execution time. By default, when compiling code ! that might be run on an MC88100 processor, GCC emulates signed integer division using the unsigned integer division instruction divu), thereby avoiding the large penalty of a trap to the operating system. Such emulation has its own, smaller, execution *************** These @samp{-m} options are defined for *** 6373,6379 **** @opindex mpowerpc64 @opindex mno-powerpc64 GCC supports two related instruction set architectures for the ! RS/6000 and PowerPC. The @dfn{POWER} instruction set are those instructions supported by the @samp{rios} chip set used in the original RS/6000 systems and the @dfn{PowerPC} instruction set is the architecture of the Motorola MPC5xx, MPC6xx, MPC8xx microprocessors, and --- 6390,6396 ---- @opindex mpowerpc64 @opindex mno-powerpc64 GCC supports two related instruction set architectures for the ! RS/6000 and PowerPC@. The @dfn{POWER} instruction set are those instructions supported by the @samp{rios} chip set used in the original RS/6000 systems and the @dfn{PowerPC} instruction set is the architecture of the Motorola MPC5xx, MPC6xx, MPC8xx microprocessors, and *************** register is included in processors suppo *** 6385,6391 **** You use these options to specify which instructions are available on the processor you are using. The default value of these options is ! determined when configuring GCC. Specifying the @option{-mcpu=@var{cpu_type}} overrides the specification of these options. We recommend you use the @option{-mcpu=@var{cpu_type}} option rather than the options listed above. --- 6402,6408 ---- You use these options to specify which instructions are available on the processor you are using. The default value of these options is ! determined when configuring GCC@. Specifying the @option{-mcpu=@var{cpu_type}} overrides the specification of these options. We recommend you use the @option{-mcpu=@var{cpu_type}} option rather than the options listed above. *************** Supported values for @var{cpu_type} are *** 6448,6454 **** @option{-mcpu=power2}, @option{-mcpu=powerpc}, and @option{-mcpu=powerpc64} specify generic POWER, POWER2, pure 32-bit PowerPC (i.e., not MPC601), and 64-bit PowerPC architecture machine types, with an appropriate, ! generic processor model assumed for scheduling purposes.@refill Specifying any of the following options: @option{-mcpu=rios1}, @option{-mcpu=rios2}, @option{-mcpu=rsc}, --- 6465,6471 ---- @option{-mcpu=power2}, @option{-mcpu=powerpc}, and @option{-mcpu=powerpc64} specify generic POWER, POWER2, pure 32-bit PowerPC (i.e., not MPC601), and 64-bit PowerPC architecture machine types, with an appropriate, ! generic processor model assumed for scheduling purposes. Specifying any of the following options: @option{-mcpu=rios1}, @option{-mcpu=rios2}, @option{-mcpu=rsc}, *************** Exactly similarly, all of @option{-mcpu= *** 6463,6469 **** @option{-mcpu=505}, @option{-mcpu=821}, @option{-mcpu=860} and @option{-mcpu=powerpc} enable the @option{-mpowerpc} option and disable the @option{-mpower} option. @option{-mcpu=common} disables both the ! @option{-mpower} and @option{-mpowerpc} options.@refill AIX versions 4 or greater selects @option{-mcpu=common} by default, so that code will operate on all members of the RS/6000 POWER and PowerPC --- 6480,6486 ---- @option{-mcpu=505}, @option{-mcpu=821}, @option{-mcpu=860} and @option{-mcpu=powerpc} enable the @option{-mpowerpc} option and disable the @option{-mpower} option. @option{-mcpu=common} disables both the ! @option{-mpower} and @option{-mpowerpc} options. AIX versions 4 or greater selects @option{-mcpu=common} by default, so that code will operate on all members of the RS/6000 POWER and PowerPC *************** disables the @samp{new-mnemonics} option *** 6478,6484 **** @option{-mcpu=602}, @option{-mcpu=603}, @option{-mcpu=603e}, @option{-mcpu=604}, @option{-mcpu=620}, @option{-mcpu=630}, @option{-mcpu=403}, @option{-mcpu=505}, @option{-mcpu=821}, @option{-mcpu=860} or @option{-mcpu=powerpc} also enables ! the @samp{new-mnemonics} option.@refill Specifying @option{-mcpu=403}, @option{-mcpu=821}, or @option{-mcpu=860} also enables the @option{-msoft-float} option. --- 6495,6501 ---- @option{-mcpu=602}, @option{-mcpu=603}, @option{-mcpu=603e}, @option{-mcpu=604}, @option{-mcpu=620}, @option{-mcpu=630}, @option{-mcpu=403}, @option{-mcpu=505}, @option{-mcpu=821}, @option{-mcpu=860} or @option{-mcpu=powerpc} also enables ! the @samp{new-mnemonics} option. Specifying @option{-mcpu=403}, @option{-mcpu=821}, or @option{-mcpu=860} also enables the @option{-msoft-float} option. *************** Modify generation of the TOC (Table Of C *** 6505,6512 **** every executable file. The @option{-mfull-toc} option is selected by default. In that case, GCC will allocate at least one TOC entry for each unique non-automatic variable reference in your program. GCC ! will also place floating-point constants in the TOC. However, only ! 16,384 entries are available in the TOC. If you receive a linker error message that saying you have overflowed the available TOC space, you can reduce the amount of TOC space used --- 6522,6529 ---- every executable file. The @option{-mfull-toc} option is selected by default. In that case, GCC will allocate at least one TOC entry for each unique non-automatic variable reference in your program. GCC ! will also place floating-point constants in the TOC@. However, only ! 16,384 entries are available in the TOC@. If you receive a linker error message that saying you have overflowed the available TOC space, you can reduce the amount of TOC space used *************** with the @option{-mno-fp-in-toc} and @op *** 6514,6520 **** @option{-mno-fp-in-toc} prevents GCC from putting floating-point constants in the TOC and @option{-mno-sum-in-toc} forces GCC to generate code to calculate the sum of an address and a constant at ! run-time instead of putting that sum into the TOC. You may specify one or both of these options. Each causes GCC to produce very slightly slower and larger code at the expense of conserving TOC space. --- 6531,6537 ---- @option{-mno-fp-in-toc} prevents GCC from putting floating-point constants in the TOC and @option{-mno-sum-in-toc} forces GCC to generate code to calculate the sum of an address and a constant at ! run-time instead of putting that sum into the TOC@. You may specify one or both of these options. Each causes GCC to produce very slightly slower and larger code at the expense of conserving TOC space. *************** these options, specify @option{-mminimal *** 6523,6529 **** GCC to make only one TOC entry for every file. When you specify this option, GCC will produce code that is slower and larger but which uses extremely little TOC space. You may wish to use this option ! only on files that contain less frequently executed code. @refill @item -maix64 @itemx -maix32 --- 6540,6546 ---- GCC to make only one TOC entry for every file. When you specify this option, GCC will produce code that is slower and larger but which uses extremely little TOC space. You may wish to use this option ! only on files that contain less frequently executed code. @item -maix64 @itemx -maix32 *************** application to run. *** 6559,6565 **** @item -mpe @opindex mpe ! Support @dfn{IBM RS/6000 SP} @dfn{Parallel Environment} (PE). Link an application written to use message passing with special startup code to enable the application to run. The system must have PE installed in the standard location (@file{/usr/lpp/ppe.poe/}), or the @file{specs} file --- 6576,6582 ---- @item -mpe @opindex mpe ! Support @dfn{IBM RS/6000 SP} @dfn{Parallel Environment} (PE)@. Link an application written to use message passing with special startup code to enable the application to run. The system must have PE installed in the standard location (@file{/usr/lpp/ppe.poe/}), or the @file{specs} file *************** Specify both @option{-mcall-sysv} and @o *** 6703,6709 **** @item -mcall-aix @opindex mcall-aix On System V.4 and embedded PowerPC systems compile code using calling ! conventions that are similar to those used on AIX. This is the default if you configured GCC using @samp{powerpc-*-eabiaix}. @item -mcall-solaris --- 6720,6726 ---- @item -mcall-aix @opindex mcall-aix On System V.4 and embedded PowerPC systems compile code using calling ! conventions that are similar to those used on AIX@. This is the default if you configured GCC using @samp{powerpc-*-eabiaix}. @item -mcall-solaris *************** Call @code{lmul$$} for integer multiples *** 6865,6871 **** @item -mfull-fp-blocks @opindex mfull-fp-blocks Generate full-size floating point data blocks, including the minimum ! amount of scratch space recommended by IBM. This is the default. @item -mminimum-fp-blocks @opindex mminimum-fp-blocks --- 6882,6888 ---- @item -mfull-fp-blocks @opindex mfull-fp-blocks Generate full-size floating point data blocks, including the minimum ! amount of scratch space recommended by IBM@. This is the default. @item -mminimum-fp-blocks @opindex mminimum-fp-blocks *************** or @option{-mabi} switch being used. *** 6925,6931 **** @item -mips1 @opindex mips1 ! Issue instructions from level 1 of the MIPS ISA. This is the default. @samp{r3000} is the default @var{cpu-type} at this ISA level. @item -mips2 --- 6942,6948 ---- @item -mips1 @opindex mips1 ! Issue instructions from level 1 of the MIPS ISA@. This is the default. @samp{r3000} is the default @var{cpu-type} at this ISA level. @item -mips2 *************** For @option{-mabi=eabi} and either @opti *** 6987,6993 **** and longs are 32 bits wide. For @option{-mabi=eabi} and higher ISAs, ints are 32 bits, and longs are 64 bits wide. The width of pointer types is the smaller of the width of longs or the width of general purpose ! registers (which in turn depends on the ISA). @item -mabi=32 @itemx -mabi=o64 --- 7004,7010 ---- and longs are 32 bits wide. For @option{-mabi=eabi} and higher ISAs, ints are 32 bits, and longs are 64 bits wide. The width of pointer types is the smaller of the width of longs or the width of general purpose ! registers (which in turn depends on the ISA)@. @item -mabi=32 @itemx -mabi=o64 *************** registers (which in turn depends on the *** 6999,7005 **** @opindex mabi=n32 @opindex mabi=64 @opindex mabi=eabi ! Generate code for the indicated ABI. The default instruction level is @option{-mips1} for @samp{32}, @option{-mips3} for @samp{n32}, and @option{-mips4} otherwise. Conversely, with @option{-mips1} or @option{-mips2}, the default ABI is @samp{32}; otherwise, the default ABI --- 7016,7022 ---- @opindex mabi=n32 @opindex mabi=64 @opindex mabi=eabi ! Generate code for the indicated ABI@. The default instruction level is @option{-mips1} for @samp{32}, @option{-mips3} for @samp{n32}, and @option{-mips4} otherwise. Conversely, with @option{-mips1} or @option{-mips2}, the default ABI is @samp{32}; otherwise, the default ABI *************** add normal debug information. This is t *** 7012,7018 **** platforms except for the OSF/1 reference platform, using the OSF/rose object format. If the either of the @option{-gstabs} or @option{-gstabs+} switches are used, the @file{mips-tfile} program will encapsulate the ! stabs within MIPS ECOFF. @item -mgas @opindex mgas --- 7029,7035 ---- platforms except for the OSF/1 reference platform, using the OSF/rose object format. If the either of the @option{-gstabs} or @option{-gstabs+} switches are used, the @file{mips-tfile} program will encapsulate the ! stabs within MIPS ECOFF@. @item -mgas @opindex mgas *************** the default if the configure option @opt *** 7025,7031 **** @opindex msplit-addresses @opindex mno-split-addresses Generate code to load the high and low parts of address constants separately. ! This allows @code{gcc} to optimize away redundant loads of the high order bits of addresses. This optimization requires GNU as and GNU ld. This optimization is enabled by default for some embedded targets where GNU as and GNU ld are standard. --- 7042,7048 ---- @opindex msplit-addresses @opindex mno-split-addresses Generate code to load the high and low parts of address constants separately. ! This allows GCC to optimize away redundant loads of the high order bits of addresses. This optimization requires GNU as and GNU ld. This optimization is enabled by default for some embedded targets where GNU as and GNU ld are standard. *************** prevents compilation. *** 7084,7090 **** @item -msoft-float @opindex msoft-float Generate output containing library calls for floating point. ! @strong{Warning:} the requisite libraries are not part of GCC. Normally the facilities of the machine's usual C compiler are used, but this can't be done directly in cross-compilation. You must make your own arrangements to provide suitable library functions for --- 7101,7107 ---- @item -msoft-float @opindex msoft-float Generate output containing library calls for floating point. ! @strong{Warning:} the requisite libraries are not part of GCC@. Normally the facilities of the machine's usual C compiler are used, but this can't be done directly in cross-compilation. You must make your own arrangements to provide suitable library functions for *************** Generate PIC code suitable for some embe *** 7127,7133 **** made using PC relative address, and all data is addressed using the $gp register. No more than 65536 bytes of global data may be used. This requires GNU as and GNU ld which do most of the work. This currently ! only works on targets which use ECOFF; it does not work with ELF. @item -membedded-data @itemx -mno-embedded-data --- 7144,7150 ---- made using PC relative address, and all data is addressed using the $gp register. No more than 65536 bytes of global data may be used. This requires GNU as and GNU ld which do most of the work. This currently ! only works on targets which use ECOFF; it does not work with ELF@. @item -membedded-data @itemx -mno-embedded-data *************** comparison is unordered. *** 7278,7284 **** @item -msoft-float @opindex msoft-float Generate output containing library calls for floating point. ! @strong{Warning:} the requisite libraries are not part of GCC. Normally the facilities of the machine's usual C compiler are used, but this can't be done directly in cross-compilation. You must make your own arrangements to provide suitable library functions for --- 7295,7301 ---- @item -msoft-float @opindex msoft-float Generate output containing library calls for floating point. ! @strong{Warning:} the requisite libraries are not part of GCC@. Normally the facilities of the machine's usual C compiler are used, but this can't be done directly in cross-compilation. You must make your own arrangements to provide suitable library functions for *************** Do not use the FPU registers for return *** 7294,7301 **** The usual calling convention has functions return values of types @code{float} and @code{double} in an FPU register, even if there ! is no FPU. The idea is that the operating system should emulate ! an FPU. The option @option{-mno-fp-ret-in-387} causes such values to be returned in ordinary CPU registers instead. --- 7311,7318 ---- The usual calling convention has functions return values of types @code{float} and @code{double} in an FPU register, even if there ! is no FPU@. The idea is that the operating system should emulate ! an FPU@. The option @option{-mno-fp-ret-in-387} causes such values to be returned in ordinary CPU registers instead. *************** in ordinary CPU registers instead. *** 7304,7310 **** @opindex mno-fancy-math-387 Some 387 emulators do not support the @code{sin}, @code{cos} and @code{sqrt} instructions for the 387. Specify this option to avoid ! generating those instructions. This option is the default on FreeBSD. As of revision 2.6.1, these instructions are not generated unless you also use the @option{-ffast-math} switch. --- 7321,7327 ---- @opindex mno-fancy-math-387 Some 387 emulators do not support the @code{sin}, @code{cos} and @code{sqrt} instructions for the 387. Specify this option to avoid ! generating those instructions. This option is the default on FreeBSD@. As of revision 2.6.1, these instructions are not generated unless you also use the @option{-ffast-math} switch. *************** may want to reduce the preferred alignme *** 7455,7491 **** @item -mpush-args @opindex mpush-args ! Use PUSH operations to store outgoing parameters. This method is shorter and usually equally fast as method using SUB/MOV operations and is enabled ! by default. In some cases disabling it may improve performance because of improved scheduling and reduced dependencies. @item -maccumulate-outgoing-args @opindex maccumulate-outgoing-args If enabled, the maximum amount of space required for outgoing arguments will be ! computed in the function prologue. This in faster on most modern CPUs because of reduced dependencies, improved scheduling and reduced stack usage when preferred stack boundary is not equal to 2. The drawback is a notable ! increase in code size. This switch implies @option{-mno-push-args}. @item -mthreads @opindex mthreads ! Support thread-safe exception handling on @samp{Mingw32}. Code that relies on thread-safe exception handling must compile and link all code with the ! @option{-mthreads} option. When compiling, @option{-mthreads} defines @option{-D_MT}; when linking, it links in a special thread helper library @option{-lmingwthrd} which cleans up per thread exception handling data. @item -mno-align-stringops @opindex mno-align-stringops ! Do not align destination of inlined string operations. This switch reduces code size and improves performance in case the destination is already aligned, but gcc don't know about it. @item -minline-all-stringops @opindex minline-all-stringops By default GCC inlines string operations only when destination is known to be ! aligned at least to 4 byte boundary. This enables more inlining, increase code size, but may improve performance of code that depends on fast memcpy, strlen and memset for short lengths. --- 7472,7508 ---- @item -mpush-args @opindex mpush-args ! Use PUSH operations to store outgoing parameters. This method is shorter and usually equally fast as method using SUB/MOV operations and is enabled ! by default. In some cases disabling it may improve performance because of improved scheduling and reduced dependencies. @item -maccumulate-outgoing-args @opindex maccumulate-outgoing-args If enabled, the maximum amount of space required for outgoing arguments will be ! computed in the function prologue. This in faster on most modern CPUs because of reduced dependencies, improved scheduling and reduced stack usage when preferred stack boundary is not equal to 2. The drawback is a notable ! increase in code size. This switch implies @option{-mno-push-args}. @item -mthreads @opindex mthreads ! Support thread-safe exception handling on @samp{Mingw32}. Code that relies on thread-safe exception handling must compile and link all code with the ! @option{-mthreads} option. When compiling, @option{-mthreads} defines @option{-D_MT}; when linking, it links in a special thread helper library @option{-lmingwthrd} which cleans up per thread exception handling data. @item -mno-align-stringops @opindex mno-align-stringops ! Do not align destination of inlined string operations. This switch reduces code size and improves performance in case the destination is already aligned, but gcc don't know about it. @item -minline-all-stringops @opindex minline-all-stringops By default GCC inlines string operations only when destination is known to be ! aligned at least to 4 byte boundary. This enables more inlining, increase code size, but may improve performance of code that depends on fast memcpy, strlen and memset for short lengths. *************** floating point operations, the compiler *** 7549,7555 **** @item -mdisable-indexing @opindex mdisable-indexing Prevent the compiler from using indexing address modes. This avoids some ! rather obscure problems when compiling MIG generated code under MACH. @item -mno-space-regs @opindex mno-space-regs --- 7566,7572 ---- @item -mdisable-indexing @opindex mdisable-indexing Prevent the compiler from using indexing address modes. This avoids some ! rather obscure problems when compiling MIG generated code under MACH@. @item -mno-space-regs @opindex mno-space-regs *************** Assume (or do not assume) that the use o *** 7670,7676 **** win on this implementation of the i960. Complex addressing modes may not be worthwhile on the K-series, but they definitely are on the C-series. The default is currently @option{-mcomplex-addr} for all processors except ! the CB and CC. @item -mcode-align @itemx -mno-code-align --- 7687,7693 ---- win on this implementation of the i960. Complex addressing modes may not be worthwhile on the K-series, but they definitely are on the C-series. The default is currently @option{-mcomplex-addr} for all processors except ! the CB and CC@. @item -mcode-align @itemx -mno-code-align *************** These @samp{-m} options are defined for *** 8001,8011 **** @table @gcctabopt @item -mc300 @opindex mc300 ! Produce code for a C300 Clipper processor. This is the default. @item -mc400 @opindex mc400 ! Produce code for a C400 Clipper processor i.e. use floating point registers f8---f15. @end table --- 8018,8028 ---- @table @gcctabopt @item -mc300 @opindex mc300 ! Produce code for a C300 Clipper processor. This is the default. @item -mc400 @opindex mc400 ! Produce code for a C400 Clipper processor i.e.@: use floating point registers f8---f15. @end table *************** ld.info, Using ld}, for a fuller descrip *** 8023,8033 **** @item -mh @opindex mh ! Generate code for the H8/300H. @item -ms @opindex ms ! Generate code for the H8/S. @item -ms2600 @opindex ms2600 --- 8040,8050 ---- @item -mh @opindex mh ! Generate code for the H8/300H@. @item -ms @opindex ms ! Generate code for the H8/S@. @item -ms2600 @opindex ms2600 *************** Dump instruction size and location in th *** 8134,8140 **** @item -mpadstruct @opindex mpadstruct This option is deprecated. It pads structures to multiple of 4 bytes, ! which is incompatible with the SH ABI. @item -mspace @opindex mspace --- 8151,8157 ---- @item -mpadstruct @opindex mpadstruct This option is deprecated. It pads structures to multiple of 4 bytes, ! which is incompatible with the SH ABI@. @item -mspace @opindex mspace *************** Identify the versions of each tool used *** 8175,8186 **** Refrain from adding @code{.ident} directives to the output file (this is the default). ! @item -YP\,@var{dirs} @opindex YP Search the directories @var{dirs}, and no others, for libraries specified with @option{-l}. ! @item -Ym\,@var{dir} @opindex Ym Look in the directory @var{dir} to find the M4 preprocessor. The assembler uses this option. --- 8192,8203 ---- Refrain from adding @code{.ident} directives to the output file (this is the default). ! @item -YP,@var{dirs} @opindex YP Search the directories @var{dirs}, and no others, for libraries specified with @option{-l}. ! @item -Ym,@var{dir} @opindex Ym Look in the directory @var{dir} to find the M4 preprocessor. The assembler uses this option. *************** memory access. *** 8224,8230 **** @opindex mbk @opindex mno-bk Allow (disallow) allocation of general integer operands into the block ! count register BK. @item -mdb @itemx -mno-db --- 8241,8247 ---- @opindex mbk @opindex mno-bk Allow (disallow) allocation of general integer operands into the block ! count register BK@. @item -mdb @itemx -mno-db *************** count register BK. *** 8233,8240 **** Enable (disable) generation of code using decrement and branch, DBcond(D), instructions. This is enabled by default for the C4x. To be on the safe side, this is disabled for the C3x, since the maximum ! iteration count on the C3x is 2^23 + 1 (but who iterates loops more than ! 2^23 times on the C3x?). Note that GCC will try to reverse a loop so that it can utilise the decrement and branch instruction, but will give up if there is more than one memory reference in the loop. Thus a loop where the loop counter is decremented can generate slightly more --- 8250,8257 ---- Enable (disable) generation of code using decrement and branch, DBcond(D), instructions. This is enabled by default for the C4x. To be on the safe side, this is disabled for the C3x, since the maximum ! iteration count on the C3x is @math{2^23 + 1} (but who iterates loops more than ! @math{2^23} times on the C3x?). Note that GCC will try to reverse a loop so that it can utilise the decrement and branch instruction, but will give up if there is more than one memory reference in the loop. Thus a loop where the loop counter is decremented can generate slightly more *************** efficient code, in cases where the RPTB *** 8246,8252 **** @opindex mparanoid Force the DP register to be saved on entry to an interrupt service routine (ISR), reloaded to point to the data section, and restored on ! exit from the ISR. This should not be required unless someone has violated the small memory model by modifying the DP register, say within an object library. --- 8263,8269 ---- @opindex mparanoid Force the DP register to be saved on entry to an interrupt service routine (ISR), reloaded to point to the data section, and restored on ! exit from the ISR@. This should not be required unless someone has violated the small memory model by modifying the DP register, say within an object library. *************** This is enabled by default with @option{ *** 8288,8296 **** @opindex mrpts @opindex mno-rpts Enable (disable) the use of the single instruction repeat instruction ! RPTS. If a repeat block contains a single instruction, and the loop count can be guaranteed to be less than the value @var{count}, GCC will ! emit a RPTS instruction instead of a RPTB. If no value is specified, then a RPTS will be emitted even if the loop count cannot be determined at compile time. Note that the repeated instruction following RPTS does not have to be reloaded from memory each iteration, thus freeing up the --- 8305,8313 ---- @opindex mrpts @opindex mno-rpts Enable (disable) the use of the single instruction repeat instruction ! RPTS@. If a repeat block contains a single instruction, and the loop count can be guaranteed to be less than the value @var{count}, GCC will ! emit a RPTS instruction instead of a RPTB@. If no value is specified, then a RPTS will be emitted even if the loop count cannot be determined at compile time. Note that the repeated instruction following RPTS does not have to be reloaded from memory each iteration, thus freeing up the *************** instruction, it is disabled by default. *** 8302,8310 **** @opindex mloop-unsigned @opindex mno-loop-unsigned The maximum iteration count when using RPTS and RPTB (and DB on the C40) ! is 2^31 + 1 since these instructions test if the iteration count is negative to terminate the loop. If the iteration count is unsigned ! there is a possibility than the 2^31 + 1 maximum iteration count may be exceeded. This switch allows an unsigned iteration count. @item -mti --- 8319,8327 ---- @opindex mloop-unsigned @opindex mno-loop-unsigned The maximum iteration count when using RPTS and RPTB (and DB on the C40) ! is @math{2^31 + 1} since these instructions test if the iteration count is negative to terminate the loop. If the iteration count is unsigned ! there is a possibility than the @math{2^31 + 1} maximum iteration count may be exceeded. This switch allows an unsigned iteration count. @item -mti *************** This is the default for all systems. *** 8489,8502 **** @item -m32381 @opindex m32381 Generate output containing 32381 instructions for floating point. This ! also implies @option{-m32081}. The 32381 is only compatible with the 32332 ! and 32532 cpus. This is the default for the pc532-netbsd configuration. @item -mmulti-add @opindex mmulti-add Try and generate multiply-add floating point instructions @code{polyF} ! and @code{dotF}. This option is only available if the @option{-m32381} ! option is in effect. Using these instructions requires changes to to register allocation which generally has a negative impact on performance. This option should only be enabled when compiling code particularly likely to make heavy use of multiply-add instructions. --- 8506,8519 ---- @item -m32381 @opindex m32381 Generate output containing 32381 instructions for floating point. This ! also implies @option{-m32081}. The 32381 is only compatible with the 32332 ! and 32532 cpus. This is the default for the pc532-netbsd configuration. @item -mmulti-add @opindex mmulti-add Try and generate multiply-add floating point instructions @code{polyF} ! and @code{dotF}. This option is only available if the @option{-m32381} ! option is in effect. Using these instructions requires changes to to register allocation which generally has a negative impact on performance. This option should only be enabled when compiling code particularly likely to make heavy use of multiply-add instructions. *************** particularly likely to make heavy use of *** 8504,8510 **** @item -mnomulti-add @opindex mnomulti-add Do not try and generate multiply-add floating point instructions ! @code{polyF} and @code{dotF}. This is the default on all platforms. @item -msoft-float @opindex msoft-float --- 8521,8527 ---- @item -mnomulti-add @opindex mnomulti-add Do not try and generate multiply-add floating point instructions ! @code{polyF} and @code{dotF}. This is the default on all platforms. @item -msoft-float @opindex msoft-float *************** Generate output containing library calls *** 8513,8524 **** @item -mnobitfield @opindex mnobitfield ! Do not use the bit-field instructions. On some machines it is faster to ! use shifting and masking operations. This is the default for the pc532. @item -mbitfield @opindex mbitfield ! Do use the bit-field instructions. This is the default for all platforms except the pc532. @item -mrtd --- 8530,8541 ---- @item -mnobitfield @opindex mnobitfield ! Do not use the bit-field instructions. On some machines it is faster to ! use shifting and masking operations. This is the default for the pc532. @item -mbitfield @opindex mbitfield ! Do use the bit-field instructions. This is the default for all platforms except the pc532. @item -mrtd *************** compiled with the Unix compiler. *** 8554,8579 **** @item -mnoregparam @opindex mnoregparam ! Do not pass any arguments in registers. This is the default for all targets. @item -msb @opindex msb It is OK to use the sb as an index register which is always loaded with ! zero. This is the default for the pc532-netbsd target. @item -mnosb @opindex mnosb The sb register is not available for use or has not been initialized to ! zero by the run time system. This is the default for all targets except ! the pc532-netbsd. It is also implied whenever @option{-mhimem} or @option{-fpic} is set. @item -mhimem @opindex mhimem ! Many ns32000 series addressing modes use displacements of up to 512MB. If an address is above 512MB then displacements from zero can not be used. ! This option causes code to be generated which can be loaded above 512MB. This may be useful for operating systems or ROM code. @item -mnohimem --- 8571,8596 ---- @item -mnoregparam @opindex mnoregparam ! Do not pass any arguments in registers. This is the default for all targets. @item -msb @opindex msb It is OK to use the sb as an index register which is always loaded with ! zero. This is the default for the pc532-netbsd target. @item -mnosb @opindex mnosb The sb register is not available for use or has not been initialized to ! zero by the run time system. This is the default for all targets except ! the pc532-netbsd. It is also implied whenever @option{-mhimem} or @option{-fpic} is set. @item -mhimem @opindex mhimem ! Many ns32000 series addressing modes use displacements of up to 512MB@. If an address is above 512MB then displacements from zero can not be used. ! This option causes code to be generated which can be loaded above 512MB@. This may be useful for operating systems or ROM code. @item -mnohimem *************** Output instruction sizes to the asm file *** 8620,8626 **** @item -minit-stack=@var{N} @opindex minit-stack Specify the initial stack address, which may be a symbol or numeric value, ! __stack is the default. @item -mno-interrupts @opindex mno-interrupts --- 8637,8643 ---- @item -minit-stack=@var{N} @opindex minit-stack Specify the initial stack address, which may be a symbol or numeric value, ! @samp{__stack} is the default. @item -mno-interrupts @opindex mno-interrupts *************** Code size will be smaller. *** 8630,8636 **** @item -mcall-prologues @opindex mcall-prologues Functions prologues/epilogues expanded as call to appropriate ! subroutines. Code size will be smaller. @item -mno-tablejump @opindex mno-tablejump --- 8647,8653 ---- @item -mcall-prologues @opindex mcall-prologues Functions prologues/epilogues expanded as call to appropriate ! subroutines. Code size will be smaller. @item -mno-tablejump @opindex mno-tablejump *************** These are the @samp{-m} options defined *** 8733,8739 **** @table @gcctabopt @item -mbig-endian @opindex mbig-endian ! Generate code for a big endian target. This is the default for HPUX. @item -mlittle-endian @opindex mlittle-endian --- 8750,8756 ---- @table @gcctabopt @item -mbig-endian @opindex mbig-endian ! Generate code for a big endian target. This is the default for HPUX@. @item -mlittle-endian @opindex mlittle-endian *************** Generate (or don't) code for the GNU lin *** 8759,8765 **** @item -mno-pic @opindex mno-pic Generate code that does not use a global pointer register. The result ! is not position independent code, and violates the IA-64 ABI. @item -mvolatile-asm-stop @itemx -mno-volatile-asm-stop --- 8776,8782 ---- @item -mno-pic @opindex mno-pic Generate code that does not use a global pointer register. The result ! is not position independent code, and violates the IA-64 ABI@. @item -mvolatile-asm-stop @itemx -mno-volatile-asm-stop *************** Specify the maximum number of conditiona *** 8864,8869 **** --- 8881,8951 ---- replace a branch. The default is 4. @end table + @node S/390 and zSeries Options + @subsection S/390 and zSeries Options + @cindex S/390 and zSeries Options + + These are the @samp{-m} options defined for the S/390 and zSeries architecture. + + @table @gcctabopt + @item -mhard-float + @itemx -msoft-float + @opindex mhard-float + @opindex msoft-float + Use (do not use) the hardware floating-point instructions and registers + for floating-point operations. When @option{-msoft-float} is specified, + functions in @file{libgcc.a} will be used to perform floating-point + operations. When @option{-mhard-float} is specified, the compiler + generates IEEE floating-point instructions. This is the default. + + @item -mbackchain + @itemx -mno-backchain + @opindex mbackchain + @opindex mno-backchain + Generate (or do not generate) code which maintains an explicit + backchain within the stack frame that points to the caller's frame. + This is currently needed to allow debugging. The default is to + generate the backchain. + + @item -msmall-exec + @itemx -mno-small-exec + @opindex msmall-exec + @opindex mno-small-exec + Generate (or do not generate) code using the @code{bras} instruction + to do subroutine calls. + This only works reliably if the total executable size does not + exceed 64k. The default is to use the @code{basr} instruction instead, + which does not have this limitation. + + @item -m64 + @itemx -m31 + @opindex m64 + @opindex m31 + When @option{-m31} is specified, generate code compliant to the + Linux for S/390 ABI@. When @option{-m64} is specified, generate + code compliant to the Linux for zSeries ABI@. This allows GCC in + particular to generate 64-bit instructions. For the @samp{s390} + targets, the default is @option{-m31}, while the @samp{s390x} + targets default to @option{-m64}. + + @item -mmvcle + @itemx -mno-mvcle + @opindex mmvcle + @opindex mno-mvcle + Generate (or do not generate) code using the @code{mvcle} instruction + to perform block moves. When @option{-mno-mvcle} is specifed, + use a @code{mvc} loop instead. This is the default. + + @item -mdebug + @itemx -mno-debug + @opindex mdebug + @opindex mno-debug + Print (or do not print) additional debug information when compiling. + The default is to not print debug information. + + @end table + + @node Code Gen Options @section Options for Code Generation Conventions @cindex code generation conventions *************** it. *** 8882,8892 **** @table @gcctabopt @item -fexceptions @opindex fexceptions ! Enable exception handling. Generates extra code needed to propagate ! exceptions. For some targets, this implies GNU CC will generate frame unwind information for all functions, which can produce significant data size overhead, although it does not affect execution. If you do not ! specify this option, GNU CC will enable it by default for languages like C++ which normally require exception handling, and disable it for languages like C that do not normally require it. However, you may need to enable this option when compiling C code that needs to interoperate --- 8964,8974 ---- @table @gcctabopt @item -fexceptions @opindex fexceptions ! Enable exception handling. Generates extra code needed to propagate ! exceptions. For some targets, this implies GCC will generate frame unwind information for all functions, which can produce significant data size overhead, although it does not affect execution. If you do not ! specify this option, GCC will enable it by default for languages like C++ which normally require exception handling, and disable it for languages like C that do not normally require it. However, you may need to enable this option when compiling C code that needs to interoperate *************** use exception handling. *** 8899,8905 **** Generate code that allows trapping instructions to throw exceptions. Note that this requires platform-specific runtime support that does not exist everywhere. Moreover, it only allows @emph{trapping} ! instructions to throw exceptions, i.e. memory references or floating point instructions. It does not allow exceptions to be thrown from arbitrary signal handlers such as @code{SIGALRM}. --- 8981,8987 ---- Generate code that allows trapping instructions to throw exceptions. Note that this requires platform-specific runtime support that does not exist everywhere. Moreover, it only allows @emph{trapping} ! instructions to throw exceptions, i.e.@: memory references or floating point instructions. It does not allow exceptions to be thrown from arbitrary signal handlers such as @code{SIGALRM}. *************** Consider all memory references to static *** 9017,9023 **** @cindex PIC Generate position-independent code (PIC) suitable for use in a shared library, if supported for the target machine. Such code accesses all ! constant addresses through a global offset table (GOT). The dynamic loader resolves the GOT entries when the program starts (the dynamic loader is not part of GCC; it is part of the operating system). If the GOT size for the linked executable exceeds a machine-specific --- 9099,9105 ---- @cindex PIC Generate position-independent code (PIC) suitable for use in a shared library, if supported for the target machine. Such code accesses all ! constant addresses through a global offset table (GOT)@. The dynamic loader resolves the GOT entries when the program starts (the dynamic loader is not part of GCC; it is part of the operating system). If the GOT size for the linked executable exceeds a machine-specific *************** stubs for every function you call, you m *** 9116,9129 **** @option{-fcheck-memory-usage} without @option{-fprefix-function-name}. If you specify this option, you can not use the @code{asm} or ! @code{__asm__} keywords in functions with memory checking enabled. GNU ! CC cannot understand what the @code{asm} statement may do, and therefore cannot generate the appropriate code, so it will reject it. However, if you specify the function attribute @code{no_check_memory_usage} ! (@pxref{Function Attributes}), GNU CC will disable memory checking within a function; you may use @code{asm} statements inside such functions. You may have an inline expansion of a non-checked function within a checked ! function; in that case GNU CC will not generate checks for the inlined function's memory accesses. If you move your @code{asm} statements to non-checked inline functions --- 9198,9211 ---- @option{-fcheck-memory-usage} without @option{-fprefix-function-name}. If you specify this option, you can not use the @code{asm} or ! @code{__asm__} keywords in functions with memory checking enabled. GCC ! cannot understand what the @code{asm} statement may do, and therefore cannot generate the appropriate code, so it will reject it. However, if you specify the function attribute @code{no_check_memory_usage} ! (@pxref{Function Attributes}), GCC will disable memory checking within a function; you may use @code{asm} statements inside such functions. You may have an inline expansion of a non-checked function within a checked ! function; in that case GCC will not generate checks for the inlined function's memory accesses. If you move your @code{asm} statements to non-checked inline functions *************** For instance, if the stack starts at add *** 9226,9232 **** downwards you can use the flags @samp{-fstack-limit-symbol=__stack_limit -Wl,--defsym,__stack_limit=0x7ffe0000} which will enforce a stack ! limit of 128K. @cindex aliasing of parameters @cindex parameters, aliased --- 9308,9314 ---- downwards you can use the flags @samp{-fstack-limit-symbol=__stack_limit -Wl,--defsym,__stack_limit=0x7ffe0000} which will enforce a stack ! limit of 128K@. @cindex aliasing of parameters @cindex parameters, aliased *************** option, and that not all targets provide *** 9269,9289 **** This section describes several environment variables that affect how GCC operates. Some of them work by specifying directories or prefixes to use ! when searching for various kinds of files. Some are used to specify other aspects of the compilation environment. @ifclear INTERNALS Note that you can also specify places to search using options such as @option{-B}, @option{-I} and @option{-L} (@pxref{Directory Options}). These take precedence over places specified using environment variables, which ! in turn take precedence over those specified by the configuration of GCC. @end ifclear @ifset INTERNALS Note that you can also specify places to search using options such as @option{-B}, @option{-I} and @option{-L} (@pxref{Directory Options}). These take precedence over places specified using environment variables, which ! in turn take precedence over those specified by the configuration of GCC. @xref{Driver}. @end ifset --- 9351,9371 ---- This section describes several environment variables that affect how GCC operates. Some of them work by specifying directories or prefixes to use ! when searching for various kinds of files. Some are used to specify other aspects of the compilation environment. @ifclear INTERNALS Note that you can also specify places to search using options such as @option{-B}, @option{-I} and @option{-L} (@pxref{Directory Options}). These take precedence over places specified using environment variables, which ! in turn take precedence over those specified by the configuration of GCC@. @end ifclear @ifset INTERNALS Note that you can also specify places to search using options such as @option{-B}, @option{-I} and @option{-L} (@pxref{Directory Options}). These take precedence over places specified using environment variables, which ! in turn take precedence over those specified by the configuration of GCC@. @xref{Driver}. @end ifset *************** names of the subprograms executed by the *** 9343,9349 **** when this prefix is combined with the name of a subprogram, but you can specify a prefix that ends with a slash if you wish. ! If @env{GCC_EXEC_PREFIX} is not set, GNU CC will attempt to figure out an appropriate prefix to use based on the pathname it was invoked with. If GCC cannot find the subprogram using the specified prefix, it --- 9425,9431 ---- when this prefix is combined with the name of a subprogram, but you can specify a prefix that ends with a slash if you wish. ! If @env{GCC_EXEC_PREFIX} is not set, GCC will attempt to figure out an appropriate prefix to use based on the pathname it was invoked with. If GCC cannot find the subprogram using the specified prefix, it *************** file @var{file} using @var{target} as th *** 9417,9423 **** @item LANG @findex LANG @cindex locale definition ! This variable is used to pass locale information to the compiler. One way in which this information is used is to determine the character set to be used when character literals, string literals and comments are parsed in C and C++. When the compiler is configured to allow multibyte characters, --- 9499,9505 ---- @item LANG @findex LANG @cindex locale definition ! This variable is used to pass locale information to the compiler. One way in which this information is used is to determine the character set to be used when character literals, string literals and comments are parsed in C and C++. When the compiler is configured to allow multibyte characters, *************** recognize and translate multibyte charac *** 9442,9448 **** @node Running Protoize @section Running Protoize ! The program @code{protoize} is an optional part of GNU C. You can use it to add prototypes to a program, thus converting the program to ISO C in one respect. The companion program @code{unprotoize} does the reverse: it removes argument types from any prototypes that are found. --- 9524,9530 ---- @node Running Protoize @section Running Protoize ! The program @code{protoize} is an optional part of GCC@. You can use it to add prototypes to a program, thus converting the program to ISO C in one respect. The companion program @code{unprotoize} does the reverse: it removes argument types from any prototypes that are found. diff -Nrc3pad gcc-3.0/gcc/doc/md.texi gcc-3.0.1/gcc/doc/md.texi *** gcc-3.0/gcc/doc/md.texi Thu Jun 14 15:54:21 2001 --- gcc-3.0.1/gcc/doc/md.texi Fri Aug 3 11:50:15 2001 *************** If a @code{define_insn} is used, the tem *** 79,85 **** insn list. If a @code{define_expand} is used, one of three things happens, based on the condition logic. The condition logic may manually create new insns for the insn list, say via @code{emit_insn()}, and ! invoke DONE. For certain named patterns, it may invoke FAIL to tell the compiler to use an alternate way of performing that task. If it invokes neither @code{DONE} nor @code{FAIL}, the template given in the pattern is inserted, as if the @code{define_expand} were a @code{define_insn}. --- 79,85 ---- insn list. If a @code{define_expand} is used, one of three things happens, based on the condition logic. The condition logic may manually create new insns for the insn list, say via @code{emit_insn()}, and ! invoke @code{DONE}. For certain named patterns, it may invoke @code{FAIL} to tell the compiler to use an alternate way of performing that task. If it invokes neither @code{DONE} nor @code{FAIL}, the template given in the pattern is inserted, as if the @code{define_expand} were a @code{define_insn}. *************** it is valid for mode @var{m}. *** 271,277 **** For an operand that must be a register, @var{predicate} should be @code{"register_operand"}. Using @code{"general_operand"} would be valid, since the reload pass would copy any non-register operands ! through registers, but this would make GNU CC do extra work, it would prevent invariant operands (such as constant) from being removed from loops, and it would prevent the register allocator from doing the best possible job. On RISC machines, it is usually most efficient to allow --- 271,277 ---- For an operand that must be a register, @var{predicate} should be @code{"register_operand"}. Using @code{"general_operand"} would be valid, since the reload pass would copy any non-register operands ! through registers, but this would make GCC do extra work, it would prevent invariant operands (such as constant) from being removed from loops, and it would prevent the register allocator from doing the best possible job. On RISC machines, it is usually most efficient to allow *************** predicate function, and that function is *** 383,389 **** deciding whether the expression to be matched ``has'' that mode. When constructing an insn, argument 3 of the gen-function will specify ! the operation (i.e. the expression code) for the expression to be made. It should be an RTL expression, whose expression code is copied into a new expression whose operands are arguments 1 and 2 of the gen-function. The subexpressions of argument 3 are not used; --- 383,389 ---- deciding whether the expression to be matched ``has'' that mode. When constructing an insn, argument 3 of the gen-function will specify ! the operation (i.e.@: the expression code) for the expression to be made. It should be an RTL expression, whose expression code is copied into a new expression whose operands are arguments 1 and 2 of the gen-function. The subexpressions of argument 3 are not used; *************** vector of @var{subpat} expressions in th *** 426,432 **** @emph{and} the function @var{predicate} returns nonzero on the @code{parallel} that is the body of the insn. It is the responsibility of the predicate to validate elements of the @code{parallel} beyond ! those listed in the @code{match_parallel}.@refill A typical use of @code{match_parallel} is to match load and store multiple expressions, which can contain a variable number of elements --- 426,432 ---- @emph{and} the function @var{predicate} returns nonzero on the @code{parallel} that is the body of the insn. It is the responsibility of the predicate to validate elements of the @code{parallel} beyond ! those listed in the @code{match_parallel}. A typical use of @code{match_parallel} is to match load and store multiple expressions, which can contain a variable number of elements *************** An input operand can be tied to an early *** 1202,1208 **** use as an input occurs before the early result is written. Adding alternatives of this form often allows GCC to produce better code when only some of the inputs can be affected by the earlyclobber. ! See, for example, the @samp{mulsi3} insn of the ARM. @samp{&} does not obviate the need to write @samp{=}. --- 1202,1208 ---- use as an input occurs before the early result is written. Adding alternatives of this form often allows GCC to produce better code when only some of the inputs can be affected by the earlyclobber. ! See, for example, the @samp{mulsi3} insn of the ARM@. @samp{&} does not obviate the need to write @samp{=}. *************** Direct memory reference *** 1916,1921 **** --- 1916,1953 ---- Symbolic address @end table + + @item S/390 and zSeries---@file{s390.h} + @table @code + @item a + Address register (general purpose register except r0) + + @item d + Data register (arbitrary general purpose register) + + @item f + Floating-point register + + @item I + Unsigned 8-bit constant (0--255) + + @item J + Unsigned 12-bit constant (0--4095) + + @item K + Signed 16-bit constant (@minus{}32768--32767) + + @item L + Unsigned 16-bit constant (0--65535) + + @item Q + Memory reference without index register + + @item S + Symbolic constant suitable for use with the @code{larl} instruction + + @end table + @end table @ifset INTERNALS *************** This instruction pattern should be defin *** 2487,2494 **** @code{__builtin_apply} on machines where special instructions are needed to call a subroutine with arbitrary arguments or to save the value returned. This instruction pattern is required on machines that have ! multiple registers that can hold a return value (i.e. ! @code{FUNCTION_VALUE_REGNO_P} is true for more than one register). @cindex @code{return} instruction pattern @item @samp{return} --- 2519,2526 ---- @code{__builtin_apply} on machines where special instructions are needed to call a subroutine with arbitrary arguments or to save the value returned. This instruction pattern is required on machines that have ! multiple registers that can hold a return value ! (i.e.@: @code{FUNCTION_VALUE_REGNO_P} is true for more than one register). @cindex @code{return} instruction pattern @item @samp{return} *************** the third is the address of a location w *** 2771,2777 **** and the last is the address of the label, to be placed in the location for the incoming static chain. ! On most machines you need not define this pattern, since GNU CC will already generate the correct code, which is to load the frame pointer and static chain, restore the stack (using the @samp{restore_stack_nonlocal} pattern, if defined), and jump indirectly --- 2803,2809 ---- and the last is the address of the label, to be placed in the location for the incoming static chain. ! On most machines you need not define this pattern, since GCC will already generate the correct code, which is to load the frame pointer and static chain, restore the stack (using the @samp{restore_stack_nonlocal} pattern, if defined), and jump indirectly *************** not work on your machine. *** 2781,2787 **** @cindex @code{nonlocal_goto_receiver} instruction pattern @item @samp{nonlocal_goto_receiver} This pattern, if defined, contains code needed at the target of a ! nonlocal goto after the code already generated by GNU CC. You will not normally need to define this pattern. A typical reason why you might need this pattern is if some value, such as a pointer to a global table, must be restored when the frame pointer is restored. Note that a nonlocal --- 2813,2819 ---- @cindex @code{nonlocal_goto_receiver} instruction pattern @item @samp{nonlocal_goto_receiver} This pattern, if defined, contains code needed at the target of a ! nonlocal goto after the code already generated by GCC@. You will not normally need to define this pattern. A typical reason why you might need this pattern is if some value, such as a pointer to a global table, must be restored when the frame pointer is restored. Note that a nonlocal *************** generating the appropriate machine instr *** 3019,3025 **** @cindex jump instruction patterns @cindex defining jump instruction patterns ! For most machines, GNU CC assumes that the machine has a condition code. A comparison insn sets the condition code, recording the results of both signed and unsigned comparison of the given operands. A separate branch insn tests the condition code and branches or not according its value. --- 3051,3057 ---- @cindex jump instruction patterns @cindex defining jump instruction patterns ! For most machines, GCC assumes that the machine has a condition code. A comparison insn sets the condition code, recording the results of both signed and unsigned comparison of the given operands. A separate branch insn tests the condition code and branches or not according its value. *************** the RTL says that is an unsigned branch, *** 3038,3044 **** otherwise output a signed compare. When the branch itself is output, you can treat signed and unsigned branches identically. ! The reason you can do this is that GNU CC always generates a pair of consecutive RTL insns, possibly separated by @code{note} insns, one to set the condition code and one to test it, and keeps the pair inviolate until the end. --- 3070,3076 ---- otherwise output a signed compare. When the branch itself is output, you can treat signed and unsigned branches identically. ! The reason you can do this is that GCC always generates a pair of consecutive RTL insns, possibly separated by @code{note} insns, one to set the condition code and one to test it, and keeps the pair inviolate until the end. *************** iterations. This avoids the need for fe *** 3144,3150 **** @samp{dbra}-like instruction and avoids pipeline stalls associated with the jump. ! GNU CC has three special named patterns to support low overhead looping, @samp{decrement_and_branch_until_zero}, @samp{doloop_begin}, and @samp{doloop_end}. The first pattern, @samp{decrement_and_branch_until_zero}, is not emitted during RTL --- 3176,3182 ---- @samp{dbra}-like instruction and avoids pipeline stalls associated with the jump. ! GCC has three special named patterns to support low overhead looping, @samp{decrement_and_branch_until_zero}, @samp{doloop_begin}, and @samp{doloop_end}. The first pattern, @samp{decrement_and_branch_until_zero}, is not emitted during RTL *************** logically equivalent RTL expressions. *** 3325,3331 **** @item The only possible RTL expressions involving both bitwise exclusive-or and bitwise negation are @code{(xor:@var{m} @var{x} @var{y})} ! and @code{(not:@var{m} (xor:@var{m} @var{x} @var{y}))}.@refill @item The sum of three items, one of which is a constant, will only appear in --- 3357,3363 ---- @item The only possible RTL expressions involving both bitwise exclusive-or and bitwise negation are @code{(xor:@var{m} @var{x} @var{y})} ! and @code{(not:@var{m} (xor:@var{m} @var{x} @var{y}))}. @item The sum of three items, one of which is a constant, will only appear in *************** the form *** 3338,3344 **** @item On machines that do not use @code{cc0}, @code{(compare @var{x} (const_int 0))} will be converted to ! @var{x}.@refill @cindex @code{zero_extract}, canonicalization of @cindex @code{sign_extract}, canonicalization of --- 3370,3376 ---- @item On machines that do not use @code{cc0}, @code{(compare @var{x} (const_int 0))} will be converted to ! @var{x}. @cindex @code{zero_extract}, canonicalization of @cindex @code{sign_extract}, canonicalization of *************** will be written using @code{zero_extract *** 3358,3364 **** On some target machines, some standard pattern names for RTL generation cannot be handled with single insn, but a sequence of RTL insns can represent them. For these target machines, you can write a ! @code{define_expand} to specify how to generate the sequence of RTL. @findex define_expand A @code{define_expand} is an RTL expression that looks almost like a --- 3390,3396 ---- On some target machines, some standard pattern names for RTL generation cannot be handled with single insn, but a sequence of RTL insns can represent them. For these target machines, you can write a ! @code{define_expand} to specify how to generate the sequence of RTL@. @findex define_expand A @code{define_expand} is an RTL expression that looks almost like a *************** is no implicit surrounding @code{PARALLE *** 3380,3387 **** @item The condition, a string containing a C expression. This expression is used to express how the availability of this pattern depends on ! subclasses of target machine, selected by command-line options when GNU ! CC is run. This is just like the condition of a @code{define_insn} that has a standard name. Therefore, the condition (if present) may not depend on the data in the insn being matched, but only the target-machine-type flags. The compiler needs to test these conditions --- 3412,3419 ---- @item The condition, a string containing a C expression. This expression is used to express how the availability of this pattern depends on ! subclasses of target machine, selected by command-line options when GCC ! is run. This is just like the condition of a @code{define_insn} that has a standard name. Therefore, the condition (if present) may not depend on the data in the insn being matched, but only the target-machine-type flags. The compiler needs to test these conditions *************** is used. In particular, it gives a pred *** 3411,3417 **** A true operand, which needs to be specified in order to generate RTL from the pattern, should be described with a @code{match_operand} in its first occurrence in the RTL template. This enters information on the operand's ! predicate into the tables that record such things. GNU CC uses the information to preload the operand into a register if that is required for valid RTL code. If the operand is referred to more than once, subsequent references should use @code{match_dup}. --- 3443,3449 ---- A true operand, which needs to be specified in order to generate RTL from the pattern, should be described with a @code{match_operand} in its first occurrence in the RTL template. This enters information on the operand's ! predicate into the tables that record such things. GCC uses the information to preload the operand into a register if that is required for valid RTL code. If the operand is referred to more than once, subsequent references should use @code{match_dup}. *************** then the last insn it generates must not *** 3564,3570 **** @code{jump_insn} or @code{call_insn}. If you don't need a real insn at the end, emit an insn to copy the result of the operation into itself. Such an insn will generate no code, but it can avoid problems ! in the compiler.@refill @node Insn Splitting @section Defining How to Split Instructions --- 3596,3602 ---- @code{jump_insn} or @code{call_insn}. If you don't need a real insn at the end, emit an insn to copy the result of the operation into itself. Such an insn will generate no code, but it can avoid problems ! in the compiler. @node Insn Splitting @section Defining How to Split Instructions *************** from i386.md: *** 3773,3779 **** @end smallexample In this case, the actual split condition will be ! "TARGET_ZERO_EXTEND_WITH_AND && !optimize_size && reload_completed." The @code{define_insn_and_split} construction provides exactly the same functionality as two separate @code{define_insn} and @code{define_split} --- 3805,3811 ---- @end smallexample In this case, the actual split condition will be ! @samp{TARGET_ZERO_EXTEND_WITH_AND && !optimize_size && reload_completed}. The @code{define_insn_and_split} construction provides exactly the same functionality as two separate @code{define_insn} and @code{define_split} *************** it must obey the same rules as in a @cod *** 3835,3841 **** In this skeleton, @var{insn-pattern-1} and so on are patterns to match consecutive insns. The optimization applies to a sequence of insns when @var{insn-pattern-1} matches the first one, @var{insn-pattern-2} matches ! the next, and so on.@refill Each of the insns matched by a peephole must also match a @code{define_insn}. Peepholes are checked only at the last stage just --- 3867,3873 ---- In this skeleton, @var{insn-pattern-1} and so on are patterns to match consecutive insns. The optimization applies to a sequence of insns when @var{insn-pattern-1} matches the first one, @var{insn-pattern-2} matches ! the next, and so on. Each of the insns matched by a peephole must also match a @code{define_insn}. Peepholes are checked only at the last stage just *************** elsewhere. Use the C expression @code{d *** 3887,3893 **** @var{op})}, where @var{insn} is the insn in which you expect the value to be used for the last time (from the value of @code{insn}, together with use of @code{prev_nonnote_insn}), and @var{op} is the intermediate ! value (from @code{operands[@var{i}]}).@refill Applying the optimization means replacing the sequence of insns with one new insn. The @var{template} controls ultimate output of assembler code --- 3919,3925 ---- @var{op})}, where @var{insn} is the insn in which you expect the value to be used for the last time (from the value of @code{insn}, together with use of @code{prev_nonnote_insn}), and @var{op} is the intermediate ! value (from @code{operands[@var{i}]}). Applying the optimization means replacing the sequence of insns with one new insn. The @var{template} controls ultimate output of assembler code *************** The string @var{value} specifies a const *** 4201,4207 **** If @var{value} is specified as @samp{"*"}, it means that the default value of the attribute is to be used for the insn containing this expression. @samp{"*"} obviously cannot be used in the @var{default} expression ! of a @code{define_attr}.@refill If the attribute whose value is being specified is numeric, @var{value} must be a string containing a non-negative integer (normally --- 4233,4239 ---- If @var{value} is specified as @samp{"*"}, it means that the default value of the attribute is to be used for the insn containing this expression. @samp{"*"} obviously cannot be used in the @var{default} expression ! of a @code{define_attr}. If the attribute whose value is being specified is numeric, @var{value} must be a string containing a non-negative integer (normally *************** These tests are true if the indicated co *** 4283,4296 **** expressions is true. Arithmetic expressions are formed with @code{plus}, @code{minus}, @code{mult}, @code{div}, @code{mod}, @code{abs}, @code{neg}, @code{and}, @code{ior}, @code{xor}, @code{not}, ! @code{ashift}, @code{lshiftrt}, and @code{ashiftrt} expressions.@refill @findex get_attr @code{const_int} and @code{symbol_ref} are always valid terms (@pxref{Insn Lengths},for additional forms). @code{symbol_ref} is a string denoting a C expression that yields an @code{int} when evaluated by the @samp{get_attr_@dots{}} routine. It should normally be a global ! variable.@refill @findex eq_attr @item (eq_attr @var{name} @var{value}) --- 4315,4328 ---- expressions is true. Arithmetic expressions are formed with @code{plus}, @code{minus}, @code{mult}, @code{div}, @code{mod}, @code{abs}, @code{neg}, @code{and}, @code{ior}, @code{xor}, @code{not}, ! @code{ashift}, @code{lshiftrt}, and @code{ashiftrt} expressions. @findex get_attr @code{const_int} and @code{symbol_ref} are always valid terms (@pxref{Insn Lengths},for additional forms). @code{symbol_ref} is a string denoting a C expression that yields an @code{int} when evaluated by the @samp{get_attr_@dots{}} routine. It should normally be a global ! variable. @findex eq_attr @item (eq_attr @var{name} @var{value}) *************** is equivalent to *** 4320,4326 **** If @var{name} specifies an attribute of @samp{alternative}, it refers to the value of the compiler variable @code{which_alternative} (@pxref{Output Statement}) and the values must be small integers. For ! example,@refill @smallexample (eq_attr "alternative" "2,3") --- 4352,4358 ---- If @var{name} specifies an attribute of @samp{alternative}, it refers to the value of the compiler variable @code{which_alternative} (@pxref{Output Statement}) and the values must be small integers. For ! example, @smallexample (eq_attr "alternative" "2,3") *************** is equivalent to *** 4336,4342 **** Note that, for most attributes, an @code{eq_attr} test is simplified in cases where the value of the attribute being tested is known for all insns matching ! a particular pattern. This is by far the most common case.@refill @findex attr_flag @item (attr_flag @var{name}) --- 4368,4374 ---- Note that, for most attributes, an @code{eq_attr} test is simplified in cases where the value of the attribute being tested is known for all insns matching ! a particular pattern. This is by far the most common case. @findex attr_flag @item (attr_flag @var{name}) *************** insn is set to the default value for tha *** 4398,4404 **** @code{define_attr}. Extensive use of default values for attributes permits the specification of the values for only one or two attributes in the definition of most insn patterns, as seen in the example in the ! next section.@refill The optional last argument of @code{define_insn} and @code{define_peephole} is a vector of expressions, each of which defines --- 4430,4436 ---- @code{define_attr}. Extensive use of default values for attributes permits the specification of the values for only one or two attributes in the definition of most insn patterns, as seen in the example in the ! next section. The optional last argument of @code{define_insn} and @code{define_peephole} is a vector of expressions, each of which defines *************** the value for a single attribute. The m *** 4406,4412 **** attribute's value is to use a @code{set} expression whose first operand is an @code{attr} expression giving the name of the attribute being set. The second operand of the @code{set} is an attribute expression ! (@pxref{Expressions}) giving the value of the attribute.@refill When the attribute value depends on the @samp{alternative} attribute (i.e., which is the applicable alternative in the constraint of the --- 4438,4444 ---- attribute's value is to use a @code{set} expression whose first operand is an @code{attr} expression giving the name of the attribute being set. The second operand of the @code{set} is an attribute expression ! (@pxref{Expressions}) giving the value of the attribute. When the attribute value depends on the @samp{alternative} attribute (i.e., which is the applicable alternative in the constraint of the *************** that contains the initially computed len *** 4599,4605 **** updated with the correct length of the insn. This macro will normally not be required. A case in which it is ! required is the ROMP. On this machine, the size of an @code{addr_vec} insn must be increased by two to compensate for the fact that alignment may be required. @end table --- 4631,4637 ---- updated with the correct length of the insn. This macro will normally not be required. A case in which it is ! required is the ROMP@. On this machine, the size of an @code{addr_vec} insn must be increased by two to compensate for the fact that alignment may be required. @end table *************** satisfy attribute test @var{delay-n}. @ *** 4705,4711 **** attribute test that specifies which insns may be annulled if the branch is true. Similarly, @var{annul-false-n} specifies which insns in the delay slot may be annulled if the branch is false. If annulling is not ! supported for that delay slot, @code{(nil)} should be coded.@refill For example, in the common case where branch and call insns require a single delay slot, which may contain any insn other than a branch or --- 4737,4743 ---- attribute test that specifies which insns may be annulled if the branch is true. Similarly, @var{annul-false-n} specifies which insns in the delay slot may be annulled if the branch is false. If annulling is not ! supported for that delay slot, @code{(nil)} should be coded. For example, in the common case where branch and call insns require a single delay slot, which may contain any insn other than a branch or *************** if the current insn is predicated, and w *** 4898,4904 **** When @code{define_cond_exec} is used, an implicit reference to the @code{predicable} instruction attribute is made. ! @xref{Insn Attributes}. This attribute must be boolean (i.e. have exactly two elements in its @var{list-of-values}). Further, it must not be used with complex expressions. That is, the default and all uses in the insns must be a simple constant, not dependent on the --- 4930,4936 ---- When @code{define_cond_exec} is used, an implicit reference to the @code{predicable} instruction attribute is made. ! @xref{Insn Attributes}. This attribute must be boolean (i.e.@: have exactly two elements in its @var{list-of-values}). Further, it must not be used with complex expressions. That is, the default and all uses in the insns must be a simple constant, not dependent on the diff -Nrc3pad gcc-3.0/gcc/doc/objc.texi gcc-3.0.1/gcc/doc/objc.texi *** gcc-3.0/gcc/doc/objc.texi Thu Jun 14 15:54:21 2001 --- gcc-3.0.1/gcc/doc/objc.texi Tue Jun 26 15:51:19 2001 *************** *** 9,15 **** @chapter GNU Objective-C runtime features This document is meant to describe some of the GNU Objective-C runtime ! features. It is not intended to teach you Objective-C, there are several resources on the Internet that present the language. Questions and comments about this document to Ovidiu Predescu @email{ovidiu@@cup.hp.com}. --- 9,15 ---- @chapter GNU Objective-C runtime features This document is meant to describe some of the GNU Objective-C runtime ! features. It is not intended to teach you Objective-C, there are several resources on the Internet that present the language. Questions and comments about this document to Ovidiu Predescu @email{ovidiu@@cup.hp.com}. *************** comments about this document to Ovidiu P *** 28,39 **** The GNU Objective-C runtime provides a way that allows you to execute code before the execution of the program enters the @code{main} ! function. The code is executed on a per-class and a per-category basis, through a special class method @code{+load}. This facility is very useful if you want to initialize global variables which can be accessed by the program directly, without sending a message ! to the class first. The usual way to initialize global variables, in the @code{+initialize} method, might not be useful because @code{+initialize} is only called when the first message is sent to a class object, which in some cases could be too late. --- 28,39 ---- The GNU Objective-C runtime provides a way that allows you to execute code before the execution of the program enters the @code{main} ! function. The code is executed on a per-class and a per-category basis, through a special class method @code{+load}. This facility is very useful if you want to initialize global variables which can be accessed by the program directly, without sending a message ! to the class first. The usual way to initialize global variables, in the @code{+initialize} method, might not be useful because @code{+initialize} is only called when the first message is sent to a class object, which in some cases could be too late. *************** FileStream *Stderr = nil; *** 63,74 **** @end example In this example, the initialization of @code{Stdin}, @code{Stdout} and ! @code{Stderr} in @code{+initialize} occurs too late. The programmer can send a message to one of these objects before the variables are actually ! initialized, thus sending messages to the @code{nil} object. The @code{+initialize} method which actually initializes the global variables is not invoked until the first message is sent to the class ! object. The solution would require these variables to be initialized just before entering @code{main}. The correct solution of the above problem is to use the @code{+load} --- 63,74 ---- @end example In this example, the initialization of @code{Stdin}, @code{Stdout} and ! @code{Stderr} in @code{+initialize} occurs too late. The programmer can send a message to one of these objects before the variables are actually ! initialized, thus sending messages to the @code{nil} object. The @code{+initialize} method which actually initializes the global variables is not invoked until the first message is sent to the class ! object. The solution would require these variables to be initialized just before entering @code{main}. The correct solution of the above problem is to use the @code{+load} *************** method instead of @code{+initialize}: *** 90,96 **** @end example ! The @code{+load} is a method that is not overridden by categories. If a class and a category of it both implement @code{+load}, both methods are invoked. This allows some additional initializations to be performed in a category. --- 90,96 ---- @end example ! The @code{+load} is a method that is not overridden by categories. If a class and a category of it both implement @code{+load}, both methods are invoked. This allows some additional initializations to be performed in a category. *************** category implemented in the same file; *** 147,169 **** @end itemize You should make no assumptions about receiving @code{+load} in sibling ! classes when you write @code{+load} of a class. The order in which sibling classes receive @code{+load} is not guaranteed. The order in which @code{+load} and @code{+initialize} are called could ! be problematic if this matters. If you don't allocate objects inside @code{+load}, it is guaranteed that @code{+load} is called before ! @code{+initialize}. If you create an object inside @code{+load} the @code{+initialize} method of object's class is invoked even if ! @code{+load} was not invoked. Note if you explicitly call @code{+load} ! on a class, @code{+initialize} will be called first. To avoid possible problems try to implement only one of these methods. The @code{+load} method is also invoked when a bundle is dynamically ! loaded into your running program. This happens automatically without any ! intervening operation from you. When you write bundles and you need to write @code{+load} you can safely create and send messages to objects whose ! classes already exist in the running program. The same restrictions as above apply to classes defined in bundle. --- 147,169 ---- @end itemize You should make no assumptions about receiving @code{+load} in sibling ! classes when you write @code{+load} of a class. The order in which sibling classes receive @code{+load} is not guaranteed. The order in which @code{+load} and @code{+initialize} are called could ! be problematic if this matters. If you don't allocate objects inside @code{+load}, it is guaranteed that @code{+load} is called before ! @code{+initialize}. If you create an object inside @code{+load} the @code{+initialize} method of object's class is invoked even if ! @code{+load} was not invoked. Note if you explicitly call @code{+load} ! on a class, @code{+initialize} will be called first. To avoid possible problems try to implement only one of these methods. The @code{+load} method is also invoked when a bundle is dynamically ! loaded into your running program. This happens automatically without any ! intervening operation from you. When you write bundles and you need to write @code{+load} you can safely create and send messages to objects whose ! classes already exist in the running program. The same restrictions as above apply to classes defined in bundle. *************** above apply to classes defined in bundle *** 172,178 **** @section Type encoding The Objective-C compiler generates type encodings for all the ! types. These type encodings are used at runtime to find out information about selectors and methods and about objects and classes. The types are encoded in the following way: --- 172,178 ---- @section Type encoding The Objective-C compiler generates type encodings for all the ! types. These type encodings are used at runtime to find out information about selectors and methods and about objects and classes. The types are encoded in the following way: *************** The types are encoded in the following w *** 224,235 **** The encoding of bit-fields has changed to allow bit-fields to be properly handled by the runtime functions that compute sizes and alignments of ! types that contain bit-fields. The previous encoding contained only the ! size of the bit-field. Using only this information it is not possible to ! reliably compute the size occupied by the bit-field. This is very important in the presence of the Boehm's garbage collector because the objects are allocated using the typed memory facility available in this ! collector. The typed memory allocation requires information about where the pointers are located inside the object. The position in the bit-field is the position, counting in bits, of the --- 224,235 ---- The encoding of bit-fields has changed to allow bit-fields to be properly handled by the runtime functions that compute sizes and alignments of ! types that contain bit-fields. The previous encoding contained only the ! size of the bit-field. Using only this information it is not possible to ! reliably compute the size occupied by the bit-field. This is very important in the presence of the Boehm's garbage collector because the objects are allocated using the typed memory facility available in this ! collector. The typed memory allocation requires information about where the pointers are located inside the object. The position in the bit-field is the position, counting in bits, of the *************** struct @{ *** 279,285 **** @sp 1 In addition to the types the compiler also encodes the type ! specifiers. The table below describes the encoding of the current Objective-C type specifiers: @sp 1 --- 279,285 ---- @sp 1 In addition to the types the compiler also encodes the type ! specifiers. The table below describes the encoding of the current Objective-C type specifiers: @sp 1 *************** Objective-C type specifiers: *** 303,309 **** @sp 1 ! The type specifiers are encoded just before the type. Unlike types however, the type specifiers are only encoded when they appear in method argument types. --- 303,309 ---- @sp 1 ! The type specifiers are encoded just before the type. Unlike types however, the type specifiers are only encoded when they appear in method argument types. *************** argument types. *** 313,346 **** Support for a new memory management policy has been added by using a powerful conservative garbage collector, known as the ! Boehm-Demers-Weiser conservative garbage collector. It is available from @w{@uref{http://www.hpl.hp.com/personal/Hans_Boehm/gc/}}. To enable the support for it you have to configure the compiler using an ! additional argument, @w{@option{--enable-objc-gc}}. You need to have ! garbage collector installed before building the compiler. This will build an additional runtime library which has several enhancements to ! support the garbage collector. The new library has a new name, @file{libobjc_gc.a} to not conflict with the non-garbage-collected library. When the garbage collector is used, the objects are allocated using the so-called typed memory allocation mechanism available in the ! Boehm-Demers-Weiser collector. This mode requires precise information on ! where pointers are located inside objects. This information is computed once per class, immediately after the class has been initialized. There is a new runtime function @code{class_ivar_set_gcinvisible()} which can be used to declare a so-called @dfn{weak pointer} ! reference. Such a pointer is basically hidden for the garbage collector; this can be useful in certain situations, especially when you want to keep track of the allocated objects, yet allow them to be ! collected. This kind of pointers can only be members of objects, you ! cannot declare a global pointer as a weak reference. Every type which is a pointer type can be declared a weak pointer, including @code{id}, @code{Class} and @code{SEL}. ! Here is an example of how to use this feature. Suppose you want to implement a class whose instances hold a weak pointer reference; the following class does this: --- 313,346 ---- Support for a new memory management policy has been added by using a powerful conservative garbage collector, known as the ! Boehm-Demers-Weiser conservative garbage collector. It is available from @w{@uref{http://www.hpl.hp.com/personal/Hans_Boehm/gc/}}. To enable the support for it you have to configure the compiler using an ! additional argument, @w{@option{--enable-objc-gc}}. You need to have ! garbage collector installed before building the compiler. This will build an additional runtime library which has several enhancements to ! support the garbage collector. The new library has a new name, @file{libobjc_gc.a} to not conflict with the non-garbage-collected library. When the garbage collector is used, the objects are allocated using the so-called typed memory allocation mechanism available in the ! Boehm-Demers-Weiser collector. This mode requires precise information on ! where pointers are located inside objects. This information is computed once per class, immediately after the class has been initialized. There is a new runtime function @code{class_ivar_set_gcinvisible()} which can be used to declare a so-called @dfn{weak pointer} ! reference. Such a pointer is basically hidden for the garbage collector; this can be useful in certain situations, especially when you want to keep track of the allocated objects, yet allow them to be ! collected. This kind of pointers can only be members of objects, you ! cannot declare a global pointer as a weak reference. Every type which is a pointer type can be declared a weak pointer, including @code{id}, @code{Class} and @code{SEL}. ! Here is an example of how to use this feature. Suppose you want to implement a class whose instances hold a weak pointer reference; the following class does this: *************** following class does this: *** 379,385 **** @end example Weak pointers are supported through a new type character specifier ! represented by the @samp{!} character. The @code{class_ivar_set_gcinvisible()} function adds or removes this specifier to the string type description of the instance variable named as argument. --- 379,385 ---- @end example Weak pointers are supported through a new type character specifier ! represented by the @samp{!} character. The @code{class_ivar_set_gcinvisible()} function adds or removes this specifier to the string type description of the instance variable named as argument. *************** as argument. *** 389,395 **** @section Constant string objects GNU Objective-C provides constant string objects that are generated ! directly by the compiler. You declare a constant string object by prefixing a C constant string with the character @samp{@@}: @example --- 389,395 ---- @section Constant string objects GNU Objective-C provides constant string objects that are generated ! directly by the compiler. You declare a constant string object by prefixing a C constant string with the character @samp{@@}: @example *************** prefixing a C constant string with the c *** 398,408 **** The constant string objects are usually instances of the @code{NXConstantString} class which is provided by the GNU Objective-C ! runtime. To get the definition of this class you must include the @file{objc/NXConstStr.h} header file. User defined libraries may want to implement their own constant string ! class. To be able to support them, the GNU Objective-C compiler provides a new command line options @option{-fconstant-string-class=@var{class-name}}. The provided class should adhere to a strict structure, the same as @code{NXConstantString}'s structure: --- 398,408 ---- The constant string objects are usually instances of the @code{NXConstantString} class which is provided by the GNU Objective-C ! runtime. To get the definition of this class you must include the @file{objc/NXConstStr.h} header file. User defined libraries may want to implement their own constant string ! class. To be able to support them, the GNU Objective-C compiler provides a new command line options @option{-fconstant-string-class=@var{class-name}}. The provided class should adhere to a strict structure, the same as @code{NXConstantString}'s structure: *************** as @code{NXConstantString}'s structure: *** 419,430 **** @end example User class libraries may choose to inherit the customized constant ! string class from a different class than @code{Object}. There is no requirement in the methods the constant string class has to implement. When a file is compiled with the @option{-fconstant-string-class} option, all the constant string objects will be instances of the class specified ! as argument to this option. It is possible to have multiple compilation units referring to different constant string classes, neither the compiler nor the linker impose any restrictions in doing this. --- 419,430 ---- @end example User class libraries may choose to inherit the customized constant ! string class from a different class than @code{Object}. There is no requirement in the methods the constant string class has to implement. When a file is compiled with the @option{-fconstant-string-class} option, all the constant string objects will be instances of the class specified ! as argument to this option. It is possible to have multiple compilation units referring to different constant string classes, neither the compiler nor the linker impose any restrictions in doing this. diff -Nrc3pad gcc-3.0/gcc/doc/rtl.texi gcc-3.0.1/gcc/doc/rtl.texi *** gcc-3.0/gcc/doc/rtl.texi Thu Jun 14 15:54:21 2001 --- gcc-3.0.1/gcc/doc/rtl.texi Mon Jul 2 17:50:54 2001 *************** An RTX code for other three input operat *** 160,166 **** @item i An RTX code for an entire instruction: @code{INSN}, @code{JUMP_INSN}, and ! @code{CALL_INSN}. @xref{Insns}. @item m An RTX code for something that matches in insns, such as --- 160,166 ---- @item i An RTX code for an entire instruction: @code{INSN}, @code{JUMP_INSN}, and ! @code{CALL_INSN}. @xref{Insns}. @item m An RTX code for something that matches in insns, such as *************** expression (actually a pointer to an exp *** 185,191 **** @samp{w} for wide integer, @samp{s} for string, and @samp{E} for vector of expressions. The sequence of letters for an expression code is called its @dfn{format}. For example, the format of @code{subreg} is ! @samp{ei}.@refill @cindex RTL format characters A few other format characters are used occasionally: --- 185,191 ---- @samp{w} for wide integer, @samp{s} for string, and @samp{E} for vector of expressions. The sequence of letters for an expression code is called its @dfn{format}. For example, the format of @code{subreg} is ! @samp{ei}. @cindex RTL format characters A few other format characters are used occasionally: *************** You can make no assumptions about the fo *** 271,277 **** Operands of expressions are accessed using the macros @code{XEXP}, @code{XINT}, @code{XWINT} and @code{XSTR}. Each of these macros takes two arguments: an expression-pointer (RTX) and an operand number ! (counting from zero). Thus,@refill @example XEXP (@var{x}, 2) --- 271,277 ---- Operands of expressions are accessed using the macros @code{XEXP}, @code{XINT}, @code{XWINT} and @code{XSTR}. Each of these macros takes two arguments: an expression-pointer (RTX) and an operand number ! (counting from zero). Thus, @example XEXP (@var{x}, 2) *************** compile without error, and would return *** 304,310 **** an expression pointer, which would probably result in a crash when accessed. Nothing stops you from writing @code{XEXP (@var{x}, 28)} either, but this will access memory past the end of the expression with ! unpredictable results.@refill Access to operands which are vectors is more complicated. You can use the macro @code{XVEC} to get the vector-pointer itself, or the macros --- 304,310 ---- an expression pointer, which would probably result in a crash when accessed. Nothing stops you from writing @code{XEXP (@var{x}, 28)} either, but this will access memory past the end of the expression with ! unpredictable results. Access to operands which are vectors is more complicated. You can use the macro @code{XVEC} to get the vector-pointer itself, or the macros *************** in operand number @var{idx} in @var{exp} *** 324,330 **** @findex XVECEXP @item XVECEXP (@var{exp}, @var{idx}, @var{eltnum}) Access element number @var{eltnum} in the vector which is ! in operand number @var{idx} in @var{exp}. This value is an RTX. It is up to you to make sure that @var{eltnum} is not negative and is less than @code{XVECLEN (@var{exp}, @var{idx})}. --- 324,330 ---- @findex XVECEXP @item XVECEXP (@var{exp}, @var{idx}, @var{eltnum}) Access element number @var{eltnum} in the vector which is ! in operand number @var{idx} in @var{exp}. This value is an RTX@. It is up to you to make sure that @var{eltnum} is not negative and is less than @code{XVECLEN (@var{exp}, @var{idx})}. *************** never be simultaneously set. *** 380,386 **** In @code{mem} expressions, the alias set to which @var{x} belongs. If zero, @var{x} is not in any alias set, and may alias anything. If nonzero, @var{x} may only alias objects in the same alias set. This ! value is set (in a language-specific manner) by the front-end. This field is not a bit-field; it is in an integer, found as the second argument to the @code{mem}. --- 380,386 ---- In @code{mem} expressions, the alias set to which @var{x} belongs. If zero, @var{x} is not in any alias set, and may alias anything. If nonzero, @var{x} may only alias objects in the same alias set. This ! value is set (in a language-specific manner) by the front end. This field is not a bit-field; it is in an integer, found as the second argument to the @code{mem}. *************** field and printed as @samp{/s}. *** 546,552 **** @item CONSTANT_POOL_ADDRESS_P (@var{x}) Nonzero in a @code{symbol_ref} if it refers to part of the current function's ``constants pool''. These are addresses close to the ! beginning of the function, and GNU CC assumes they can be addressed directly (perhaps with the help of base registers). Stored in the @code{unchanging} field and printed as @samp{/u}. --- 546,552 ---- @item CONSTANT_POOL_ADDRESS_P (@var{x}) Nonzero in a @code{symbol_ref} if it refers to part of the current function's ``constants pool''. These are addresses close to the ! beginning of the function, and GCC assumes they can be addressed directly (perhaps with the help of base registers). Stored in the @code{unchanging} field and printed as @samp{/u}. *************** the condition code. These modes are not *** 767,773 **** ``Block'' mode represents values that are aggregates to which none of the other modes apply. In RTL, only memory references can have this mode, and only if they appear in string-move or vector instructions. On machines ! which have no such instructions, @code{BLKmode} will not appear in RTL. @findex VOIDmode @item VOIDmode --- 767,773 ---- ``Block'' mode represents values that are aggregates to which none of the other modes apply. In RTL, only memory references can have this mode, and only if they appear in string-move or vector instructions. On machines ! which have no such instructions, @code{BLKmode} will not appear in RTL@. @findex VOIDmode @item VOIDmode *************** only expression for integer value negati *** 959,965 **** @code{constm1_rtx}. Any attempt to create an expression of code @code{const_int} and value zero, one, two or negative one will return @code{const0_rtx}, @code{const1_rtx}, @code{const2_rtx} or ! @code{constm1_rtx} as appropriate.@refill @findex const_true_rtx Similarly, there is only one object for the integer whose value is --- 959,965 ---- @code{constm1_rtx}. Any attempt to create an expression of code @code{const_int} and value zero, one, two or negative one will return @code{const0_rtx}, @code{const1_rtx}, @code{const2_rtx} or ! @code{constm1_rtx} as appropriate. @findex const_true_rtx Similarly, there is only one object for the integer whose value is *************** Similarly, there is only one object for *** 967,979 **** @code{STORE_FLAG_VALUE} is one, @code{const_true_rtx} and @code{const1_rtx} will point to the same object. If @code{STORE_FLAG_VALUE} is @minus{}1, @code{const_true_rtx} and ! @code{constm1_rtx} will point to the same object.@refill @findex const_double @item (const_double:@var{m} @var{addr} @var{i0} @var{i1} @dots{}) Represents either a floating-point constant of mode @var{m} or an integer constant too large to fit into @code{HOST_BITS_PER_WIDE_INT} ! bits but small enough to fit within twice that number of bits (GNU CC does not provide a mechanism to represent even larger constants). In the latter case, @var{m} will be @code{VOIDmode}. --- 967,979 ---- @code{STORE_FLAG_VALUE} is one, @code{const_true_rtx} and @code{const1_rtx} will point to the same object. If @code{STORE_FLAG_VALUE} is @minus{}1, @code{const_true_rtx} and ! @code{constm1_rtx} will point to the same object. @findex const_double @item (const_double:@var{m} @var{addr} @var{i0} @var{i1} @dots{}) Represents either a floating-point constant of mode @var{m} or an integer constant too large to fit into @code{HOST_BITS_PER_WIDE_INT} ! bits but small enough to fit within twice that number of bits (GCC does not provide a mechanism to represent even larger constants). In the latter case, @var{m} will be @code{VOIDmode}. *************** it has not been allocated a memory locat *** 986,992 **** undisplayed field), @var{addr} contains @code{const0_rtx}. If it is not on the chain, @var{addr} contains @code{cc0_rtx}. @var{addr} is customarily accessed with the macro @code{CONST_DOUBLE_MEM} and the ! chain field via @code{CONST_DOUBLE_CHAIN}.@refill @findex CONST_DOUBLE_LOW If @var{m} is @code{VOIDmode}, the bits of the value are stored in --- 986,992 ---- undisplayed field), @var{addr} contains @code{const0_rtx}. If it is not on the chain, @var{addr} contains @code{cc0_rtx}. @var{addr} is customarily accessed with the macro @code{CONST_DOUBLE_MEM} and the ! chain field via @code{CONST_DOUBLE_CHAIN}. @findex CONST_DOUBLE_LOW If @var{m} is @code{VOIDmode}, the bits of the value are stored in *************** of the variable @code{pc_rtx}. Any atte *** 1330,1343 **** code @code{pc} will return @code{pc_rtx}. All instructions that do not jump alter the program counter implicitly ! by incrementing it, but there is no need to mention this in the RTL. @findex mem @item (mem:@var{m} @var{addr} @var{alias}) This RTX represents a reference to main memory at an address represented by the expression @var{addr}. @var{m} specifies how large ! a unit of memory is accessed. @var{alias} specifies an alias set for the ! reference. In general two items are in different alias sets if they cannot reference the same memory address. @findex addressof --- 1330,1343 ---- code @code{pc} will return @code{pc_rtx}. All instructions that do not jump alter the program counter implicitly ! by incrementing it, but there is no need to mention this in the RTL@. @findex mem @item (mem:@var{m} @var{addr} @var{alias}) This RTX represents a reference to main memory at an address represented by the expression @var{addr}. @var{m} specifies how large ! a unit of memory is accessed. @var{alias} specifies an alias set for the ! reference. In general two items are in different alias sets if they cannot reference the same memory address. @findex addressof *************** are filled to an entire word with zeros *** 1763,1769 **** @section Vector Operations @cindex vector operations ! All normal rtl expressions can be used with vector modes; they are interpreted as operating on each part of the vector independently. Additionally, there are a few new expressions to describe specific vector operations. --- 1763,1769 ---- @section Vector Operations @cindex vector operations ! All normal RTL expressions can be used with vector modes; they are interpreted as operating on each part of the vector independently. Additionally, there are a few new expressions to describe specific vector operations. *************** Represents the action of storing the val *** 1951,1960 **** represented by @var{lval}. @var{lval} must be an expression representing a place that can be stored in: @code{reg} (or @code{subreg} or @code{strict_low_part}), @code{mem}, @code{pc}, @code{parallel}, or ! @code{cc0}.@refill If @var{lval} is a @code{reg}, @code{subreg} or @code{mem}, it has a ! machine mode; then @var{x} must be valid for that mode.@refill If @var{lval} is a @code{reg} whose machine mode is less than the full width of the register, then it means that the part of the register --- 1951,1960 ---- represented by @var{lval}. @var{lval} must be an expression representing a place that can be stored in: @code{reg} (or @code{subreg} or @code{strict_low_part}), @code{mem}, @code{pc}, @code{parallel}, or ! @code{cc0}. If @var{lval} is a @code{reg}, @code{subreg} or @code{mem}, it has a ! machine mode; then @var{x} must be valid for that mode. If @var{lval} is a @code{reg} whose machine mode is less than the full width of the register, then it means that the part of the register *************** an undefined way. *** 1967,1973 **** If @var{lval} is a @code{strict_low_part} of a @code{subreg}, then the part of the register specified by the machine mode of the @code{subreg} is given the value @var{x} and the rest of the register ! is not changed.@refill If @var{lval} is @code{(cc0)}, it has no machine mode, and @var{x} may be either a @code{compare} expression or a value that may have any mode. --- 1967,1973 ---- If @var{lval} is a @code{strict_low_part} of a @code{subreg}, then the part of the register specified by the machine mode of the @code{subreg} is given the value @var{x} and the rest of the register ! is not changed. If @var{lval} is @code{(cc0)}, it has no machine mode, and @var{x} may be either a @code{compare} expression or a value that may have any mode. *************** does not jump) and the other of the two *** 1995,2001 **** (for the case which does jump). @var{x} may also be a @code{mem} or @code{(plus:SI (pc) @var{y})}, where @var{y} may be a @code{reg} or a @code{mem}; these unusual patterns are used to represent jumps through ! branch tables.@refill If @var{lval} is neither @code{(cc0)} nor @code{(pc)}, the mode of @var{lval} must not be @code{VOIDmode} and the mode of @var{x} must be --- 1995,2001 ---- (for the case which does jump). @var{x} may also be a @code{mem} or @code{(plus:SI (pc) @var{y})}, where @var{y} may be a @code{reg} or a @code{mem}; these unusual patterns are used to represent jumps through ! branch tables. If @var{lval} is neither @code{(cc0)} nor @code{(pc)}, the mode of @var{lval} must not be @code{VOIDmode} and the mode of @var{x} must be *************** insn. However, the reload phase may all *** 2078,2084 **** the inputs unless the @samp{&} constraint is specified for the selected alternative (@pxref{Modifiers}). You can clobber either a specific hard register, a pseudo register, or a @code{scratch} expression; in the ! latter two cases, GNU CC will allocate a hard register that is available there for use as a temporary. For instructions that require a temporary register, you should use --- 2078,2084 ---- the inputs unless the @samp{&} constraint is specified for the selected alternative (@pxref{Modifiers}). You can clobber either a specific hard register, a pseudo register, or a @code{scratch} expression; in the ! latter two cases, GCC will allocate a hard register that is available there for use as a temporary. For instructions that require a temporary register, you should use *************** For instructions that require a temporar *** 2086,2092 **** combiner phase to add the @code{clobber} when required. You do this by coding (@code{clobber} (@code{match_scratch} @dots{})). If you do clobber a pseudo register, use one which appears nowhere else---generate ! a new one each time. Otherwise, you may confuse CSE. There is one other known use for clobbering a pseudo register in a @code{parallel}: when one of the input operands of the insn is also --- 2086,2092 ---- combiner phase to add the @code{clobber} when required. You do this by coding (@code{clobber} (@code{match_scratch} @dots{})). If you do clobber a pseudo register, use one which appears nowhere else---generate ! a new one each time. Otherwise, you may confuse CSE@. There is one other known use for clobbering a pseudo register in a @code{parallel}: when one of the input operands of the insn is also *************** Represents several side effects performe *** 2145,2151 **** brackets stand for a vector; the operand of @code{parallel} is a vector of expressions. @var{x0}, @var{x1} and so on are individual side effect expressions---expressions of code @code{set}, @code{call}, ! @code{return}, @code{clobber} or @code{use}.@refill ``In parallel'' means that first all the values used in the individual side-effects are computed, and second all the actual side-effects are --- 2145,2151 ---- brackets stand for a vector; the operand of @code{parallel} is a vector of expressions. @var{x0}, @var{x1} and so on are individual side effect expressions---expressions of code @code{set}, @code{call}, ! @code{return}, @code{clobber} or @code{use}. ``In parallel'' means that first all the values used in the individual side-effects are computed, and second all the actual side-effects are *************** space is given to each address-differenc *** 2255,2261 **** are set up by branch shortening and hold a label with a minimum and a maximum address, respectively. @var{flags} indicates the relative position of @var{base}, @var{min} and @var{max} to the containing insn ! and of @var{min} and @var{max} to @var{base}. See rtl.def for details.@refill @end table @node Incdec --- 2255,2261 ---- are set up by branch shortening and hold a label with a minimum and a maximum address, respectively. @var{flags} indicates the relative position of @var{base}, @var{min} and @var{max} to the containing insn ! and of @var{min} and @var{max} to @var{base}. See rtl.def for details. @end table @node Incdec *************** machines allow only a @code{reg}. @var{ *** 2277,2283 **** for pointers on the machine in use. The amount @var{x} is decremented by is the length in bytes of the machine mode of the containing memory reference of which this expression serves as the address. Here is an ! example of its use:@refill @example (mem:DF (pre_dec:SI (reg:SI 39))) --- 2277,2283 ---- for pointers on the machine in use. The amount @var{x} is decremented by is the length in bytes of the machine mode of the containing memory reference of which this expression serves as the address. Here is an ! example of its use: @example (mem:DF (pre_dec:SI (reg:SI 39))) *************** The expression @var{y} must be one of th *** 2320,2329 **** @end table where @var{z} is an index register and @var{i} is a constant. ! Here is an example of its use:@refill @example ! (mem:SF (post_modify:SI (reg:SI 42) (plus (reg:SI 42) (reg:SI 48)))) @end example This says to modify pseudo register 42 by adding the contents of pseudo --- 2320,2330 ---- @end table where @var{z} is an index register and @var{i} is a constant. ! Here is an example of its use: @example ! (mem:SF (post_modify:SI (reg:SI 42) (plus (reg:SI 42) ! (reg:SI 48)))) @end example This says to modify pseudo register 42 by adding the contents of pseudo *************** first insn in a @code{sequence}, @code{N *** 2470,2476 **** is the insn containing the @code{sequence} expression, as is the value of @code{PREV_INSN (NEXT_INSN (@var{insn}))} is @var{insn} is the last insn in the @code{sequence} expression. You can use these expressions ! to find the containing @code{sequence} expression.@refill Every insn has one of the following six expression codes: --- 2471,2477 ---- is the insn containing the @code{sequence} expression, as is the value of @code{PREV_INSN (NEXT_INSN (@var{insn}))} is @var{insn} is the last insn in the @code{sequence} expression. You can use these expressions ! to find the containing @code{sequence} expression. Every insn has one of the following six expression codes: *************** filling is done, this may no longer be t *** 2935,2941 **** @code{REG_CC_USER} note will be placed on the insn setting @code{cc0} to point to the insn using @code{cc0} and a @code{REG_CC_SETTER} note will be placed on the insn using @code{cc0} to point to the insn setting ! @code{cc0}.@refill @end table These values are only used in the @code{LOG_LINKS} field, and indicate --- 2936,2942 ---- @code{REG_CC_USER} note will be placed on the insn setting @code{cc0} to point to the insn using @code{cc0} and a @code{REG_CC_SETTER} note will be placed on the insn using @code{cc0} to point to the insn setting ! @code{cc0}. @end table These values are only used in the @code{LOG_LINKS} field, and indicate *************** probability that the branch will be take *** 2976,2982 **** @item REG_BR_PRED These notes are found in JUMP insns after delayed branch scheduling has taken place. They indicate both the direction and the likelihood ! of the JUMP. The format is a bitmask of ATTR_FLAG_* values. @findex REG_FRAME_RELATED_EXPR @item REG_FRAME_RELATED_EXPR --- 2977,2983 ---- @item REG_BR_PRED These notes are found in JUMP insns after delayed branch scheduling has taken place. They indicate both the direction and the likelihood ! of the JUMP@. The format is a bitmask of ATTR_FLAG_* values. @findex REG_FRAME_RELATED_EXPR @item REG_FRAME_RELATED_EXPR *************** problem since reading RTL occurs only as *** 3167,3180 **** compiler. People frequently have the idea of using RTL stored as text in a file as ! an interface between a language front end and the bulk of GNU CC. This idea is not feasible. ! GNU CC was designed to use RTL internally only. Correct RTL for a given program is very dependent on the particular target machine. And the RTL does not contain all the information about the program. ! The proper way to interface GNU CC to a new language front end is with the ``tree'' data structure, described in the files @file{tree.h} and @file{tree.def}. The documentation for this structure (@pxref{Trees}) is incomplete. --- 3168,3181 ---- compiler. People frequently have the idea of using RTL stored as text in a file as ! an interface between a language front end and the bulk of GCC@. This idea is not feasible. ! GCC was designed to use RTL internally only. Correct RTL for a given program is very dependent on the particular target machine. And the RTL does not contain all the information about the program. ! The proper way to interface GCC to a new language front end is with the ``tree'' data structure, described in the files @file{tree.h} and @file{tree.def}. The documentation for this structure (@pxref{Trees}) is incomplete. diff -Nrc3pad gcc-3.0/gcc/doc/texinfo.tex gcc-3.0.1/gcc/doc/texinfo.tex *** gcc-3.0/gcc/doc/texinfo.tex Tue Jun 12 20:45:01 2001 --- gcc-3.0.1/gcc/doc/texinfo.tex Wed Dec 31 16:00:00 1969 *************** *** 1,6257 **** - % texinfo.tex -- TeX macros to handle Texinfo files. - % - % Load plain if necessary, i.e., if running under initex. - \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi - % - \def\texinfoversion{2001-05-24.08} - % - % Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - % 2000, 01 Free Software Foundation, Inc. - % - % This texinfo.tex file is free software; you can redistribute it and/or - % modify it under the terms of the GNU General Public License as - % published by the Free Software Foundation; either version 2, or (at - % your option) any later version. - % - % This texinfo.tex file is distributed in the hope that it will be - % useful, but WITHOUT ANY WARRANTY; without even the implied warranty - % of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - % General Public License for more details. - % - % You should have received a copy of the GNU General Public License - % along with this texinfo.tex file; see the file COPYING. If not, write - % to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - % Boston, MA 02111-1307, USA. - % - % In other words, you are welcome to use, share and improve this program. - % You are forbidden to forbid anyone else to use, share and improve - % what you give them. Help stamp out software-hoarding! - % - % Please try the latest version of texinfo.tex before submitting bug - % reports; you can get the latest version from: - % ftp://ftp.gnu.org/gnu/texinfo.tex - % (and all GNU mirrors, see http://www.gnu.org/order/ftp.html) - % ftp://texinfo.org/tex/texinfo.tex - % ftp://us.ctan.org/macros/texinfo/texinfo.tex - % (and all CTAN mirrors, finger ctan@us.ctan.org for a list). - % /home/gd/gnu/doc/texinfo.tex on the GNU machines. - % The texinfo.tex in any given Texinfo distribution could well be out - % of date, so if that's what you're using, please check. - % Texinfo has a small home page at http://texinfo.org/. - % - % Send bug reports to bug-texinfo@gnu.org. Please include including a - % complete document in each bug report with which we can reproduce the - % problem. Patches are, of course, greatly appreciated. - % - % To process a Texinfo manual with TeX, it's most reliable to use the - % texi2dvi shell script that comes with the distribution. For a simple - % manual foo.texi, however, you can get away with this: - % tex foo.texi - % texindex foo.?? - % tex foo.texi - % tex foo.texi - % dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps. - % The extra runs of TeX get the cross-reference information correct. - % Sometimes one run after texindex suffices, and sometimes you need more - % than two; texi2dvi does it as many times as necessary. - % - % It is possible to adapt texinfo.tex for other languages. You can get - % the existing language-specific files from ftp://ftp.gnu.org/gnu/texinfo/. - - \message{Loading texinfo [version \texinfoversion]:} - - % If in a .fmt file, print the version number - % and turn on active characters that we couldn't do earlier because - % they might have appeared in the input file name. - \everyjob{\message{[Texinfo version \texinfoversion]}% - \catcode`+=\active \catcode`\_=\active} - - % Save some parts of plain tex whose names we will redefine. - \let\ptexb=\b - \let\ptexbullet=\bullet - \let\ptexc=\c - \let\ptexcomma=\, - \let\ptexdot=\. - \let\ptexdots=\dots - \let\ptexend=\end - \let\ptexequiv=\equiv - \let\ptexexclam=\! - \let\ptexi=\i - \let\ptexlbrace=\{ - \let\ptexrbrace=\} - \let\ptexstar=\* - \let\ptext=\t - - % We never want plain's outer \+ definition in Texinfo. - % For @tex, we can use \tabalign. - \let\+ = \relax - - \message{Basics,} - \chardef\other=12 - - % If this character appears in an error message or help string, it - % starts a new line in the output. - \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\putwordin\undefined \gdef\putwordin{in}\fi - \ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi - \ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi - \ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi - \ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi - \ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi - \ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi - \ifx\putwordof\undefined \gdef\putwordof{of}\fi - \ifx\putwordon\undefined \gdef\putwordon{on}\fi - \ifx\putwordpage\undefined \gdef\putwordpage{page}\fi - \ifx\putwordsection\undefined \gdef\putwordsection{section}\fi - \ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi - \ifx\putwordsee\undefined \gdef\putwordsee{see}\fi - \ifx\putwordSee\undefined \gdef\putwordSee{See}\fi - \ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi - \ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi - % - \ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi - \ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi - \ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi - \ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi - \ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi - \ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi - \ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi - \ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi - \ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi - \ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi - \ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi - \ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi - % - \ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi - \ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi - \ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi - \ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi - \ifx\putwordDeftypevar\undefined\gdef\putwordDeftypevar{Variable}\fi - \ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi - \ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi - - % Ignore a token. - % - \def\gobble#1{} - - \hyphenation{ap-pen-dix} - \hyphenation{mini-buf-fer mini-buf-fers} - \hyphenation{eshell} - \hyphenation{white-space} - - % Margin to add to right of even pages, to left of odd pages. - \newdimen \bindingoffset - \newdimen \normaloffset - \newdimen\pagewidth \newdimen\pageheight - - % Sometimes it is convenient to have everything in the transcript file - % and nothing on the terminal. We don't just call \tracingall here, - % since that produces some useless output on the terminal. - % - \def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% - \ifx\eTeXversion\undefined - \def\loggingall{\tracingcommands2 \tracingstats2 - \tracingpages1 \tracingoutput1 \tracinglostchars1 - \tracingmacros2 \tracingparagraphs1 \tracingrestores1 - \showboxbreadth\maxdimen\showboxdepth\maxdimen - }% - \else - \def\loggingall{\tracingcommands3 \tracingstats2 - \tracingpages1 \tracingoutput1 \tracinglostchars1 - \tracingmacros2 \tracingparagraphs1 \tracingrestores1 - \tracingscantokens1 \tracingassigns1 \tracingifs1 - \tracinggroups1 \tracingnesting2 - \showboxbreadth\maxdimen\showboxdepth\maxdimen - }% - \fi - - % add check for \lastpenalty to plain's definitions. If the last thing - % we did was a \nobreak, we don't want to insert more space. - % - \def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount - \removelastskip\penalty-50\smallskip\fi\fi} - \def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount - \removelastskip\penalty-100\medskip\fi\fi} - \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount - \removelastskip\penalty-200\bigskip\fi\fi} - - % For @cropmarks command. - % Do @cropmarks to get crop marks. - % - \newif\ifcropmarks - \let\cropmarks = \cropmarkstrue - % - % Dimensions to add cropmarks at corners. - % Added by P. A. MacKay, 12 Nov. 1986 - % - \newdimen\outerhsize \newdimen\outervsize % set by the paper size routines - \newdimen\cornerlong \cornerlong=1pc - \newdimen\cornerthick \cornerthick=.3pt - \newdimen\topandbottommargin \topandbottommargin=.75in - - % Main output routine. - \chardef\PAGE = 255 - \output = {\onepageout{\pagecontents\PAGE}} - - \newbox\headlinebox - \newbox\footlinebox - - % \onepageout takes a vbox as an argument. Note that \pagecontents - % does insertions, but you have to call it yourself. - \def\onepageout#1{% - \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi - % - \ifodd\pageno \advance\hoffset by \bindingoffset - \else \advance\hoffset by -\bindingoffset\fi - % - % Do this outside of the \shipout so @code etc. will be expanded in - % the headline as they should be, not taken literally (outputting ''code). - \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% - \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% - % - {% - % Have to do this stuff outside the \shipout because we want it to - % take effect in \write's, yet the group defined by the \vbox ends - % before the \shipout runs. - % - \escapechar = `\\ % use backslash in output files. - \indexdummies % don't expand commands in the output. - \normalturnoffactive % \ in index entries must not stay \, e.g., if - % the page break happens to be in the middle of an example. - \shipout\vbox{% - % Do this early so pdf references go to the beginning of the page. - \ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi - % - \ifcropmarks \vbox to \outervsize\bgroup - \hsize = \outerhsize - \vskip-\topandbottommargin - \vtop to0pt{% - \line{\ewtop\hfil\ewtop}% - \nointerlineskip - \line{% - \vbox{\moveleft\cornerthick\nstop}% - \hfill - \vbox{\moveright\cornerthick\nstop}% - }% - \vss}% - \vskip\topandbottommargin - \line\bgroup - \hfil % center the page within the outer (page) hsize. - \ifodd\pageno\hskip\bindingoffset\fi - \vbox\bgroup - \fi - % - \unvbox\headlinebox - \pagebody{#1}% - \ifdim\ht\footlinebox > 0pt - % Only leave this space if the footline is nonempty. - % (We lessened \vsize for it in \oddfootingxxx.) - % The \baselineskip=24pt in plain's \makefootline has no effect. - \vskip 2\baselineskip - \unvbox\footlinebox - \fi - % - \ifcropmarks - \egroup % end of \vbox\bgroup - \hfil\egroup % end of (centering) \line\bgroup - \vskip\topandbottommargin plus1fill minus1fill - \boxmaxdepth = \cornerthick - \vbox to0pt{\vss - \line{% - \vbox{\moveleft\cornerthick\nsbot}% - \hfill - \vbox{\moveright\cornerthick\nsbot}% - }% - \nointerlineskip - \line{\ewbot\hfil\ewbot}% - }% - \egroup % \vbox from first cropmarks clause - \fi - }% end of \shipout\vbox - }% end of group with \turnoffactive - \advancepageno - \ifnum\outputpenalty>-20000 \else\dosupereject\fi - } - - \newinsert\margin \dimen\margin=\maxdimen - - \def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} - {\catcode`\@ =11 - \gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi - % marginal hacks, juha@viisa.uucp (Juha Takala) - \ifvoid\margin\else % marginal info is present - \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi - \dimen@=\dp#1 \unvbox#1 - \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi - \ifr@ggedbottom \kern-\dimen@ \vfil \fi} - } - - % Here are the rules for the cropmarks. Note that they are - % offset so that the space between them is truly \outerhsize or \outervsize - % (P. A. MacKay, 12 November, 1986) - % - \def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} - \def\nstop{\vbox - {\hrule height\cornerthick depth\cornerlong width\cornerthick}} - \def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} - \def\nsbot{\vbox - {\hrule height\cornerlong depth\cornerthick width\cornerthick}} - - % Parse an argument, then pass it to #1. The argument is the rest of - % the input line (except we remove a trailing comment). #1 should be a - % macro which expects an ordinary undelimited TeX argument. - % - \def\parsearg#1{% - \let\next = #1% - \begingroup - \obeylines - \futurelet\temp\parseargx - } - - % If the next token is an obeyed space (from an @example environment or - % the like), remove it and recurse. Otherwise, we're done. - \def\parseargx{% - % \obeyedspace is defined far below, after the definition of \sepspaces. - \ifx\obeyedspace\temp - \expandafter\parseargdiscardspace - \else - \expandafter\parseargline - \fi - } - - % Remove a single space (as the delimiter token to the macro call). - {\obeyspaces % - \gdef\parseargdiscardspace {\futurelet\temp\parseargx}} - - {\obeylines % - \gdef\parseargline#1^^M{% - \endgroup % End of the group started in \parsearg. - % - % First remove any @c comment, then any @comment. - % Result of each macro is put in \toks0. - \argremovec #1\c\relax % - \expandafter\argremovecomment \the\toks0 \comment\relax % - % - % Call the caller's macro, saved as \next in \parsearg. - \expandafter\next\expandafter{\the\toks0}% - }% - } - - % Since all \c{,omment} does is throw away the argument, we can let TeX - % do that for us. The \relax here is matched by the \relax in the call - % in \parseargline; it could be more or less anything, its purpose is - % just to delimit the argument to the \c. - \def\argremovec#1\c#2\relax{\toks0 = {#1}} - \def\argremovecomment#1\comment#2\relax{\toks0 = {#1}} - - % \argremovec{,omment} might leave us with trailing spaces, though; e.g., - % @end itemize @c foo - % will have two active spaces as part of the argument with the - % `itemize'. Here we remove all active spaces from #1, and assign the - % result to \toks0. - % - % This loses if there are any *other* active characters besides spaces - % in the argument -- _ ^ +, for example -- since they get expanded. - % Fortunately, Texinfo does not define any such commands. (If it ever - % does, the catcode of the characters in questionwill have to be changed - % here.) But this means we cannot call \removeactivespaces as part of - % \argremovec{,omment}, since @c uses \parsearg, and thus the argument - % that \parsearg gets might well have any character at all in it. - % - \def\removeactivespaces#1{% - \begingroup - \ignoreactivespaces - \edef\temp{#1}% - \global\toks0 = \expandafter{\temp}% - \endgroup - } - - % Change the active space to expand to nothing. - % - \begingroup - \obeyspaces - \gdef\ignoreactivespaces{\obeyspaces\let =\empty} - \endgroup - - - \def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} - - %% These are used to keep @begin/@end levels from running away - %% Call \inENV within environments (after a \begingroup) - \newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi} - \def\ENVcheck{% - \ifENV\errmessage{Still within an environment; press RETURN to continue} - \endgroup\fi} % This is not perfect, but it should reduce lossage - - % @begin foo is the same as @foo, for now. - \newhelp\EMsimple{Press RETURN to continue.} - - \outer\def\begin{\parsearg\beginxxx} - - \def\beginxxx #1{% - \expandafter\ifx\csname #1\endcsname\relax - {\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else - \csname #1\endcsname\fi} - - % @end foo executes the definition of \Efoo. - % - \def\end{\parsearg\endxxx} - \def\endxxx #1{% - \removeactivespaces{#1}% - \edef\endthing{\the\toks0}% - % - \expandafter\ifx\csname E\endthing\endcsname\relax - \expandafter\ifx\csname \endthing\endcsname\relax - % There's no \foo, i.e., no ``environment'' foo. - \errhelp = \EMsimple - \errmessage{Undefined command `@end \endthing'}% - \else - \unmatchedenderror\endthing - \fi - \else - % Everything's ok; the right environment has been started. - \csname E\endthing\endcsname - \fi - } - - % There is an environment #1, but it hasn't been started. Give an error. - % - \def\unmatchedenderror#1{% - \errhelp = \EMsimple - \errmessage{This `@end #1' doesn't have a matching `@#1'}% - } - - % Define the control sequence \E#1 to give an unmatched @end error. - % - \def\defineunmatchedend#1{% - \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}% - } - - - % Single-spacing is done by various environments (specifically, in - % \nonfillstart and \quotations). - \newskip\singlespaceskip \singlespaceskip = 12.5pt - \def\singlespace{% - % Why was this kern here? It messes up equalizing space above and below - % environments. --karl, 6may93 - %{\advance \baselineskip by -\singlespaceskip - %\kern \baselineskip}% - \setleading \singlespaceskip - } - - %% Simple single-character @ commands - - % @@ prints an @ - % Kludge this until the fonts are right (grr). - \def\@{{\tt\char64}} - - % This is turned off because it was never documented - % and you can use @w{...} around a quote to suppress ligatures. - %% Define @` and @' to be the same as ` and ' - %% but suppressing ligatures. - %\def\`{{`}} - %\def\'{{'}} - - % Used to generate quoted braces. - \def\mylbrace {{\tt\char123}} - \def\myrbrace {{\tt\char125}} - \let\{=\mylbrace - \let\}=\myrbrace - \begingroup - % Definitions to produce actual \{ & \} command in an index. - \catcode`\{ = 12 \catcode`\} = 12 - \catcode`\[ = 1 \catcode`\] = 2 - \catcode`\@ = 0 \catcode`\\ = 12 - @gdef@lbracecmd[\{]% - @gdef@rbracecmd[\}]% - @endgroup - - % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent - % Others are defined by plain TeX: @` @' @" @^ @~ @= @v @H. - \let\, = \c - \let\dotaccent = \. - \def\ringaccent#1{{\accent23 #1}} - \let\tieaccent = \t - \let\ubaraccent = \b - \let\udotaccent = \d - - % Other special characters: @questiondown @exclamdown - % Plain TeX defines: @AA @AE @O @OE @L (and lowercase versions) @ss. - \def\questiondown{?`} - \def\exclamdown{!`} - - % Dotless i and dotless j, used for accents. - \def\imacro{i} - \def\jmacro{j} - \def\dotless#1{% - \def\temp{#1}% - \ifx\temp\imacro \ptexi - \else\ifx\temp\jmacro \j - \else \errmessage{@dotless can be used only with i or j}% - \fi\fi - } - - % Be sure we're in horizontal mode when doing a tie, since we make space - % equivalent to this in @example-like environments. Otherwise, a space - % at the beginning of a line will start with \penalty -- and - % since \penalty is valid in vertical mode, we'd end up putting the - % penalty on the vertical list instead of in the new paragraph. - {\catcode`@ = 11 - % Avoid using \@M directly, because that causes trouble - % if the definition is written into an index file. - \global\let\tiepenalty = \@M - \gdef\tie{\leavevmode\penalty\tiepenalty\ } - } - - % @: forces normal size whitespace following. - \def\:{\spacefactor=1000 } - - % @* forces a line break. - \def\*{\hfil\break\hbox{}\ignorespaces} - - % @. is an end-of-sentence period. - \def\.{.\spacefactor=3000 } - - % @! is an end-of-sentence bang. - \def\!{!\spacefactor=3000 } - - % @? is an end-of-sentence query. - \def\?{?\spacefactor=3000 } - - % @w prevents a word break. Without the \leavevmode, @w at the - % beginning of a paragraph, when TeX is still in vertical mode, would - % produce a whole line of output instead of starting the paragraph. - \def\w#1{\leavevmode\hbox{#1}} - - % @group ... @end group forces ... to be all on one page, by enclosing - % it in a TeX vbox. We use \vtop instead of \vbox to construct the box - % to keep its height that of a normal line. According to the rules for - % \topskip (p.114 of the TeXbook), the glue inserted is - % max (\topskip - \ht (first item), 0). If that height is large, - % therefore, no glue is inserted, and the space between the headline and - % the text is small, which looks bad. - % - \def\group{\begingroup - \ifnum\catcode13=\active \else - \errhelp = \groupinvalidhelp - \errmessage{@group invalid in context where filling is enabled}% - \fi - % - % The \vtop we start below produces a box with normal height and large - % depth; thus, TeX puts \baselineskip glue before it, and (when the - % next line of text is done) \lineskip glue after it. (See p.82 of - % the TeXbook.) Thus, space below is not quite equal to space - % above. But it's pretty close. - \def\Egroup{% - \egroup % End the \vtop. - \endgroup % End the \group. - }% - % - \vtop\bgroup - % We have to put a strut on the last line in case the @group is in - % the midst of an example, rather than completely enclosing it. - % Otherwise, the interline space between the last line of the group - % and the first line afterwards is too small. But we can't put the - % strut in \Egroup, since there it would be on a line by itself. - % Hence this just inserts a strut at the beginning of each line. - \everypar = {\strut}% - % - % Since we have a strut on every line, we don't need any of TeX's - % normal interline spacing. - \offinterlineskip - % - % OK, but now we have to do something about blank - % lines in the input in @example-like environments, which normally - % just turn into \lisppar, which will insert no space now that we've - % turned off the interline space. Simplest is to make them be an - % empty paragraph. - \ifx\par\lisppar - \edef\par{\leavevmode \par}% - % - % Reset ^^M's definition to new definition of \par. - \obeylines - \fi - % - % Do @comment since we are called inside an environment such as - % @example, where each end-of-line in the input causes an - % end-of-line in the output. We don't want the end-of-line after - % the `@group' to put extra space in the output. Since @group - % should appear on a line by itself (according to the Texinfo - % manual), we don't worry about eating any user text. - \comment - } - % - % TeX puts in an \escapechar (i.e., `@') at the beginning of the help - % message, so this ends up printing `@group can only ...'. - % - \newhelp\groupinvalidhelp{% - group can only be used in environments such as @example,^^J% - where each line of input produces a line of output.} - - % @need space-in-mils - % forces a page break if there is not space-in-mils remaining. - - \newdimen\mil \mil=0.001in - - \def\need{\parsearg\needx} - - % Old definition--didn't work. - %\def\needx #1{\par % - %% This method tries to make TeX break the page naturally - %% if the depth of the box does not fit. - %{\baselineskip=0pt% - %\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak - %\prevdepth=-1000pt - %}} - - \def\needx#1{% - % Ensure vertical mode, so we don't make a big box in the middle of a - % paragraph. - \par - % - % If the @need value is less than one line space, it's useless. - \dimen0 = #1\mil - \dimen2 = \ht\strutbox - \advance\dimen2 by \dp\strutbox - \ifdim\dimen0 > \dimen2 - % - % Do a \strut just to make the height of this box be normal, so the - % normal leading is inserted relative to the preceding line. - % And a page break here is fine. - \vtop to #1\mil{\strut\vfil}% - % - % TeX does not even consider page breaks if a penalty added to the - % main vertical list is 10000 or more. But in order to see if the - % empty box we just added fits on the page, we must make it consider - % page breaks. On the other hand, we don't want to actually break the - % page after the empty box. So we use a penalty of 9999. - % - % There is an extremely small chance that TeX will actually break the - % page at this \penalty, if there are no other feasible breakpoints in - % sight. (If the user is using lots of big @group commands, which - % almost-but-not-quite fill up a page, TeX will have a hard time doing - % good page breaking, for example.) However, I could not construct an - % example where a page broke at this \penalty; if it happens in a real - % document, then we can reconsider our strategy. - \penalty9999 - % - % Back up by the size of the box, whether we did a page break or not. - \kern -#1\mil - % - % Do not allow a page break right after this kern. - \nobreak - \fi - } - - % @br forces paragraph break - - \let\br = \par - - % @dots{} output an ellipsis using the current font. - % We do .5em per period so that it has the same spacing in a typewriter - % font as three actual period characters. - % - \def\dots{% - \leavevmode - \hbox to 1.5em{% - \hskip 0pt plus 0.25fil minus 0.25fil - .\hss.\hss.% - \hskip 0pt plus 0.5fil minus 0.5fil - }% - } - - % @enddots{} is an end-of-sentence ellipsis. - % - \def\enddots{% - \leavevmode - \hbox to 2em{% - \hskip 0pt plus 0.25fil minus 0.25fil - .\hss.\hss.\hss.% - \hskip 0pt plus 0.5fil minus 0.5fil - }% - \spacefactor=3000 - } - - - % @page forces the start of a new page - % - \def\page{\par\vfill\supereject} - - % @exdent text.... - % outputs text on separate line in roman font, starting at standard page margin - - % This records the amount of indent in the innermost environment. - % That's how much \exdent should take out. - \newskip\exdentamount - - % This defn is used inside fill environments such as @defun. - \def\exdent{\parsearg\exdentyyy} - \def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}} - - % This defn is used inside nofill environments such as @example. - \def\nofillexdent{\parsearg\nofillexdentyyy} - \def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount - \leftline{\hskip\leftskip{\rm#1}}}} - - % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current - % paragraph. For more general purposes, use the \margin insertion - % class. WHICH is `l' or `r'. - % - \newskip\inmarginspacing \inmarginspacing=1cm - \def\strutdepth{\dp\strutbox} - % - \def\doinmargin#1#2{\strut\vadjust{% - \nobreak - \kern-\strutdepth - \vtop to \strutdepth{% - \baselineskip=\strutdepth - \vss - % if you have multiple lines of stuff to put here, you'll need to - % make the vbox yourself of the appropriate size. - \ifx#1l% - \llap{\ignorespaces #2\hskip\inmarginspacing}% - \else - \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% - \fi - \null - }% - }} - \def\inleftmargin{\doinmargin l} - \def\inrightmargin{\doinmargin r} - % - % @inmargin{TEXT [, RIGHT-TEXT]} - % (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; - % else use TEXT for both). - % - \def\inmargin#1{\parseinmargin #1,,\finish} - \def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0 > 0pt - \def\lefttext{#1}% have both texts - \def\righttext{#2}% - \else - \def\lefttext{#1}% have only one text - \def\righttext{#1}% - \fi - % - \ifodd\pageno - \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin - \else - \def\temp{\inleftmargin\lefttext}% - \fi - \temp - } - - % @include file insert text of that file as input. - % Allow normal characters that we make active in the argument (a file name). - \def\include{\begingroup - \catcode`\\=12 - \catcode`~=12 - \catcode`^=12 - \catcode`_=12 - \catcode`|=12 - \catcode`<=12 - \catcode`>=12 - \catcode`+=12 - \parsearg\includezzz} - % Restore active chars for included file. - \def\includezzz#1{\endgroup\begingroup - % Read the included file in a group so nested @include's work. - \def\thisfile{#1}% - \input\thisfile - \endgroup} - - \def\thisfile{} - - % @center line outputs that line, centered - - \def\center{\parsearg\centerzzz} - \def\centerzzz #1{{\advance\hsize by -\leftskip - \advance\hsize by -\rightskip - \centerline{#1}}} - - % @sp n outputs n lines of vertical space - - \def\sp{\parsearg\spxxx} - \def\spxxx #1{\vskip #1\baselineskip} - - % @comment ...line which is ignored... - % @c is the same as @comment - % @ignore ... @end ignore is another way to write a comment - - \def\comment{\begingroup \catcode`\^^M=\other% - \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% - \commentxxx} - {\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} - - \let\c=\comment - - % @paragraphindent NCHARS - % We'll use ems for NCHARS, close enough. - % We cannot implement @paragraphindent asis, though. - % - \def\asisword{asis} % no translation, these are keywords - \def\noneword{none} - % - \def\paragraphindent{\parsearg\doparagraphindent} - \def\doparagraphindent#1{% - \def\temp{#1}% - \ifx\temp\asisword - \else - \ifx\temp\noneword - \defaultparindent = 0pt - \else - \defaultparindent = #1em - \fi - \fi - \parindent = \defaultparindent - } - - % @exampleindent NCHARS - % We'll use ems for NCHARS like @paragraphindent. - % It seems @exampleindent asis isn't necessary, but - % I preserve it to make it similar to @paragraphindent. - \def\exampleindent{\parsearg\doexampleindent} - \def\doexampleindent#1{% - \def\temp{#1}% - \ifx\temp\asisword - \else - \ifx\temp\noneword - \lispnarrowing = 0pt - \else - \lispnarrowing = #1em - \fi - \fi - } - - % @asis just yields its argument. Used with @table, for example. - % - \def\asis#1{#1} - - % @math means output in math mode. - % We don't use $'s directly in the definition of \math because control - % sequences like \math are expanded when the toc file is written. Then, - % we read the toc file back, the $'s will be normal characters (as they - % should be, according to the definition of Texinfo). So we must use a - % control sequence to switch into and out of math mode. - % - % This isn't quite enough for @math to work properly in indices, but it - % seems unlikely it will ever be needed there. - % - \let\implicitmath = $ - \def\math#1{\implicitmath #1\implicitmath} - - % @bullet and @minus need the same treatment as @math, just above. - \def\bullet{\implicitmath\ptexbullet\implicitmath} - \def\minus{\implicitmath-\implicitmath} - - % @refill is a no-op. - \let\refill=\relax - - % If working on a large document in chapters, it is convenient to - % be able to disable indexing, cross-referencing, and contents, for test runs. - % This is done with @novalidate (before @setfilename). - % - \newif\iflinks \linkstrue % by default we want the aux files. - \let\novalidate = \linksfalse - - % @setfilename is done at the beginning of every texinfo file. - % 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 - \readauxfile - \fi % \openindices needs to do some work in any case. - \openindices - \fixbackslash % Turn off hack to swallow `\input texinfo'. - \global\let\setfilename=\comment % Ignore extra @setfilename cmds. - % - % If texinfo.cnf is present on the system, read it. - % Useful for site-wide @afourpaper, etc. - % Just to be on the safe side, close the input stream before the \input. - \openin 1 texinfo.cnf - \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi - \closein1 - \temp - % - \comment % Ignore the actual filename. - } - - % Called from \setfilename. - % - \def\openindices{% - \newindex{cp}% - \newcodeindex{fn}% - \newcodeindex{vr}% - \newcodeindex{tp}% - \newcodeindex{ky}% - \newcodeindex{pg}% - } - - % @bye. - \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} - - - \message{pdf,} - % adobe `portable' document format - \newcount\tempnum - \newcount\lnkcount - \newtoks\filename - \newcount\filenamelength - \newcount\pgn - \newtoks\toksA - \newtoks\toksB - \newtoks\toksC - \newtoks\toksD - \newbox\boxA - \newcount\countA - \newif\ifpdf - \newif\ifpdfmakepagedest - - \ifx\pdfoutput\undefined - \pdffalse - \let\pdfmkdest = \gobble - \let\pdfurl = \gobble - \let\endlink = \relax - \let\linkcolor = \relax - \let\pdfmakeoutlines = \relax - \else - \pdftrue - \pdfoutput = 1 - \input pdfcolor - \def\dopdfimage#1#2#3{% - \def\imagewidth{#2}% - \def\imageheight{#3}% - \ifnum\pdftexversion < 14 - \pdfimage - \else - \pdfximage - \fi - \ifx\empty\imagewidth\else width \imagewidth \fi - \ifx\empty\imageheight\else height \imageheight \fi - \ifnum\pdftexversion<13 - #1.pdf% - \else - {#1.pdf}% - \fi - \ifnum\pdftexversion < 14 \else - \pdfrefximage \pdflastximage - \fi} - \def\pdfmkdest#1{\pdfdest name{#1} xyz} - \def\pdfmkpgn#1{#1@} - \let\linkcolor = \Blue % was Cyan, but that seems light? - \def\endlink{\Black\pdfendlink} - % Adding outlines to PDF; macros for calculating structure of outlines - % come from Petr Olsak - \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% - \else \csname#1\endcsname \fi} - \def\advancenumber#1{\tempnum=\expnumber{#1}\relax - \advance\tempnum by1 - \expandafter\xdef\csname#1\endcsname{\the\tempnum}} - \def\pdfmakeoutlines{{% - \openin 1 \jobname.toc - \ifeof 1\else\bgroup - \closein 1 - \indexnofonts - \def\tt{} - \let\_ = \normalunderscore - % Thanh's hack / proper braces in bookmarks - \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace - \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace - % - \def\chapentry ##1##2##3{} - \def\unnumbchapentry ##1##2{} - \def\secentry ##1##2##3##4{\advancenumber{chap##2}} - \def\unnumbsecentry ##1##2{} - \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}} - \def\unnumbsubsecentry ##1##2{} - \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}} - \def\unnumbsubsubsecentry ##1##2{} - \input \jobname.toc - \def\chapentry ##1##2##3{% - \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}} - \def\unnumbchapentry ##1##2{% - \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} - \def\secentry ##1##2##3##4{% - \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}} - \def\unnumbsecentry ##1##2{% - \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} - \def\subsecentry ##1##2##3##4##5{% - \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}} - \def\unnumbsubsecentry ##1##2{% - \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} - \def\subsubsecentry ##1##2##3##4##5##6{% - \pdfoutline goto name{\pdfmkpgn{##6}}{##1}} - \def\unnumbsubsubsecentry ##1##2{% - \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} - \input \jobname.toc - \egroup\fi - }} - \def\makelinks #1,{% - \def\params{#1}\def\E{END}% - \ifx\params\E - \let\nextmakelinks=\relax - \else - \let\nextmakelinks=\makelinks - \ifnum\lnkcount>0,\fi - \picknum{#1}% - \startlink attr{/Border [0 0 0]} - goto name{\pdfmkpgn{\the\pgn}}% - \linkcolor #1% - \advance\lnkcount by 1% - \endlink - \fi - \nextmakelinks - } - \def\picknum#1{\expandafter\pn#1} - \def\pn#1{% - \def\p{#1}% - \ifx\p\lbrace - \let\nextpn=\ppn - \else - \let\nextpn=\ppnn - \def\first{#1} - \fi - \nextpn - } - \def\ppn#1{\pgn=#1\gobble} - \def\ppnn{\pgn=\first} - \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,} - \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} - \def\skipspaces#1{\def\PP{#1}\def\D{|}% - \ifx\PP\D\let\nextsp\relax - \else\let\nextsp\skipspaces - \ifx\p\space\else\addtokens{\filename}{\PP}% - \advance\filenamelength by 1 - \fi - \fi - \nextsp} - \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax} - \ifnum\pdftexversion < 14 - \let \startlink \pdfannotlink - \else - \let \startlink \pdfstartlink - \fi - \def\pdfurl#1{% - \begingroup - \normalturnoffactive\def\@{@}% - \let\value=\expandablevalue - \leavevmode\Red - \startlink attr{/Border [0 0 0]}% - user{/Subtype /Link /A << /S /URI /URI (#1) >>}% - % #1 - \endgroup} - \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} - \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} - \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} - \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} - \def\maketoks{% - \expandafter\poptoks\the\toksA|ENDTOKS| - \ifx\first0\adn0 - \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 - \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 - \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 - \else - \ifnum0=\countA\else\makelink\fi - \ifx\first.\let\next=\done\else - \let\next=\maketoks - \addtokens{\toksB}{\the\toksD} - \ifx\first,\addtokens{\toksB}{\space}\fi - \fi - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi - \next} - \def\makelink{\addtokens{\toksB}% - {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} - \def\pdflink#1{% - \startlink attr{/Border [0 0 0]} goto name{\mkpgn{#1}} - \linkcolor #1\endlink} - \def\mkpgn#1{#1@} - \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} - \fi % \ifx\pdfoutput - - - \message{fonts,} - % Font-change commands. - - % Texinfo sort of supports the sans serif font style, which plain TeX does not. - % So we set up a \sf analogous to plain's \rm, etc. - \newfam\sffam - \def\sf{\fam=\sffam \tensf} - \let\li = \sf % Sometimes we call it \li, not \sf. - - % We don't need math for this one. - \def\ttsl{\tenttsl} - - % Use Computer Modern fonts at \magstephalf (11pt). - \newcount\mainmagstep - \mainmagstep=\magstephalf - - % Set the font macro #1 to the font named #2, adding on the - % specified font prefix (normally `cm'). - % #3 is the font's design size, #4 is a scale factor - \def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4} - - % Use cm as the default font prefix. - % To specify the font prefix, you must define \fontprefix - % before you read in texinfo.tex. - \ifx\fontprefix\undefined - \def\fontprefix{cm} - \fi - % Support font families that don't use the same naming scheme as CM. - \def\rmshape{r} - \def\rmbshape{bx} %where the normal face is bold - \def\bfshape{b} - \def\bxshape{bx} - \def\ttshape{tt} - \def\ttbshape{tt} - \def\ttslshape{sltt} - \def\itshape{ti} - \def\itbshape{bxti} - \def\slshape{sl} - \def\slbshape{bxsl} - \def\sfshape{ss} - \def\sfbshape{ss} - \def\scshape{csc} - \def\scbshape{csc} - - \ifx\bigger\relax - \let\mainmagstep=\magstep1 - \setfont\textrm\rmshape{12}{1000} - \setfont\texttt\ttshape{12}{1000} - \else - \setfont\textrm\rmshape{10}{\mainmagstep} - \setfont\texttt\ttshape{10}{\mainmagstep} - \fi - % Instead of cmb10, you many want to use cmbx10. - % cmbx10 is a prettier font on its own, but cmb10 - % looks better when embedded in a line with cmr10. - \setfont\textbf\bfshape{10}{\mainmagstep} - \setfont\textit\itshape{10}{\mainmagstep} - \setfont\textsl\slshape{10}{\mainmagstep} - \setfont\textsf\sfshape{10}{\mainmagstep} - \setfont\textsc\scshape{10}{\mainmagstep} - \setfont\textttsl\ttslshape{10}{\mainmagstep} - \font\texti=cmmi10 scaled \mainmagstep - \font\textsy=cmsy10 scaled \mainmagstep - - % A few fonts for @defun, etc. - \setfont\defbf\bxshape{10}{\magstep1} %was 1314 - \setfont\deftt\ttshape{10}{\magstep1} - \def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf} - - % Fonts for indices, footnotes, small examples (9pt). - \setfont\smallrm\rmshape{9}{1000} - \setfont\smalltt\ttshape{9}{1000} - \setfont\smallbf\bfshape{10}{900} - \setfont\smallit\itshape{9}{1000} - \setfont\smallsl\slshape{9}{1000} - \setfont\smallsf\sfshape{9}{1000} - \setfont\smallsc\scshape{10}{900} - \setfont\smallttsl\ttslshape{10}{900} - \font\smalli=cmmi9 - \font\smallsy=cmsy9 - - % Fonts for title page: - \setfont\titlerm\rmbshape{12}{\magstep3} - \setfont\titleit\itbshape{10}{\magstep4} - \setfont\titlesl\slbshape{10}{\magstep4} - \setfont\titlett\ttbshape{12}{\magstep3} - \setfont\titlettsl\ttslshape{10}{\magstep4} - \setfont\titlesf\sfbshape{17}{\magstep1} - \let\titlebf=\titlerm - \setfont\titlesc\scbshape{10}{\magstep4} - \font\titlei=cmmi12 scaled \magstep3 - \font\titlesy=cmsy10 scaled \magstep4 - \def\authorrm{\secrm} - - % Chapter (and unnumbered) fonts (17.28pt). - \setfont\chaprm\rmbshape{12}{\magstep2} - \setfont\chapit\itbshape{10}{\magstep3} - \setfont\chapsl\slbshape{10}{\magstep3} - \setfont\chaptt\ttbshape{12}{\magstep2} - \setfont\chapttsl\ttslshape{10}{\magstep3} - \setfont\chapsf\sfbshape{17}{1000} - \let\chapbf=\chaprm - \setfont\chapsc\scbshape{10}{\magstep3} - \font\chapi=cmmi12 scaled \magstep2 - \font\chapsy=cmsy10 scaled \magstep3 - - % Section fonts (14.4pt). - \setfont\secrm\rmbshape{12}{\magstep1} - \setfont\secit\itbshape{10}{\magstep2} - \setfont\secsl\slbshape{10}{\magstep2} - \setfont\sectt\ttbshape{12}{\magstep1} - \setfont\secttsl\ttslshape{10}{\magstep2} - \setfont\secsf\sfbshape{12}{\magstep1} - \let\secbf\secrm - \setfont\secsc\scbshape{10}{\magstep2} - \font\seci=cmmi12 scaled \magstep1 - \font\secsy=cmsy10 scaled \magstep2 - - % \setfont\ssecrm\bxshape{10}{\magstep1} % This size an font looked bad. - % \setfont\ssecit\itshape{10}{\magstep1} % The letters were too crowded. - % \setfont\ssecsl\slshape{10}{\magstep1} - % \setfont\ssectt\ttshape{10}{\magstep1} - % \setfont\ssecsf\sfshape{10}{\magstep1} - - %\setfont\ssecrm\bfshape{10}{1315} % Note the use of cmb rather than cmbx. - %\setfont\ssecit\itshape{10}{1315} % Also, the size is a little larger than - %\setfont\ssecsl\slshape{10}{1315} % being scaled magstep1. - %\setfont\ssectt\ttshape{10}{1315} - %\setfont\ssecsf\sfshape{10}{1315} - - %\let\ssecbf=\ssecrm - - % Subsection fonts (13.15pt). - \setfont\ssecrm\rmbshape{12}{\magstephalf} - \setfont\ssecit\itbshape{10}{1315} - \setfont\ssecsl\slbshape{10}{1315} - \setfont\ssectt\ttbshape{12}{\magstephalf} - \setfont\ssecttsl\ttslshape{10}{1315} - \setfont\ssecsf\sfbshape{12}{\magstephalf} - \let\ssecbf\ssecrm - \setfont\ssecsc\scbshape{10}{\magstep1} - \font\sseci=cmmi12 scaled \magstephalf - \font\ssecsy=cmsy10 scaled 1315 - % The smallcaps and symbol fonts should actually be scaled \magstep1.5, - % but that is not a standard magnification. - - % In order for the font changes to affect most math symbols and letters, - % we have to define the \textfont of the standard families. Since - % texinfo doesn't allow for producing subscripts and superscripts, we - % don't bother to reset \scriptfont and \scriptscriptfont (which would - % also require loading a lot more fonts). - % - \def\resetmathfonts{% - \textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy - \textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf - \textfont\ttfam = \tentt \textfont\sffam = \tensf - } - - - % The font-changing commands redefine the meanings of \tenSTYLE, instead - % of just \STYLE. We do this so that font changes will continue to work - % in math mode, where it is the current \fam that is relevant in most - % cases, not the current font. Plain TeX does \def\bf{\fam=\bffam - % \tenbf}, for example. By redefining \tenbf, we obviate the need to - % redefine \bf itself. - \def\textfonts{% - \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl - \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc - \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl - \resetmathfonts} - \def\titlefonts{% - \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl - \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc - \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy - \let\tenttsl=\titlettsl - \resetmathfonts \setleading{25pt}} - \def\titlefont#1{{\titlefonts\rm #1}} - \def\chapfonts{% - \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl - \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc - \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl - \resetmathfonts \setleading{19pt}} - \def\secfonts{% - \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl - \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc - \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl - \resetmathfonts \setleading{16pt}} - \def\subsecfonts{% - \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl - \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc - \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl - \resetmathfonts \setleading{15pt}} - \let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf? - \def\smallfonts{% - \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl - \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc - \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy - \let\tenttsl=\smallttsl - \resetmathfonts \setleading{11pt}} - - % Set up the default fonts, so we can use them for creating boxes. - % - \textfonts - - % Define these so they can be easily changed for other fonts. - \def\angleleft{$\langle$} - \def\angleright{$\rangle$} - - % Count depth in font-changes, for error checks - \newcount\fontdepth \fontdepth=0 - - % Fonts for short table of contents. - \setfont\shortcontrm\rmshape{12}{1000} - \setfont\shortcontbf\bxshape{12}{1000} - \setfont\shortcontsl\slshape{12}{1000} - - %% Add scribe-like font environments, plus @l for inline lisp (usually sans - %% serif) and @ii for TeX italic - - % \smartitalic{ARG} outputs arg in italics, followed by an italic correction - % unless the following character is such as not to need one. - \def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi} - \def\smartslanted#1{{\sl #1}\futurelet\next\smartitalicx} - \def\smartitalic#1{{\it #1}\futurelet\next\smartitalicx} - - \let\i=\smartitalic - \let\var=\smartslanted - \let\dfn=\smartslanted - \let\emph=\smartitalic - \let\cite=\smartslanted - - \def\b#1{{\bf #1}} - \let\strong=\b - - % We can't just use \exhyphenpenalty, because that only has effect at - % the end of a paragraph. Restore normal hyphenation at the end of the - % group within which \nohyphenation is presumably called. - % - \def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} - \def\restorehyphenation{\hyphenchar\font = `- } - - \def\t#1{% - {\tt \rawbackslash \frenchspacing #1}% - \null - } - \let\ttfont=\t - \def\samp#1{`\tclose{#1}'\null} - \setfont\keyrm\rmshape{8}{1000} - \font\keysy=cmsy9 - \def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% - \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% - \vbox{\hrule\kern-0.4pt - \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% - \kern-0.4pt\hrule}% - \kern-.06em\raise0.4pt\hbox{\angleright}}}} - % The old definition, with no lozenge: - %\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null} - \def\ctrl #1{{\tt \rawbackslash \hat}#1} - - % @file, @option are the same as @samp. - \let\file=\samp - \let\option=\samp - - % @code is a modification of @t, - % which makes spaces the same size as normal in the surrounding text. - \def\tclose#1{% - {% - % Change normal interword space to be same as for the current font. - \spaceskip = \fontdimen2\font - % - % Switch to typewriter. - \tt - % - % But `\ ' produces the large typewriter interword space. - \def\ {{\spaceskip = 0pt{} }}% - % - % Turn off hyphenation. - \nohyphenation - % - \rawbackslash - \frenchspacing - #1% - }% - \null - } - - % We *must* turn on hyphenation at `-' and `_' in \code. - % Otherwise, it is too hard to avoid overfull hboxes - % in the Emacs manual, the Library manual, etc. - - % Unfortunately, TeX uses one parameter (\hyphenchar) to control - % both hyphenation at - and hyphenation within words. - % We must therefore turn them both off (\tclose does that) - % and arrange explicitly to hyphenate at a dash. - % -- rms. - { - \catcode`\-=\active - \catcode`\_=\active - % - \global\def\code{\begingroup - \catcode`\-=\active \let-\codedash - \catcode`\_=\active \let_\codeunder - \codex - } - % - % If we end up with any active - characters when handling the index, - % just treat them as a normal -. - \global\def\indexbreaks{\catcode`\-=\active \let-\realdash} - } - - \def\realdash{-} - \def\codedash{-\discretionary{}{}{}} - \def\codeunder{\ifusingtt{\normalunderscore\discretionary{}{}{}}{\_}} - \def\codex #1{\tclose{#1}\endgroup} - - %\let\exp=\tclose %Was temporary - - % @kbd is like @code, except that if the argument is just one @key command, - % then @kbd has no effect. - - % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), - % `example' (@kbd uses ttsl only inside of @example and friends), - % or `code' (@kbd uses normal tty font always). - \def\kbdinputstyle{\parsearg\kbdinputstylexxx} - \def\kbdinputstylexxx#1{% - \def\arg{#1}% - \ifx\arg\worddistinct - \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% - \else\ifx\arg\wordexample - \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% - \else\ifx\arg\wordcode - \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% - \fi\fi\fi - } - \def\worddistinct{distinct} - \def\wordexample{example} - \def\wordcode{code} - - % Default is kbdinputdistinct. (Too much of a hassle to call the macro, - % the catcodes are wrong for parsearg to work.) - \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl} - - \def\xkey{\key} - \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% - \ifx\one\xkey\ifx\threex\three \key{#2}% - \else{\tclose{\kbdfont\look}}\fi - \else{\tclose{\kbdfont\look}}\fi} - - % For @url, @env, @command quotes seem unnecessary, so use \code. - \let\url=\code - \let\env=\code - \let\command=\code - - % @uref (abbreviation for `urlref') takes an optional (comma-separated) - % second argument specifying the text to display and an optional third - % arg as text to display instead of (rather than in addition to) the url - % itself. First (mandatory) arg is the url. Perhaps eventually put in - % a hypertex \special here. - % - \def\uref#1{\douref #1,,,\finish} - \def\douref#1,#2,#3,#4\finish{\begingroup - \unsepspaces - \pdfurl{#1}% - \setbox0 = \hbox{\ignorespaces #3}% - \ifdim\wd0 > 0pt - \unhbox0 % third arg given, show only that - \else - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0 > 0pt - \ifpdf - \unhbox0 % PDF: 2nd arg given, show only it - \else - \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url - \fi - \else - \code{#1}% only url given, so show it - \fi - \fi - \endlink - \endgroup} - - % rms does not like angle brackets --karl, 17may97. - % So now @email is just like @uref, unless we are pdf. - % - %\def\email#1{\angleleft{\tt #1}\angleright} - \ifpdf - \def\email#1{\doemail#1,,\finish} - \def\doemail#1,#2,#3\finish{\begingroup - \unsepspaces - \pdfurl{mailto:#1}% - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi - \endlink - \endgroup} - \else - \let\email=\uref - \fi - - % Check if we are currently using a typewriter font. Since all the - % Computer Modern typewriter fonts have zero interword stretch (and - % shrink), and it is reasonable to expect all typewriter fonts to have - % this property, we can check that font parameter. - % - \def\ifmonospace{\ifdim\fontdimen3\font=0pt } - - % Typeset a dimension, e.g., `in' or `pt'. The only reason for the - % argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. - % - \def\dmn#1{\thinspace #1} - - \def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par} - - % @l was never documented to mean ``switch to the Lisp font'', - % and it is not used as such in any manual I can find. We need it for - % Polish suppressed-l. --karl, 22sep96. - %\def\l#1{{\li #1}\null} - - % Explicit font changes: @r, @sc, undocumented @ii. - \def\r#1{{\rm #1}} % roman font - \def\sc#1{{\smallcaps#1}} % smallcaps font - \def\ii#1{{\it #1}} % italic font - - % @acronym downcases the argument and prints in smallcaps. - \def\acronym#1{{\smallcaps \lowercase{#1}}} - - % @pounds{} is a sterling sign. - \def\pounds{{\it\$}} - - - \message{page headings,} - - \newskip\titlepagetopglue \titlepagetopglue = 1.5in - \newskip\titlepagebottomglue \titlepagebottomglue = 2pc - - % First the title page. Must do @settitle before @titlepage. - \newif\ifseenauthor - \newif\iffinishedtitlepage - - % Do an implicit @contents or @shortcontents after @end titlepage if the - % user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. - % - \newif\ifsetcontentsaftertitlepage - \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue - \newif\ifsetshortcontentsaftertitlepage - \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue - - \def\shorttitlepage{\parsearg\shorttitlepagezzz} - \def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% - \endgroup\page\hbox{}\page} - - \def\titlepage{\begingroup \parindent=0pt \textfonts - \let\subtitlerm=\tenrm - \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}% - % - \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}% - % - % Leave some space at the very top of the page. - \vglue\titlepagetopglue - % - % Now you can print the title using @title. - \def\title{\parsearg\titlezzz}% - \def\titlezzz##1{\leftline{\titlefonts\rm ##1} - % print a rule at the page bottom also. - \finishedtitlepagefalse - \vskip4pt \hrule height 4pt width \hsize \vskip4pt}% - % No rule at page bottom unless we print one at the top with @title. - \finishedtitlepagetrue - % - % Now you can put text using @subtitle. - \def\subtitle{\parsearg\subtitlezzz}% - \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}% - % - % @author should come last, but may come many times. - \def\author{\parsearg\authorzzz}% - \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi - {\authorfont \leftline{##1}}}% - % - % Most title ``pages'' are actually two pages long, with space - % at the top of the second. We don't want the ragged left on the second. - \let\oldpage = \page - \def\page{% - \iffinishedtitlepage\else - \finishtitlepage - \fi - \oldpage - \let\page = \oldpage - \hbox{}}% - % \def\page{\oldpage \hbox{}} - } - - \def\Etitlepage{% - \iffinishedtitlepage\else - \finishtitlepage - \fi - % It is important to do the page break before ending the group, - % because the headline and footline are only empty inside the group. - % If we use the new definition of \page, we always get a blank page - % after the title page, which we certainly don't want. - \oldpage - \endgroup - % - % If they want short, they certainly want long too. - \ifsetshortcontentsaftertitlepage - \shortcontents - \contents - \global\let\shortcontents = \relax - \global\let\contents = \relax - \fi - % - \ifsetcontentsaftertitlepage - \contents - \global\let\contents = \relax - \global\let\shortcontents = \relax - \fi - % - \ifpdf \pdfmakepagedesttrue \fi - % - \HEADINGSon - } - - \def\finishtitlepage{% - \vskip4pt \hrule height 2pt width \hsize - \vskip\titlepagebottomglue - \finishedtitlepagetrue - } - - %%% Set up page headings and footings. - - \let\thispage=\folio - - \newtoks\evenheadline % headline on even pages - \newtoks\oddheadline % headline on odd pages - \newtoks\evenfootline % footline on even pages - \newtoks\oddfootline % footline on odd pages - - % Now make Tex use those variables - \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline - \else \the\evenheadline \fi}} - \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline - \else \the\evenfootline \fi}\HEADINGShook} - \let\HEADINGShook=\relax - - % Commands to set those variables. - % For example, this is what @headings on does - % @evenheading @thistitle|@thispage|@thischapter - % @oddheading @thischapter|@thispage|@thistitle - % @evenfooting @thisfile|| - % @oddfooting ||@thisfile - - \def\evenheading{\parsearg\evenheadingxxx} - \def\oddheading{\parsearg\oddheadingxxx} - \def\everyheading{\parsearg\everyheadingxxx} - - \def\evenfooting{\parsearg\evenfootingxxx} - \def\oddfooting{\parsearg\oddfootingxxx} - \def\everyfooting{\parsearg\everyfootingxxx} - - {\catcode`\@=0 % - - \gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish} - \gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{% - \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} - - \gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish} - \gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{% - \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} - - \gdef\everyheadingxxx#1{\oddheadingxxx{#1}\evenheadingxxx{#1}}% - - \gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish} - \gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{% - \global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} - - \gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish} - \gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{% - \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% - % - % Leave some space for the footline. Hopefully ok to assume - % @evenfooting will not be used by itself. - \global\advance\pageheight by -\baselineskip - \global\advance\vsize by -\baselineskip - } - - \gdef\everyfootingxxx#1{\oddfootingxxx{#1}\evenfootingxxx{#1}} - % - }% unbind the catcode of @. - - % @headings double turns headings on for double-sided printing. - % @headings single turns headings on for single-sided printing. - % @headings off turns them off. - % @headings on same as @headings double, retained for compatibility. - % @headings after turns on double-sided headings after this page. - % @headings doubleafter turns on double-sided headings after this page. - % @headings singleafter turns on single-sided headings after this page. - % By default, they are off at the start of a document, - % and turned `on' after @end titlepage. - - \def\headings #1 {\csname HEADINGS#1\endcsname} - - \def\HEADINGSoff{ - \global\evenheadline={\hfil} \global\evenfootline={\hfil} - \global\oddheadline={\hfil} \global\oddfootline={\hfil}} - \HEADINGSoff - % When we turn headings on, set the page number to 1. - % For double-sided printing, put current file name in lower left corner, - % chapter name on inside top of right hand pages, document - % title on inside top of left hand pages, and page numbers on outside top - % edge of all pages. - \def\HEADINGSdouble{ - \global\pageno=1 - \global\evenfootline={\hfil} - \global\oddfootline={\hfil} - \global\evenheadline={\line{\folio\hfil\thistitle}} - \global\oddheadline={\line{\thischapter\hfil\folio}} - \global\let\contentsalignmacro = \chapoddpage - } - \let\contentsalignmacro = \chappager - - % For single-sided printing, chapter title goes across top left of page, - % page number on top right. - \def\HEADINGSsingle{ - \global\pageno=1 - \global\evenfootline={\hfil} - \global\oddfootline={\hfil} - \global\evenheadline={\line{\thischapter\hfil\folio}} - \global\oddheadline={\line{\thischapter\hfil\folio}} - \global\let\contentsalignmacro = \chappager - } - \def\HEADINGSon{\HEADINGSdouble} - - \def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} - \let\HEADINGSdoubleafter=\HEADINGSafter - \def\HEADINGSdoublex{% - \global\evenfootline={\hfil} - \global\oddfootline={\hfil} - \global\evenheadline={\line{\folio\hfil\thistitle}} - \global\oddheadline={\line{\thischapter\hfil\folio}} - \global\let\contentsalignmacro = \chapoddpage - } - - \def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} - \def\HEADINGSsinglex{% - \global\evenfootline={\hfil} - \global\oddfootline={\hfil} - \global\evenheadline={\line{\thischapter\hfil\folio}} - \global\oddheadline={\line{\thischapter\hfil\folio}} - \global\let\contentsalignmacro = \chappager - } - - % Subroutines used in generating headings - % This produces Day Month Year style of output. - % Only define if not already defined, in case a txi-??.tex file has set - % up a different format (e.g., txi-cs.tex does this). - \ifx\today\undefined - \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} - \fi - - % @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}} - - - \message{tables,} - % Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x). - - % default indentation of table text - \newdimen\tableindent \tableindent=.8in - % default indentation of @itemize and @enumerate text - \newdimen\itemindent \itemindent=.3in - % margin between end of table item and start of table text. - \newdimen\itemmargin \itemmargin=.1in - - % used internally for \itemindent minus \itemmargin - \newdimen\itemmax - - % Note @table, @vtable, and @vtable define @item, @itemx, etc., with - % these defs. - % They also define \itemindex - % to index the item name in whatever manner is desired (perhaps none). - - \newif\ifitemxneedsnegativevskip - - \def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} - - \def\internalBitem{\smallbreak \parsearg\itemzzz} - \def\internalBitemx{\itemxpar \parsearg\itemzzz} - - \def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz} - \def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz} - - \def\internalBkitem{\smallbreak \parsearg\kitemzzz} - \def\internalBkitemx{\itemxpar \parsearg\kitemzzz} - - \def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}% - \itemzzz {#1}} - - \def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}% - \itemzzz {#1}} - - \def\itemzzz #1{\begingroup % - \advance\hsize by -\rightskip - \advance\hsize by -\tableindent - \setbox0=\hbox{\itemfont{#1}}% - \itemindex{#1}% - \nobreak % This prevents a break before @itemx. - % - % If the item text does not fit in the space we have, put it on a line - % by itself, and do not allow a page break either before or after that - % line. We do not start a paragraph here because then if the next - % command is, e.g., @kindex, the whatsit would get put into the - % horizontal list on a line by itself, resulting in extra blank space. - \ifdim \wd0>\itemmax - % - % Make this a paragraph so we get the \parskip glue and wrapping, - % but leave it ragged-right. - \begingroup - \advance\leftskip by-\tableindent - \advance\hsize by\tableindent - \advance\rightskip by0pt plus1fil - \leavevmode\unhbox0\par - \endgroup - % - % We're going to be starting a paragraph, but we don't want the - % \parskip glue -- logically it's part of the @item we just started. - \nobreak \vskip-\parskip - % - % Stop a page break at the \parskip glue coming up. Unfortunately - % we can't prevent a possible page break at the following - % \baselineskip glue. - \nobreak - \endgroup - \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. - \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 - % eventually be printed. - \nobreak\kern-\tableindent - \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 - \unhbox0 - \nobreak\kern\dimen0 - \endgroup - \itemxneedsnegativevskiptrue - \fi - } - - \def\item{\errmessage{@item while not in a table}} - \def\itemx{\errmessage{@itemx while not in a table}} - \def\kitem{\errmessage{@kitem while not in a table}} - \def\kitemx{\errmessage{@kitemx while not in a table}} - \def\xitem{\errmessage{@xitem while not in a table}} - \def\xitemx{\errmessage{@xitemx while not in a table}} - - % Contains a kludge to get @end[description] to work. - \def\description{\tablez{\dontindex}{1}{}{}{}{}} - - % @table, @ftable, @vtable. - \def\table{\begingroup\inENV\obeylines\obeyspaces\tablex} - {\obeylines\obeyspaces% - \gdef\tablex #1^^M{% - \tabley\dontindex#1 \endtabley}} - - \def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex} - {\obeylines\obeyspaces% - \gdef\ftablex #1^^M{% - \tabley\fnitemindex#1 \endtabley - \def\Eftable{\endgraf\afterenvbreak\endgroup}% - \let\Etable=\relax}} - - \def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex} - {\obeylines\obeyspaces% - \gdef\vtablex #1^^M{% - \tabley\vritemindex#1 \endtabley - \def\Evtable{\endgraf\afterenvbreak\endgroup}% - \let\Etable=\relax}} - - \def\dontindex #1{} - \def\fnitemindex #1{\doind {fn}{\code{#1}}}% - \def\vritemindex #1{\doind {vr}{\code{#1}}}% - - {\obeyspaces % - \gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup% - \tablez{#1}{#2}{#3}{#4}{#5}{#6}}} - - \def\tablez #1#2#3#4#5#6{% - \aboveenvbreak % - \begingroup % - \def\Edescription{\Etable}% Necessary kludge. - \let\itemindex=#1% - \ifnum 0#3>0 \advance \leftskip by #3\mil \fi % - \ifnum 0#4>0 \tableindent=#4\mil \fi % - \ifnum 0#5>0 \advance \rightskip by #5\mil \fi % - \def\itemfont{#2}% - \itemmax=\tableindent % - \advance \itemmax by -\itemmargin % - \advance \leftskip by \tableindent % - \exdentamount=\tableindent - \parindent = 0pt - \parskip = \smallskipamount - \ifdim \parskip=0pt \parskip=2pt \fi% - \def\Etable{\endgraf\afterenvbreak\endgroup}% - \let\item = \internalBitem % - \let\itemx = \internalBitemx % - \let\kitem = \internalBkitem % - \let\kitemx = \internalBkitemx % - \let\xitem = \internalBxitem % - \let\xitemx = \internalBxitemx % - } - - % This is the counter used by @enumerate, which is really @itemize - - \newcount \itemno - - \def\itemize{\parsearg\itemizezzz} - - \def\itemizezzz #1{% - \begingroup % ended by the @end itemize - \itemizey {#1}{\Eitemize} - } - - \def\itemizey #1#2{% - \aboveenvbreak % - \itemmax=\itemindent % - \advance \itemmax by -\itemmargin % - \advance \leftskip by \itemindent % - \exdentamount=\itemindent - \parindent = 0pt % - \parskip = \smallskipamount % - \ifdim \parskip=0pt \parskip=2pt \fi% - \def#2{\endgraf\afterenvbreak\endgroup}% - \def\itemcontents{#1}% - \let\item=\itemizeitem} - - % Set sfcode to normal for the chars that usually have another value. - % These are `.?!:;,' - \def\frenchspacing{\sfcode46=1000 \sfcode63=1000 \sfcode33=1000 - \sfcode58=1000 \sfcode59=1000 \sfcode44=1000 } - - % \splitoff TOKENS\endmark defines \first to be the first token in - % TOKENS, and \rest to be the remainder. - % - \def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% - - % Allow an optional argument of an uppercase letter, lowercase letter, - % or number, to specify the first label in the enumerated list. No - % argument is the same as `1'. - % - \def\enumerate{\parsearg\enumeratezzz} - \def\enumeratezzz #1{\enumeratey #1 \endenumeratey} - \def\enumeratey #1 #2\endenumeratey{% - \begingroup % ended by the @end enumerate - % - % If we were given no argument, pretend we were given `1'. - \def\thearg{#1}% - \ifx\thearg\empty \def\thearg{1}\fi - % - % Detect if the argument is a single token. If so, it might be a - % letter. Otherwise, the only valid thing it can be is a number. - % (We will always have one token, because of the test we just made. - % This is a good thing, since \splitoff doesn't work given nothing at - % all -- the first parameter is undelimited.) - \expandafter\splitoff\thearg\endmark - \ifx\rest\empty - % Only one token in the argument. It could still be anything. - % A ``lowercase letter'' is one whose \lccode is nonzero. - % An ``uppercase letter'' is one whose \lccode is both nonzero, and - % not equal to itself. - % Otherwise, we assume it's a number. - % - % We need the \relax at the end of the \ifnum lines to stop TeX from - % continuing to look for a . - % - \ifnum\lccode\expandafter`\thearg=0\relax - \numericenumerate % a number (we hope) - \else - % It's a letter. - \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax - \lowercaseenumerate % lowercase letter - \else - \uppercaseenumerate % uppercase letter - \fi - \fi - \else - % Multiple tokens in the argument. We hope it's a number. - \numericenumerate - \fi - } - - % An @enumerate whose labels are integers. The starting integer is - % given in \thearg. - % - \def\numericenumerate{% - \itemno = \thearg - \startenumeration{\the\itemno}% - } - - % The starting (lowercase) letter is in \thearg. - \def\lowercaseenumerate{% - \itemno = \expandafter`\thearg - \startenumeration{% - % Be sure we're not beyond the end of the alphabet. - \ifnum\itemno=0 - \errmessage{No more lowercase letters in @enumerate; get a bigger - alphabet}% - \fi - \char\lccode\itemno - }% - } - - % The starting (uppercase) letter is in \thearg. - \def\uppercaseenumerate{% - \itemno = \expandafter`\thearg - \startenumeration{% - % Be sure we're not beyond the end of the alphabet. - \ifnum\itemno=0 - \errmessage{No more uppercase letters in @enumerate; get a bigger - alphabet} - \fi - \char\uccode\itemno - }% - } - - % Call itemizey, adding a period to the first argument and supplying the - % common last two arguments. Also subtract one from the initial value in - % \itemno, since @item increments \itemno. - % - \def\startenumeration#1{% - \advance\itemno by -1 - \itemizey{#1.}\Eenumerate\flushcr - } - - % @alphaenumerate and @capsenumerate are abbreviations for giving an arg - % to @enumerate. - % - \def\alphaenumerate{\enumerate{a}} - \def\capsenumerate{\enumerate{A}} - \def\Ealphaenumerate{\Eenumerate} - \def\Ecapsenumerate{\Eenumerate} - - % Definition of @item while inside @itemize. - - \def\itemizeitem{% - \advance\itemno by 1 - {\let\par=\endgraf \smallbreak}% - \ifhmode \errmessage{In hmode at itemizeitem}\fi - {\parskip=0in \hskip 0pt - \hbox to 0pt{\hss \itemcontents\hskip \itemmargin}% - \vadjust{\penalty 1200}}% - \flushcr} - - % @multitable macros - % Amy Hendrickson, 8/18/94, 3/6/96 - % - % @multitable ... @end multitable will make as many columns as desired. - % Contents of each column will wrap at width given in preamble. Width - % can be specified either with sample text given in a template line, - % or in percent of \hsize, the current width of text on page. - - % Table can continue over pages but will only break between lines. - - % To make preamble: - % - % Either define widths of columns in terms of percent of \hsize: - % @multitable @columnfractions .25 .3 .45 - % @item ... - % - % Numbers following @columnfractions are the percent of the total - % current hsize to be used for each column. You may use as many - % columns as desired. - - - % Or use a template: - % @multitable {Column 1 template} {Column 2 template} {Column 3 template} - % @item ... - % using the widest term desired in each column. - % - % For those who want to use more than one line's worth of words in - % the preamble, break the line within one argument and it - % will parse correctly, i.e., - % - % @multitable {Column 1 template} {Column 2 template} {Column 3 - % template} - % Not: - % @multitable {Column 1 template} {Column 2 template} - % {Column 3 template} - - % Each new table line starts with @item, each subsequent new column - % starts with @tab. Empty columns may be produced by supplying @tab's - % with nothing between them for as many times as empty columns are needed, - % ie, @tab@tab@tab will produce two empty columns. - - % @item, @tab, @multitable or @end multitable do not need to be on their - % own lines, but it will not hurt if they are. - - % Sample multitable: - - % @multitable {Column 1 template} {Column 2 template} {Column 3 template} - % @item first col stuff @tab second col stuff @tab third col - % @item - % first col stuff - % @tab - % second col stuff - % @tab - % third col - % @item first col stuff @tab second col stuff - % @tab Many paragraphs of text may be used in any column. - % - % They will wrap at the width determined by the template. - % @item@tab@tab This will be in third column. - % @end multitable - - % Default dimensions may be reset by user. - % @multitableparskip is vertical space between paragraphs in table. - % @multitableparindent is paragraph indent in table. - % @multitablecolmargin is horizontal space to be left between columns. - % @multitablelinespace is space to leave between table items, baseline - % to baseline. - % 0pt means it depends on current normal line spacing. - % - \newskip\multitableparskip - \newskip\multitableparindent - \newdimen\multitablecolspace - \newskip\multitablelinespace - \multitableparskip=0pt - \multitableparindent=6pt - \multitablecolspace=12pt - \multitablelinespace=0pt - - % Macros used to set up halign preamble: - % - \let\endsetuptable\relax - \def\xendsetuptable{\endsetuptable} - \let\columnfractions\relax - \def\xcolumnfractions{\columnfractions} - \newif\ifsetpercent - - % #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 - \else - \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 - \go - } - - % This used to have \hskip1sp. But then the space in a template line is - % not enough. That is bad. So let's go back to just & until we - % encounter the problem it was intended to solve again. - % --karl, nathan@acm.org, 20apr99. - \def\tab{&} - - % @multitable ... @end multitable definitions: - % - \def\multitable{\parsearg\dotable} - \def\dotable#1{\bgroup - \vskip\parskip - \let\item\crcr - \tolerance=9500 - \hbadness=9500 - \setmultitablespacing - \parskip=\multitableparskip - \parindent=\multitableparindent - \overfullrule=0pt - \global\colcount=0 - \def\Emultitable{\global\setpercentfalse\cr\egroup\egroup}% - % - % To parse everything between @multitable and @item: - \setuptable#1 \endsetuptable - % - % \everycr will reset column counter, \colcount, at the end of - % each line. Every column entry will cause \colcount to advance by one. - % The table preamble - % looks at the current \colcount to find the correct column width. - \everycr{\noalign{% - % - % \filbreak%% keeps underfull box messages off when table breaks over pages. - % Maybe so, but it also creates really weird page breaks when the table - % breaks over pages. Wouldn't \vfil be better? Wait until the problem - % manifests itself, so it can be fixed for real --karl. - \global\colcount=0\relax}}% - % - % This preamble sets up a generic column definition, which will - % be used as many times as user calls for columns. - % \vtop will set a single line and will also let text wrap and - % continue for many paragraphs if desired. - \halign\bgroup&\global\advance\colcount by 1\relax - \multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname - % - % 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 - % The first column will be indented with the surrounding text. - \advance\hsize by\leftskip - \else - \ifsetpercent \else - % If user has not set preamble in terms of percent of \hsize - % we will advance \hsize by \multitablecolspace. - \advance\hsize by \multitablecolspace - \fi - % In either case we will make \leftskip=\multitablecolspace: - \leftskip=\multitablecolspace - \fi - % Ignoring space at the beginning and end avoids an occasional spurious - % blank line, when TeX decides to break the line at the space before the - % box from the multistrut, so the strut ends up on a line by itself. - % For example: - % @multitable @columnfractions .11 .89 - % @item @code{#} - % @tab Legal holiday which is valid in major parts of the whole country. - % Is automatically provided with highlighting sequences respectively marking - % characters. - \noindent\ignorespaces##\unskip\multistrut}\cr - } - - \def\setmultitablespacing{% test to see if user has set \multitablelinespace. - % If so, do nothing. If not, give it an appropriate dimension based on - % current baselineskip. - \ifdim\multitablelinespace=0pt - \setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip - \global\advance\multitablelinespace by-\ht0 - %% strut to put in table in case some entry doesn't have descenders, - %% to keep lines equally spaced - \let\multistrut = \strut - \else - %% FIXME: what is \box0 supposed to be? - \gdef\multistrut{\vrule height\multitablelinespace depth\dp0 - width0pt\relax} \fi - %% Test to see if parskip is larger than space between lines of - %% table. If not, do nothing. - %% If so, set to same dimension as multitablelinespace. - \ifdim\multitableparskip>\multitablelinespace - \global\multitableparskip=\multitablelinespace - \global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller - %% than skip between lines in the table. - \fi% - \ifdim\multitableparskip=0pt - \global\multitableparskip=\multitablelinespace - \global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller - %% than skip between lines in the table. - \fi} - - - \message{conditionals,} - % Prevent errors for section commands. - % Used in @ignore and in failing conditionals. - \def\ignoresections{% - \let\chapter=\relax - \let\unnumbered=\relax - \let\top=\relax - \let\unnumberedsec=\relax - \let\unnumberedsection=\relax - \let\unnumberedsubsec=\relax - \let\unnumberedsubsection=\relax - \let\unnumberedsubsubsec=\relax - \let\unnumberedsubsubsection=\relax - \let\section=\relax - \let\subsec=\relax - \let\subsubsec=\relax - \let\subsection=\relax - \let\subsubsection=\relax - \let\appendix=\relax - \let\appendixsec=\relax - \let\appendixsection=\relax - \let\appendixsubsec=\relax - \let\appendixsubsection=\relax - \let\appendixsubsubsec=\relax - \let\appendixsubsubsection=\relax - \let\contents=\relax - \let\smallbook=\relax - \let\titlepage=\relax - } - - % Used in nested conditionals, where we have to parse the Texinfo source - % and so want to turn off most commands, in case they are used - % incorrectly. - % - \def\ignoremorecommands{% - \let\defcodeindex = \relax - \let\defcv = \relax - \let\deffn = \relax - \let\deffnx = \relax - \let\defindex = \relax - \let\defivar = \relax - \let\defmac = \relax - \let\defmethod = \relax - \let\defop = \relax - \let\defopt = \relax - \let\defspec = \relax - \let\deftp = \relax - \let\deftypefn = \relax - \let\deftypefun = \relax - \let\deftypeivar = \relax - \let\deftypeop = \relax - \let\deftypevar = \relax - \let\deftypevr = \relax - \let\defun = \relax - \let\defvar = \relax - \let\defvr = \relax - \let\ref = \relax - \let\xref = \relax - \let\printindex = \relax - \let\pxref = \relax - \let\settitle = \relax - \let\setchapternewpage = \relax - \let\setchapterstyle = \relax - \let\everyheading = \relax - \let\evenheading = \relax - \let\oddheading = \relax - \let\everyfooting = \relax - \let\evenfooting = \relax - \let\oddfooting = \relax - \let\headings = \relax - \let\include = \relax - \let\lowersections = \relax - \let\down = \relax - \let\raisesections = \relax - \let\up = \relax - \let\set = \relax - \let\clear = \relax - \let\item = \relax - } - - % Ignore @ignore ... @end ignore. - % - \def\ignore{\doignore{ignore}} - - % Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text. - % - \def\ifinfo{\doignore{ifinfo}} - \def\ifhtml{\doignore{ifhtml}} - \def\ifnottex{\doignore{ifnottex}} - \def\html{\doignore{html}} - \def\menu{\doignore{menu}} - \def\direntry{\doignore{direntry}} - - % @dircategory CATEGORY -- specify a category of the dir file - % which this file should belong to. Ignore this in TeX. - \let\dircategory = \comment - - % Ignore text until a line `@end #1'. - % - \def\doignore#1{\begingroup - % Don't complain about control sequences we have declared \outer. - \ignoresections - % - % Define a command to swallow text until we reach `@end #1'. - % This @ is a catcode 12 token (that is the normal catcode of @ in - % this texinfo.tex file). We change the catcode of @ below to match. - \long\def\doignoretext##1@end #1{\enddoignore}% - % - % Make sure that spaces turn into tokens that match what \doignoretext wants. - \catcode32 = 10 - % - % Ignore braces, too, so mismatched braces don't cause trouble. - \catcode`\{ = 9 - \catcode`\} = 9 - % - % We must not have @c interpreted as a control sequence. - \catcode`\@ = 12 - % - % Make the letter c a comment character so that the rest of the line - % will be ignored. This way, the document can have (for example) - % @c @end ifinfo - % and the @end ifinfo will be properly ignored. - % (We've just changed @ to catcode 12.) - \catcode`\c = 14 - % - % And now expand that command. - \doignoretext - } - - % What we do to finish off ignored text. - % - \def\enddoignore{\endgroup\ignorespaces}% - - \newif\ifwarnedobs\warnedobsfalse - \def\obstexwarn{% - \ifwarnedobs\relax\else - % We need to warn folks that they may have trouble with TeX 3.0. - % This uses \immediate\write16 rather than \message to get newlines. - \immediate\write16{} - \immediate\write16{WARNING: for users of Unix TeX 3.0!} - \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).} - \immediate\write16{If you are running another version of TeX, relax.} - \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.} - \immediate\write16{ Then upgrade your TeX installation if you can.} - \immediate\write16{ (See ftp://ftp.gnu.org/pub/gnu/TeX.README.)} - \immediate\write16{If you are stuck with version 3.0, run the} - \immediate\write16{ script ``tex3patch'' from the Texinfo distribution} - \immediate\write16{ to use a workaround.} - \immediate\write16{} - \global\warnedobstrue - \fi - } - - % **In TeX 3.0, setting text in \nullfont hangs tex. For a - % workaround (which requires the file ``dummy.tfm'' to be installed), - % uncomment the following line: - %%%%%\font\nullfont=dummy\let\obstexwarn=\relax - - % Ignore text, except that we keep track of conditional commands for - % purposes of nesting, up to an `@end #1' command. - % - \def\nestedignore#1{% - \obstexwarn - % We must actually expand the ignored text to look for the @end - % command, so that nested ignore constructs work. Thus, we put the - % text into a \vbox and then do nothing with the result. To minimize - % the change of memory overflow, we follow the approach outlined on - % page 401 of the TeXbook: make the current font be a dummy font. - % - \setbox0 = \vbox\bgroup - % Don't complain about control sequences we have declared \outer. - \ignoresections - % - % Define `@end #1' to end the box, which will in turn undefine the - % @end command again. - \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}% - % - % We are going to be parsing Texinfo commands. Most cause no - % trouble when they are used incorrectly, but some commands do - % complicated argument parsing or otherwise get confused, so we - % undefine them. - % - % We can't do anything about stray @-signs, unfortunately; - % they'll produce `undefined control sequence' errors. - \ignoremorecommands - % - % Set the current font to be \nullfont, a TeX primitive, and define - % all the font commands to also use \nullfont. We don't use - % dummy.tfm, as suggested in the TeXbook, because not all sites - % might have that installed. Therefore, math mode will still - % produce output, but that should be an extremely small amount of - % stuff compared to the main input. - % - \nullfont - \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont - \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont - \let\tensf=\nullfont - % Similarly for index fonts (mostly for their use in smallexample). - \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont - \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont - \let\smallsf=\nullfont - % - % Don't complain when characters are missing from the fonts. - \tracinglostchars = 0 - % - % Don't bother to do space factor calculations. - \frenchspacing - % - % Don't report underfull hboxes. - \hbadness = 10000 - % - % Do minimal line-breaking. - \pretolerance = 10000 - % - % Do not execute instructions in @tex - \def\tex{\doignore{tex}}% - % Do not execute macro definitions. - % `c' is a comment character, so the word `macro' will get cut off. - \def\macro{\doignore{ma}}% - } - - % @set VAR sets the variable VAR to an empty value. - % @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. - % - % Since we want to separate VAR from REST-OF-LINE (which might be - % empty), we can't just use \parsearg; we have to insert a space of our - % own to delimit the rest of the line, and then take it out again if we - % didn't need it. Make sure the catcode of space is correct to avoid - % losing inside @example, for instance. - % - \def\set{\begingroup\catcode` =10 - \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. - \parsearg\setxxx} - \def\setxxx#1{\setyyy#1 \endsetyyy} - \def\setyyy#1 #2\endsetyyy{% - \def\temp{#2}% - \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty - \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted. - \fi - \endgroup - } - % Can't use \xdef to pre-expand #2 and save some time, since \temp or - % \next or other control sequences that we've defined might get us into - % an infinite loop. Consider `@set foo @cite{bar}'. - \def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}} - - % @clear VAR clears (i.e., unsets) the variable VAR. - % - \def\clear{\parsearg\clearxxx} - \def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax} - - % @value{foo} gets the text saved in variable foo. - { - \catcode`\_ = \active - % - % We might end up with active _ or - characters in the argument if - % we're called from @code, as @code{@value{foo-bar_}}. So \let any - % such active characters to their normal equivalents. - \gdef\value{\begingroup - \catcode`\-=12 \catcode`\_=12 - \indexbreaks \let_\normalunderscore - \valuexxx} - } - \def\valuexxx#1{\expandablevalue{#1}\endgroup} - - % We have this subroutine so that we can handle at least some @value's - % properly in indexes (we \let\value to this in \indexdummies). Ones - % whose names contain - or _ still won't work, but we can't do anything - % about that. The command has to be fully expandable, since the result - % winds up in the index file. This means that if the variable's value - % contains other Texinfo commands, it's almost certain it will fail - % (although perhaps we could fix that with sufficient work to do a - % one-level expansion on the result, instead of complete). - % - \def\expandablevalue#1{% - \expandafter\ifx\csname SET#1\endcsname\relax - {[No value for ``#1'']}% - \else - \csname SET#1\endcsname - \fi - } - - % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined - % with @set. - % - \def\ifset{\parsearg\ifsetxxx} - \def\ifsetxxx #1{% - \expandafter\ifx\csname SET#1\endcsname\relax - \expandafter\ifsetfail - \else - \expandafter\ifsetsucceed - \fi - } - \def\ifsetsucceed{\conditionalsucceed{ifset}} - \def\ifsetfail{\nestedignore{ifset}} - \defineunmatchedend{ifset} - - % @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been - % defined with @set, or has been undefined with @clear. - % - \def\ifclear{\parsearg\ifclearxxx} - \def\ifclearxxx #1{% - \expandafter\ifx\csname SET#1\endcsname\relax - \expandafter\ifclearsucceed - \else - \expandafter\ifclearfail - \fi - } - \def\ifclearsucceed{\conditionalsucceed{ifclear}} - \def\ifclearfail{\nestedignore{ifclear}} - \defineunmatchedend{ifclear} - - % @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text - % following, through the first @end iftex (etc.). Make `@end iftex' - % (etc.) valid only after an @iftex. - % - \def\iftex{\conditionalsucceed{iftex}} - \def\ifnothtml{\conditionalsucceed{ifnothtml}} - \def\ifnotinfo{\conditionalsucceed{ifnotinfo}} - \defineunmatchedend{iftex} - \defineunmatchedend{ifnothtml} - \defineunmatchedend{ifnotinfo} - - % We can't just want to start a group at @iftex (for example) and end it - % at @end iftex, since then @set commands inside the conditional have no - % effect (they'd get reverted at the end of the group). So we must - % define \Eiftex to redefine itself to be its previous value. (We can't - % just define it to fail again with an ``unmatched end'' error, since - % the @ifset might be nested.) - % - \def\conditionalsucceed#1{% - \edef\temp{% - % Remember the current value of \E#1. - \let\nece{prevE#1} = \nece{E#1}% - % - % At the `@end #1', redefine \E#1 to be its previous value. - \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}% - }% - \temp - } - - % We need to expand lots of \csname's, but we don't want to expand the - % control sequences after we've constructed them. - % - \def\nece#1{\expandafter\noexpand\csname#1\endcsname} - - % @defininfoenclose. - \let\definfoenclose=\comment - - - \message{indexing,} - % Index generation facilities - - % Define \newwrite to be identical to plain tex's \newwrite - % except not \outer, so it can be used within \newindex. - {\catcode`\@=11 - \gdef\newwrite{\alloc@7\write\chardef\sixt@@n}} - - % \newindex {foo} defines an index named foo. - % It automatically defines \fooindex such that - % \fooindex ...rest of line... puts an entry in the index foo. - % It also defines \fooindfile to be the number of the output channel for - % the file that accumulates this index. The file's extension is foo. - % The name of an index should be no more than 2 characters long - % for the sake of vms. - % - \def\newindex#1{% - \iflinks - \expandafter\newwrite \csname#1indfile\endcsname - \openout \csname#1indfile\endcsname \jobname.#1 % Open the file - \fi - \expandafter\xdef\csname#1index\endcsname{% % Define @#1index - \noexpand\doindex{#1}} - } - - % @defindex foo == \newindex{foo} - % - \def\defindex{\parsearg\newindex} - - % Define @defcodeindex, like @defindex except put all entries in @code. - % - \def\defcodeindex{\parsearg\newcodeindex} - % - \def\newcodeindex#1{% - \iflinks - \expandafter\newwrite \csname#1indfile\endcsname - \openout \csname#1indfile\endcsname \jobname.#1 - \fi - \expandafter\xdef\csname#1index\endcsname{% - \noexpand\docodeindex{#1}}% - } - - - % @synindex foo bar makes index foo feed into index bar. - % Do this instead of @defindex foo if you don't want it as a separate index. - % - % @syncodeindex foo bar similar, but put all entries made for index foo - % inside @code. - % - \def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} - \def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} - - % #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), - % #3 the target index (bar). - \def\dosynindex#1#2#3{% - % Only do \closeout if we haven't already done it, else we'll end up - % closing the target index. - \expandafter \ifx\csname donesynindex#2\endcsname \undefined - % The \closeout helps reduce unnecessary open files; the limit on the - % Acorn RISC OS is a mere 16 files. - \expandafter\closeout\csname#2indfile\endcsname - \expandafter\let\csname\donesynindex#2\endcsname = 1 - \fi - % redefine \fooindfile: - \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname - \expandafter\let\csname#2indfile\endcsname=\temp - % redefine \fooindex: - \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% - } - - % Define \doindex, the driver for all \fooindex macros. - % Argument #1 is generated by the calling \fooindex macro, - % and it is "foo", the name of the index. - - % \doindex just uses \parsearg; it calls \doind for the actual work. - % This is because \doind is more useful to call from other macros. - - % There is also \dosubind {index}{topic}{subtopic} - % which makes an entry in a two-level index such as the operation index. - - \def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} - \def\singleindexer #1{\doind{\indexname}{#1}} - - % like the previous two, but they put @code around the argument. - \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} - \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} - - \def\indexdummies{% - \def\ { }% - % Take care of the plain tex accent commands. - \def\"{\realbackslash "}% - \def\`{\realbackslash `}% - \def\'{\realbackslash '}% - \def\^{\realbackslash ^}% - \def\~{\realbackslash ~}% - \def\={\realbackslash =}% - \def\b{\realbackslash b}% - \def\c{\realbackslash c}% - \def\d{\realbackslash d}% - \def\u{\realbackslash u}% - \def\v{\realbackslash v}% - \def\H{\realbackslash H}% - % Take care of the plain tex special European modified letters. - \def\oe{\realbackslash oe}% - \def\ae{\realbackslash ae}% - \def\aa{\realbackslash aa}% - \def\OE{\realbackslash OE}% - \def\AE{\realbackslash AE}% - \def\AA{\realbackslash AA}% - \def\o{\realbackslash o}% - \def\O{\realbackslash O}% - \def\l{\realbackslash l}% - \def\L{\realbackslash L}% - \def\ss{\realbackslash ss}% - % Take care of texinfo commands likely to appear in an index entry. - % (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. - % 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 }% - %\def\rm{\realbackslash rm }% - \def\sl{\realbackslash sl }% - \def\sf{\realbackslash sf}% - \def\tt{\realbackslash tt}% - \def\gtr{\realbackslash gtr}% - \def\less{\realbackslash less}% - \def\hat{\realbackslash hat}% - \def\TeX{\realbackslash TeX}% - \def\dots{\realbackslash dots }% - \def\result{\realbackslash result}% - \def\equiv{\realbackslash equiv}% - \def\expansion{\realbackslash expansion}% - \def\print{\realbackslash print}% - \def\error{\realbackslash error}% - \def\point{\realbackslash point}% - \def\copyright{\realbackslash copyright}% - \def\tclose##1{\realbackslash tclose {##1}}% - \def\code##1{\realbackslash code {##1}}% - \def\uref##1{\realbackslash uref {##1}}% - \def\url##1{\realbackslash url {##1}}% - \def\env##1{\realbackslash env {##1}}% - \def\command##1{\realbackslash command {##1}}% - \def\option##1{\realbackslash option {##1}}% - \def\dotless##1{\realbackslash dotless {##1}}% - \def\samp##1{\realbackslash samp {##1}}% - \def\,##1{\realbackslash ,{##1}}% - \def\t##1{\realbackslash t {##1}}% - \def\r##1{\realbackslash r {##1}}% - \def\i##1{\realbackslash i {##1}}% - \def\b##1{\realbackslash b {##1}}% - \def\sc##1{\realbackslash sc {##1}}% - \def\cite##1{\realbackslash cite {##1}}% - \def\key##1{\realbackslash key {##1}}% - \def\file##1{\realbackslash file {##1}}% - \def\var##1{\realbackslash var {##1}}% - \def\kbd##1{\realbackslash kbd {##1}}% - \def\dfn##1{\realbackslash dfn {##1}}% - \def\emph##1{\realbackslash emph {##1}}% - \def\acronym##1{\realbackslash acronym {##1}}% - % - % Handle some cases of @value -- where the variable name does not - % contain - or _, and the value does not contain any - % (non-fully-expandable) commands. - \let\value = \expandablevalue - % - \unsepspaces - % Turn off macro expansion - \turnoffmacros - } - - % If an index command is used in an @example environment, any spaces - % therein should become regular spaces in the raw index file, not the - % expansion of \tie (\\leavevmode \penalty \@M \ ). - {\obeyspaces - \gdef\unsepspaces{\obeyspaces\let =\space}} - - % \indexnofonts no-ops all font-change commands. - % This is used when outputting the strings to sort the index by. - \def\indexdummyfont#1{#1} - \def\indexdummytex{TeX} - \def\indexdummydots{...} - - \def\indexnofonts{% - % Just ignore accents. - \let\,=\indexdummyfont - \let\"=\indexdummyfont - \let\`=\indexdummyfont - \let\'=\indexdummyfont - \let\^=\indexdummyfont - \let\~=\indexdummyfont - \let\==\indexdummyfont - \let\b=\indexdummyfont - \let\c=\indexdummyfont - \let\d=\indexdummyfont - \let\u=\indexdummyfont - \let\v=\indexdummyfont - \let\H=\indexdummyfont - \let\dotless=\indexdummyfont - % Take care of the plain tex special European modified letters. - \def\oe{oe}% - \def\ae{ae}% - \def\aa{aa}% - \def\OE{OE}% - \def\AE{AE}% - \def\AA{AA}% - \def\o{o}% - \def\O{O}% - \def\l{l}% - \def\L{L}% - \def\ss{ss}% - \let\w=\indexdummyfont - \let\t=\indexdummyfont - \let\r=\indexdummyfont - \let\i=\indexdummyfont - \let\b=\indexdummyfont - \let\emph=\indexdummyfont - \let\strong=\indexdummyfont - \let\cite=\indexdummyfont - \let\sc=\indexdummyfont - %Don't no-op \tt, since it isn't a user-level command - % and is used in the definitions of the active chars like <, >, |... - %\let\tt=\indexdummyfont - \let\tclose=\indexdummyfont - \let\code=\indexdummyfont - \let\url=\indexdummyfont - \let\uref=\indexdummyfont - \let\env=\indexdummyfont - \let\acronym=\indexdummyfont - \let\command=\indexdummyfont - \let\option=\indexdummyfont - \let\file=\indexdummyfont - \let\samp=\indexdummyfont - \let\kbd=\indexdummyfont - \let\key=\indexdummyfont - \let\var=\indexdummyfont - \let\TeX=\indexdummytex - \let\dots=\indexdummydots - \def\@{@}% - } - - % To define \realbackslash, we must make \ not be an escape. - % We must first make another character (@) an escape - % so we do not become unable to do a definition. - - {\catcode`\@=0 \catcode`\\=\other - @gdef@realbackslash{\}} - - \let\indexbackslash=0 %overridden during \printindex. - \let\SETmarginindex=\relax % put index entries in margin (undocumented)? - - % For \ifx comparisons. - \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 - \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}% - \fi - {% - \count255=\lastpenalty - {% - \indexdummies % Must do this here, since \bf, etc expand at this stage - \escapechar=`\\ - {% - \let\folio = 0% We will expand all macros now EXCEPT \folio. - \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now - % so it will be output as is; and it will print as backslash. - % - \def\thirdarg{#3}% - % - % If third arg is present, precede it with space in sort key. - \ifx\thirdarg\emptymacro - \let\subentry = \empty - \else - \def\subentry{ #3}% - \fi - % - % First process the index entry with all font commands turned - % off to get the string to sort by. - {\indexnofonts \xdef\indexsorttmp{#2\subentry}}% - % - % Now the real index entry with the fonts. - \toks0 = {#2}% - % - % If the third (subentry) arg is present, add it to the index - % line to write. - \ifx\thirdarg\emptymacro \else - \toks0 = \expandafter{\the\toks0{#3}}% - \fi - % - % Set up the complete index entry, with both the sort key and - % the original text, including any font commands. We write - % three arguments to \entry to the .?? file (four in the - % subentry case), texindex reduces to two when writing the .??s - % sorted result. - \edef\temp{% - \write\csname#1indfile\endcsname{% - \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}% - }% - % - % If a skip is the last thing on the list now, preserve it - % by backing up by \lastskip, doing the \write, then inserting - % the skip again. Otherwise, the whatsit generated by the - % \write will make \lastskip zero. The result is that sequences - % like this: - % @end defun - % @tindex whatever - % @defun ... - % 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 - \ifdim\lastskip = 0pt \else \nobreak\vskip-\lastskip \fi - \fi - % - \temp % do the write - % - % - \ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi - \fi - }% - }% - \penalty\count255 - }% - } - - % The index entry written in the file actually looks like - % \entry {sortstring}{page}{topic} - % or - % \entry {sortstring}{page}{topic}{subtopic} - % The texindex program reads in these files and writes files - % containing these kinds of lines: - % \initial {c} - % before the first topic whose initial is c - % \entry {topic}{pagelist} - % for a topic that is used without subtopics - % \primary {topic} - % for the beginning of a topic that is used with subtopics - % \secondary {subtopic}{pagelist} - % for each subtopic. - - % Define the user-accessible indexing commands - % @findex, @vindex, @kindex, @cindex. - - \def\findex {\fnindex} - \def\kindex {\kyindex} - \def\cindex {\cpindex} - \def\vindex {\vrindex} - \def\tindex {\tpindex} - \def\pindex {\pgindex} - - \def\cindexsub {\begingroup\obeylines\cindexsub} - {\obeylines % - \gdef\cindexsub "#1" #2^^M{\endgroup % - \dosubind{cp}{#2}{#1}}} - - % Define the macros used in formatting output of the sorted index material. - - % @printindex causes a particular index (the ??s file) to get printed. - % It does not print any chapter heading (usually an @unnumbered). - % - \def\printindex{\parsearg\doprintindex} - \def\doprintindex#1{\begingroup - \dobreak \chapheadingskip{10000}% - % - \smallfonts \rm - \tolerance = 9500 - \indexbreaks - % - % See if the index file exists and is nonempty. - % Change catcode of @ here so that if the index file contains - % \initial {@} - % as its first line, TeX doesn't complain about mismatched braces - % (because it thinks @} is a control sequence). - \catcode`\@ = 11 - \openin 1 \jobname.#1s - \ifeof 1 - % \enddoublecolumns gets confused if there is no text in the index, - % 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. - \putwordIndexNonexistent - \else - % - % If the index file exists but is empty, then \openin leaves \ifeof - % false. We have to make TeX try to read something from the file, so - % it can discover if there is anything in it. - \read 1 to \temp - \ifeof 1 - \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 - % to make right now. - \def\indexbackslash{\rawbackslashxx}% - \catcode`\\ = 0 - \escapechar = `\\ - \begindoublecolumns - \input \jobname.#1s - \enddoublecolumns - \fi - \fi - \closein 1 - \endgroup} - - % These macros are used by the sorted index file itself. - % Change them to control the appearance of the index. - - \def\initial#1{{% - % Some minor font changes for the special characters. - \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt - % - % 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 - % - % Typeset the initial. Making this add up to a whole number of - % 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}% - \vskip .33\baselineskip plus .1\baselineskip - % - % Do our best not to break after the initial. - \nobreak - }} - - % This typesets a paragraph consisting of #1, dot leaders, and then #2 - % flush to the right margin. It is used for index and table of contents - % entries. The paragraph is indented by \leftskip. - % - \def\entry#1#2{\begingroup - % - % Start a new paragraph if necessary, so our assignments below can't - % affect previous text. - \par - % - % Do not fill out the last line with white space. - \parfillskip = 0in - % - % No extra space above this paragraph. - \parskip = 0in - % - % Do not prefer a separate line ending with a hyphen to fewer lines. - \finalhyphendemerits = 0 - % - % \hangindent is only relevant when the entry text and page number - % don't both fit on one line. In that case, bob suggests starting the - % dots pretty far over on the line. Unfortunately, a large - % indentation looks wrong when the entry text itself is broken across - % lines. So we use a small indentation and put up with long leaders. - % - % \hangafter is reset to 1 (which is the value we want) at the start - % of each paragraph, so we need not do anything with that. - \hangindent = 2em - % - % When the entry text needs to be broken, just fill out the first line - % with blank space. - \rightskip = 0pt plus1fil - % - % A bit of stretch before each entry for the benefit of balancing columns. - \vskip 0pt plus1pt - % - % Start a ``paragraph'' for the index entry so the line breaking - % parameters we've set above will have an effect. - \noindent - % - % Insert the text of the index entry. TeX will do line-breaking on it. - #1% - % The following is kludged to not output a line of dots in the index if - % there are no page numbers. The next person who breaks this will be - % cursed by a Unix daemon. - \def\tempa{{\rm }}% - \def\tempb{#2}% - \edef\tempc{\tempa}% - \edef\tempd{\tempb}% - \ifx\tempc\tempd\ \else% - % - % If we must, put the page number on a line of its own, and fill out - % this line with blank space. (The \hfil is overwhelmed with the - % fill leaders glue in \indexdotfill if the page number does fit.) - \hfil\penalty50 - \null\nobreak\indexdotfill % Have leaders before the page number. - % - % The `\ ' here is removed by the implicit \unskip that TeX does as - % part of (the primitive) \par. Without it, a spurious underfull - % \hbox ensues. - \ifpdf - \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. - \else - \ #2% The page number ends the paragraph. - \fi - \fi% - \par - \endgroup} - - % Like \dotfill except takes at least 1 em. - \def\indexdotfill{\cleaders - \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill} - - \def\primary #1{\line{#1\hfil}} - - \newskip\secondaryindent \secondaryindent=0.5cm - \def\secondary#1#2{{% - \parfillskip=0in - \parskip=0in - \hangindent=1in - \hangafter=1 - \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill - \ifpdf - \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. - \else - #2 - \fi - \par - }} - - % Define two-column mode, which we use to typeset indexes. - % Adapted from the TeXbook, page 416, which is to say, - % the manmac.tex format used to print the TeXbook itself. - \catcode`\@=11 - - \newbox\partialpage - \newdimen\doublecolumnhsize - - \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns - % Grab any single-column material above us. - \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 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 - % - \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}% - % - % Change the page size parameters. We could do this once outside this - % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 - % format, but then we repeat the same computation. Repeating a couple - % of assignments once per index is clearly meaningless for the - % execution time, so we may as well do it in one place. - % - % First we halve the line length, less a little for the gutter between - % the columns. We compute the gutter based on the line length, so it - % changes automatically with the paper format. The magic constant - % below is chosen so that the gutter has the same value (well, +-<1pt) - % as it did when we hard-coded it. - % - % We put the result in a separate register, \doublecolumhsize, so we - % can restore it in \pagesofar, after \hsize itself has (potentially) - % been clobbered. - % - \doublecolumnhsize = \hsize - \advance\doublecolumnhsize by -.04154\hsize - \divide\doublecolumnhsize by 2 - \hsize = \doublecolumnhsize - % - % Double the \vsize as well. (We don't need a separate register here, - % since nobody clobbers \vsize.) - \vsize = 2\vsize - } - - % 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 - % (undoubled) page height minus any material left over from the - % previous page. - \dimen@ = \vsize - \divide\dimen@ by 2 - \advance\dimen@ by -\ht\partialpage - % - % box0 will be the left-hand column, box2 the right. - \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ - \onepageout\pagesofar - \unvbox255 - \penalty\outputpenalty - } - % - % Re-output the contents of the output page -- any previous material, - % followed by the two boxes we just split, in box0 and box2. - \def\pagesofar{% - \unvbox\partialpage - % - \hsize = \doublecolumnhsize - \wd0=\hsize \wd2=\hsize - \hbox to\pagewidth{\box0\hfil\box2}% - } - % - % All done with double columns. - \def\enddoublecolumns{% - \output = {% - % Split the last of the double-column material. Leave it on the - % current page, no automatic page break. - \balancecolumns - % - % If we end up splitting too much material for the current page, - % though, there will be another page break right after this \output - % invocation ends. Having called \balancecolumns once, we do not - % want to call it again. Therefore, reset \output to its normal - % definition right away. (We hope \balancecolumns will never be - % called on to balance too much material, but if it is, this makes - % the output somewhat more palatable.) - \global\output = {\onepageout{\pagecontents\PAGE}}% - }% - \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 - } - % - % Called at the end of the double column material. - \def\balancecolumns{% - \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. - \dimen@ = \ht0 - \advance\dimen@ by \topskip - \advance\dimen@ by-\baselineskip - \divide\dimen@ by 2 % target to split to - %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}% - \splittopskip = \topskip - % Loop until we get a decent breakpoint. - {% - \vbadness = 10000 - \loop - \global\setbox3 = \copy0 - \global\setbox1 = \vsplit3 to \dimen@ - \ifdim\ht3>\dimen@ - \global\advance\dimen@ by 1pt - \repeat - }% - %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}% - \setbox0=\vbox to\dimen@{\unvbox1}% - \setbox2=\vbox to\dimen@{\unvbox3}% - % - \pagesofar - } - \catcode`\@ = \other - - - \message{sectioning,} - % Chapters, sections, etc. - - \newcount\chapno - \newcount\secno \secno=0 - \newcount\subsecno \subsecno=0 - \newcount\subsubsecno \subsubsecno=0 - - % This counter is funny since it counts through charcodes of letters A, B, ... - \newcount\appendixno \appendixno = `\@ - % \def\appendixletter{\char\the\appendixno} - % We do the following for the sake of pdftex, which needs the actual - % letter in the expansion, not just typeset. - \def\appendixletter{% - \ifnum\appendixno=`A A% - \else\ifnum\appendixno=`B B% - \else\ifnum\appendixno=`C C% - \else\ifnum\appendixno=`D D% - \else\ifnum\appendixno=`E E% - \else\ifnum\appendixno=`F F% - \else\ifnum\appendixno=`G G% - \else\ifnum\appendixno=`H H% - \else\ifnum\appendixno=`I I% - \else\ifnum\appendixno=`J J% - \else\ifnum\appendixno=`K K% - \else\ifnum\appendixno=`L L% - \else\ifnum\appendixno=`M M% - \else\ifnum\appendixno=`N N% - \else\ifnum\appendixno=`O O% - \else\ifnum\appendixno=`P P% - \else\ifnum\appendixno=`Q Q% - \else\ifnum\appendixno=`R R% - \else\ifnum\appendixno=`S S% - \else\ifnum\appendixno=`T T% - \else\ifnum\appendixno=`U U% - \else\ifnum\appendixno=`V V% - \else\ifnum\appendixno=`W W% - \else\ifnum\appendixno=`X X% - \else\ifnum\appendixno=`Y Y% - \else\ifnum\appendixno=`Z Z% - % The \the is necessary, despite appearances, because \appendixletter is - % expanded while writing the .toc file. \char\appendixno is not - % expandable, thus it is written literally, thus all appendixes come out - % with the same letter (or @) in the toc without it. - \else\char\the\appendixno - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} - - % Each @chapter defines this as the name of the chapter. - % page headings and footings can use it. @section does likewise. - \def\thischapter{} - \def\thissection{} - - \newcount\absseclevel % used to calculate proper heading level - \newcount\secbase\secbase=0 % @raise/lowersections modify this count - - % @raisesections: treat @section as chapter, @subsection as section, etc. - \def\raisesections{\global\advance\secbase by -1} - \let\up=\raisesections % original BFox name - - % @lowersections: treat @chapter as section, @section as subsection, etc. - \def\lowersections{\global\advance\secbase by 1} - \let\down=\lowersections % original BFox name - - % Choose a numbered-heading macro - % #1 is heading level if unmodified by @raisesections or @lowersections - % #2 is text for heading - \def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 - \ifcase\absseclevel - \chapterzzz{#2} - \or - \seczzz{#2} - \or - \numberedsubseczzz{#2} - \or - \numberedsubsubseczzz{#2} - \else - \ifnum \absseclevel<0 - \chapterzzz{#2} - \else - \numberedsubsubseczzz{#2} - \fi - \fi - } - - % like \numhead, but chooses appendix heading levels - \def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 - \ifcase\absseclevel - \appendixzzz{#2} - \or - \appendixsectionzzz{#2} - \or - \appendixsubseczzz{#2} - \or - \appendixsubsubseczzz{#2} - \else - \ifnum \absseclevel<0 - \appendixzzz{#2} - \else - \appendixsubsubseczzz{#2} - \fi - \fi - } - - % like \numhead, but chooses numberless heading levels - \def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 - \ifcase\absseclevel - \unnumberedzzz{#2} - \or - \unnumberedseczzz{#2} - \or - \unnumberedsubseczzz{#2} - \or - \unnumberedsubsubseczzz{#2} - \else - \ifnum \absseclevel<0 - \unnumberedzzz{#2} - \else - \unnumberedsubsubseczzz{#2} - \fi - \fi - } - - % @chapter, @appendix, @unnumbered. - \def\thischaptername{No Chapter Title} - \outer\def\chapter{\parsearg\chapteryyy} - \def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz - \def\chapterzzz #1{% - \secno=0 \subsecno=0 \subsubsecno=0 - \global\advance \chapno by 1 \message{\putwordChapter\space \the\chapno}% - \chapmacro {#1}{\the\chapno}% - \gdef\thissection{#1}% - \gdef\thischaptername{#1}% - % We don't substitute the actual chapter name into \thischapter - % because we don't want its macros evaluated now. - \xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}% - \toks0 = {#1}% - \edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}% - {\the\chapno}}}% - \temp - \donoderef - \global\let\section = \numberedsec - \global\let\subsection = \numberedsubsec - \global\let\subsubsection = \numberedsubsubsec - } - - \outer\def\appendix{\parsearg\appendixyyy} - \def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz - \def\appendixzzz #1{% - \secno=0 \subsecno=0 \subsubsecno=0 - \global\advance \appendixno by 1 - \message{\putwordAppendix\space \appendixletter}% - \chapmacro {#1}{\putwordAppendix{} \appendixletter}% - \gdef\thissection{#1}% - \gdef\thischaptername{#1}% - \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% - \toks0 = {#1}% - \edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}% - {\putwordAppendix{} \appendixletter}}}% - \temp - \appendixnoderef - \global\let\section = \appendixsec - \global\let\subsection = \appendixsubsec - \global\let\subsubsection = \appendixsubsubsec - } - - % @centerchap is like @unnumbered, but the heading is centered. - \outer\def\centerchap{\parsearg\centerchapyyy} - \def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}} - - % @top is like @unnumbered. - \outer\def\top{\parsearg\unnumberedyyy} - - \outer\def\unnumbered{\parsearg\unnumberedyyy} - \def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz - \def\unnumberedzzz #1{% - \secno=0 \subsecno=0 \subsubsecno=0 - % - % This used to be simply \message{#1}, but TeX fully expands the - % argument to \message. Therefore, if #1 contained @-commands, TeX - % expanded them. For example, in `@unnumbered The @cite{Book}', TeX - % expanded @cite (which turns out to cause errors because \cite is meant - % to be executed, not expanded). - % - % Anyway, we don't want the fully-expanded definition of @cite to appear - % as a result of the \message, we just want `@cite' itself. We use - % \the to achieve this: TeX expands \the only once, - % simply yielding the contents of . (We also do this for - % the toc entries.) - \toks0 = {#1}\message{(\the\toks0)}% - % - \unnumbchapmacro {#1}% - \gdef\thischapter{#1}\gdef\thissection{#1}% - \toks0 = {#1}% - \edef\temp{\noexpand\writetocentry{\realbackslash unnumbchapentry{\the\toks0}}}% - \temp - \unnumbnoderef - \global\let\section = \unnumberedsec - \global\let\subsection = \unnumberedsubsec - \global\let\subsubsection = \unnumberedsubsubsec - } - - % Sections. - \outer\def\numberedsec{\parsearg\secyyy} - \def\secyyy #1{\numhead1{#1}} % normally calls seczzz - \def\seczzz #1{% - \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % - \gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}% - \toks0 = {#1}% - \edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}% - {\the\chapno}{\the\secno}}}% - \temp - \donoderef - \nobreak - } - - \outer\def\appendixsection{\parsearg\appendixsecyyy} - \outer\def\appendixsec{\parsearg\appendixsecyyy} - \def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz - \def\appendixsectionzzz #1{% - \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % - \gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}% - \toks0 = {#1}% - \edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}% - {\appendixletter}{\the\secno}}}% - \temp - \appendixnoderef - \nobreak - } - - \outer\def\unnumberedsec{\parsearg\unnumberedsecyyy} - \def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz - \def\unnumberedseczzz #1{% - \plainsecheading {#1}\gdef\thissection{#1}% - \toks0 = {#1}% - \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry{\the\toks0}}}% - \temp - \unnumbnoderef - \nobreak - } - - % Subsections. - \outer\def\numberedsubsec{\parsearg\numberedsubsecyyy} - \def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz - \def\numberedsubseczzz #1{% - \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % - \subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}% - \toks0 = {#1}% - \edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}% - {\the\chapno}{\the\secno}{\the\subsecno}}}% - \temp - \donoderef - \nobreak - } - - \outer\def\appendixsubsec{\parsearg\appendixsubsecyyy} - \def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz - \def\appendixsubseczzz #1{% - \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % - \subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}% - \toks0 = {#1}% - \edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}% - {\appendixletter}{\the\secno}{\the\subsecno}}}% - \temp - \appendixnoderef - \nobreak - } - - \outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy} - \def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz - \def\unnumberedsubseczzz #1{% - \plainsubsecheading {#1}\gdef\thissection{#1}% - \toks0 = {#1}% - \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry% - {\the\toks0}}}% - \temp - \unnumbnoderef - \nobreak - } - - % Subsubsections. - \outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy} - \def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz - \def\numberedsubsubseczzz #1{% - \gdef\thissection{#1}\global\advance \subsubsecno by 1 % - \subsubsecheading {#1} - {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}% - \toks0 = {#1}% - \edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}% - {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}% - \temp - \donoderef - \nobreak - } - - \outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy} - \def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz - \def\appendixsubsubseczzz #1{% - \gdef\thissection{#1}\global\advance \subsubsecno by 1 % - \subsubsecheading {#1} - {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}% - \toks0 = {#1}% - \edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}% - {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}% - \temp - \appendixnoderef - \nobreak - } - - \outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy} - \def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz - \def\unnumberedsubsubseczzz #1{% - \plainsubsubsecheading {#1}\gdef\thissection{#1}% - \toks0 = {#1}% - \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry% - {\the\toks0}}}% - \temp - \unnumbnoderef - \nobreak - } - - % These are variants which are not "outer", so they can appear in @ifinfo. - % Actually, they should now be obsolete; ordinary section commands should work. - \def\infotop{\parsearg\unnumberedzzz} - \def\infounnumbered{\parsearg\unnumberedzzz} - \def\infounnumberedsec{\parsearg\unnumberedseczzz} - \def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz} - \def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz} - - \def\infoappendix{\parsearg\appendixzzz} - \def\infoappendixsec{\parsearg\appendixseczzz} - \def\infoappendixsubsec{\parsearg\appendixsubseczzz} - \def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz} - - \def\infochapter{\parsearg\chapterzzz} - \def\infosection{\parsearg\sectionzzz} - \def\infosubsection{\parsearg\subsectionzzz} - \def\infosubsubsection{\parsearg\subsubsectionzzz} - - % These macros control what the section commands do, according - % to what kind of chapter we are in (ordinary, appendix, or unnumbered). - % Define them by default for a numbered chapter. - \global\let\section = \numberedsec - \global\let\subsection = \numberedsubsec - \global\let\subsubsection = \numberedsubsubsec - - % Define @majorheading, @heading and @subheading - - % NOTE on use of \vbox for chapter headings, section headings, and such: - % 1) We use \vbox rather than the earlier \line to permit - % overlong headings to fold. - % 2) \hyphenpenalty is set to 10000 because hyphenation in a - % heading is obnoxious; this forbids it. - % 3) Likewise, headings look best if no \parindent is used, and - % if justification is not attempted. Hence \raggedright. - - - \def\majorheading{\parsearg\majorheadingzzz} - \def\majorheadingzzz #1{% - {\advance\chapheadingskip by 10pt \chapbreak }% - {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\penalty 200} - - \def\chapheading{\parsearg\chapheadingzzz} - \def\chapheadingzzz #1{\chapbreak % - {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\penalty 200} - - % @heading, @subheading, @subsubheading. - \def\heading{\parsearg\plainsecheading} - \def\subheading{\parsearg\plainsubsecheading} - \def\subsubheading{\parsearg\plainsubsubsecheading} - - % These macros generate a chapter, section, etc. heading only - % (including whitespace, linebreaking, etc. around it), - % given all the information in convenient, parsed form. - - %%% Args are the skip and penalty (usually negative) - \def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} - - \def\setchapterstyle #1 {\csname CHAPF#1\endcsname} - - %%% Define plain chapter starts, and page on/off switching for it - % Parameter controlling skip before chapter headings (if needed) - - \newskip\chapheadingskip - - \def\chapbreak{\dobreak \chapheadingskip {-4000}} - \def\chappager{\par\vfill\supereject} - \def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi} - - \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} - - \def\CHAPPAGoff{% - \global\let\contentsalignmacro = \chappager - \global\let\pchapsepmacro=\chapbreak - \global\let\pagealignmacro=\chappager} - - \def\CHAPPAGon{% - \global\let\contentsalignmacro = \chappager - \global\let\pchapsepmacro=\chappager - \global\let\pagealignmacro=\chappager - \global\def\HEADINGSon{\HEADINGSsingle}} - - \def\CHAPPAGodd{ - \global\let\contentsalignmacro = \chapoddpage - \global\let\pchapsepmacro=\chapoddpage - \global\let\pagealignmacro=\chapoddpage - \global\def\HEADINGSon{\HEADINGSdouble}} - - \CHAPPAGon - - \def\CHAPFplain{ - \global\let\chapmacro=\chfplain - \global\let\unnumbchapmacro=\unnchfplain - \global\let\centerchapmacro=\centerchfplain} - - % Plain chapter opening. - % #1 is the text, #2 the chapter number or empty if unnumbered. - \def\chfplain#1#2{% - \pchapsepmacro - {% - \chapfonts \rm - \def\chapnum{#2}% - \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}% - \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright - \hangindent = \wd0 \centerparametersmaybe - \unhbox0 #1\par}% - }% - \nobreak\bigskip % no page break after a chapter title - \nobreak - } - - % Plain opening for unnumbered. - \def\unnchfplain#1{\chfplain{#1}{}} - - % @centerchap -- centered and unnumbered. - \let\centerparametersmaybe = \relax - \def\centerchfplain#1{{% - \def\centerparametersmaybe{% - \advance\rightskip by 3\rightskip - \leftskip = \rightskip - \parfillskip = 0pt - }% - \chfplain{#1}{}% - }} - - \CHAPFplain % The default - - \def\unnchfopen #1{% - \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\nobreak - } - - \def\chfopen #1#2{\chapoddpage {\chapfonts - \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% - \par\penalty 5000 % - } - - \def\centerchfopen #1{% - \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt - \hfill {\rm #1}\hfill}}\bigskip \par\nobreak - } - - \def\CHAPFopen{ - \global\let\chapmacro=\chfopen - \global\let\unnumbchapmacro=\unnchfopen - \global\let\centerchapmacro=\centerchfopen} - - - % Section titles. - \newskip\secheadingskip - \def\secheadingbreak{\dobreak \secheadingskip {-1000}} - \def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}} - \def\plainsecheading#1{\sectionheading{sec}{}{#1}} - - % Subsection titles. - \newskip \subsecheadingskip - \def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}} - \def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}} - \def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}} - - % Subsubsection titles. - \let\subsubsecheadingskip = \subsecheadingskip - \let\subsubsecheadingbreak = \subsecheadingbreak - \def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}} - \def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}} - - - % Print any size section title. - % - % #1 is the section type (sec/subsec/subsubsec), #2 is the section - % number (maybe empty), #3 the text. - \def\sectionheading#1#2#3{% - {% - \expandafter\advance\csname #1headingskip\endcsname by \parskip - \csname #1headingbreak\endcsname - }% - {% - % Switch to the right set of fonts. - \csname #1fonts\endcsname \rm - % - % Only insert the separating space if we have a section number. - \def\secnum{#2}% - \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}% - % - \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright - \hangindent = \wd0 % zero if no section number - \unhbox0 #3}% - }% - \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak - } - - - \message{toc,} - % Table of contents. - \newwrite\tocfile - - % Write an entry to the toc file, opening it if necessary. - % Called from @chapter, etc. We supply {\folio} at the end of the - % argument, which will end up as the last argument to the \...entry macro. - % - % We open the .toc file here instead of at @setfilename or any other - % given time so that @contents can be put in the document anywhere. - % - \newif\iftocfileopened - \def\writetocentry#1{% - \iftocfileopened\else - \immediate\openout\tocfile = \jobname.toc - \global\tocfileopenedtrue - \fi - \iflinks \write\tocfile{#1{\folio}}\fi - } - - \newskip\contentsrightmargin \contentsrightmargin=1in - \newcount\savepageno - \newcount\lastnegativepageno \lastnegativepageno = -1 - - % 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 - % \contentsalignmacro in parallel with \pagealignmacro. - % From: Torbjorn Granlund - \contentsalignmacro - \immediate\closeout\tocfile - % - % Don't need to put `Contents' or `Short Contents' in the headline. - % It is abundantly clear what they are. - \unnumbchapmacro{#1}\def\thischapter{}% - \savepageno = \pageno - \begingroup % Set up to handle contents files properly. - \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11 - % We can't do this, because then an actual ^ in a section - % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97. - %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi - \raggedbottom % Worry more about breakpoints than the bottom. - \advance\hsize by -\contentsrightmargin % Don't use the full line length. - % - % Roman numerals for page numbers. - \ifnum \pageno>0 \pageno = \lastnegativepageno \fi - } - - - % Normal (long) toc. - \def\contents{% - \startcontents{\putwordTOC}% - \openin 1 \jobname.toc - \ifeof 1 \else - \closein 1 - \input \jobname.toc - \fi - \vfill \eject - \contentsalignmacro % in case @setchapternewpage odd is in effect - \pdfmakeoutlines - \endgroup - \lastnegativepageno = \pageno - \pageno = \savepageno - } - - % And just the chapters. - \def\summarycontents{% - \startcontents{\putwordShortTOC}% - % - \let\chapentry = \shortchapentry - \let\unnumbchapentry = \shortunnumberedentry - % We want a true roman here for the page numbers. - \secfonts - \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl - \rm - \hyphenpenalty = 10000 - \advance\baselineskip by 1pt % Open it up a little. - \def\secentry ##1##2##3##4{} - \def\unnumbsecentry ##1##2{} - \def\subsecentry ##1##2##3##4##5{} - \def\unnumbsubsecentry ##1##2{} - \def\subsubsecentry ##1##2##3##4##5##6{} - \def\unnumbsubsubsecentry ##1##2{} - \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 - } - \let\shortcontents = \summarycontents - - \ifpdf - \pdfcatalog{/PageMode /UseOutlines}% - \fi - - % These macros generate individual entries in the table of contents. - % The first argument is the chapter or section name. - % The last argument is the page number. - % The arguments in between are the chapter number, section number, ... - - % Chapter-level things, for both the long and short contents. - \def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}} - - % See comments in \dochapentry re vbox and related settings - \def\shortchapentry#1#2#3{% - \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}% - } - - % Typeset the label for a chapter or appendix for the short contents. - % The arg is, e.g. `Appendix A' for an appendix, or `3' for a chapter. - % We could simplify the code here by writing out an \appendixentry - % command in the toc file for appendices, instead of using \chapentry - % for both, but it doesn't seem worth it. - % - \newdimen\shortappendixwidth - % - \def\shortchaplabel#1{% - % Compute width of word "Appendix", may change with language. - \setbox0 = \hbox{\shortcontrm \putwordAppendix}% - \shortappendixwidth = \wd0 - % - % We typeset #1 in a box of constant width, regardless of the text of - % #1, so the chapter titles will come out aligned. - \setbox0 = \hbox{#1}% - \dimen0 = \ifdim\wd0 > \shortappendixwidth \shortappendixwidth \else 0pt \fi - % - % This space should be plenty, since a single number is .5em, and the - % widest letter (M) is 1em, at least in the Computer Modern fonts. - % (This space doesn't include the extra space that gets added after - % the label; that gets put in by \shortchapentry above.) - \advance\dimen0 by 1.1em - \hbox to \dimen0{#1\hfil}% - } - - \def\unnumbchapentry#1#2{\dochapentry{#1}{#2}} - \def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}} - - % Sections. - \def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} - \def\unnumbsecentry#1#2{\dosecentry{#1}{#2}} - - % Subsections. - \def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}} - \def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}} - - % And subsubsections. - \def\subsubsecentry#1#2#3#4#5#6{% - \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} - \def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}} - - % This parameter controls the indentation of the various levels. - \newdimen\tocindent \tocindent = 3pc - - % Now for the actual typesetting. In all these, #1 is the text and #2 is the - % page number. - % - % If the toc has to be broken over pages, we want it to be at chapters - % if at all possible; hence the \penalty. - \def\dochapentry#1#2{% - \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip - \begingroup - \chapentryfonts - \tocentry{#1}{\dopageno\bgroup#2\egroup}% - \endgroup - \nobreak\vskip .25\baselineskip plus.1\baselineskip - } - - \def\dosecentry#1#2{\begingroup - \secentryfonts \leftskip=\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% - \endgroup} - - \def\dosubsecentry#1#2{\begingroup - \subsecentryfonts \leftskip=2\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% - \endgroup} - - \def\dosubsubsecentry#1#2{\begingroup - \subsubsecentryfonts \leftskip=3\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% - \endgroup} - - % Final typesetting of a toc entry; we use the same \entry macro as for - % the index entries, but we want to suppress hyphenation here. (We - % can't do that in the \entry macro, since index entries might consist - % of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.) - \def\tocentry#1#2{\begingroup - \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks - % Do not use \turnoffactive in these arguments. Since the toc is - % typeset in cmr, so characters such as _ would come out wrong; we - % have to do the usual translation tricks. - \entry{#1}{#2}% - \endgroup} - - % Space between chapter (or whatever) number and the title. - \def\labelspace{\hskip1em \relax} - - \def\dopageno#1{{\rm #1}} - \def\doshortpageno#1{{\rm #1}} - - \def\chapentryfonts{\secfonts \rm} - \def\secentryfonts{\textfonts} - \let\subsecentryfonts = \textfonts - \let\subsubsecentryfonts = \textfonts - - - \message{environments,} - % @foo ... @end foo. - - % Since these characters are used in examples, it should be an even number of - % \tt widths. Each \tt character is 1en, so two makes it 1em. - % Furthermore, these definitions must come after we define our fonts. - \newbox\dblarrowbox \newbox\longdblarrowbox - \newbox\pushcharbox \newbox\bullbox - \newbox\equivbox \newbox\errorbox - - %{\tentt - %\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil} - %\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil} - %\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil} - %\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil} - % Adapted from the manmac format (p.420 of TeXbook) - %\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex - % depth .1ex\hfil} - %} - - % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. - \def\point{$\star$} - \def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} - \def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} - \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} - \def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} - - % Adapted from the TeXbook's \boxit. - {\tentt \global\dimen0 = 3em}% Width of the box. - \dimen2 = .55pt % Thickness of rules - % The text. (`r' is open on the right, `e' somewhat less so on the left.) - \setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt} - - \global\setbox\errorbox=\hbox to \dimen0{\hfil - \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. - \advance\hsize by -2\dimen2 % Rules. - \vbox{ - \hrule height\dimen2 - \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. - \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. - \kern3pt\vrule width\dimen2}% Space to right. - \hrule height\dimen2} - \hfil} - - % The @error{} command. - \def\error{\leavevmode\lower.7ex\copy\errorbox} - - % @tex ... @end tex escapes into raw Tex temporarily. - % One exception: @ is still an escape character, so that @end tex works. - % But \@ or @@ will get a plain tex @ character. - - \def\tex{\begingroup - \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 - \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 - \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie - \catcode `\%=14 - \catcode 43=12 % plus - \catcode`\"=12 - \catcode`\==12 - \catcode`\|=12 - \catcode`\<=12 - \catcode`\>=12 - \escapechar=`\\ - % - \let\b=\ptexb - \let\bullet=\ptexbullet - \let\c=\ptexc - \let\,=\ptexcomma - \let\.=\ptexdot - \let\dots=\ptexdots - \let\equiv=\ptexequiv - \let\!=\ptexexclam - \let\i=\ptexi - \let\{=\ptexlbrace - \let\+=\tabalign - \let\}=\ptexrbrace - \let\*=\ptexstar - \let\t=\ptext - % - \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% - \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% - \def\@{@}% - \let\Etex=\endgroup} - - % Define @lisp ... @endlisp. - % @lisp does a \begingroup so it can rebind things, - % including the definition of @endlisp (which normally is erroneous). - - % Amount to narrow the margins by for @lisp. - \newskip\lispnarrowing \lispnarrowing=0.4in - - % This is the definition that ^^M gets inside @lisp, @example, and other - % such environments. \null is better than a space, since it doesn't - % have any width. - \def\lisppar{\null\endgraf} - - % Make each space character in the input produce a normal interword - % space in the output. Don't allow a line break at this space, as this - % is used only in environments like @example, where each line of input - % should produce a line of output anyway. - % - {\obeyspaces % - \gdef\sepspaces{\obeyspaces\let =\tie}} - - % Define \obeyedspace to be our active space, whatever it is. This is - % for use in \parsearg. - {\sepspaces% - \global\let\obeyedspace= } - - % This space is always present above and below environments. - \newskip\envskipamount \envskipamount = 0pt - - % Make spacing and below environment symmetrical. We use \parskip here - % to help in doing that, since in @example-like environments \parskip - % is reset to zero; thus the \afterenvbreak inserts no space -- but the - % start of the next paragraph will insert \parskip - % - \def\aboveenvbreak{{% - \ifnum\lastpenalty < 10000 - \advance\envskipamount by \parskip - \endgraf - \ifdim\lastskip<\envskipamount - \removelastskip - \penalty-50 - \vskip\envskipamount - \fi - \fi - }} - - \let\afterenvbreak = \aboveenvbreak - - % \nonarrowing is a flag. If "set", @lisp etc don't narrow margins. - \let\nonarrowing=\relax - - % @cartouche ... @end cartouche: draw rectangle w/rounded corners around - % environment contents. - \font\circle=lcircle10 - \newdimen\circthick - \newdimen\cartouter\newdimen\cartinner - \newskip\normbskip\newskip\normpskip\newskip\normlskip - \circthick=\fontdimen8\circle - % - \def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth - \def\ctr{{\hskip 6pt\circle\char'010}} - \def\cbl{{\circle\char'012\hskip -6pt}} - \def\cbr{{\hskip 6pt\circle\char'011}} - \def\carttop{\hbox to \cartouter{\hskip\lskip - \ctl\leaders\hrule height\circthick\hfil\ctr - \hskip\rskip}} - \def\cartbot{\hbox to \cartouter{\hskip\lskip - \cbl\leaders\hrule height\circthick\hfil\cbr - \hskip\rskip}} - % - \newskip\lskip\newskip\rskip - - \long\def\cartouche{% - \begingroup - \lskip=\leftskip \rskip=\rightskip - \leftskip=0pt\rightskip=0pt %we want these *outside*. - \cartinner=\hsize \advance\cartinner by-\lskip - \advance\cartinner by-\rskip - \cartouter=\hsize - \advance\cartouter by 18.4pt % allow for 3pt kerns on either - % side, and for 6pt waste from - % each corner char, and rule thickness - \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip - % Flag to tell @lisp, etc., not to narrow margin. - \let\nonarrowing=\comment - \vbox\bgroup - \baselineskip=0pt\parskip=0pt\lineskip=0pt - \carttop - \hbox\bgroup - \hskip\lskip - \vrule\kern3pt - \vbox\bgroup - \hsize=\cartinner - \kern3pt - \begingroup - \baselineskip=\normbskip - \lineskip=\normlskip - \parskip=\normpskip - \vskip -\parskip - \def\Ecartouche{% - \endgroup - \kern3pt - \egroup - \kern3pt\vrule - \hskip\rskip - \egroup - \cartbot - \egroup - \endgroup - }} - - - % This macro is called at the beginning of all the @example variants, - % inside a group. - \def\nonfillstart{% - \aboveenvbreak - \inENV % This group ends at the end of the body - \hfuzz = 12pt % Don't be fussy - \sepspaces % Make spaces be word-separators rather than space tokens. - \singlespace - \let\par = \lisppar % don't ignore blank lines - \obeylines % each line of input is a line of output - \parskip = 0pt - \parindent = 0pt - \emergencystretch = 0pt % don't try to avoid overfull boxes - % @cartouche defines \nonarrowing to inhibit narrowing - % at next level down. - \ifx\nonarrowing\relax - \advance \leftskip by \lispnarrowing - \exdentamount=\lispnarrowing - \let\exdent=\nofillexdent - \let\nonarrowing=\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 - % inserted at the beginning of the next paragraph in the document, after - % the environment. - % - \def\nonfillfinish{\afterenvbreak\endgroup} - - % @lisp: indented, narrowed, typewriter font. - \def\lisp{\begingroup - \nonfillstart - \let\Elisp = \nonfillfinish - \tt - \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. - \gobble % eat return - } - - % @example: Same as @lisp. - \def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp} - - % @small... is usually equivalent to the non-small (@smallbook - % 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. - % - \def\smalldisplay{\begingroup\def\Esmalldisplay{\nonfillfinish\endgroup}\display} - \def\smallexample{\begingroup\def\Esmallexample{\nonfillfinish\endgroup}\lisp} - \def\smallformat{\begingroup\def\Esmallformat{\nonfillfinish\endgroup}\format} - \def\smalllisp{\begingroup\def\Esmalllisp{\nonfillfinish\endgroup}\lisp} - - % Real @smallexample and @smalllisp (when @smallbook): use smaller fonts. - % Originally contributed by Pavel@xerox. - \def\smalllispx{\begingroup - \def\Esmalllisp{\nonfillfinish\endgroup}% - \def\Esmallexample{\nonfillfinish\endgroup}% - \smallfonts - \lisp - } - - % @display: same as @lisp except keep current font. - % - \def\display{\begingroup - \nonfillstart - \let\Edisplay = \nonfillfinish - \gobble - } - - % @smalldisplay (when @smallbook): @display plus smaller fonts. - % - \def\smalldisplayx{\begingroup - \def\Esmalldisplay{\nonfillfinish\endgroup}% - \smallfonts \rm - \display - } - - % @format: same as @display except don't narrow margins. - % - \def\format{\begingroup - \let\nonarrowing = t - \nonfillstart - \let\Eformat = \nonfillfinish - \gobble - } - - % @smallformat (when @smallbook): @format plus smaller fonts. - % - \def\smallformatx{\begingroup - \def\Esmallformat{\nonfillfinish\endgroup}% - \smallfonts \rm - \format - } - - % @flushleft (same as @format). - % - \def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format} - - % @flushright. - % - \def\flushright{\begingroup - \let\nonarrowing = t - \nonfillstart - \let\Eflushright = \nonfillfinish - \advance\leftskip by 0pt plus 1fill - \gobble - } - - - % @quotation does normal linebreaking (hence we can't use \nonfillstart) - % and narrows the margins. - % - \def\quotation{% - \begingroup\inENV %This group ends at the end of the @quotation body - {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip - \singlespace - \parindent=0pt - % We have retained a nonzero parskip for the environment, since we're - % doing normal filling. So to avoid extra space below the environment... - \def\Equotation{\parskip = 0pt \nonfillfinish}% - % - % @cartouche defines \nonarrowing to inhibit narrowing at next level down. - \ifx\nonarrowing\relax - \advance\leftskip by \lispnarrowing - \advance\rightskip by \lispnarrowing - \exdentamount = \lispnarrowing - \let\nonarrowing = \relax - \fi - } - - - % LaTeX-like @verbatim...@end verbatim and @verb{...} - % If we want to allow any as delimiter, - % we need the curly braces so that makeinfo sees the @verb command, eg: - % `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org - % - % [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. - % - % [Knuth] p. 344; only we need to do '@' too - \def\dospecials{% - \do\ \do\\\do\@\do\{\do\}\do\$\do\&% - \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~} - % - % [Knuth] p. 380 - \def\uncatcodespecials{% - \def\do##1{\catcode`##1=12}\dospecials} - % - % [Knuth] pp. 380,381,391 - % Disable Spanish ligatures ?` and !` of \tt font - \begingroup - \catcode`\`=\active\gdef`{\relax\lq} - \endgroup - % - % Setup for the @verb command. - % - % Eight spaces for a tab - \begingroup - \catcode`\^^I=\active - \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} - \endgroup - % - \def\setupverb{% - \tt % easiest (and conventionally used) font for verbatim - \def\par{\leavevmode\endgraf}% - \catcode`\`=\active - \tabeightspaces - % Respect line breaks, - % print special symbols as themselves, and - % make each space count - % must do in this order: - \obeylines \uncatcodespecials \sepspaces - } - - % Setup for the @verbatim environment - % - % Real tab expansion - \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount - % - \def\starttabbox{\setbox0=\hbox\bgroup} - \begingroup - \catcode`\^^I=\active - \gdef\tabexpand{% - \catcode`\^^I=\active - \def^^I{\leavevmode\egroup - \dimen0=\wd0 % the width so far, or since the previous tab - \divide\dimen0 by\tabw - \multiply\dimen0 by\tabw % compute previous multiple of \tabw - \advance\dimen0 by\tabw % advance to next multiple of \tabw - \wd0=\dimen0 \box0 \starttabbox - }% - } - \endgroup - \def\setupverbatim{% - % Easiest (and conventionally used) font for verbatim - \tt - \def\par{\leavevmode\egroup\box0\endgraf}% - \catcode`\`=\active - \tabexpand - % Respect line breaks, - % print special symbols as themselves, and - % make each space count - % must do in this order: - \obeylines \uncatcodespecials \sepspaces - \everypar{\starttabbox}% - } - - % Do the @verb magic: verbatim text is quoted by unique - % delimiter characters. Before first delimiter expect a - % right brace, after last delimiter expect closing brace: - % - % \def\doverb'{'#1'}'{#1} - % - % [Knuth] p. 382; only eat outer {} - \begingroup - \catcode`[=1\catcode`]=2\catcode`\{=12\catcode`\}=12 - \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] - \endgroup - % - \def\verb{\begingroup\setupverb\doverb} - % - % - % Do the @verbatim magic: define the macro \doverbatim so that - % the (first) argument ends when '@end verbatim' is reached, ie: - % - % \def\doverbatim#1@end verbatim{#1} - % - % For Texinfo it's a lot easier than for LaTeX, - % because texinfo's \verbatim doesn't stop at '\end{verbatim}': - % we need not redefine '\', '{' and '}' - % - % Inspired by LaTeX's verbatim command set [latex.ltx] - %% Include LaTeX hack for completeness -- never know - %% \begingroup - %% \catcode`|=0 \catcode`[=1 - %% \catcode`]=2\catcode`\{=12\catcode`\}=12\catcode`\ =\active - %% \catcode`\\=12|gdef|doverbatim#1@end verbatim[ - %% #1|endgroup|def|Everbatim[]|end[verbatim]] - %% |endgroup - \begingroup - \catcode`\ =\active - \gdef\doverbatim#1@end verbatim{#1\end{verbatim}} - \endgroup - % - \def\verbatim{% - \def\Everbatim{\nonfillfinish\endgroup}% - \begingroup - \nonfillstart - \advance\leftskip by -\defbodyindent - \begingroup\setupverbatim\doverbatim - } - - % @verbatiminclude FILE - insert text of file in verbatim environment. - % - % Allow normal characters that we make active in the argument (a file name). - \def\verbatiminclude{% - \begingroup - \catcode`\\=12 - \catcode`~=12 - \catcode`^=12 - \catcode`_=12 - \catcode`|=12 - \catcode`<=12 - \catcode`>=12 - \catcode`+=12 - \parsearg\doverbatiminclude - } - \def\setupverbatiminclude{% - \begingroup - \nonfillstart - \advance\leftskip by -\defbodyindent - \begingroup\setupverbatim - } - % - \def\doverbatiminclude#1{% - % Restore active chars for included file. - \endgroup - \begingroup - \def\thisfile{#1}% - \expandafter\expandafter\setupverbatiminclude\input\thisfile - \endgroup\nonfillfinish\endgroup - } - - - \message{defuns,} - % @defun etc. - - % Allow user to change definition object font (\df) internally - \def\setdeffont #1 {\csname DEF#1\endcsname} - - \newskip\defbodyindent \defbodyindent=.4in - \newskip\defargsindent \defargsindent=50pt - \newskip\deftypemargin \deftypemargin=12pt - \newskip\deflastargmargin \deflastargmargin=18pt - - \newcount\parencount - % define \functionparens, which makes ( and ) and & do special things. - % \functionparens affects the group it is contained in. - \def\activeparens{% - \catcode`\(=\active \catcode`\)=\active \catcode`\&=\active - \catcode`\[=\active \catcode`\]=\active} - - % Make control sequences which act like normal parenthesis chars. - \let\lparen = ( \let\rparen = ) - - {\activeparens % Now, smart parens don't turn on until &foo (see \amprm) - - % Be sure that we always have a definition for `(', etc. For example, - % if the fn name has parens in it, \boldbrax will not be in effect yet, - % so TeX would otherwise complain about undefined control sequence. - \global\let(=\lparen \global\let)=\rparen - \global\let[=\lbrack \global\let]=\rbrack - - \gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 } - \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} - % This is used to turn on special parens - % but make & act ordinary (given that it's active). - \gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr} - - % Definitions of (, ) and & used in args for functions. - % This is the definition of ( outside of all parentheses. - \gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested - \global\advance\parencount by 1 - } - % - % This is the definition of ( when already inside a level of parens. - \gdef\opnested{\char`\(\global\advance\parencount by 1 } - % - \gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0. - % also in that case restore the outer-level definition of (. - \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi - \global\advance \parencount by -1 } - % If we encounter &foo, then turn on ()-hacking afterwards - \gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ } - % - \gdef\normalparens{\boldbrax\let&=\ampnr} - } % End of definition inside \activeparens - %% These parens (in \boldbrax) actually are a little bolder than the - %% contained text. This is especially needed for [ and ] - \def\opnr{{\sf\char`\(}\global\advance\parencount by 1 } - \def\clnr{{\sf\char`\)}\global\advance\parencount by -1 } - \let\ampnr = \& - \def\lbrb{{\bf\char`\[}} - \def\rbrb{{\bf\char`\]}} - - % Active &'s sneak into the index arguments, so make sure it's defined. - { - \catcode`& = 13 - \global\let& = \ampnr - } - - % First, defname, which formats the header line itself. - % #1 should be the function name. - % #2 should be the type of definition, such as "Function". - - \def\defname #1#2{% - % Get the values of \leftskip and \rightskip as they were - % outside the @def... - \dimen2=\leftskip - \advance\dimen2 by -\defbodyindent - \noindent - \setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}% - \dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line - \dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations - \parshape 2 0in \dimen0 \defargsindent \dimen1 - % Now output arg 2 ("Function" or some such) - % ending at \deftypemargin from the right margin, - % but stuck inside a box of width 0 so it does not interfere with linebreaking - {% Adjust \hsize to exclude the ambient margins, - % so that \rightline will obey them. - \advance \hsize by -\dimen2 - \rlap{\rightline{{\rm #2}\hskip -1.25pc }}}% - % Make all lines underfull and no complaints: - \tolerance=10000 \hbadness=10000 - \advance\leftskip by -\defbodyindent - \exdentamount=\defbodyindent - {\df #1}\enskip % Generate function name - } - - % Actually process the body of a definition - % #1 should be the terminating control sequence, such as \Edefun. - % #2 should be the "another name" control sequence, such as \defunx. - % #3 should be the control sequence that actually processes the header, - % such as \defunheader. - - \def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody - \medbreak % - % Define the end token that this defining construct specifies - % so that it will exit this group. - \def#1{\endgraf\endgroup\medbreak}% - \def#2{\begingroup\obeylines\activeparens\spacesplit#3}% - \parindent=0in - \advance\leftskip by \defbodyindent - \exdentamount=\defbodyindent - \begingroup % - \catcode 61=\active % 61 is `=' - \obeylines\activeparens\spacesplit#3} - - % #1 is the \E... control sequence to end the definition (which we define). - % #2 is the \...x control sequence for consecutive fns (which we define). - % #3 is the control sequence to call to resume processing. - % #4, delimited by the space, is the class name. - % - \def\defmethparsebody#1#2#3#4 {\begingroup\inENV % - \medbreak % - % Define the end token that this defining construct specifies - % so that it will exit this group. - \def#1{\endgraf\endgroup\medbreak}% - \def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}% - \parindent=0in - \advance\leftskip by \defbodyindent - \exdentamount=\defbodyindent - \begingroup\obeylines\activeparens\spacesplit{#3{#4}}} - - % Used for @deftypemethod and @deftypeivar. - % #1 is the \E... control sequence to end the definition (which we define). - % #2 is the \...x control sequence for consecutive fns (which we define). - % #3 is the control sequence to call to resume processing. - % #4, delimited by a space, is the class name. - % #5 is the method's return type. - % - \def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV - \medbreak - \def#1{\endgraf\endgroup\medbreak}% - \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}% - \parindent=0in - \advance\leftskip by \defbodyindent - \exdentamount=\defbodyindent - \begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}} - - % Used for @deftypeop. The change from \deftypemethparsebody is an - % extra argument at the beginning which is the `category', instead of it - % being the hardwired string `Method' or `Instance Variable'. We have - % to account for this both in the \...x definition and in parsing the - % input at hand. Thus also need a control sequence (passed as #5) for - % the \E... definition to assign the category name to. - % - \def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV - \medbreak - \def#1{\endgraf\endgroup\medbreak}% - \def#2##1 ##2 ##3 {% - \def#4{##1}% - \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}% - \parindent=0in - \advance\leftskip by \defbodyindent - \exdentamount=\defbodyindent - \begingroup\obeylines\activeparens\spacesplit{#3{#5}{#6}}} - - \def\defopparsebody #1#2#3#4#5 {\begingroup\inENV % - \medbreak % - % Define the end token that this defining construct specifies - % so that it will exit this group. - \def#1{\endgraf\endgroup\medbreak}% - \def#2##1 ##2 {\def#4{##1}% - \begingroup\obeylines\activeparens\spacesplit{#3{##2}}}% - \parindent=0in - \advance\leftskip by \defbodyindent - \exdentamount=\defbodyindent - \begingroup\obeylines\activeparens\spacesplit{#3{#5}}} - - % These parsing functions are similar to the preceding ones - % except that they do not make parens into active characters. - % These are used for "variables" since they have no arguments. - - \def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody - \medbreak % - % Define the end token that this defining construct specifies - % so that it will exit this group. - \def#1{\endgraf\endgroup\medbreak}% - \def#2{\begingroup\obeylines\spacesplit#3}% - \parindent=0in - \advance\leftskip by \defbodyindent - \exdentamount=\defbodyindent - \begingroup % - \catcode 61=\active % - \obeylines\spacesplit#3} - - % This is used for \def{tp,vr}parsebody. It could probably be used for - % some of the others, too, with some judicious conditionals. - % - \def\parsebodycommon#1#2#3{% - \begingroup\inENV % - \medbreak % - % Define the end token that this defining construct specifies - % so that it will exit this group. - \def#1{\endgraf\endgroup\medbreak}% - \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}% - \parindent=0in - \advance\leftskip by \defbodyindent - \exdentamount=\defbodyindent - \begingroup\obeylines - } - - \def\defvrparsebody#1#2#3#4 {% - \parsebodycommon{#1}{#2}{#3}% - \spacesplit{#3{#4}}% - } - - % This loses on `@deftp {Data Type} {struct termios}' -- it thinks the - % type is just `struct', because we lose the braces in `{struct - % termios}' when \spacesplit reads its undelimited argument. Sigh. - % \let\deftpparsebody=\defvrparsebody - % - % So, to get around this, we put \empty in with the type name. That - % way, TeX won't find exactly `{...}' as an undelimited argument, and - % won't strip off the braces. - % - \def\deftpparsebody #1#2#3#4 {% - \parsebodycommon{#1}{#2}{#3}% - \spacesplit{\parsetpheaderline{#3{#4}}}\empty - } - - % Fine, but then we have to eventually remove the \empty *and* the - % braces (if any). That's what this does. - % - \def\removeemptybraces\empty#1\relax{#1} - - % After \spacesplit has done its work, this is called -- #1 is the final - % thing to call, #2 the type name (which starts with \empty), and #3 - % (which might be empty) the arguments. - % - \def\parsetpheaderline#1#2#3{% - #1{\removeemptybraces#2\relax}{#3}% - }% - - \def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV % - \medbreak % - % Define the end token that this defining construct specifies - % so that it will exit this group. - \def#1{\endgraf\endgroup\medbreak}% - \def#2##1 ##2 {\def#4{##1}% - \begingroup\obeylines\spacesplit{#3{##2}}}% - \parindent=0in - \advance\leftskip by \defbodyindent - \exdentamount=\defbodyindent - \begingroup\obeylines\spacesplit{#3{#5}}} - - % Split up #2 at the first space token. - % call #1 with two arguments: - % the first is all of #2 before the space token, - % the second is all of #2 after that space token. - % If #2 contains no space token, all of it is passed as the first arg - % and the second is passed as empty. - - {\obeylines - \gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}% - \long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{% - \ifx\relax #3% - #1{#2}{}\else #1{#2}{#3#4}\fi}} - - % So much for the things common to all kinds of definitions. - - % Define @defun. - - % First, define the processing that is wanted for arguments of \defun - % Use this to expand the args and terminate the paragraph they make up - - \def\defunargs#1{\functionparens \sl - % Expand, preventing hyphenation at `-' chars. - % Note that groups don't affect changes in \hyphenchar. - % Set the font temporarily and use \font in case \setfont made \tensl a macro. - {\tensl\hyphenchar\font=0}% - #1% - {\tensl\hyphenchar\font=45}% - \ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi% - \interlinepenalty=10000 - \advance\rightskip by 0pt plus 1fil - \endgraf\nobreak\vskip -\parskip\nobreak - } - - \def\deftypefunargs #1{% - % Expand, preventing hyphenation at `-' chars. - % Note that groups don't affect changes in \hyphenchar. - % Use \boldbraxnoamp, not \functionparens, so that & is not special. - \boldbraxnoamp - \tclose{#1}% avoid \code because of side effects on active chars - \interlinepenalty=10000 - \advance\rightskip by 0pt plus 1fil - \endgraf\nobreak\vskip -\parskip\nobreak - } - - % Do complete processing of one @defun or @defunx line already parsed. - - % @deffn Command forward-char nchars - - \def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader} - - \def\deffnheader #1#2#3{\doind {fn}{\code{#2}}% - \begingroup\defname {#2}{#1}\defunargs{#3}\endgroup % - \catcode 61=\other % Turn off change made in \defparsebody - } - - % @defun == @deffn Function - - \def\defun{\defparsebody\Edefun\defunx\defunheader} - - \def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index - \begingroup\defname {#1}{\putwordDeffunc}% - \defunargs {#2}\endgroup % - \catcode 61=\other % Turn off change made in \defparsebody - } - - % @deftypefun int foobar (int @var{foo}, float @var{bar}) - - \def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader} - - % #1 is the data type. #2 is the name and args. - \def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax} - % #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}{\putwordDeftypefun}% - \deftypefunargs {#3}\endgroup % - \catcode 61=\other % Turn off change made in \defparsebody - } - - % @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar}) - - \def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader} - - % \defheaderxcond#1\relax$$$ - % puts #1 in @code, followed by a space, but does nothing if #1 is null. - \def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi} - - % #1 is the classification. #2 is the data type. #3 is the name and args. - \def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax} - % #1 is the classification, #2 the data type, #3 the name, #4 the args. - \def\deftypefnheaderx #1#2#3 #4\relax{% - \doind {fn}{\code{#3}}% Make entry in function index - \begingroup - \normalparens % notably, turn off `&' magic, which prevents - % at least some C++ text from working - \defname {\defheaderxcond#2\relax$$$#3}{#1}% - \deftypefunargs {#4}\endgroup % - \catcode 61=\other % Turn off change made in \defparsebody - } - - % @defmac == @deffn Macro - - \def\defmac{\defparsebody\Edefmac\defmacx\defmacheader} - - \def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index - \begingroup\defname {#1}{\putwordDefmac}% - \defunargs {#2}\endgroup % - \catcode 61=\other % Turn off change made in \defparsebody - } - - % @defspec == @deffn Special Form - - \def\defspec{\defparsebody\Edefspec\defspecx\defspecheader} - - \def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index - \begingroup\defname {#1}{\putwordDefspec}% - \defunargs {#2}\endgroup % - \catcode 61=\other % Turn off change made in \defparsebody - } - - % @defop CATEGORY CLASS OPERATION ARG... - % - \def\defop #1 {\def\defoptype{#1}% - \defopparsebody\Edefop\defopx\defopheader\defoptype} - % - \def\defopheader#1#2#3{% - \dosubind {fn}{\code{#2}}{\putwordon\ #1}% Make entry in function index - \begingroup\defname {#2}{\defoptype\ \putwordon\ #1}% - \defunargs {#3}\endgroup % - } - - % @deftypeop CATEGORY CLASS TYPE OPERATION ARG... - % - \def\deftypeop #1 {\def\deftypeopcategory{#1}% - \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader - \deftypeopcategory} - % - % #1 is the class name, #2 the data type, #3 the operation name, #4 the args. - \def\deftypeopheader#1#2#3#4{% - \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index - \begingroup - \defname{\defheaderxcond#2\relax$$$#3} - {\deftypeopcategory\ \putwordon\ \code{#1}}% - \deftypefunargs{#4}% - \endgroup - } - - % @deftypemethod CLASS TYPE METHOD ARG... - % - \def\deftypemethod{% - \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader} - % - % #1 is the class name, #2 the data type, #3 the method name, #4 the args. - \def\deftypemethodheader#1#2#3#4{% - \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index - \begingroup - \defname{\defheaderxcond#2\relax$$$#3}{\putwordMethodon\ \code{#1}}% - \deftypefunargs{#4}% - \endgroup - } - - % @deftypeivar CLASS TYPE VARNAME - % - \def\deftypeivar{% - \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader} - % - % #1 is the class name, #2 the data type, #3 the variable name. - \def\deftypeivarheader#1#2#3{% - \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index - \begingroup - \defname{\defheaderxcond#2\relax$$$#3} - {\putwordInstanceVariableof\ \code{#1}}% - \defvarargs{#3}% - \endgroup - } - - % @defmethod == @defop Method - % - \def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader} - % - % #1 is the class name, #2 the method name, #3 the args. - \def\defmethodheader#1#2#3{% - \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% entry in function index - \begingroup - \defname{#2}{\putwordMethodon\ \code{#1}}% - \defunargs{#3}% - \endgroup - } - - % @defcv {Class Option} foo-class foo-flag - - \def\defcv #1 {\def\defcvtype{#1}% - \defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype} - - \def\defcvarheader #1#2#3{% - \dosubind {vr}{\code{#2}}{\putwordof\ #1}% Make entry in var index - \begingroup\defname {#2}{\defcvtype\ \putwordof\ #1}% - \defvarargs {#3}\endgroup % - } - - % @defivar CLASS VARNAME == @defcv {Instance Variable} CLASS VARNAME - % - \def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader} - % - \def\defivarheader#1#2#3{% - \dosubind {vr}{\code{#2}}{\putwordof\ #1}% entry in var index - \begingroup - \defname{#2}{\putwordInstanceVariableof\ #1}% - \defvarargs{#3}% - \endgroup - } - - % @defvar - % First, define the processing that is wanted for arguments of @defvar. - % This is actually simple: just print them in roman. - % This must expand the args and terminate the paragraph they make up - \def\defvarargs #1{\normalparens #1% - \interlinepenalty=10000 - \endgraf\nobreak\vskip -\parskip\nobreak} - - % @defvr Counter foo-count - - \def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader} - - \def\defvrheader #1#2#3{\doind {vr}{\code{#2}}% - \begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup} - - % @defvar == @defvr Variable - - \def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader} - - \def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index - \begingroup\defname {#1}{\putwordDefvar}% - \defvarargs {#2}\endgroup % - } - - % @defopt == @defvr {User Option} - - \def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader} - - \def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index - \begingroup\defname {#1}{\putwordDefopt}% - \defvarargs {#2}\endgroup % - } - - % @deftypevar int foobar - - \def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader} - - % #1 is the data type. #2 is the name, perhaps followed by text that - % 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}{\putwordDeftypevar}% - \interlinepenalty=10000 - \endgraf\nobreak\vskip -\parskip\nobreak - \endgroup} - \def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}} - - % @deftypevr {Global Flag} int enable - - \def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} - - \def\deftypevrheader #1#2#3{\dovarind#3 \relax% - \begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1} - \interlinepenalty=10000 - \endgraf\nobreak\vskip -\parskip\nobreak - \endgroup} - - % Now define @deftp - % Args are printed in bold, a slight difference from @defvar. - - \def\deftpargs #1{\bf \defvarargs{#1}} - - % @deftp Class window height width ... - - \def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader} - - \def\deftpheader #1#2#3{\doind {tp}{\code{#2}}% - \begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup} - - % These definitions are used if you use @defunx (etc.) - % anywhere other than immediately after a @defun or @defunx. - % - \def\defcvx#1 {\errmessage{@defcvx in invalid context}} - \def\deffnx#1 {\errmessage{@deffnx in invalid context}} - \def\defivarx#1 {\errmessage{@defivarx in invalid context}} - \def\defmacx#1 {\errmessage{@defmacx in invalid context}} - \def\defmethodx#1 {\errmessage{@defmethodx in invalid context}} - \def\defoptx #1 {\errmessage{@defoptx in invalid context}} - \def\defopx#1 {\errmessage{@defopx in invalid context}} - \def\defspecx#1 {\errmessage{@defspecx in invalid context}} - \def\deftpx#1 {\errmessage{@deftpx in invalid context}} - \def\deftypefnx#1 {\errmessage{@deftypefnx in invalid context}} - \def\deftypefunx#1 {\errmessage{@deftypefunx in invalid context}} - \def\deftypeivarx#1 {\errmessage{@deftypeivarx in invalid context}} - \def\deftypemethodx#1 {\errmessage{@deftypemethodx in invalid context}} - \def\deftypeopx#1 {\errmessage{@deftypeopx in invalid context}} - \def\deftypevarx#1 {\errmessage{@deftypevarx in invalid context}} - \def\deftypevrx#1 {\errmessage{@deftypevrx in invalid context}} - \def\defunx#1 {\errmessage{@defunx in invalid context}} - \def\defvarx#1 {\errmessage{@defvarx in invalid context}} - \def\defvrx#1 {\errmessage{@defvrx in invalid context}} - - - \message{macros,} - % @macro. - - % To do this right we need a feature of e-TeX, \scantokens, - % which we arrange to emulate with a temporary file in ordinary TeX. - \ifx\eTeXversion\undefined - \newwrite\macscribble - \def\scanmacro#1{% - \begingroup \newlinechar`\^^M - % Undo catcode changes of \startcontents and \doprintindex - \catcode`\@=0 \catcode`\\=12 \escapechar=`\@ - % Append \endinput to make sure that TeX does not see the ending newline. - \toks0={#1\endinput}% - \immediate\openout\macscribble=\jobname.tmp - \immediate\write\macscribble{\the\toks0}% - \immediate\closeout\macscribble - \let\xeatspaces\eatspaces - \input \jobname.tmp - \endgroup - } - \else - \def\scanmacro#1{% - \begingroup \newlinechar`\^^M - % Undo catcode changes of \startcontents and \doprintindex - \catcode`\@=0 \catcode`\\=12 \escapechar=`\@ - \let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup} - \fi - - \newcount\paramno % Count of parameters - \newtoks\macname % Macro name - \newif\ifrecursive % Is it recursive? - \def\macrolist{} % List of all defined macros in the form - % \do\macro1\do\macro2... - - % Utility routines. - % Thisdoes \let #1 = #2, except with \csnames. - \def\cslet#1#2{% - \expandafter\expandafter - \expandafter\let - \expandafter\expandafter - \csname#1\endcsname - \csname#2\endcsname} - - % Trim leading and trailing spaces off a string. - % Concepts from aro-bend problem 15 (see CTAN). - {\catcode`\@=11 - \gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} - \gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} - \gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} - \def\unbrace#1{#1} - \unbrace{\gdef\trim@@@ #1 } #2@{#1} - } - - % Trim a single trailing ^^M off a string. - {\catcode`\^^M=12\catcode`\Q=3% - \gdef\eatcr #1{\eatcra #1Q^^MQ}% - \gdef\eatcra#1^^MQ{\eatcrb#1Q}% - \gdef\eatcrb#1Q#2Q{#1}% - } - - % Macro bodies are absorbed as an argument in a context where - % 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 - % body, and then making it the \newlinechar in \scanmacro. - - \def\macrobodyctxt{% - \catcode`\~=12 - \catcode`\^=12 - \catcode`\_=12 - \catcode`\|=12 - \catcode`\<=12 - \catcode`\>=12 - \catcode`\+=12 - \catcode`\{=12 - \catcode`\}=12 - \catcode`\@=12 - \catcode`\^^M=12 - \usembodybackslash} - - \def\macroargctxt{% - \catcode`\~=12 - \catcode`\^=12 - \catcode`\_=12 - \catcode`\|=12 - \catcode`\<=12 - \catcode`\>=12 - \catcode`\+=12 - \catcode`\@=12 - \catcode`\\=12} - - % \mbodybackslash is the definition of \ in @macro bodies. - % It maps \foo\ => \csname macarg.foo\endcsname => #N - % where N is the macro parameter number. - % We define \csname macarg.\endcsname to be \realbackslash, so - % \\ in macro replacement text gets you a backslash. - - {\catcode`@=0 @catcode`@\=@active - @gdef@usembodybackslash{@let\=@mbodybackslash} - @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} - } - \expandafter\def\csname macarg.\endcsname{\realbackslash} - - \def\macro{\recursivefalse\parsearg\macroxxx} - \def\rmacro{\recursivetrue\parsearg\macroxxx} - - \def\macroxxx#1{% - \getargs{#1}% now \macname is the macname and \argl the arglist - \ifx\argl\empty % no arguments - \paramno=0% - \else - \expandafter\parsemargdef \argl;% - \fi - \if1\csname ismacro.\the\macname\endcsname - \message{Warning: redefining \the\macname}% - \else - \expandafter\ifx\csname \the\macname\endcsname \relax - \else \errmessage{The name \the\macname\space is reserved}\fi - \global\cslet{macsave.\the\macname}{\the\macname}% - \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% - % Add the macroname to \macrolist - \toks0 = \expandafter{\macrolist\do}% - \xdef\macrolist{\the\toks0 - \expandafter\noexpand\csname\the\macname\endcsname}% - \fi - \begingroup \macrobodyctxt - \ifrecursive \expandafter\parsermacbody - \else \expandafter\parsemacbody - \fi} - - \def\unmacro{\parsearg\unmacroxxx} - \def\unmacroxxx#1{% - \if1\csname ismacro.#1\endcsname - \global\cslet{#1}{macsave.#1}% - \global\expandafter\let \csname ismacro.#1\endcsname=0% - % Remove the macro name from \macrolist - \begingroup - \edef\tempa{\expandafter\noexpand\csname#1\endcsname}% - \def\do##1{% - \def\tempb{##1}% - \ifx\tempa\tempb - % remove this - \else - \toks0 = \expandafter{\newmacrolist\do}% - \edef\newmacrolist{\the\toks0\expandafter\noexpand\tempa}% - \fi}% - \def\newmacrolist{}% - % Execute macro list to define \newmacrolist - \macrolist - \global\let\macrolist\newmacrolist - \endgroup - \else - \errmessage{Macro #1 not defined}% - \fi - } - - % This makes use of the obscure feature that if the last token of a - % is #, then the preceding argument is delimited by - % an opening brace, and that opening brace is not consumed. - \def\getargs#1{\getargsxxx#1{}} - \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} - \def\getmacname #1 #2\relax{\macname={#1}} - \def\getmacargs#1{\def\argl{#1}} - - % Parse the optional {params} list. Set up \paramno and \paramlist - % so \defmacro knows what to do. Define \macarg.blah for each blah - % in the params list, to be ##N where N is the position in that list. - % That gets used by \mbodybackslash (above). - - % We need to get `macro parameter char #' into several definitions. - % The technique used is stolen from LaTeX: let \hash be something - % unexpandable, insert that wherever you need a #, and then redefine - % it to # just before using the token list produced. - % - % The same technique is used to protect \eatspaces till just before - % the macro is used. - - \def\parsemargdef#1;{\paramno=0\def\paramlist{}% - \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,} - \def\parsemargdefxxx#1,{% - \if#1;\let\next=\relax - \else \let\next=\parsemargdefxxx - \advance\paramno by 1% - \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname - {\xeatspaces{\hash\the\paramno}}% - \edef\paramlist{\paramlist\hash\the\paramno,}% - \fi\next} - - % These two commands read recursive and nonrecursive macro bodies. - % (They're different since rec and nonrec macros end differently.) - - \long\def\parsemacbody#1@end macro% - {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% - \long\def\parsermacbody#1@end rmacro% - {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% - - % This defines the macro itself. There are six cases: recursive and - % nonrecursive macros of zero, one, and many arguments. - % Much magic with \expandafter here. - % \xdef is used so that macro definitions will survive the file - % they're defined in; @include reads the file inside a group. - \def\defmacro{% - \let\hash=##% convert placeholders to macro parameter chars - \ifrecursive - \ifcase\paramno - % 0 - \expandafter\xdef\csname\the\macname\endcsname{% - \noexpand\scanmacro{\temp}}% - \or % 1 - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \noexpand\braceorline - \expandafter\noexpand\csname\the\macname xxx\endcsname}% - \expandafter\xdef\csname\the\macname xxx\endcsname##1{% - \egroup\noexpand\scanmacro{\temp}}% - \else % many - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \noexpand\csname\the\macname xx\endcsname}% - \expandafter\xdef\csname\the\macname xx\endcsname##1{% - \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% - \expandafter\expandafter - \expandafter\xdef - \expandafter\expandafter - \csname\the\macname xxx\endcsname - \paramlist{\egroup\noexpand\scanmacro{\temp}}% - \fi - \else - \ifcase\paramno - % 0 - \expandafter\xdef\csname\the\macname\endcsname{% - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% - \or % 1 - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \noexpand\braceorline - \expandafter\noexpand\csname\the\macname xxx\endcsname}% - \expandafter\xdef\csname\the\macname xxx\endcsname##1{% - \egroup - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% - \else % many - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \expandafter\noexpand\csname\the\macname xx\endcsname}% - \expandafter\xdef\csname\the\macname xx\endcsname##1{% - \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% - \expandafter\expandafter - \expandafter\xdef - \expandafter\expandafter - \csname\the\macname xxx\endcsname - \paramlist{% - \egroup - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% - \fi - \fi} - - \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} - - % \braceorline decides whether the next nonwhitespace character is a - % {. If so it reads up to the closing }, if not, it reads the whole - % line. Whatever was read is then fed to the next control sequence - % as an argument (by \parsebrace or \parsearg) - \def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx} - \def\braceorlinexxx{% - \ifx\nchar\bgroup\else - \expandafter\parsearg - \fi \next} - - % We mant to disable all macros during \shipout so that they are not - % expanded by \write. - \def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}% - \edef\next{\macrolist}\expandafter\endgroup\next} - - - % @alias. - % We need some trickery to remove the optional spaces around the equal - % sign. Just make them active and then expand them all to nothing. - \def\alias{\begingroup\obeyspaces\parsearg\aliasxxx} - \def\aliasxxx #1{\aliasyyy#1\relax} - \def\aliasyyy #1=#2\relax{\ignoreactivespaces - \edef\next{\global\let\expandafter\noexpand\csname#1\endcsname=% - \expandafter\noexpand\csname#2\endcsname}% - \expandafter\endgroup\next} - - - \message{cross references,} - % @xref etc. - - \newwrite\auxfile - - \newif\ifhavexrefs % True if xref values are known. - \newif\ifwarnedxrefs % True if we warned once that they aren't known. - - % @inforef is relatively simple. - \def\inforef #1{\inforefzzz #1,,,,**} - \def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, - node \samp{\ignorespaces#1{}}} - - % @node's job is to define \lastnode. - \def\node{\ENVcheck\parsearg\nodezzz} - \def\nodezzz#1{\nodexxx [#1,]} - \def\nodexxx[#1,#2]{\gdef\lastnode{#1}} - \let\nwnode=\node - \let\lastnode=\relax - - % The sectioning commands (@chapter, etc.) call these. - \def\donoderef{% - \ifx\lastnode\relax\else - \expandafter\expandafter\expandafter\setref{\lastnode}% - {Ysectionnumberandtype}% - \global\let\lastnode=\relax - \fi - } - \def\unnumbnoderef{% - \ifx\lastnode\relax\else - \expandafter\expandafter\expandafter\setref{\lastnode}{Ynothing}% - \global\let\lastnode=\relax - \fi - } - \def\appendixnoderef{% - \ifx\lastnode\relax\else - \expandafter\expandafter\expandafter\setref{\lastnode}% - {Yappendixletterandtype}% - \global\let\lastnode=\relax - \fi - } - - - % @anchor{NAME} -- define xref target at arbitrary point. - % - \newcount\savesfregister - \gdef\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} - \gdef\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} - \gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} - - % \setref{NAME}{SNT} defines a cross-reference point NAME, namely - % NAME-title, NAME-pg, and NAME-SNT. Called from \foonoderef. We have - % to set \indexdummies so commands such as @code in a section title - % aren't expanded. It would be nicer not to expand the titles in the - % first place, but there's so many layers that that is hard to do. - % - \def\setref#1#2{{% - \indexdummies - \pdfmkdest{#1}% - \dosetq{#1-title}{Ytitle}% - \dosetq{#1-pg}{Ypagenumber}% - \dosetq{#1-snt}{#2}% - }} - - % @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is - % the node name, #2 the name of the Info cross-reference, #3 the printed - % node name, #4 the name of the Info file, #5 the name of the printed - % manual. All but the node name can be omitted. - % - \def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} - \def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} - \def\ref#1{\xrefX[#1,,,,,,,]} - \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup - \unsepspaces - \def\printedmanual{\ignorespaces #5}% - \def\printednodename{\ignorespaces #3}% - \setbox1=\hbox{\printedmanual}% - \setbox0=\hbox{\printednodename}% - \ifdim \wd0 = 0pt - % No printed node name was explicitly given. - \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax - % Use the node name inside the square brackets. - \def\printednodename{\ignorespaces #1}% - \else - % Use the actual chapter/section title appear inside - % the square brackets. Use the real section title if we have it. - \ifdim \wd1 > 0pt - % It is in another manual, so we don't have it. - \def\printednodename{\ignorespaces #1}% - \else - \ifhavexrefs - % We know the real title if we have the xref values. - \def\printednodename{\refx{#1-title}{}}% - \else - % Otherwise just copy the Info node name. - \def\printednodename{\ignorespaces #1}% - \fi% - \fi - \fi - \fi - % - % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not - % insert empty discretionaries after hyphens, which means that it will - % not find a line break at a hyphen in a node names. Since some manuals - % are best written with fairly long node names, containing hyphens, this - % is a loss. Therefore, we give the text of the node name again, so it - % is as if TeX is seeing it for the first time. - \ifpdf - \leavevmode - \getfilename{#4}% - \ifnum\filenamelength>0 - \startlink attr{/Border [0 0 0]}% - goto file{\the\filename.pdf} name{#1@}% - \else - \startlink attr{/Border [0 0 0]}% - goto name{#1@}% - \fi - \linkcolor - \fi - % - \ifdim \wd1 > 0pt - \putwordsection{} ``\printednodename'' \putwordin{} \cite{\printedmanual}% - \else - % _ (for example) has to be the character _ for the purposes of the - % control sequence corresponding to the node, but it has to expand - % into the usual \leavevmode...\vrule stuff for purposes of - % printing. So we \turnoffactive for the \refx-snt, back on for the - % printing, back off for the \refx-pg. - {\normalturnoffactive - % Only output a following space if the -snt ref is nonempty; for - % @unnumbered and @anchor, it won't be. - \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% - \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi - }% - % [mynode], - [\printednodename],\space - % page 3 - \turnoffactive \putwordpage\tie\refx{#1-pg}{}% - \fi - \endlink - \endgroup} - - % \dosetq is the interface for calls from other macros - - % Use \normalturnoffactive so that punctuation chars such as underscore - % and backslash work in node names. (\turnoffactive doesn't do \.) - \def\dosetq#1#2{% - {\let\folio=0% - \normalturnoffactive - \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}% - \iflinks - \next - \fi - }% - } - - % \internalsetq {foo}{page} expands into - % CHARACTERS 'xrdef {foo}{...expansion of \Ypage...} - % When the aux file is read, ' is the escape character - - \def\internalsetq #1#2{'xrdef {#1}{\csname #2\endcsname}} - - % Things to be expanded by \internalsetq - - \def\Ypagenumber{\folio} - - \def\Ytitle{\thissection} - - \def\Ynothing{} - - \def\Ysectionnumberandtype{% - \ifnum\secno=0 \putwordChapter\xreftie\the\chapno % - \else \ifnum \subsecno=0 \putwordSection\xreftie\the\chapno.\the\secno % - \else \ifnum \subsubsecno=0 % - \putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno % - \else % - \putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno % - \fi \fi \fi } - - \def\Yappendixletterandtype{% - \ifnum\secno=0 \putwordAppendix\xreftie'char\the\appendixno{}% - \else \ifnum \subsecno=0 \putwordSection\xreftie'char\the\appendixno.\the\secno % - \else \ifnum \subsubsecno=0 % - \putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno % - \else % - \putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno % - \fi \fi \fi } - - \gdef\xreftie{'tie} - - % Use TeX 3.0's \inputlineno to get the line number, for better error - % messages, but if we're using an old version of TeX, don't do anything. - % - \ifx\inputlineno\thisisundefined - \let\linenumber = \empty % Non-3.0. - \else - \def\linenumber{\the\inputlineno:\space} - \fi - - % Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. - % If its value is nonempty, SUFFIX is output afterward. - - \def\refx#1#2{% - \expandafter\ifx\csname X#1\endcsname\relax - % If not defined, say something at least. - \angleleft un\-de\-fined\angleright - \iflinks - \ifhavexrefs - \message{\linenumber Undefined cross reference `#1'.}% - \else - \ifwarnedxrefs\else - \global\warnedxrefstrue - \message{Cross reference values unknown; you must run TeX again.}% - \fi - \fi - \fi - \else - % It's defined, so just use it. - \csname X#1\endcsname - \fi - #2% Output the suffix in any case. - } - - % 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 - \afterassignment\endgroup - \expandafter\gdef\csname X#1\endcsname - } - - % Read the last existing aux file, if any. No error if none exists. - \def\readauxfile{\begingroup - \catcode`\^^@=\other - \catcode`\^^A=\other - \catcode`\^^B=\other - \catcode`\^^C=\other - \catcode`\^^D=\other - \catcode`\^^E=\other - \catcode`\^^F=\other - \catcode`\^^G=\other - \catcode`\^^H=\other - \catcode`\^^K=\other - \catcode`\^^L=\other - \catcode`\^^N=\other - \catcode`\^^P=\other - \catcode`\^^Q=\other - \catcode`\^^R=\other - \catcode`\^^S=\other - \catcode`\^^T=\other - \catcode`\^^U=\other - \catcode`\^^V=\other - \catcode`\^^W=\other - \catcode`\^^X=\other - \catcode`\^^Z=\other - \catcode`\^^[=\other - \catcode`\^^\=\other - \catcode`\^^]=\other - \catcode`\^^^=\other - \catcode`\^^_=\other - \catcode`\@=\other - \catcode`\^=\other - % It was suggested to define this as 7, which would allow ^^e4 etc. - % in xref tags, i.e., node names. But since ^^e4 notation isn't - % supported in the main text, it doesn't seem desirable. Furthermore, - % that is not enough: for node names that actually contain a ^ - % character, we would end up writing a line like this: 'xrdef {'hat - % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first - % argument, and \hat is not an expandable control sequence. It could - % all be worked out, but why? Either we support ^^ or we don't. - % - % The other change necessary for this was to define \auxhat: - % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter - % and then to call \auxhat in \setq. - % - \catcode`\~=\other - \catcode`\[=\other - \catcode`\]=\other - \catcode`\"=\other - \catcode`\_=\other - \catcode`\|=\other - \catcode`\<=\other - \catcode`\>=\other - \catcode`\$=\other - \catcode`\#=\other - \catcode`\&=\other - \catcode`+=\other % avoid \+ for paranoia even though we've turned it off - % Make the characters 128-255 be printing characters - {% - \count 1=128 - \def\loop{% - \catcode\count 1=\other - \advance\count 1 by 1 - \ifnum \count 1<256 \loop \fi - }% - }% - % The aux file uses ' as the escape (for now). - % Turn off \ as an escape so we do not lose on - % entries which were dumped with control sequences in their names. - % For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^ - % Reference to such entries still does not work the way one would wish, - % but at least they do not bomb out when the aux file is read in. - \catcode`\{=1 - \catcode`\}=2 - \catcode`\%=\other - \catcode`\'=0 - \catcode`\\=\other - % - \openin 1 \jobname.aux - \ifeof 1 \else - \closein 1 - \input \jobname.aux - \global\havexrefstrue - \global\warnedobstrue - \fi - % Open the new aux file. TeX will close it automatically at exit. - \openout\auxfile=\jobname.aux - \endgroup} - - - % Footnotes. - - \newcount \footnoteno - - % The trailing space in the following definition for supereject is - % vital for proper filling; pages come out unaligned when you do a - % pagealignmacro call if that space before the closing brace is - % removed. (Generally, numeric constants should always be followed by a - % space to prevent strange expansion errors.) - \def\supereject{\par\penalty -20000\footnoteno =0 } - - % @footnotestyle is meaningful for info output only. - \let\footnotestyle=\comment - - \let\ptexfootnote=\footnote - - {\catcode `\@=11 - % - % Auto-number footnotes. Otherwise like plain. - \gdef\footnote{% - \global\advance\footnoteno by \@ne - \edef\thisfootno{$^{\the\footnoteno}$}% - % - % In case the footnote comes at the end of a sentence, preserve the - % extra spacing after we do the footnote number. - \let\@sf\empty - \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi - % - % Remove inadvertent blank space before typesetting the footnote number. - \unskip - \thisfootno\@sf - \footnotezzz - }% - - % Don't bother with the trickery in plain.tex to not require the - % footnote text as a parameter. Our footnotes don't need to be so general. - % - % Oh yes, they do; otherwise, @ifset and anything else that uses - % \parseargline fail inside footnotes because the tokens are fixed when - % the footnote is read. --karl, 16nov96. - % - \long\gdef\footnotezzz{\insert\footins\bgroup - % We want to typeset this text as a normal paragraph, even if the - % footnote reference occurs in (for example) a display environment. - % So reset some parameters. - \interlinepenalty\interfootnotelinepenalty - \splittopskip\ht\strutbox % top baseline for broken footnotes - \splitmaxdepth\dp\strutbox - \floatingpenalty\@MM - \leftskip\z@skip - \rightskip\z@skip - \spaceskip\z@skip - \xspaceskip\z@skip - \parindent\defaultparindent - % - \smallfonts \rm - % - % Hang the footnote text off the number. - \hang - \textindent{\thisfootno}% - % - % Don't crash into the line above the footnote text. Since this - % expands into a box, it must come within the paragraph, lest it - % provide a place where TeX can split the footnote. - \footstrut - \futurelet\next\fo@t - } - \def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t - \else\let\next\f@t\fi \next} - \def\f@@t{\bgroup\aftergroup\@foot\let\next} - \def\f@t#1{#1\@foot} - \def\@foot{\strut\par\egroup} - - }%end \catcode `\@=11 - - % Set the baselineskip to #1, and the lineskip and strut size - % correspondingly. There is no deep meaning behind these magic numbers - % used as factors; they just match (closely enough) what Knuth defined. - % - \def\lineskipfactor{.08333} - \def\strutheightpercent{.70833} - \def\strutdepthpercent {.29167} - % - \def\setleading#1{% - \normalbaselineskip = #1\relax - \normallineskip = \lineskipfactor\normalbaselineskip - \normalbaselines - \setbox\strutbox =\hbox{% - \vrule width0pt height\strutheightpercent\baselineskip - depth \strutdepthpercent \baselineskip - }% - } - - % @| inserts a changebar to the left of the current line. It should - % surround any changed text. This approach does *not* work if the - % change spans more than two lines of output. To handle that, we would - % have adopt a much more difficult approach (putting marks into the main - % vertical list for the beginning and end of each change). - % - \def\|{% - % \vadjust can only be used in horizontal mode. - \leavevmode - % - % Append this vertical mode material after the current line in the output. - \vadjust{% - % We want to insert a rule with the height and depth of the current - % leading; that is exactly what \strutbox is supposed to record. - \vskip-\baselineskip - % - % \vadjust-items are inserted at the left edge of the type. So - % the \llap here moves out into the left-hand margin. - \llap{% - % - % For a thicker or thinner bar, change the `1pt'. - \vrule height\baselineskip width1pt - % - % This is the space between the bar and the text. - \hskip 12pt - }% - }% - } - - % For a final copy, take out the rectangles - % that mark overfull boxes (in case you have decided - % that the text looks ok even though it passes the margin). - % - \def\finalout{\overfullrule=0pt} - - % @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. - \openin 1 = epsf.tex - \ifeof 1 \else - \closein 1 - % Do not bother showing banner with post-v2.7 epsf.tex (available in - % doc/epsf.tex until it shows up on ctan). - \def\epsfannounce{\toks0 = }% - \input epsf.tex - \fi - % - % We will only complain once about lack of epsf.tex. - \newif\ifwarnednoepsf - \newhelp\noepsfhelp{epsf.tex must be installed for images to - work. It is also included in the Texinfo distribution, or you can get - it from ftp://tug.org/tex/epsf.tex.} - % - \def\image#1{% - \ifx\epsfbox\undefined - \ifwarnednoepsf \else - \errhelp = \noepsfhelp - \errmessage{epsf.tex not found, images will be ignored}% - \global\warnednoepsftrue - \fi - \else - \imagexxx #1,,,\finish - \fi - } - % - % Arguments to @image: - % #1 is (mandatory) image filename; we tack on .eps extension. - % #2 is (optional) width, #3 is (optional) height. - % #4 is just the usual extra ignored arg for parsing this stuff. - \def\imagexxx#1,#2,#3,#4\finish{% - \ifpdf - \centerline{\dopdfimage{#1}{#2}{#3}}% - \else - % \epsfbox itself resets \epsf?size at each figure. - \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi - \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi - \begingroup - \catcode`\^^M = 5 % in case we're inside an example - \normalturnoffactive % allow _ et al. in names - % If the image is by itself, center it. - \ifvmode - \nobreak\bigskip - % Usually we'll have text after the image which will insert - % \parskip glue, so insert it here too to equalize the space - % above and below. - \nobreak\vskip\parskip - \nobreak - \centerline{\epsfbox{#1.eps}}% - \bigbreak - \else - % In the middle of a paragraph, no extra space. - \epsfbox{#1.eps}% - \fi - \endgroup - \fi - } - - - \message{localization,} - % and i18n. - - % @documentlanguage is usually given very early, just after - % @setfilename. If done too late, it may not override everything - % properly. Single argument is the language abbreviation. - % It would be nice if we could set up a hyphenation file here. - % - \def\documentlanguage{\parsearg\dodocumentlanguage} - \def\dodocumentlanguage#1{% - \tex % read txi-??.tex file in plain TeX. - % Read the file if it exists. - \openin 1 txi-#1.tex - \ifeof1 - \errhelp = \nolanghelp - \errmessage{Cannot read language file txi-#1.tex}% - \let\temp = \relax - \else - \def\temp{\input txi-#1.tex }% - \fi - \temp - \endgroup - } - \newhelp\nolanghelp{The given language definition file cannot be found or - is empty. Maybe you need to install it? In the current directory - should work if nowhere else does.} - - - % @documentencoding should change something in TeX eventually, most - % likely, but for now just recognize it. - \let\documentencoding = \comment - - - % Page size parameters. - % - \newdimen\defaultparindent \defaultparindent = 15pt - - \chapheadingskip = 15pt plus 4pt minus 2pt - \secheadingskip = 12pt plus 3pt minus 2pt - \subsecheadingskip = 9pt plus 2pt minus 2pt - - % Prevent underfull vbox error messages. - \vbadness = 10000 - - % Don't be so finicky about underfull hboxes, either. - \hbadness = 2000 - - % Following George Bush, just get rid of widows and orphans. - \widowpenalty=10000 - \clubpenalty=10000 - - % Use TeX 3.0's \emergencystretch to help line breaking, but if we're - % using an old version of TeX, don't do anything. We want the amount of - % stretch added to depend on the line length, hence the dependence on - % \hsize. We call this whenever the paper size is set. - % - \def\setemergencystretch{% - \ifx\emergencystretch\thisisundefined - % Allow us to assign to \emergencystretch anyway. - \def\emergencystretch{\dimen0}% - \else - \emergencystretch = .15\hsize - \fi - } - - % Parameters in order: 1) textheight; 2) textwidth; 3) voffset; - % 4) hoffset; 5) binding offset; 6) topskip. Then whoever calls us can - % set \parskip and call \setleading for \baselineskip. - % - \def\internalpagesizes#1#2#3#4#5#6{% - \voffset = #3\relax - \topskip = #6\relax - \splittopskip = \topskip - % - \vsize = #1\relax - \advance\vsize by \topskip - \outervsize = \vsize - \advance\outervsize by 2\topandbottommargin - \pageheight = \vsize - % - \hsize = #2\relax - \outerhsize = \hsize - \advance\outerhsize by 0.5in - \pagewidth = \hsize - % - \normaloffset = #4\relax - \bindingoffset = #5\relax - % - \parindent = \defaultparindent - \setemergencystretch - } - - % Use `small' versions. - % - \def\smallenvironments{% - \let\smalldisplay = \smalldisplayx - \let\smallexample = \smalllispx - \let\smallformat = \smallformatx - \let\smalllisp = \smalllispx - } - - % @letterpaper (the default). - \def\letterpaper{{\globaldefs = 1 - \parskip = 3pt plus 2pt minus 1pt - \setleading{13.2pt}% - % - % If page is nothing but text, make it come out even. - \internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}% - }} - - % Use @smallbook to reset parameters for 7x9.5 (or so) format. - \def\smallbook{{\globaldefs = 1 - \parskip = 2pt plus 1pt - \setleading{12pt}% - % - \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}% - % - \lispnarrowing = 0.3in - \tolerance = 700 - \hfuzz = 1pt - \contentsrightmargin = 0pt - \deftypemargin = 0pt - \defbodyindent = .5cm - \smallenvironments - }} - - % Use @afourpaper to print on European A4 paper. - \def\afourpaper{{\globaldefs = 1 - \setleading{12pt}% - \parskip = 3pt plus 2pt minus 1pt - % - \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}% - % - \tolerance = 700 - \hfuzz = 1pt - }} - - % Use @afivepaper to print on European A5 paper. - % From romildo@urano.iceb.ufop.br, 2 July 2000. - % He also recommends making @example and @lisp be small. - \def\afivepaper{{\globaldefs = 1 - \setleading{12.5pt}% - \parskip = 2pt plus 1pt minus 0.1pt - % - \internalpagesizes{166mm}{120mm}{\voffset}{-8mm}{\bindingoffset}{8pt}% - % - \lispnarrowing = 0.2in - \tolerance = 800 - \hfuzz = 1.2pt - \contentsrightmargin = 0mm - \deftypemargin = 0pt - \defbodyindent = 2mm - \tableindent = 12mm - % - \smallenvironments - }} - - % A specific text layout, 24x15cm overall, intended for A4 paper. Top margin - % 29mm, hence bottom margin 28mm, nominal side margin 3cm. - \def\afourlatex{{\globaldefs = 1 - \setleading{13.6pt}% - % - \afourpaper - \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}% - % - \globaldefs = 0 - }} - - % Use @afourwide to print on European A4 paper in wide format. - \def\afourwide{% - \afourpaper - \internalpagesizes{6.5in}{9.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}% - % - \globaldefs = 0 - } - - % @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{{% - \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi - \globaldefs = 1 - % - \parskip = 3pt plus 2pt minus 1pt - \setleading{13.2pt}% - % - \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}% - }} - - % Set default to letter. - % - \letterpaper - - - \message{and turning on texinfo input format.} - - % Define macros to output various characters with catcode for normal text. - \catcode`\"=\other - \catcode`\~=\other - \catcode`\^=\other - \catcode`\_=\other - \catcode`\|=\other - \catcode`\<=\other - \catcode`\>=\other - \catcode`\+=\other - \catcode`\$=\other - \def\normaldoublequote{"} - \def\normaltilde{~} - \def\normalcaret{^} - \def\normalunderscore{_} - \def\normalverticalbar{|} - \def\normalless{<} - \def\normalgreater{>} - \def\normalplus{+} - \def\normaldollar{$} - - % This macro is used to make a character print one way in ttfont - % where it can probably just be output, and another way in other fonts, - % where something hairier probably needs to be done. - % - % #1 is what to print if we are indeed using \tt; #2 is what to print - % otherwise. Since all the Computer Modern typewriter fonts have zero - % interword stretch (and shrink), and it is reasonable to expect all - % typewriter fonts to have this, we can check that font parameter. - % - \def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} - - % Same as above, but check for italic font. Actually this also catches - % non-italic slanted fonts since it is impossible to distinguish them from - % italic fonts. But since this is only used by $ and it uses \sl anyway - % this is not a problem. - \def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} - - % Turn off all special characters except @ - % (and those which the user can use as if they were ordinary). - % Most of these we simply print from the \tt font, but for some, we can - % use math or other variants that look better in normal text. - - \catcode`\"=\active - \def\activedoublequote{{\tt\char34}} - \let"=\activedoublequote - \catcode`\~=\active - \def~{{\tt\char126}} - \chardef\hat=`\^ - \catcode`\^=\active - \def^{{\tt \hat}} - - \catcode`\_=\active - \def_{\ifusingtt\normalunderscore\_} - % Subroutine for the previous macro. - \def\_{\leavevmode \kern.06em \vbox{\hrule width.3em height.1ex}} - - \catcode`\|=\active - \def|{{\tt\char124}} - \chardef \less=`\< - \catcode`\<=\active - \def<{{\tt \less}} - \chardef \gtr=`\> - \catcode`\>=\active - \def>{{\tt \gtr}} - \catcode`\+=\active - \def+{{\tt \char 43}} - \catcode`\$=\active - \def${\ifusingit{{\sl\$}}\normaldollar} - %\catcode 27=\active - %\def^^[{$\diamondsuit$} - - % Set up an active definition for =, but don't enable it most of the time. - {\catcode`\==\active - \global\def={{\tt \char 61}}} - - \catcode`+=\active - \catcode`\_=\active - - % If a .fmt file is being used, characters that might appear in a file - % name cannot be active until we have parsed the command line. - % So turn them off again, and have \everyjob (or @setfilename) turn them on. - % \otherifyactive is called near the end of this file. - \def\otherifyactive{\catcode`+=\other \catcode`\_=\other} - - \catcode`\@=0 - - % \rawbackslashxx output one backslash character in current font - \global\chardef\rawbackslashxx=`\\ - %{\catcode`\\=\other - %@gdef@rawbackslashxx{\}} - - % \rawbackslash redefines \ as input to do \rawbackslashxx. - {\catcode`\\=\active - @gdef@rawbackslash{@let\=@rawbackslashxx }} - - % \normalbackslash outputs one backslash in fixed width font. - \def\normalbackslash{{\tt\rawbackslashxx}} - - % \catcode 17=0 % Define control-q - \catcode`\\=\active - - % Used sometimes to turn off (effectively) the active characters - % even after parsing them. - @def@turnoffactive{@let"=@normaldoublequote - @let\=@realbackslash - @let~=@normaltilde - @let^=@normalcaret - @let_=@normalunderscore - @let|=@normalverticalbar - @let<=@normalless - @let>=@normalgreater - @let+=@normalplus - @let$=@normaldollar} - - @def@normalturnoffactive{@let"=@normaldoublequote - @let\=@normalbackslash - @let~=@normaltilde - @let^=@normalcaret - @let_=@normalunderscore - @let|=@normalverticalbar - @let<=@normalless - @let>=@normalgreater - @let+=@normalplus - @let$=@normaldollar} - - % Make _ and + \other characters, temporarily. - % This is canceled by @fixbackslash. - @otherifyactive - - % If a .fmt file is being used, we don't want the `\input texinfo' to show up. - % That is what \eatinput is for; after that, the `\' should revert to printing - % a backslash. - % - @gdef@eatinput input texinfo{@fixbackslash} - @global@let\ = @eatinput - - % On the other hand, perhaps the file did not have a `\input texinfo'. Then - % the first `\{ in the file would cause an error. This macro tries to fix - % that, assuming it is called before the first `\' could plausibly occur. - % Also back turn on active characters that might appear in the input - % file name, in case not using a pre-dumped format. - % - @gdef@fixbackslash{% - @ifx\@eatinput @let\ = @normalbackslash @fi - @catcode`+=@active - @catcode`@_=@active - } - - % Say @foo, not \foo, in error messages. - @escapechar = `@@ - - % These look ok in all fonts, so just make them not special. - @catcode`@& = @other - @catcode`@# = @other - @catcode`@% = @other - - @c Set initial fonts. - @textfonts - @rm - - - @c Local variables: - @c eval: (add-hook 'write-file-hooks 'time-stamp) - @c page-delimiter: "^\\\\message" - @c time-stamp-start: "def\\\\texinfoversion{" - @c time-stamp-format: "%:y-%02m-%02d.%02H" - @c time-stamp-end: "}" - @c End: --- 0 ---- diff -Nrc3pad gcc-3.0/gcc/doc/tm.texi gcc-3.0.1/gcc/doc/tm.texi *** gcc-3.0/gcc/doc/tm.texi Thu Jun 14 15:54:21 2001 --- gcc-3.0.1/gcc/doc/tm.texi Mon Aug 6 14:26:25 2001 *************** If this macro is not defined, the defaul *** 104,118 **** @findex CPP_SPEC @item CPP_SPEC A C string constant that tells the GCC driver program options to ! pass to CPP. It can also specify how to translate options you ! give to GCC into options for GCC to pass to the CPP. Do not define this macro if it does not need to do anything. @findex CPLUSPLUS_CPP_SPEC @item CPLUSPLUS_CPP_SPEC This macro is just like @code{CPP_SPEC}, but is used for C++, rather ! than C. If you do not define this macro, then the value of @code{CPP_SPEC} (if any) will be used instead. @findex NO_BUILTIN_SIZE_TYPE --- 104,118 ---- @findex CPP_SPEC @item CPP_SPEC A C string constant that tells the GCC driver program options to ! pass to CPP@. It can also specify how to translate options you ! give to GCC into options for GCC to pass to the CPP@. Do not define this macro if it does not need to do anything. @findex CPLUSPLUS_CPP_SPEC @item CPLUSPLUS_CPP_SPEC This macro is just like @code{CPP_SPEC}, but is used for C++, rather ! than C@. If you do not define this macro, then the value of @code{CPP_SPEC} (if any) will be used instead. @findex NO_BUILTIN_SIZE_TYPE *************** be defined. *** 158,164 **** @findex SIGNED_CHAR_SPEC @item SIGNED_CHAR_SPEC A C string constant that tells the GCC driver program options to ! pass to CPP. By default, this macro is defined to pass the option @option{-D__CHAR_UNSIGNED__} to CPP if @code{char} will be treated as @code{unsigned char} by @code{cc1}. --- 158,164 ---- @findex SIGNED_CHAR_SPEC @item SIGNED_CHAR_SPEC A C string constant that tells the GCC driver program options to ! pass to CPP@. By default, this macro is defined to pass the option @option{-D__CHAR_UNSIGNED__} to CPP if @code{char} will be treated as @code{unsigned char} by @code{cc1}. *************** give to GCC into options for GCC to pass *** 184,190 **** Do not define this macro if it does not need to do anything. Note that everything defined in CC1_SPEC is already passed to @code{cc1plus} so there is no need to duplicate the contents of ! CC1_SPEC in CC1PLUS_SPEC. @findex ASM_SPEC @item ASM_SPEC --- 184,190 ---- Do not define this macro if it does not need to do anything. Note that everything defined in CC1_SPEC is already passed to @code{cc1plus} so there is no need to duplicate the contents of ! CC1_SPEC in CC1PLUS_SPEC@. @findex ASM_SPEC @item ASM_SPEC *************** the effect you need. *** 337,343 **** @findex LINK_ELIMINATE_DUPLICATE_LDIRECTORIES @item LINK_ELIMINATE_DUPLICATE_LDIRECTORIES ! A nonzero value causes collect2 to remove duplicate -L search directories from linking commands. Do not give it a nonzero value if removing duplicate search directories changes the linker's semantics. --- 337,343 ---- @findex LINK_ELIMINATE_DUPLICATE_LDIRECTORIES @item LINK_ELIMINATE_DUPLICATE_LDIRECTORIES ! A nonzero value causes collect2 to remove duplicate @option{-L@var{directory}} search directories from linking commands. Do not give it a nonzero value if removing duplicate search directories changes the linker's semantics. *************** usually consists of @code{GCC_INCLUDE_DI *** 468,474 **** @code{SYSTEM_INCLUDE_DIR}, @code{GPLUSPLUS_INCLUDE_DIR}, and @code{STANDARD_INCLUDE_DIR}. In addition, @code{GPLUSPLUS_INCLUDE_DIR} and @code{GCC_INCLUDE_DIR} are defined automatically by @file{Makefile}, ! and specify private search areas for GCC. The directory @code{GPLUSPLUS_INCLUDE_DIR} is used only for C++ programs. The definition should be an initializer for an array of structures. --- 468,474 ---- @code{SYSTEM_INCLUDE_DIR}, @code{GPLUSPLUS_INCLUDE_DIR}, and @code{STANDARD_INCLUDE_DIR}. In addition, @code{GPLUSPLUS_INCLUDE_DIR} and @code{GCC_INCLUDE_DIR} are defined automatically by @file{Makefile}, ! and specify private search areas for GCC@. The directory @code{GPLUSPLUS_INCLUDE_DIR} is used only for C++ programs. The definition should be an initializer for an array of structures. *************** RTX to hold the register containing the *** 765,771 **** RTX can then be used to implement the @code{__builtin_return_address} function, for level 0. ! Note - earlier implementations of GCC used a single data area to hold all of the per-function information. Thus when processing of a nested function began the old per-function data had to be pushed onto a stack, and when the processing was finished, it had to be popped off the --- 765,771 ---- RTX can then be used to implement the @code{__builtin_return_address} function, for level 0. ! Note---earlier implementations of GCC used a single data area to hold all of the per-function information. Thus when processing of a nested function began the old per-function data had to be pushed onto a stack, and when the processing was finished, it had to be popped off the *************** macro need not be a constant. *** 847,855 **** @findex LIBGCC2_WORDS_BIG_ENDIAN @item LIBGCC2_WORDS_BIG_ENDIAN ! Define this macro if WORDS_BIG_ENDIAN is not constant. This must be a ! constant value with the same meaning as WORDS_BIG_ENDIAN, which will be ! used only when compiling libgcc2.c. Typically the value will be set based on preprocessor defines. @findex FLOAT_WORDS_BIG_ENDIAN --- 847,855 ---- @findex LIBGCC2_WORDS_BIG_ENDIAN @item LIBGCC2_WORDS_BIG_ENDIAN ! Define this macro if @code{WORDS_BIG_ENDIAN} is not constant. This must be a ! constant value with the same meaning as @code{WORDS_BIG_ENDIAN}, which will be ! used only when compiling @file{libgcc2.c}. Typically the value will be set based on preprocessor defines. @findex FLOAT_WORDS_BIG_ENDIAN *************** size of an integer. *** 957,971 **** Define this macro if there is a guaranteed alignment for the stack pointer on this machine. The definition is a C expression for the desired alignment (measured in bits). This value is used as a ! default if PREFERRED_STACK_BOUNDARY is not defined. @findex PREFERRED_STACK_BOUNDARY @item PREFERRED_STACK_BOUNDARY Define this macro if you wish to preserve a certain alignment for the stack pointer. The definition is a C expression ! for the desired alignment (measured in bits). If STACK_BOUNDARY is also defined, this macro must evaluate to a value equal to or larger ! than STACK_BOUNDARY. @cindex @code{PUSH_ROUNDING}, interaction with @code{PREFERRED_STACK_BOUNDARY} If @code{PUSH_ROUNDING} is not defined, the stack will always be aligned --- 957,977 ---- Define this macro if there is a guaranteed alignment for the stack pointer on this machine. The definition is a C expression for the desired alignment (measured in bits). This value is used as a ! default if @code{PREFERRED_STACK_BOUNDARY} is not defined. @findex PREFERRED_STACK_BOUNDARY @item PREFERRED_STACK_BOUNDARY Define this macro if you wish to preserve a certain alignment for the stack pointer. The definition is a C expression ! for the desired alignment (measured in bits). If @code{STACK_BOUNDARY} is also defined, this macro must evaluate to a value equal to or larger ! than @code{STACK_BOUNDARY}. ! ! @findex FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN ! @item FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN ! A C expression that evaluates true if @code{PREFERRED_STACK_BOUNDARY} is ! not guaranteed by the runtime and we should emit code to align the stack ! at the beginning of @code{main}. @cindex @code{PUSH_ROUNDING}, interaction with @code{PREFERRED_STACK_BOUNDARY} If @code{PUSH_ROUNDING} is not defined, the stack will always be aligned *************** This macro need not be defined if there *** 1233,1250 **** @findex TARGET_FLOAT_FORMAT @item TARGET_FLOAT_FORMAT A code distinguishing the floating point format of the target machine. ! There are three defined values: @table @code @findex IEEE_FLOAT_FORMAT @item IEEE_FLOAT_FORMAT This code indicates IEEE floating point. It is the default; there is no ! need to define this macro when the format is IEEE. @findex VAX_FLOAT_FORMAT @item VAX_FLOAT_FORMAT This code indicates the peculiar format used on the Vax. @findex UNKNOWN_FLOAT_FORMAT @item UNKNOWN_FLOAT_FORMAT This code indicates any other format. --- 1239,1264 ---- @findex TARGET_FLOAT_FORMAT @item TARGET_FLOAT_FORMAT A code distinguishing the floating point format of the target machine. ! There are five defined values: @table @code @findex IEEE_FLOAT_FORMAT @item IEEE_FLOAT_FORMAT This code indicates IEEE floating point. It is the default; there is no ! need to define this macro when the format is IEEE@. @findex VAX_FLOAT_FORMAT @item VAX_FLOAT_FORMAT This code indicates the peculiar format used on the Vax. + @findex IBM_FLOAT_FORMAT + @item IBM_FLOAT_FORMAT + This code indicates the format used on the IBM System/370. + + @findex C4X_FLOAT_FORMAT + @item C4X_FLOAT_FORMAT + This code indicates the format used on the TMS320C3x/C4x. + @findex UNKNOWN_FLOAT_FORMAT @item UNKNOWN_FLOAT_FORMAT This code indicates any other format. *************** target machine. If this is undefined, t *** 1336,1341 **** --- 1350,1361 ---- largest value that @code{CHAR_TYPE_SIZE} can have at run-time. This is used in @code{cpp}. + @findex BOOL_TYPE_SIZE + @item BOOL_TYPE_SIZE + A C expression for the size in bits of the C++ type @code{bool} on the + target machine. If you don't define this, the default is + @code{CHAR_TYPE_SIZE}. + @findex FLOAT_TYPE_SIZE @item FLOAT_TYPE_SIZE A C expression for the size in bits of the type @code{float} on the *************** You need not define this macro if it has *** 1649,1655 **** If the usage of an entire class of registers depends on the target flags, you may indicate this to GCC by using this macro to modify @code{fixed_regs} and @code{call_used_regs} to 1 for each of the ! registers in the classes which should not be used by GCC. Also define the macro @code{REG_CLASS_FROM_LETTER} to return @code{NO_REGS} if it is called with a letter for a class that shouldn't be used. --- 1669,1675 ---- If the usage of an entire class of registers depends on the target flags, you may indicate this to GCC by using this macro to modify @code{fixed_regs} and @code{call_used_regs} to 1 for each of the ! registers in the classes which should not be used by GCC@. Also define the macro @code{REG_CLASS_FROM_LETTER} to return @code{NO_REGS} if it is called with a letter for a class that shouldn't be used. *************** from general registers, but not memory. *** 2172,2178 **** registers to and from memory, but require a scratch register for stores to some memory locations (e.g., those with symbolic address on the RT, and those with certain symbolic address on the Sparc when compiling ! PIC). In some cases, both an intermediate and a scratch register are required. You should define these macros to indicate to the reload phase that it may --- 2192,2198 ---- registers to and from memory, but require a scratch register for stores to some memory locations (e.g., those with symbolic address on the RT, and those with certain symbolic address on the Sparc when compiling ! PIC)@. In some cases, both an intermediate and a scratch register are required. You should define these macros to indicate to the reload phase that it may *************** You only need to define this macro if yo *** 2537,2543 **** debugging information like that provided by DWARF 2. If this RTL is a @code{REG}, you should also define ! DWARF_FRAME_RETURN_COLUMN to @code{DWARF_FRAME_REGNUM (REGNO)}. @findex INCOMING_FRAME_SP_OFFSET @item INCOMING_FRAME_SP_OFFSET --- 2557,2563 ---- debugging information like that provided by DWARF 2. If this RTL is a @code{REG}, you should also define ! @code{DWARF_FRAME_RETURN_COLUMN} to @code{DWARF_FRAME_REGNUM (REGNO)}. @findex INCOMING_FRAME_SP_OFFSET @item INCOMING_FRAME_SP_OFFSET *************** If you want to support call frame except *** 2617,2630 **** define either this macro or the @code{eh_return} instruction pattern. @findex ASM_PREFERRED_EH_DATA_FORMAT ! @item ASM_PREFERRED_EH_DATA_FORMAT(@var{CODE}, @var{GLOBAL}) This macro chooses the encoding of pointers embedded in the exception handling sections. If at all possible, this should be defined such that the exception handling section will not require dynamic relocations, and so may be read-only. ! @var{CODE} is 0 for data, 1 for code labels, 2 for function pointers. ! @var{GLOBAL} is true if the symbol may be affected by dynamic relocations. The macro should return a combination of the @code{DW_EH_PE_*} defines as found in @file{dwarf2.h}. --- 2637,2650 ---- define either this macro or the @code{eh_return} instruction pattern. @findex ASM_PREFERRED_EH_DATA_FORMAT ! @item ASM_PREFERRED_EH_DATA_FORMAT(@var{code}, @var{global}) This macro chooses the encoding of pointers embedded in the exception handling sections. If at all possible, this should be defined such that the exception handling section will not require dynamic relocations, and so may be read-only. ! @var{code} is 0 for data, 1 for code labels, 2 for function pointers. ! @var{global} is true if the symbol may be affected by dynamic relocations. The macro should return a combination of the @code{DW_EH_PE_*} defines as found in @file{dwarf2.h}. *************** If this macro is not defined, pointers w *** 2632,2646 **** represented directly. @findex ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX ! @item ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(@var{FILE}, @var{ENCODING}, @var{SIZE}, @var{ADDR}, @var{DONE}) This macro allows the target to emit whatever special magic is required to represent the encoding chosen by @code{ASM_PREFERRED_EH_DATA_FORMAT}. Generic code takes care of pc-relative and indirect encodings; this must be defined if the target uses text-relative or data-relative encodings. ! This is a C statement that branches to @var{DONE} if the format was ! handled. @var{ENCODING} is the format chosen, @var{SIZE} is the number ! of bytes that the format occupies, @var{ADDR} is the @code{SYMBOL_REF} to be emitted. @findex SMALL_STACK --- 2652,2666 ---- represented directly. @findex ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX ! @item ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(@var{file}, @var{encoding}, @var{size}, @var{addr}, @var{done}) This macro allows the target to emit whatever special magic is required to represent the encoding chosen by @code{ASM_PREFERRED_EH_DATA_FORMAT}. Generic code takes care of pc-relative and indirect encodings; this must be defined if the target uses text-relative or data-relative encodings. ! This is a C statement that branches to @var{done} if the format was ! handled. @var{encoding} is the format chosen, @var{size} is the number ! of bytes that the format occupies, @var{addr} is the @code{SYMBOL_REF} to be emitted. @findex SMALL_STACK *************** register windows are used, the register *** 2807,2813 **** function is @code{STATIC_CHAIN_INCOMING_REGNUM}, while the register number as seen by the calling function is @code{STATIC_CHAIN_REGNUM}. If these registers are the same, @code{STATIC_CHAIN_INCOMING_REGNUM} need ! not be defined.@refill The static chain register need not be a fixed register. --- 2827,2833 ---- function is @code{STATIC_CHAIN_INCOMING_REGNUM}, while the register number as seen by the calling function is @code{STATIC_CHAIN_REGNUM}. If these registers are the same, @code{STATIC_CHAIN_INCOMING_REGNUM} need ! not be defined. The static chain register need not be a fixed register. *************** If the static chain is passed in memory, *** 2823,2829 **** @code{STATIC_CHAIN} and @code{STATIC_CHAIN_INCOMING} give the locations as seen by the calling and called functions, respectively. Often the former will be at an offset from the stack pointer and the latter at an offset from ! the frame pointer.@refill @findex stack_pointer_rtx @findex frame_pointer_rtx --- 2843,2849 ---- @code{STATIC_CHAIN} and @code{STATIC_CHAIN_INCOMING} give the locations as seen by the calling and called functions, respectively. Often the former will be at an offset from the stack pointer and the latter at an offset from ! the frame pointer. @findex stack_pointer_rtx @findex frame_pointer_rtx *************** In certain cases, the compiler does not *** 2859,2865 **** without a frame pointer. The compiler recognizes those cases and automatically gives the function a frame pointer regardless of what @code{FRAME_POINTER_REQUIRED} says. You don't need to worry about ! them.@refill In a function that does not require a frame pointer, the frame pointer register can be allocated for ordinary usage, unless you mark it as a --- 2879,2885 ---- without a frame pointer. The compiler recognizes those cases and automatically gives the function a frame pointer regardless of what @code{FRAME_POINTER_REQUIRED} says. You don't need to worry about ! them. In a function that does not require a frame pointer, the frame pointer register can be allocated for ordinary usage, unless you mark it as a *************** header files, it defaults to 0. *** 2951,2962 **** @findex PUSH_ARGS @item PUSH_ARGS ! A C expression. If nonzero, push insns will be used to pass outgoing arguments. If the target machine does not have a push instruction, set it to zero. That directs GCC to use an alternate strategy: to allocate the entire argument block and then store the arguments into ! it. When PUSH_ARGS is nonzero, PUSH_ROUNDING must be defined too. On some machines, the definition @findex PUSH_ROUNDING --- 2971,2982 ---- @findex PUSH_ARGS @item PUSH_ARGS ! A C expression. If nonzero, push insns will be used to pass outgoing arguments. If the target machine does not have a push instruction, set it to zero. That directs GCC to use an alternate strategy: to allocate the entire argument block and then store the arguments into ! it. When @code{PUSH_ARGS} is nonzero, @code{PUSH_ROUNDING} must be defined too. On some machines, the definition @findex PUSH_ROUNDING *************** alignment. Then the definition should b *** 2982,2988 **** @findex ACCUMULATE_OUTGOING_ARGS @findex current_function_outgoing_args_size @item ACCUMULATE_OUTGOING_ARGS ! A C expression. If nonzero, the maximum amount of space required for outgoing arguments will be computed and placed into the variable @code{current_function_outgoing_args_size}. No space will be pushed onto the stack for each call; instead, the function prologue should --- 3002,3008 ---- @findex ACCUMULATE_OUTGOING_ARGS @findex current_function_outgoing_args_size @item ACCUMULATE_OUTGOING_ARGS ! A C expression. If nonzero, the maximum amount of space required for outgoing arguments will be computed and placed into the variable @code{current_function_outgoing_args_size}. No space will be pushed onto the stack for each call; instead, the function prologue should *************** after the function returns. *** 3066,3072 **** @var{fundecl} is a C variable whose value is a tree node that describes the function in question. Normally it is a node of type @code{FUNCTION_DECL} that describes the declaration of the function. ! From this you can obtain the DECL_MACHINE_ATTRIBUTES of the function. @var{funtype} is a C variable whose value is a tree node that describes the function in question. Normally it is a node of type --- 3086,3092 ---- @var{fundecl} is a C variable whose value is a tree node that describes the function in question. Normally it is a node of type @code{FUNCTION_DECL} that describes the declaration of the function. ! From this you can obtain the @code{DECL_MACHINE_ATTRIBUTES} of the function. @var{funtype} is a C variable whose value is a tree node that describes the function in question. Normally it is a node of type *************** argument on the stack. *** 3127,3133 **** For machines like the Vax and 68000, where normally all arguments are pushed, zero suffices as a definition. ! The value of the expression can also be a @code{parallel} RTX. This is used when an argument is passed in multiple locations. The mode of the of the @code{parallel} should be the mode of the entire argument. The @code{parallel} holds any number of @code{expr_list} pairs; each one --- 3147,3153 ---- For machines like the Vax and 68000, where normally all arguments are pushed, zero suffices as a definition. ! The value of the expression can also be a @code{parallel} RTX@. This is used when an argument is passed in multiple locations. The mode of the of the @code{parallel} should be the mode of the entire argument. The @code{parallel} holds any number of @code{expr_list} pairs; each one *************** be defined in a similar fashion to tell *** 3177,3183 **** where the arguments will arrive. If @code{FUNCTION_INCOMING_ARG} is not defined, @code{FUNCTION_ARG} ! serves both purposes.@refill @findex FUNCTION_ARG_PARTIAL_NREGS @item FUNCTION_ARG_PARTIAL_NREGS (@var{cum}, @var{mode}, @var{type}, @var{named}) --- 3197,3203 ---- where the arguments will arrive. If @code{FUNCTION_INCOMING_ARG} is not defined, @code{FUNCTION_ARG} ! serves both purposes. @findex FUNCTION_ARG_PARTIAL_NREGS @item FUNCTION_ARG_PARTIAL_NREGS (@var{cum}, @var{mode}, @var{type}, @var{named}) *************** definition of this macro might be *** 3221,3227 **** If defined, a C expression that indicates when it is the called function's responsibility to make a copy of arguments passed by invisible reference. Normally, the caller makes a copy and passes the address of the copy to the ! routine being called. When FUNCTION_ARG_CALLEE_COPIES is defined and is nonzero, the caller does not make a copy. Instead, it passes a pointer to the ``live'' value. The called function must not modify this value. If it can be determined that the value won't be modified, it need not make a copy; --- 3241,3247 ---- If defined, a C expression that indicates when it is the called function's responsibility to make a copy of arguments passed by invisible reference. Normally, the caller makes a copy and passes the address of the copy to the ! routine being called. When @code{FUNCTION_ARG_CALLEE_COPIES} is defined and is nonzero, the caller does not make a copy. Instead, it passes a pointer to the ``live'' value. The called function must not modify this value. If it can be determined that the value won't be modified, it need not make a copy; *************** finding the arguments for the function b *** 3276,3282 **** undefined, @code{INIT_CUMULATIVE_ARGS} is used instead. The value passed for @var{libname} is always 0, since library routines ! with special calling conventions are never compiled with GCC. The argument @var{libname} exists for symmetry with @code{INIT_CUMULATIVE_ARGS}. @c could use "this macro" in place of @code{INIT_CUMULATIVE_ARGS}, maybe. --- 3296,3302 ---- undefined, @code{INIT_CUMULATIVE_ARGS} is used instead. The value passed for @var{libname} is always 0, since library routines ! with special calling conventions are never compiled with GCC@. The argument @var{libname} exists for symmetry with @code{INIT_CUMULATIVE_ARGS}. @c could use "this macro" in place of @code{INIT_CUMULATIVE_ARGS}, maybe. *************** A C statement (sans semicolon) to update *** 3288,3294 **** @var{cum} to advance past an argument in the argument list. The values @var{mode}, @var{type} and @var{named} describe that argument. Once this is done, the variable @var{cum} is suitable for analyzing ! the @emph{following} argument with @code{FUNCTION_ARG}, etc.@refill This macro need not do anything if the argument in question was passed on the stack. The compiler knows how to track the amount of stack space --- 3308,3314 ---- @var{cum} to advance past an argument in the argument list. The values @var{mode}, @var{type} and @var{named} describe that argument. Once this is done, the variable @var{cum} is suitable for analyzing ! the @emph{following} argument with @code{FUNCTION_ARG}, etc. This macro need not do anything if the argument in question was passed on the stack. The compiler knows how to track the amount of stack space *************** a tree node representing a data type. W *** 3365,3371 **** (@var{valtype})} to get the machine mode used to represent that type. On many machines, only the mode is relevant. (Actually, on most machines, scalar values are returned in the same place regardless of ! mode).@refill The value of the expression is usually a @code{reg} RTX for the hard register where the return value is stored. The value can also be a --- 3385,3391 ---- (@var{valtype})} to get the machine mode used to represent that type. On many machines, only the mode is relevant. (Actually, on most machines, scalar values are returned in the same place regardless of ! mode). The value of the expression is usually a @code{reg} RTX for the hard register where the return value is stored. The value can also be a *************** If the precise function being called is *** 3380,3386 **** node (@code{FUNCTION_DECL}) for it; otherwise, @var{func} is a null pointer. This makes it possible to use a different value-returning convention for specific functions when all their calls are ! known.@refill @code{FUNCTION_VALUE} is not used for return vales with aggregate data types, because these are returned in another way. See --- 3400,3406 ---- node (@code{FUNCTION_DECL}) for it; otherwise, @var{func} is a null pointer. This makes it possible to use a different value-returning convention for specific functions when all their calls are ! known. @code{FUNCTION_VALUE} is not used for return vales with aggregate data types, because these are returned in another way. See *************** the same as the one in which the caller *** 3395,3404 **** For such machines, @code{FUNCTION_VALUE} computes the register in which the caller will see the value. @code{FUNCTION_OUTGOING_VALUE} should be defined in a similar fashion to tell the function where to put the ! value.@refill If @code{FUNCTION_OUTGOING_VALUE} is not defined, ! @code{FUNCTION_VALUE} serves both purposes.@refill @code{FUNCTION_OUTGOING_VALUE} is not used for return vales with aggregate data types, because these are returned in another way. See --- 3415,3424 ---- For such machines, @code{FUNCTION_VALUE} computes the register in which the caller will see the value. @code{FUNCTION_OUTGOING_VALUE} should be defined in a similar fashion to tell the function where to put the ! value. If @code{FUNCTION_OUTGOING_VALUE} is not defined, ! @code{FUNCTION_VALUE} serves both purposes. @code{FUNCTION_OUTGOING_VALUE} is not used for return vales with aggregate data types, because these are returned in another way. See *************** being called is known, @var{func} is a t *** 3412,3418 **** (@code{FUNCTION_DECL}) for it; otherwise, @var{func} is a null pointer. This makes it possible to use a different value-returning convention for specific functions when all their calls are ! known.@refill Note that ``library function'' in this context means a compiler support routine, used to perform arithmetic, whose name is known --- 3432,3438 ---- (@code{FUNCTION_DECL}) for it; otherwise, @var{func} is a null pointer. This makes it possible to use a different value-returning convention for specific functions when all their calls are ! known. Note that ``library function'' in this context means a compiler support routine, used to perform arithmetic, whose name is known *************** to indicate this. *** 3487,3493 **** @item DEFAULT_PCC_STRUCT_RETURN Define this macro to be 1 if all structure and union return values must be in memory. Since this results in slower code, this should be defined ! only if needed for compatibility with other compilers or with an ABI. If you define this macro to be 0, then the conventions used for structure and union return values are decided by the @code{RETURN_IN_MEMORY} macro. --- 3507,3513 ---- @item DEFAULT_PCC_STRUCT_RETURN Define this macro to be 1 if all structure and union return values must be in memory. Since this results in slower code, this should be defined ! only if needed for compatibility with other compilers or with an ABI@. If you define this macro to be 0, then the conventions used for structure and union return values are decided by the @code{RETURN_IN_MEMORY} macro. *************** arguments. But usually, on such machine *** 3638,3644 **** yet, because the function prologue itself does all the pushing.) This region is used on machines where an argument may be passed partly in registers and partly in memory, and, in some cases to support the ! features in @file{varargs.h} and @file{stdarg.h}. @item An area of memory used to save certain registers used by the function. --- 3658,3664 ---- yet, because the function prologue itself does all the pushing.) This region is used on machines where an argument may be passed partly in registers and partly in memory, and, in some cases to support the ! features in @code{} and @code{}. @item An area of memory used to save certain registers used by the function. *************** First, emit code to add the integer @var *** 3775,3781 **** contains the incoming first argument. Assume that this argument contains a pointer, and is the one used to pass the @code{this} pointer in C++. This is the incoming argument @emph{before} the function prologue, ! e.g. @samp{%o0} on a sparc. The addition must preserve the values of all other incoming arguments. After the addition, emit code to jump to @var{function}, which is a --- 3795,3801 ---- contains the incoming first argument. Assume that this argument contains a pointer, and is the one used to pass the @code{this} pointer in C++. This is the incoming argument @emph{before} the function prologue, ! e.g.@: @samp{%o0} on a sparc. The addition must preserve the values of all other incoming arguments. After the addition, emit code to jump to @var{function}, which is a *************** assembler code to call the profiling sub *** 3812,3818 **** @findex mcount The details of how @code{mcount} expects to be called are determined by ! your operating system environment, not by GCC. To figure them out, compile a small program for profiling using the system's installed C compiler and look at the assembler code that results. --- 3832,3838 ---- @findex mcount The details of how @code{mcount} expects to be called are determined by ! your operating system environment, not by GCC@. To figure them out, compile a small program for profiling using the system's installed C compiler and look at the assembler code that results. *************** that you know will result. *** 3868,3874 **** The first word of this block is a flag which will be nonzero if the object module has already been initialized. So test this word first, and do not call @code{__bb_init_func} if the flag is ! nonzero. BLOCK_OR_LABEL contains a unique number which may be used to generate a label as a branch destination when @code{__bb_init_func} will not be called. --- 3888,3894 ---- The first word of this block is a flag which will be nonzero if the object module has already been initialized. So test this word first, and do not call @code{__bb_init_func} if the flag is ! nonzero. @var{labelno} contains a unique number which may be used to generate a label as a branch destination when @code{__bb_init_func} will not be called. *************** local_label: *** 3887,3900 **** Output code to call the subroutine @code{__bb_init_trace_func} and pass two parameters to it. The first parameter is the same as for @code{__bb_init_func}. The second parameter is the number of the ! first basic block of the function as given by BLOCK_OR_LABEL. Note that @code{__bb_init_trace_func} has to be called, even if the object module has been initialized already. Described in assembler language, the code to be output looks like: @example parameter1 <- LPBX0 ! parameter2 <- BLOCK_OR_LABEL call __bb_init_trace_func @end example @end table --- 3907,3920 ---- Output code to call the subroutine @code{__bb_init_trace_func} and pass two parameters to it. The first parameter is the same as for @code{__bb_init_func}. The second parameter is the number of the ! first basic block of the function as given by @var{labelno}. Note that @code{__bb_init_trace_func} has to be called, even if the object module has been initialized already. Described in assembler language, the code to be output looks like: @example parameter1 <- LPBX0 ! parameter2 <- @var{labelno} call __bb_init_trace_func @end example @end table *************** that you know will result. *** 3929,3935 **** Described in assembler language, the code to be output looks like: @smallexample ! inc (LPBX2+4*BLOCKNO) @end smallexample @vindex __bb --- 3949,3955 ---- Described in assembler language, the code to be output looks like: @smallexample ! inc (LPBX2+4*@var{blockno}) @end smallexample @vindex __bb *************** call the function @code{__bb_trace_func} *** 3940,3946 **** counter. @code{__bb} consists of two words. In the first word, the current ! basic block number, as given by BLOCKNO, has to be stored. In the second word, the address of a block allocated in the object module has to be stored. The address is given by the label created with this statement: --- 3960,3966 ---- counter. @code{__bb} consists of two words. In the first word, the current ! basic block number, as given by @var{blockno}, has to be stored. In the second word, the address of a block allocated in the object module has to be stored. The address is given by the label created with this statement: *************** ASM_GENERATE_INTERNAL_LABEL (@var{buffer *** 3951,3957 **** Described in assembler language, the code to be output looks like: @example ! move BLOCKNO -> (__bb) move LPBX0 -> (__bb+4) call __bb_trace_func @end example --- 3971,3977 ---- Described in assembler language, the code to be output looks like: @example ! move @var{blockno} -> (__bb) move LPBX0 -> (__bb+4) call __bb_trace_func @end example *************** assembler code to call function @code{__ *** 3966,3972 **** assembler code should only be output if the global compile flag @code{profile_block_flag} == 2. This macro has to be used at every place where code for returning from ! a function is generated (e.g. @code{FUNCTION_EPILOGUE}). Although you have to write the definition of @code{FUNCTION_EPILOGUE} as well, you have to define this macro to tell the compiler, that the proper call to @code{__bb_trace_ret} is produced. --- 3986,3992 ---- assembler code should only be output if the global compile flag @code{profile_block_flag} == 2. This macro has to be used at every place where code for returning from ! a function is generated (e.g.@: @code{FUNCTION_EPILOGUE}). Although you have to write the definition of @code{FUNCTION_EPILOGUE} as well, you have to define this macro to tell the compiler, that the proper call to @code{__bb_trace_ret} is produced. *************** as the @code{sibcall} md pattern can not *** 4056,4068 **** @section Implementing the Varargs Macros @cindex varargs implementation ! GCC comes with an implementation of @file{varargs.h} and ! @file{stdarg.h} that work without change on machines that pass arguments on the stack. Other machines require their own implementations of varargs, and the two machine independent header files must have conditionals to include it. ! ISO @file{stdarg.h} differs from traditional @file{varargs.h} mainly in the calling convention for @code{va_start}. The traditional implementation takes just one argument, which is the variable in which to store the argument pointer. The ISO implementation of --- 4076,4088 ---- @section Implementing the Varargs Macros @cindex varargs implementation ! GCC comes with an implementation of @code{} and ! @code{} that work without change on machines that pass arguments on the stack. Other machines require their own implementations of varargs, and the two machine independent header files must have conditionals to include it. ! ISO @code{} differs from traditional @code{} mainly in the calling convention for @code{va_start}. The traditional implementation takes just one argument, which is the variable in which to store the argument pointer. The ISO implementation of *************** values accessed by @code{__builtin_args_ *** 4122,4128 **** @item __builtin_next_arg (@var{lastarg}) This is the equivalent of @code{__builtin_args_info}, for stack arguments. It returns the address of the first anonymous stack ! argument, as type @code{void *}. If @code{ARGS_GROW_DOWNWARD}, it returns the address of the location above the first anonymous stack argument. Use it in @code{va_start} to initialize the pointer for fetching arguments from the stack. Also use it in @code{va_start} to --- 4142,4148 ---- @item __builtin_next_arg (@var{lastarg}) This is the equivalent of @code{__builtin_args_info}, for stack arguments. It returns the address of the first anonymous stack ! argument, as type @code{void *}. If @code{ARGS_GROW_DOWNWARD}, it returns the address of the location above the first anonymous stack argument. Use it in @code{va_start} to initialize the pointer for fetching arguments from the stack. Also use it in @code{va_start} to *************** the instruction cache directly, you can *** 4353,4364 **** @table @code @findex CLEAR_INSN_CACHE ! @item CLEAR_INSN_CACHE (@var{BEG}, @var{END}) If defined, expands to a C expression clearing the @emph{instruction cache} in the specified interval. If it is not defined, and the macro ! INSN_CACHE_SIZE is defined, some generic code is generated to clear the cache. The definition of this macro would typically be a series of ! @code{asm} statements. Both @var{BEG} and @var{END} are both pointer expressions. @end table --- 4373,4384 ---- @table @code @findex CLEAR_INSN_CACHE ! @item CLEAR_INSN_CACHE (@var{beg}, @var{end}) If defined, expands to a C expression clearing the @emph{instruction cache} in the specified interval. If it is not defined, and the macro ! @code{INSN_CACHE_SIZE} is defined, some generic code is generated to clear the cache. The definition of this macro would typically be a series of ! @code{asm} statements. Both @var{beg} and @var{end} are both pointer expressions. @end table *************** its cache line. Look in @file{m68k.h} a *** 4373,4379 **** @item TRANSFER_FROM_TRAMPOLINE Define this macro if trampolines need a special subroutine to do their work. The macro should expand to a series of @code{asm} statements ! which will be compiled with GCC. They go in a library function named @code{__transfer_from_trampoline}. If you need to avoid executing the ordinary prologue code of a compiled --- 4393,4399 ---- @item TRANSFER_FROM_TRAMPOLINE Define this macro if trampolines need a special subroutine to do their work. The macro should expand to a series of @code{asm} statements ! which will be compiled with GCC@. They go in a library function named @code{__transfer_from_trampoline}. If you need to avoid executing the ordinary prologue code of a compiled *************** not define this macro, the default name *** 4466,4472 **** @findex INIT_TARGET_OPTABS @item INIT_TARGET_OPTABS Define this macro as a C statement that declares additional library ! routines renames existing ones. @code{init_optabs} calls this macro after initializing all the normal library routines. @findex FLOAT_LIB_COMPARE_RETURNS_BOOL (@var{mode}, @var{comparison}) --- 4486,4492 ---- @findex INIT_TARGET_OPTABS @item INIT_TARGET_OPTABS Define this macro as a C statement that declares additional library ! routines renames existing ones. @code{init_optabs} calls this macro after initializing all the normal library routines. @findex FLOAT_LIB_COMPARE_RETURNS_BOOL (@var{mode}, @var{comparison}) *************** Subroutines to check for acceptable regi *** 4693,4699 **** for base registers, one for index registers, and so on) are typically among the subroutines used to define @code{GO_IF_LEGITIMATE_ADDRESS}. Then only these subroutine macros need have two variants; the higher ! levels of macros may be the same whether strict or not.@refill Normally, constant addresses which are the sum of a @code{symbol_ref} and an integer are stored inside a @code{const} RTX to mark them as --- 4713,4719 ---- for base registers, one for index registers, and so on) are typically among the subroutines used to define @code{GO_IF_LEGITIMATE_ADDRESS}. Then only these subroutine macros need have two variants; the higher ! levels of macros may be the same whether strict or not. Normally, constant addresses which are the sum of a @code{symbol_ref} and an integer are stored inside a @code{const} RTX to mark them as *************** It is always safe for this macro to not *** 4770,4776 **** that alias analysis can understand machine-dependent addresses. The typical use of this macro is to handle addresses containing ! a label_ref or symbol_ref within an UNSPEC. @findex LEGITIMIZE_ADDRESS @item LEGITIMIZE_ADDRESS (@var{x}, @var{oldx}, @var{mode}, @var{win}) --- 4790,4796 ---- that alias analysis can understand machine-dependent addresses. The typical use of this macro is to handle addresses containing ! a label_ref or symbol_ref within an UNSPEC@. @findex LEGITIMIZE_ADDRESS @item LEGITIMIZE_ADDRESS (@var{x}, @var{oldx}, @var{mode}, @var{win}) *************** reload register instead of two by reload *** 4812,4818 **** registers into a register. On the other hand, for number of RISC processors offsets are limited so that often an intermediate address needs to be generated in order to address a stack slot. By defining ! LEGITIMIZE_RELOAD_ADDRESS appropriately, the intermediate addresses generated for adjacent some stack slots can be made identical, and thus be shared. --- 4832,4838 ---- registers into a register. On the other hand, for number of RISC processors offsets are limited so that often an intermediate address needs to be generated in order to address a stack slot. By defining ! @code{LEGITIMIZE_RELOAD_ADDRESS} appropriately, the intermediate addresses generated for adjacent some stack slots can be made identical, and thus be shared. *************** A C expression that is nonzero if @var{x *** 4869,4875 **** an immediate operand on the target machine. You can assume that @var{x} satisfies @code{CONSTANT_P}, so you need not check this. In fact, @samp{1} is a suitable definition for this macro on machines where ! anything @code{CONSTANT_P} is valid.@refill @end table @node Condition Code --- 4889,4895 ---- an immediate operand on the target machine. You can assume that @var{x} satisfies @code{CONSTANT_P}, so you need not check this. In fact, @samp{1} is a suitable definition for this macro on machines where ! anything @code{CONSTANT_P} is valid. @end table @node Condition Code *************** ordinarily expect. *** 5188,5194 **** @findex SLOW_BYTE_ACCESS @item SLOW_BYTE_ACCESS Define this macro as a C expression which is nonzero if accessing less ! than a word of memory (i.e. a @code{char} or a @code{short}) is no faster than accessing a word of memory, i.e., if such access require more than one instruction or if there is no difference in cost between byte and (aligned) word loads. --- 5208,5214 ---- @findex SLOW_BYTE_ACCESS @item SLOW_BYTE_ACCESS Define this macro as a C expression which is nonzero if accessing less ! than a word of memory (i.e.@: a @code{char} or a @code{short}) is no faster than accessing a word of memory, i.e., if such access require more than one instruction or if there is no difference in cost between byte and (aligned) word loads. *************** If defined, a C statement that calls the *** 5413,5419 **** argument of this macro. This is used in @file{crtstuff.c} if @code{INIT_SECTION_ASM_OP} or @code{FINI_SECTION_ASM_OP} to calls to initialization and finalization functions from the init and fini ! sections. By default, this macro is a simple function call. Some ports need hand-crafted assembly code to avoid dependencies on registers initialized in the function prologue or to ensure that constant pools don't end up too far way in the text section. --- 5433,5439 ---- argument of this macro. This is used in @file{crtstuff.c} if @code{INIT_SECTION_ASM_OP} or @code{FINI_SECTION_ASM_OP} to calls to initialization and finalization functions from the init and fini ! sections. By default, this macro is a simple function call. Some ports need hand-crafted assembly code to avoid dependencies on registers initialized in the function prologue or to ensure that constant pools don't end up too far way in the text section. *************** constants in the read-only data section *** 5462,5468 **** @item SELECT_RTX_SECTION (@var{mode}, @var{rtx}) A C statement or statements to switch to the appropriate section for output of @var{rtx} in mode @var{mode}. You can assume that @var{rtx} ! is some kind of constant in RTL. The argument @var{mode} is redundant except in the case of a @code{const_int} rtx. Select the section by calling @code{text_section} or one of the alternatives for other sections. --- 5482,5488 ---- @item SELECT_RTX_SECTION (@var{mode}, @var{rtx}) A C statement or statements to switch to the appropriate section for output of @var{rtx} in mode @var{mode}. You can assume that @var{rtx} ! is some kind of constant in RTL@. The argument @var{mode} is redundant except in the case of a @code{const_int} rtx. Select the section by calling @code{text_section} or one of the alternatives for other sections. *************** unique sections. *** 5513,5519 **** @findex UNIQUE_SECTION @item UNIQUE_SECTION (@var{decl}, @var{reloc}) A C statement to build up a unique section name, expressed as a ! STRING_CST node, and assign it to @samp{DECL_SECTION_NAME (@var{decl})}. @var{reloc} indicates whether the initial value of @var{exp} requires link-time relocations. If you do not define this macro, GCC will use the symbol name prefixed by @samp{.} as the section name. Note - this --- 5533,5539 ---- @findex UNIQUE_SECTION @item UNIQUE_SECTION (@var{decl}, @var{reloc}) A C statement to build up a unique section name, expressed as a ! @code{STRING_CST} node, and assign it to @samp{DECL_SECTION_NAME (@var{decl})}. @var{reloc} indicates whether the initial value of @var{exp} requires link-time relocations. If you do not define this macro, GCC will use the symbol name prefixed by @samp{.} as the section name. Note - this *************** switch statements so that they use relat *** 5542,5548 **** @item PIC_OFFSET_TABLE_REGNUM The register number of the register used to address a table of static data addresses in memory. In some cases this register is defined by a ! processor's ``application binary interface'' (ABI). When this macro is defined, RTL is generated for this register once, as with the stack pointer and frame pointer registers. If this macro is not defined, it is up to the machine-dependent files to allocate such a register (if --- 5562,5568 ---- @item PIC_OFFSET_TABLE_REGNUM The register number of the register used to address a table of static data addresses in memory. In some cases this register is defined by a ! processor's ``application binary interface'' (ABI)@. When this macro is defined, RTL is generated for this register once, as with the stack pointer and frame pointer registers. If this macro is not defined, it is up to the machine-dependent files to allocate such a register (if *************** position independent code. *** 5585,5591 **** @section Defining the Output Assembler Language This section describes macros whose principal purpose is to describe how ! to write instructions in assembler language--rather than what the instructions do. @menu --- 5605,5611 ---- @section Defining the Output Assembler Language This section describes macros whose principal purpose is to describe how ! to write instructions in assembler language---rather than what the instructions do. @menu *************** instruction to assemble an integer of 16 *** 5754,5760 **** respectively, whose value is @var{value}. The argument @var{exp} will be an RTL expression which represents a constant value. Use @samp{output_addr_const (@var{stream}, @var{exp})} to output this value ! as an assembler expression.@refill For sizes larger than @code{UNITS_PER_WORD}, if the action of a macro would be identical to repeatedly calling the macro corresponding to --- 5774,5780 ---- respectively, whose value is @var{value}. The argument @var{exp} will be an RTL expression which represents a constant value. Use @samp{output_addr_const (@var{stream}, @var{exp})} to output this value ! as an assembler expression. For sizes larger than @code{UNITS_PER_WORD}, if the action of a macro would be identical to repeatedly calling the macro corresponding to *************** You need not define this macro if it wou *** 5849,5855 **** Define this macro as a C expression which is nonzero if the constant @var{exp}, of type @code{tree}, should be output after the code for a function. The compiler will normally output all constants before the ! function; you need not define this macro if this is OK. @findex ASM_OUTPUT_POOL_EPILOGUE @item ASM_OUTPUT_POOL_EPILOGUE (@var{file} @var{funname} @var{fundecl} @var{size}) --- 5869,5875 ---- Define this macro as a C expression which is nonzero if the constant @var{exp}, of type @code{tree}, should be output after the code for a function. The compiler will normally output all constants before the ! function; you need not define this macro if this is OK@. @findex ASM_OUTPUT_POOL_EPILOGUE @item ASM_OUTPUT_POOL_EPILOGUE (@var{file} @var{funname} @var{fundecl} @var{size}) *************** the name, and a newline. *** 5977,5983 **** This macro controls how the assembler definitions of uninitialized global variables are output. This macro exists to properly support languages like ! @code{c++} which do not have @code{common} data. However, this macro currently is not defined for all targets. If this macro and @code{ASM_OUTPUT_ALIGNED_BSS} are not defined then @code{ASM_OUTPUT_COMMON} or @code{ASM_OUTPUT_ALIGNED_COMMON} or --- 5997,6003 ---- This macro controls how the assembler definitions of uninitialized global variables are output. This macro exists to properly support languages like ! C++ which do not have @code{common} data. However, this macro currently is not defined for all targets. If this macro and @code{ASM_OUTPUT_ALIGNED_BSS} are not defined then @code{ASM_OUTPUT_COMMON} or @code{ASM_OUTPUT_ALIGNED_COMMON} or *************** A C statement to output to the stdio str *** 6292,6298 **** which defines (equates) the symbol @var{name} to have the value @var{value}. @findex SET_ASM_OP ! If SET_ASM_OP is defined, a default definition is provided which is correct for most systems. @findex ASM_OUTPUT_DEF_FROM_DECLS --- 6312,6318 ---- which defines (equates) the symbol @var{name} to have the value @var{value}. @findex SET_ASM_OP ! If @code{SET_ASM_OP} is defined, a default definition is provided which is correct for most systems. @findex ASM_OUTPUT_DEF_FROM_DECLS *************** the tree nodes are available. *** 6307,6329 **** @item ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL (@var{stream}, @var{symbol}, @var{high}, @var{low}) A C statement to output to the stdio stream @var{stream} assembler code which defines (equates) the symbol @var{symbol} to have a value equal to ! the difference of the two symbols @var{high} and @var{low}, i.e. ! @var{high} minus @var{low}. GCC guarantees that the symbols @var{high} and @var{low} are already known by the assembler so that the difference resolves into a constant. @findex SET_ASM_OP ! If SET_ASM_OP is defined, a default definition is provided which is correct for most systems. @findex ASM_OUTPUT_WEAK_ALIAS @item ASM_OUTPUT_WEAK_ALIAS (@var{stream}, @var{name}, @var{value}) A C statement to output to the stdio stream @var{stream} assembler code which defines (equates) the weak symbol @var{name} to have the value ! @var{value}. Define this macro if the target only supports weak aliases; define ! ASM_OUTPUT_DEF instead if possible. @findex OBJC_GEN_METHOD_LABEL @item OBJC_GEN_METHOD_LABEL (@var{buf}, @var{is_inst}, @var{class_name}, @var{cat_name}, @var{sel_name}) --- 6327,6350 ---- @item ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL (@var{stream}, @var{symbol}, @var{high}, @var{low}) A C statement to output to the stdio stream @var{stream} assembler code which defines (equates) the symbol @var{symbol} to have a value equal to ! the difference of the two symbols @var{high} and @var{low}, ! i.e.@: @var{high} minus @var{low}. GCC guarantees that the symbols @var{high} and @var{low} are already known by the assembler so that the difference resolves into a constant. @findex SET_ASM_OP ! If @code{SET_ASM_OP} is defined, a default definition is provided which is correct for most systems. @findex ASM_OUTPUT_WEAK_ALIAS @item ASM_OUTPUT_WEAK_ALIAS (@var{stream}, @var{name}, @var{value}) A C statement to output to the stdio stream @var{stream} assembler code which defines (equates) the weak symbol @var{name} to have the value ! @var{value}. If @var{value} is @code{NULL}, it defines @var{name} as ! an undefined weak symbol. Define this macro if the target only supports weak aliases; define ! @code{ASM_OUTPUT_DEF} instead if possible. @findex OBJC_GEN_METHOD_LABEL @item OBJC_GEN_METHOD_LABEL (@var{buf}, @var{is_inst}, @var{class_name}, @var{cat_name}, @var{sel_name}) *************** the initialization process. *** 6454,6460 **** The last variant uses neither arbitrary sections nor the GNU linker. This is preferable when you want to do dynamic linking and when using ! file formats which the GNU linker does not support, such as `ECOFF'. In this case, @code{ASM_OUTPUT_CONSTRUCTOR} does not produce an @code{N_SETT} symbol; initialization and termination functions are recognized simply by their names. This requires an extra program in the --- 6475,6481 ---- The last variant uses neither arbitrary sections nor the GNU linker. This is preferable when you want to do dynamic linking and when using ! file formats which the GNU linker does not support, such as `ECOFF'@. In this case, @code{ASM_OUTPUT_CONSTRUCTOR} does not produce an @code{N_SETT} symbol; initialization and termination functions are recognized simply by their names. This requires an extra program in the *************** Define this macro to a C string constant *** 6610,6622 **** program which lists dynamic dependencies, like @code{"ldd"} under SunOS 4. @findex PARSE_LDD_OUTPUT ! @item PARSE_LDD_OUTPUT (@var{PTR}) Define this macro to be C code that extracts filenames from the output ! of the program denoted by @code{LDD_SUFFIX}. @var{PTR} is a variable of type @code{char *} that points to the beginning of a line of output from @code{LDD_SUFFIX}. If the line lists a dynamic dependency, the ! code must advance @var{PTR} to the beginning of the filename on that ! line. Otherwise, it must set @var{PTR} to @code{NULL}. @end table --- 6631,6643 ---- program which lists dynamic dependencies, like @code{"ldd"} under SunOS 4. @findex PARSE_LDD_OUTPUT ! @item PARSE_LDD_OUTPUT (@var{ptr}) Define this macro to be C code that extracts filenames from the output ! of the program denoted by @code{LDD_SUFFIX}. @var{ptr} is a variable of type @code{char *} that points to the beginning of a line of output from @code{LDD_SUFFIX}. If the line lists a dynamic dependency, the ! code must advance @var{ptr} to the beginning of the filename on that ! line. Otherwise, it must set @var{ptr} to @code{NULL}. @end table *************** or whatever. *** 6751,6762 **** Don't define this macro if it has nothing to do, but it is helpful in reading assembly output if the extent of the delay sequence is made ! explicit (e.g. with white space). @findex final_sequence Note that output routines for instructions with delay slots must be ! prepared to deal with not being output as part of a sequence (i.e. ! when the scheduling pass is not run, or when no slot fillers could be found.) The variable @code{final_sequence} is null when not processing a sequence, otherwise it contains the @code{sequence} rtx being output. --- 6772,6783 ---- Don't define this macro if it has nothing to do, but it is helpful in reading assembly output if the extent of the delay sequence is made ! explicit (e.g.@: with white space). @findex final_sequence Note that output routines for instructions with delay slots must be ! prepared to deal with not being output as part of a sequence ! (i.e.@: when the scheduling pass is not run, or when no slot fillers could be found.) The variable @code{final_sequence} is null when not processing a sequence, otherwise it contains the @code{sequence} rtx being output. *************** fprintf (@var{stream}, "\t.word L%d-L%d\ *** 6853,6861 **** @end example You must provide this macro on machines where the addresses in a ! dispatch table are relative to the table's own address. If defined, GNU ! CC will also use this macro on all machines when producing PIC. ! @var{body} is the body of the ADDR_DIFF_VEC; it is provided so that the mode and flags can be read. @findex ASM_OUTPUT_ADDR_VEC_ELT --- 6874,6882 ---- @end example You must provide this macro on machines where the addresses in a ! dispatch table are relative to the table's own address. If defined, GCC ! will also use this macro on all machines when producing PIC@. ! @var{body} is the body of the @code{ADDR_DIFF_VEC}; it is provided so that the mode and flags can be read. @findex ASM_OUTPUT_ADDR_VEC_ELT *************** This macro need not be defined on most p *** 6958,6969 **** @findex DOESNT_NEED_UNWINDER @item DOESNT_NEED_UNWINDER A C expression that decides whether or not the current function needs to ! have a function unwinder generated for it. See the file @code{except.c} for details on when to define this, and how. @findex MASK_RETURN_ADDR @item MASK_RETURN_ADDR ! An rtx used to mask the return address found via RETURN_ADDR_RTX, so that it does not contain any extraneous set bits in it. @findex DWARF2_UNWIND_INFO --- 6979,6990 ---- @findex DOESNT_NEED_UNWINDER @item DOESNT_NEED_UNWINDER A C expression that decides whether or not the current function needs to ! have a function unwinder generated for it. See the file @file{except.c} for details on when to define this, and how. @findex MASK_RETURN_ADDR @item MASK_RETURN_ADDR ! An rtx used to mask the return address found via @code{RETURN_ADDR_RTX}, so that it does not contain any extraneous set bits in it. @findex DWARF2_UNWIND_INFO *************** or @samp{OBJECT_FORMAT_ELF}), GCC will p *** 6976,6986 **** 1. If this macro is defined to 1, the DWARF 2 unwinder will be the default ! exception handling mechanism; otherwise, setjmp/longjmp will be used by default. If this macro is defined to anything, the DWARF 2 unwinder will be used ! instead of inline unwinders and __unwind_function in the non-setjmp case. @findex DWARF_CIE_DATA_ALIGNMENT @item DWARF_CIE_DATA_ALIGNMENT --- 6997,7007 ---- 1. If this macro is defined to 1, the DWARF 2 unwinder will be the default ! exception handling mechanism; otherwise, @code{setjmp}/@code{longjmp} will be used by default. If this macro is defined to anything, the DWARF 2 unwinder will be used ! instead of inline unwinders and @code{__unwind_function} in the non-@code{setjmp} case. @findex DWARF_CIE_DATA_ALIGNMENT @item DWARF_CIE_DATA_ALIGNMENT *************** This describes commands for alignment. *** 7003,7009 **** @findex LABEL_ALIGN_AFTER_BARRIER @item LABEL_ALIGN_AFTER_BARRIER (@var{label}) The alignment (log base 2) to put in front of @var{label}, which follows ! a BARRIER. This macro need not be defined if you don't want any special alignment to be done at such a time. Most machine descriptions do not currently --- 7024,7030 ---- @findex LABEL_ALIGN_AFTER_BARRIER @item LABEL_ALIGN_AFTER_BARRIER (@var{label}) The alignment (log base 2) to put in front of @var{label}, which follows ! a @code{BARRIER}. This macro need not be defined if you don't want any special alignment to be done at such a time. Most machine descriptions do not currently *************** The maximum number of bytes to skip when *** 7024,7039 **** @findex LOOP_ALIGN @item LOOP_ALIGN (@var{label}) The alignment (log base 2) to put in front of @var{label}, which follows ! a NOTE_INSN_LOOP_BEG note. This macro need not be defined if you don't want any special alignment to be done at such a time. Most machine descriptions do not currently define the macro. Unless it's necessary to inspect the @var{label} parameter, it is better ! to set the variable @var{align_loops} in the target's @code{OVERRIDE_OPTIONS}. Otherwise, you should try to honour the user's ! selection in @var{align_loops} in a @code{LOOP_ALIGN} implementation. @findex LOOP_ALIGN_MAX_SKIP @item LOOP_ALIGN_MAX_SKIP --- 7045,7060 ---- @findex LOOP_ALIGN @item LOOP_ALIGN (@var{label}) The alignment (log base 2) to put in front of @var{label}, which follows ! a @code{NOTE_INSN_LOOP_BEG} note. This macro need not be defined if you don't want any special alignment to be done at such a time. Most machine descriptions do not currently define the macro. Unless it's necessary to inspect the @var{label} parameter, it is better ! to set the variable @code{align_loops} in the target's @code{OVERRIDE_OPTIONS}. Otherwise, you should try to honour the user's ! selection in @code{align_loops} in a @code{LOOP_ALIGN} implementation. @findex LOOP_ALIGN_MAX_SKIP @item LOOP_ALIGN_MAX_SKIP *************** This works only if @code{ASM_OUTPUT_MAX_ *** 7043,7055 **** @findex LABEL_ALIGN @item LABEL_ALIGN (@var{label}) The alignment (log base 2) to put in front of @var{label}. ! If LABEL_ALIGN_AFTER_BARRIER / LOOP_ALIGN specify a different alignment, the maximum of the specified values is used. Unless it's necessary to inspect the @var{label} parameter, it is better ! to set the variable @var{align_labels} in the target's @code{OVERRIDE_OPTIONS}. Otherwise, you should try to honour the user's ! selection in @var{align_labels} in a @code{LABEL_ALIGN} implementation. @findex LABEL_ALIGN_MAX_SKIP @item LABEL_ALIGN_MAX_SKIP --- 7064,7076 ---- @findex LABEL_ALIGN @item LABEL_ALIGN (@var{label}) The alignment (log base 2) to put in front of @var{label}. ! If @code{LABEL_ALIGN_AFTER_BARRIER} / @code{LOOP_ALIGN} specify a different alignment, the maximum of the specified values is used. Unless it's necessary to inspect the @var{label} parameter, it is better ! to set the variable @code{align_labels} in the target's @code{OVERRIDE_OPTIONS}. Otherwise, you should try to honour the user's ! selection in @code{align_labels} in a @code{LABEL_ALIGN} implementation. @findex LABEL_ALIGN_MAX_SKIP @item LABEL_ALIGN_MAX_SKIP *************** register number @var{regno}. In simple *** 7115,7121 **** expression may be @var{regno} itself. But sometimes there are some registers that the compiler knows about and DBX does not, or vice versa. In such cases, some register may need to have one number in ! the compiler and another for DBX. If two registers have consecutive numbers inside GCC, and they can be used as a pair to hold a multiword value, then they @emph{must} have --- 7136,7142 ---- expression may be @var{regno} itself. But sometimes there are some registers that the compiler knows about and DBX does not, or vice versa. In such cases, some register may need to have one number in ! the compiler and another for DBX@. If two registers have consecutive numbers inside GCC, and they can be used as a pair to hold a multiword value, then they @emph{must} have *************** first. *** 7293,7306 **** @item DBX_BLOCKS_FUNCTION_RELATIVE Define this macro if the value of a symbol describing the scope of a block (@code{N_LBRAC} or @code{N_RBRAC}) should be relative to the start ! of the enclosing function. Normally, GNU C uses an absolute address. @findex DBX_USE_BINCL @item DBX_USE_BINCL ! Define this macro if GNU C should generate @code{N_BINCL} and @code{N_EINCL} stabs for included header files, as on Sun systems. This ! macro also directs GNU C to output a type number as a pair of a file ! number and a type number within the file. Normally, GNU C does not generate @code{N_BINCL} or @code{N_EINCL} stabs, and it outputs a single number for a type number. @end table --- 7314,7327 ---- @item DBX_BLOCKS_FUNCTION_RELATIVE Define this macro if the value of a symbol describing the scope of a block (@code{N_LBRAC} or @code{N_RBRAC}) should be relative to the start ! of the enclosing function. Normally, GCC uses an absolute address. @findex DBX_USE_BINCL @item DBX_USE_BINCL ! Define this macro if GCC should generate @code{N_BINCL} and @code{N_EINCL} stabs for included header files, as on Sun systems. This ! macro also directs GCC to output a type number as a pair of a file ! number and a type number within the file. Normally, GCC does not generate @code{N_BINCL} or @code{N_EINCL} stabs, and it outputs a single number for a type number. @end table *************** first. To do this, define @code{DBX_OUT *** 7354,7360 **** those symbols in the necessary order. Any predefined types that you don't explicitly output will be output afterward in no particular order. ! Be careful not to define this macro so that it works only for C. There are no global variables to access most of the built-in types, because another language may have another set of types. The way to output a particular type is to look through @var{syms} to see if you can find it. --- 7375,7381 ---- those symbols in the necessary order. Any predefined types that you don't explicitly output will be output afterward in no particular order. ! Be careful not to define this macro so that it works only for C@. There are no global variables to access most of the built-in types, because another language may have another set of types. The way to output a particular type is to look through @var{syms} to see if you can find it. *************** in @var{output} (which will be a variabl *** 7680,7686 **** The operation to be performed is specified by @var{code}, a tree code which will always be one of the following: @code{PLUS_EXPR}, @code{MINUS_EXPR}, @code{MULT_EXPR}, @code{RDIV_EXPR}, ! @code{MAX_EXPR}, @code{MIN_EXPR}.@refill @cindex overflow while constant folding The expansion of this macro is responsible for checking for overflow. --- 7701,7707 ---- The operation to be performed is specified by @var{code}, a tree code which will always be one of the following: @code{PLUS_EXPR}, @code{MINUS_EXPR}, @code{MULT_EXPR}, @code{RDIV_EXPR}, ! @code{MAX_EXPR}, @code{MIN_EXPR}. @cindex overflow while constant folding The expansion of this macro is responsible for checking for overflow. *************** floating point operations, but to perfor *** 7742,7749 **** the FPSCR PR bit has to be cleared, while for a double precision operation, this bit has to be set. Changing the PR bit requires a general purpose register as a scratch register, hence these FPSCR sets have to ! be inserted before reload, i.e. you can't put this into instruction emitting ! or MACHINE_DEPENDENT_REORG. You can have multiple entities that are mode-switched, and select at run time which entities actually need it. @code{OPTIMIZE_MODE_SWITCHING} should --- 7763,7770 ---- the FPSCR PR bit has to be cleared, while for a double precision operation, this bit has to be set. Changing the PR bit requires a general purpose register as a scratch register, hence these FPSCR sets have to ! be inserted before reload, i.e.@: you can't put this into instruction emitting ! or @code{MACHINE_DEPENDENT_REORG}. You can have multiple entities that are mode-switched, and select at run time which entities actually need it. @code{OPTIMIZE_MODE_SWITCHING} should *************** switch is needed / supplied. *** 7771,7778 **** @var{entity} is an integer specifying a mode-switched entity. If @code{OPTIMIZE_MODE_SWITCHING} is defined, you must define this macro to return an integer value not larger than the corresponding element in ! NUM_MODES_FOR_MODE_SWITCHING, to denote the mode that @var{entity} must ! be switched into prior to the execution of INSN. @findex NORMAL_MODE @item NORMAL_MODE (@var{entity}) --- 7792,7799 ---- @var{entity} is an integer specifying a mode-switched entity. If @code{OPTIMIZE_MODE_SWITCHING} is defined, you must define this macro to return an integer value not larger than the corresponding element in ! @code{NUM_MODES_FOR_MODE_SWITCHING}, to denote the mode that @var{entity} must ! be switched into prior to the execution of @var{insn}. @findex NORMAL_MODE @item NORMAL_MODE (@var{entity}) *************** mode switching. It should evaluate to a *** 7782,7793 **** @findex MODE_PRIORITY_TO_MODE @item MODE_PRIORITY_TO_MODE (@var{entity}, @var{n}) ! This macro specifies the order in which modes for ENTITY are processed. ! 0 is the highest priority, NUM_MODES_FOR_MODE_SWITCHING[ENTITY] - 1 the lowest. The value of the macro should be an integer designating a mode ! for ENTITY. For any fixed @var{entity}, @code{mode_priority_to_mode} (@var{entity}, @var{n}) shall be a bijection in 0 @dots{} ! @code{num_modes_for_mode_switching}[@var{entity}] @minus{} 1 . @findex EMIT_MODE_SET @item EMIT_MODE_SET (@var{entity}, @var{mode}, @var{hard_regs_live}) --- 7803,7814 ---- @findex MODE_PRIORITY_TO_MODE @item MODE_PRIORITY_TO_MODE (@var{entity}, @var{n}) ! This macro specifies the order in which modes for @var{entity} are processed. ! 0 is the highest priority, @code{NUM_MODES_FOR_MODE_SWITCHING[@var{entity}] - 1} the lowest. The value of the macro should be an integer designating a mode ! for @var{entity}. For any fixed @var{entity}, @code{mode_priority_to_mode} (@var{entity}, @var{n}) shall be a bijection in 0 @dots{} ! @code{num_modes_for_mode_switching[@var{entity}] - 1}. @findex EMIT_MODE_SET @item EMIT_MODE_SET (@var{entity}, @var{mode}, @var{hard_regs_live}) *************** thus speeding up the compiler. The most *** 7828,7834 **** in the list specified by this macro are those used in the most insn patterns. ! For each predicate function named in @var{PREDICATE_CODES}, a declaration will be generated in @file{insn-codes.h}. @item SPECIAL_MODE_PREDICATES --- 7849,7855 ---- in the list specified by this macro are those used in the most insn patterns. ! For each predicate function named in @code{PREDICATE_CODES}, a declaration will be generated in @file{insn-codes.h}. @item SPECIAL_MODE_PREDICATES *************** extends. *** 7913,7919 **** @item IMPLICIT_FIX_EXPR An alias for a tree code that should be used by default for conversion of floating point values to fixed point. Normally, ! @code{FIX_ROUND_EXPR} is used.@refill @findex FIXUNS_TRUNC_LIKE_FIX_TRUNC @item FIXUNS_TRUNC_LIKE_FIX_TRUNC --- 7934,7940 ---- @item IMPLICIT_FIX_EXPR An alias for a tree code that should be used by default for conversion of floating point values to fixed point. Normally, ! @code{FIX_ROUND_EXPR} is used. @findex FIXUNS_TRUNC_LIKE_FIX_TRUNC @item FIXUNS_TRUNC_LIKE_FIX_TRUNC *************** compile code for in the general case. I *** 7929,7935 **** @code{ROUND_DIV_EXPR}. These four division operators differ in how they round the result to an integer. @code{EASY_DIV_EXPR} is used when it is permissible to use any of those kinds of division and the ! choice should be made on the basis of efficiency.@refill @findex MOVE_MAX @item MOVE_MAX --- 7950,7956 ---- @code{ROUND_DIV_EXPR}. These four division operators differ in how they round the result to an integer. @code{EASY_DIV_EXPR} is used when it is permissible to use any of those kinds of division and the ! choice should be made on the basis of efficiency. @findex MOVE_MAX @item MOVE_MAX *************** and print no error message. *** 8132,8138 **** @findex NO_IMPLICIT_EXTERN_C @item NO_IMPLICIT_EXTERN_C ! Define this macro if the system header files support C++ as well as C. This macro inhibits the usual method of using system header files in C++, which is to pretend that the file's contents are enclosed in @samp{extern "C" @{@dots{}@}}. --- 8153,8159 ---- @findex NO_IMPLICIT_EXTERN_C @item NO_IMPLICIT_EXTERN_C ! Define this macro if the system header files support C++ as well as C@. This macro inhibits the usual method of using system header files in C++, which is to pretend that the file's contents are enclosed in @samp{extern "C" @{@dots{}@}}. *************** these functions. The macro may also do *** 8154,8160 **** The primary reason to define this macro is to provide compatibility with other compilers for the same target. In general, we discourage ! definition of target-specific pragmas for GCC. If the pragma can be implemented by attributes then the macro @samp{INSERT_ATTRIBUTES} might be a useful one to define as well. --- 8175,8181 ---- The primary reason to define this macro is to provide compatibility with other compilers for the same target. In general, we discourage ! definition of target-specific pragmas for GCC@. If the pragma can be implemented by attributes then the macro @samp{INSERT_ATTRIBUTES} might be a useful one to define as well. *************** other language compilers for that matter *** 8191,8197 **** to be called from target-specific code, it must only be done so when building the C and C++ compilers. This can be done by defining the variables @code{c_target_objs} and @code{cxx_target_objs} in the ! target entry in the @code{config.gcc} file. These variables should name the target-specific, language-specific object file which contains the code that uses @code{c_lex}. Note it will also be necessary to add a rule to the makefile fragment pointed to by @code{tmake_file} that shows --- 8212,8218 ---- to be called from target-specific code, it must only be done so when building the C and C++ compilers. This can be done by defining the variables @code{c_target_objs} and @code{cxx_target_objs} in the ! target entry in the @file{config.gcc} file. These variables should name the target-specific, language-specific object file which contains the code that uses @code{c_lex}. Note it will also be necessary to add a rule to the makefile fragment pointed to by @code{tmake_file} that shows *************** of specifically named weak labels, optio *** 8229,8236 **** @findex pragma @item HANDLE_PRAGMA_PACK_PUSH_POP Define this macro (to a value of 1) if you want to support the Win32 ! style pragmas @samp{#pragma pack(push,)} and @samp{#pragma ! pack(pop)}. The pack(push,) pragma specifies the maximum alignment (in bytes) of fields within a structure, in much the same way as the @samp{__aligned__} and @samp{__packed__} @code{__attribute__}s do. A pack value of zero resets the behaviour to the default. Successive --- 8250,8257 ---- @findex pragma @item HANDLE_PRAGMA_PACK_PUSH_POP Define this macro (to a value of 1) if you want to support the Win32 ! style pragmas @samp{#pragma pack(push,@var{n})} and @samp{#pragma ! pack(pop)}. The @samp{pack(push,@var{n})} pragma specifies the maximum alignment (in bytes) of fields within a structure, in much the same way as the @samp{__aligned__} and @samp{__packed__} @code{__attribute__}s do. A pack value of zero resets the behaviour to the default. Successive *************** without user intervention. For instance *** 8390,8397 **** symbols must be explicitly imported from shared libraries (DLLs). @findex MD_ASM_CLOBBERS ! @item MD_ASM_CLOBBERS ! A C statement that adds to @var{CLOBBERS} @code{STRING_CST} trees for any hard regs the port wishes to automatically clobber for all asms. @findex ISSUE_RATE --- 8411,8418 ---- symbols must be explicitly imported from shared libraries (DLLs). @findex MD_ASM_CLOBBERS ! @item MD_ASM_CLOBBERS (@var{clobbers}) ! A C statement that adds to @var{clobbers} @code{STRING_CST} trees for any hard regs the port wishes to automatically clobber for all asms. @findex ISSUE_RATE *************** is wrong. *** 8483,8490 **** @findex TARGET_HAS_F_SETLKW @item TARGET_HAS_F_SETLKW ! Define this macro if the target supports file locking with fcntl / F_SETLKW. ! Note that this functionality is part of POSIX. Defining @code{TARGET_HAS_F_SETLKW} will enable the test coverage code to use file locking when exiting a program, which avoids race conditions if the program has forked. --- 8504,8511 ---- @findex TARGET_HAS_F_SETLKW @item TARGET_HAS_F_SETLKW ! Define this macro if the target supports file locking with fcntl / F_SETLKW@. ! Note that this functionality is part of POSIX@. Defining @code{TARGET_HAS_F_SETLKW} will enable the test coverage code to use file locking when exiting a program, which avoids race conditions if the program has forked. *************** Expand a call to a machine specific buil *** 8546,8552 **** @samp{MD_INIT_BUILTINS}. @var{exp} is the expression for the function call; the result should go to @var{target} if that is convenient, and have mode @var{mode} if that is convenient. @var{subtarget} may be used as the target ! for computing one of @var{exp}'s operands. @var{ignore} is nonzero if the value is to be ignored. This macro should return the result of the call to the built-in function. --- 8567,8573 ---- @samp{MD_INIT_BUILTINS}. @var{exp} is the expression for the function call; the result should go to @var{target} if that is convenient, and have mode @var{mode} if that is convenient. @var{subtarget} may be used as the target ! for computing one of @var{exp}'s operands. @var{ignore} is nonzero if the value is to be ignored. This macro should return the result of the call to the built-in function. diff -Nrc3pad gcc-3.0/gcc/dwarf2out.c gcc-3.0.1/gcc/dwarf2out.c *** gcc-3.0/gcc/dwarf2out.c Tue Jun 5 14:07:46 2001 --- gcc-3.0.1/gcc/dwarf2out.c Wed Jul 18 21:51:51 2001 *************** mem_loc_descriptor (rtl, mode) *** 7264,7270 **** case PRE_MODIFY: /* Extract the PLUS expression nested inside and fall into ! PLUS code bellow. */ rtl = XEXP (rtl, 1); goto plus; --- 7264,7270 ---- case PRE_MODIFY: /* Extract the PLUS expression nested inside and fall into ! PLUS code below. */ rtl = XEXP (rtl, 1); goto plus; *************** dwarf2out_abstract_function (decl) *** 9430,9439 **** /* Be sure we've emitted the in-class declaration DIE (if any) first, so we don't get confused by DECL_ABSTRACT. */ ! context = decl_class_context (decl); ! if (context) ! gen_type_die_for_member ! (context, decl, decl_function_context (decl) ? NULL : comp_unit_die); /* Pretend we've just finished compiling this function. */ save_fn = current_function_decl; --- 9430,9442 ---- /* Be sure we've emitted the in-class declaration DIE (if any) first, so we don't get confused by DECL_ABSTRACT. */ ! if (debug_info_level > DINFO_LEVEL_TERSE) ! { ! context = decl_class_context (decl); ! if (context) ! gen_type_die_for_member ! (context, decl, decl_function_context (decl) ? NULL : comp_unit_die); ! } /* Pretend we've just finished compiling this function. */ save_fn = current_function_decl; diff -Nrc3pad gcc-3.0/gcc/dwarfout.c gcc-3.0.1/gcc/dwarfout.c *** gcc-3.0/gcc/dwarfout.c Fri May 18 15:13:44 2001 --- gcc-3.0.1/gcc/dwarfout.c Wed Aug 1 15:24:36 2001 *************** Boston, MA 02111-1307, USA. */ *** 578,586 **** #include "toplev.h" #include "tm_p.h" - /* IMPORTANT NOTE: Please see the file README.DWARF for important details - regarding the GNU implementation of Dwarf. */ - /* NOTE: In the comments in this file, many references are made to so called "Debugging Information Entries". For the sake of brevity, this term is abbreviated to `DIE' throughout the remainder of this --- 578,583 ---- diff -Nrc3pad gcc-3.0/gcc/except.c gcc-3.0.1/gcc/except.c *** gcc-3.0/gcc/except.c Fri Jun 8 15:55:33 2001 --- gcc-3.0.1/gcc/except.c Wed Aug 8 14:19:56 2001 *************** remove_fixup_regions () *** 1133,1139 **** && fixup->type == ERT_FIXUP) { if (fixup->u.fixup.real_region) ! XEXP (note, 1) = GEN_INT (fixup->u.fixup.real_region->region_number); else remove_note (insn, note); } --- 1133,1139 ---- && fixup->type == ERT_FIXUP) { if (fixup->u.fixup.real_region) ! XEXP (note, 0) = GEN_INT (fixup->u.fixup.real_region->region_number); else remove_note (insn, note); } *************** duplicate_eh_regions (ifun, map) *** 1448,1454 **** cur->inner = root; for (i = 1; i <= ifun_last_region_number; ++i) ! if (n_array[i]->outer == NULL) n_array[i]->outer = cur; } else --- 1448,1454 ---- cur->inner = root; for (i = 1; i <= ifun_last_region_number; ++i) ! if (n_array[i] && n_array[i]->outer == NULL) n_array[i]->outer = cur; } else *************** expand_eh_return () *** 3071,3076 **** --- 3071,3087 ---- emit_label (around_label); } + /* In the following functions, we represent entries in the action table + as 1-based indicies. Special cases are: + + 0: null action record, non-null landing pad; implies cleanups + -1: null action record, null landing pad; implies no action + -2: no call-site entry; implies must_not_throw + -3: we have yet to process outer regions + + Further, no special cases apply to the "next" field of the record. + For next, 0 means end of list. */ + struct action_record { int offset; *************** collect_one_action_chain (ar_hash, regio *** 3174,3181 **** if (next == -3) { next = collect_one_action_chain (ar_hash, region->outer); ! if (next < 0) next = 0; } next = add_action_record (ar_hash, c->u.catch.filter, next); } --- 3185,3200 ---- if (next == -3) { next = collect_one_action_chain (ar_hash, region->outer); ! ! /* If there is no next action, terminate the chain. */ ! if (next == -1) next = 0; + /* If all outer actions are cleanups or must_not_throw, + we'll have no action record for it, since we had wanted + to encode these states in the call-site record directly. + Add a cleanup action to the chain to catch these. */ + else if (next <= 0) + next = add_action_record (ar_hash, 0, 0); } next = add_action_record (ar_hash, c->u.catch.filter, next); } diff -Nrc3pad gcc-3.0/gcc/except.h gcc-3.0.1/gcc/except.h *** gcc-3.0/gcc/except.h Fri Jun 8 15:55:34 2001 --- gcc-3.0.1/gcc/except.h Fri Jul 6 16:17:41 2001 *************** extern tree (*lang_eh_runtime_type) PARA *** 180,186 **** #if ! (defined (EH_RETURN_DATA_REGNO) \ && (defined (IA64_UNWIND_INFO) \ ! || (defined (DWARF2_UNWIND_INFO) \ && defined (EH_RETURN_STACKADJ_RTX) \ && (defined (EH_RETURN_HANDLER_RTX) \ || defined (HAVE_eh_return))))) --- 180,186 ---- #if ! (defined (EH_RETURN_DATA_REGNO) \ && (defined (IA64_UNWIND_INFO) \ ! || (DWARF2_UNWIND_INFO \ && defined (EH_RETURN_STACKADJ_RTX) \ && (defined (EH_RETURN_HANDLER_RTX) \ || defined (HAVE_eh_return))))) diff -Nrc3pad gcc-3.0/gcc/expr.c gcc-3.0.1/gcc/expr.c *** gcc-3.0/gcc/expr.c Tue Jun 12 04:11:38 2001 --- gcc-3.0.1/gcc/expr.c Sun Jul 1 13:48:02 2001 *************** emit_block_move (x, y, size, align) *** 1747,1752 **** --- 1747,1753 ---- DECL_EXTERNAL (fn) = 1; TREE_PUBLIC (fn) = 1; DECL_ARTIFICIAL (fn) = 1; + TREE_NOTHROW (fn) = 1; make_decl_rtl (fn, NULL_PTR); assemble_external (fn); } *************** clear_storage (object, size, align) *** 2632,2638 **** For targets where libcalls and normal calls have different conventions for returning pointers, we could end up generating ! incorrect code. So instead of using a libcall sequence we build up a suitable CALL_EXPR and expand the call in the normal fashion. */ --- 2633,2639 ---- For targets where libcalls and normal calls have different conventions for returning pointers, we could end up generating ! incorrect code. So instead of using a libcall sequence we build up a suitable CALL_EXPR and expand the call in the normal fashion. */ *************** clear_storage (object, size, align) *** 2650,2655 **** --- 2651,2657 ---- DECL_EXTERNAL (fn) = 1; TREE_PUBLIC (fn) = 1; DECL_ARTIFICIAL (fn) = 1; + TREE_NOTHROW (fn) = 1; make_decl_rtl (fn, NULL_PTR); assemble_external (fn); } *************** store_constructor (exp, target, align, c *** 4429,4435 **** /* If the constructor has fewer fields than the structure or if we are initializing the structure to mostly zeros, ! clear the whole structure first. Don't do this is TARGET is register whose mode size isn't equal to SIZE since clear_storage can't handle this case. */ else if (size > 0 --- 4431,4437 ---- /* If the constructor has fewer fields than the structure or if we are initializing the structure to mostly zeros, ! clear the whole structure first. Don't do this if TARGET is a register whose mode size isn't equal to SIZE since clear_storage can't handle this case. */ else if (size > 0 *************** expand_expr (exp, target, tmode, modifie *** 6764,6770 **** elem = TREE_CHAIN (elem)) ; ! if (elem && !TREE_SIDE_EFFECTS (elem)) return expand_expr (fold (TREE_VALUE (elem)), target, tmode, ro_modifier); } --- 6766,6772 ---- elem = TREE_CHAIN (elem)) ; ! if (elem && !TREE_SIDE_EFFECTS (TREE_VALUE (elem))) return expand_expr (fold (TREE_VALUE (elem)), target, tmode, ro_modifier); } diff -Nrc3pad gcc-3.0/gcc/f/ChangeLog gcc-3.0.1/gcc/f/ChangeLog *** gcc-3.0/gcc/f/ChangeLog Sun Jun 17 12:39:48 2001 --- gcc-3.0.1/gcc/f/ChangeLog Sun Aug 19 14:08:16 2001 *************** *** 1,3 **** --- 1,28 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2000-08-14 Ulrich Weigand + + * target.h (FFETARGET_32bit_longs): Don't define + for 64-bit S/390. + + 2001-07-19 Jakub Jelinek + + * top.c (ffe_decode_option): Disallow lang-independent processing + for -ffixed-form. + + 2001-07-04 Joseph S. Myers + + * g77.texi: Use gpl.texi and funding.texi. Remove Look and Feel + section. Add Funding Free Software to invariant sections. + * Make-lang.in ($(srcdir)/f/g77.info, f/g77.dvi): Update + dependencies and use doc/include in search path. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/gcc/f/Make-lang.in gcc-3.0.1/gcc/f/Make-lang.in *** gcc-3.0/gcc/f/Make-lang.in Thu Jun 7 15:04:43 2001 --- gcc-3.0.1/gcc/f/Make-lang.in Wed Jul 4 09:23:08 2001 *************** f77.dvi: f/g77.dvi *** 172,198 **** $(srcdir)/f/g77.info: $(srcdir)/f/g77.texi $(srcdir)/f/bugs.texi \ $(srcdir)/f/ffe.texi $(srcdir)/f/g77install.texi \ $(srcdir)/f/news.texi $(srcdir)/f/intdoc.texi \ ! $(srcdir)/f/root.texi $(srcdir)/doc/fdl.texi case "$(LANGUAGES)" in \ *[fF]77*) $(STAMP) lang-f77;; \ *) rm -f lang-f77;; \ esac if [ -f lang-f77 ] && [ x$(BUILD_INFO) = xinfo ]; then \ rm -f $(srcdir)/f/g77.info-*; \ ! cd $(srcdir)/f && $(MAKEINFO) -I../doc -o g77.info g77.texi; \ else true; fi f/g77.dvi: $(srcdir)/f/g77.texi $(srcdir)/f/bugs.texi \ $(srcdir)/f/ffe.texi $(srcdir)/f/g77install.texi \ $(srcdir)/f/news.texi $(srcdir)/f/intdoc.texi \ ! $(srcdir)/f/root.texi $(srcdir)/doc/fdl.texi case "$(LANGUAGES)" in \ *[fF]77*) $(STAMP) lang-f77;; \ *) rm -f lang-f77;; \ esac if [ -f lang-f77 ]; then \ s=`cd $(srcdir); pwd`; export s; \ ! cd f && $(TEXI2DVI) -I $$s/doc $$s/f/g77.texi; \ else true; fi # This dance is all about producing accurate documentation for g77's --- 172,202 ---- $(srcdir)/f/g77.info: $(srcdir)/f/g77.texi $(srcdir)/f/bugs.texi \ $(srcdir)/f/ffe.texi $(srcdir)/f/g77install.texi \ $(srcdir)/f/news.texi $(srcdir)/f/intdoc.texi \ ! $(srcdir)/f/root.texi $(srcdir)/doc/include/fdl.texi \ ! $(srcdir)/doc/include/gpl.texi \ ! $(srcdir)/doc/include/funding.texi case "$(LANGUAGES)" in \ *[fF]77*) $(STAMP) lang-f77;; \ *) rm -f lang-f77;; \ esac if [ -f lang-f77 ] && [ x$(BUILD_INFO) = xinfo ]; then \ rm -f $(srcdir)/f/g77.info-*; \ ! cd $(srcdir)/f && $(MAKEINFO) -I../doc/include -o g77.info g77.texi; \ else true; fi f/g77.dvi: $(srcdir)/f/g77.texi $(srcdir)/f/bugs.texi \ $(srcdir)/f/ffe.texi $(srcdir)/f/g77install.texi \ $(srcdir)/f/news.texi $(srcdir)/f/intdoc.texi \ ! $(srcdir)/f/root.texi $(srcdir)/doc/include/fdl.texi \ ! $(srcdir)/doc/include/gpl.texi \ ! $(srcdir)/doc/include/funding.texi case "$(LANGUAGES)" in \ *[fF]77*) $(STAMP) lang-f77;; \ *) rm -f lang-f77;; \ esac if [ -f lang-f77 ]; then \ s=`cd $(srcdir); pwd`; export s; \ ! cd f && $(TEXI2DVI) -I $$s/doc/include $$s/f/g77.texi; \ else true; fi # This dance is all about producing accurate documentation for g77's diff -Nrc3pad gcc-3.0/gcc/f/g77.info gcc-3.0.1/gcc/f/g77.info *** gcc-3.0/gcc/f/g77.info Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: *************** Craig by David Ronis ( to volunteer for this work. *Note Funding Free Software: Funding, for more information. - -  - File: g77.info, Node: Look and Feel, Next: Getting Started, Prev: Funding GNU Fortran, Up: Top - - Protect Your Freedom--Fight "Look And Feel" - ******************************************* - - To preserve the ability to write free software, including - replacements for proprietary software, authors must be free to - replicate the user interface to which users of existing software have - become accustomed. - - *Note Protect Your Freedom--Fight "Look And Feel": (gcc)Look and - Feel, for more information. --- 1002,1005 ---- diff -Nrc3pad gcc-3.0/gcc/f/g77.info-10 gcc-3.0.1/gcc/f/g77.info-10 *** gcc-3.0/gcc/f/g77.info-10 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-10 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: diff -Nrc3pad gcc-3.0/gcc/f/g77.info-11 gcc-3.0.1/gcc/f/g77.info-11 *** gcc-3.0/gcc/f/g77.info-11 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-11 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: diff -Nrc3pad gcc-3.0/gcc/f/g77.info-12 gcc-3.0.1/gcc/f/g77.info-12 *** gcc-3.0/gcc/f/g77.info-12 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-12 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: diff -Nrc3pad gcc-3.0/gcc/f/g77.info-13 gcc-3.0.1/gcc/f/g77.info-13 *** gcc-3.0/gcc/f/g77.info-13 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-13 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: diff -Nrc3pad gcc-3.0/gcc/f/g77.info-14 gcc-3.0.1/gcc/f/g77.info-14 *** gcc-3.0/gcc/f/g77.info-14 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-14 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: diff -Nrc3pad gcc-3.0/gcc/f/g77.info-15 gcc-3.0.1/gcc/f/g77.info-15 *** gcc-3.0/gcc/f/g77.info-15 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-15 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: diff -Nrc3pad gcc-3.0/gcc/f/g77.info-16 gcc-3.0.1/gcc/f/g77.info-16 *** gcc-3.0/gcc/f/g77.info-16 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-16 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: diff -Nrc3pad gcc-3.0/gcc/f/g77.info-17 gcc-3.0.1/gcc/f/g77.info-17 *** gcc-3.0/gcc/f/g77.info-17 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-17 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: diff -Nrc3pad gcc-3.0/gcc/f/g77.info-18 gcc-3.0.1/gcc/f/g77.info-18 *** gcc-3.0/gcc/f/g77.info-18 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-18 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: diff -Nrc3pad gcc-3.0/gcc/f/g77.info-19 gcc-3.0.1/gcc/f/g77.info-19 *** gcc-3.0/gcc/f/g77.info-19 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-19 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: diff -Nrc3pad gcc-3.0/gcc/f/g77.info-2 gcc-3.0.1/gcc/f/g77.info-2 *** gcc-3.0/gcc/f/g77.info-2 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-2 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: *************** a first pass at translating `g77-0.5.16/ *** 36,42 **** Craig by David Ronis ().  ! File: g77.info, Node: Getting Started, Next: What is GNU Fortran?, Prev: Look and Feel, Up: Top Getting Started *************** --- 36,42 ---- Craig by David Ronis ().  ! File: g77.info, Node: Getting Started, Next: What is GNU Fortran?, Prev: Funding GNU Fortran, Up: Top Getting Started *************** diff -Nrc3pad gcc-3.0/gcc/f/g77.info-20 gcc-3.0.1/gcc/f/g77.info-20 *** gcc-3.0/gcc/f/g77.info-20 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-20 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: diff -Nrc3pad gcc-3.0/gcc/f/g77.info-21 gcc-3.0.1/gcc/f/g77.info-21 *** gcc-3.0/gcc/f/g77.info-21 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-21 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: diff -Nrc3pad gcc-3.0/gcc/f/g77.info-3 gcc-3.0.1/gcc/f/g77.info-3 *** gcc-3.0/gcc/f/g77.info-3 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-3 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: diff -Nrc3pad gcc-3.0/gcc/f/g77.info-4 gcc-3.0.1/gcc/f/g77.info-4 *** gcc-3.0/gcc/f/g77.info-4 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-4 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: diff -Nrc3pad gcc-3.0/gcc/f/g77.info-5 gcc-3.0.1/gcc/f/g77.info-5 *** gcc-3.0/gcc/f/g77.info-5 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-5 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: diff -Nrc3pad gcc-3.0/gcc/f/g77.info-6 gcc-3.0.1/gcc/f/g77.info-6 *** gcc-3.0/gcc/f/g77.info-6 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-6 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: diff -Nrc3pad gcc-3.0/gcc/f/g77.info-7 gcc-3.0.1/gcc/f/g77.info-7 *** gcc-3.0/gcc/f/g77.info-7 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-7 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: diff -Nrc3pad gcc-3.0/gcc/f/g77.info-8 gcc-3.0.1/gcc/f/g77.info-8 *** gcc-3.0/gcc/f/g77.info-8 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-8 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: diff -Nrc3pad gcc-3.0/gcc/f/g77.info-9 gcc-3.0.1/gcc/f/g77.info-9 *** gcc-3.0/gcc/f/g77.info-9 Sun Jun 17 13:06:03 2001 --- gcc-3.0.1/gcc/f/g77.info-9 Sun Aug 19 18:52:16 2001 *************** Foundation, Inc. *** 16,25 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License", the Front-Cover ! texts being (a) (see below), and with the Back-Cover Texts being (b) ! (see below). A copy of the license is included in the section entitled ! "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: --- 16,25 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Funding Free ! Software", the Front-Cover texts being (a) (see below), and with the ! Back-Cover Texts being (b) (see below). A copy of the license is ! included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: diff -Nrc3pad gcc-3.0/gcc/f/g77.texi gcc-3.0.1/gcc/f/g77.texi *** gcc-3.0/gcc/f/g77.texi Sun Jun 10 04:12:55 2001 --- gcc-3.0.1/gcc/f/g77.texi Wed Jul 4 09:23:07 2001 *************** Copyright (C) @value{copyrights-g77} Fre *** 101,107 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being ``GNU General Public License'', the Front-Cover texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled ``GNU Free Documentation License''. --- 101,108 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being ``GNU General Public License'' and ``Funding ! Free Software'', the Front-Cover texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled ``GNU Free Documentation License''. *************** Boston, MA 02111-1307, USA@* *** 158,164 **** Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being ``GNU General Public License'', the Front-Cover texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled ``GNU Free Documentation License''. --- 159,166 ---- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the ! Invariant Sections being ``GNU General Public License'' and ``Funding ! Free Software'', the Front-Cover texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled ``GNU Free Documentation License''. *************** most consistent with the @code{g77} prod *** 231,237 **** * Contributors:: People who have contributed to GNU Fortran. * Funding:: How to help assure continued work for free software. * Funding GNU Fortran:: How to help assure continued work on GNU Fortran. - * Look and Feel:: Protect your freedom---fight ``look and feel''. @ifset USING * Getting Started:: Finding your way around this manual. * What is GNU Fortran?:: How @code{g77} fits into the universe. --- 233,238 ---- *************** most consistent with the @code{g77} prod *** 264,661 **** @end menu @c yes, the "M: " @emph{is} intentional -- bad.def references it (CMPAMBIG)! ! @node Copying ! @unnumbered GNU GENERAL PUBLIC LICENSE ! @center Version 2, June 1991 ! ! @display ! Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc. ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ! ! Everyone is permitted to copy and distribute verbatim copies ! of this license document, but changing it is not allowed. ! @end display ! ! @unnumberedsec Preamble ! ! The licenses for most software are designed to take away your ! freedom to share and change it. By contrast, the GNU General Public ! License is intended to guarantee your freedom to share and change free ! software---to make sure the software is free for all its users. This ! General Public License applies to most of the Free Software ! Foundation's software and to any other program whose authors commit to ! using it. (Some other Free Software Foundation software is covered by ! the GNU Library General Public License instead.) You can apply it to ! your programs, too. ! ! When we speak of free software, we are referring to freedom, not ! price. Our General Public Licenses are designed to make sure that you ! have the freedom to distribute copies of free software (and charge for ! this service if you wish), that you receive source code or can get it ! if you want it, that you can change the software or use pieces of it ! in new free programs; and that you know you can do these things. ! ! To protect your rights, we need to make restrictions that forbid ! anyone to deny you these rights or to ask you to surrender the rights. ! These restrictions translate to certain responsibilities for you if you ! distribute copies of the software, or if you modify it. ! ! For example, if you distribute copies of such a program, whether ! gratis or for a fee, you must give the recipients all the rights that ! you have. You must make sure that they, too, receive or can get the ! source code. And you must show them these terms so they know their ! rights. ! ! We protect your rights with two steps: (1) copyright the software, and ! (2) offer you this license which gives you legal permission to copy, ! distribute and/or modify the software. ! ! Also, for each author's protection and ours, we want to make certain ! that everyone understands that there is no warranty for this free ! software. If the software is modified by someone else and passed on, we ! want its recipients to know that what they have is not the original, so ! that any problems introduced by others will not reflect on the original ! authors' reputations. ! ! Finally, any free program is threatened constantly by software ! patents. We wish to avoid the danger that redistributors of a free ! program will individually obtain patent licenses, in effect making the ! program proprietary. To prevent this, we have made it clear that any ! patent must be licensed for everyone's free use or not licensed at all. ! ! The precise terms and conditions for copying, distribution and ! modification follow. ! ! @iftex ! @unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ! @end iftex ! @ifinfo ! @center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ! @end ifinfo ! ! @enumerate 0 ! @item ! This License applies to any program or other work which contains ! a notice placed by the copyright holder saying it may be distributed ! under the terms of this General Public License. The ``Program'', below, ! refers to any such program or work, and a ``work based on the Program'' ! means either the Program or any derivative work under copyright law: ! that is to say, a work containing the Program or a portion of it, ! either verbatim or with modifications and/or translated into another ! language. (Hereinafter, translation is included without limitation in ! the term ``modification''.) Each licensee is addressed as ``you''. ! ! Activities other than copying, distribution and modification are not ! covered by this License; they are outside its scope. The act of ! running the Program is not restricted, and the output from the Program ! is covered only if its contents constitute a work based on the ! Program (independent of having been made by running the Program). ! Whether that is true depends on what the Program does. ! ! @item ! You may copy and distribute verbatim copies of the Program's ! source code as you receive it, in any medium, provided that you ! conspicuously and appropriately publish on each copy an appropriate ! copyright notice and disclaimer of warranty; keep intact all the ! notices that refer to this License and to the absence of any warranty; ! and give any other recipients of the Program a copy of this License ! along with the Program. ! ! You may charge a fee for the physical act of transferring a copy, and ! you may at your option offer warranty protection in exchange for a fee. ! ! @item ! You may modify your copy or copies of the Program or any portion ! of it, thus forming a work based on the Program, and copy and ! distribute such modifications or work under the terms of Section 1 ! above, provided that you also meet all of these conditions: ! ! @enumerate a ! @item ! You must cause the modified files to carry prominent notices ! stating that you changed the files and the date of any change. ! ! @item ! You must cause any work that you distribute or publish, that in ! whole or in part contains or is derived from the Program or any ! part thereof, to be licensed as a whole at no charge to all third ! parties under the terms of this License. ! ! @item ! If the modified program normally reads commands interactively ! when run, you must cause it, when started running for such ! interactive use in the most ordinary way, to print or display an ! announcement including an appropriate copyright notice and a ! notice that there is no warranty (or else, saying that you provide ! a warranty) and that users may redistribute the program under ! these conditions, and telling the user how to view a copy of this ! License. (Exception: if the Program itself is interactive but ! does not normally print such an announcement, your work based on ! the Program is not required to print an announcement.) ! @end enumerate ! ! These requirements apply to the modified work as a whole. If ! identifiable sections of that work are not derived from the Program, ! and can be reasonably considered independent and separate works in ! themselves, then this License, and its terms, do not apply to those ! sections when you distribute them as separate works. But when you ! distribute the same sections as part of a whole which is a work based ! on the Program, the distribution of the whole must be on the terms of ! this License, whose permissions for other licensees extend to the ! entire whole, and thus to each and every part regardless of who wrote it. ! ! Thus, it is not the intent of this section to claim rights or contest ! your rights to work written entirely by you; rather, the intent is to ! exercise the right to control the distribution of derivative or ! collective works based on the Program. ! ! In addition, mere aggregation of another work not based on the Program ! with the Program (or with a work based on the Program) on a volume of ! a storage or distribution medium does not bring the other work under ! the scope of this License. ! ! @item ! You may copy and distribute the Program (or a work based on it, ! under Section 2) in object code or executable form under the terms of ! Sections 1 and 2 above provided that you also do one of the following: ! ! @enumerate a ! @item ! Accompany it with the complete corresponding machine-readable ! source code, which must be distributed under the terms of Sections ! 1 and 2 above on a medium customarily used for software interchange; or, ! ! @item ! Accompany it with a written offer, valid for at least three ! years, to give any third party, for a charge no more than your ! cost of physically performing source distribution, a complete ! machine-readable copy of the corresponding source code, to be ! distributed under the terms of Sections 1 and 2 above on a medium ! customarily used for software interchange; or, ! ! @item ! Accompany it with the information you received as to the offer ! to distribute corresponding source code. (This alternative is ! allowed only for noncommercial distribution and only if you ! received the program in object code or executable form with such ! an offer, in accord with Subsection b above.) ! @end enumerate ! ! The source code for a work means the preferred form of the work for ! making modifications to it. For an executable work, complete source ! code means all the source code for all modules it contains, plus any ! associated interface definition files, plus the scripts used to ! control compilation and installation of the executable. However, as a ! special exception, the source code distributed need not include ! anything that is normally distributed (in either source or binary ! form) with the major components (compiler, kernel, and so on) of the ! operating system on which the executable runs, unless that component ! itself accompanies the executable. ! ! If distribution of executable or object code is made by offering ! access to copy from a designated place, then offering equivalent ! access to copy the source code from the same place counts as ! distribution of the source code, even though third parties are not ! compelled to copy the source along with the object code. ! ! @item ! You may not copy, modify, sublicense, or distribute the Program ! except as expressly provided under this License. Any attempt ! otherwise to copy, modify, sublicense or distribute the Program is ! void, and will automatically terminate your rights under this License. ! However, parties who have received copies, or rights, from you under ! this License will not have their licenses terminated so long as such ! parties remain in full compliance. ! ! @item ! You are not required to accept this License, since you have not ! signed it. However, nothing else grants you permission to modify or ! distribute the Program or its derivative works. These actions are ! prohibited by law if you do not accept this License. Therefore, by ! modifying or distributing the Program (or any work based on the ! Program), you indicate your acceptance of this License to do so, and ! all its terms and conditions for copying, distributing or modifying ! the Program or works based on it. ! ! @item ! Each time you redistribute the Program (or any work based on the ! Program), the recipient automatically receives a license from the ! original licensor to copy, distribute or modify the Program subject to ! these terms and conditions. You may not impose any further ! restrictions on the recipients' exercise of the rights granted herein. ! You are not responsible for enforcing compliance by third parties to ! this License. ! ! @item ! If, as a consequence of a court judgment or allegation of patent ! infringement or for any other reason (not limited to patent issues), ! conditions are imposed on you (whether by court order, agreement or ! otherwise) that contradict the conditions of this License, they do not ! excuse you from the conditions of this License. If you cannot ! distribute so as to satisfy simultaneously your obligations under this ! License and any other pertinent obligations, then as a consequence you ! may not distribute the Program at all. For example, if a patent ! license would not permit royalty-free redistribution of the Program by ! all those who receive copies directly or indirectly through you, then ! the only way you could satisfy both it and this License would be to ! refrain entirely from distribution of the Program. ! ! If any portion of this section is held invalid or unenforceable under ! any particular circumstance, the balance of the section is intended to ! apply and the section as a whole is intended to apply in other ! circumstances. ! ! It is not the purpose of this section to induce you to infringe any ! patents or other property right claims or to contest validity of any ! such claims; this section has the sole purpose of protecting the ! integrity of the free software distribution system, which is ! implemented by public license practices. Many people have made ! generous contributions to the wide range of software distributed ! through that system in reliance on consistent application of that ! system; it is up to the author/donor to decide if he or she is willing ! to distribute software through any other system and a licensee cannot ! impose that choice. ! ! This section is intended to make thoroughly clear what is believed to ! be a consequence of the rest of this License. ! ! @item ! If the distribution and/or use of the Program is restricted in ! certain countries either by patents or by copyrighted interfaces, the ! original copyright holder who places the Program under this License ! may add an explicit geographical distribution limitation excluding ! those countries, so that distribution is permitted only in or among ! countries not thus excluded. In such case, this License incorporates ! the limitation as if written in the body of this License. ! ! @item ! The Free Software Foundation may publish revised and/or new versions ! of the General Public License from time to time. Such new versions will ! be similar in spirit to the present version, but may differ in detail to ! address new problems or concerns. ! ! Each version is given a distinguishing version number. If the Program ! specifies a version number of this License which applies to it and ``any ! later version'', you have the option of following the terms and conditions ! either of that version or of any later version published by the Free ! Software Foundation. If the Program does not specify a version number of ! this License, you may choose any version ever published by the Free Software ! Foundation. ! ! @item ! If you wish to incorporate parts of the Program into other free ! programs whose distribution conditions are different, write to the author ! to ask for permission. For software which is copyrighted by the Free ! Software Foundation, write to the Free Software Foundation; we sometimes ! make exceptions for this. Our decision will be guided by the two goals ! of preserving the free status of all derivatives of our free software and ! of promoting the sharing and reuse of software generally. ! ! @iftex ! @heading NO WARRANTY ! @end iftex ! @ifinfo ! @center NO WARRANTY ! @end ifinfo ! ! @item ! BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY ! FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN ! OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES ! PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED ! OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ! MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS ! TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE ! PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, ! REPAIR OR CORRECTION. ! ! @item ! IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING ! WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR ! REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, ! INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING ! OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED ! TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY ! YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER ! PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE ! POSSIBILITY OF SUCH DAMAGES. ! @end enumerate ! ! @iftex ! @heading END OF TERMS AND CONDITIONS ! @end iftex ! @ifinfo ! @center END OF TERMS AND CONDITIONS ! @end ifinfo ! ! @page ! @unnumberedsec How to Apply These Terms to Your New Programs ! ! If you develop a new program, and you want it to be of the greatest ! possible use to the public, the best way to achieve this is to make it ! free software which everyone can redistribute and change under these terms. ! ! To do so, attach the following notices to the program. It is safest ! to attach them to the start of each source file to most effectively ! convey the exclusion of warranty; and each file should have at least ! the ``copyright'' line and a pointer to where the full notice is found. ! ! @smallexample ! @var{one line to give the program's name and a brief idea of what it does.} ! Copyright (C) @var{year} @var{name of author} ! ! This program is free software; you can redistribute it and/or modify ! it under the terms of the GNU General Public License as published by ! the Free Software Foundation; either version 2 of the License, or ! (at your option) any later version. ! ! This program is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! GNU General Public License for more details. ! ! You should have received a copy of the GNU General Public License ! along with this program; if not, write to the Free Software ! Foundation, Inc., 59 Temple Place - Suite 330, ! Boston, MA 02111-1307, USA. ! @end smallexample ! ! Also add information on how to contact you by electronic and paper mail. ! ! If the program is interactive, make it output a short notice like this ! when it starts in an interactive mode: ! ! @smallexample ! Gnomovision version 69, Copyright (C) @var{year} @var{name of author} ! Gnomovision comes with ABSOLUTELY NO WARRANTY; for details ! type `show w'. ! This is free software, and you are welcome to redistribute it ! under certain conditions; type `show c' for details. ! @end smallexample ! ! The hypothetical commands @samp{show w} and @samp{show c} should show ! the appropriate parts of the General Public License. Of course, the ! commands you use may be called something other than @samp{show w} and ! @samp{show c}; they could even be mouse-clicks or menu items---whatever ! suits your program. ! ! You should also get your employer (if you work as a programmer) or your ! school, if any, to sign a ``copyright disclaimer'' for the program, if ! necessary. Here is a sample; alter the names: ! ! @smallexample ! Yoyodyne, Inc., hereby disclaims all copyright interest in the program ! `Gnomovision' (which makes passes at compilers) written by James Hacker. ! ! @var{signature of Ty Coon}, 1 April 1989 ! Ty Coon, President of Vice ! @end smallexample ! ! This General Public License does not permit incorporating your program into ! proprietary programs. If your program is a subroutine library, you may ! consider it more useful to permit linking proprietary applications with the ! library. If this is what you want to do, use the GNU Library General ! Public License instead of this License. @include fdl.texi --- 265,271 ---- @end menu @c yes, the "M: " @emph{is} intentional -- bad.def references it (CMPAMBIG)! ! @include gpl.texi @include fdl.texi *************** to see your name listed in the above lis *** 769,822 **** The default is that people wish to remain anonymous. @end itemize ! @node Funding ! @chapter Funding Free Software ! ! If you want to have more free software a few years from now, it makes ! sense for you to help encourage people to contribute funds for its ! development. The most effective approach known is to encourage ! commercial redistributors to donate. ! ! Users of free software systems can boost the pace of development by ! encouraging for-a-fee distributors to donate part of their selling price ! to free software developers---the Free Software Foundation, and others. ! ! The way to convince distributors to do this is to demand it and expect ! it from them. So when you compare distributors, judge them partly by ! how much they give to free software development. Show distributors ! they must compete to be the one who gives the most. ! ! To make this approach work, you must insist on numbers that you can ! compare, such as, ``We will donate ten dollars to the Frobnitz project ! for each disk sold.'' Don't be satisfied with a vague promise, such as ! ``A portion of the profits are donated,'' since it doesn't give a basis ! for comparison. ! ! Even a precise fraction ``of the profits from this disk'' is not very ! meaningful, since creative accounting and unrelated business decisions ! can greatly alter what fraction of the sales price counts as profit. ! If the price you pay is $50, ten percent of the profit is probably ! less than a dollar; it might be a few cents, or nothing at all. ! ! Some redistributors do development work themselves. This is useful too; ! but to keep everyone honest, you need to inquire how much they do, and ! what kind. Some kinds of development make much more long-term ! difference than others. For example, maintaining a separate version of ! a program contributes very little; maintaining the standard version of a ! program for the whole community contributes much. Easy new ports ! contribute little, since someone else would surely do them; difficult ! ports such as adding a new CPU to the GNU C compiler contribute more; ! major new features or packages contribute the most. ! ! By establishing the idea that supporting further development is ``the ! proper thing to do'' when distributing free software for a fee, we can ! assure a steady flow of resources into making more free software. ! ! @display ! Copyright (C) 1994 Free Software Foundation, Inc. ! Verbatim copying and redistribution of this section is permitted ! without royalty; alteration is not permitted. ! @end display @node Funding GNU Fortran @chapter Funding GNU Fortran --- 379,385 ---- The default is that people wish to remain anonymous. @end itemize ! @include funding.texi @node Funding GNU Fortran @chapter Funding GNU Fortran *************** area). *** 850,867 **** Email @email{@value{email-general}} to volunteer for this work. @xref{Funding,,Funding Free Software}, for more information. - - @node Look and Feel - @chapter Protect Your Freedom---Fight ``Look And Feel'' - @c the above chapter heading overflows onto the next line. --mew 1/26/93 - - To preserve the ability to write free software, including replacements - for proprietary software, authors must be free to replicate the - user interface to which users of existing software have become - accustomed. - - @xref{Look and Feel,,Protect Your Freedom---Fight ``Look And Feel'', - gcc,Using and Porting GNU CC}, for more information. @node Getting Started @chapter Getting Started --- 413,418 ---- diff -Nrc3pad gcc-3.0/gcc/f/target.h gcc-3.0.1/gcc/f/target.h *** gcc-3.0/gcc/f/target.h Wed Jun 21 13:11:14 2000 --- gcc-3.0.1/gcc/f/target.h Tue Aug 14 16:08:51 2001 *************** the Free Software Foundation, 59 Temple *** 234,240 **** #define FFETARGET_f2cTYLOGICAL2 13 #define FFETARGET_f2cTYQUAD 14 ! #if !defined(__alpha__) && (!defined (_ARCH_PPC) || !defined (__64BIT__)) && (!defined(__sparc__) || (!defined(__sparcv9) && !defined(__arch64__))) && (!defined(__ia64__) || !defined(__LP64__)) #define FFETARGET_32bit_longs #endif --- 234,240 ---- #define FFETARGET_f2cTYLOGICAL2 13 #define FFETARGET_f2cTYQUAD 14 ! #if !defined(__alpha__) && (!defined (_ARCH_PPC) || !defined (__64BIT__)) && (!defined(__sparc__) || (!defined(__sparcv9) && !defined(__arch64__))) && (!defined(__ia64__) || !defined(__LP64__)) && !defined(__s390x__) #define FFETARGET_32bit_longs #endif diff -Nrc3pad gcc-3.0/gcc/f/top.c gcc-3.0.1/gcc/f/top.c *** gcc-3.0/gcc/f/top.c Thu Apr 19 12:51:15 2001 --- gcc-3.0.1/gcc/f/top.c Thu Jul 19 12:41:00 2001 *************** ffe_decode_option (argc, argv) *** 225,231 **** else if (strcmp (&opt[2], "no-free-form") == 0) ffe_set_is_free_form (FALSE); else if (strcmp (&opt[2], "fixed-form") == 0) ! ffe_set_is_free_form (FALSE); else if (strcmp (&opt[2], "no-fixed-form") == 0) ffe_set_is_free_form (TRUE); else if (strcmp (&opt[2], "pedantic") == 0) --- 225,234 ---- else if (strcmp (&opt[2], "no-free-form") == 0) ffe_set_is_free_form (FALSE); else if (strcmp (&opt[2], "fixed-form") == 0) ! { ! ffe_set_is_free_form (FALSE); ! return -1; ! } else if (strcmp (&opt[2], "no-fixed-form") == 0) ffe_set_is_free_form (TRUE); else if (strcmp (&opt[2], "pedantic") == 0) diff -Nrc3pad gcc-3.0/gcc/f/version.c gcc-3.0.1/gcc/f/version.c *** gcc-3.0/gcc/f/version.c Sun Jun 17 00:16:38 2001 --- gcc-3.0.1/gcc/f/version.c Sun Aug 19 13:27:47 2001 *************** *** 1 **** ! const char *ffe_version_string = "0.5.26 20010617 (experimental)"; --- 1 ---- ! const char *ffe_version_string = "0.5.26 20010819 (release)"; diff -Nrc3pad gcc-3.0/gcc/fixinc/check.tpl gcc-3.0.1/gcc/fixinc/check.tpl *** gcc-3.0/gcc/fixinc/check.tpl Sat May 26 11:56:14 2001 --- gcc-3.0.1/gcc/fixinc/check.tpl Thu Jul 19 20:45:07 2001 *************** mkdir ${DESTDIR} ${SRCDIR} *** 40,51 **** cd inc [= (define sfile "") (define dfile "") =][= FOR fix =][= IF (> (count "test_text") 1) =][= ! (set! sfile (if (exist? "files") (get "files[]") "testing.h")) (set! dfile (string-append (if (*==* sfile "/") --- 40,52 ---- cd inc [= (define sfile "") + (define HACK "") (define dfile "") =][= FOR fix =][= IF (> (count "test_text") 1) =][= ! (set! HACK (string-upcase! (get "hackname"))) (set! sfile (if (exist? "files") (get "files[]") "testing.h")) (set! dfile (string-append (if (*==* sfile "/") *************** FOR fix =][= *** 58,66 **** cat >> [=(. sfile)=] <<_HACK_EOF_ ! #if defined( [=(string-upcase! (get "hackname"))=]_CHECK_[=(for-index)=] ) [=test_text=] ! #endif /* [=(string-upcase! (get "hackname"))=]_CHECK_[=(for-index)=] */ _HACK_EOF_ echo [=(. sfile)=] | ../../fixincl mv -f [=(. sfile)=] [=(. dfile)=]-[=(for-index)=].h --- 59,67 ---- cat >> [=(. sfile)=] <<_HACK_EOF_ ! #if defined( [=(. HACK)=]_CHECK_[=(for-index)=] ) [=test_text=] ! #endif /* [=(. HACK)=]_CHECK_[=(for-index)=] */ _HACK_EOF_ echo [=(. sfile)=] | ../../fixincl mv -f [=(. sfile)=] [=(. dfile)=]-[=(for-index)=].h *************** ENDFOR fix *** 75,91 **** =][= ! FOR fix =][= IF (not (exist? "test_text")) =][= ! IF (not (exist? "replace")) =] ! echo No test for [=hackname=] in inc/[= ! IF (exist? "files") =][= ! files[0] =][= ! ELSE =]testing.h[= ! ENDIF =][= ! ENDIF =][= ! ELSE =] cat >> [= IF (exist? "files") =][= files[0] =][= --- 76,90 ---- =][= ! FOR fix =][= ! (set! HACK (string-upcase! (get "hackname"))) =][= IF (not (exist? "test_text")) =][= ! (if (not (exist? "replace")) ! (error (sprintf "include fix '%s' has no test text" ! (get "hackname") )) ) ! =][= ! ELSE =] cat >> [= IF (exist? "files") =][= files[0] =][= *************** cat >> [= *** 93,101 **** ENDIF =] <<_HACK_EOF_ ! #if defined( [=(string-upcase! (get "hackname"))=]_CHECK ) [=test_text=] ! #endif /* [=(string-upcase! (get "hackname"))=]_CHECK */ _HACK_EOF_ [=ENDIF =][= --- 92,100 ---- ENDIF =] <<_HACK_EOF_ ! #if defined( [=(. HACK)=]_CHECK ) [=test_text=] ! #endif /* [=(. HACK)=]_CHECK */ _HACK_EOF_ [=ENDIF =][= *************** ENDFOR fix *** 103,109 **** =] ! find . -type f | sed 's;\./;;' | sort | ../../fixincl cd ${DESTDIR} exitok=true --- 102,108 ---- =] ! find . -type f | sed 's;^\./;;' | sort | ../../fixincl cd ${DESTDIR} exitok=true diff -Nrc3pad gcc-3.0/gcc/fixinc/fixfixes.c gcc-3.0.1/gcc/fixinc/fixfixes.c *** gcc-3.0/gcc/fixinc/fixfixes.c Wed Dec 13 12:07:45 2000 --- gcc-3.0.1/gcc/fixinc/fixfixes.c Thu Jul 19 20:26:15 2001 *************** Here are the rules: *** 30,43 **** This may be useful, for example, if there are interesting strings or pre-compiled regular expressions stored there. - It is also possible to access fix descriptions by using the - index of a known fix, "my_fix_name" for example: - - tFixDesc* p_desc = fixDescList + MY_FIX_NAME_FIXIDX; - tTestDesc* p_tlist = p_desc->p_test_desc; - - regexec (p_tlist->p_test_regex, ...) - = = = = = = = = = = = = = = = = = = = = = = = = = This file is part of GNU CC. --- 30,35 ---- diff -Nrc3pad gcc-3.0/gcc/fixinc/fixincl.c gcc-3.0.1/gcc/fixinc/fixincl.c *** gcc-3.0/gcc/fixinc/fixincl.c Fri Mar 16 11:08:22 2001 --- gcc-3.0.1/gcc/fixinc/fixincl.c Fri Jul 20 21:19:53 2001 *************** initialize ( argc, argv ) *** 220,231 **** char** argv; { static const char var_not_found[] = "fixincl ERROR: %s environment variable not defined\n" - #ifdef __STDC__ "each of these must be defined:\n" ! #define _ENV_(v,m,n,t) "\t" n " - " t "\n" ! ENV_TABLE ! #undef _ENV_ #endif ; --- 220,233 ---- char** argv; { static const char var_not_found[] = + #ifndef __STDC__ + "fixincl ERROR: %s environment variable not defined\n" + #else "fixincl ERROR: %s environment variable not defined\n" "each of these must be defined:\n" ! # define _ENV_(v,m,n,t) "\t" n " - " t "\n" ! ENV_TABLE ! # undef _ENV_ #endif ; *************** test_for_changes (read_fd) *** 1259,1265 **** { FILE *in_fp = fdopen (read_fd, "r"); FILE *out_fp = (FILE *) NULL; ! char *pz_cmp = pz_curr_data; #ifdef DO_STATS fixed_ct++; --- 1261,1267 ---- { FILE *in_fp = fdopen (read_fd, "r"); FILE *out_fp = (FILE *) NULL; ! unsigned char *pz_cmp = (unsigned char*)pz_curr_data; #ifdef DO_STATS fixed_ct++; *************** test_for_changes (read_fd) *** 1271,1276 **** --- 1273,1279 ---- ch = getc (in_fp); if (ch == EOF) break; + ch &= 0xFF; /* all bytes are 8 bits */ /* IF we are emitting the output THEN emit this character, too. *************** test_for_changes (read_fd) *** 1289,1296 **** altered_ct++; #endif /* IF there are matched data, write the matched part now. */ ! if (pz_cmp != pz_curr_data) ! fwrite (pz_curr_data, (size_t)(pz_cmp - pz_curr_data), 1, out_fp); /* Emit the current unmatching character */ putc (ch, out_fp); --- 1292,1300 ---- altered_ct++; #endif /* IF there are matched data, write the matched part now. */ ! if ((char*)pz_cmp != pz_curr_data) ! fwrite (pz_curr_data, (size_t)((char*)pz_cmp - pz_curr_data), ! 1, out_fp); /* Emit the current unmatching character */ putc (ch, out_fp); diff -Nrc3pad gcc-3.0/gcc/fixinc/fixincl.tpl gcc-3.0.1/gcc/fixinc/fixincl.tpl *** gcc-3.0/gcc/fixinc/fixincl.tpl Sat May 19 15:39:05 2001 --- gcc-3.0.1/gcc/fixinc/fixincl.tpl Thu Jul 19 20:30:25 2001 *************** FOR fix =] *** 26,31 **** --- 26,33 ---- * Description of [= (set! Hack (string-capitalize! (get "hackname"))) (set! HACK (string-upcase! (get "hackname"))) + (if (and (not (exist? "test_text")) (not (exist? "replace"))) + (error (sprintf "include fix '%s' has no test text" Hack )) ) (. Hack)=] fix */[= *************** FOR fix =] *** 33,39 **** some C fix wishes to refer to the regexps it is paired with. See commentary at the top of fixfixes.c. =] - #define [=(sprintf "%-32s" (string-append HACK "_FIXIDX"))=] [=(for-index)=] tSCC z[=(. Hack)=]Name[] = "[=hackname=]"; --- 35,40 ---- *************** static const char* apz[=(. Hack)=]Patch[ *** 180,185 **** --- 181,198 ---- #define REGEX_COUNT [= (. re-ct) =] #define MACH_LIST_SIZE_LIMIT [= (+ 128 max-mach) =] #define FIX_COUNT [= (count "fix") =] + + /* + * Enumerate the fixes[= # in a way that minimizes diffs :-) =] + */ + typedef enum {[= + + FOR fix "," =] + [=(string-upcase! (get "hackname"))=]_FIXIDX[= + ENDFOR + + =] + } t_fixinc_idx; tFixDesc fixDescList[ FIX_COUNT ] = {[= diff -Nrc3pad gcc-3.0/gcc/fixinc/fixincl.x gcc-3.0.1/gcc/fixinc/fixincl.x *** gcc-3.0/gcc/fixinc/fixincl.x Sun Jun 17 12:49:45 2001 --- gcc-3.0.1/gcc/fixinc/fixincl.x Thu Jul 19 21:05:11 2001 *************** *** 5,11 **** * files which are fixed to work correctly with ANSI C and placed in a * directory that GNU C will search. * ! * This file contains 140 fixup descriptions. * * See README for more information. * --- 5,11 ---- * files which are fixed to work correctly with ANSI C and placed in a * directory that GNU C will search. * ! * This file contains 143 fixup descriptions. * * See README for more information. * *************** *** 32,74 **** /* * * * * * * * * * * * * * * * * * * * * * * * * * * ! * Description of Aaa_Ki_Iface fix */ ! #define AAA_KI_IFACE_FIXIDX 0 ! tSCC zAaa_Ki_IfaceName[] = ! "AAA_ki_iface"; /* * File name selection pattern */ ! tSCC zAaa_Ki_IfaceList[] = ! "|sys/ki_iface.h|"; /* * Machine/OS name selection pattern */ ! #define apzAaa_Ki_IfaceMachs (const char**)NULL ! ! /* ! * content selection pattern - do fix if pattern found ! */ ! tSCC zAaa_Ki_IfaceSelect0[] = ! "These definitions are for HP Internal developers"; ! ! #define AAA_KI_IFACE_TEST_CT 1 ! static tTestDesc aAaa_Ki_IfaceTests[] = { ! { TT_EGREP, zAaa_Ki_IfaceSelect0, (regex_t*)NULL }, }; /* ! * Fix Command Arguments for Aaa_Ki_Iface */ ! static const char* apzAaa_Ki_IfacePatch[] = { (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Aaa_Ki fix */ - #define AAA_KI_FIXIDX 1 tSCC zAaa_KiName[] = "AAA_ki"; --- 32,64 ---- /* * * * * * * * * * * * * * * * * * * * * * * * * * * ! * Description of Aaa_Bad_Fixes fix */ ! tSCC zAaa_Bad_FixesName[] = ! "AAA_bad_fixes"; /* * File name selection pattern */ ! tSCC zAaa_Bad_FixesList[] = ! "|sundev/ipi_error.h|"; /* * Machine/OS name selection pattern */ ! #define apzAaa_Bad_FixesMachs (const char**)NULL ! #define AAA_BAD_FIXES_TEST_CT 0 ! #define aAaa_Bad_FixesTests (tTestDesc*)NULL /* ! * Fix Command Arguments for Aaa_Bad_Fixes */ ! static const char* apzAaa_Bad_FixesPatch[] = { (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Aaa_Ki fix */ tSCC zAaa_KiName[] = "AAA_ki"; *************** static const char* apzAaa_KiPatch[] = { *** 102,108 **** * * Description of Aaa_Ki_Calls fix */ - #define AAA_KI_CALLS_FIXIDX 2 tSCC zAaa_Ki_CallsName[] = "AAA_ki_calls"; --- 92,97 ---- *************** static const char* apzAaa_Ki_CallsPatch[ *** 136,142 **** * * Description of Aaa_Ki_Defs fix */ - #define AAA_KI_DEFS_FIXIDX 3 tSCC zAaa_Ki_DefsName[] = "AAA_ki_defs"; --- 125,130 ---- *************** static const char* apzAaa_Ki_DefsPatch[] *** 168,236 **** /* * * * * * * * * * * * * * * * * * * * * * * * * * * ! * Description of Aaa_Standards fix */ ! #define AAA_STANDARDS_FIXIDX 4 ! tSCC zAaa_StandardsName[] = ! "AAA_standards"; /* * File name selection pattern */ ! tSCC zAaa_StandardsList[] = ! "|standards.h|"; /* * Machine/OS name selection pattern */ ! #define apzAaa_StandardsMachs (const char**)NULL /* * content selection pattern - do fix if pattern found */ ! tSCC zAaa_StandardsSelect0[] = ! "GNU and MIPS C compilers define __STDC__ differently"; ! #define AAA_STANDARDS_TEST_CT 1 ! static tTestDesc aAaa_StandardsTests[] = { ! { TT_EGREP, zAaa_StandardsSelect0, (regex_t*)NULL }, }; /* ! * Fix Command Arguments for Aaa_Standards */ ! static const char* apzAaa_StandardsPatch[] = { (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * ! * Description of Aaa_Bad_Fixes fix */ ! #define AAA_BAD_FIXES_FIXIDX 5 ! tSCC zAaa_Bad_FixesName[] = ! "AAA_bad_fixes"; /* * File name selection pattern */ ! tSCC zAaa_Bad_FixesList[] = ! "|sundev/ipi_error.h|"; /* * Machine/OS name selection pattern */ ! #define apzAaa_Bad_FixesMachs (const char**)NULL ! #define AAA_BAD_FIXES_TEST_CT 0 ! #define aAaa_Bad_FixesTests (tTestDesc*)NULL /* ! * Fix Command Arguments for Aaa_Bad_Fixes */ ! static const char* apzAaa_Bad_FixesPatch[] = { (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Aaa_Time fix */ - #define AAA_TIME_FIXIDX 6 tSCC zAaa_TimeName[] = "AAA_time"; --- 156,229 ---- /* * * * * * * * * * * * * * * * * * * * * * * * * * * ! * Description of Aaa_Ki_Iface fix */ ! tSCC zAaa_Ki_IfaceName[] = ! "AAA_ki_iface"; /* * File name selection pattern */ ! tSCC zAaa_Ki_IfaceList[] = ! "|sys/ki_iface.h|"; /* * Machine/OS name selection pattern */ ! #define apzAaa_Ki_IfaceMachs (const char**)NULL /* * content selection pattern - do fix if pattern found */ ! tSCC zAaa_Ki_IfaceSelect0[] = ! "These definitions are for HP Internal developers"; ! #define AAA_KI_IFACE_TEST_CT 1 ! static tTestDesc aAaa_Ki_IfaceTests[] = { ! { TT_EGREP, zAaa_Ki_IfaceSelect0, (regex_t*)NULL }, }; /* ! * Fix Command Arguments for Aaa_Ki_Iface */ ! static const char* apzAaa_Ki_IfacePatch[] = { (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * ! * Description of Aaa_Standards fix */ ! tSCC zAaa_StandardsName[] = ! "AAA_standards"; /* * File name selection pattern */ ! tSCC zAaa_StandardsList[] = ! "|standards.h|"; /* * Machine/OS name selection pattern */ ! #define apzAaa_StandardsMachs (const char**)NULL /* ! * content selection pattern - do fix if pattern found */ ! tSCC zAaa_StandardsSelect0[] = ! "GNU and MIPS C compilers define __STDC__ differently"; ! ! #define AAA_STANDARDS_TEST_CT 1 ! static tTestDesc aAaa_StandardsTests[] = { ! { TT_EGREP, zAaa_StandardsSelect0, (regex_t*)NULL }, }; ! ! /* ! * Fix Command Arguments for Aaa_Standards ! */ ! static const char* apzAaa_StandardsPatch[] = { (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Aaa_Time fix */ tSCC zAaa_TimeName[] = "AAA_time"; *************** static const char* apzAaa_TimePatch[] = *** 264,270 **** * * Description of Aab_Dgux_Int_Varargs fix */ - #define AAB_DGUX_INT_VARARGS_FIXIDX 7 tSCC zAab_Dgux_Int_VarargsName[] = "AAB_dgux_int_varargs"; --- 257,262 ---- *************** typedef char * va_list;\n\ *** 336,342 **** * * Description of Aab_Fd_Zero_Asm_Posix_Types_H fix */ - #define AAB_FD_ZERO_ASM_POSIX_TYPES_H_FIXIDX 8 tSCC zAab_Fd_Zero_Asm_Posix_Types_HName[] = "AAB_fd_zero_asm_posix_types_h"; --- 328,333 ---- *************** static const char* apzAab_Fd_Zero_Asm_Po *** 390,396 **** * * Description of Aab_Fd_Zero_Gnu_Types_H fix */ - #define AAB_FD_ZERO_GNU_TYPES_H_FIXIDX 9 tSCC zAab_Fd_Zero_Gnu_Types_HName[] = "AAB_fd_zero_gnu_types_h"; --- 381,386 ---- *************** static const char* apzAab_Fd_Zero_Gnu_Ty *** 435,441 **** * * Description of Aab_Fd_Zero_Selectbits_H fix */ - #define AAB_FD_ZERO_SELECTBITS_H_FIXIDX 10 tSCC zAab_Fd_Zero_Selectbits_HName[] = "AAB_fd_zero_selectbits_h"; --- 425,430 ---- *************** static const char* apzAab_Fd_Zero_Select *** 484,490 **** * * Description of Aab_Sun_Memcpy fix */ - #define AAB_SUN_MEMCPY_FIXIDX 11 tSCC zAab_Sun_MemcpyName[] = "AAB_sun_memcpy"; --- 473,478 ---- *************** extern int memcmp();\n\n\ *** 534,540 **** * * Description of Aab_Svr4_Replace_Byteorder fix */ - #define AAB_SVR4_REPLACE_BYTEORDER_FIXIDX 12 tSCC zAab_Svr4_Replace_ByteorderName[] = "AAB_svr4_replace_byteorder"; --- 522,527 ---- *************** ntohs (unsigned int __arg)\n\ *** 674,680 **** * * Description of Aab_Ultrix_Ansi_Compat fix */ - #define AAB_ULTRIX_ANSI_COMPAT_FIXIDX 13 tSCC zAab_Ultrix_Ansi_CompatName[] = "AAB_ultrix_ansi_compat"; --- 661,666 ---- *************** static const char* apzAab_Ultrix_Ansi_Co *** 709,715 **** * * Description of Aab_Ultrix_Limits fix */ - #define AAB_ULTRIX_LIMITS_FIXIDX 14 tSCC zAab_Ultrix_LimitsName[] = "AAB_ultrix_limits"; --- 695,700 ---- *************** static const char* apzAab_Ultrix_LimitsP *** 741,747 **** * * Description of Aab_Ultrix_Memory fix */ - #define AAB_ULTRIX_MEMORY_FIXIDX 15 tSCC zAab_Ultrix_MemoryName[] = "AAB_ultrix_memory"; --- 726,731 ---- *************** static const char* apzAab_Ultrix_MemoryP *** 773,779 **** * * Description of Aab_Ultrix_String fix */ - #define AAB_ULTRIX_STRING_FIXIDX 16 tSCC zAab_Ultrix_StringName[] = "AAB_ultrix_string"; --- 757,762 ---- *************** static const char* apzAab_Ultrix_StringP *** 805,811 **** * * Description of Aix_Pthread fix */ - #define AIX_PTHREAD_FIXIDX 17 tSCC zAix_PthreadName[] = "aix_pthread"; --- 788,793 ---- *************** static const char* apzAix_PthreadPatch[] *** 843,849 **** * * Description of Aix_Sysmachine fix */ - #define AIX_SYSMACHINE_FIXIDX 18 tSCC zAix_SysmachineName[] = "aix_sysmachine"; --- 825,830 ---- *************** static const char* apzAix_SysmachinePatc *** 879,885 **** * * Description of Aix_Syswait fix */ - #define AIX_SYSWAIT_FIXIDX 19 tSCC zAix_SyswaitName[] = "aix_syswait"; --- 860,865 ---- *************** static const char* apzAix_SyswaitPatch[] *** 919,925 **** * * Description of Aix_Volatile fix */ - #define AIX_VOLATILE_FIXIDX 20 tSCC zAix_VolatileName[] = "aix_volatile"; --- 899,904 ---- *************** static const char* apzAix_VolatilePatch[ *** 955,961 **** * * Description of Alpha___Assert fix */ - #define ALPHA___ASSERT_FIXIDX 21 tSCC zAlpha___AssertName[] = "alpha___assert"; --- 934,939 ---- *************** static const char* apzAlpha___AssertPatc *** 991,997 **** * * Description of Alpha_Getopt fix */ - #define ALPHA_GETOPT_FIXIDX 22 tSCC zAlpha_GetoptName[] = "alpha_getopt"; --- 969,974 ---- *************** static const char* apzAlpha_GetoptPatch[ *** 1027,1033 **** * * Description of Alpha_Parens fix */ - #define ALPHA_PARENS_FIXIDX 23 tSCC zAlpha_ParensName[] = "alpha_parens"; --- 1004,1009 ---- *************** static const char* apzAlpha_ParensPatch[ *** 1063,1069 **** * * Description of Alpha_Sbrk fix */ - #define ALPHA_SBRK_FIXIDX 24 tSCC zAlpha_SbrkName[] = "alpha_sbrk"; --- 1039,1044 ---- *************** static const char* apzAlpha_SbrkPatch[] *** 1099,1105 **** * * Description of Arm_Norcroft_Hint fix */ - #define ARM_NORCROFT_HINT_FIXIDX 25 tSCC zArm_Norcroft_HintName[] = "arm_norcroft_hint"; --- 1074,1079 ---- *************** static const char* apzArm_Norcroft_HintP *** 1135,1141 **** * * Description of Arm_Wchar fix */ - #define ARM_WCHAR_FIXIDX 26 tSCC zArm_WcharName[] = "arm_wchar"; --- 1109,1114 ---- *************** static const char* apzArm_WcharPatch[] = *** 1172,1178 **** * * Description of Aux_Asm fix */ - #define AUX_ASM_FIXIDX 27 tSCC zAux_AsmName[] = "aux_asm"; --- 1145,1150 ---- *************** static const char* apzAux_AsmPatch[] = { *** 1208,1214 **** * * Description of Avoid_Bool_Define fix */ - #define AVOID_BOOL_DEFINE_FIXIDX 28 tSCC zAvoid_Bool_DefineName[] = "avoid_bool_define"; --- 1180,1185 ---- *************** static const char* apzAvoid_Bool_DefineP *** 1254,1260 **** * * Description of Avoid_Bool_Type fix */ - #define AVOID_BOOL_TYPE_FIXIDX 29 tSCC zAvoid_Bool_TypeName[] = "avoid_bool_type"; --- 1225,1230 ---- *************** static const char* apzAvoid_Bool_TypePat *** 1299,1305 **** * * Description of Avoid_Wchar_T_Type fix */ - #define AVOID_WCHAR_T_TYPE_FIXIDX 30 tSCC zAvoid_Wchar_T_TypeName[] = "avoid_wchar_t_type"; --- 1269,1274 ---- *************** static const char* apzAvoid_Wchar_T_Type *** 1336,1342 **** * * Description of Bad_Lval fix */ - #define BAD_LVAL_FIXIDX 31 tSCC zBad_LvalName[] = "bad_lval"; --- 1305,1310 ---- *************** static const char* apzBad_LvalPatch[] = *** 1371,1377 **** * * Description of Bad_Struct_Term fix */ - #define BAD_STRUCT_TERM_FIXIDX 32 tSCC zBad_Struct_TermName[] = "bad_struct_term"; --- 1339,1344 ---- *************** static const char* apzBad_Struct_TermPat *** 1407,1413 **** * * Description of Badquote fix */ - #define BADQUOTE_FIXIDX 33 tSCC zBadquoteName[] = "badquote"; --- 1374,1379 ---- *************** static const char* apzBadquotePatch[] = *** 1443,1449 **** * * Description of Broken_Assert_Stdio fix */ - #define BROKEN_ASSERT_STDIO_FIXIDX 34 tSCC zBroken_Assert_StdioName[] = "broken_assert_stdio"; --- 1409,1414 ---- *************** static const char* apzBroken_Assert_Stdi *** 1486,1492 **** * * Description of Broken_Assert_Stdlib fix */ - #define BROKEN_ASSERT_STDLIB_FIXIDX 35 tSCC zBroken_Assert_StdlibName[] = "broken_assert_stdlib"; --- 1451,1456 ---- *************** static const char* apzBroken_Assert_Stdl *** 1531,1537 **** * * Description of Broken_Cabs fix */ - #define BROKEN_CABS_FIXIDX 36 tSCC zBroken_CabsName[] = "broken_cabs"; --- 1495,1500 ---- *************** static const char* apzBroken_CabsPatch[] *** 1568,1574 **** * * Description of Ctrl_Quotes_Def fix */ - #define CTRL_QUOTES_DEF_FIXIDX 37 tSCC zCtrl_Quotes_DefName[] = "ctrl_quotes_def"; --- 1531,1536 ---- *************** static const char* apzCtrl_Quotes_DefPat *** 1603,1609 **** * * Description of Ctrl_Quotes_Use fix */ - #define CTRL_QUOTES_USE_FIXIDX 38 tSCC zCtrl_Quotes_UseName[] = "ctrl_quotes_use"; --- 1565,1570 ---- *************** static const char* apzCtrl_Quotes_UsePat *** 1638,1644 **** * * Description of Cxx_Unready fix */ - #define CXX_UNREADY_FIXIDX 39 tSCC zCxx_UnreadyName[] = "cxx_unready"; --- 1599,1604 ---- *************** extern \"C\" {\n\ *** 1686,1692 **** * * Description of Dec_Intern_Asm fix */ - #define DEC_INTERN_ASM_FIXIDX 40 tSCC zDec_Intern_AsmName[] = "dec_intern_asm"; --- 1646,1651 ---- *************** static const char* apzDec_Intern_AsmPatc *** 1716,1722 **** * * Description of Djgpp_Wchar_H fix */ - #define DJGPP_WCHAR_H_FIXIDX 41 tSCC zDjgpp_Wchar_HName[] = "djgpp_wchar_h"; --- 1675,1680 ---- *************** static const char* apzDjgpp_Wchar_HPatch *** 1760,1766 **** * * Description of Ecd_Cursor fix */ - #define ECD_CURSOR_FIXIDX 42 tSCC zEcd_CursorName[] = "ecd_cursor"; --- 1718,1723 ---- *************** static const char* apzEcd_CursorPatch[] *** 1796,1802 **** * * Description of Fix_Header_Breakage fix */ - #define FIX_HEADER_BREAKAGE_FIXIDX 43 tSCC zFix_Header_BreakageName[] = "fix_header_breakage"; --- 1753,1758 ---- *************** static const char* apzFix_Header_Breakag *** 1834,1840 **** * * Description of Freebsd_Gcc3_Breakage fix */ - #define FREEBSD_GCC3_BREAKAGE_FIXIDX 44 tSCC zFreebsd_Gcc3_BreakageName[] = "freebsd_gcc3_breakage"; --- 1790,1795 ---- *************** static const char* apzFreebsd_Gcc3_Break *** 1877,1885 **** /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Hp_Inline fix */ - #define HP_INLINE_FIXIDX 45 tSCC zHp_InlineName[] = "hp_inline"; --- 1832,1880 ---- /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Gnu_Types fix + */ + tSCC zGnu_TypesName[] = + "gnu_types"; + + /* + * File name selection pattern + */ + tSCC zGnu_TypesList[] = + "|sys/types.h|stdlib.h|sys/stdtypes.h|stddef.h|memory.h|unistd.h|"; + /* + * Machine/OS name selection pattern + */ + #define apzGnu_TypesMachs (const char**)NULL + + /* + * content selection pattern - do fix if pattern found + */ + tSCC zGnu_TypesSelect0[] = + "^[ \t]*typedef[ \t]+.*[ \t](ptrdiff|size|wchar)_t;"; + + /* + * content bypass pattern - skip fix if pattern found + */ + tSCC zGnu_TypesBypass0[] = + "_GCC_(PTRDIFF|SIZE|WCHAR)_T"; + + #define GNU_TYPES_TEST_CT 2 + static tTestDesc aGnu_TypesTests[] = { + { TT_NEGREP, zGnu_TypesBypass0, (regex_t*)NULL }, + { TT_EGREP, zGnu_TypesSelect0, (regex_t*)NULL }, }; + + /* + * Fix Command Arguments for Gnu_Types + */ + static const char* apzGnu_TypesPatch[] = { + "gnu_type", + (char*)NULL }; + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Hp_Inline fix */ tSCC zHp_InlineName[] = "hp_inline"; *************** static const char* apzHp_InlinePatch[] = *** 1916,1922 **** * * Description of Hp_Sysfile fix */ - #define HP_SYSFILE_FIXIDX 46 tSCC zHp_SysfileName[] = "hp_sysfile"; --- 1911,1916 ---- *************** static const char* apzHp_SysfilePatch[] *** 1953,1959 **** * * Description of Hpux10_Cpp_Pow_Inline fix */ - #define HPUX10_CPP_POW_INLINE_FIXIDX 47 tSCC zHpux10_Cpp_Pow_InlineName[] = "hpux10_cpp_pow_inline"; --- 1947,1952 ---- *************** static const char* apzHpux10_Cpp_Pow_Inl *** 1994,2002 **** /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Hpux11_Fabsf fix */ - #define HPUX11_FABSF_FIXIDX 48 tSCC zHpux11_FabsfName[] = "hpux11_fabsf"; --- 1987,2031 ---- /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Hpux11_Cpp_Pow_Inline fix + */ + tSCC zHpux11_Cpp_Pow_InlineName[] = + "hpux11_cpp_pow_inline"; + + /* + * File name selection pattern + */ + tSCC zHpux11_Cpp_Pow_InlineList[] = + "|math.h|"; + /* + * Machine/OS name selection pattern + */ + #define apzHpux11_Cpp_Pow_InlineMachs (const char**)NULL + + /* + * content selection pattern - do fix if pattern found + */ + tSCC zHpux11_Cpp_Pow_InlineSelect0[] = + " +inline double pow\\(double d,int expon\\) {\n\ + +return pow\\(d, \\(double\\)expon\\);\n\ + +}\n"; + + #define HPUX11_CPP_POW_INLINE_TEST_CT 1 + static tTestDesc aHpux11_Cpp_Pow_InlineTests[] = { + { TT_EGREP, zHpux11_Cpp_Pow_InlineSelect0, (regex_t*)NULL }, }; + + /* + * Fix Command Arguments for Hpux11_Cpp_Pow_Inline + */ + static const char* apzHpux11_Cpp_Pow_InlinePatch[] = { + "format", + "", + (char*)NULL }; + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Hpux11_Fabsf fix */ tSCC zHpux11_FabsfName[] = "hpux11_fabsf"; *************** static const char* apzHpux11_FabsfPatch[ *** 2041,2047 **** * * Description of Hpux11_Uint32_C fix */ - #define HPUX11_UINT32_C_FIXIDX 49 tSCC zHpux11_Uint32_CName[] = "hpux11_uint32_c"; --- 2070,2075 ---- *************** static const char* apzHpux11_Uint32_CPat *** 2075,2083 **** /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Hpux8_Bogus_Inlines fix */ - #define HPUX8_BOGUS_INLINES_FIXIDX 50 tSCC zHpux8_Bogus_InlinesName[] = "hpux8_bogus_inlines"; --- 2103,2145 ---- /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Hpux11_Vsnprintf fix + */ + tSCC zHpux11_VsnprintfName[] = + "hpux11_vsnprintf"; + + /* + * File name selection pattern + */ + tSCC zHpux11_VsnprintfList[] = + "|stdio.h|"; + /* + * Machine/OS name selection pattern + */ + #define apzHpux11_VsnprintfMachs (const char**)NULL + + /* + * content selection pattern - do fix if pattern found + */ + tSCC zHpux11_VsnprintfSelect0[] = + "extern int vsnprintf\\(char \\*, __size_t, const char \\*, __va__list\\);"; + + #define HPUX11_VSNPRINTF_TEST_CT 1 + static tTestDesc aHpux11_VsnprintfTests[] = { + { TT_EGREP, zHpux11_VsnprintfSelect0, (regex_t*)NULL }, }; + + /* + * Fix Command Arguments for Hpux11_Vsnprintf + */ + static const char* apzHpux11_VsnprintfPatch[] = { + "format", + "extern int vsnprintf(char *, __size_t, const char *, __va_list);", + (char*)NULL }; + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Hpux8_Bogus_Inlines fix */ tSCC zHpux8_Bogus_InlinesName[] = "hpux8_bogus_inlines"; *************** static const char* apzHpux8_Bogus_Inline *** 2113,2193 **** /* * * * * * * * * * * * * * * * * * * * * * * * * * * ! * Description of Int_Abort_Free_And_Exit fix */ ! #define INT_ABORT_FREE_AND_EXIT_FIXIDX 51 ! tSCC zInt_Abort_Free_And_ExitName[] = ! "int_abort_free_and_exit"; /* * File name selection pattern */ ! tSCC zInt_Abort_Free_And_ExitList[] = ! "|stdlib.h|"; /* * Machine/OS name selection pattern */ ! #define apzInt_Abort_Free_And_ExitMachs (const char**)NULL /* * content selection pattern - do fix if pattern found */ ! tSCC zInt_Abort_Free_And_ExitSelect0[] = ! "int[ \t]+(abort|free|exit)[ \t]*\\("; ! #define INT_ABORT_FREE_AND_EXIT_TEST_CT 1 ! static tTestDesc aInt_Abort_Free_And_ExitTests[] = { ! { TT_EGREP, zInt_Abort_Free_And_ExitSelect0, (regex_t*)NULL }, }; /* ! * Fix Command Arguments for Int_Abort_Free_And_Exit */ ! static const char* apzInt_Abort_Free_And_ExitPatch[] = { "format", ! "void\t%1(", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * ! * Description of Isc_Omits_With_Stdc fix */ ! #define ISC_OMITS_WITH_STDC_FIXIDX 52 ! tSCC zIsc_Omits_With_StdcName[] = ! "isc_omits_with_stdc"; /* * File name selection pattern */ ! tSCC zIsc_Omits_With_StdcList[] = ! "|stdio.h|math.h|ctype.h|sys/limits.h|sys/fcntl.h|sys/dirent.h|"; /* * Machine/OS name selection pattern */ ! #define apzIsc_Omits_With_StdcMachs (const char**)NULL /* * content selection pattern - do fix if pattern found */ ! tSCC zIsc_Omits_With_StdcSelect0[] = ! "!defined\\(__STDC__\\) && !defined\\(_POSIX_SOURCE\\)"; ! #define ISC_OMITS_WITH_STDC_TEST_CT 1 ! static tTestDesc aIsc_Omits_With_StdcTests[] = { ! { TT_EGREP, zIsc_Omits_With_StdcSelect0, (regex_t*)NULL }, }; /* ! * Fix Command Arguments for Isc_Omits_With_Stdc */ ! static const char* apzIsc_Omits_With_StdcPatch[] = { "format", ! "!defined(_POSIX_SOURCE)", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Io_Quotes_Def fix */ - #define IO_QUOTES_DEF_FIXIDX 53 tSCC zIo_Quotes_DefName[] = "io_quotes_def"; --- 2175,2304 ---- /* * * * * * * * * * * * * * * * * * * * * * * * * * * ! * Description of Hpux_Maxint fix */ ! tSCC zHpux_MaxintName[] = ! "hpux_maxint"; /* * File name selection pattern */ ! tSCC zHpux_MaxintList[] = ! "|sys/param.h|values.h|"; /* * Machine/OS name selection pattern */ ! #define apzHpux_MaxintMachs (const char**)NULL /* * content selection pattern - do fix if pattern found */ ! tSCC zHpux_MaxintSelect0[] = ! "^#[ \t]*define[ \t]+MAXINT[ \t]"; ! /* ! * content bypass pattern - skip fix if pattern found ! */ ! tSCC zHpux_MaxintBypass0[] = ! "^#[ \t]*ifndef[ \t]+MAXINT"; /* ! * perform the 'test' shell command - do fix on success */ ! tSCC zHpux_MaxintTest0[] = ! "-n \"`egrep '#[ \t]*define[ \t]+MAXINT[ \t]' sys/param.h`\""; ! ! #define HPUX_MAXINT_TEST_CT 3 ! static tTestDesc aHpux_MaxintTests[] = { ! { TT_TEST, zHpux_MaxintTest0, 0 /* unused */ }, ! { TT_NEGREP, zHpux_MaxintBypass0, (regex_t*)NULL }, ! { TT_EGREP, zHpux_MaxintSelect0, (regex_t*)NULL }, }; ! ! /* ! * Fix Command Arguments for Hpux_Maxint ! */ ! static const char* apzHpux_MaxintPatch[] = { "format", ! "#ifndef MAXINT\n\ ! %0\n\ ! #endif", ! "^#[ \t]*define[ \t]+MAXINT[ \t].*", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * ! * Description of Hpux_Systime fix */ ! tSCC zHpux_SystimeName[] = ! "hpux_systime"; /* * File name selection pattern */ ! tSCC zHpux_SystimeList[] = ! "|sys/time.h|"; /* * Machine/OS name selection pattern */ ! #define apzHpux_SystimeMachs (const char**)NULL /* * content selection pattern - do fix if pattern found */ ! tSCC zHpux_SystimeSelect0[] = ! "^extern struct sigevent;"; ! #define HPUX_SYSTIME_TEST_CT 1 ! static tTestDesc aHpux_SystimeTests[] = { ! { TT_EGREP, zHpux_SystimeSelect0, (regex_t*)NULL }, }; /* ! * Fix Command Arguments for Hpux_Systime */ ! static const char* apzHpux_SystimePatch[] = { "format", ! "struct sigevent;", ! (char*)NULL }; ! ! /* * * * * * * * * * * * * * * * * * * * * * * * * * ! * ! * Description of Int_Abort_Free_And_Exit fix ! */ ! tSCC zInt_Abort_Free_And_ExitName[] = ! "int_abort_free_and_exit"; ! ! /* ! * File name selection pattern ! */ ! tSCC zInt_Abort_Free_And_ExitList[] = ! "|stdlib.h|"; ! /* ! * Machine/OS name selection pattern ! */ ! #define apzInt_Abort_Free_And_ExitMachs (const char**)NULL ! ! /* ! * content selection pattern - do fix if pattern found ! */ ! tSCC zInt_Abort_Free_And_ExitSelect0[] = ! "int[ \t]+(abort|free|exit)[ \t]*\\("; ! ! #define INT_ABORT_FREE_AND_EXIT_TEST_CT 1 ! static tTestDesc aInt_Abort_Free_And_ExitTests[] = { ! { TT_EGREP, zInt_Abort_Free_And_ExitSelect0, (regex_t*)NULL }, }; ! ! /* ! * Fix Command Arguments for Int_Abort_Free_And_Exit ! */ ! static const char* apzInt_Abort_Free_And_ExitPatch[] = { ! "format", ! "void\t%1(", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Io_Quotes_Def fix */ tSCC zIo_Quotes_DefName[] = "io_quotes_def"; *************** static const char* apzIo_Quotes_DefPatch *** 2222,2228 **** * * Description of Io_Quotes_Use fix */ - #define IO_QUOTES_USE_FIXIDX 54 tSCC zIo_Quotes_UseName[] = "io_quotes_use"; --- 2333,2338 ---- *************** static const char* apzIo_Quotes_UsePatch *** 2255,2352 **** /* * * * * * * * * * * * * * * * * * * * * * * * * * * - * Description of Hpux_Maxint fix - */ - #define HPUX_MAXINT_FIXIDX 55 - tSCC zHpux_MaxintName[] = - "hpux_maxint"; - - /* - * File name selection pattern - */ - tSCC zHpux_MaxintList[] = - "|sys/param.h|values.h|"; - /* - * Machine/OS name selection pattern - */ - #define apzHpux_MaxintMachs (const char**)NULL - - /* - * content selection pattern - do fix if pattern found - */ - tSCC zHpux_MaxintSelect0[] = - "^#[ \t]*define[ \t]+MAXINT[ \t]"; - - /* - * content bypass pattern - skip fix if pattern found - */ - tSCC zHpux_MaxintBypass0[] = - "^#[ \t]*ifndef[ \t]+MAXINT"; - - /* - * perform the 'test' shell command - do fix on success - */ - tSCC zHpux_MaxintTest0[] = - "-n \"`egrep '#[ \t]*define[ \t]+MAXINT[ \t]' sys/param.h`\""; - - #define HPUX_MAXINT_TEST_CT 3 - static tTestDesc aHpux_MaxintTests[] = { - { TT_TEST, zHpux_MaxintTest0, 0 /* unused */ }, - { TT_NEGREP, zHpux_MaxintBypass0, (regex_t*)NULL }, - { TT_EGREP, zHpux_MaxintSelect0, (regex_t*)NULL }, }; - - /* - * Fix Command Arguments for Hpux_Maxint - */ - static const char* apzHpux_MaxintPatch[] = { - "format", - "#ifndef MAXINT\n\ - %0\n\ - #endif", - "^#[ \t]*define[ \t]+MAXINT[ \t].*", - (char*)NULL }; - - /* * * * * * * * * * * * * * * * * * * * * * * * * * - * - * Description of Hpux_Systime fix - */ - #define HPUX_SYSTIME_FIXIDX 56 - tSCC zHpux_SystimeName[] = - "hpux_systime"; - - /* - * File name selection pattern - */ - tSCC zHpux_SystimeList[] = - "|sys/time.h|"; - /* - * Machine/OS name selection pattern - */ - #define apzHpux_SystimeMachs (const char**)NULL - - /* - * content selection pattern - do fix if pattern found - */ - tSCC zHpux_SystimeSelect0[] = - "^extern struct sigevent;"; - - #define HPUX_SYSTIME_TEST_CT 1 - static tTestDesc aHpux_SystimeTests[] = { - { TT_EGREP, zHpux_SystimeSelect0, (regex_t*)NULL }, }; - - /* - * Fix Command Arguments for Hpux_Systime - */ - static const char* apzHpux_SystimePatch[] = { - "format", - "struct sigevent;", - (char*)NULL }; - - /* * * * * * * * * * * * * * * * * * * * * * * * * * - * * Description of Ip_Missing_Semi fix */ - #define IP_MISSING_SEMI_FIXIDX 57 tSCC zIp_Missing_SemiName[] = "ip_missing_semi"; --- 2365,2372 ---- *************** static const char* apzIp_Missing_SemiPat *** 2381,2387 **** * * Description of Irix_Asm_Apostrophe fix */ - #define IRIX_ASM_APOSTROPHE_FIXIDX 58 tSCC zIrix_Asm_ApostropheName[] = "irix_asm_apostrophe"; --- 2401,2406 ---- *************** static const char* apzIrix_Asm_Apostroph *** 2416,2496 **** /* * * * * * * * * * * * * * * * * * * * * * * * * * * ! * Description of Irix_Stdio_Va_List fix */ ! #define IRIX_STDIO_VA_LIST_FIXIDX 59 ! tSCC zIrix_Stdio_Va_ListName[] = ! "irix_stdio_va_list"; /* * File name selection pattern */ ! tSCC zIrix_Stdio_Va_ListList[] = ! "|stdio.h|"; /* * Machine/OS name selection pattern */ ! #define apzIrix_Stdio_Va_ListMachs (const char**)NULL /* * content selection pattern - do fix if pattern found */ ! tSCC zIrix_Stdio_Va_ListSelect0[] = ! "(printf\\(.*), /\\* va_list \\*/ char \\*"; ! #define IRIX_STDIO_VA_LIST_TEST_CT 1 ! static tTestDesc aIrix_Stdio_Va_ListTests[] = { ! { TT_EGREP, zIrix_Stdio_Va_ListSelect0, (regex_t*)NULL }, }; /* ! * Fix Command Arguments for Irix_Stdio_Va_List */ ! static const char* apzIrix_Stdio_Va_ListPatch[] = { "format", ! "%1, __gnuc_va_list", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * ! * Description of Irix_Limits_Const fix */ ! #define IRIX_LIMITS_CONST_FIXIDX 60 ! tSCC zIrix_Limits_ConstName[] = ! "irix_limits_const"; /* * File name selection pattern */ ! tSCC zIrix_Limits_ConstList[] = ! "|fixinc-test-limits.h|limits.h|"; /* * Machine/OS name selection pattern */ ! #define apzIrix_Limits_ConstMachs (const char**)NULL /* * content selection pattern - do fix if pattern found */ ! tSCC zIrix_Limits_ConstSelect0[] = ! "^extern const "; ! #define IRIX_LIMITS_CONST_TEST_CT 1 ! static tTestDesc aIrix_Limits_ConstTests[] = { ! { TT_EGREP, zIrix_Limits_ConstSelect0, (regex_t*)NULL }, }; /* ! * Fix Command Arguments for Irix_Limits_Const */ ! static const char* apzIrix_Limits_ConstPatch[] = { "format", ! "extern __const ", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Isc_Fmod fix */ - #define ISC_FMOD_FIXIDX 61 tSCC zIsc_FmodName[] = "isc_fmod"; --- 2435,2512 ---- /* * * * * * * * * * * * * * * * * * * * * * * * * * * ! * Description of Irix_Limits_Const fix */ ! tSCC zIrix_Limits_ConstName[] = ! "irix_limits_const"; /* * File name selection pattern */ ! tSCC zIrix_Limits_ConstList[] = ! "|fixinc-test-limits.h|limits.h|"; /* * Machine/OS name selection pattern */ ! #define apzIrix_Limits_ConstMachs (const char**)NULL /* * content selection pattern - do fix if pattern found */ ! tSCC zIrix_Limits_ConstSelect0[] = ! "^extern const "; ! #define IRIX_LIMITS_CONST_TEST_CT 1 ! static tTestDesc aIrix_Limits_ConstTests[] = { ! { TT_EGREP, zIrix_Limits_ConstSelect0, (regex_t*)NULL }, }; /* ! * Fix Command Arguments for Irix_Limits_Const */ ! static const char* apzIrix_Limits_ConstPatch[] = { "format", ! "extern __const ", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * ! * Description of Irix_Stdio_Va_List fix */ ! tSCC zIrix_Stdio_Va_ListName[] = ! "irix_stdio_va_list"; /* * File name selection pattern */ ! tSCC zIrix_Stdio_Va_ListList[] = ! "|stdio.h|"; /* * Machine/OS name selection pattern */ ! #define apzIrix_Stdio_Va_ListMachs (const char**)NULL /* * content selection pattern - do fix if pattern found */ ! tSCC zIrix_Stdio_Va_ListSelect0[] = ! "(printf\\(.*), /\\* va_list \\*/ char \\*"; ! #define IRIX_STDIO_VA_LIST_TEST_CT 1 ! static tTestDesc aIrix_Stdio_Va_ListTests[] = { ! { TT_EGREP, zIrix_Stdio_Va_ListSelect0, (regex_t*)NULL }, }; /* ! * Fix Command Arguments for Irix_Stdio_Va_List */ ! static const char* apzIrix_Stdio_Va_ListPatch[] = { "format", ! "%1, __gnuc_va_list", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Isc_Fmod fix */ tSCC zIsc_FmodName[] = "isc_fmod"; *************** static const char* apzIsc_FmodPatch[] = *** 2524,2532 **** /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Kandr_Concat fix */ - #define KANDR_CONCAT_FIXIDX 62 tSCC zKandr_ConcatName[] = "kandr_concat"; --- 2540,2582 ---- /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Isc_Omits_With_Stdc fix + */ + tSCC zIsc_Omits_With_StdcName[] = + "isc_omits_with_stdc"; + + /* + * File name selection pattern + */ + tSCC zIsc_Omits_With_StdcList[] = + "|stdio.h|math.h|ctype.h|sys/limits.h|sys/fcntl.h|sys/dirent.h|"; + /* + * Machine/OS name selection pattern + */ + #define apzIsc_Omits_With_StdcMachs (const char**)NULL + + /* + * content selection pattern - do fix if pattern found + */ + tSCC zIsc_Omits_With_StdcSelect0[] = + "!defined\\(__STDC__\\) && !defined\\(_POSIX_SOURCE\\)"; + + #define ISC_OMITS_WITH_STDC_TEST_CT 1 + static tTestDesc aIsc_Omits_With_StdcTests[] = { + { TT_EGREP, zIsc_Omits_With_StdcSelect0, (regex_t*)NULL }, }; + + /* + * Fix Command Arguments for Isc_Omits_With_Stdc + */ + static const char* apzIsc_Omits_With_StdcPatch[] = { + "format", + "!defined(_POSIX_SOURCE)", + (char*)NULL }; + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Kandr_Concat fix */ tSCC zKandr_ConcatName[] = "kandr_concat"; *************** static const char* apzKandr_ConcatPatch[ *** 2562,2568 **** * * Description of Libc1_Ifdefd_Memx fix */ - #define LIBC1_IFDEFD_MEMX_FIXIDX 63 tSCC zLibc1_Ifdefd_MemxName[] = "libc1_ifdefd_memx"; --- 2612,2617 ---- *************** extern [a-z_]+ mem.*(\n\ *** 2611,2617 **** * * Description of Limits_Ifndefs fix */ - #define LIMITS_IFNDEFS_FIXIDX 64 tSCC zLimits_IfndefsName[] = "limits_ifndefs"; --- 2660,2665 ---- *************** static const char* apzLimits_IfndefsPatc *** 2650,2656 **** * * Description of Lynx_Void_Int fix */ - #define LYNX_VOID_INT_FIXIDX 65 tSCC zLynx_Void_IntName[] = "lynx_void_int"; --- 2698,2703 ---- *************** static const char* apzLynx_Void_IntPatch *** 2686,2692 **** * * Description of Lynxos_Fcntl_Proto fix */ - #define LYNXOS_FCNTL_PROTO_FIXIDX 66 tSCC zLynxos_Fcntl_ProtoName[] = "lynxos_fcntl_proto"; --- 2733,2738 ---- *************** static const char* apzLynxos_Fcntl_Proto *** 2723,2729 **** * * Description of M88k_Bad_Hypot_Opt fix */ - #define M88K_BAD_HYPOT_OPT_FIXIDX 67 tSCC zM88k_Bad_Hypot_OptName[] = "m88k_bad_hypot_opt"; --- 2769,2774 ---- *************** static __inline__ double fake_hypot (x, *** 2772,2778 **** * * Description of M88k_Bad_S_If fix */ - #define M88K_BAD_S_IF_FIXIDX 68 tSCC zM88k_Bad_S_IfName[] = "m88k_bad_s_if"; --- 2817,2822 ---- *************** static const char* apzM88k_Bad_S_IfPatch *** 2811,2817 **** * * Description of M88k_Multi_Incl fix */ - #define M88K_MULTI_INCL_FIXIDX 69 tSCC zM88k_Multi_InclName[] = "m88k_multi_incl"; --- 2855,2860 ---- *************** static const char* apzM88k_Multi_InclPat *** 2848,2854 **** * * Description of Machine_Ansi_H_Va_List fix */ - #define MACHINE_ANSI_H_VA_LIST_FIXIDX 70 tSCC zMachine_Ansi_H_Va_ListName[] = "machine_ansi_h_va_list"; --- 2891,2896 ---- *************** static const char* apzMachine_Ansi_H_Va_ *** 2891,2897 **** * * Description of Machine_Name fix */ - #define MACHINE_NAME_FIXIDX 71 tSCC zMachine_NameName[] = "machine_name"; --- 2933,2938 ---- *************** static const char* apzMachine_NamePatch[ *** 2924,2930 **** * * Description of Math_Exception fix */ - #define MATH_EXCEPTION_FIXIDX 72 tSCC zMath_ExceptionName[] = "math_exception"; --- 2965,2970 ---- *************** static const char* apzMath_ExceptionPatc *** 2972,2978 **** * * Description of Math_Huge_Val_From_Dbl_Max fix */ - #define MATH_HUGE_VAL_FROM_DBL_MAX_FIXIDX 73 tSCC zMath_Huge_Val_From_Dbl_MaxName[] = "math_huge_val_from_dbl_max"; --- 3012,3017 ---- *************** static const char* apzMath_Huge_Val_From *** 3018,3024 **** * * Description of Math_Huge_Val_Ifndef fix */ - #define MATH_HUGE_VAL_IFNDEF_FIXIDX 74 tSCC zMath_Huge_Val_IfndefName[] = "math_huge_val_ifndef"; --- 3057,3062 ---- *************** static const char* apzMath_Huge_Val_Ifnd *** 3055,3063 **** /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Nested_Motorola fix */ - #define NESTED_MOTOROLA_FIXIDX 75 tSCC zNested_MotorolaName[] = "nested_motorola"; --- 3093,3135 ---- /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Nested_Auth_Des fix + */ + tSCC zNested_Auth_DesName[] = + "nested_auth_des"; + + /* + * File name selection pattern + */ + tSCC zNested_Auth_DesList[] = + "|rpc/rpc.h|"; + /* + * Machine/OS name selection pattern + */ + #define apzNested_Auth_DesMachs (const char**)NULL + + /* + * content selection pattern - do fix if pattern found + */ + tSCC zNested_Auth_DesSelect0[] = + "(/\\*.*rpc/auth_des\\.h>.*)/\\*"; + + #define NESTED_AUTH_DES_TEST_CT 1 + static tTestDesc aNested_Auth_DesTests[] = { + { TT_EGREP, zNested_Auth_DesSelect0, (regex_t*)NULL }, }; + + /* + * Fix Command Arguments for Nested_Auth_Des + */ + static const char* apzNested_Auth_DesPatch[] = { + "format", + "%1*/ /*", + (char*)NULL }; + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Nested_Motorola fix */ tSCC zNested_MotorolaName[] = "nested_motorola"; *************** static const char* apzNested_MotorolaPat *** 3095,3101 **** * * Description of Nested_Sys_Limits fix */ - #define NESTED_SYS_LIMITS_FIXIDX 76 tSCC zNested_Sys_LimitsName[] = "nested_sys_limits"; --- 3167,3172 ---- *************** static const char* apzNested_Sys_LimitsP *** 3129,3173 **** /* * * * * * * * * * * * * * * * * * * * * * * * * * * - * Description of Nested_Auth_Des fix - */ - #define NESTED_AUTH_DES_FIXIDX 77 - tSCC zNested_Auth_DesName[] = - "nested_auth_des"; - - /* - * File name selection pattern - */ - tSCC zNested_Auth_DesList[] = - "|rpc/rpc.h|"; - /* - * Machine/OS name selection pattern - */ - #define apzNested_Auth_DesMachs (const char**)NULL - - /* - * content selection pattern - do fix if pattern found - */ - tSCC zNested_Auth_DesSelect0[] = - "(/\\*.*rpc/auth_des\\.h>.*)/\\*"; - - #define NESTED_AUTH_DES_TEST_CT 1 - static tTestDesc aNested_Auth_DesTests[] = { - { TT_EGREP, zNested_Auth_DesSelect0, (regex_t*)NULL }, }; - - /* - * Fix Command Arguments for Nested_Auth_Des - */ - static const char* apzNested_Auth_DesPatch[] = { - "format", - "%1*/ /*", - (char*)NULL }; - - /* * * * * * * * * * * * * * * * * * * * * * * * * * - * * Description of News_Os_Recursion fix */ - #define NEWS_OS_RECURSION_FIXIDX 78 tSCC zNews_Os_RecursionName[] = "news_os_recursion"; --- 3200,3207 ---- *************** static const char* apzNews_Os_RecursionP *** 3205,3211 **** * * Description of Next_Math_Prefix fix */ - #define NEXT_MATH_PREFIX_FIXIDX 79 tSCC zNext_Math_PrefixName[] = "next_math_prefix"; --- 3239,3244 ---- *************** static const char* apzNext_Math_PrefixPa *** 3242,3248 **** * * Description of Next_Template fix */ - #define NEXT_TEMPLATE_FIXIDX 80 tSCC zNext_TemplateName[] = "next_template"; --- 3275,3280 ---- *************** static const char* apzNext_TemplatePatch *** 3279,3285 **** * * Description of Next_Volitile fix */ - #define NEXT_VOLITILE_FIXIDX 81 tSCC zNext_VolitileName[] = "next_volitile"; --- 3311,3316 ---- *************** static const char* apzNext_VolitilePatch *** 3316,3322 **** * * Description of Next_Wait_Union fix */ - #define NEXT_WAIT_UNION_FIXIDX 82 tSCC zNext_Wait_UnionName[] = "next_wait_union"; --- 3347,3352 ---- *************** static const char* apzNext_Wait_UnionPat *** 3352,3358 **** * * Description of Nodeent_Syntax fix */ - #define NODEENT_SYNTAX_FIXIDX 83 tSCC zNodeent_SyntaxName[] = "nodeent_syntax"; --- 3382,3387 ---- *************** static const char* apzNodeent_SyntaxPatc *** 3388,3394 **** * * Description of Osf_Namespace_A fix */ - #define OSF_NAMESPACE_A_FIXIDX 84 tSCC zOsf_Namespace_AName[] = "osf_namespace_a"; --- 3417,3422 ---- *************** static const char* apzOsf_Namespace_APat *** 3434,3440 **** * * Description of Osf_Namespace_C fix */ - #define OSF_NAMESPACE_C_FIXIDX 85 tSCC zOsf_Namespace_CName[] = "osf_namespace_c"; --- 3462,3467 ---- *************** typedef __regmatch_t\tregmatch_t;", *** 3489,3495 **** * * Description of Pthread_Page_Size fix */ - #define PTHREAD_PAGE_SIZE_FIXIDX 86 tSCC zPthread_Page_SizeName[] = "pthread_page_size"; --- 3516,3521 ---- *************** static const char* apzPthread_Page_SizeP *** 3525,3531 **** * * Description of Read_Ret_Type fix */ - #define READ_RET_TYPE_FIXIDX 87 tSCC zRead_Ret_TypeName[] = "read_ret_type"; --- 3551,3556 ---- *************** static const char* apzRead_Ret_TypePatch *** 3563,3569 **** * * Description of Rs6000_Double fix */ - #define RS6000_DOUBLE_FIXIDX 88 tSCC zRs6000_DoubleName[] = "rs6000_double"; --- 3588,3593 ---- *************** static const char* apzRs6000_DoublePatch *** 3602,3608 **** * * Description of Rs6000_Fchmod fix */ - #define RS6000_FCHMOD_FIXIDX 89 tSCC zRs6000_FchmodName[] = "rs6000_fchmod"; --- 3626,3631 ---- *************** static const char* apzRs6000_FchmodPatch *** 3638,3644 **** * * Description of Rs6000_Param fix */ - #define RS6000_PARAM_FIXIDX 90 tSCC zRs6000_ParamName[] = "rs6000_param"; --- 3661,3666 ---- *************** static const char* apzRs6000_ParamPatch[ *** 3674,3680 **** * * Description of Sco_Static_Func fix */ - #define SCO_STATIC_FUNC_FIXIDX 91 tSCC zSco_Static_FuncName[] = "sco_static_func"; --- 3696,3701 ---- *************** extern \"C\" {\\\n\ *** 3716,3848 **** /* * * * * * * * * * * * * * * * * * * * * * * * * * * - * Description of Strict_Ansi_Not fix - */ - #define STRICT_ANSI_NOT_FIXIDX 92 - tSCC zStrict_Ansi_NotName[] = - "strict_ansi_not"; - - /* - * File name selection pattern - */ - #define zStrict_Ansi_NotList (char*)NULL - /* - * Machine/OS name selection pattern - */ - #define apzStrict_Ansi_NotMachs (const char**)NULL - - /* - * content selection pattern - do fix if pattern found - */ - tSCC zStrict_Ansi_NotSelect0[] = - "^([ \t]*#[ \t]*if.*)(!__STDC__|__STDC__[ \t]*==[ \t]*0|__STDC__[ \t]*!=[ \t]*1|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0)(.*)"; - - /* - * perform the C function call test - */ - tSCC zStrict_Ansi_NotFTst0[] = "stdc_0_in_system_headers"; - - #define STRICT_ANSI_NOT_TEST_CT 2 - static tTestDesc aStrict_Ansi_NotTests[] = { - { TT_FUNCTION, zStrict_Ansi_NotFTst0, 0 /* unused */ }, - { TT_EGREP, zStrict_Ansi_NotSelect0, (regex_t*)NULL }, }; - - /* - * Fix Command Arguments for Strict_Ansi_Not - */ - static const char* apzStrict_Ansi_NotPatch[] = { - "format", - "%1 !defined(__STRICT_ANSI__)%3", - (char*)NULL }; - - /* * * * * * * * * * * * * * * * * * * * * * * * * * - * - * Description of Strict_Ansi_Not_Ctd fix - */ - #define STRICT_ANSI_NOT_CTD_FIXIDX 93 - tSCC zStrict_Ansi_Not_CtdName[] = - "strict_ansi_not_ctd"; - - /* - * File name selection pattern - */ - tSCC zStrict_Ansi_Not_CtdList[] = - "|math.h|limits.h|stdio.h|signal.h|stdlib.h|time.h|"; - /* - * Machine/OS name selection pattern - */ - #define apzStrict_Ansi_Not_CtdMachs (const char**)NULL - - /* - * content selection pattern - do fix if pattern found - */ - tSCC zStrict_Ansi_Not_CtdSelect0[] = - "^([ \t]*[|&][|&][ \t(]*)(__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0)(.*)"; - - /* - * perform the C function call test - */ - tSCC zStrict_Ansi_Not_CtdFTst0[] = "stdc_0_in_system_headers"; - - #define STRICT_ANSI_NOT_CTD_TEST_CT 2 - static tTestDesc aStrict_Ansi_Not_CtdTests[] = { - { TT_FUNCTION, zStrict_Ansi_Not_CtdFTst0, 0 /* unused */ }, - { TT_EGREP, zStrict_Ansi_Not_CtdSelect0, (regex_t*)NULL }, }; - - /* - * Fix Command Arguments for Strict_Ansi_Not_Ctd - */ - static const char* apzStrict_Ansi_Not_CtdPatch[] = { - "format", - "%1 !defined(__STRICT_ANSI__)%3", - (char*)NULL }; - - /* * * * * * * * * * * * * * * * * * * * * * * * * * - * - * Description of Strict_Ansi_Only fix - */ - #define STRICT_ANSI_ONLY_FIXIDX 94 - tSCC zStrict_Ansi_OnlyName[] = - "strict_ansi_only"; - - /* - * File name selection pattern - */ - #define zStrict_Ansi_OnlyList (char*)NULL - /* - * Machine/OS name selection pattern - */ - #define apzStrict_Ansi_OnlyMachs (const char**)NULL - - /* - * content selection pattern - do fix if pattern found - */ - tSCC zStrict_Ansi_OnlySelect0[] = - "^([ \t]*#[ \t]*if.*)(__STDC__[ \t]*!=[ \t]*0|__STDC__[ \t]*==[ \t]*1|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*1|__STDC__[ \t]*-[ \t]*0[ \t]*!=[ \t]*0)(.*)"; - - /* - * perform the C function call test - */ - tSCC zStrict_Ansi_OnlyFTst0[] = "stdc_0_in_system_headers"; - - #define STRICT_ANSI_ONLY_TEST_CT 2 - static tTestDesc aStrict_Ansi_OnlyTests[] = { - { TT_FUNCTION, zStrict_Ansi_OnlyFTst0, 0 /* unused */ }, - { TT_EGREP, zStrict_Ansi_OnlySelect0, (regex_t*)NULL }, }; - - /* - * Fix Command Arguments for Strict_Ansi_Only - */ - static const char* apzStrict_Ansi_OnlyPatch[] = { - "format", - "%1 defined(__STRICT_ANSI__)%3", - (char*)NULL }; - - /* * * * * * * * * * * * * * * * * * * * * * * * * * - * * Description of Sco_Utime fix */ - #define SCO_UTIME_FIXIDX 95 tSCC zSco_UtimeName[] = "sco_utime"; --- 3737,3744 ---- *************** static const char* apzSco_UtimePatch[] = *** 3878,3923 **** /* * * * * * * * * * * * * * * * * * * * * * * * * * * ! * Description of Solaris27_Mutex_Init fix */ ! #define SOLARIS27_MUTEX_INIT_FIXIDX 96 ! tSCC zSolaris27_Mutex_InitName[] = ! "solaris27_mutex_init"; /* * File name selection pattern */ ! tSCC zSolaris27_Mutex_InitList[] = "|pthread.h|"; /* * Machine/OS name selection pattern */ ! #define apzSolaris27_Mutex_InitMachs (const char**)NULL /* * content selection pattern - do fix if pattern found */ ! tSCC zSolaris27_Mutex_InitSelect0[] = ! "@\\(#\\)pthread.h[ \t]+1.26[ \t]+98/04/12 SMI"; ! #define SOLARIS27_MUTEX_INIT_TEST_CT 1 ! static tTestDesc aSolaris27_Mutex_InitTests[] = { ! { TT_EGREP, zSolaris27_Mutex_InitSelect0, (regex_t*)NULL }, }; /* ! * Fix Command Arguments for Solaris27_Mutex_Init */ ! static const char* apzSolaris27_Mutex_InitPatch[] = { "format", ! "%1, {0}}", ! "(define[ \t]+PTHREAD_MUTEX_INITIALIZER.*),[ \t]*0}$", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Statsswtch fix */ - #define STATSSWTCH_FIXIDX 97 tSCC zStatsswtchName[] = "statsswtch"; --- 3774,3821 ---- /* * * * * * * * * * * * * * * * * * * * * * * * * * * ! * Description of Solaris_Mutex_Init fix */ ! tSCC zSolaris_Mutex_InitName[] = ! "solaris_mutex_init"; /* * File name selection pattern */ ! tSCC zSolaris_Mutex_InitList[] = "|pthread.h|"; /* * Machine/OS name selection pattern */ ! #define apzSolaris_Mutex_InitMachs (const char**)NULL /* * content selection pattern - do fix if pattern found */ ! tSCC zSolaris_Mutex_InitSelect0[] = ! "@\\(#\\)pthread.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; ! #define SOLARIS_MUTEX_INIT_TEST_CT 1 ! static tTestDesc aSolaris_Mutex_InitTests[] = { ! { TT_EGREP, zSolaris_Mutex_InitSelect0, (regex_t*)NULL }, }; /* ! * Fix Command Arguments for Solaris_Mutex_Init */ ! static const char* apzSolaris_Mutex_InitPatch[] = { "format", ! "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n\ ! %0\n\ ! #else\n\ ! %1, {0}}%3\n\ ! #endif", ! "(^#define[ \t]+PTHREAD_(MUTEX|COND)_INITIALIZER[ \t]+{.*),[ \t]*0}(|[ \t].*)$", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Statsswtch fix */ tSCC zStatsswtchName[] = "statsswtch"; *************** static const char* apzStatsswtchPatch[] *** 3953,3959 **** * * Description of Stdio_Stdarg_H fix */ - #define STDIO_STDARG_H_FIXIDX 98 tSCC zStdio_Stdarg_HName[] = "stdio_stdarg_h"; --- 3851,3856 ---- *************** static const char* apzStdio_Stdarg_HPatc *** 3990,3996 **** * * Description of Stdio_Va_List fix */ - #define STDIO_VA_LIST_FIXIDX 99 tSCC zStdio_Va_ListName[] = "stdio_va_list"; --- 3887,3892 ---- *************** s@_Va_LIST@_VA_LIST@", *** 4033,4041 **** /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Struct_File fix */ - #define STRUCT_FILE_FIXIDX 100 tSCC zStruct_FileName[] = "struct_file"; --- 3929,4057 ---- /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Strict_Ansi_Not fix + */ + tSCC zStrict_Ansi_NotName[] = + "strict_ansi_not"; + + /* + * File name selection pattern + */ + #define zStrict_Ansi_NotList (char*)NULL + /* + * Machine/OS name selection pattern + */ + #define apzStrict_Ansi_NotMachs (const char**)NULL + + /* + * content selection pattern - do fix if pattern found + */ + tSCC zStrict_Ansi_NotSelect0[] = + "^([ \t]*#[ \t]*if.*)(!__STDC__|__STDC__[ \t]*==[ \t]*0|__STDC__[ \t]*!=[ \t]*1|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0)(.*)"; + + /* + * perform the C function call test + */ + tSCC zStrict_Ansi_NotFTst0[] = "stdc_0_in_system_headers"; + + #define STRICT_ANSI_NOT_TEST_CT 2 + static tTestDesc aStrict_Ansi_NotTests[] = { + { TT_FUNCTION, zStrict_Ansi_NotFTst0, 0 /* unused */ }, + { TT_EGREP, zStrict_Ansi_NotSelect0, (regex_t*)NULL }, }; + + /* + * Fix Command Arguments for Strict_Ansi_Not + */ + static const char* apzStrict_Ansi_NotPatch[] = { + "format", + "%1 !defined(__STRICT_ANSI__)%3", + (char*)NULL }; + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Strict_Ansi_Not_Ctd fix + */ + tSCC zStrict_Ansi_Not_CtdName[] = + "strict_ansi_not_ctd"; + + /* + * File name selection pattern + */ + tSCC zStrict_Ansi_Not_CtdList[] = + "|math.h|limits.h|stdio.h|signal.h|stdlib.h|time.h|"; + /* + * Machine/OS name selection pattern + */ + #define apzStrict_Ansi_Not_CtdMachs (const char**)NULL + + /* + * content selection pattern - do fix if pattern found + */ + tSCC zStrict_Ansi_Not_CtdSelect0[] = + "^([ \t]*[|&][|&][ \t(]*)(__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0)(.*)"; + + /* + * perform the C function call test + */ + tSCC zStrict_Ansi_Not_CtdFTst0[] = "stdc_0_in_system_headers"; + + #define STRICT_ANSI_NOT_CTD_TEST_CT 2 + static tTestDesc aStrict_Ansi_Not_CtdTests[] = { + { TT_FUNCTION, zStrict_Ansi_Not_CtdFTst0, 0 /* unused */ }, + { TT_EGREP, zStrict_Ansi_Not_CtdSelect0, (regex_t*)NULL }, }; + + /* + * Fix Command Arguments for Strict_Ansi_Not_Ctd + */ + static const char* apzStrict_Ansi_Not_CtdPatch[] = { + "format", + "%1 !defined(__STRICT_ANSI__)%3", + (char*)NULL }; + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Strict_Ansi_Only fix + */ + tSCC zStrict_Ansi_OnlyName[] = + "strict_ansi_only"; + + /* + * File name selection pattern + */ + #define zStrict_Ansi_OnlyList (char*)NULL + /* + * Machine/OS name selection pattern + */ + #define apzStrict_Ansi_OnlyMachs (const char**)NULL + + /* + * content selection pattern - do fix if pattern found + */ + tSCC zStrict_Ansi_OnlySelect0[] = + "^([ \t]*#[ \t]*if.*)(__STDC__[ \t]*!=[ \t]*0|__STDC__[ \t]*==[ \t]*1|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*1|__STDC__[ \t]*-[ \t]*0[ \t]*!=[ \t]*0)(.*)"; + + /* + * perform the C function call test + */ + tSCC zStrict_Ansi_OnlyFTst0[] = "stdc_0_in_system_headers"; + + #define STRICT_ANSI_ONLY_TEST_CT 2 + static tTestDesc aStrict_Ansi_OnlyTests[] = { + { TT_FUNCTION, zStrict_Ansi_OnlyFTst0, 0 /* unused */ }, + { TT_EGREP, zStrict_Ansi_OnlySelect0, (regex_t*)NULL }, }; + + /* + * Fix Command Arguments for Strict_Ansi_Only + */ + static const char* apzStrict_Ansi_OnlyPatch[] = { + "format", + "%1 defined(__STRICT_ANSI__)%3", + (char*)NULL }; + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Struct_File fix */ tSCC zStruct_FileName[] = "struct_file"; *************** static const char* apzStruct_FilePatch[] *** 4072,4078 **** * * Description of Struct_Sockaddr fix */ - #define STRUCT_SOCKADDR_FIXIDX 101 tSCC zStruct_SockaddrName[] = "struct_sockaddr"; --- 4088,4093 ---- *************** static const char* apzStruct_SockaddrPat *** 4116,4122 **** * * Description of Sun_Auth_Proto fix */ - #define SUN_AUTH_PROTO_FIXIDX 102 tSCC zSun_Auth_ProtoName[] = "sun_auth_proto"; --- 4131,4136 ---- *************** static const char* apzSun_Auth_ProtoPatc *** 4157,4163 **** * * Description of Sun_Bogus_Ifdef fix */ - #define SUN_BOGUS_IFDEF_FIXIDX 103 tSCC zSun_Bogus_IfdefName[] = "sun_bogus_ifdef"; --- 4171,4176 ---- *************** static const char* apzSun_Bogus_IfdefPat *** 4193,4199 **** * * Description of Sun_Catmacro fix */ - #define SUN_CATMACRO_FIXIDX 104 tSCC zSun_CatmacroName[] = "sun_catmacro"; --- 4206,4211 ---- *************** static const char* apzSun_CatmacroPatch[ *** 4233,4239 **** * * Description of Sun_Malloc fix */ - #define SUN_MALLOC_FIXIDX 105 tSCC zSun_MallocName[] = "sun_malloc"; --- 4245,4250 ---- *************** static const char* apzSun_MallocPatch[] *** 4264,4270 **** * * Description of Sun_Rusers_Semi fix */ - #define SUN_RUSERS_SEMI_FIXIDX 106 tSCC zSun_Rusers_SemiName[] = "sun_rusers_semi"; --- 4275,4280 ---- *************** static const char* apzSun_Rusers_SemiPat *** 4299,4305 **** * * Description of Sun_Signal fix */ - #define SUN_SIGNAL_FIXIDX 107 tSCC zSun_SignalName[] = "sun_signal"; --- 4309,4314 ---- *************** void\t(*signal(...))(...);\n\ *** 4339,4345 **** * * Description of Sunos_Matherr_Decl fix */ - #define SUNOS_MATHERR_DECL_FIXIDX 108 tSCC zSunos_Matherr_DeclName[] = "sunos_matherr_decl"; --- 4348,4353 ---- *************** static const char* apzSunos_Matherr_Decl *** 4382,4388 **** * * Description of Sunos_Strlen fix */ - #define SUNOS_STRLEN_FIXIDX 109 tSCC zSunos_StrlenName[] = "sunos_strlen"; --- 4390,4395 ---- *************** static const char* apzSunos_StrlenPatch[ *** 4418,4424 **** * * Description of Svr4__P fix */ - #define SVR4__P_FIXIDX 110 tSCC zSvr4__PName[] = "svr4__p"; --- 4425,4430 ---- *************** static const char* apzSvr4__PPatch[] = { *** 4456,4462 **** * * Description of Svr4_Getcwd fix */ - #define SVR4_GETCWD_FIXIDX 111 tSCC zSvr4_GetcwdName[] = "svr4_getcwd"; --- 4462,4467 ---- *************** static const char* apzSvr4_GetcwdPatch[] *** 4492,4498 **** * * Description of Svr4_Profil fix */ - #define SVR4_PROFIL_FIXIDX 112 tSCC zSvr4_ProfilName[] = "svr4_profil"; --- 4497,4502 ---- *************** static const char* apzSvr4_ProfilPatch[] *** 4526,4576 **** /* * * * * * * * * * * * * * * * * * * * * * * * * * * - * Description of Gnu_Types fix - */ - #define GNU_TYPES_FIXIDX 113 - tSCC zGnu_TypesName[] = - "gnu_types"; - - /* - * File name selection pattern - */ - tSCC zGnu_TypesList[] = - "|sys/types.h|stdlib.h|sys/stdtypes.h|stddef.h|memory.h|unistd.h|"; - /* - * Machine/OS name selection pattern - */ - #define apzGnu_TypesMachs (const char**)NULL - - /* - * content selection pattern - do fix if pattern found - */ - tSCC zGnu_TypesSelect0[] = - "^[ \t]*typedef[ \t]+.*[ \t](ptrdiff|size|wchar)_t;"; - - /* - * content bypass pattern - skip fix if pattern found - */ - tSCC zGnu_TypesBypass0[] = - "_GCC_(PTRDIFF|SIZE|WCHAR)_T"; - - #define GNU_TYPES_TEST_CT 2 - static tTestDesc aGnu_TypesTests[] = { - { TT_NEGREP, zGnu_TypesBypass0, (regex_t*)NULL }, - { TT_EGREP, zGnu_TypesSelect0, (regex_t*)NULL }, }; - - /* - * Fix Command Arguments for Gnu_Types - */ - static const char* apzGnu_TypesPatch[] = { - "gnu_type", - (char*)NULL }; - - /* * * * * * * * * * * * * * * * * * * * * * * * * * - * * Description of Sysv68_String fix */ - #define SYSV68_STRING_FIXIDX 114 tSCC zSysv68_StringName[] = "sysv68_string"; --- 4530,4537 ---- *************** extern unsigned int\\\n\ *** 4607,4613 **** * * Description of Sysz_Stdlib_For_Sun fix */ - #define SYSZ_STDLIB_FOR_SUN_FIXIDX 115 tSCC zSysz_Stdlib_For_SunName[] = "sysz_stdlib_for_sun"; --- 4568,4573 ---- *************** static const char* apzSysz_Stdlib_For_Su *** 4643,4649 **** * * Description of Tinfo_Cplusplus fix */ - #define TINFO_CPLUSPLUS_FIXIDX 116 tSCC zTinfo_CplusplusName[] = "tinfo_cplusplus"; --- 4603,4608 ---- *************** static const char* apzTinfo_CplusplusPat *** 4677,4685 **** /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Ultrix_Atof_Param fix */ - #define ULTRIX_ATOF_PARAM_FIXIDX 117 tSCC zUltrix_Atof_ParamName[] = "ultrix_atof_param"; --- 4636,4678 ---- /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Ultrix_Atexit_Param fix + */ + tSCC zUltrix_Atexit_ParamName[] = + "ultrix_atexit_param"; + + /* + * File name selection pattern + */ + tSCC zUltrix_Atexit_ParamList[] = + "|stdlib.h|"; + /* + * Machine/OS name selection pattern + */ + #define apzUltrix_Atexit_ParamMachs (const char**)NULL + + /* + * content selection pattern - do fix if pattern found + */ + tSCC zUltrix_Atexit_ParamSelect0[] = + "atexit\\(.*\\(\\)"; + + #define ULTRIX_ATEXIT_PARAM_TEST_CT 1 + static tTestDesc aUltrix_Atexit_ParamTests[] = { + { TT_EGREP, zUltrix_Atexit_ParamSelect0, (regex_t*)NULL }, }; + + /* + * Fix Command Arguments for Ultrix_Atexit_Param + */ + static const char* apzUltrix_Atexit_ParamPatch[] = { + "format", + "atexit( void (*__func)( void )", + (char*)NULL }; + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Ultrix_Atof_Param fix */ tSCC zUltrix_Atof_ParamName[] = "ultrix_atof_param"; *************** static const char* apzUltrix_Atof_ParamP *** 4715,4721 **** * * Description of Ultrix_Const fix */ - #define ULTRIX_CONST_FIXIDX 118 tSCC zUltrix_ConstName[] = "ultrix_const"; --- 4708,4713 ---- *************** static const char* apzUltrix_ConstPatch[ *** 4752,4758 **** * * Description of Ultrix_Const2 fix */ - #define ULTRIX_CONST2_FIXIDX 119 tSCC zUltrix_Const2Name[] = "ultrix_const2"; --- 4744,4749 ---- *************** static const char* apzUltrix_Const2Patch *** 4789,4795 **** * * Description of Ultrix_Fix_Fixproto fix */ - #define ULTRIX_FIX_FIXPROTO_FIXIDX 120 tSCC zUltrix_Fix_FixprotoName[] = "ultrix_fix_fixproto"; --- 4780,4785 ---- *************** static const char* apzUltrix_Fix_Fixprot *** 4827,4833 **** * * Description of Ultrix_Ifdef fix */ - #define ULTRIX_IFDEF_FIXIDX 121 tSCC zUltrix_IfdefName[] = "ultrix_ifdef"; --- 4817,4822 ---- *************** static const char* apzUltrix_IfdefPatch[ *** 4863,4869 **** * * Description of Ultrix_Math_Ifdef fix */ - #define ULTRIX_MATH_IFDEF_FIXIDX 122 tSCC zUltrix_Math_IfdefName[] = "ultrix_math_ifdef"; --- 4852,4857 ---- *************** static const char* apzUltrix_Math_IfdefP *** 4899,4905 **** * * Description of Ultrix_Nested_Ioctl fix */ - #define ULTRIX_NESTED_IOCTL_FIXIDX 123 tSCC zUltrix_Nested_IoctlName[] = "ultrix_nested_ioctl"; --- 4887,4892 ---- *************** static const char* apzUltrix_Nested_Ioct *** 4934,4940 **** * * Description of Ultrix_Nested_Svc fix */ - #define ULTRIX_NESTED_SVC_FIXIDX 124 tSCC zUltrix_Nested_SvcName[] = "ultrix_nested_svc"; --- 4921,4926 ---- *************** static const char* apzUltrix_Nested_SvcP *** 4969,4975 **** * * Description of Ultrix_Stat fix */ - #define ULTRIX_STAT_FIXIDX 125 tSCC zUltrix_StatName[] = "ultrix_stat"; --- 4955,4960 ---- *************** static const char* apzUltrix_StatPatch[] *** 5009,5015 **** * * Description of Ultrix_Static fix */ - #define ULTRIX_STATIC_FIXIDX 126 tSCC zUltrix_StaticName[] = "ultrix_static"; --- 4994,4999 ---- *************** static const char* apzUltrix_StaticPatch *** 5046,5052 **** * * Description of Ultrix_Strings fix */ - #define ULTRIX_STRINGS_FIXIDX 127 tSCC zUltrix_StringsName[] = "ultrix_strings"; --- 5030,5035 ---- *************** static const char* apzUltrix_StringsPatc *** 5081,5087 **** * * Description of Undefine_Null fix */ - #define UNDEFINE_NULL_FIXIDX 128 tSCC zUndefine_NullName[] = "undefine_null"; --- 5064,5069 ---- *************** static const char* apzUndefine_NullPatch *** 5127,5133 **** * * Description of Uw7_Byteorder_Fix fix */ - #define UW7_BYTEORDER_FIX_FIXIDX 129 tSCC zUw7_Byteorder_FixName[] = "uw7_byteorder_fix"; --- 5109,5114 ---- *************** tSCC zUw7_Byteorder_FixSelect0[] = *** 5158,5164 **** * perform the 'test' shell command - do fix on success */ tSCC zUw7_Byteorder_FixTest0[] = ! "-f $DESTDIR/sys/byteorder.h"; #define UW7_BYTEORDER_FIX_TEST_CT 2 static tTestDesc aUw7_Byteorder_FixTests[] = { --- 5139,5145 ---- * perform the 'test' shell command - do fix on success */ tSCC zUw7_Byteorder_FixTest0[] = ! "-f sys/byteorder.h"; #define UW7_BYTEORDER_FIX_TEST_CT 2 static tTestDesc aUw7_Byteorder_FixTests[] = { *************** static tTestDesc aUw7_Byteorder_FixTests *** 5171,5184 **** static const char* apzUw7_Byteorder_FixPatch[] = { "format", "", ! "^extern.*(htons|ntohs).*\\(in_port_t\\).*\n", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Va_I960_Macro fix */ - #define VA_I960_MACRO_FIXIDX 130 tSCC zVa_I960_MacroName[] = "va_i960_macro"; --- 5152,5164 ---- static const char* apzUw7_Byteorder_FixPatch[] = { "format", "", ! "^extern.*[ \t](htons|ntohs).*\\(in_port_t\\).*;", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Va_I960_Macro fix */ tSCC zVa_I960_MacroName[] = "va_i960_macro"; *************** static const char* apzVa_I960_MacroPatch *** 5214,5220 **** * * Description of Void_Null fix */ - #define VOID_NULL_FIXIDX 131 tSCC zVoid_NullName[] = "void_null"; --- 5194,5199 ---- *************** static const char* apzVoid_NullPatch[] = *** 5250,5256 **** * * Description of Vxworks_Gcc_Problem fix */ - #define VXWORKS_GCC_PROBLEM_FIXIDX 132 tSCC zVxworks_Gcc_ProblemName[] = "vxworks_gcc_problem"; --- 5229,5234 ---- *************** static const char* apzVxworks_Gcc_Proble *** 5300,5306 **** * * Description of Vxworks_Needs_Vxtypes fix */ - #define VXWORKS_NEEDS_VXTYPES_FIXIDX 133 tSCC zVxworks_Needs_VxtypesName[] = "vxworks_needs_vxtypes"; --- 5278,5283 ---- *************** static const char* apzVxworks_Needs_Vxty *** 5336,5342 **** * * Description of Vxworks_Needs_Vxworks fix */ - #define VXWORKS_NEEDS_VXWORKS_FIXIDX 134 tSCC zVxworks_Needs_VxworksName[] = "vxworks_needs_vxworks"; --- 5313,5318 ---- *************** static const char* apzVxworks_Needs_Vxwo *** 5385,5391 **** * * Description of Vxworks_Time fix */ - #define VXWORKS_TIME_FIXIDX 135 tSCC zVxworks_TimeName[] = "vxworks_time"; --- 5361,5366 ---- *************** typedef void (*__gcc_VOIDFUNCPTR) ();\n\ *** 5436,5442 **** * * Description of X11_Class fix */ - #define X11_CLASS_FIXIDX 136 tSCC zX11_ClassName[] = "x11_class"; --- 5411,5416 ---- *************** static const char* apzX11_ClassPatch[] = *** 5483,5489 **** * * Description of X11_Class_Usage fix */ - #define X11_CLASS_USAGE_FIXIDX 137 tSCC zX11_Class_UsageName[] = "x11_class_usage"; --- 5457,5462 ---- *************** static const char* apzX11_Class_UsagePat *** 5526,5532 **** * * Description of X11_New fix */ - #define X11_NEW_FIXIDX 138 tSCC zX11_NewName[] = "x11_new"; --- 5499,5504 ---- *************** static const char* apzX11_NewPatch[] = { *** 5567,5573 **** * * Description of X11_Sprintf fix */ - #define X11_SPRINTF_FIXIDX 139 tSCC zX11_SprintfName[] = "x11_sprintf"; --- 5539,5544 ---- *************** static const char* apzX11_SprintfPatch[] *** 5606,5620 **** * * List of all fixes */ ! #define REGEX_COUNT 147 #define MACH_LIST_SIZE_LIMIT 279 ! #define FIX_COUNT 140 tFixDesc fixDescList[ FIX_COUNT ] = { ! { zAaa_Ki_IfaceName, zAaa_Ki_IfaceList, ! apzAaa_Ki_IfaceMachs, ! AAA_KI_IFACE_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, ! aAaa_Ki_IfaceTests, apzAaa_Ki_IfacePatch, 0 }, { zAaa_KiName, zAaa_KiList, apzAaa_KiMachs, --- 5577,5740 ---- * * List of all fixes */ ! #define REGEX_COUNT 150 #define MACH_LIST_SIZE_LIMIT 279 ! #define FIX_COUNT 143 ! ! /* ! * Enumerate the fixes ! */ ! typedef enum { ! AAA_BAD_FIXES_FIXIDX, ! AAA_KI_FIXIDX, ! AAA_KI_CALLS_FIXIDX, ! AAA_KI_DEFS_FIXIDX, ! AAA_KI_IFACE_FIXIDX, ! AAA_STANDARDS_FIXIDX, ! AAA_TIME_FIXIDX, ! AAB_DGUX_INT_VARARGS_FIXIDX, ! AAB_FD_ZERO_ASM_POSIX_TYPES_H_FIXIDX, ! AAB_FD_ZERO_GNU_TYPES_H_FIXIDX, ! AAB_FD_ZERO_SELECTBITS_H_FIXIDX, ! AAB_SUN_MEMCPY_FIXIDX, ! AAB_SVR4_REPLACE_BYTEORDER_FIXIDX, ! AAB_ULTRIX_ANSI_COMPAT_FIXIDX, ! AAB_ULTRIX_LIMITS_FIXIDX, ! AAB_ULTRIX_MEMORY_FIXIDX, ! AAB_ULTRIX_STRING_FIXIDX, ! AIX_PTHREAD_FIXIDX, ! AIX_SYSMACHINE_FIXIDX, ! AIX_SYSWAIT_FIXIDX, ! AIX_VOLATILE_FIXIDX, ! ALPHA___ASSERT_FIXIDX, ! ALPHA_GETOPT_FIXIDX, ! ALPHA_PARENS_FIXIDX, ! ALPHA_SBRK_FIXIDX, ! ARM_NORCROFT_HINT_FIXIDX, ! ARM_WCHAR_FIXIDX, ! AUX_ASM_FIXIDX, ! AVOID_BOOL_DEFINE_FIXIDX, ! AVOID_BOOL_TYPE_FIXIDX, ! AVOID_WCHAR_T_TYPE_FIXIDX, ! BAD_LVAL_FIXIDX, ! BAD_STRUCT_TERM_FIXIDX, ! BADQUOTE_FIXIDX, ! BROKEN_ASSERT_STDIO_FIXIDX, ! BROKEN_ASSERT_STDLIB_FIXIDX, ! BROKEN_CABS_FIXIDX, ! CTRL_QUOTES_DEF_FIXIDX, ! CTRL_QUOTES_USE_FIXIDX, ! CXX_UNREADY_FIXIDX, ! DEC_INTERN_ASM_FIXIDX, ! DJGPP_WCHAR_H_FIXIDX, ! ECD_CURSOR_FIXIDX, ! FIX_HEADER_BREAKAGE_FIXIDX, ! FREEBSD_GCC3_BREAKAGE_FIXIDX, ! GNU_TYPES_FIXIDX, ! HP_INLINE_FIXIDX, ! HP_SYSFILE_FIXIDX, ! HPUX10_CPP_POW_INLINE_FIXIDX, ! HPUX11_CPP_POW_INLINE_FIXIDX, ! HPUX11_FABSF_FIXIDX, ! HPUX11_UINT32_C_FIXIDX, ! HPUX11_VSNPRINTF_FIXIDX, ! HPUX8_BOGUS_INLINES_FIXIDX, ! HPUX_MAXINT_FIXIDX, ! HPUX_SYSTIME_FIXIDX, ! INT_ABORT_FREE_AND_EXIT_FIXIDX, ! IO_QUOTES_DEF_FIXIDX, ! IO_QUOTES_USE_FIXIDX, ! IP_MISSING_SEMI_FIXIDX, ! IRIX_ASM_APOSTROPHE_FIXIDX, ! IRIX_LIMITS_CONST_FIXIDX, ! IRIX_STDIO_VA_LIST_FIXIDX, ! ISC_FMOD_FIXIDX, ! ISC_OMITS_WITH_STDC_FIXIDX, ! KANDR_CONCAT_FIXIDX, ! LIBC1_IFDEFD_MEMX_FIXIDX, ! LIMITS_IFNDEFS_FIXIDX, ! LYNX_VOID_INT_FIXIDX, ! LYNXOS_FCNTL_PROTO_FIXIDX, ! M88K_BAD_HYPOT_OPT_FIXIDX, ! M88K_BAD_S_IF_FIXIDX, ! M88K_MULTI_INCL_FIXIDX, ! MACHINE_ANSI_H_VA_LIST_FIXIDX, ! MACHINE_NAME_FIXIDX, ! MATH_EXCEPTION_FIXIDX, ! MATH_HUGE_VAL_FROM_DBL_MAX_FIXIDX, ! MATH_HUGE_VAL_IFNDEF_FIXIDX, ! NESTED_AUTH_DES_FIXIDX, ! NESTED_MOTOROLA_FIXIDX, ! NESTED_SYS_LIMITS_FIXIDX, ! NEWS_OS_RECURSION_FIXIDX, ! NEXT_MATH_PREFIX_FIXIDX, ! NEXT_TEMPLATE_FIXIDX, ! NEXT_VOLITILE_FIXIDX, ! NEXT_WAIT_UNION_FIXIDX, ! NODEENT_SYNTAX_FIXIDX, ! OSF_NAMESPACE_A_FIXIDX, ! OSF_NAMESPACE_C_FIXIDX, ! PTHREAD_PAGE_SIZE_FIXIDX, ! READ_RET_TYPE_FIXIDX, ! RS6000_DOUBLE_FIXIDX, ! RS6000_FCHMOD_FIXIDX, ! RS6000_PARAM_FIXIDX, ! SCO_STATIC_FUNC_FIXIDX, ! SCO_UTIME_FIXIDX, ! SOLARIS_MUTEX_INIT_FIXIDX, ! STATSSWTCH_FIXIDX, ! STDIO_STDARG_H_FIXIDX, ! STDIO_VA_LIST_FIXIDX, ! STRICT_ANSI_NOT_FIXIDX, ! STRICT_ANSI_NOT_CTD_FIXIDX, ! STRICT_ANSI_ONLY_FIXIDX, ! STRUCT_FILE_FIXIDX, ! STRUCT_SOCKADDR_FIXIDX, ! SUN_AUTH_PROTO_FIXIDX, ! SUN_BOGUS_IFDEF_FIXIDX, ! SUN_CATMACRO_FIXIDX, ! SUN_MALLOC_FIXIDX, ! SUN_RUSERS_SEMI_FIXIDX, ! SUN_SIGNAL_FIXIDX, ! SUNOS_MATHERR_DECL_FIXIDX, ! SUNOS_STRLEN_FIXIDX, ! SVR4__P_FIXIDX, ! SVR4_GETCWD_FIXIDX, ! SVR4_PROFIL_FIXIDX, ! SYSV68_STRING_FIXIDX, ! SYSZ_STDLIB_FOR_SUN_FIXIDX, ! TINFO_CPLUSPLUS_FIXIDX, ! ULTRIX_ATEXIT_PARAM_FIXIDX, ! ULTRIX_ATOF_PARAM_FIXIDX, ! ULTRIX_CONST_FIXIDX, ! ULTRIX_CONST2_FIXIDX, ! ULTRIX_FIX_FIXPROTO_FIXIDX, ! ULTRIX_IFDEF_FIXIDX, ! ULTRIX_MATH_IFDEF_FIXIDX, ! ULTRIX_NESTED_IOCTL_FIXIDX, ! ULTRIX_NESTED_SVC_FIXIDX, ! ULTRIX_STAT_FIXIDX, ! ULTRIX_STATIC_FIXIDX, ! ULTRIX_STRINGS_FIXIDX, ! UNDEFINE_NULL_FIXIDX, ! UW7_BYTEORDER_FIX_FIXIDX, ! VA_I960_MACRO_FIXIDX, ! VOID_NULL_FIXIDX, ! VXWORKS_GCC_PROBLEM_FIXIDX, ! VXWORKS_NEEDS_VXTYPES_FIXIDX, ! VXWORKS_NEEDS_VXWORKS_FIXIDX, ! VXWORKS_TIME_FIXIDX, ! X11_CLASS_FIXIDX, ! X11_CLASS_USAGE_FIXIDX, ! X11_NEW_FIXIDX, ! X11_SPRINTF_FIXIDX ! } t_fixinc_idx; tFixDesc fixDescList[ FIX_COUNT ] = { ! { zAaa_Bad_FixesName, zAaa_Bad_FixesList, ! apzAaa_Bad_FixesMachs, ! AAA_BAD_FIXES_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, ! aAaa_Bad_FixesTests, apzAaa_Bad_FixesPatch, 0 }, { zAaa_KiName, zAaa_KiList, apzAaa_KiMachs, *************** tFixDesc fixDescList[ FIX_COUNT ] = { *** 5631,5646 **** AAA_KI_DEFS_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, aAaa_Ki_DefsTests, apzAaa_Ki_DefsPatch, 0 }, { zAaa_StandardsName, zAaa_StandardsList, apzAaa_StandardsMachs, AAA_STANDARDS_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, aAaa_StandardsTests, apzAaa_StandardsPatch, 0 }, - { zAaa_Bad_FixesName, zAaa_Bad_FixesList, - apzAaa_Bad_FixesMachs, - AAA_BAD_FIXES_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, - aAaa_Bad_FixesTests, apzAaa_Bad_FixesPatch, 0 }, - { zAaa_TimeName, zAaa_TimeList, apzAaa_TimeMachs, AAA_TIME_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, --- 5751,5766 ---- AAA_KI_DEFS_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, aAaa_Ki_DefsTests, apzAaa_Ki_DefsPatch, 0 }, + { zAaa_Ki_IfaceName, zAaa_Ki_IfaceList, + apzAaa_Ki_IfaceMachs, + AAA_KI_IFACE_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, + aAaa_Ki_IfaceTests, apzAaa_Ki_IfacePatch, 0 }, + { zAaa_StandardsName, zAaa_StandardsList, apzAaa_StandardsMachs, AAA_STANDARDS_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, aAaa_StandardsTests, apzAaa_StandardsPatch, 0 }, { zAaa_TimeName, zAaa_TimeList, apzAaa_TimeMachs, AAA_TIME_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, *************** tFixDesc fixDescList[ FIX_COUNT ] = { *** 5836,5841 **** --- 5956,5966 ---- FREEBSD_GCC3_BREAKAGE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aFreebsd_Gcc3_BreakageTests, apzFreebsd_Gcc3_BreakagePatch, 0 }, + { zGnu_TypesName, zGnu_TypesList, + apzGnu_TypesMachs, + GNU_TYPES_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aGnu_TypesTests, apzGnu_TypesPatch, 0 }, + { zHp_InlineName, zHp_InlineList, apzHp_InlineMachs, HP_INLINE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, *************** tFixDesc fixDescList[ FIX_COUNT ] = { *** 5851,5856 **** --- 5976,5986 ---- HPUX10_CPP_POW_INLINE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aHpux10_Cpp_Pow_InlineTests, apzHpux10_Cpp_Pow_InlinePatch, 0 }, + { zHpux11_Cpp_Pow_InlineName, zHpux11_Cpp_Pow_InlineList, + apzHpux11_Cpp_Pow_InlineMachs, + HPUX11_CPP_POW_INLINE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux11_Cpp_Pow_InlineTests, apzHpux11_Cpp_Pow_InlinePatch, 0 }, + { zHpux11_FabsfName, zHpux11_FabsfList, apzHpux11_FabsfMachs, HPUX11_FABSF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, *************** tFixDesc fixDescList[ FIX_COUNT ] = { *** 5861,5881 **** HPUX11_UINT32_C_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aHpux11_Uint32_CTests, apzHpux11_Uint32_CPatch, 0 }, { zHpux8_Bogus_InlinesName, zHpux8_Bogus_InlinesList, apzHpux8_Bogus_InlinesMachs, HPUX8_BOGUS_INLINES_TEST_CT, FD_MACH_ONLY, aHpux8_Bogus_InlinesTests, apzHpux8_Bogus_InlinesPatch, 0 }, { zInt_Abort_Free_And_ExitName, zInt_Abort_Free_And_ExitList, apzInt_Abort_Free_And_ExitMachs, INT_ABORT_FREE_AND_EXIT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aInt_Abort_Free_And_ExitTests, apzInt_Abort_Free_And_ExitPatch, 0 }, - { zIsc_Omits_With_StdcName, zIsc_Omits_With_StdcList, - apzIsc_Omits_With_StdcMachs, - ISC_OMITS_WITH_STDC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, - aIsc_Omits_With_StdcTests, apzIsc_Omits_With_StdcPatch, 0 }, - { zIo_Quotes_DefName, zIo_Quotes_DefList, apzIo_Quotes_DefMachs, IO_QUOTES_DEF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, --- 5991,6021 ---- HPUX11_UINT32_C_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aHpux11_Uint32_CTests, apzHpux11_Uint32_CPatch, 0 }, + { zHpux11_VsnprintfName, zHpux11_VsnprintfList, + apzHpux11_VsnprintfMachs, + HPUX11_VSNPRINTF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux11_VsnprintfTests, apzHpux11_VsnprintfPatch, 0 }, + { zHpux8_Bogus_InlinesName, zHpux8_Bogus_InlinesList, apzHpux8_Bogus_InlinesMachs, HPUX8_BOGUS_INLINES_TEST_CT, FD_MACH_ONLY, aHpux8_Bogus_InlinesTests, apzHpux8_Bogus_InlinesPatch, 0 }, + { zHpux_MaxintName, zHpux_MaxintList, + apzHpux_MaxintMachs, + HPUX_MAXINT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux_MaxintTests, apzHpux_MaxintPatch, 0 }, + + { zHpux_SystimeName, zHpux_SystimeList, + apzHpux_SystimeMachs, + HPUX_SYSTIME_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux_SystimeTests, apzHpux_SystimePatch, 0 }, + { zInt_Abort_Free_And_ExitName, zInt_Abort_Free_And_ExitList, apzInt_Abort_Free_And_ExitMachs, INT_ABORT_FREE_AND_EXIT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aInt_Abort_Free_And_ExitTests, apzInt_Abort_Free_And_ExitPatch, 0 }, { zIo_Quotes_DefName, zIo_Quotes_DefList, apzIo_Quotes_DefMachs, IO_QUOTES_DEF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, *************** tFixDesc fixDescList[ FIX_COUNT ] = { *** 5886,5901 **** IO_QUOTES_USE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aIo_Quotes_UseTests, apzIo_Quotes_UsePatch, 0 }, - { zHpux_MaxintName, zHpux_MaxintList, - apzHpux_MaxintMachs, - HPUX_MAXINT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, - aHpux_MaxintTests, apzHpux_MaxintPatch, 0 }, - - { zHpux_SystimeName, zHpux_SystimeList, - apzHpux_SystimeMachs, - HPUX_SYSTIME_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, - aHpux_SystimeTests, apzHpux_SystimePatch, 0 }, - { zIp_Missing_SemiName, zIp_Missing_SemiList, apzIp_Missing_SemiMachs, IP_MISSING_SEMI_TEST_CT, FD_MACH_ONLY, --- 6026,6031 ---- *************** tFixDesc fixDescList[ FIX_COUNT ] = { *** 5906,5926 **** IRIX_ASM_APOSTROPHE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aIrix_Asm_ApostropheTests, apzIrix_Asm_ApostrophePatch, 0 }, - { zIrix_Stdio_Va_ListName, zIrix_Stdio_Va_ListList, - apzIrix_Stdio_Va_ListMachs, - IRIX_STDIO_VA_LIST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, - aIrix_Stdio_Va_ListTests, apzIrix_Stdio_Va_ListPatch, 0 }, - { zIrix_Limits_ConstName, zIrix_Limits_ConstList, apzIrix_Limits_ConstMachs, IRIX_LIMITS_CONST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aIrix_Limits_ConstTests, apzIrix_Limits_ConstPatch, 0 }, { zIsc_FmodName, zIsc_FmodList, apzIsc_FmodMachs, ISC_FMOD_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aIsc_FmodTests, apzIsc_FmodPatch, 0 }, { zKandr_ConcatName, zKandr_ConcatList, apzKandr_ConcatMachs, KANDR_CONCAT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, --- 6036,6061 ---- IRIX_ASM_APOSTROPHE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aIrix_Asm_ApostropheTests, apzIrix_Asm_ApostrophePatch, 0 }, { zIrix_Limits_ConstName, zIrix_Limits_ConstList, apzIrix_Limits_ConstMachs, IRIX_LIMITS_CONST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aIrix_Limits_ConstTests, apzIrix_Limits_ConstPatch, 0 }, + { zIrix_Stdio_Va_ListName, zIrix_Stdio_Va_ListList, + apzIrix_Stdio_Va_ListMachs, + IRIX_STDIO_VA_LIST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aIrix_Stdio_Va_ListTests, apzIrix_Stdio_Va_ListPatch, 0 }, + { zIsc_FmodName, zIsc_FmodList, apzIsc_FmodMachs, ISC_FMOD_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aIsc_FmodTests, apzIsc_FmodPatch, 0 }, + { zIsc_Omits_With_StdcName, zIsc_Omits_With_StdcList, + apzIsc_Omits_With_StdcMachs, + ISC_OMITS_WITH_STDC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aIsc_Omits_With_StdcTests, apzIsc_Omits_With_StdcPatch, 0 }, + { zKandr_ConcatName, zKandr_ConcatList, apzKandr_ConcatMachs, KANDR_CONCAT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, *************** tFixDesc fixDescList[ FIX_COUNT ] = { *** 5986,5991 **** --- 6121,6131 ---- MATH_HUGE_VAL_IFNDEF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aMath_Huge_Val_IfndefTests, apzMath_Huge_Val_IfndefPatch, 0 }, + { zNested_Auth_DesName, zNested_Auth_DesList, + apzNested_Auth_DesMachs, + NESTED_AUTH_DES_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aNested_Auth_DesTests, apzNested_Auth_DesPatch, 0 }, + { zNested_MotorolaName, zNested_MotorolaList, apzNested_MotorolaMachs, NESTED_MOTOROLA_TEST_CT, FD_MACH_ONLY, *************** tFixDesc fixDescList[ FIX_COUNT ] = { *** 5996,6006 **** NESTED_SYS_LIMITS_TEST_CT, FD_MACH_ONLY, aNested_Sys_LimitsTests, apzNested_Sys_LimitsPatch, 0 }, - { zNested_Auth_DesName, zNested_Auth_DesList, - apzNested_Auth_DesMachs, - NESTED_AUTH_DES_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, - aNested_Auth_DesTests, apzNested_Auth_DesPatch, 0 }, - { zNews_Os_RecursionName, zNews_Os_RecursionList, apzNews_Os_RecursionMachs, NEWS_OS_RECURSION_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, --- 6136,6141 ---- *************** tFixDesc fixDescList[ FIX_COUNT ] = { *** 6071,6100 **** SCO_STATIC_FUNC_TEST_CT, FD_MACH_ONLY, aSco_Static_FuncTests, apzSco_Static_FuncPatch, 0 }, - { zStrict_Ansi_NotName, zStrict_Ansi_NotList, - apzStrict_Ansi_NotMachs, - STRICT_ANSI_NOT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, - aStrict_Ansi_NotTests, apzStrict_Ansi_NotPatch, 0 }, - - { zStrict_Ansi_Not_CtdName, zStrict_Ansi_Not_CtdList, - apzStrict_Ansi_Not_CtdMachs, - STRICT_ANSI_NOT_CTD_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, - aStrict_Ansi_Not_CtdTests, apzStrict_Ansi_Not_CtdPatch, 0 }, - - { zStrict_Ansi_OnlyName, zStrict_Ansi_OnlyList, - apzStrict_Ansi_OnlyMachs, - STRICT_ANSI_ONLY_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, - aStrict_Ansi_OnlyTests, apzStrict_Ansi_OnlyPatch, 0 }, - { zSco_UtimeName, zSco_UtimeList, apzSco_UtimeMachs, SCO_UTIME_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aSco_UtimeTests, apzSco_UtimePatch, 0 }, ! { zSolaris27_Mutex_InitName, zSolaris27_Mutex_InitList, ! apzSolaris27_Mutex_InitMachs, ! SOLARIS27_MUTEX_INIT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, ! aSolaris27_Mutex_InitTests, apzSolaris27_Mutex_InitPatch, 0 }, { zStatsswtchName, zStatsswtchList, apzStatsswtchMachs, --- 6206,6220 ---- SCO_STATIC_FUNC_TEST_CT, FD_MACH_ONLY, aSco_Static_FuncTests, apzSco_Static_FuncPatch, 0 }, { zSco_UtimeName, zSco_UtimeList, apzSco_UtimeMachs, SCO_UTIME_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aSco_UtimeTests, apzSco_UtimePatch, 0 }, ! { zSolaris_Mutex_InitName, zSolaris_Mutex_InitList, ! apzSolaris_Mutex_InitMachs, ! SOLARIS_MUTEX_INIT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, ! aSolaris_Mutex_InitTests, apzSolaris_Mutex_InitPatch, 0 }, { zStatsswtchName, zStatsswtchList, apzStatsswtchMachs, *************** tFixDesc fixDescList[ FIX_COUNT ] = { *** 6111,6116 **** --- 6231,6251 ---- STDIO_VA_LIST_TEST_CT, FD_MACH_ONLY, aStdio_Va_ListTests, apzStdio_Va_ListPatch, 0 }, + { zStrict_Ansi_NotName, zStrict_Ansi_NotList, + apzStrict_Ansi_NotMachs, + STRICT_ANSI_NOT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aStrict_Ansi_NotTests, apzStrict_Ansi_NotPatch, 0 }, + + { zStrict_Ansi_Not_CtdName, zStrict_Ansi_Not_CtdList, + apzStrict_Ansi_Not_CtdMachs, + STRICT_ANSI_NOT_CTD_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aStrict_Ansi_Not_CtdTests, apzStrict_Ansi_Not_CtdPatch, 0 }, + + { zStrict_Ansi_OnlyName, zStrict_Ansi_OnlyList, + apzStrict_Ansi_OnlyMachs, + STRICT_ANSI_ONLY_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aStrict_Ansi_OnlyTests, apzStrict_Ansi_OnlyPatch, 0 }, + { zStruct_FileName, zStruct_FileList, apzStruct_FileMachs, STRUCT_FILE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, *************** tFixDesc fixDescList[ FIX_COUNT ] = { *** 6176,6186 **** SVR4_PROFIL_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aSvr4_ProfilTests, apzSvr4_ProfilPatch, 0 }, - { zGnu_TypesName, zGnu_TypesList, - apzGnu_TypesMachs, - GNU_TYPES_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, - aGnu_TypesTests, apzGnu_TypesPatch, 0 }, - { zSysv68_StringName, zSysv68_StringList, apzSysv68_StringMachs, SYSV68_STRING_TEST_CT, FD_MACH_ONLY, --- 6311,6316 ---- *************** tFixDesc fixDescList[ FIX_COUNT ] = { *** 6195,6200 **** --- 6325,6335 ---- apzTinfo_CplusplusMachs, TINFO_CPLUSPLUS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aTinfo_CplusplusTests, apzTinfo_CplusplusPatch, 0 }, + + { zUltrix_Atexit_ParamName, zUltrix_Atexit_ParamList, + apzUltrix_Atexit_ParamMachs, + ULTRIX_ATEXIT_PARAM_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aUltrix_Atexit_ParamTests, apzUltrix_Atexit_ParamPatch, 0 }, { zUltrix_Atof_ParamName, zUltrix_Atof_ParamList, apzUltrix_Atof_ParamMachs, diff -Nrc3pad gcc-3.0/gcc/fixinc/fixlib.h gcc-3.0.1/gcc/fixinc/fixlib.h *** gcc-3.0/gcc/fixinc/fixlib.h Fri May 25 14:30:21 2001 --- gcc-3.0.1/gcc/fixinc/fixlib.h Thu Jul 19 20:48:56 2001 *************** along with GNU CC; see the file COPYING. *** 22,32 **** the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ ! #ifndef FIXINCLUDES_FIXLIB_H ! #define FIXINCLUDES_FIXLIB_H #include "auto-host.h" ! #include "gansidecl.h" #include "config.h" #include "system.h" --- 22,32 ---- the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ ! #ifndef GCC_FIXLIB_H ! #define GCC_FIXLIB_H #include "auto-host.h" ! #include "ansidecl.h" #include "config.h" #include "system.h" *************** void mn_get_regexps *** 224,227 **** PARAMS(( regex_t** label_re, regex_t** name_re, tCC *who )); #endif ! #endif /* FIXINCLUDES_FIXLIB_H */ --- 224,227 ---- PARAMS(( regex_t** label_re, regex_t** name_re, tCC *who )); #endif ! #endif /* ! GCC_FIXLIB_H */ diff -Nrc3pad gcc-3.0/gcc/fixinc/inclhack.def gcc-3.0.1/gcc/fixinc/inclhack.def *** gcc-3.0/gcc/fixinc/inclhack.def Thu Jun 14 21:16:12 2001 --- gcc-3.0.1/gcc/fixinc/inclhack.def Thu Jul 19 21:04:48 2001 *************** autogen definitions fixincl; *** 6,11 **** --- 6,20 ---- /* Define all the fixes we know about for repairing damaged headers. Please see the README before adding or changing entries in this file. + This is the sort command: + + blocksort output=XXX \ + pattern='^/\*$' \ + start='DO +NOT +DO +BROKEN +FIXES' \ + trailer='^/\*EOF\*[/]' \ + input=inclhack.def \ + key='hackname[ ]*=[ ]*(.*);' + Set up a debug test so we can make the templates emit special code while debugging these fixes: */ *************** FIXINC_DEBUG = yes; *** 16,27 **** /* DO NOT DO BROKEN FIXES (empty replacement fixes) */ /* ! * Purge some HP-UX 11 files that are only broken after they are "fixed". */ fix = { ! hackname = AAA_ki_iface; ! files = sys/ki_iface.h; ! select = 'These definitions are for HP Internal developers'; replace; /* empty replacement -> no fixing the file */ }; --- 25,39 ---- /* DO NOT DO BROKEN FIXES (empty replacement fixes) */ /* ! * This file on SunOS 4 has a very large macro. When the sed loop ! * tries pull it in, it overflows the pattern space size of the SunOS ! * sed (GNU sed does not have this problem). Since the file does not ! * require fixing, we remove it from the fixed directory. */ fix = { ! hackname = AAA_bad_fixes; ! files = sundev/ipi_error.h; ! /* shouldn't there be a select expression here??? */ replace; /* empty replacement -> no fixing the file */ }; *************** fix = { *** 60,86 **** /* ! * Tru64 UNIX V4.0F/V5.1 defines _NO_PROTO and _NONSTD_TYPES ! * correctly for GCC, but strict_ansi_not breaks it. */ fix = { ! hackname = AAA_standards; ! files = standards.h; ! select = 'GNU and MIPS C compilers define __STDC__ differently'; replace; /* empty replacement -> no fixing the file */ }; /* ! * This file on SunOS 4 has a very large macro. When the sed loop ! * tries pull it in, it overflows the pattern space size of the SunOS ! * sed (GNU sed does not have this problem). Since the file does not ! * require fixing, we remove it from the fixed directory. */ fix = { ! hackname = AAA_bad_fixes; ! files = sundev/ipi_error.h; ! /* shouldn't there be a select expression here??? */ replace; /* empty replacement -> no fixing the file */ }; --- 72,95 ---- /* ! * Purge some HP-UX 11 files that are only broken after they are "fixed". */ fix = { ! hackname = AAA_ki_iface; ! files = sys/ki_iface.h; ! select = 'These definitions are for HP Internal developers'; replace; /* empty replacement -> no fixing the file */ }; /* ! * Tru64 UNIX V4.0F/V5.1 defines _NO_PROTO and _NONSTD_TYPES ! * correctly for GCC, but strict_ansi_not breaks it. */ fix = { ! hackname = AAA_standards; ! files = standards.h; ! select = 'GNU and MIPS C compilers define __STDC__ differently'; replace; /* empty replacement -> no fixing the file */ }; *************** fix = { *** 112,118 **** /* _INT_VARARGS.H - Define the common stuff for varargs/stdarg/stdio. */ /************************************************************************/ ! /* ** This file is a DG internal header. Never include this ** file directly. */ --- 121,127 ---- /* _INT_VARARGS.H - Define the common stuff for varargs/stdarg/stdio. */ /************************************************************************/ ! /*" " ** This file is a DG internal header. Never include this ** file directly. */ *************** extern int memcmp(); *** 333,338 **** --- 342,370 ---- /* + * Completely replace with a file that includes gcc's + * stdarg.h or varargs.h files as appropriate. + */ + #ifdef SVR4 + fix = { + hackname = AAB_svr4_no_varargs; + files = sys/varargs.h; + replace = "/* This file was generated by fixincludes. */\n" + "#ifndef _SYS_VARARGS_H\n" + "#define _SYS_VARARGS_H\n\n" + + "#ifdef __STDC__\n" + "#include \n" + "#else\n" + "#include \n" + "#endif\n\n" + + "#endif /* _SYS_VARARGS_H */\n"; + }; + #endif + + + /* * Completely replace ; with a file that implements gcc's * optimized byteswapping. Restricted to "SVR4" machines until either * it is shown to be safe to replace this file always, or we get bolder ;-) *************** ntohs (unsigned int __arg) *** 496,524 **** /* - * Completely replace with a file that includes gcc's - * stdarg.h or varargs.h files as appropriate. - */ - #ifdef SVR4 - fix = { - hackname = AAB_svr4_no_varargs; - files = sys/varargs.h; - replace = "/* This file was generated by fixincludes. */\n" - "#ifndef _SYS_VARARGS_H\n" - "#define _SYS_VARARGS_H\n\n" - - "#ifdef __STDC__\n" - "#include \n" - "#else\n" - "#include \n" - "#endif\n\n" - - "#endif /* _SYS_VARARGS_H */\n"; - }; - #endif - - - /* * Cancel out ansi_compat.h on Ultrix. Replace it with an empty file. */ fix = { --- 528,533 ---- *************** fix = { *** 1083,1088 **** --- 1092,1118 ---- /* + * Fix these files to use the same types that we think they should. + */ + fix = { + hackname = gnu_types; + files = "sys/types.h"; + files = "stdlib.h"; + files = "sys/stdtypes.h"; + files = "stddef.h"; + files = "memory.h"; + files = "unistd.h"; + bypass = '_GCC_(PTRDIFF|SIZE|WCHAR)_T'; + select = "^[ \t]*typedef[ \t]+.*[ \t](ptrdiff|size|wchar)_t;"; + c_fix = gnu_type; + + test_text = "typedef long int ptrdiff_t; /* long int */\n" + "typedef uint_t size_t; /* uint_t */\n" + "typedef ushort_t wchar_t; /* ushort_t */"; + }; + + + /* * Fix HP & Sony's use of "../machine/xxx.h" * to refer to: */ *************** fix = { *** 1119,1135 **** /* ! * Delete C++ double pow (double, int) inline function from HP-UX 10 * math.h to prevent clash with define in c_std/bits/std_cmath.h. */ fix = { hackname = hpux10_cpp_pow_inline; files = fixinc-test-limits.h, math.h; ! select = "^# +ifdef +__cplusplus\n +}\n +inline +double +pow" ! "\\(double +__d,int +__expon\\) +{\n[ \t]+return +pow" ! "\\(__d,\\(double\\)__expon\\);\n +}\n +extern" ! ' +"C"' ! " +{\n#else\n# +endif"; c_fix = format; c_fix_arg = ""; --- 1149,1171 ---- /* ! * Delete C++ double pow (double, int) inline function from HP-UX 10 & 11 * math.h to prevent clash with define in c_std/bits/std_cmath.h. */ fix = { hackname = hpux10_cpp_pow_inline; files = fixinc-test-limits.h, math.h; ! select = <<- END_POW_INLINE ! ^# +ifdef +__cplusplus ! +} ! +inline +double +pow\(double +__d,int +__expon\) +{ ! [ ]+return +pow\(__d,\(double\)__expon\); ! +} ! +extern +"C" +{ ! #else ! # +endif ! END_POW_INLINE; ! c_fix = format; c_fix_arg = ""; *************** fix = { *** 1144,1149 **** --- 1180,1199 ---- "# endif"; }; + fix = { + hackname = hpux11_cpp_pow_inline; + files = math.h; + select = " +inline double pow\\(double d,int expon\\) {\n" + " +return pow\\(d, \\(double\\)expon\\);\n" + " +}\n"; + c_fix = format; + c_fix_arg = ""; + + test_text = + " inline double pow(double d,int expon) {\n" + " return pow(d, (double)expon);\n" + " }\n"; + }; /* * Keep HP-UX 11 from stomping on C++ math namespace *************** fix = { *** 1166,1172 **** /* ! * In inttypes.h on HPUX 11, the use of __CONCAT__ in the definition * of UINT32_C has undefined behavior according to ISO/ANSI: * the arguments to __CONCAT__ are not macro expanded before the * concatination happens so the trailing ')' in the first argument --- 1216,1222 ---- /* ! * In inttypes.h on HPUX 11, the use of __CONCAT__ in the definition * of UINT32_C has undefined behavior according to ISO/ANSI: * the arguments to __CONCAT__ are not macro expanded before the * concatination happens so the trailing ')' in the first argument *************** fix = { *** 1174,1180 **** * invalid pp token. The behavior of invalid pp tokens is undefined. * GCC does not handle these invalid tokens the way the HP compiler does. * This problem will potentially occur anytime macros are used in the ! * arguments to __CONCAT__. A general solution to this problem would be to * insert another layer of macro between __CONCAT__ and its use * in UINT32_C. An example of this solution can be found in the C standard. * A more specific solution, the one used here, is to change the UINT32_C --- 1224,1230 ---- * invalid pp token. The behavior of invalid pp tokens is undefined. * GCC does not handle these invalid tokens the way the HP compiler does. * This problem will potentially occur anytime macros are used in the ! * arguments to __CONCAT__. A general solution to this problem would be to * insert another layer of macro between __CONCAT__ and its use * in UINT32_C. An example of this solution can be found in the C standard. * A more specific solution, the one used here, is to change the UINT32_C *************** fix = { *** 1194,1199 **** --- 1244,1267 ---- /* + * Fix hpux 11.00 broken vsnprintf declaration + */ + fix = { + hackname = hpux11_vsnprintf; + files = stdio.h; + select = 'extern int vsnprintf\(char \*, __size_t, const char \*,' + ' __va__list\);'; + + c_fix = format; + c_fix_arg = "extern int vsnprintf(char *, __size_t, const char *," + " __va_list);"; + + test_text = 'extern int vsnprintf(char *, __size_t, const char *,' + ' __va__list);'; + }; + + + /* * get rid of bogus inline definitions in HP-UX 8.0 */ fix = { *************** fix = { *** 1211,1253 **** /* ! * Fix return type of abort and free */ fix = { ! hackname = int_abort_free_and_exit; ! files = stdlib.h; ! select = "int[ \t]+(abort|free|exit)[ \t]*\\("; c_fix = format; ! c_fix_arg = "void\t%1("; ! test_text = "extern int abort(int);\n" ! "extern int free(void*);\n" ! "extern int exit(void*);"; }; /* ! * On Interactive Unix 2.2, certain traditional Unix definitions ! * (notably getc and putc in stdio.h) are omitted if __STDC__ is ! * defined, not just if _POSIX_SOURCE is defined. This makes it ! * impossible to compile any nontrivial program except with -posix. */ fix = { ! hackname = isc_omits_with_stdc; ! files = "stdio.h"; ! files = "math.h"; ! files = "ctype.h"; ! files = "sys/limits.h"; ! files = "sys/fcntl.h"; ! files = "sys/dirent.h"; - select = '!defined\(__STDC__\) && !defined\(_POSIX_SOURCE\)'; c_fix = format; ! c_fix_arg = '!defined(_POSIX_SOURCE)'; ! test_text = "#if !defined(__STDC__) && !defined(_POSIX_SOURCE) /* ? ! */" ! "\nint foo;\n#endif"; }; --- 1279,1332 ---- /* ! * HPUX 10.x sys/param.h defines MAXINT which clashes with values.h */ fix = { ! hackname = hpux_maxint; ! files = sys/param.h; ! files = values.h; ! select = "^#[ \t]*define[ \t]+MAXINT[ \t]"; ! bypass = "^#[ \t]*ifndef[ \t]+MAXINT"; ! test = ! "-n \"`egrep '#[ \t]*define[ \t]+MAXINT[ \t]' sys/param.h`\""; c_fix = format; ! c_fix_arg = "#ifndef MAXINT\n%0\n#endif"; ! c_fix_arg = "^#[ \t]*define[ \t]+MAXINT[ \t].*"; ! test_text = '#define MAXINT 0x7FFFFFFF'; }; /* ! * Fix hpux10.20 to avoid invalid forward decl */ fix = { ! hackname = hpux_systime; ! files = sys/time.h; ! select = "^extern struct sigevent;"; ! c_fix = format; ! c_fix_arg = "struct sigevent;"; ! ! test_text = 'extern struct sigevent;'; ! }; ! ! ! /* ! * Fix return type of abort and free ! */ ! fix = { ! hackname = int_abort_free_and_exit; ! files = stdlib.h; ! select = "int[ \t]+(abort|free|exit)[ \t]*\\("; c_fix = format; ! c_fix_arg = "void\t%1("; ! ! test_text = "extern int abort(int);\n" ! "extern int free(void*);\n" ! "extern int exit(void*);"; }; *************** fix = { *** 1294,1334 **** /* - * HPUX 10.x sys/param.h defines MAXINT which clashes with values.h - */ - fix = { - hackname = hpux_maxint; - files = sys/param.h; - files = values.h; - select = "^#[ \t]*define[ \t]+MAXINT[ \t]"; - bypass = "^#[ \t]*ifndef[ \t]+MAXINT"; - test = - "-n \"`egrep '#[ \t]*define[ \t]+MAXINT[ \t]' sys/param.h`\""; - - c_fix = format; - c_fix_arg = "#ifndef MAXINT\n%0\n#endif"; - c_fix_arg = "^#[ \t]*define[ \t]+MAXINT[ \t].*"; - - test_text = '#define MAXINT 0x7FFFFFFF'; - }; - - - /* - * Fix hpux10.20 to avoid invalid forward decl - */ - fix = { - hackname = hpux_systime; - files = sys/time.h; - select = "^extern struct sigevent;"; - - c_fix = format; - c_fix_arg = "struct sigevent;"; - - test_text = 'extern struct sigevent;'; - }; - - - /* * Check for missing ';' in struct */ fix = { --- 1373,1378 ---- *************** fix = { *** 1363,1370 **** /* * IRIX 5.x's stdio.h declares some functions that take a va_list as ! * taking char *. However, GCC uses void * for va_list, so * calling vfprintf with a va_list fails in C++. */ fix = { hackname = irix_stdio_va_list; --- 1407,1427 ---- /* + * Non-traditional "const" declaration in Irix's limits.h. + */ + fix = { + hackname = irix_limits_const; + files = fixinc-test-limits.h, limits.h; + select = "^extern const "; + c_fix = format; + c_fix_arg = "extern __const "; + test_text = "extern const char limit; /* test limits */"; + }; + + + /* * IRIX 5.x's stdio.h declares some functions that take a va_list as ! * taking char *. However, GCC uses void * for va_list, so * calling vfprintf with a va_list fails in C++. */ fix = { hackname = irix_stdio_va_list; *************** fix = { *** 1379,1397 **** /* - * Non-traditional "const" declaration in Irix's limits.h. - */ - fix = { - hackname = irix_limits_const; - files = fixinc-test-limits.h, limits.h; - select = "^extern const "; - c_fix = format; - c_fix_arg = "extern __const "; - test_text = "extern const char limit; /* test limits */"; - }; - - - /* * Fixing ISC fmod declaration */ fix = { --- 1436,1441 ---- *************** fix = { *** 1405,1410 **** --- 1449,1478 ---- /* + * On Interactive Unix 2.2, certain traditional Unix definitions + * (notably getc and putc in stdio.h) are omitted if __STDC__ is + * defined, not just if _POSIX_SOURCE is defined. This makes it + * impossible to compile any nontrivial program except with -posix. + */ + fix = { + hackname = isc_omits_with_stdc; + + files = "stdio.h"; + files = "math.h"; + files = "ctype.h"; + files = "sys/limits.h"; + files = "sys/fcntl.h"; + files = "sys/dirent.h"; + + select = '!defined\(__STDC__\) && !defined\(_POSIX_SOURCE\)'; + c_fix = format; + c_fix_arg = '!defined(_POSIX_SOURCE)'; + test_text = "#if !defined(__STDC__) && !defined(_POSIX_SOURCE) /* ? ! */" + "\nint foo;\n#endif"; + }; + + + /* * These files in Sun OS 4.x and ARM/RISCiX and BSD4.3 * use / * * / to concatenate tokens. */ *************** fix = { *** 1583,1589 **** /* * Fix BSD machine/ansi.h to use __builtin_va_list to define _BSD_VA_LIST_. ! * * On NetBSD, machine is a symbolic link to an architecture specific * directory name, so we can't match a specific file name here. */ --- 1651,1657 ---- /* * Fix BSD machine/ansi.h to use __builtin_va_list to define _BSD_VA_LIST_. ! * * On NetBSD, machine is a symbolic link to an architecture specific * directory name, so we can't match a specific file name here. */ *************** fix = { *** 1698,1703 **** --- 1766,1784 ---- /* + * nested comment + */ + fix = { + hackname = nested_auth_des; + files = rpc/rpc.h; + select = '(/\*.*rpc/auth_des\.h>.*)/\*'; + c_fix = format; + c_fix_arg = "%1*/ /*"; + test_text = "/*#include /* skip this */"; + }; + + + /* * Fix nested comments in Motorola's and */ fix = { *************** fix = { *** 1733,1751 **** }; /* - * nested comment - */ - fix = { - hackname = nested_auth_des; - files = rpc/rpc.h; - select = '(/\*.*rpc/auth_des\.h>.*)/\*'; - c_fix = format; - c_fix_arg = "%1*/ /*"; - test_text = "/*#include /* skip this */"; - }; - - - /* * fix bogus recursive stdlib.h in NEWS-OS 4.0C */ fix = { --- 1814,1819 ---- *************** fix = { *** 1915,1921 **** /* ! * function class(double x) conflicts with C++ keyword on rs/6000 */ fix = { hackname = rs6000_double; --- 1983,1989 ---- /* ! * function class(double x) conflicts with C++ keyword on rs/6000 */ fix = { hackname = rs6000_double; *************** fix = { *** 1944,1950 **** /* ! * parameters conflict with C++ new on rs/6000 */ fix = { hackname = rs6000_param; --- 2012,2018 ---- /* ! * parameters conflict with C++ new on rs/6000 */ fix = { hackname = rs6000_param; *************** fix = { *** 1960,1966 **** /* ! * The static functions lstat() and fchmod() in * cause G++ grief since they're not wrapped in "if __cplusplus". * * On SCO OpenServer 5.0.0 through (at least) 5.0.5 contains --- 2028,2034 ---- /* ! * The static functions lstat() and fchmod() in * cause G++ grief since they're not wrapped in "if __cplusplus". * * On SCO OpenServer 5.0.0 through (at least) 5.0.5 contains *************** fix = { *** 1999,2069 **** /* - * "!__STDC__" or "__STDC__==0" or "__STDC__!=1" or "__STDC__-0==0" - * is "!defined( __STRICT_ANSI__ )" - */ - fix = { - hackname = strict_ansi_not; - select = "^([ \t]*#[ \t]*if.*)" - "(!__STDC__" - "|__STDC__[ \t]*==[ \t]*0" - "|__STDC__[ \t]*!=[ \t]*1" - "|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0" - ")(.*)"; - c_test = stdc_0_in_system_headers; - - c_fix = format; - c_fix_arg = "%1 !defined(__STRICT_ANSI__)%3"; - - test_text = "#if !__STDC__ \n" - "#if __STDC__ == 0\n" - "#if __STDC__ != 1\n" - "#if __STDC__ - 0 == 0" - "/* not std C */\nint foo;\n" - "\n#end-end-end-end-if :-)"; - }; - - /* - * "__STDC__-0==0" - * is "!defined( __STRICT_ANSI__ )" on continued #if-s - */ - fix = { - hackname = strict_ansi_not_ctd; - files = math.h, limits.h, stdio.h, signal.h, stdlib.h, time.h; - select = "^([ \t]*[|&][|&][ \t(]*)" - "(__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0" - ")(.*)"; - c_test = stdc_0_in_system_headers; - - c_fix = format; - c_fix_arg = "%1 !defined(__STRICT_ANSI__)%3"; - - test_text = "#if 1\\\n" - "|| __STDC__ - 0 == 0 /* not std C */\nint foo;\n#endif"; - }; - - /* - * "__STDC__!=0" or "__STDC__==1" or "__STDC__-0==1" - * is "defined( __STRICT_ANSI__ )" - */ - fix = { - hackname = strict_ansi_only; - select = "^([ \t]*#[ \t]*if.*)" - "(__STDC__[ \t]*!=[ \t]*0" - "|__STDC__[ \t]*==[ \t]*1" - "|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*1" - "|__STDC__[ \t]*-[ \t]*0[ \t]*!=[ \t]*0" - ")(.*)"; - c_test = stdc_0_in_system_headers; - - c_fix = format; - c_fix_arg = "%1 defined(__STRICT_ANSI__)%3"; - - test_text = "#if __STDC__ == 1 /* is std C\n */\nint foo;\n#endif"; - }; - - - /* * Fix prototype declaration of utime in sys/times.h. * In 3.2v4.0 the const is missing. */ --- 2067,2072 ---- *************** fix = { *** 2081,2102 **** /* ! * Sun Solaris 2.7 defines PTHREAD_MUTEX_INITIALIZER with a trailing * "0" for the last field of the pthread_mutex_t structure, which is * of type upad64_t, which itself is typedef'd to int64_t, but with * __STDC__ defined (e.g. by -ansi) it is a union. So change the * initializer to "{0}" instead */ fix = { ! hackname = solaris27_mutex_init; ! select = '@\(#\)pthread.h' "[ \t]+1.26[ \t]+98/04/12 SMI"; ! files = pthread.h; ! c_fix = format; ! c_fix_arg = "%1, {0}}"; ! c_fix_arg = "(define[ \t]+PTHREAD_MUTEX_INITIALIZER.*),[ \t]*0}$"; ! test_text = ! '#ident "@(#)pthread.h 1.26 98/04/12 SMI"'"\n" ! "#define PTHREAD_MUTEX_INITIALIZER {{{0},0}, {{{0}}}, 0}"; }; --- 2084,2113 ---- /* ! * Sun Solaris defines PTHREAD_MUTEX_INITIALIZER with a trailing * "0" for the last field of the pthread_mutex_t structure, which is * of type upad64_t, which itself is typedef'd to int64_t, but with * __STDC__ defined (e.g. by -ansi) it is a union. So change the * initializer to "{0}" instead */ fix = { ! hackname = solaris_mutex_init; ! select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; ! files = pthread.h; ! c_fix = format; ! c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n" ! "%0\n" ! "#else\n" ! "%1, {0}}%3\n" ! "#endif"; ! c_fix_arg = "(^#define[ \t]+PTHREAD_(MUTEX|COND)_INITIALIZER[ \t]+{.*)" ! ",[ \t]*0}" "(|[ \t].*)$"; ! test_text = ! '#ident "@(#)pthread.h 1.26 98/04/12 SMI"'"\n" ! "#define PTHREAD_MUTEX_INITIALIZER\t{{{0},0}, {{{0}}}, 0}\n" ! "#define PTHREAD_COND_INITIALIZER\t{{{0}, 0}, 0}\t/* DEFAULTCV */\n" ! "#define PTHREAD_RWLOCK_INITIALIZER\t" ! "{0, 0, 0, {0, 0, 0}, {0, 0}, {0, 0}}"; }; *************** fix = { *** 2215,2220 **** --- 2226,2296 ---- /* + * "!__STDC__" or "__STDC__==0" or "__STDC__!=1" or "__STDC__-0==0" + * is "!defined( __STRICT_ANSI__ )" + */ + fix = { + hackname = strict_ansi_not; + select = "^([ \t]*#[ \t]*if.*)" + "(!__STDC__" + "|__STDC__[ \t]*==[ \t]*0" + "|__STDC__[ \t]*!=[ \t]*1" + "|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0" + ")(.*)"; + c_test = stdc_0_in_system_headers; + + c_fix = format; + c_fix_arg = "%1 !defined(__STRICT_ANSI__)%3"; + + test_text = "#if !__STDC__ \n" + "#if __STDC__ == 0\n" + "#if __STDC__ != 1\n" + "#if __STDC__ - 0 == 0" + "/* not std C */\nint foo;\n" + "\n#end-end-end-end-if :-)"; + }; + + /* + * "__STDC__-0==0" + * is "!defined( __STRICT_ANSI__ )" on continued #if-s + */ + fix = { + hackname = strict_ansi_not_ctd; + files = math.h, limits.h, stdio.h, signal.h, stdlib.h, time.h; + select = "^([ \t]*[|&][|&][ \t(]*)" + "(__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0" + ")(.*)"; + c_test = stdc_0_in_system_headers; + + c_fix = format; + c_fix_arg = "%1 !defined(__STRICT_ANSI__)%3"; + + test_text = "#if 1\\\n" + "|| __STDC__ - 0 == 0 /* not std C */\nint foo;\n#endif"; + }; + + /* + * "__STDC__!=0" or "__STDC__==1" or "__STDC__-0==1" + * is "defined( __STRICT_ANSI__ )" + */ + fix = { + hackname = strict_ansi_only; + select = "^([ \t]*#[ \t]*if.*)" + "(__STDC__[ \t]*!=[ \t]*0" + "|__STDC__[ \t]*==[ \t]*1" + "|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*1" + "|__STDC__[ \t]*-[ \t]*0[ \t]*!=[ \t]*0" + ")(.*)"; + c_test = stdc_0_in_system_headers; + + c_fix = format; + c_fix_arg = "%1 defined(__STRICT_ANSI__)%3"; + + test_text = "#if __STDC__ == 1 /* is std C\n */\nint foo;\n#endif"; + }; + + + /* * IRIX 4.0.5 uses struct __file_s * in prototype without previous definition. */ *************** fix = { *** 2715,2721 **** #endif ! /* * Like svr4_mach_defines, but with newfangled syntax. * Source lines are of #define __i386 #machine(i386). Delete them. */ --- 2791,2797 ---- #endif ! /* * Like svr4_mach_defines, but with newfangled syntax. * Source lines are of #define __i386 #machine(i386). Delete them. */ *************** fix = { *** 2730,2756 **** /* - * Fix these files to use the same types that we think they should. - */ - fix = { - hackname = gnu_types; - files = "sys/types.h"; - files = "stdlib.h"; - files = "sys/stdtypes.h"; - files = "stddef.h"; - files = "memory.h"; - files = "unistd.h"; - bypass = '_GCC_(PTRDIFF|SIZE|WCHAR)_T'; - select = "^[ \t]*typedef[ \t]+.*[ \t](ptrdiff|size|wchar)_t;"; - c_fix = gnu_type; - - test_text = "typedef long int ptrdiff_t; /* long int */\n" - "typedef uint_t size_t; /* uint_t */\n" - "typedef ushort_t wchar_t; /* ushort_t */"; - }; - - - /* * Fix return value of mem{ccpy,chr,cpy,set} and str{len,spn,cspn} * in string.h on sysV68 * Correct the return type for strlen in string.h on Lynx. --- 2806,2811 ---- *************** fix = { *** 2832,2837 **** --- 2887,2907 ---- /* + * function parameter to atexit is missing "void" on VAX Ultrix 4.3. + */ + fix = { + hackname = ultrix_atexit_param; + files = stdlib.h; + select = 'atexit\(.*\(\)'; + + c_fix = format; + c_fix_arg = "atexit( void (*__func)( void )"; + + test_text = "int atexit( void (*__func)() );\n"; + }; + + + /* * parameter to atof not const on DECstation Ultrix V4.0 and NEWS-OS 4.2R. */ fix = { *************** fix = { *** 3043,3049 **** hackname = uw7_byteorder_fix; files = arpa/inet.h; select = "in_port_t"; ! test = "-f $DESTDIR/sys/byteorder.h"; #ifndef SVR5 mach = "*-*-sysv4*"; mach = "i?86-*-sysv5*"; --- 3113,3119 ---- hackname = uw7_byteorder_fix; files = arpa/inet.h; select = "in_port_t"; ! test = "-f sys/byteorder.h"; #ifndef SVR5 mach = "*-*-sysv4*"; mach = "i?86-*-sysv5*"; *************** fix = { *** 3055,3066 **** c_fix = format; c_fix_arg = ""; ! c_fix_arg = "^extern.*(htons|ntohs).*\\(in_port_t\\).*\n"; ! test_text = "extern htons(in_port_t);" "`[ ! -d $DESTDIR/sys ] && mkdir $DESTDIR/sys\n" ! "echo '/* DUMMY */' >> sys/byteorder.h\n" ! "touch $DESTDIR/sys/byteorder.h`"; }; --- 3125,3136 ---- c_fix = format; c_fix_arg = ""; ! c_fix_arg = "^extern.*[ \t](htons|ntohs).*\\(in_port_t\\).*;"; ! test_text = "extern in_port_t\thtons __P((in_port_t));\n" ! "extern in_port_t\tntohs __P((in_port_t));" "`[ ! -d $DESTDIR/sys ] && mkdir $DESTDIR/sys\n" ! "echo '/* DUMMY */' >> sys/byteorder.h`"; }; diff -Nrc3pad gcc-3.0/gcc/fixinc/server.c gcc-3.0.1/gcc/fixinc/server.c *** gcc-3.0/gcc/fixinc/server.c Sat Mar 3 12:24:25 2001 --- gcc-3.0.1/gcc/fixinc/server.c Thu Jul 19 18:55:12 2001 *************** *** 47,53 **** */ #include "auto-host.h" ! #include "gansidecl.h" #include "system.h" #include --- 47,53 ---- */ #include "auto-host.h" ! #include "ansidecl.h" #include "system.h" #include *************** load_data (fp) *** 93,102 **** t_bool got_done = BOOL_FALSE; text_size = sizeof (z_line) * 2; ! pz_scan = pz_text = malloc (text_size); ! ! if (pz_text == (char *) NULL) ! return (char *) NULL; for (;;) { --- 93,99 ---- t_bool got_done = BOOL_FALSE; text_size = sizeof (z_line) * 2; ! pz_scan = pz_text = xmalloc (text_size); for (;;) { *************** load_data (fp) *** 120,137 **** if (text_size - used_ct < sizeof (z_line)) { size_t off = (size_t) (pz_scan - pz_text); - void *p; text_size += 4096; ! p = realloc ((void *) pz_text, text_size); ! if (p == (void *) NULL) ! { ! fprintf (stderr, "Failed to get 0x%08lX bytes\n", ! (long) text_size); ! free ((void *) pz_text); ! return (char *) NULL; ! } ! pz_text = (char *) p; pz_scan = pz_text + off; } } --- 117,125 ---- if (text_size - used_ct < sizeof (z_line)) { size_t off = (size_t) (pz_scan - pz_text); text_size += 4096; ! pz_text = xrealloc ((void *) pz_text, text_size); pz_scan = pz_text + off; } } *************** load_data (fp) *** 146,152 **** while ((pz_scan > pz_text) && ISSPACE (pz_scan[-1])) pz_scan--; *pz_scan = NUL; ! return realloc ((void *) pz_text, strlen (pz_text) + 1); } --- 134,140 ---- while ((pz_scan > pz_text) && ISSPACE (pz_scan[-1])) pz_scan--; *pz_scan = NUL; ! return xrealloc ((void *) pz_text, strlen (pz_text) + 1); } *************** run_shell (pz_cmd) *** 284,294 **** /* IF it is still not running, THEN return the nil string. */ if (server_id <= 0) { - char *pz = (char *) malloc (1); fprintf (stderr, zNoServer, pz_cmd); ! if (pz != (char *) NULL) ! *pz = '\0'; ! return pz; } /* Make sure the process will pay attention to us, send the --- 272,279 ---- /* IF it is still not running, THEN return the nil string. */ if (server_id <= 0) { fprintf (stderr, zNoServer, pz_cmd); ! return xcalloc (1, 1); } /* Make sure the process will pay attention to us, send the *************** run_shell (pz_cmd) *** 302,312 **** THEN return an empty string. */ if (server_id == NULLPROCESS) { - char *pz = (char *) malloc (1); fprintf (stderr, zNoServer, pz_cmd); ! if (pz != (char *) NULL) ! *pz = '\0'; ! return pz; } /* Now try to read back all the data. If we fail due to either a --- 287,294 ---- THEN return an empty string. */ if (server_id == NULLPROCESS) { fprintf (stderr, zNoServer, pz_cmd); ! return xcalloc (1, 1); } /* Now try to read back all the data. If we fail due to either a *************** run_shell (pz_cmd) *** 326,334 **** fprintf (stderr, "CLOSING SHELL SERVER - command failure:\n\t%s\n", pz_cmd); ! pz = (char *) malloc (1); ! if (pz != (char *) NULL) ! *pz = '\0'; } #ifdef DEBUG fprintf( stderr, "run_shell command success: %s\n", pz ); --- 308,314 ---- fprintf (stderr, "CLOSING SHELL SERVER - command failure:\n\t%s\n", pz_cmd); ! pz = xcalloc (1, 1); } #ifdef DEBUG fprintf( stderr, "run_shell command success: %s\n", pz ); diff -Nrc3pad gcc-3.0/gcc/fixinc/tests/base/arpa/inet.h gcc-3.0.1/gcc/fixinc/tests/base/arpa/inet.h *** gcc-3.0/gcc/fixinc/tests/base/arpa/inet.h Wed Jul 19 07:18:30 2000 --- gcc-3.0.1/gcc/fixinc/tests/base/arpa/inet.h Thu Jul 19 20:39:03 2001 *************** *** 10,13 **** --- 10,15 ---- #if defined( UW7_BYTEORDER_FIX_CHECK ) + + #endif /* UW7_BYTEORDER_FIX_CHECK */ diff -Nrc3pad gcc-3.0/gcc/fixinc/tests/base/math.h gcc-3.0.1/gcc/fixinc/tests/base/math.h *** gcc-3.0/gcc/fixinc/tests/base/math.h Sat May 26 11:56:14 2001 --- gcc-3.0.1/gcc/fixinc/tests/base/math.h Thu Jul 19 20:39:03 2001 *************** extern double floor(), ceil(), fmod(), f *** 35,40 **** --- 35,45 ---- #endif /* FIX_HEADER_BREAKAGE_CHECK */ + #if defined( HPUX11_CPP_POW_INLINE_CHECK ) + + #endif /* HPUX11_CPP_POW_INLINE_CHECK */ + + #if defined( HPUX11_FABSF_CHECK ) #ifdef _PA_RISC #ifndef __cplusplus diff -Nrc3pad gcc-3.0/gcc/fixinc/tests/base/pthread.h gcc-3.0.1/gcc/fixinc/tests/base/pthread.h *** gcc-3.0/gcc/fixinc/tests/base/pthread.h Sat May 26 11:56:14 2001 --- gcc-3.0.1/gcc/fixinc/tests/base/pthread.h Thu Jul 19 20:39:03 2001 *************** extern int __page_size; *** 20,26 **** #endif /* PTHREAD_PAGE_SIZE_CHECK */ ! #if defined( SOLARIS27_MUTEX_INIT_CHECK ) #ident "@(#)pthread.h 1.26 98/04/12 SMI" ! #define PTHREAD_MUTEX_INITIALIZER {{{0},0}, {{{0}}}, {0}} ! #endif /* SOLARIS27_MUTEX_INIT_CHECK */ --- 20,36 ---- #endif /* PTHREAD_PAGE_SIZE_CHECK */ ! #if defined( SOLARIS_MUTEX_INIT_CHECK ) #ident "@(#)pthread.h 1.26 98/04/12 SMI" ! #if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) ! #define PTHREAD_MUTEX_INITIALIZER {{{0},0}, {{{0}}}, 0} ! #else ! #define PTHREAD_MUTEX_INITIALIZER {{{0},0}, {{{0}}}, {0}} ! #endif ! #if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) ! #define PTHREAD_COND_INITIALIZER {{{0}, 0}, 0} /* DEFAULTCV */ ! #else ! #define PTHREAD_COND_INITIALIZER {{{0}, 0}, {0}} /* DEFAULTCV */ ! #endif ! #define PTHREAD_RWLOCK_INITIALIZER {0, 0, 0, {0, 0, 0}, {0, 0}, {0, 0}} ! #endif /* SOLARIS_MUTEX_INIT_CHECK */ diff -Nrc3pad gcc-3.0/gcc/fixinc/tests/base/stdio.h gcc-3.0.1/gcc/fixinc/tests/base/stdio.h *** gcc-3.0/gcc/fixinc/tests/base/stdio.h Sat May 26 11:56:14 2001 --- gcc-3.0.1/gcc/fixinc/tests/base/stdio.h Thu Jul 19 21:10:46 2001 *************** extern int getopt(int, char *const[], co *** 19,34 **** #endif /* ALPHA_GETOPT_CHECK */ ! #if defined( ISC_OMITS_WITH_STDC_CHECK ) ! #if !defined(_POSIX_SOURCE) /* ? ! */ ! int foo; ! #endif ! #endif /* ISC_OMITS_WITH_STDC_CHECK */ #if defined( IRIX_STDIO_DUMMY_VA_LIST_CHECK ) extern int printf( const char *, __gnuc_va_list ); #endif /* IRIX_STDIO_DUMMY_VA_LIST_CHECK */ #if defined( READ_RET_TYPE_CHECK ) --- 19,39 ---- #endif /* ALPHA_GETOPT_CHECK */ ! #if defined( HPUX11_VSNPRINTF_CHECK ) ! extern int vsnprintf(char *, __size_t, const char *, __gnuc_va_list); ! #endif /* HPUX11_VSNPRINTF_CHECK */ #if defined( IRIX_STDIO_DUMMY_VA_LIST_CHECK ) extern int printf( const char *, __gnuc_va_list ); #endif /* IRIX_STDIO_DUMMY_VA_LIST_CHECK */ + + + #if defined( ISC_OMITS_WITH_STDC_CHECK ) + #if !defined(_POSIX_SOURCE) /* ? ! */ + int foo; + #endif + #endif /* ISC_OMITS_WITH_STDC_CHECK */ #if defined( READ_RET_TYPE_CHECK ) diff -Nrc3pad gcc-3.0/gcc/fixinc/tests/base/stdlib.h gcc-3.0.1/gcc/fixinc/tests/base/stdlib.h *** gcc-3.0/gcc/fixinc/tests/base/stdlib.h Wed Jul 19 07:18:30 2000 --- gcc-3.0.1/gcc/fixinc/tests/base/stdlib.h Thu Jul 19 21:10:47 2001 *************** extern void * realloc(void*,size_t); *** 47,49 **** --- 47,55 ---- extern void * bsearch(void*,size_t,size_t); #endif /* SYSZ_STDLIB_FOR_SUN_CHECK */ + + + #if defined( ULTRIX_ATEXIT_PARAM_CHECK ) + int atexit( void (*__func)( void ) ); + + #endif /* ULTRIX_ATEXIT_PARAM_CHECK */ diff -Nrc3pad gcc-3.0/gcc/function.c gcc-3.0.1/gcc/function.c *** gcc-3.0/gcc/function.c Sat Jun 9 12:22:26 2001 --- gcc-3.0.1/gcc/function.c Mon Aug 6 14:26:24 2001 *************** mark_varargs () *** 6251,6260 **** void expand_main_function () { ! #if !defined (HAS_INIT_SECTION) emit_library_call (gen_rtx_SYMBOL_REF (Pmode, NAME__MAIN), 0, VOIDmode, 0); ! #endif /* not HAS_INIT_SECTION */ } extern struct obstack permanent_obstack; --- 6251,6285 ---- void expand_main_function () { ! #ifdef FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN ! if (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN) ! { ! int align = PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT; ! rtx tmp; ! ! /* Forcably align the stack. */ ! #ifdef STACK_GROWS_DOWNWARD ! tmp = expand_binop (Pmode, and_optab, stack_pointer_rtx, ! GEN_INT (-align), stack_pointer_rtx, 1, OPTAB_WIDEN); ! #else ! tmp = expand_binop (Pmode, add_optab, stack_pointer_rtx, ! GEN_INT (align - 1), NULL_RTX, 1, OPTAB_WIDEN); ! tmp = expand_binop (Pmode, and_optab, tmp, GEN_INT (-align), ! stack_pointer_rtx, 1, OPTAB_WIDEN); ! #endif ! if (tmp != stack_pointer_rtx) ! emit_move_insn (stack_pointer_rtx, tmp); ! ! /* Enlist allocate_dynamic_stack_space to pick up the pieces. */ ! tmp = force_reg (Pmode, const0_rtx); ! allocate_dynamic_stack_space (tmp, NULL_RTX, BIGGEST_ALIGNMENT); ! } ! #endif ! ! #ifndef HAS_INIT_SECTION emit_library_call (gen_rtx_SYMBOL_REF (Pmode, NAME__MAIN), 0, VOIDmode, 0); ! #endif } extern struct obstack permanent_obstack; diff -Nrc3pad gcc-3.0/gcc/glimits.h gcc-3.0.1/gcc/glimits.h *** gcc-3.0/gcc/glimits.h Thu Jul 20 17:47:27 2000 --- gcc-3.0.1/gcc/glimits.h Fri Aug 10 15:14:30 2001 *************** *** 1,9 **** #ifndef _LIMITS_H___ - #ifndef _MACH_MACHLIMITS_H_ - - /* _MACH_MACHLIMITS_H_ is used on OSF/1. */ #define _LIMITS_H___ - #define _MACH_MACHLIMITS_H_ /* Number of bits in a `char'. */ #undef CHAR_BIT --- 1,5 ---- *************** *** 64,70 **** /* Minimum and maximum values a `signed long int' can hold. (Same as `int'). */ #ifndef __LONG_MAX__ ! #if defined (__alpha__) || (defined (__sparc__) && defined(__arch64__)) || defined (__sparcv9) #define __LONG_MAX__ 9223372036854775807L #else #define __LONG_MAX__ 2147483647L --- 60,66 ---- /* Minimum and maximum values a `signed long int' can hold. (Same as `int'). */ #ifndef __LONG_MAX__ ! #if defined (__alpha__) || (defined (__sparc__) && defined(__arch64__)) || defined (__sparcv9) || defined (__s390x__) #define __LONG_MAX__ 9223372036854775807L #else #define __LONG_MAX__ 2147483647L *************** *** 107,111 **** #define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1) #endif - #endif /* _MACH_MACHLIMITS_H_ */ #endif /* _LIMITS_H___ */ --- 103,106 ---- diff -Nrc3pad gcc-3.0/gcc/gthr-posix.h gcc-3.0.1/gcc/gthr-posix.h *** gcc-3.0/gcc/gthr-posix.h Sat Jun 9 11:02:30 2001 --- gcc-3.0.1/gcc/gthr-posix.h Wed Jul 18 04:02:20 2001 *************** typedef pthread_mutex_t __gthread_mutex_ *** 67,72 **** --- 67,74 ---- #pragma weak pthread_mutex_init #pragma weak pthread_mutex_destroy #pragma weak pthread_self + #pragma weak sched_get_priority_max + #pragma weak sched_get_priority_min #pragma weak sched_yield #pragma weak pthread_attr_destroy #pragma weak pthread_attr_init *************** __gthread_objc_mutex_deallocate(objc_mut *** 329,358 **** static inline int __gthread_objc_mutex_lock(objc_mutex_t mutex) { ! if (__gthread_active_p ()) ! return pthread_mutex_lock((pthread_mutex_t *)mutex->backend); ! else ! return 0; } /* Try to grab a lock on a mutex. */ static inline int __gthread_objc_mutex_trylock(objc_mutex_t mutex) { ! if (__gthread_active_p ()) ! return pthread_mutex_trylock((pthread_mutex_t *)mutex->backend); ! else ! return 0; } /* Unlock the mutex */ static inline int __gthread_objc_mutex_unlock(objc_mutex_t mutex) { ! if (__gthread_active_p ()) ! return pthread_mutex_unlock((pthread_mutex_t *)mutex->backend); ! else ! return 0; } /* Backend condition mutex functions */ --- 331,369 ---- static inline int __gthread_objc_mutex_lock(objc_mutex_t mutex) { ! if (__gthread_active_p () ! && pthread_mutex_lock((pthread_mutex_t *)mutex->backend) != 0) ! { ! return -1; ! } ! ! return 0; } /* Try to grab a lock on a mutex. */ static inline int __gthread_objc_mutex_trylock(objc_mutex_t mutex) { ! if (__gthread_active_p () ! && pthread_mutex_trylock((pthread_mutex_t *)mutex->backend) != 0) ! { ! return -1; ! } ! ! return 0; } /* Unlock the mutex */ static inline int __gthread_objc_mutex_unlock(objc_mutex_t mutex) { ! if (__gthread_active_p () ! && pthread_mutex_unlock((pthread_mutex_t *)mutex->backend) != 0) ! { ! return -1; ! } ! ! return 0; } /* Backend condition mutex functions */ diff -Nrc3pad gcc-3.0/gcc/gthr-rtems.h gcc-3.0.1/gcc/gthr-rtems.h *** gcc-3.0/gcc/gthr-rtems.h Wed Dec 6 18:42:01 2000 --- gcc-3.0.1/gcc/gthr-rtems.h Tue Jul 24 18:46:30 2001 *************** extern int rtems_gxx_mutex_trylock (__gt *** 62,67 **** --- 62,74 ---- extern int rtems_gxx_mutex_unlock (__gthread_mutex_t *mutex); + /* RTEMS threading is always active */ + static inline int + __gthread_active_p (void) + { + return 1; + } + /* Wrapper calls */ static inline int __gthread_once (__gthread_once_t *once, void (*func) ()) diff -Nrc3pad gcc-3.0/gcc/intl/ChangeLog gcc-3.0.1/gcc/intl/ChangeLog *** gcc-3.0/gcc/intl/ChangeLog Sun Jun 17 12:39:58 2001 --- gcc-3.0.1/gcc/intl/ChangeLog Sun Aug 19 14:08:17 2001 *************** *** 1,3 **** --- 1,11 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/gcc/java/ChangeLog gcc-3.0.1/gcc/java/ChangeLog *** gcc-3.0/gcc/java/ChangeLog Sun Jun 17 12:40:07 2001 --- gcc-3.0.1/gcc/java/ChangeLog Sun Aug 19 14:08:19 2001 *************** *** 1,3 **** --- 1,50 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-12 David Edelsohn + + Revert previous patch. + + 2001-08-02 Rainer Orth + + * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks + ASM_FINAL_SPEC. + (lang_specific_pre_link): Use set_input to set input_filename. + Append `main' here. + * jvgenmain.c (usage): Append literal `main' to CLASSNAME. + (main): Fix definition. + Strip `main' from classname. + Fixes PR java/227. + + 2001-07-18 Tom Tromey + + For PR java/2812: + * lex.h: Use HAVE_ICONV, not HAVE_ICONV_H. + * lex.c (java_new_lexer): Use ICONV_CONST. + (java_read_char): Likewise. + * Make-lang.in (jc1$(exeext)): Link against LIBICONV. + (jv-scan$(exeext)): Likewise. + + 2001-07-13 Tom Tromey + + * jvspec.c (jvgenmain_spec): Remove -ffilelist-file from cc1 + invocation. + + 2001-07-04 Joseph S. Myers + + * gcj.texi: Use gpl.texi. + * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Update + dependencies and use doc/include in search path. + + 2001-07-04 Jeffrey Oldham + + * jvgenmain.c (do_mangle_classname): End string constant with '\0'. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/gcc/java/Make-lang.in gcc-3.0.1/gcc/java/Make-lang.in *** gcc-3.0/gcc/java/Make-lang.in Thu Jun 7 15:04:43 2001 --- gcc-3.0.1/gcc/java/Make-lang.in Wed Jul 18 10:02:18 2001 *************** java-warn = *** 121,127 **** jc1$(exeext): $(JAVA_OBJS) $(BACKEND) $(LIBDEPS) rm -f $@ $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \ ! $(JAVA_OBJS) $(BACKEND) $(ZLIB) $(LIBS) gcjh$(exeext): $(GCJH_OBJS) $(LIBDEPS) rm -f $@ --- 121,127 ---- jc1$(exeext): $(JAVA_OBJS) $(BACKEND) $(LIBDEPS) rm -f $@ $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \ ! $(JAVA_OBJS) $(BACKEND) $(ZLIB) $(LIBICONV) $(LIBS) gcjh$(exeext): $(GCJH_OBJS) $(LIBDEPS) rm -f $@ *************** gcjh$(exeext): $(GCJH_OBJS) $(LIBDEPS) *** 129,135 **** jv-scan$(exeext): $(JVSCAN_OBJS) $(LIBDEPS) rm -f $@ ! $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(JVSCAN_OBJS) $(LIBS) jcf-dump$(exeext): $(JCFDUMP_OBJS) $(LIBDEPS) rm -f $@ --- 129,135 ---- jv-scan$(exeext): $(JVSCAN_OBJS) $(LIBDEPS) rm -f $@ ! $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(JVSCAN_OBJS) $(LIBICONV) $(LIBS) jcf-dump$(exeext): $(JCFDUMP_OBJS) $(LIBDEPS) rm -f $@ *************** java/jcf-path.o: java/jcf-path.c $(CONFI *** 294,305 **** $(srcdir)/java/jcf-path.c $(OUTPUT_OPTION) # Documentation ! $(srcdir)/java/gcj.info: $(srcdir)/java/gcj.texi $(srcdir)/doc/fdl.texi if test "x$(BUILD_INFO)" = xinfo; then \ rm -f $(srcdir)/java/gcc.info*; \ ! cd $(srcdir)/java && $(MAKEINFO) -I../doc -o gcj.info gcj.texi; \ else true; fi ! java/gcj.dvi: $(srcdir)/java/gcj.texi $(srcdir)/doc/fdl.texi s=`cd $(srcdir); pwd`; export s; \ ! cd java && $(TEXI2DVI) -I $$s/doc $$s/java/gcj.texi --- 294,307 ---- $(srcdir)/java/jcf-path.c $(OUTPUT_OPTION) # Documentation ! $(srcdir)/java/gcj.info: $(srcdir)/java/gcj.texi \ ! $(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gpl.texi if test "x$(BUILD_INFO)" = xinfo; then \ rm -f $(srcdir)/java/gcc.info*; \ ! cd $(srcdir)/java && $(MAKEINFO) -I../doc/include -o gcj.info gcj.texi; \ else true; fi ! java/gcj.dvi: $(srcdir)/java/gcj.texi $(srcdir)/doc/include/fdl.texi \ ! $(srcdir)/doc/include/gpl.texi s=`cd $(srcdir); pwd`; export s; \ ! cd java && $(TEXI2DVI) -I $$s/doc/include $$s/java/gcj.texi diff -Nrc3pad gcc-3.0/gcc/java/gcj.info gcc-3.0.1/gcc/java/gcj.info *** gcc-3.0/gcc/java/gcj.info Sun Jun 17 12:54:26 2001 --- gcc-3.0.1/gcc/java/gcj.info Sun Aug 19 18:05:18 2001 *************** the "copyright" line and a pointer to wh *** 385,391 **** You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software ! Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Also add information on how to contact you by electronic and paper mail. --- 385,392 ---- You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software ! Foundation, Inc., 59 Temple Place - Suite 330, ! Boston, MA 02111-1307, USA. Also add information on how to contact you by electronic and paper mail. *************** for more information. *** 1295,1314 **** Tag Table: Node: Top1427 Node: Copying2256 ! Node: GNU Free Documentation License21456 ! Node: Invoking gcj41341 ! Node: Input and output files41992 ! Node: Input Options43339 ! Node: Encodings46309 ! Node: Warnings47510 ! Node: Code Generation48541 ! Ref: Code Generation-Footnote-150402 ! Node: Configure-time Options50711 ! Node: Compatibility51875 ! Node: Invoking gcjh53167 ! Node: Invoking jv-scan54912 ! Node: Invoking jcf-dump55721 ! Node: Invoking gij56342 ! Node: Resources58124  End Tag Table --- 1296,1315 ---- Tag Table: Node: Top1427 Node: Copying2256 ! Node: GNU Free Documentation License21461 ! Node: Invoking gcj41346 ! Node: Input and output files41997 ! Node: Input Options43344 ! Node: Encodings46314 ! Node: Warnings47515 ! Node: Code Generation48546 ! Ref: Code Generation-Footnote-150407 ! Node: Configure-time Options50716 ! Node: Compatibility51880 ! Node: Invoking gcjh53172 ! Node: Invoking jv-scan54917 ! Node: Invoking jcf-dump55726 ! Node: Invoking gij56347 ! Node: Resources58129  End Tag Table diff -Nrc3pad gcc-3.0/gcc/java/gcj.texi gcc-3.0.1/gcc/java/gcj.texi *** gcc-3.0/gcc/java/gcj.texi Sat Jun 2 09:52:57 2001 --- gcc-3.0.1/gcc/java/gcj.texi Wed Jul 4 09:23:09 2001 *************** files and object files, and it can read *** 112,509 **** @end menu ! @node Copying ! @unnumbered GNU GENERAL PUBLIC LICENSE ! @center Version 2, June 1991 ! ! @display ! Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc. ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ! ! Everyone is permitted to copy and distribute verbatim copies ! of this license document, but changing it is not allowed. ! @end display ! ! @unnumberedsec Preamble ! ! The licenses for most software are designed to take away your ! freedom to share and change it. By contrast, the GNU General Public ! License is intended to guarantee your freedom to share and change free ! software---to make sure the software is free for all its users. This ! General Public License applies to most of the Free Software ! Foundation's software and to any other program whose authors commit to ! using it. (Some other Free Software Foundation software is covered by ! the GNU Library General Public License instead.) You can apply it to ! your programs, too. ! ! When we speak of free software, we are referring to freedom, not ! price. Our General Public Licenses are designed to make sure that you ! have the freedom to distribute copies of free software (and charge for ! this service if you wish), that you receive source code or can get it ! if you want it, that you can change the software or use pieces of it ! in new free programs; and that you know you can do these things. ! ! To protect your rights, we need to make restrictions that forbid ! anyone to deny you these rights or to ask you to surrender the rights. ! These restrictions translate to certain responsibilities for you if you ! distribute copies of the software, or if you modify it. ! ! For example, if you distribute copies of such a program, whether ! gratis or for a fee, you must give the recipients all the rights that ! you have. You must make sure that they, too, receive or can get the ! source code. And you must show them these terms so they know their ! rights. ! ! We protect your rights with two steps: (1) copyright the software, and ! (2) offer you this license which gives you legal permission to copy, ! distribute and/or modify the software. ! ! Also, for each author's protection and ours, we want to make certain ! that everyone understands that there is no warranty for this free ! software. If the software is modified by someone else and passed on, we ! want its recipients to know that what they have is not the original, so ! that any problems introduced by others will not reflect on the original ! authors' reputations. ! ! Finally, any free program is threatened constantly by software ! patents. We wish to avoid the danger that redistributors of a free ! program will individually obtain patent licenses, in effect making the ! program proprietary. To prevent this, we have made it clear that any ! patent must be licensed for everyone's free use or not licensed at all. ! ! The precise terms and conditions for copying, distribution and ! modification follow. ! ! @iftex ! @unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ! @end iftex ! @ifinfo ! @center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ! @end ifinfo ! ! @enumerate 0 ! @item ! This License applies to any program or other work which contains ! a notice placed by the copyright holder saying it may be distributed ! under the terms of this General Public License. The ``Program'', below, ! refers to any such program or work, and a ``work based on the Program'' ! means either the Program or any derivative work under copyright law: ! that is to say, a work containing the Program or a portion of it, ! either verbatim or with modifications and/or translated into another ! language. (Hereinafter, translation is included without limitation in ! the term ``modification''.) Each licensee is addressed as ``you''. ! ! Activities other than copying, distribution and modification are not ! covered by this License; they are outside its scope. The act of ! running the Program is not restricted, and the output from the Program ! is covered only if its contents constitute a work based on the ! Program (independent of having been made by running the Program). ! Whether that is true depends on what the Program does. ! ! @item ! You may copy and distribute verbatim copies of the Program's ! source code as you receive it, in any medium, provided that you ! conspicuously and appropriately publish on each copy an appropriate ! copyright notice and disclaimer of warranty; keep intact all the ! notices that refer to this License and to the absence of any warranty; ! and give any other recipients of the Program a copy of this License ! along with the Program. ! ! You may charge a fee for the physical act of transferring a copy, and ! you may at your option offer warranty protection in exchange for a fee. ! ! @item ! You may modify your copy or copies of the Program or any portion ! of it, thus forming a work based on the Program, and copy and ! distribute such modifications or work under the terms of Section 1 ! above, provided that you also meet all of these conditions: ! ! @enumerate a ! @item ! You must cause the modified files to carry prominent notices ! stating that you changed the files and the date of any change. ! ! @item ! You must cause any work that you distribute or publish, that in ! whole or in part contains or is derived from the Program or any ! part thereof, to be licensed as a whole at no charge to all third ! parties under the terms of this License. ! ! @item ! If the modified program normally reads commands interactively ! when run, you must cause it, when started running for such ! interactive use in the most ordinary way, to print or display an ! announcement including an appropriate copyright notice and a ! notice that there is no warranty (or else, saying that you provide ! a warranty) and that users may redistribute the program under ! these conditions, and telling the user how to view a copy of this ! License. (Exception: if the Program itself is interactive but ! does not normally print such an announcement, your work based on ! the Program is not required to print an announcement.) ! @end enumerate ! ! These requirements apply to the modified work as a whole. If ! identifiable sections of that work are not derived from the Program, ! and can be reasonably considered independent and separate works in ! themselves, then this License, and its terms, do not apply to those ! sections when you distribute them as separate works. But when you ! distribute the same sections as part of a whole which is a work based ! on the Program, the distribution of the whole must be on the terms of ! this License, whose permissions for other licensees extend to the ! entire whole, and thus to each and every part regardless of who wrote it. ! ! Thus, it is not the intent of this section to claim rights or contest ! your rights to work written entirely by you; rather, the intent is to ! exercise the right to control the distribution of derivative or ! collective works based on the Program. ! ! In addition, mere aggregation of another work not based on the Program ! with the Program (or with a work based on the Program) on a volume of ! a storage or distribution medium does not bring the other work under ! the scope of this License. ! ! @item ! You may copy and distribute the Program (or a work based on it, ! under Section 2) in object code or executable form under the terms of ! Sections 1 and 2 above provided that you also do one of the following: ! ! @enumerate a ! @item ! Accompany it with the complete corresponding machine-readable ! source code, which must be distributed under the terms of Sections ! 1 and 2 above on a medium customarily used for software interchange; or, ! ! @item ! Accompany it with a written offer, valid for at least three ! years, to give any third party, for a charge no more than your ! cost of physically performing source distribution, a complete ! machine-readable copy of the corresponding source code, to be ! distributed under the terms of Sections 1 and 2 above on a medium ! customarily used for software interchange; or, ! ! @item ! Accompany it with the information you received as to the offer ! to distribute corresponding source code. (This alternative is ! allowed only for noncommercial distribution and only if you ! received the program in object code or executable form with such ! an offer, in accord with Subsection b above.) ! @end enumerate ! ! The source code for a work means the preferred form of the work for ! making modifications to it. For an executable work, complete source ! code means all the source code for all modules it contains, plus any ! associated interface definition files, plus the scripts used to ! control compilation and installation of the executable. However, as a ! special exception, the source code distributed need not include ! anything that is normally distributed (in either source or binary ! form) with the major components (compiler, kernel, and so on) of the ! operating system on which the executable runs, unless that component ! itself accompanies the executable. ! ! If distribution of executable or object code is made by offering ! access to copy from a designated place, then offering equivalent ! access to copy the source code from the same place counts as ! distribution of the source code, even though third parties are not ! compelled to copy the source along with the object code. ! ! @item ! You may not copy, modify, sublicense, or distribute the Program ! except as expressly provided under this License. Any attempt ! otherwise to copy, modify, sublicense or distribute the Program is ! void, and will automatically terminate your rights under this License. ! However, parties who have received copies, or rights, from you under ! this License will not have their licenses terminated so long as such ! parties remain in full compliance. ! ! @item ! You are not required to accept this License, since you have not ! signed it. However, nothing else grants you permission to modify or ! distribute the Program or its derivative works. These actions are ! prohibited by law if you do not accept this License. Therefore, by ! modifying or distributing the Program (or any work based on the ! Program), you indicate your acceptance of this License to do so, and ! all its terms and conditions for copying, distributing or modifying ! the Program or works based on it. ! ! @item ! Each time you redistribute the Program (or any work based on the ! Program), the recipient automatically receives a license from the ! original licensor to copy, distribute or modify the Program subject to ! these terms and conditions. You may not impose any further ! restrictions on the recipients' exercise of the rights granted herein. ! You are not responsible for enforcing compliance by third parties to ! this License. ! ! @item ! If, as a consequence of a court judgment or allegation of patent ! infringement or for any other reason (not limited to patent issues), ! conditions are imposed on you (whether by court order, agreement or ! otherwise) that contradict the conditions of this License, they do not ! excuse you from the conditions of this License. If you cannot ! distribute so as to satisfy simultaneously your obligations under this ! License and any other pertinent obligations, then as a consequence you ! may not distribute the Program at all. For example, if a patent ! license would not permit royalty-free redistribution of the Program by ! all those who receive copies directly or indirectly through you, then ! the only way you could satisfy both it and this License would be to ! refrain entirely from distribution of the Program. ! ! If any portion of this section is held invalid or unenforceable under ! any particular circumstance, the balance of the section is intended to ! apply and the section as a whole is intended to apply in other ! circumstances. ! ! It is not the purpose of this section to induce you to infringe any ! patents or other property right claims or to contest validity of any ! such claims; this section has the sole purpose of protecting the ! integrity of the free software distribution system, which is ! implemented by public license practices. Many people have made ! generous contributions to the wide range of software distributed ! through that system in reliance on consistent application of that ! system; it is up to the author/donor to decide if he or she is willing ! to distribute software through any other system and a licensee cannot ! impose that choice. ! ! This section is intended to make thoroughly clear what is believed to ! be a consequence of the rest of this License. ! ! @item ! If the distribution and/or use of the Program is restricted in ! certain countries either by patents or by copyrighted interfaces, the ! original copyright holder who places the Program under this License ! may add an explicit geographical distribution limitation excluding ! those countries, so that distribution is permitted only in or among ! countries not thus excluded. In such case, this License incorporates ! the limitation as if written in the body of this License. ! ! @item ! The Free Software Foundation may publish revised and/or new versions ! of the General Public License from time to time. Such new versions will ! be similar in spirit to the present version, but may differ in detail to ! address new problems or concerns. ! ! Each version is given a distinguishing version number. If the Program ! specifies a version number of this License which applies to it and ``any ! later version'', you have the option of following the terms and conditions ! either of that version or of any later version published by the Free ! Software Foundation. If the Program does not specify a version number of ! this License, you may choose any version ever published by the Free Software ! Foundation. ! ! @item ! If you wish to incorporate parts of the Program into other free ! programs whose distribution conditions are different, write to the author ! to ask for permission. For software which is copyrighted by the Free ! Software Foundation, write to the Free Software Foundation; we sometimes ! make exceptions for this. Our decision will be guided by the two goals ! of preserving the free status of all derivatives of our free software and ! of promoting the sharing and reuse of software generally. ! ! @iftex ! @heading NO WARRANTY ! @end iftex ! @ifinfo ! @center NO WARRANTY ! @end ifinfo ! ! @item ! BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY ! FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN ! OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES ! PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED ! OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ! MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS ! TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE ! PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, ! REPAIR OR CORRECTION. ! ! @item ! IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING ! WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR ! REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, ! INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING ! OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED ! TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY ! YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER ! PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE ! POSSIBILITY OF SUCH DAMAGES. ! @end enumerate ! ! @iftex ! @heading END OF TERMS AND CONDITIONS ! @end iftex ! @ifinfo ! @center END OF TERMS AND CONDITIONS ! @end ifinfo ! ! @page ! @unnumberedsec How to Apply These Terms to Your New Programs ! ! If you develop a new program, and you want it to be of the greatest ! possible use to the public, the best way to achieve this is to make it ! free software which everyone can redistribute and change under these terms. ! ! To do so, attach the following notices to the program. It is safest ! to attach them to the start of each source file to most effectively ! convey the exclusion of warranty; and each file should have at least ! the ``copyright'' line and a pointer to where the full notice is found. ! ! @smallexample ! @var{one line to give the program's name and a brief idea of what it does.} ! Copyright (C) @var{year} @var{name of author} ! ! This program is free software; you can redistribute it and/or modify ! it under the terms of the GNU General Public License as published by ! the Free Software Foundation; either version 2 of the License, or ! (at your option) any later version. ! ! This program is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! GNU General Public License for more details. ! ! You should have received a copy of the GNU General Public License ! along with this program; if not, write to the Free Software ! Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! @end smallexample ! ! Also add information on how to contact you by electronic and paper mail. ! ! If the program is interactive, make it output a short notice like this ! when it starts in an interactive mode: ! ! @smallexample ! Gnomovision version 69, Copyright (C) @var{year} @var{name of author} ! Gnomovision comes with ABSOLUTELY NO WARRANTY; for details ! type `show w'. ! This is free software, and you are welcome to redistribute it ! under certain conditions; type `show c' for details. ! @end smallexample ! ! The hypothetical commands @samp{show w} and @samp{show c} should show ! the appropriate parts of the General Public License. Of course, the ! commands you use may be called something other than @samp{show w} and ! @samp{show c}; they could even be mouse-clicks or menu items---whatever ! suits your program. ! ! You should also get your employer (if you work as a programmer) or your ! school, if any, to sign a ``copyright disclaimer'' for the program, if ! necessary. Here is a sample; alter the names: ! ! @smallexample ! Yoyodyne, Inc., hereby disclaims all copyright interest in the program ! `Gnomovision' (which makes passes at compilers) written by James Hacker. ! ! @var{signature of Ty Coon}, 1 April 1989 ! Ty Coon, President of Vice ! @end smallexample ! ! This General Public License does not permit incorporating your program into ! proprietary programs. If your program is a subroutine library, you may ! consider it more useful to permit linking proprietary applications with the ! library. If this is what you want to do, use the GNU Library General ! Public License instead of this License. ! @include fdl.texi --- 112,118 ---- @end menu ! @include gpl.texi @include fdl.texi diff -Nrc3pad gcc-3.0/gcc/java/jvgenmain.c gcc-3.0.1/gcc/java/jvgenmain.c *** gcc-3.0/gcc/java/jvgenmain.c Fri Feb 9 13:34:57 2001 --- gcc-3.0.1/gcc/java/jvgenmain.c Sun Aug 12 13:22:20 2001 *************** do_mangle_classname (string) *** 168,172 **** --- 168,173 ---- } append_gpp_mangled_name (&ptr [-count], count); obstack_grow (mangle_obstack, "6class$E", 8); + obstack_1grow (mangle_obstack, '\0'); return obstack_finish (mangle_obstack); } diff -Nrc3pad gcc-3.0/gcc/java/jvspec.c gcc-3.0.1/gcc/java/jvspec.c *** gcc-3.0/gcc/java/jvspec.c Fri May 18 12:02:58 2001 --- gcc-3.0.1/gcc/java/jvspec.c Sun Aug 12 13:22:20 2001 *************** const char jvgenmain_spec[] = *** 63,68 **** --- 63,69 ---- %{buffer[lex->first]; outp = &lex->out_buffer[lex->out_last]; ! ir = iconv (lex->handle, (const char **) &inp, &inbytesleft, ! &outp, &out_count); /* If we haven't read any bytes, then look to see if we have read a BOM. */ --- 371,378 ---- out_save = out_count; inp = &lex->buffer[lex->first]; outp = &lex->out_buffer[lex->out_last]; ! ir = iconv (lex->handle, (ICONV_CONST char **) &inp, ! &inbytesleft, &outp, &out_count); /* If we haven't read any bytes, then look to see if we have read a BOM. */ diff -Nrc3pad gcc-3.0/gcc/java/lex.h gcc-3.0.1/gcc/java/lex.h *** gcc-3.0/gcc/java/lex.h Wed Dec 13 14:47:13 2000 --- gcc-3.0.1/gcc/java/lex.h Wed Jul 18 10:02:18 2001 *************** *** 1,5 **** /* Language lexer definitions for the GNU compiler for the Java(TM) language. ! Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. Contributed by Alexandre Petit-Bianco (apbianco@cygnus.com) This file is part of GNU CC. --- 1,5 ---- /* Language lexer definitions for the GNU compiler for the Java(TM) language. ! Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. Contributed by Alexandre Petit-Bianco (apbianco@cygnus.com) This file is part of GNU CC. *************** extern int lineno; *** 35,41 **** /* A Unicode character, as read from the input file */ typedef unsigned short unicode_t; ! #ifdef HAVE_ICONV_H #include #endif /* HAVE_ICONV */ --- 35,41 ---- /* A Unicode character, as read from the input file */ typedef unsigned short unicode_t; ! #ifdef HAVE_ICONV #include #endif /* HAVE_ICONV */ diff -Nrc3pad gcc-3.0/gcc/java/parse-scan.c gcc-3.0.1/gcc/java/parse-scan.c *** gcc-3.0/gcc/java/parse-scan.c Sun Jun 17 12:51:06 2001 --- gcc-3.0.1/gcc/java/parse-scan.c Sun Aug 19 17:53:33 2001 *************** *** 1,6 **** ! /* A Bison parser, made from /nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y ! by GNU Bison version 1.28 */ #define YYBISON 1 /* Identify Bison output. */ --- 1,7 ---- ! /* A Bison parser, made from /sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y ! by GNU Bison version 1.27 ! */ #define YYBISON 1 /* Identify Bison output. */ *************** *** 113,119 **** #define BOOL_LIT_TK 363 #define NULL_TK 364 ! #line 37 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" #define JC1_LITE --- 114,120 ---- #define BOOL_LIT_TK 363 #define NULL_TK 364 ! #line 37 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" #define JC1_LITE *************** void report PARAMS ((void)); *** 189,201 **** #include "lex.h" #include "parse.h" ! #line 113 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" typedef union { char *node; struct method_declarator *declarator; int value; /* For modifiers */ } YYSTYPE; ! #line 119 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" #include "lex.c" #ifndef YYDEBUG --- 190,202 ---- #include "lex.h" #include "parse.h" ! #line 113 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" typedef union { char *node; struct method_declarator *declarator; int value; /* For modifiers */ } YYSTYPE; ! #line 119 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" #include "lex.c" #ifndef YYDEBUG *************** static const short yycheck[] = { 3, *** 1397,1403 **** /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/lib/bison.simple" ! /* This file comes from bison-1.28. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. --- 1398,1404 ---- /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/lib/bison.simple" ! /* This file comes from bison-1.27. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. *************** __yy_memcpy (char *to, char *from, unsig *** 1610,1616 **** #endif #endif ! #line 217 "/usr/lib/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. --- 1611,1617 ---- #endif #endif ! #line 216 "/usr/lib/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. *************** yyreduce: *** 1939,1990 **** switch (yyn) { case 10: ! #line 211 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { /* use preset global here. FIXME */ yyval.node = xstrdup ("int"); ; break;} case 11: ! #line 216 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { /* use preset global here. FIXME */ yyval.node = xstrdup ("double"); ; break;} case 12: ! #line 221 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { /* use preset global here. FIXME */ yyval.node = xstrdup ("boolean"); ; break;} case 18: ! #line 246 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { while (bracket_count-- > 0) yyval.node = concat ("[", yyvsp[-1].node, NULL); ; break;} case 19: ! #line 251 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { while (bracket_count-- > 0) yyval.node = concat ("[", yyvsp[-1].node, NULL); ; break;} case 23: ! #line 269 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { yyval.node = concat (yyvsp[-2].node, ".", yyvsp[0].node, NULL); ; break;} case 37: ! #line 301 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { package_name = yyvsp[-1].node; ; break;} case 45: ! #line 328 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { if (yyvsp[0].value == PUBLIC_TK) modifier_value++; --- 1940,1991 ---- switch (yyn) { case 10: ! #line 211 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { /* use preset global here. FIXME */ yyval.node = xstrdup ("int"); ; break;} case 11: ! #line 216 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { /* use preset global here. FIXME */ yyval.node = xstrdup ("double"); ; break;} case 12: ! #line 221 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { /* use preset global here. FIXME */ yyval.node = xstrdup ("boolean"); ; break;} case 18: ! #line 246 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { while (bracket_count-- > 0) yyval.node = concat ("[", yyvsp[-1].node, NULL); ; break;} case 19: ! #line 251 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { while (bracket_count-- > 0) yyval.node = concat ("[", yyvsp[-1].node, NULL); ; break;} case 23: ! #line 269 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { yyval.node = concat (yyvsp[-2].node, ".", yyvsp[0].node, NULL); ; break;} case 37: ! #line 301 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { package_name = yyvsp[-1].node; ; break;} case 45: ! #line 328 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { if (yyvsp[0].value == PUBLIC_TK) modifier_value++; *************** case 45: *** 1994,2000 **** ; break;} case 46: ! #line 336 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { if (yyvsp[0].value == PUBLIC_TK) modifier_value++; --- 1995,2001 ---- ; break;} case 46: ! #line 336 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { if (yyvsp[0].value == PUBLIC_TK) modifier_value++; *************** case 46: *** 2004,2068 **** ; break;} case 47: ! #line 348 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { report_class_declaration(yyvsp[-2].node); modifier_value = 0; ; break;} case 49: ! #line 354 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { report_class_declaration(yyvsp[-2].node); ; break;} case 55: ! #line 368 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 56: ! #line 370 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 57: ! #line 375 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { pop_class_context (); ; break;} case 58: ! #line 377 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { pop_class_context (); ; break;} case 70: ! #line 403 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 71: ! #line 405 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { modifier_value = 0; ; break;} case 76: ! #line 421 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { bracket_count = 0; USE_ABSORBER; ; break;} case 77: ! #line 423 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { ++bracket_count; ; break;} case 81: ! #line 438 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 83: ! #line 441 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { modifier_value = 0; ; break;} case 84: ! #line 443 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { report_main_declaration (yyvsp[-1].declarator); modifier_value = 0; ; break;} case 85: ! #line 451 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { struct method_declarator *d; NEW_METHOD_DECLARATOR (d, yyvsp[-2].node, NULL); --- 2005,2069 ---- ; break;} case 47: ! #line 348 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { report_class_declaration(yyvsp[-2].node); modifier_value = 0; ; break;} case 49: ! #line 354 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { report_class_declaration(yyvsp[-2].node); ; break;} case 55: ! #line 368 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 56: ! #line 370 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 57: ! #line 375 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { pop_class_context (); ; break;} case 58: ! #line 377 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { pop_class_context (); ; break;} case 70: ! #line 403 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 71: ! #line 405 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { modifier_value = 0; ; break;} case 76: ! #line 421 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { bracket_count = 0; USE_ABSORBER; ; break;} case 77: ! #line 423 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { ++bracket_count; ; break;} case 81: ! #line 438 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 83: ! #line 441 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { modifier_value = 0; ; break;} case 84: ! #line 443 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { report_main_declaration (yyvsp[-1].declarator); modifier_value = 0; ; break;} case 85: ! #line 451 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { struct method_declarator *d; NEW_METHOD_DECLARATOR (d, yyvsp[-2].node, NULL); *************** case 85: *** 2070,2076 **** ; break;} case 86: ! #line 457 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { struct method_declarator *d; NEW_METHOD_DECLARATOR (d, yyvsp[-3].node, yyvsp[-1].node); --- 2071,2077 ---- ; break;} case 86: ! #line 457 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { struct method_declarator *d; NEW_METHOD_DECLARATOR (d, yyvsp[-3].node, yyvsp[-1].node); *************** case 86: *** 2078,2090 **** ; break;} case 89: ! #line 468 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { yyval.node = concat (yyvsp[-2].node, ",", yyvsp[0].node, NULL); ; break;} case 90: ! #line 475 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; if (bracket_count) --- 2079,2091 ---- ; break;} case 89: ! #line 468 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { yyval.node = concat (yyvsp[-2].node, ",", yyvsp[0].node, NULL); ; break;} case 90: ! #line 475 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; if (bracket_count) *************** case 90: *** 2101,2107 **** ; break;} case 91: ! #line 490 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { if (bracket_count) { --- 2102,2108 ---- ; break;} case 91: ! #line 490 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { if (bracket_count) { *************** case 91: *** 2117,2332 **** ; break;} case 94: ! #line 511 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 95: ! #line 513 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 99: ! #line 528 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 101: ! #line 539 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { modifier_value = 0; ; break;} case 103: ! #line 544 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { modifier_value = 0; ; break;} case 104: ! #line 551 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 105: ! #line 553 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 112: ! #line 570 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 113: ! #line 572 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 116: ! #line 584 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { report_class_declaration (yyvsp[0].node); modifier_value = 0; ; break;} case 118: ! #line 587 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { report_class_declaration (yyvsp[0].node); modifier_value = 0; ; break;} case 120: ! #line 590 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { report_class_declaration (yyvsp[-1].node); modifier_value = 0; ; break;} case 122: ! #line 593 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { report_class_declaration (yyvsp[-1].node); modifier_value = 0; ; break;} case 126: ! #line 604 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { pop_class_context (); ; break;} case 127: ! #line 606 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { pop_class_context (); ; break;} case 150: ! #line 665 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 151: ! #line 667 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { modifier_value = 0; ; break;} case 175: ! #line 707 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 186: ! #line 735 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { ++complexity; ; break;} case 187: ! #line 740 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { ++complexity; ; break;} case 188: ! #line 745 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { ++complexity; ; break;} case 196: ! #line 765 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { ++complexity; ; break;} case 201: ! #line 780 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { ++complexity; ; break;} case 205: ! #line 797 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { ++complexity; ; break;} case 211: ! #line 815 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { ++complexity; ; break;} case 222: ! #line 840 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { ++complexity; ; break;} case 225: ! #line 849 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { ++complexity; ; break;} case 228: ! #line 859 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 234: ! #line 874 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { ++complexity; ; break;} case 235: ! #line 878 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { ++complexity; ; break;} case 246: ! #line 900 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 247: ! #line 905 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 248: ! #line 907 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 249: ! #line 909 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 250: ! #line 911 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 258: ! #line 926 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { report_class_declaration (NULL); ; break;} case 260: ! #line 929 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { report_class_declaration (NULL); ; break;} case 262: ! #line 935 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 276: ! #line 967 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { bracket_count = 1; ; break;} case 277: ! #line 969 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { bracket_count++; ; break;} case 280: ! #line 982 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ++complexity; ; break;} case 281: ! #line 984 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ++complexity; ; break;} case 282: ! #line 985 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { ++complexity; ; break;} case 283: ! #line 986 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { ++complexity; ; break;} case 284: ! #line 987 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { ++complexity; ; break;} case 285: ! #line 988 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { ++complexity; ; break;} case 286: ! #line 993 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 289: ! #line 1000 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 336: ! #line 1096 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { ++complexity; ; break;} case 338: ! #line 1102 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { ++complexity; ; break;} case 340: ! #line 1108 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { ++complexity; ; break;} case 344: ! #line 1122 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} } /* the action file gets copied in in place of this dollarsign */ ! #line 543 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; --- 2118,2333 ---- ; break;} case 94: ! #line 511 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 95: ! #line 513 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 99: ! #line 528 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 101: ! #line 539 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { modifier_value = 0; ; break;} case 103: ! #line 544 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { modifier_value = 0; ; break;} case 104: ! #line 551 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 105: ! #line 553 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 112: ! #line 570 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 113: ! #line 572 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 116: ! #line 584 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { report_class_declaration (yyvsp[0].node); modifier_value = 0; ; break;} case 118: ! #line 587 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { report_class_declaration (yyvsp[0].node); modifier_value = 0; ; break;} case 120: ! #line 590 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { report_class_declaration (yyvsp[-1].node); modifier_value = 0; ; break;} case 122: ! #line 593 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { report_class_declaration (yyvsp[-1].node); modifier_value = 0; ; break;} case 126: ! #line 604 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { pop_class_context (); ; break;} case 127: ! #line 606 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { pop_class_context (); ; break;} case 150: ! #line 665 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 151: ! #line 667 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { modifier_value = 0; ; break;} case 175: ! #line 707 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 186: ! #line 735 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { ++complexity; ; break;} case 187: ! #line 740 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { ++complexity; ; break;} case 188: ! #line 745 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { ++complexity; ; break;} case 196: ! #line 765 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { ++complexity; ; break;} case 201: ! #line 780 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { ++complexity; ; break;} case 205: ! #line 797 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { ++complexity; ; break;} case 211: ! #line 815 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { ++complexity; ; break;} case 222: ! #line 840 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { ++complexity; ; break;} case 225: ! #line 849 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { ++complexity; ; break;} case 228: ! #line 859 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 234: ! #line 874 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { ++complexity; ; break;} case 235: ! #line 878 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { ++complexity; ; break;} case 246: ! #line 900 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 247: ! #line 905 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 248: ! #line 907 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 249: ! #line 909 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 250: ! #line 911 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 258: ! #line 926 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { report_class_declaration (NULL); ; break;} case 260: ! #line 929 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { report_class_declaration (NULL); ; break;} case 262: ! #line 935 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 276: ! #line 967 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { bracket_count = 1; ; break;} case 277: ! #line 969 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { bracket_count++; ; break;} case 280: ! #line 982 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ++complexity; ; break;} case 281: ! #line 984 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ++complexity; ; break;} case 282: ! #line 985 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { ++complexity; ; break;} case 283: ! #line 986 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { ++complexity; ; break;} case 284: ! #line 987 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { ++complexity; ; break;} case 285: ! #line 988 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { ++complexity; ; break;} case 286: ! #line 993 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 289: ! #line 1000 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} case 336: ! #line 1096 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { ++complexity; ; break;} case 338: ! #line 1102 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { ++complexity; ; break;} case 340: ! #line 1108 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { ++complexity; ; break;} case 344: ! #line 1122 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" { USE_ABSORBER; ; break;} } /* the action file gets copied in in place of this dollarsign */ ! #line 542 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; *************** yyerrhandle: *** 2546,2552 **** } return 1; } ! #line 1140 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse-scan.y" /* Create a new parser context */ --- 2547,2553 ---- } return 1; } ! #line 1140 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse-scan.y" /* Create a new parser context */ diff -Nrc3pad gcc-3.0/gcc/java/parse.c gcc-3.0.1/gcc/java/parse.c *** gcc-3.0/gcc/java/parse.c Sun Jun 17 12:51:06 2001 --- gcc-3.0.1/gcc/java/parse.c Sun Aug 19 17:53:32 2001 *************** *** 1,6 **** ! /* A Bison parser, made from /nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y ! by GNU Bison version 1.28 */ #define YYBISON 1 /* Identify Bison output. */ --- 1,7 ---- ! /* A Bison parser, made from /sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y ! by GNU Bison version 1.27 ! */ #define YYBISON 1 /* Identify Bison output. */ *************** *** 120,126 **** #define BOOL_LIT_TK 363 #define NULL_TK 364 ! #line 48 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" #include "config.h" #include "system.h" --- 121,127 ---- #define BOOL_LIT_TK 363 #define NULL_TK 364 ! #line 48 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" #include "config.h" #include "system.h" *************** static tree src_parse_roots[1] = { NULL_ *** 509,515 **** } while (0) ! #line 437 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" typedef union { tree node; int sub_token; --- 510,516 ---- } while (0) ! #line 437 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" typedef union { tree node; int sub_token; *************** typedef union { *** 519,525 **** } operator; int value; } YYSTYPE; ! #line 447 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" #include "lex.c" #ifndef YYDEBUG --- 520,526 ---- } operator; int value; } YYSTYPE; ! #line 447 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" #include "lex.c" #ifndef YYDEBUG *************** static const short yycheck[] = { 4, *** 2349,2355 **** /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/lib/bison.simple" ! /* This file comes from bison-1.28. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. --- 2350,2356 ---- /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/lib/bison.simple" ! /* This file comes from bison-1.27. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. *************** __yy_memcpy (char *to, char *from, unsig *** 2562,2568 **** #endif #endif ! #line 217 "/usr/lib/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. --- 2563,2569 ---- #endif #endif ! #line 216 "/usr/lib/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. *************** yyreduce: *** 2891,2897 **** switch (yyn) { case 1: ! #line 598 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { /* Register static variables with the garbage collector. */ --- 2892,2898 ---- switch (yyn) { case 1: ! #line 598 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { /* Register static variables with the garbage collector. */ *************** case 1: *** 2917,2927 **** ; break;} case 2: ! #line 622 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {; break;} case 19: ! #line 666 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { int osb = pop_current_osb (ctxp); tree t = build_java_array_type ((yyvsp[-1].node), -1); --- 2918,2928 ---- ; break;} case 2: ! #line 622 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {; break;} case 19: ! #line 666 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { int osb = pop_current_osb (ctxp); tree t = build_java_array_type ((yyvsp[-1].node), -1); *************** case 19: *** 2931,2937 **** ; break;} case 20: ! #line 674 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { int osb = pop_current_osb (ctxp); tree t = yyvsp[-1].node; --- 2932,2938 ---- ; break;} case 20: ! #line 674 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { int osb = pop_current_osb (ctxp); tree t = yyvsp[-1].node; *************** case 20: *** 2941,2982 **** ; break;} case 24: ! #line 695 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = make_qualified_name (yyvsp[-2].node, yyvsp[0].node, yyvsp[-1].operator.location); ; break;} case 26: ! #line 704 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyval.node = NULL;; break;} case 34: ! #line 716 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = NULL; ; break;} case 35: ! #line 720 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = NULL; ; break;} case 38: ! #line 732 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { ctxp->package = EXPR_WFL_NODE (yyvsp[-1].node); register_package (ctxp->package); ; break;} case 39: ! #line 737 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing name"); RECOVER;; break;} case 40: ! #line 739 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 43: ! #line 749 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { tree name = EXPR_WFL_NODE (yyvsp[-1].node), last_name; int i = IDENTIFIER_LENGTH (name)-1; --- 2942,2983 ---- ; break;} case 24: ! #line 695 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = make_qualified_name (yyvsp[-2].node, yyvsp[0].node, yyvsp[-1].operator.location); ; break;} case 26: ! #line 704 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyval.node = NULL;; break;} case 34: ! #line 716 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = NULL; ; break;} case 35: ! #line 720 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = NULL; ; break;} case 38: ! #line 732 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { ctxp->package = EXPR_WFL_NODE (yyvsp[-1].node); register_package (ctxp->package); ; break;} case 39: ! #line 737 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing name"); RECOVER;; break;} case 40: ! #line 739 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 43: ! #line 749 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { tree name = EXPR_WFL_NODE (yyvsp[-1].node), last_name; int i = IDENTIFIER_LENGTH (name)-1; *************** case 43: *** 3004,3018 **** ; break;} case 44: ! #line 775 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing name"); RECOVER;; break;} case 45: ! #line 777 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 46: ! #line 782 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { tree name = EXPR_WFL_NODE (yyvsp[-3].node); /* Don't import java.lang.* twice. */ --- 3005,3019 ---- ; break;} case 44: ! #line 775 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing name"); RECOVER;; break;} case 45: ! #line 777 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 46: ! #line 782 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { tree name = EXPR_WFL_NODE (yyvsp[-3].node); /* Don't import java.lang.* twice. */ *************** case 46: *** 3026,3061 **** ; break;} case 47: ! #line 794 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'*' expected"); RECOVER;; break;} case 48: ! #line 796 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 49: ! #line 801 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { end_class_declaration (0); ; break;} case 50: ! #line 803 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { end_class_declaration (0); ; break;} case 52: ! #line 806 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { YYERROR_NOW; yyerror ("Class or interface declaration expected"); ; break;} case 53: ! #line 817 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.value = (1 << yyvsp[0].value); ; break;} case 54: ! #line 821 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { int acc = (1 << yyvsp[0].value); if (yyval.value & acc) --- 3027,3062 ---- ; break;} case 47: ! #line 794 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'*' expected"); RECOVER;; break;} case 48: ! #line 796 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 49: ! #line 801 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { end_class_declaration (0); ; break;} case 50: ! #line 803 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { end_class_declaration (0); ; break;} case 52: ! #line 806 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { YYERROR_NOW; yyerror ("Class or interface declaration expected"); ; break;} case 53: ! #line 817 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.value = (1 << yyvsp[0].value); ; break;} case 54: ! #line 821 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { int acc = (1 << yyvsp[0].value); if (yyval.value & acc) *************** case 54: *** 3069,3151 **** ; break;} case 55: ! #line 837 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { create_class (yyvsp[-4].value, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ; break;} case 57: ! #line 840 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { create_class (0, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ; break;} case 59: ! #line 843 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing class name"); RECOVER;; break;} case 60: ! #line 845 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing class name"); RECOVER;; break;} case 61: ! #line 847 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { if (!ctxp->class_err) yyerror ("'{' expected"); DRECOVER(class1); ; break;} case 62: ! #line 852 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {if (!ctxp->class_err) yyerror ("'{' expected"); RECOVER;; break;} case 63: ! #line 856 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = NULL; ; break;} case 64: ! #line 858 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = yyvsp[0].node; ; break;} case 65: ! #line 860 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'{' expected"); ctxp->class_err=1;; break;} case 66: ! #line 862 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing super class name"); ctxp->class_err=1;; break;} case 67: ! #line 866 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = NULL_TREE; ; break;} case 68: ! #line 868 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = yyvsp[0].node; ; break;} case 69: ! #line 870 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { ctxp->class_err=1; yyerror ("Missing interface name"); ; break;} case 70: ! #line 878 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { ctxp->interface_number = 1; yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE); ; break;} case 71: ! #line 883 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { ctxp->interface_number++; yyval.node = chainon (yyvsp[-2].node, build_tree_list (yyvsp[0].node, NULL_TREE)); ; break;} case 72: ! #line 888 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing interface name"); RECOVER;; break;} case 73: ! #line 893 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { /* Store the location of the `}' when doing xrefs */ if (flag_emit_xref) --- 3070,3152 ---- ; break;} case 55: ! #line 837 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { create_class (yyvsp[-4].value, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ; break;} case 57: ! #line 840 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { create_class (0, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ; break;} case 59: ! #line 843 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing class name"); RECOVER;; break;} case 60: ! #line 845 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing class name"); RECOVER;; break;} case 61: ! #line 847 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { if (!ctxp->class_err) yyerror ("'{' expected"); DRECOVER(class1); ; break;} case 62: ! #line 852 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {if (!ctxp->class_err) yyerror ("'{' expected"); RECOVER;; break;} case 63: ! #line 856 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = NULL; ; break;} case 64: ! #line 858 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = yyvsp[0].node; ; break;} case 65: ! #line 860 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'{' expected"); ctxp->class_err=1;; break;} case 66: ! #line 862 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing super class name"); ctxp->class_err=1;; break;} case 67: ! #line 866 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = NULL_TREE; ; break;} case 68: ! #line 868 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = yyvsp[0].node; ; break;} case 69: ! #line 870 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { ctxp->class_err=1; yyerror ("Missing interface name"); ; break;} case 70: ! #line 878 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { ctxp->interface_number = 1; yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE); ; break;} case 71: ! #line 883 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { ctxp->interface_number++; yyval.node = chainon (yyvsp[-2].node, build_tree_list (yyvsp[0].node, NULL_TREE)); ; break;} case 72: ! #line 888 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing interface name"); RECOVER;; break;} case 73: ! #line 893 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { /* Store the location of the `}' when doing xrefs */ if (flag_emit_xref) *************** case 73: *** 3155,3161 **** ; break;} case 74: ! #line 901 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { /* Store the location of the `}' when doing xrefs */ if (flag_emit_xref) --- 3156,3162 ---- ; break;} case 74: ! #line 901 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { /* Store the location of the `}' when doing xrefs */ if (flag_emit_xref) *************** case 74: *** 3165,3190 **** ; break;} case 80: ! #line 920 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { TREE_CHAIN (yyvsp[0].node) = CPC_INSTANCE_INITIALIZER_STMT (ctxp); SET_CPC_INSTANCE_INITIALIZER_STMT (ctxp, yyvsp[0].node); ; break;} case 83: ! #line 930 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { end_class_declaration (1); ; break;} case 84: ! #line 932 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { end_class_declaration (1); ; break;} case 86: ! #line 939 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { register_fields (0, yyvsp[-2].node, yyvsp[-1].node); ; break;} case 87: ! #line 941 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { check_modifiers ("Illegal modifier `%s' for field declaration", --- 3166,3191 ---- ; break;} case 80: ! #line 920 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { TREE_CHAIN (yyvsp[0].node) = CPC_INSTANCE_INITIALIZER_STMT (ctxp); SET_CPC_INSTANCE_INITIALIZER_STMT (ctxp, yyvsp[0].node); ; break;} case 83: ! #line 930 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { end_class_declaration (1); ; break;} case 84: ! #line 932 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { end_class_declaration (1); ; break;} case 86: ! #line 939 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { register_fields (0, yyvsp[-2].node, yyvsp[-1].node); ; break;} case 87: ! #line 941 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { check_modifiers ("Illegal modifier `%s' for field declaration", *************** case 87: *** 3194,3212 **** ; break;} case 89: ! #line 954 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = chainon (yyvsp[-2].node, yyvsp[0].node); ; break;} case 90: ! #line 956 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 91: ! #line 961 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE); ; break;} case 92: ! #line 963 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { if (java_error_count) yyvsp[0].node = NULL_TREE; --- 3195,3213 ---- ; break;} case 89: ! #line 954 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = chainon (yyvsp[-2].node, yyvsp[0].node); ; break;} case 90: ! #line 956 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 91: ! #line 961 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE); ; break;} case 92: ! #line 963 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { if (java_error_count) yyvsp[0].node = NULL_TREE; *************** case 92: *** 3215,3221 **** ; break;} case 93: ! #line 970 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyerror ("Missing variable initializer"); yyval.node = build_tree_list (yyvsp[-2].node, NULL_TREE); --- 3216,3222 ---- ; break;} case 93: ! #line 970 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyerror ("Missing variable initializer"); yyval.node = build_tree_list (yyvsp[-2].node, NULL_TREE); *************** case 93: *** 3223,3229 **** ; break;} case 94: ! #line 976 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyerror ("';' expected"); yyval.node = build_tree_list (yyvsp[-3].node, NULL_TREE); --- 3224,3230 ---- ; break;} case 94: ! #line 976 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyerror ("';' expected"); yyval.node = build_tree_list (yyvsp[-3].node, NULL_TREE); *************** case 94: *** 3231,3245 **** ; break;} case 96: ! #line 986 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_unresolved_array_type (yyvsp[-2].node); ; break;} case 97: ! #line 988 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Invalid declaration"); DRECOVER(vdi);; break;} case 98: ! #line 990 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { tree node = java_lval.node; if (node && (TREE_CODE (node) == INTEGER_CST --- 3232,3246 ---- ; break;} case 96: ! #line 986 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_unresolved_array_type (yyvsp[-2].node); ; break;} case 97: ! #line 988 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Invalid declaration"); DRECOVER(vdi);; break;} case 98: ! #line 990 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { tree node = java_lval.node; if (node && (TREE_CODE (node) == INTEGER_CST *************** case 98: *** 3251,3261 **** ; break;} case 99: ! #line 1000 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Unbalanced ']'"); DRECOVER(vdi);; break;} case 102: ! #line 1011 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { current_function_decl = yyvsp[0].node; if (current_function_decl --- 3252,3262 ---- ; break;} case 99: ! #line 1000 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Unbalanced ']'"); DRECOVER(vdi);; break;} case 102: ! #line 1011 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { current_function_decl = yyvsp[0].node; if (current_function_decl *************** case 102: *** 3266,3333 **** ; break;} case 103: ! #line 1020 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { finish_method_declaration (yyvsp[0].node); ; break;} case 104: ! #line 1022 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {YYNOT_TWICE yyerror ("'{' expected"); RECOVER;; break;} case 105: ! #line 1027 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = method_header (0, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ; break;} case 106: ! #line 1029 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = method_header (0, void_type_node, yyvsp[-1].node, yyvsp[0].node); ; break;} case 107: ! #line 1031 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = method_header (yyvsp[-3].value, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ; break;} case 108: ! #line 1033 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = method_header (yyvsp[-3].value, void_type_node, yyvsp[-1].node, yyvsp[0].node); ; break;} case 109: ! #line 1035 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyerror ("Invalid method declaration, method name required"); RECOVER; ; break;} case 110: ! #line 1040 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {RECOVER;; break;} case 111: ! #line 1042 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Identifier expected"); RECOVER;; break;} case 112: ! #line 1044 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Identifier expected"); RECOVER;; break;} case 113: ! #line 1046 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyerror ("Invalid method declaration, return type required"); RECOVER; ; break;} case 114: ! #line 1054 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { ctxp->formal_parameter_number = 0; yyval.node = method_declarator (yyvsp[-2].node, NULL_TREE); ; break;} case 115: ! #line 1059 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = method_declarator (yyvsp[-3].node, yyvsp[-1].node); ; break;} case 116: ! #line 1061 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { EXPR_WFL_LINECOL (wfl_operator) = yyvsp[-1].operator.location; TREE_PURPOSE (yyvsp[-2].node) = --- 3267,3334 ---- ; break;} case 103: ! #line 1020 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { finish_method_declaration (yyvsp[0].node); ; break;} case 104: ! #line 1022 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {YYNOT_TWICE yyerror ("'{' expected"); RECOVER;; break;} case 105: ! #line 1027 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = method_header (0, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ; break;} case 106: ! #line 1029 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = method_header (0, void_type_node, yyvsp[-1].node, yyvsp[0].node); ; break;} case 107: ! #line 1031 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = method_header (yyvsp[-3].value, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ; break;} case 108: ! #line 1033 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = method_header (yyvsp[-3].value, void_type_node, yyvsp[-1].node, yyvsp[0].node); ; break;} case 109: ! #line 1035 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyerror ("Invalid method declaration, method name required"); RECOVER; ; break;} case 110: ! #line 1040 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {RECOVER;; break;} case 111: ! #line 1042 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Identifier expected"); RECOVER;; break;} case 112: ! #line 1044 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Identifier expected"); RECOVER;; break;} case 113: ! #line 1046 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyerror ("Invalid method declaration, return type required"); RECOVER; ; break;} case 114: ! #line 1054 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { ctxp->formal_parameter_number = 0; yyval.node = method_declarator (yyvsp[-2].node, NULL_TREE); ; break;} case 115: ! #line 1059 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = method_declarator (yyvsp[-3].node, yyvsp[-1].node); ; break;} case 116: ! #line 1061 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { EXPR_WFL_LINECOL (wfl_operator) = yyvsp[-1].operator.location; TREE_PURPOSE (yyvsp[-2].node) = *************** case 116: *** 3338,3396 **** ; break;} case 117: ! #line 1070 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("')' expected"); DRECOVER(method_declarator);; break;} case 118: ! #line 1072 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("']' expected"); RECOVER;; break;} case 119: ! #line 1077 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { ctxp->formal_parameter_number = 1; ; break;} case 120: ! #line 1081 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { ctxp->formal_parameter_number += 1; yyval.node = chainon (yyvsp[-2].node, yyvsp[0].node); ; break;} case 121: ! #line 1086 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyerror ("Missing formal parameter term"); RECOVER; ; break;} case 122: ! #line 1091 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_tree_list (yyvsp[0].node, yyvsp[-1].node); ; break;} case 123: ! #line 1095 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_tree_list (yyvsp[0].node, yyvsp[-1].node); ARG_FINAL_P (yyval.node) = 1; ; break;} case 124: ! #line 1100 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyerror ("Missing identifier"); RECOVER; yyval.node = NULL_TREE; ; break;} case 125: ! #line 1105 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyerror ("Missing identifier"); RECOVER; yyval.node = NULL_TREE; ; break;} case 126: ! #line 1113 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { check_modifiers ("Illegal modifier `%s'. Only `final' was expected here", yyvsp[0].value, ACC_FINAL); --- 3339,3397 ---- ; break;} case 117: ! #line 1070 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("')' expected"); DRECOVER(method_declarator);; break;} case 118: ! #line 1072 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("']' expected"); RECOVER;; break;} case 119: ! #line 1077 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { ctxp->formal_parameter_number = 1; ; break;} case 120: ! #line 1081 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { ctxp->formal_parameter_number += 1; yyval.node = chainon (yyvsp[-2].node, yyvsp[0].node); ; break;} case 121: ! #line 1086 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyerror ("Missing formal parameter term"); RECOVER; ; break;} case 122: ! #line 1091 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_tree_list (yyvsp[0].node, yyvsp[-1].node); ; break;} case 123: ! #line 1095 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_tree_list (yyvsp[0].node, yyvsp[-1].node); ARG_FINAL_P (yyval.node) = 1; ; break;} case 124: ! #line 1100 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyerror ("Missing identifier"); RECOVER; yyval.node = NULL_TREE; ; break;} case 125: ! #line 1105 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyerror ("Missing identifier"); RECOVER; yyval.node = NULL_TREE; ; break;} case 126: ! #line 1113 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { check_modifiers ("Illegal modifier `%s'. Only `final' was expected here", yyvsp[0].value, ACC_FINAL); *************** case 126: *** 3399,3433 **** ; break;} case 127: ! #line 1122 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = NULL_TREE; ; break;} case 128: ! #line 1124 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = yyvsp[0].node; ; break;} case 129: ! #line 1126 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing class type term"); RECOVER;; break;} case 130: ! #line 1131 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_tree_list (yyvsp[0].node, yyvsp[0].node); ; break;} case 131: ! #line 1133 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = tree_cons (yyvsp[0].node, yyvsp[0].node, yyvsp[-2].node); ; break;} case 132: ! #line 1135 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing class type term"); RECOVER;; break;} case 134: ! #line 1140 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = NULL_TREE; ; break;} case 135: ! #line 1146 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { TREE_CHAIN (yyvsp[0].node) = CPC_STATIC_INITIALIZER_STMT (ctxp); SET_CPC_STATIC_INITIALIZER_STMT (ctxp, yyvsp[0].node); --- 3400,3434 ---- ; break;} case 127: ! #line 1122 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = NULL_TREE; ; break;} case 128: ! #line 1124 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = yyvsp[0].node; ; break;} case 129: ! #line 1126 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing class type term"); RECOVER;; break;} case 130: ! #line 1131 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_tree_list (yyvsp[0].node, yyvsp[0].node); ; break;} case 131: ! #line 1133 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = tree_cons (yyvsp[0].node, yyvsp[0].node, yyvsp[-2].node); ; break;} case 132: ! #line 1135 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing class type term"); RECOVER;; break;} case 134: ! #line 1140 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = NULL_TREE; ; break;} case 135: ! #line 1146 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { TREE_CHAIN (yyvsp[0].node) = CPC_STATIC_INITIALIZER_STMT (ctxp); SET_CPC_STATIC_INITIALIZER_STMT (ctxp, yyvsp[0].node); *************** case 135: *** 3435,3441 **** ; break;} case 136: ! #line 1155 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { check_modifiers ("Illegal modifier `%s' for static initializer", yyvsp[0].value, ACC_STATIC); /* Can't have a static initializer in an innerclass */ --- 3436,3442 ---- ; break;} case 136: ! #line 1155 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { check_modifiers ("Illegal modifier `%s' for static initializer", yyvsp[0].value, ACC_STATIC); /* Can't have a static initializer in an innerclass */ *************** case 136: *** 3449,3504 **** ; break;} case 137: ! #line 1171 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { current_function_decl = yyvsp[0].node; source_start_java_method (current_function_decl); ; break;} case 138: ! #line 1176 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { finish_method_declaration (yyvsp[0].node); ; break;} case 139: ! #line 1181 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = method_header (0, NULL_TREE, yyvsp[-1].node, yyvsp[0].node); ; break;} case 140: ! #line 1183 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = method_header (yyvsp[-2].value, NULL_TREE, yyvsp[-1].node, yyvsp[0].node); ; break;} case 141: ! #line 1188 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { ctxp->formal_parameter_number = 0; yyval.node = method_declarator (yyvsp[-2].node, NULL_TREE); ; break;} case 142: ! #line 1193 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = method_declarator (yyvsp[-3].node, yyvsp[-1].node); ; break;} case 143: ! #line 1201 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { BLOCK_EXPR_BODY (yyvsp[0].node) = empty_stmt_node; yyval.node = yyvsp[0].node; ; break;} case 144: ! #line 1206 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = yyvsp[0].node; ; break;} case 145: ! #line 1208 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = yyvsp[0].node; ; break;} case 146: ! #line 1210 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = yyvsp[0].node; ; break;} case 148: ! #line 1220 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_method_invocation (yyvsp[-3].node, NULL_TREE); yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-3].node), yyval.node); --- 3450,3505 ---- ; break;} case 137: ! #line 1171 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { current_function_decl = yyvsp[0].node; source_start_java_method (current_function_decl); ; break;} case 138: ! #line 1176 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { finish_method_declaration (yyvsp[0].node); ; break;} case 139: ! #line 1181 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = method_header (0, NULL_TREE, yyvsp[-1].node, yyvsp[0].node); ; break;} case 140: ! #line 1183 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = method_header (yyvsp[-2].value, NULL_TREE, yyvsp[-1].node, yyvsp[0].node); ; break;} case 141: ! #line 1188 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { ctxp->formal_parameter_number = 0; yyval.node = method_declarator (yyvsp[-2].node, NULL_TREE); ; break;} case 142: ! #line 1193 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = method_declarator (yyvsp[-3].node, yyvsp[-1].node); ; break;} case 143: ! #line 1201 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { BLOCK_EXPR_BODY (yyvsp[0].node) = empty_stmt_node; yyval.node = yyvsp[0].node; ; break;} case 144: ! #line 1206 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = yyvsp[0].node; ; break;} case 145: ! #line 1208 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = yyvsp[0].node; ; break;} case 146: ! #line 1210 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = yyvsp[0].node; ; break;} case 148: ! #line 1220 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_method_invocation (yyvsp[-3].node, NULL_TREE); yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-3].node), yyval.node); *************** case 148: *** 3506,3512 **** ; break;} case 149: ! #line 1226 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_method_invocation (yyvsp[-4].node, yyvsp[-2].node); yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-4].node), yyval.node); --- 3507,3513 ---- ; break;} case 149: ! #line 1226 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_method_invocation (yyvsp[-4].node, yyvsp[-2].node); yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-4].node), yyval.node); *************** case 149: *** 3514,3528 **** ; break;} case 150: ! #line 1234 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyval.node = parse_jdk1_1_error ("explicit constructor invocation"); ; break;} case 151: ! #line 1236 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyval.node = parse_jdk1_1_error ("explicit constructor invocation"); ; break;} case 152: ! #line 1241 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { tree wfl = build_wfl_node (this_identifier_node); EXPR_WFL_LINECOL (wfl) = yyvsp[0].operator.location; --- 3515,3529 ---- ; break;} case 150: ! #line 1234 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyval.node = parse_jdk1_1_error ("explicit constructor invocation"); ; break;} case 151: ! #line 1236 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyval.node = parse_jdk1_1_error ("explicit constructor invocation"); ; break;} case 152: ! #line 1241 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { tree wfl = build_wfl_node (this_identifier_node); EXPR_WFL_LINECOL (wfl) = yyvsp[0].operator.location; *************** case 152: *** 3530,3536 **** ; break;} case 153: ! #line 1247 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { tree wfl = build_wfl_node (super_identifier_node); EXPR_WFL_LINECOL (wfl) = yyvsp[0].operator.location; --- 3531,3537 ---- ; break;} case 153: ! #line 1247 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { tree wfl = build_wfl_node (super_identifier_node); EXPR_WFL_LINECOL (wfl) = yyvsp[0].operator.location; *************** case 153: *** 3538,3646 **** ; break;} case 154: ! #line 1258 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { create_interface (0, yyvsp[0].node, NULL_TREE); ; break;} case 156: ! #line 1261 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { create_interface (yyvsp[-2].value, yyvsp[0].node, NULL_TREE); ; break;} case 158: ! #line 1264 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { create_interface (0, yyvsp[-1].node, yyvsp[0].node); ; break;} case 160: ! #line 1267 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { create_interface (yyvsp[-3].value, yyvsp[-1].node, yyvsp[0].node); ; break;} case 162: ! #line 1270 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'{' expected"); RECOVER;; break;} case 163: ! #line 1272 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'{' expected"); RECOVER;; break;} case 164: ! #line 1277 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { ctxp->interface_number = 1; yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE); ; break;} case 165: ! #line 1282 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { ctxp->interface_number++; yyval.node = chainon (yyvsp[-2].node, build_tree_list (yyvsp[0].node, NULL_TREE)); ; break;} case 166: ! #line 1287 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Invalid interface type"); RECOVER;; break;} case 167: ! #line 1289 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 168: ! #line 1294 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = NULL_TREE; ; break;} case 169: ! #line 1296 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = NULL_TREE; ; break;} case 174: ! #line 1308 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { end_class_declaration (1); ; break;} case 175: ! #line 1310 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { end_class_declaration (1); ; break;} case 177: ! #line 1319 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { check_abstract_method_header (yyvsp[-1].node); current_function_decl = NULL_TREE; /* FIXME ? */ ; break;} case 178: ! #line 1324 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 179: ! #line 1330 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_new_array_init (yyvsp[-1].operator.location, NULL_TREE); ; break;} case 180: ! #line 1332 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_new_array_init (yyvsp[-2].operator.location, yyvsp[-1].node); ; break;} case 181: ! #line 1334 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_new_array_init (yyvsp[-3].operator.location, yyvsp[-2].node); ; break;} case 182: ! #line 1339 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = tree_cons (maybe_build_array_element_wfl (yyvsp[0].node), yyvsp[0].node, NULL_TREE); ; break;} case 183: ! #line 1344 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = tree_cons (maybe_build_array_element_wfl (yyvsp[0].node), yyvsp[0].node, yyvsp[-2].node); ; break;} case 184: ! #line 1348 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 185: ! #line 1354 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { /* Store the location of the `}' when doing xrefs */ if (current_function_decl && flag_emit_xref) --- 3539,3647 ---- ; break;} case 154: ! #line 1258 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { create_interface (0, yyvsp[0].node, NULL_TREE); ; break;} case 156: ! #line 1261 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { create_interface (yyvsp[-2].value, yyvsp[0].node, NULL_TREE); ; break;} case 158: ! #line 1264 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { create_interface (0, yyvsp[-1].node, yyvsp[0].node); ; break;} case 160: ! #line 1267 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { create_interface (yyvsp[-3].value, yyvsp[-1].node, yyvsp[0].node); ; break;} case 162: ! #line 1270 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'{' expected"); RECOVER;; break;} case 163: ! #line 1272 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'{' expected"); RECOVER;; break;} case 164: ! #line 1277 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { ctxp->interface_number = 1; yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE); ; break;} case 165: ! #line 1282 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { ctxp->interface_number++; yyval.node = chainon (yyvsp[-2].node, build_tree_list (yyvsp[0].node, NULL_TREE)); ; break;} case 166: ! #line 1287 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Invalid interface type"); RECOVER;; break;} case 167: ! #line 1289 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 168: ! #line 1294 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = NULL_TREE; ; break;} case 169: ! #line 1296 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = NULL_TREE; ; break;} case 174: ! #line 1308 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { end_class_declaration (1); ; break;} case 175: ! #line 1310 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { end_class_declaration (1); ; break;} case 177: ! #line 1319 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { check_abstract_method_header (yyvsp[-1].node); current_function_decl = NULL_TREE; /* FIXME ? */ ; break;} case 178: ! #line 1324 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 179: ! #line 1330 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_new_array_init (yyvsp[-1].operator.location, NULL_TREE); ; break;} case 180: ! #line 1332 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_new_array_init (yyvsp[-2].operator.location, yyvsp[-1].node); ; break;} case 181: ! #line 1334 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_new_array_init (yyvsp[-3].operator.location, yyvsp[-2].node); ; break;} case 182: ! #line 1339 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = tree_cons (maybe_build_array_element_wfl (yyvsp[0].node), yyvsp[0].node, NULL_TREE); ; break;} case 183: ! #line 1344 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = tree_cons (maybe_build_array_element_wfl (yyvsp[0].node), yyvsp[0].node, yyvsp[-2].node); ; break;} case 184: ! #line 1348 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 185: ! #line 1354 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { /* Store the location of the `}' when doing xrefs */ if (current_function_decl && flag_emit_xref) *************** case 185: *** 3650,3664 **** ; break;} case 186: ! #line 1362 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = yyvsp[0].node; ; break;} case 187: ! #line 1367 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { enter_block (); ; break;} case 188: ! #line 1372 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { maybe_absorb_scoping_blocks (); /* Store the location of the `}' when doing xrefs */ --- 3651,3665 ---- ; break;} case 186: ! #line 1362 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = yyvsp[0].node; ; break;} case 187: ! #line 1367 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { enter_block (); ; break;} case 188: ! #line 1372 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { maybe_absorb_scoping_blocks (); /* Store the location of the `}' when doing xrefs */ *************** case 188: *** 3671,3704 **** ; break;} case 192: ! #line 1392 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { java_method_add_stmt (current_function_decl, yyvsp[0].node); ; break;} case 193: ! #line 1394 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { LOCAL_CLASS_P (TREE_TYPE (GET_CPC ())) = 1; end_class_declaration (1); ; break;} case 195: ! #line 1406 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { declare_local_variables (0, yyvsp[-1].node, yyvsp[0].node); ; break;} case 196: ! #line 1408 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { declare_local_variables (yyvsp[-2].value, yyvsp[-1].node, yyvsp[0].node); ; break;} case 202: ! #line 1418 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = exit_block (); ; break;} case 207: ! #line 1427 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = exit_block (); ; break;} case 219: ! #line 1446 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { if (flag_extraneous_semicolon) { --- 3672,3705 ---- ; break;} case 192: ! #line 1392 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { java_method_add_stmt (current_function_decl, yyvsp[0].node); ; break;} case 193: ! #line 1394 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { LOCAL_CLASS_P (TREE_TYPE (GET_CPC ())) = 1; end_class_declaration (1); ; break;} case 195: ! #line 1406 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { declare_local_variables (0, yyvsp[-1].node, yyvsp[0].node); ; break;} case 196: ! #line 1408 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { declare_local_variables (yyvsp[-2].value, yyvsp[-1].node, yyvsp[0].node); ; break;} case 202: ! #line 1418 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = exit_block (); ; break;} case 207: ! #line 1427 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = exit_block (); ; break;} case 219: ! #line 1446 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { if (flag_extraneous_semicolon) { *************** case 219: *** 3709,3715 **** ; break;} case 220: ! #line 1458 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_labeled_block (EXPR_WFL_LINECOL (yyvsp[-1].node), EXPR_WFL_NODE (yyvsp[-1].node)); --- 3710,3716 ---- ; break;} case 220: ! #line 1458 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_labeled_block (EXPR_WFL_LINECOL (yyvsp[-1].node), EXPR_WFL_NODE (yyvsp[-1].node)); *************** case 220: *** 3719,3737 **** ; break;} case 221: ! #line 1469 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = finish_labeled_statement (yyvsp[-1].node, yyvsp[0].node); ; break;} case 222: ! #line 1471 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("':' expected"); RECOVER;; break;} case 223: ! #line 1476 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = finish_labeled_statement (yyvsp[-1].node, yyvsp[0].node); ; break;} case 224: ! #line 1483 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { /* We have a statement. Generate a WFL around it so we can debug it */ --- 3720,3738 ---- ; break;} case 221: ! #line 1469 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = finish_labeled_statement (yyvsp[-1].node, yyvsp[0].node); ; break;} case 222: ! #line 1471 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("':' expected"); RECOVER;; break;} case 223: ! #line 1476 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = finish_labeled_statement (yyvsp[-1].node, yyvsp[0].node); ; break;} case 224: ! #line 1483 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { /* We have a statement. Generate a WFL around it so we can debug it */ *************** case 224: *** 3742,3844 **** ; break;} case 225: ! #line 1492 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { YYNOT_TWICE yyerror ("Invalid expression statement"); DRECOVER (expr_stmt); ; break;} case 226: ! #line 1497 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { YYNOT_TWICE yyerror ("Invalid expression statement"); DRECOVER (expr_stmt); ; break;} case 227: ! #line 1502 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { YYNOT_TWICE yyerror ("Invalid expression statement"); DRECOVER (expr_stmt); ; break;} case 228: ! #line 1507 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("')' expected"); RECOVER;; break;} case 229: ! #line 1509 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { parse_ctor_invocation_error (); RECOVER; ; break;} case 230: ! #line 1514 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("')' expected"); RECOVER;; break;} case 231: ! #line 1516 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { parse_ctor_invocation_error (); RECOVER; ; break;} case 232: ! #line 1521 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'(' expected"); RECOVER;; break;} case 233: ! #line 1523 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("')' expected"); RECOVER;; break;} case 234: ! #line 1525 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("')' expected"); RECOVER;; break;} case 235: ! #line 1527 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 236: ! #line 1529 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 244: ! #line 1544 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_if_else_statement (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node, NULL_TREE); ; break;} case 245: ! #line 1549 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'(' expected"); RECOVER;; break;} case 246: ! #line 1551 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 247: ! #line 1553 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("')' expected"); RECOVER;; break;} case 248: ! #line 1558 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_if_else_statement (yyvsp[-5].operator.location, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ; break;} case 249: ! #line 1563 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_if_else_statement (yyvsp[-5].operator.location, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ; break;} case 250: ! #line 1568 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { enter_block (); ; break;} case 251: ! #line 1572 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { /* Make into "proper list" of COMPOUND_EXPRs. I.e. make the last statment also have its own --- 3743,3845 ---- ; break;} case 225: ! #line 1492 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { YYNOT_TWICE yyerror ("Invalid expression statement"); DRECOVER (expr_stmt); ; break;} case 226: ! #line 1497 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { YYNOT_TWICE yyerror ("Invalid expression statement"); DRECOVER (expr_stmt); ; break;} case 227: ! #line 1502 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { YYNOT_TWICE yyerror ("Invalid expression statement"); DRECOVER (expr_stmt); ; break;} case 228: ! #line 1507 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("')' expected"); RECOVER;; break;} case 229: ! #line 1509 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { parse_ctor_invocation_error (); RECOVER; ; break;} case 230: ! #line 1514 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("')' expected"); RECOVER;; break;} case 231: ! #line 1516 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { parse_ctor_invocation_error (); RECOVER; ; break;} case 232: ! #line 1521 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'(' expected"); RECOVER;; break;} case 233: ! #line 1523 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("')' expected"); RECOVER;; break;} case 234: ! #line 1525 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("')' expected"); RECOVER;; break;} case 235: ! #line 1527 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 236: ! #line 1529 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 244: ! #line 1544 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_if_else_statement (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node, NULL_TREE); ; break;} case 245: ! #line 1549 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'(' expected"); RECOVER;; break;} case 246: ! #line 1551 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 247: ! #line 1553 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("')' expected"); RECOVER;; break;} case 248: ! #line 1558 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_if_else_statement (yyvsp[-5].operator.location, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ; break;} case 249: ! #line 1563 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_if_else_statement (yyvsp[-5].operator.location, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ; break;} case 250: ! #line 1568 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { enter_block (); ; break;} case 251: ! #line 1572 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { /* Make into "proper list" of COMPOUND_EXPRs. I.e. make the last statment also have its own *************** case 251: *** 3849,3890 **** ; break;} case 252: ! #line 1584 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build (SWITCH_EXPR, NULL_TREE, yyvsp[-1].node, NULL_TREE); EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location; ; break;} case 253: ! #line 1589 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'(' expected"); RECOVER;; break;} case 254: ! #line 1591 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term or ')'"); DRECOVER(switch_statement);; break;} case 255: ! #line 1593 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'{' expected"); RECOVER;; break;} case 256: ! #line 1601 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = NULL_TREE; ; break;} case 257: ! #line 1603 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = NULL_TREE; ; break;} case 258: ! #line 1605 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = NULL_TREE; ; break;} case 259: ! #line 1607 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = NULL_TREE; ; break;} case 265: ! #line 1626 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { tree lab = build1 (CASE_EXPR, NULL_TREE, yyvsp[-1].node); EXPR_WFL_LINECOL (lab) = yyvsp[-2].operator.location; --- 3850,3891 ---- ; break;} case 252: ! #line 1584 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build (SWITCH_EXPR, NULL_TREE, yyvsp[-1].node, NULL_TREE); EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location; ; break;} case 253: ! #line 1589 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'(' expected"); RECOVER;; break;} case 254: ! #line 1591 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term or ')'"); DRECOVER(switch_statement);; break;} case 255: ! #line 1593 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'{' expected"); RECOVER;; break;} case 256: ! #line 1601 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = NULL_TREE; ; break;} case 257: ! #line 1603 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = NULL_TREE; ; break;} case 258: ! #line 1605 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = NULL_TREE; ; break;} case 259: ! #line 1607 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = NULL_TREE; ; break;} case 265: ! #line 1626 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { tree lab = build1 (CASE_EXPR, NULL_TREE, yyvsp[-1].node); EXPR_WFL_LINECOL (lab) = yyvsp[-2].operator.location; *************** case 265: *** 3892,3898 **** ; break;} case 266: ! #line 1632 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { tree lab = build (DEFAULT_EXPR, NULL_TREE, NULL_TREE); EXPR_WFL_LINECOL (lab) = yyvsp[-1].operator.location; --- 3893,3899 ---- ; break;} case 266: ! #line 1632 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { tree lab = build (DEFAULT_EXPR, NULL_TREE, NULL_TREE); EXPR_WFL_LINECOL (lab) = yyvsp[-1].operator.location; *************** case 266: *** 3900,3956 **** ; break;} case 267: ! #line 1638 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing or invalid constant expression"); RECOVER;; break;} case 268: ! #line 1640 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("':' expected"); RECOVER;; break;} case 269: ! #line 1642 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("':' expected"); RECOVER;; break;} case 270: ! #line 1647 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { tree body = build_loop_body (yyvsp[-2].operator.location, yyvsp[-1].node, 0); yyval.node = build_new_loop (body); ; break;} case 271: ! #line 1655 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = finish_loop_body (0, NULL_TREE, yyvsp[0].node, 0); ; break;} case 272: ! #line 1657 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {YYERROR_NOW; yyerror ("'(' expected"); RECOVER;; break;} case 273: ! #line 1659 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term and ')' expected"); RECOVER;; break;} case 274: ! #line 1661 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("')' expected"); RECOVER;; break;} case 275: ! #line 1666 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = finish_loop_body (0, NULL_TREE, yyvsp[0].node, 0); ; break;} case 276: ! #line 1671 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { tree body = build_loop_body (0, NULL_TREE, 1); yyval.node = build_new_loop (body); ; break;} case 277: ! #line 1680 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = finish_loop_body (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[-5].node, 1); ; break;} case 278: ! #line 1685 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-4].node)) == 'c') yyvsp[-4].node = build_wfl_node (yyvsp[-4].node); --- 3901,3957 ---- ; break;} case 267: ! #line 1638 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing or invalid constant expression"); RECOVER;; break;} case 268: ! #line 1640 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("':' expected"); RECOVER;; break;} case 269: ! #line 1642 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("':' expected"); RECOVER;; break;} case 270: ! #line 1647 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { tree body = build_loop_body (yyvsp[-2].operator.location, yyvsp[-1].node, 0); yyval.node = build_new_loop (body); ; break;} case 271: ! #line 1655 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = finish_loop_body (0, NULL_TREE, yyvsp[0].node, 0); ; break;} case 272: ! #line 1657 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {YYERROR_NOW; yyerror ("'(' expected"); RECOVER;; break;} case 273: ! #line 1659 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term and ')' expected"); RECOVER;; break;} case 274: ! #line 1661 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("')' expected"); RECOVER;; break;} case 275: ! #line 1666 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = finish_loop_body (0, NULL_TREE, yyvsp[0].node, 0); ; break;} case 276: ! #line 1671 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { tree body = build_loop_body (0, NULL_TREE, 1); yyval.node = build_new_loop (body); ; break;} case 277: ! #line 1680 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = finish_loop_body (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[-5].node, 1); ; break;} case 278: ! #line 1685 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-4].node)) == 'c') yyvsp[-4].node = build_wfl_node (yyvsp[-4].node); *************** case 278: *** 3958,3964 **** ; break;} case 279: ! #line 1691 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = finish_for_loop (0, NULL_TREE, yyvsp[-2].node, yyvsp[0].node); /* We have not condition, so we get rid of the EXIT_EXPR */ --- 3959,3965 ---- ; break;} case 279: ! #line 1691 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = finish_for_loop (0, NULL_TREE, yyvsp[-2].node, yyvsp[0].node); /* We have not condition, so we get rid of the EXIT_EXPR */ *************** case 279: *** 3967,3989 **** ; break;} case 280: ! #line 1698 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Invalid control expression"); RECOVER;; break;} case 281: ! #line 1700 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Invalid update expression"); RECOVER;; break;} case 282: ! #line 1702 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Invalid update expression"); RECOVER;; break;} case 283: ! #line 1707 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = finish_for_loop (EXPR_WFL_LINECOL (yyvsp[-4].node), yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node);; break;} case 284: ! #line 1709 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = finish_for_loop (0, NULL_TREE, yyvsp[-2].node, yyvsp[0].node); /* We have not condition, so we get rid of the EXIT_EXPR */ --- 3968,3990 ---- ; break;} case 280: ! #line 1698 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Invalid control expression"); RECOVER;; break;} case 281: ! #line 1700 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Invalid update expression"); RECOVER;; break;} case 282: ! #line 1702 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Invalid update expression"); RECOVER;; break;} case 283: ! #line 1707 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = finish_for_loop (EXPR_WFL_LINECOL (yyvsp[-4].node), yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node);; break;} case 284: ! #line 1709 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = finish_for_loop (0, NULL_TREE, yyvsp[-2].node, yyvsp[0].node); /* We have not condition, so we get rid of the EXIT_EXPR */ *************** case 284: *** 3992,3998 **** ; break;} case 285: ! #line 1719 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { /* This scope defined for local variable that may be defined within the scope of the for loop */ --- 3993,3999 ---- ; break;} case 285: ! #line 1719 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { /* This scope defined for local variable that may be defined within the scope of the for loop */ *************** case 285: *** 4000,4014 **** ; break;} case 286: ! #line 1725 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'(' expected"); DRECOVER(for_1);; break;} case 287: ! #line 1727 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Invalid init statement"); RECOVER;; break;} case 288: ! #line 1732 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { /* We now declare the loop body. The loop is declared as a for loop. */ --- 4001,4015 ---- ; break;} case 286: ! #line 1725 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'(' expected"); DRECOVER(for_1);; break;} case 287: ! #line 1727 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Invalid init statement"); RECOVER;; break;} case 288: ! #line 1732 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { /* We now declare the loop body. The loop is declared as a for loop. */ *************** case 288: *** 4021,4031 **** ; break;} case 289: ! #line 1744 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = empty_stmt_node; ; break;} case 290: ! #line 1746 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { /* Init statement recorded within the previously defined block scope */ --- 4022,4032 ---- ; break;} case 289: ! #line 1744 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = empty_stmt_node; ; break;} case 290: ! #line 1746 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { /* Init statement recorded within the previously defined block scope */ *************** case 290: *** 4033,4039 **** ; break;} case 291: ! #line 1752 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { /* Local variable are recorded within the previously defined block scope */ --- 4034,4040 ---- ; break;} case 291: ! #line 1752 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { /* Local variable are recorded within the previously defined block scope */ *************** case 291: *** 4041,4134 **** ; break;} case 292: ! #line 1758 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("';' expected"); DRECOVER(for_init_1);; break;} case 293: ! #line 1762 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyval.node = empty_stmt_node;; break;} case 294: ! #line 1764 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_debugable_stmt (BUILD_LOCATION (), yyvsp[0].node); ; break;} case 295: ! #line 1769 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = add_stmt_to_compound (NULL_TREE, NULL_TREE, yyvsp[0].node); ; break;} case 296: ! #line 1771 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = add_stmt_to_compound (yyvsp[-2].node, NULL_TREE, yyvsp[0].node); ; break;} case 297: ! #line 1773 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 298: ! #line 1778 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_bc_statement (yyvsp[-1].operator.location, 1, NULL_TREE); ; break;} case 299: ! #line 1780 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_bc_statement (yyvsp[-2].operator.location, 1, yyvsp[-1].node); ; break;} case 300: ! #line 1782 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 301: ! #line 1784 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 302: ! #line 1789 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_bc_statement (yyvsp[-1].operator.location, 0, NULL_TREE); ; break;} case 303: ! #line 1791 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_bc_statement (yyvsp[-2].operator.location, 0, yyvsp[-1].node); ; break;} case 304: ! #line 1793 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 305: ! #line 1795 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 306: ! #line 1800 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_return (yyvsp[-1].operator.location, NULL_TREE); ; break;} case 307: ! #line 1802 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_return (yyvsp[-2].operator.location, yyvsp[-1].node); ; break;} case 308: ! #line 1804 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 309: ! #line 1806 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 310: ! #line 1811 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build1 (THROW_EXPR, NULL_TREE, yyvsp[-1].node); EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location; ; break;} case 311: ! #line 1816 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 312: ! #line 1818 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 313: ! #line 1823 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build (SYNCHRONIZED_EXPR, NULL_TREE, yyvsp[-2].node, yyvsp[0].node); EXPR_WFL_LINECOL (yyval.node) = --- 4042,4135 ---- ; break;} case 292: ! #line 1758 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("';' expected"); DRECOVER(for_init_1);; break;} case 293: ! #line 1762 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyval.node = empty_stmt_node;; break;} case 294: ! #line 1764 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_debugable_stmt (BUILD_LOCATION (), yyvsp[0].node); ; break;} case 295: ! #line 1769 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = add_stmt_to_compound (NULL_TREE, NULL_TREE, yyvsp[0].node); ; break;} case 296: ! #line 1771 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = add_stmt_to_compound (yyvsp[-2].node, NULL_TREE, yyvsp[0].node); ; break;} case 297: ! #line 1773 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 298: ! #line 1778 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_bc_statement (yyvsp[-1].operator.location, 1, NULL_TREE); ; break;} case 299: ! #line 1780 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_bc_statement (yyvsp[-2].operator.location, 1, yyvsp[-1].node); ; break;} case 300: ! #line 1782 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 301: ! #line 1784 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 302: ! #line 1789 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_bc_statement (yyvsp[-1].operator.location, 0, NULL_TREE); ; break;} case 303: ! #line 1791 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_bc_statement (yyvsp[-2].operator.location, 0, yyvsp[-1].node); ; break;} case 304: ! #line 1793 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 305: ! #line 1795 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 306: ! #line 1800 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_return (yyvsp[-1].operator.location, NULL_TREE); ; break;} case 307: ! #line 1802 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_return (yyvsp[-2].operator.location, yyvsp[-1].node); ; break;} case 308: ! #line 1804 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 309: ! #line 1806 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 310: ! #line 1811 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build1 (THROW_EXPR, NULL_TREE, yyvsp[-1].node); EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location; ; break;} case 311: ! #line 1816 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 312: ! #line 1818 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("';' expected"); RECOVER;; break;} case 313: ! #line 1823 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build (SYNCHRONIZED_EXPR, NULL_TREE, yyvsp[-2].node, yyvsp[0].node); EXPR_WFL_LINECOL (yyval.node) = *************** case 313: *** 4136,4158 **** ; break;} case 314: ! #line 1829 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'{' expected"); RECOVER;; break;} case 315: ! #line 1831 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'(' expected"); RECOVER;; break;} case 316: ! #line 1833 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 317: ! #line 1835 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 318: ! #line 1840 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { check_modifiers ( "Illegal modifier `%s'. Only `synchronized' was expected here", --- 4137,4159 ---- ; break;} case 314: ! #line 1829 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'{' expected"); RECOVER;; break;} case 315: ! #line 1831 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'(' expected"); RECOVER;; break;} case 316: ! #line 1833 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 317: ! #line 1835 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 318: ! #line 1840 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { check_modifiers ( "Illegal modifier `%s'. Only `synchronized' was expected here", *************** case 318: *** 4163,4195 **** ; break;} case 319: ! #line 1852 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_try_statement (yyvsp[-2].operator.location, yyvsp[-1].node, yyvsp[0].node); ; break;} case 320: ! #line 1854 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_try_finally_statement (yyvsp[-2].operator.location, yyvsp[-1].node, yyvsp[0].node); ; break;} case 321: ! #line 1856 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_try_finally_statement (yyvsp[-3].operator.location, build_try_statement (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[-1].node), yyvsp[0].node); ; break;} case 322: ! #line 1861 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'{' expected"); DRECOVER (try_statement);; break;} case 324: ! #line 1867 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { TREE_CHAIN (yyvsp[0].node) = yyvsp[-1].node; yyval.node = yyvsp[0].node; ; break;} case 325: ! #line 1875 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { java_method_add_stmt (current_function_decl, yyvsp[0].node); exit_block (); --- 4164,4196 ---- ; break;} case 319: ! #line 1852 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_try_statement (yyvsp[-2].operator.location, yyvsp[-1].node, yyvsp[0].node); ; break;} case 320: ! #line 1854 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_try_finally_statement (yyvsp[-2].operator.location, yyvsp[-1].node, yyvsp[0].node); ; break;} case 321: ! #line 1856 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_try_finally_statement (yyvsp[-3].operator.location, build_try_statement (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[-1].node), yyvsp[0].node); ; break;} case 322: ! #line 1861 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'{' expected"); DRECOVER (try_statement);; break;} case 324: ! #line 1867 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { TREE_CHAIN (yyvsp[0].node) = yyvsp[-1].node; yyval.node = yyvsp[0].node; ; break;} case 325: ! #line 1875 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { java_method_add_stmt (current_function_decl, yyvsp[0].node); exit_block (); *************** case 325: *** 4197,4203 **** ; break;} case 326: ! #line 1883 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { /* We add a block to define a scope for formal_parameter (CCBP). The formal parameter is --- 4198,4204 ---- ; break;} case 326: ! #line 1883 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { /* We add a block to define a scope for formal_parameter (CCBP). The formal parameter is *************** case 326: *** 4215,4302 **** ; break;} case 327: ! #line 1899 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'(' expected"); RECOVER; yyval.node = NULL_TREE;; break;} case 328: ! #line 1901 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyerror ("Missing term or ')' expected"); RECOVER; yyval.node = NULL_TREE; ; break;} case 329: ! #line 1906 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER; yyval.node = NULL_TREE;; break;} case 330: ! #line 1911 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = yyvsp[0].node; ; break;} case 331: ! #line 1913 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'{' expected"); RECOVER; ; break;} case 335: ! #line 1925 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_this (yyvsp[0].operator.location); ; break;} case 336: ! #line 1927 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyval.node = yyvsp[-1].node;; break;} case 342: ! #line 1937 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { tree wfl = build_wfl_node (this_identifier_node); yyval.node = make_qualified_primary (yyvsp[-2].node, wfl, EXPR_WFL_LINECOL (yyvsp[-2].node)); ; break;} case 343: ! #line 1942 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("')' expected"); RECOVER;; break;} case 344: ! #line 1944 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'class' or 'this' expected" ); RECOVER;; break;} case 345: ! #line 1946 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'class' expected" ); RECOVER;; break;} case 346: ! #line 1948 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'class' expected" ); RECOVER;; break;} case 347: ! #line 1953 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_incomplete_class_ref (yyvsp[-1].operator.location, yyvsp[-2].node); ; break;} case 348: ! #line 1955 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_incomplete_class_ref (yyvsp[-1].operator.location, yyvsp[-2].node); ; break;} case 349: ! #line 1957 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_incomplete_class_ref (yyvsp[-1].operator.location, yyvsp[-2].node); ; break;} case 350: ! #line 1959 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_incomplete_class_ref (yyvsp[-1].operator.location, void_type_node); ; break;} case 351: ! #line 1967 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_new_invocation (yyvsp[-3].node, yyvsp[-1].node); ; break;} case 352: ! #line 1969 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_new_invocation (yyvsp[-2].node, NULL_TREE); ; break;} case 354: ! #line 1975 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { tree ctor = build_new_invocation (yyvsp[-2].node, NULL_TREE); yyval.node = make_qualified_primary (yyvsp[-3].node, ctor, --- 4216,4303 ---- ; break;} case 327: ! #line 1899 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'(' expected"); RECOVER; yyval.node = NULL_TREE;; break;} case 328: ! #line 1901 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyerror ("Missing term or ')' expected"); RECOVER; yyval.node = NULL_TREE; ; break;} case 329: ! #line 1906 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER; yyval.node = NULL_TREE;; break;} case 330: ! #line 1911 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = yyvsp[0].node; ; break;} case 331: ! #line 1913 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'{' expected"); RECOVER; ; break;} case 335: ! #line 1925 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_this (yyvsp[0].operator.location); ; break;} case 336: ! #line 1927 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyval.node = yyvsp[-1].node;; break;} case 342: ! #line 1937 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { tree wfl = build_wfl_node (this_identifier_node); yyval.node = make_qualified_primary (yyvsp[-2].node, wfl, EXPR_WFL_LINECOL (yyvsp[-2].node)); ; break;} case 343: ! #line 1942 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("')' expected"); RECOVER;; break;} case 344: ! #line 1944 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'class' or 'this' expected" ); RECOVER;; break;} case 345: ! #line 1946 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'class' expected" ); RECOVER;; break;} case 346: ! #line 1948 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'class' expected" ); RECOVER;; break;} case 347: ! #line 1953 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_incomplete_class_ref (yyvsp[-1].operator.location, yyvsp[-2].node); ; break;} case 348: ! #line 1955 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_incomplete_class_ref (yyvsp[-1].operator.location, yyvsp[-2].node); ; break;} case 349: ! #line 1957 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_incomplete_class_ref (yyvsp[-1].operator.location, yyvsp[-2].node); ; break;} case 350: ! #line 1959 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_incomplete_class_ref (yyvsp[-1].operator.location, void_type_node); ; break;} case 351: ! #line 1967 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_new_invocation (yyvsp[-3].node, yyvsp[-1].node); ; break;} case 352: ! #line 1969 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_new_invocation (yyvsp[-2].node, NULL_TREE); ; break;} case 354: ! #line 1975 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { tree ctor = build_new_invocation (yyvsp[-2].node, NULL_TREE); yyval.node = make_qualified_primary (yyvsp[-3].node, ctor, *************** case 354: *** 4304,4310 **** ; break;} case 356: ! #line 1982 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { tree ctor = build_new_invocation (yyvsp[-3].node, yyvsp[-1].node); yyval.node = make_qualified_primary (yyvsp[-4].node, ctor, --- 4305,4311 ---- ; break;} case 356: ! #line 1982 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { tree ctor = build_new_invocation (yyvsp[-3].node, yyvsp[-1].node); yyval.node = make_qualified_primary (yyvsp[-4].node, ctor, *************** case 356: *** 4312,4346 **** ; break;} case 358: ! #line 1989 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'(' expected"); DRECOVER(new_1);; break;} case 359: ! #line 1991 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'(' expected"); RECOVER;; break;} case 360: ! #line 1993 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("')' or term expected"); RECOVER;; break;} case 361: ! #line 1995 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("')' expected"); RECOVER;; break;} case 362: ! #line 1997 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {YYERROR_NOW; yyerror ("Identifier expected"); RECOVER;; break;} case 363: ! #line 1999 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'(' expected"); RECOVER;; break;} case 364: ! #line 2009 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { create_anonymous_class (yyvsp[-4].operator.location, yyvsp[-3].node); ; break;} case 365: ! #line 2011 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { tree id = build_wfl_node (DECL_NAME (GET_CPC ())); EXPR_WFL_LINECOL (id) = EXPR_WFL_LINECOL (yyvsp[-5].node); --- 4313,4347 ---- ; break;} case 358: ! #line 1989 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'(' expected"); DRECOVER(new_1);; break;} case 359: ! #line 1991 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'(' expected"); RECOVER;; break;} case 360: ! #line 1993 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("')' or term expected"); RECOVER;; break;} case 361: ! #line 1995 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("')' expected"); RECOVER;; break;} case 362: ! #line 1997 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {YYERROR_NOW; yyerror ("Identifier expected"); RECOVER;; break;} case 363: ! #line 1999 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'(' expected"); RECOVER;; break;} case 364: ! #line 2009 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { create_anonymous_class (yyvsp[-4].operator.location, yyvsp[-3].node); ; break;} case 365: ! #line 2011 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { tree id = build_wfl_node (DECL_NAME (GET_CPC ())); EXPR_WFL_LINECOL (id) = EXPR_WFL_LINECOL (yyvsp[-5].node); *************** case 365: *** 4373,4383 **** ; break;} case 366: ! #line 2042 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { create_anonymous_class (yyvsp[-3].operator.location, yyvsp[-2].node); ; break;} case 367: ! #line 2044 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { tree id = build_wfl_node (DECL_NAME (GET_CPC ())); EXPR_WFL_LINECOL (id) = EXPR_WFL_LINECOL (yyvsp[-4].node); --- 4374,4384 ---- ; break;} case 366: ! #line 2042 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { create_anonymous_class (yyvsp[-3].operator.location, yyvsp[-2].node); ; break;} case 367: ! #line 2044 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { tree id = build_wfl_node (DECL_NAME (GET_CPC ())); EXPR_WFL_LINECOL (id) = EXPR_WFL_LINECOL (yyvsp[-4].node); *************** case 367: *** 4392,4440 **** ; break;} case 368: ! #line 2060 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = yyvsp[-2].node; ; break;} case 369: ! #line 2062 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = yyvsp[-2].node; ; break;} case 370: ! #line 2067 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, NULL_TREE); ctxp->formal_parameter_number = 1; ; break;} case 371: ! #line 2072 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { ctxp->formal_parameter_number += 1; yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyvsp[-2].node); ; break;} case 372: ! #line 2077 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 373: ! #line 2082 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ; break;} case 374: ! #line 2084 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ; break;} case 375: ! #line 2086 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, pop_current_osb (ctxp));; break;} case 376: ! #line 2088 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, pop_current_osb (ctxp));; break;} case 377: ! #line 2092 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { char *sig; int osb = pop_current_osb (ctxp); --- 4393,4441 ---- ; break;} case 368: ! #line 2060 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = yyvsp[-2].node; ; break;} case 369: ! #line 2062 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = yyvsp[-2].node; ; break;} case 370: ! #line 2067 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, NULL_TREE); ctxp->formal_parameter_number = 1; ; break;} case 371: ! #line 2072 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { ctxp->formal_parameter_number += 1; yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyvsp[-2].node); ; break;} case 372: ! #line 2077 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 373: ! #line 2082 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ; break;} case 374: ! #line 2084 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ; break;} case 375: ! #line 2086 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, pop_current_osb (ctxp));; break;} case 376: ! #line 2088 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, pop_current_osb (ctxp));; break;} case 377: ! #line 2092 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { char *sig; int osb = pop_current_osb (ctxp); *************** case 377: *** 4446,4452 **** ; break;} case 378: ! #line 2102 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { int osb = pop_current_osb (ctxp); tree type = yyvsp[-2].node; --- 4447,4453 ---- ; break;} case 378: ! #line 2102 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { int osb = pop_current_osb (ctxp); tree type = yyvsp[-2].node; *************** case 378: *** 4457,4479 **** ; break;} case 379: ! #line 2111 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("'[' expected"); DRECOVER ("]");; break;} case 380: ! #line 2113 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("']' expected"); RECOVER;; break;} case 381: ! #line 2118 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_tree_list (NULL_TREE, yyvsp[0].node); ; break;} case 382: ! #line 2120 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyval.node); ; break;} case 383: ! #line 2125 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { if (JNUMERIC_TYPE_P (TREE_TYPE (yyvsp[-1].node))) { --- 4458,4480 ---- ; break;} case 379: ! #line 2111 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("'[' expected"); DRECOVER ("]");; break;} case 380: ! #line 2113 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("']' expected"); RECOVER;; break;} case 381: ! #line 2118 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_tree_list (NULL_TREE, yyvsp[0].node); ; break;} case 382: ! #line 2120 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyval.node); ; break;} case 383: ! #line 2125 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { if (JNUMERIC_TYPE_P (TREE_TYPE (yyvsp[-1].node))) { *************** case 383: *** 4485,4495 **** ; break;} case 384: ! #line 2135 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("']' expected"); RECOVER;; break;} case 385: ! #line 2137 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyerror ("Missing term"); yyerror ("']' expected"); --- 4486,4496 ---- ; break;} case 384: ! #line 2135 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("']' expected"); RECOVER;; break;} case 385: ! #line 2137 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyerror ("Missing term"); yyerror ("']' expected"); *************** case 385: *** 4497,4503 **** ; break;} case 386: ! #line 2146 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { int allocate = 0; /* If not initialized, allocate memory for the osb --- 4498,4504 ---- ; break;} case 386: ! #line 2146 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { int allocate = 0; /* If not initialized, allocate memory for the osb *************** case 386: *** 4525,4543 **** ; break;} case 387: ! #line 2172 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { CURRENT_OSB (ctxp)++; ; break;} case 388: ! #line 2174 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyerror ("']' expected"); RECOVER;; break;} case 389: ! #line 2179 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = make_qualified_primary (yyvsp[-2].node, yyvsp[0].node, yyvsp[-1].operator.location); ; break;} case 390: ! #line 2183 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { tree super_wfl = build_wfl_node (super_identifier_node); EXPR_WFL_LINECOL (super_wfl) = yyvsp[-2].operator.location; --- 4526,4544 ---- ; break;} case 387: ! #line 2172 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { CURRENT_OSB (ctxp)++; ; break;} case 388: ! #line 2174 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyerror ("']' expected"); RECOVER;; break;} case 389: ! #line 2179 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = make_qualified_primary (yyvsp[-2].node, yyvsp[0].node, yyvsp[-1].operator.location); ; break;} case 390: ! #line 2183 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { tree super_wfl = build_wfl_node (super_identifier_node); EXPR_WFL_LINECOL (super_wfl) = yyvsp[-2].operator.location; *************** case 390: *** 4545,4563 **** ; break;} case 391: ! #line 2189 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Field expected"); DRECOVER (super_field_acces);; break;} case 392: ! #line 2194 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_method_invocation (yyvsp[-2].node, NULL_TREE); ; break;} case 393: ! #line 2196 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_method_invocation (yyvsp[-3].node, yyvsp[-1].node); ; break;} case 394: ! #line 2198 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { if (TREE_CODE (yyvsp[-4].node) == THIS_EXPR) yyval.node = build_this_super_qualified_invocation --- 4546,4564 ---- ; break;} case 391: ! #line 2189 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Field expected"); DRECOVER (super_field_acces);; break;} case 392: ! #line 2194 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_method_invocation (yyvsp[-2].node, NULL_TREE); ; break;} case 393: ! #line 2196 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_method_invocation (yyvsp[-3].node, yyvsp[-1].node); ; break;} case 394: ! #line 2198 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { if (TREE_CODE (yyvsp[-4].node) == THIS_EXPR) yyval.node = build_this_super_qualified_invocation *************** case 394: *** 4570,4576 **** ; break;} case 395: ! #line 2209 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { if (TREE_CODE (yyvsp[-5].node) == THIS_EXPR) yyval.node = build_this_super_qualified_invocation --- 4571,4577 ---- ; break;} case 395: ! #line 2209 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { if (TREE_CODE (yyvsp[-5].node) == THIS_EXPR) yyval.node = build_this_super_qualified_invocation *************** case 395: *** 4583,4703 **** ; break;} case 396: ! #line 2220 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_this_super_qualified_invocation (0, yyvsp[-2].node, NULL_TREE, yyvsp[-4].operator.location, yyvsp[-3].operator.location); ; break;} case 397: ! #line 2225 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_this_super_qualified_invocation (0, yyvsp[-3].node, yyvsp[-1].node, yyvsp[-5].operator.location, yyvsp[-4].operator.location); ; break;} case 398: ! #line 2234 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyerror ("'(' expected"); DRECOVER (method_invocation); ; break;} case 399: ! #line 2236 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyerror ("'(' expected"); DRECOVER (method_invocation); ; break;} case 400: ! #line 2241 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ; break;} case 401: ! #line 2243 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ; break;} case 402: ! #line 2245 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyerror ("Missing term and ']' expected"); DRECOVER(array_access); ; break;} case 403: ! #line 2250 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyerror ("']' expected"); DRECOVER(array_access); ; break;} case 404: ! #line 2255 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyerror ("Missing term and ']' expected"); DRECOVER(array_access); ; break;} case 405: ! #line 2260 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyerror ("']' expected"); DRECOVER(array_access); ; break;} case 410: ! #line 2275 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ; break;} case 411: ! #line 2280 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ; break;} case 414: ! #line 2287 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ; break;} case 415: ! #line 2289 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ; break;} case 417: ! #line 2292 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER; break;} case 418: ! #line 2294 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER; break;} case 419: ! #line 2299 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ; break;} case 420: ! #line 2301 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER; break;} case 421: ! #line 2306 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ; break;} case 422: ! #line 2308 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER; break;} case 424: ! #line 2314 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ; break;} case 425: ! #line 2316 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ; break;} case 427: ! #line 2319 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER; break;} case 428: ! #line 2321 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER; break;} case 429: ! #line 2326 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { tree type = yyvsp[-3].node; int osb = pop_current_osb (ctxp); --- 4584,4704 ---- ; break;} case 396: ! #line 2220 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_this_super_qualified_invocation (0, yyvsp[-2].node, NULL_TREE, yyvsp[-4].operator.location, yyvsp[-3].operator.location); ; break;} case 397: ! #line 2225 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_this_super_qualified_invocation (0, yyvsp[-3].node, yyvsp[-1].node, yyvsp[-5].operator.location, yyvsp[-4].operator.location); ; break;} case 398: ! #line 2234 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyerror ("'(' expected"); DRECOVER (method_invocation); ; break;} case 399: ! #line 2236 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyerror ("'(' expected"); DRECOVER (method_invocation); ; break;} case 400: ! #line 2241 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ; break;} case 401: ! #line 2243 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ; break;} case 402: ! #line 2245 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyerror ("Missing term and ']' expected"); DRECOVER(array_access); ; break;} case 403: ! #line 2250 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyerror ("']' expected"); DRECOVER(array_access); ; break;} case 404: ! #line 2255 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyerror ("Missing term and ']' expected"); DRECOVER(array_access); ; break;} case 405: ! #line 2260 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyerror ("']' expected"); DRECOVER(array_access); ; break;} case 410: ! #line 2275 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ; break;} case 411: ! #line 2280 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ; break;} case 414: ! #line 2287 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ; break;} case 415: ! #line 2289 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ; break;} case 417: ! #line 2292 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER; break;} case 418: ! #line 2294 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER; break;} case 419: ! #line 2299 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ; break;} case 420: ! #line 2301 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER; break;} case 421: ! #line 2306 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ; break;} case 422: ! #line 2308 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER; break;} case 424: ! #line 2314 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ; break;} case 425: ! #line 2316 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ; break;} case 427: ! #line 2319 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER; break;} case 428: ! #line 2321 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER; break;} case 429: ! #line 2326 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { tree type = yyvsp[-3].node; int osb = pop_current_osb (ctxp); *************** case 429: *** 4707,4721 **** ; break;} case 430: ! #line 2334 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 431: ! #line 2336 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 432: ! #line 2338 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { const char *ptr; int osb = pop_current_osb (ctxp); --- 4708,4722 ---- ; break;} case 430: ! #line 2334 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 431: ! #line 2336 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 432: ! #line 2338 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { const char *ptr; int osb = pop_current_osb (ctxp); *************** case 432: *** 4730,4983 **** ; break;} case 433: ! #line 2351 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("']' expected, invalid type expression");; break;} case 434: ! #line 2353 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { YYNOT_TWICE yyerror ("Invalid type expression"); RECOVER; RECOVER; ; break;} case 435: ! #line 2358 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 436: ! #line 2360 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 437: ! #line 2362 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 439: ! #line 2368 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 440: ! #line 2373 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 441: ! #line 2378 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 442: ! #line 2383 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 443: ! #line 2385 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 444: ! #line 2387 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 446: ! #line 2393 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 447: ! #line 2398 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 448: ! #line 2403 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 449: ! #line 2405 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 451: ! #line 2411 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 452: ! #line 2416 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 453: ! #line 2421 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 454: ! #line 2426 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 455: ! #line 2428 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 456: ! #line 2430 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 458: ! #line 2436 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 459: ! #line 2441 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 460: ! #line 2446 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 461: ! #line 2451 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 462: ! #line 2456 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (INSTANCEOF_EXPR, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 463: ! #line 2458 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 464: ! #line 2460 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 465: ! #line 2462 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 466: ! #line 2464 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 467: ! #line 2466 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Invalid reference type"); RECOVER;; break;} case 469: ! #line 2472 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 470: ! #line 2477 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 471: ! #line 2482 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 472: ! #line 2484 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 474: ! #line 2490 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 475: ! #line 2495 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 477: ! #line 2501 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 478: ! #line 2506 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 480: ! #line 2512 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 481: ! #line 2517 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 483: ! #line 2523 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 484: ! #line 2528 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 486: ! #line 2534 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 487: ! #line 2539 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 489: ! #line 2545 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build (CONDITIONAL_EXPR, NULL_TREE, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); EXPR_WFL_LINECOL (yyval.node) = yyvsp[-3].operator.location; ; break;} case 490: ! #line 2550 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { YYERROR_NOW; yyerror ("Missing term"); --- 4731,4984 ---- ; break;} case 433: ! #line 2351 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("']' expected, invalid type expression");; break;} case 434: ! #line 2353 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { YYNOT_TWICE yyerror ("Invalid type expression"); RECOVER; RECOVER; ; break;} case 435: ! #line 2358 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 436: ! #line 2360 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 437: ! #line 2362 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 439: ! #line 2368 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 440: ! #line 2373 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 441: ! #line 2378 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 442: ! #line 2383 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 443: ! #line 2385 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 444: ! #line 2387 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 446: ! #line 2393 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 447: ! #line 2398 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 448: ! #line 2403 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 449: ! #line 2405 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 451: ! #line 2411 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 452: ! #line 2416 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 453: ! #line 2421 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 454: ! #line 2426 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 455: ! #line 2428 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 456: ! #line 2430 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 458: ! #line 2436 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 459: ! #line 2441 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 460: ! #line 2446 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 461: ! #line 2451 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 462: ! #line 2456 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (INSTANCEOF_EXPR, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 463: ! #line 2458 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 464: ! #line 2460 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 465: ! #line 2462 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 466: ! #line 2464 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 467: ! #line 2466 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Invalid reference type"); RECOVER;; break;} case 469: ! #line 2472 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 470: ! #line 2477 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 471: ! #line 2482 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 472: ! #line 2484 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 474: ! #line 2490 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 475: ! #line 2495 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 477: ! #line 2501 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 478: ! #line 2506 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 480: ! #line 2512 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 481: ! #line 2517 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 483: ! #line 2523 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 484: ! #line 2528 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 486: ! #line 2534 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 487: ! #line 2539 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); RECOVER;; break;} case 489: ! #line 2545 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build (CONDITIONAL_EXPR, NULL_TREE, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); EXPR_WFL_LINECOL (yyval.node) = yyvsp[-3].operator.location; ; break;} case 490: ! #line 2550 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { YYERROR_NOW; yyerror ("Missing term"); *************** case 490: *** 4985,5003 **** ; break;} case 491: ! #line 2556 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); DRECOVER (2);; break;} case 492: ! #line 2558 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" {yyerror ("Missing term"); DRECOVER (3);; break;} case 495: ! #line 2568 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { yyval.node = build_assignment (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 496: ! #line 2570 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" { YYNOT_TWICE yyerror ("Missing term"); DRECOVER (assign); --- 4986,5004 ---- ; break;} case 491: ! #line 2556 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); DRECOVER (2);; break;} case 492: ! #line 2558 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" {yyerror ("Missing term"); DRECOVER (3);; break;} case 495: ! #line 2568 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { yyval.node = build_assignment (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ; break;} case 496: ! #line 2570 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" { YYNOT_TWICE yyerror ("Missing term"); DRECOVER (assign); *************** case 496: *** 5005,5011 **** break;} } /* the action file gets copied in in place of this dollarsign */ ! #line 543 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; --- 5006,5012 ---- break;} } /* the action file gets copied in in place of this dollarsign */ ! #line 542 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; *************** yyerrhandle: *** 5225,5231 **** } return 1; } ! #line 2595 "/nfs/gandalf/u2/mitchell/gcc-3.0/gcc-3.0/gcc/java/parse.y" /* Helper function to retrieve an OSB count. Should be used when the --- 5226,5232 ---- } return 1; } ! #line 2595 "/sourceware/snapshot-tmp/gcc-3.0.1-release/gcc-3.0.1/gcc-3.0.1/gcc/java/parse.y" /* Helper function to retrieve an OSB count. Should be used when the diff -Nrc3pad gcc-3.0/gcc/jump.c gcc-3.0.1/gcc/jump.c *** gcc-3.0/gcc/jump.c Fri Jun 8 10:16:09 2001 --- gcc-3.0.1/gcc/jump.c Fri Jul 13 11:33:57 2001 *************** jump_back_p (insn, target) *** 1729,1735 **** && rtx_renumbered_equal_p (XEXP (cinsn, 1), XEXP (ctarget, 1))); } ! /* Given a comparison (CODE ARG0 ARG1), inside a insn, INSN, return an code of reversed comparison if it is possible to do so. Otherwise return UNKNOWN. UNKNOWN may be returned in case we are having CC_MODE compare and we don't know whether it's source is floating point or integer comparison. Machine --- 1729,1735 ---- && rtx_renumbered_equal_p (XEXP (cinsn, 1), XEXP (ctarget, 1))); } ! /* Given a comparison (CODE ARG0 ARG1), inside an insn, INSN, return a code of reversed comparison if it is possible to do so. Otherwise return UNKNOWN. UNKNOWN may be returned in case we are having CC_MODE compare and we don't know whether it's source is floating point or integer comparison. Machine *************** reversed_comparison_code_parts (code, ar *** 1764,1770 **** } #endif ! /* Try few special cases based on the comparison code. */ switch (code) { case GEU: --- 1764,1770 ---- } #endif ! /* Try a few special cases based on the comparison code. */ switch (code) { case GEU: diff -Nrc3pad gcc-3.0/gcc/mips-tfile.c gcc-3.0.1/gcc/mips-tfile.c *** gcc-3.0/gcc/mips-tfile.c Wed Jun 13 11:04:12 2001 --- gcc-3.0.1/gcc/mips-tfile.c Thu Jul 19 11:01:30 2001 *************** STATIC symint_t add_local_symbol *** 1637,1648 **** symint_t, symint_t)); ! STATIC symint_t add_ext_symbol __proto((const char *, ! const char *, ! st_t, ! sc_t, ! long, ! symint_t, int)); STATIC symint_t add_aux_sym_symint --- 1637,1643 ---- symint_t, symint_t)); ! STATIC symint_t add_ext_symbol __proto((EXTR *, int)); STATIC symint_t add_aux_sym_symint *************** add_local_symbol (str_start, str_end_p1, *** 2063,2085 **** /* Add an external symbol. */ STATIC symint_t ! add_ext_symbol (str_start, str_end_p1, type, storage, value, indx, ifd) ! const char *str_start; /* first byte in string */ ! const char *str_end_p1; /* first byte after string */ ! st_t type; /* symbol type */ ! sc_t storage; /* storage class */ ! long value; /* value of symbol */ ! symint_t indx; /* index to local/aux. syms */ int ifd; /* file index */ { register EXTR *psym; register varray_t *vp = &ext_symbols; shash_t *hash_ptr = (shash_t *) 0; if (debug > 1) { ! const char *sc_str = sc_to_string (storage); ! const char *st_str = st_to_string (type); fprintf (stderr, "\tesym\tv= %10ld, ifd= %2d, sc= %-12s", --- 2058,2081 ---- /* Add an external symbol. */ STATIC symint_t ! add_ext_symbol (esym, ifd) ! EXTR *esym; /* symbol pointer */ int ifd; /* file index */ { + const char *str_start; /* first byte in string */ + const char *str_end_p1; /* first byte after string */ register EXTR *psym; register varray_t *vp = &ext_symbols; shash_t *hash_ptr = (shash_t *) 0; + str_start = ORIG_ESTRS (esym->asym.iss); + str_end_p1 = str_start + strlen(str_start); + if (debug > 1) { ! long value = esym->asym.value; ! const char *sc_str = sc_to_string (esym->asym.sc); ! const char *st_str = st_to_string (esym->asym.st); fprintf (stderr, "\tesym\tv= %10ld, ifd= %2d, sc= %-12s", *************** add_ext_symbol (str_start, str_end_p1, t *** 2097,2107 **** psym = &vp->last->datum->esym[ vp->objects_last_page++ ]; psym->ifd = ifd; ! psym->asym.value = value; ! psym->asym.st = (unsigned) type; ! psym->asym.sc = (unsigned) storage; ! psym->asym.index = indx; psym->asym.iss = (str_start == (const char *) 0) ? 0 : add_string (&ext_strings, --- 2093,2101 ---- psym = &vp->last->datum->esym[ vp->objects_last_page++ ]; + *psym = *esym; psym->ifd = ifd; ! psym->asym.index = indexNil; psym->asym.iss = (str_start == (const char *) 0) ? 0 : add_string (&ext_strings, *************** copy_object __proto((void)) *** 4648,4664 **** for (es = 0; es < orig_sym_hdr.iextMax; es++) { register EXTR *eptr = orig_ext_syms + es; - register char *ename = ORIG_ESTRS (eptr->asym.iss); register unsigned ifd = eptr->ifd; ! (void) add_ext_symbol (ename, ! ename + strlen (ename), ! (st_t) eptr->asym.st, ! (sc_t) eptr->asym.sc, ! eptr->asym.value, ! (symint_t) indexNil, ! ((long) ifd < orig_sym_hdr.ifdMax ! ? remap_file_number[ifd] : (int) ifd)); } --- 4642,4651 ---- for (es = 0; es < orig_sym_hdr.iextMax; es++) { register EXTR *eptr = orig_ext_syms + es; register unsigned ifd = eptr->ifd; ! (void) add_ext_symbol (eptr, ((long) ifd < orig_sym_hdr.ifdMax) ! ? remap_file_number[ ifd ] : ifd ); } diff -Nrc3pad gcc-3.0/gcc/objc/objc-act.c gcc-3.0.1/gcc/objc/objc-act.c *** gcc-3.0/gcc/objc/objc-act.c Thu Jun 14 18:08:40 2001 --- gcc-3.0.1/gcc/objc/objc-act.c Fri Jun 29 12:20:43 2001 *************** handle_class_ref (chain) *** 8362,8374 **** pushdecl (decl); rest_of_decl_compilation (decl, 0, 0, 0); - #ifdef __hpux__ /* Put the decl in the variable section. It may need relocation. */ variable_section (decl, 1); - #else - /* Make following constant read-only (why not)? */ - readonly_data_section (); - #endif exp = build1 (ADDR_EXPR, string_type_node, decl); --- 8362,8369 ---- *************** handle_impent (impent) *** 8421,8429 **** { sprintf (string, "%sobjc_class_name_%s", (flag_next_runtime ? "." : "__"), class_name); - #ifdef __hpux__ readonly_data_section (); - #endif assemble_global (string); assemble_label (string); } --- 8416,8422 ---- *************** handle_impent (impent) *** 8458,8466 **** sprintf (string, "%sobjc_category_name_%s_%s", (flag_next_runtime ? "." : "__"), class_name, class_super_name); - #ifdef __hpux__ readonly_data_section (); - #endif assemble_global (string); assemble_label (string); } --- 8451,8457 ---- diff -Nrc3pad gcc-3.0/gcc/objc/objc-parse.c gcc-3.0.1/gcc/objc/objc-parse.c *** gcc-3.0/gcc/objc/objc-parse.c Sun Jun 17 12:51:07 2001 --- gcc-3.0.1/gcc/objc/objc-parse.c Sun Aug 19 17:53:34 2001 *************** *** 1,6 **** /* A Bison parser, made from objc-parse.y ! by GNU Bison version 1.28 */ #define YYBISON 1 /* Identify Bison output. */ --- 1,7 ---- /* A Bison parser, made from objc-parse.y ! by GNU Bison version 1.27 ! */ #define YYBISON 1 /* Identify Bison output. */ *************** static const short yycheck[] = { 56, *** 1754,1760 **** }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/lib/bison.simple" ! /* This file comes from bison-1.28. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. --- 1755,1761 ---- }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/lib/bison.simple" ! /* This file comes from bison-1.27. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. *************** __yy_memcpy (char *to, char *from, unsig *** 1967,1973 **** #endif #endif ! #line 217 "/usr/lib/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. --- 1968,1974 ---- #endif #endif ! #line 216 "/usr/lib/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. *************** case 588: *** 4798,4804 **** break;} } /* the action file gets copied in in place of this dollarsign */ ! #line 543 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; --- 4799,4805 ---- break;} } /* the action file gets copied in in place of this dollarsign */ ! #line 542 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; diff -Nrc3pad gcc-3.0/gcc/optabs.c gcc-3.0.1/gcc/optabs.c *** gcc-3.0/gcc/optabs.c Sun May 13 00:09:55 2001 --- gcc-3.0.1/gcc/optabs.c Tue Jul 3 05:39:47 2001 *************** expand_twoval_binop (binoptab, op0, op1, *** 1974,1985 **** { register rtx t0 = gen_reg_rtx (wider_mode); register rtx t1 = gen_reg_rtx (wider_mode); ! if (expand_twoval_binop (binoptab, ! convert_modes (wider_mode, mode, op0, ! unsignedp), ! convert_modes (wider_mode, mode, op1, ! unsignedp), t0, t1, unsignedp)) { convert_move (targ0, t0, unsignedp); --- 1974,1983 ---- { register rtx t0 = gen_reg_rtx (wider_mode); register rtx t1 = gen_reg_rtx (wider_mode); + rtx cop0 = convert_modes (wider_mode, mode, op0, unsignedp); + rtx cop1 = convert_modes (wider_mode, mode, op1, unsignedp); ! if (expand_twoval_binop (binoptab, cop0, cop1, t0, t1, unsignedp)) { convert_move (targ0, t0, unsignedp); diff -Nrc3pad gcc-3.0/gcc/params.def gcc-3.0.1/gcc/params.def *** gcc-3.0/gcc/params.def Tue May 1 11:56:22 2001 --- gcc-3.0.1/gcc/params.def Thu Aug 2 00:49:50 2001 *************** Boston, MA 02111-1307, USA. *** 39,50 **** function. Increasing values mean more agressive inlining. This affects currently only functions explicitly marked as inline (or methods defined within the class definition for C++). ! The default value of 10000 is arbitrary but high to match the ! previously unlimited gcc capabilities. */ DEFPARAM (PARAM_MAX_INLINE_INSNS, "max-inline-insns", "The maximum number of instructions in a function that is eligible for inlining", ! 10000) /* The maximum number of instructions to consider when looking for an instruction to fill a delay slot. If more than this arbitrary --- 39,50 ---- function. Increasing values mean more agressive inlining. This affects currently only functions explicitly marked as inline (or methods defined within the class definition for C++). ! The original default value of 10000 was arbitrary and caused ! significant compile-time performance regressions. */ DEFPARAM (PARAM_MAX_INLINE_INSNS, "max-inline-insns", "The maximum number of instructions in a function that is eligible for inlining", ! 600) /* The maximum number of instructions to consider when looking for an instruction to fill a delay slot. If more than this arbitrary *************** DEFPARAM(PARAM_MAX_GCSE_MEMORY, *** 74,79 **** --- 74,89 ---- "max-gcse-memory", "The maximum amount of memory to be allocated by GCSE", 50 * 1024 * 1024) + + /* This parameter limits the number of branch elements that the + scheduler will track anti-dependancies through without resetting + the tracking mechanism. Large functions with few calls or barriers + can generate lists containing many 1000's of dependancies. Generally + the compiler either uses all available memory, or runs for far too long. */ + DEFPARAM(PARAM_MAX_PENDING_LIST_LENGTH, + "max-pending-list-length", + "The maximum length of scheduling's pending operations list", + 32) /* Local variables: diff -Nrc3pad gcc-3.0/gcc/params.h gcc-3.0.1/gcc/params.h *** gcc-3.0/gcc/params.h Tue May 1 11:56:22 2001 --- gcc-3.0.1/gcc/params.h Thu Jul 26 06:55:02 2001 *************** typedef enum compiler_param *** 92,96 **** --- 92,99 ---- PARAM_VALUE (PARAM_MAX_DELAY_SLOT_LIVE_SEARCH) #define MAX_GCSE_MEMORY \ ((size_t) PARAM_VALUE (PARAM_MAX_GCSE_MEMORY)) + #define MAX_PENDING_LIST_LENGTH \ + PARAM_VALUE (PARAM_MAX_PENDING_LIST_LENGTH) + #endif /* PARAMS_H */ diff -Nrc3pad gcc-3.0/gcc/po/ChangeLog gcc-3.0.1/gcc/po/ChangeLog *** gcc-3.0/gcc/po/ChangeLog Sun Jun 17 12:40:14 2001 --- gcc-3.0.1/gcc/po/ChangeLog Sun Aug 19 14:08:21 2001 *************** *** 1,3 **** --- 1,11 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/gcc/predict.c gcc-3.0.1/gcc/predict.c *** gcc-3.0/gcc/predict.c Sat May 12 13:32:37 2001 --- gcc-3.0.1/gcc/predict.c Fri Jun 22 15:07:42 2001 *************** expected_value_to_br_prob () *** 295,301 **** cond = simplify_rtx (cond); /* Turn the condition into a scaled branch probability. */ ! if (cond == const1_rtx) cond = GEN_INT (PROB_VERY_LIKELY); else if (cond == const0_rtx) cond = GEN_INT (PROB_VERY_UNLIKELY); --- 295,301 ---- cond = simplify_rtx (cond); /* Turn the condition into a scaled branch probability. */ ! if (cond == const_true_rtx) cond = GEN_INT (PROB_VERY_LIKELY); else if (cond == const0_rtx) cond = GEN_INT (PROB_VERY_UNLIKELY); diff -Nrc3pad gcc-3.0/gcc/profile.c gcc-3.0.1/gcc/profile.c *** gcc-3.0/gcc/profile.c Sat May 12 13:32:37 2001 --- gcc-3.0.1/gcc/profile.c Mon Jul 30 14:16:17 2001 *************** int count_instrumented_edges; *** 100,105 **** --- 100,106 ---- static int total_num_blocks; static int total_num_edges; + static int total_num_edges_ignored; static int total_num_edges_instrumented; static int total_num_blocks_created; static int total_num_passes; *************** void *** 532,538 **** branch_prob () { int i; ! int num_edges; struct edge_info *edge_infos; struct edge_list *el; --- 533,539 ---- branch_prob () { int i; ! int num_edges, ignored_edges; struct edge_info *edge_infos; struct edge_list *el; *************** branch_prob () *** 619,624 **** --- 620,626 ---- edge_infos = (struct edge_info *) xcalloc (num_edges, sizeof (struct edge_info)); + ignored_edges = 0; for (i = 0 ; i < num_edges ; i++) { edge e = INDEX_EDGE (el, i); *************** branch_prob () *** 628,644 **** /* Mark edges we've replaced by fake edges above as ignored. */ if ((e->flags & (EDGE_ABNORMAL | EDGE_ABNORMAL_CALL)) && e->src != ENTRY_BLOCK_PTR && e->dest != EXIT_BLOCK_PTR) ! EDGE_INFO (e)->ignore = 1; } - total_num_blocks += n_basic_blocks + 2; - if (rtl_dump_file) - fprintf (rtl_dump_file, "%d basic blocks\n", n_basic_blocks); - - total_num_edges += num_edges; - if (rtl_dump_file) - fprintf (rtl_dump_file, "%d edges\n", num_edges); - #ifdef ENABLE_CHECKING verify_flow_info (); #endif --- 630,641 ---- /* Mark edges we've replaced by fake edges above as ignored. */ if ((e->flags & (EDGE_ABNORMAL | EDGE_ABNORMAL_CALL)) && e->src != ENTRY_BLOCK_PTR && e->dest != EXIT_BLOCK_PTR) ! { ! EDGE_INFO (e)->ignore = 1; ! ignored_edges++; ! } } #ifdef ENABLE_CHECKING verify_flow_info (); #endif *************** branch_prob () *** 715,720 **** --- 712,742 ---- find_spanning_tree (el); + /* Fake edges that are not on the tree will not be instrumented, so + mark them ignored. */ + for (i = 0; i < num_edges; i++) + { + edge e = INDEX_EDGE (el, i); + struct edge_info *inf = EDGE_INFO (e); + if ((e->flags & EDGE_FAKE) && !inf->ignore && !inf->on_tree) + { + inf->ignore = 1; + ignored_edges++; + } + } + + total_num_blocks += n_basic_blocks + 2; + if (rtl_dump_file) + fprintf (rtl_dump_file, "%d basic blocks\n", n_basic_blocks); + + total_num_edges += num_edges; + if (rtl_dump_file) + fprintf (rtl_dump_file, "%d edges\n", num_edges); + + total_num_edges_ignored += ignored_edges; + if (rtl_dump_file) + fprintf (rtl_dump_file, "%d ignored edges\n", ignored_edges); + /* Create a .bbg file from which gcov can reconstruct the basic block graph. First output the number of basic blocks, and then for every edge output the source and target basic block numbers. *************** branch_prob () *** 726,732 **** /* The plus 2 stands for entry and exit block. */ __write_long (n_basic_blocks + 2, bbg_file, 4); ! __write_long (num_edges + 1, bbg_file, 4); for (i = 0; i < n_basic_blocks + 1; i++) { --- 748,754 ---- /* The plus 2 stands for entry and exit block. */ __write_long (n_basic_blocks + 2, bbg_file, 4); ! __write_long (num_edges - ignored_edges + 1, bbg_file, 4); for (i = 0; i < n_basic_blocks + 1; i++) { *************** branch_prob () *** 747,753 **** flag_bits = 0; if (i->on_tree) flag_bits |= 0x1; ! if (e->flags & EDGE_ABNORMAL) flag_bits |= 0x2; if (e->flags & EDGE_FALLTHRU) flag_bits |= 0x4; --- 769,775 ---- flag_bits = 0; if (i->on_tree) flag_bits |= 0x1; ! if (e->flags & EDGE_FAKE) flag_bits |= 0x2; if (e->flags & EDGE_FALLTHRU) flag_bits |= 0x4; *************** init_branch_prob (filename) *** 943,948 **** --- 965,971 ---- total_num_blocks = 0; total_num_edges = 0; + total_num_edges_ignored = 0; total_num_edges_instrumented = 0; total_num_blocks_created = 0; total_num_passes = 0; *************** end_branch_prob () *** 988,993 **** --- 1011,1018 ---- fprintf (rtl_dump_file, "Total number of blocks: %d\n", total_num_blocks); fprintf (rtl_dump_file, "Total number of edges: %d\n", total_num_edges); + fprintf (rtl_dump_file, "Total number of ignored edges: %d\n", + total_num_edges_ignored); fprintf (rtl_dump_file, "Total number of instrumented edges: %d\n", total_num_edges_instrumented); fprintf (rtl_dump_file, "Total number of blocks created: %d\n", diff -Nrc3pad gcc-3.0/gcc/recog.c gcc-3.0.1/gcc/recog.c *** gcc-3.0/gcc/recog.c Sat May 12 13:32:38 2001 --- gcc-3.0.1/gcc/recog.c Wed Jul 11 18:38:09 2001 *************** static int changes_allocated; *** 181,187 **** static int num_changes = 0; ! /* Validate a proposed change to OBJECT. LOC is the location in the rtl for at which NEW will be placed. If OBJECT is zero, no validation is done, the change is simply made. --- 181,187 ---- static int num_changes = 0; ! /* Validate a proposed change to OBJECT. LOC is the location in the rtl at which NEW will be placed. If OBJECT is zero, no validation is done, the change is simply made. *************** validate_replace_rtx_1 (loc, from, to, o *** 437,443 **** validate_replace_rtx_1 (&XEXP (x, 0), from, to, object); validate_replace_rtx_1 (&XEXP (x, 1), from, to, object); ! if (prev_changes != num_changes && CONSTANT_P (XEXP (x, 0))) { validate_change (object, loc, gen_rtx_fmt_ee (GET_RTX_CLASS (code) == 'c' ? code --- 437,451 ---- validate_replace_rtx_1 (&XEXP (x, 0), from, to, object); validate_replace_rtx_1 (&XEXP (x, 1), from, to, object); ! /* If nothing changed, we can exit now. In fact, continuing on ! into the switch statement below can be wrong, eg. turning ! (plus (symbol_ref) (const_int)) into ! (const (plus (symbol_ref) (const_int))). This might not seem ! so bad, but the first rtx is already enclosed in `const', so ! we get a string of (const (const (const...))). */ ! if (prev_changes == num_changes) ! return; ! if (CONSTANT_P (XEXP (x, 0))) { validate_change (object, loc, gen_rtx_fmt_ee (GET_RTX_CLASS (code) == 'c' ? code diff -Nrc3pad gcc-3.0/gcc/regclass.c gcc-3.0.1/gcc/regclass.c *** gcc-3.0/gcc/regclass.c Fri Mar 2 11:51:57 2001 --- gcc-3.0.1/gcc/regclass.c Fri Jul 20 17:31:32 2001 *************** scan_one_insn (insn, pass) *** 1057,1067 **** /* This makes one more setting of new insns's dest. */ REG_N_SETS (REGNO (recog_data.operand[0]))++; *recog_data.operand_loc[1] = recog_data.operand[0]; for (i = recog_data.n_dups - 1; i >= 0; i--) if (recog_data.dup_num[i] == 1) ! *recog_data.dup_loc[i] = recog_data.operand[0]; return PREV_INSN (newinsn); } --- 1057,1072 ---- /* This makes one more setting of new insns's dest. */ REG_N_SETS (REGNO (recog_data.operand[0]))++; + REG_N_REFS (REGNO (recog_data.operand[0]))++; *recog_data.operand_loc[1] = recog_data.operand[0]; + REG_N_REFS (REGNO (recog_data.operand[0]))++; for (i = recog_data.n_dups - 1; i >= 0; i--) if (recog_data.dup_num[i] == 1) ! { ! *recog_data.dup_loc[i] = recog_data.operand[0]; ! REG_N_REFS (REGNO (recog_data.operand[0]))++; ! } return PREV_INSN (newinsn); } diff -Nrc3pad gcc-3.0/gcc/regmove.c gcc-3.0.1/gcc/regmove.c *** gcc-3.0/gcc/regmove.c Mon May 14 09:31:46 2001 --- gcc-3.0.1/gcc/regmove.c Mon Aug 13 00:05:59 2001 *************** regmove_optimize (f, nregs, regmove_dump *** 1306,1311 **** --- 1306,1319 ---- if (! set) continue; + /* Note that single_set ignores parts of a parallel set for + which one of the destinations is REG_UNUSED. We can't + handle that here, since we can wind up rewriting things + such that a single register is set twice within a single + parallel. */ + if (reg_set_p (src, insn)) + continue; + /* match_no/dst must be a write-only operand, and operand_operand/src must be a read-only operand. */ if (match.use[op_no] != READ diff -Nrc3pad gcc-3.0/gcc/regrename.c gcc-3.0.1/gcc/regrename.c *** gcc-3.0/gcc/regrename.c Fri May 18 22:56:44 2001 --- gcc-3.0.1/gcc/regrename.c Sun Jul 22 00:09:45 2001 *************** regrename_optimize () *** 238,245 **** struct du_chain *this = all_chains; struct du_chain *tmp, *last; HARD_REG_SET this_unavailable; ! int reg = REGNO (*this->loc), treg; ! int nregs = HARD_REGNO_NREGS (reg, GET_MODE (*this->loc)); int i; all_chains = this->next_chain; --- 238,244 ---- struct du_chain *this = all_chains; struct du_chain *tmp, *last; HARD_REG_SET this_unavailable; ! int reg = REGNO (*this->loc); int i; all_chains = this->next_chain; *************** regrename_optimize () *** 287,295 **** /* Now potential_regs is a reasonable approximation, let's have a closer look at each register still in there. */ ! for (treg = 0; treg < FIRST_PSEUDO_REGISTER; treg++) { ! new_reg = treg; for (i = nregs - 1; i >= 0; --i) if (TEST_HARD_REG_BIT (this_unavailable, new_reg + i) || fixed_regs[new_reg + i] --- 286,295 ---- /* Now potential_regs is a reasonable approximation, let's have a closer look at each register still in there. */ ! for (new_reg = 0; new_reg < FIRST_PSEUDO_REGISTER; new_reg++) { ! int nregs = HARD_REGNO_NREGS (new_reg, GET_MODE (*this->loc)); ! for (i = nregs - 1; i >= 0; --i) if (TEST_HARD_REG_BIT (this_unavailable, new_reg + i) || fixed_regs[new_reg + i] diff -Nrc3pad gcc-3.0/gcc/reload.c gcc-3.0.1/gcc/reload.c *** gcc-3.0/gcc/reload.c Sat May 12 13:32:38 2001 --- gcc-3.0.1/gcc/reload.c Mon Jul 23 15:41:47 2001 *************** find_reloads (insn, replace, ind_levels, *** 2749,2755 **** register char *p = constraints[i]; register int win = 0; int did_match = 0; ! /* 0 => this operand can be reloaded somehow for this alternative */ int badop = 1; /* 0 => this operand can be reloaded if the alternative allows regs. */ int winreg = 0; --- 2749,2755 ---- register char *p = constraints[i]; register int win = 0; int did_match = 0; ! /* 0 => this operand can be reloaded somehow for this alternative. */ int badop = 1; /* 0 => this operand can be reloaded if the alternative allows regs. */ int winreg = 0; *************** find_reloads (insn, replace, ind_levels, *** 3142,3148 **** || (REGNO (operand) >= FIRST_PSEUDO_REGISTER && reg_renumber[REGNO (operand)] < 0))) win = 1; ! /* Drop through into 'r' case */ case 'r': this_alternative[i] --- 3142,3148 ---- || (REGNO (operand) >= FIRST_PSEUDO_REGISTER && reg_renumber[REGNO (operand)] < 0))) win = 1; ! /* Drop through into 'r' case. */ case 'r': this_alternative[i] *************** find_reloads_address (mode, memrefloc, a *** 4487,4493 **** regno = REGNO (ad); /* If the register is equivalent to an invariant expression, substitute ! the invariant, and eliminate any eliminable register references. */ tem = reg_equiv_constant[regno]; if (tem != 0 && (tem = eliminate_regs (tem, mode, insn)) --- 4487,4493 ---- regno = REGNO (ad); /* If the register is equivalent to an invariant expression, substitute ! the invariant, and eliminate any eliminable register references. */ tem = reg_equiv_constant[regno]; if (tem != 0 && (tem = eliminate_regs (tem, mode, insn)) diff -Nrc3pad gcc-3.0/gcc/reorg.c gcc-3.0.1/gcc/reorg.c *** gcc-3.0/gcc/reorg.c Sat May 12 13:32:39 2001 --- gcc-3.0.1/gcc/reorg.c Thu Jul 19 19:39:26 2001 *************** fill_simple_delay_slots (non_jumps_p) *** 2223,2228 **** --- 2223,2249 ---- fill_eager_delay_slots anyways, it was just deleted. */ if (slots_filled != slots_to_fill + /* If this instruction could throw an exception which is + caught in the same function, then it's not safe to fill + the delay slot with an instruction from beyond this + point. For example, consider: + + int i = 2; + + try { + f(); + i = 3; + } catch (...) {} + + return i; + + Even though `i' is a local variable, we must be sure not + to put `i = 3' in the delay slot if `f' might throw an + exception. + + Presumably, we should also check to see if we could get + back to this function via `setjmp'. */ + && !can_throw_internal (insn) && (GET_CODE (insn) != JUMP_INSN || ((condjump_p (insn) || condjump_in_parallel_p (insn)) && ! simplejump_p (insn) diff -Nrc3pad gcc-3.0/gcc/rtl.c gcc-3.0.1/gcc/rtl.c *** gcc-3.0/gcc/rtl.c Fri Feb 23 19:56:31 2001 --- gcc-3.0.1/gcc/rtl.c Wed Aug 1 13:50:27 2001 *************** read_name (str, infile) *** 821,827 **** p = str; while (1) { ! if (c == ' ' || c == '\n' || c == '\t' || c == '\f') break; if (c == ':' || c == ')' || c == ']' || c == '"' || c == '/' || c == '(' || c == '[') --- 821,827 ---- p = str; while (1) { ! if (c == ' ' || c == '\n' || c == '\t' || c == '\f' || c == '\r') break; if (c == ':' || c == ')' || c == ']' || c == '"' || c == '/' || c == '(' || c == '[') diff -Nrc3pad gcc-3.0/gcc/sched-deps.c gcc-3.0.1/gcc/sched-deps.c *** gcc-3.0/gcc/sched-deps.c Sun May 20 13:05:25 2001 --- gcc-3.0.1/gcc/sched-deps.c Thu Jul 26 06:55:02 2001 *************** the Free Software Foundation, 59 Temple *** 38,43 **** --- 38,44 ---- #include "toplev.h" #include "recog.h" #include "sched-int.h" + #include "params.h" extern char *reg_known_equiv_p; extern rtx *reg_known_value; *************** flush_pending_lists (deps, insn, only_wr *** 532,537 **** --- 533,539 ---- free_INSN_LIST_list (&deps->last_pending_memory_flush); deps->last_pending_memory_flush = alloc_INSN_LIST (insn, NULL_RTX); + deps->pending_flush_length = 1; } /* Analyze a single SET, CLOBBER, PRE_DEC, POST_DEC, PRE_INC or POST_INC *************** sched_analyze_1 (deps, x, insn) *** 671,684 **** { /* Writing memory. */ ! if (deps->pending_lists_length > 32) { /* Flush all pending reads and writes to prevent the pending lists from getting any larger. Insn scheduling runs too slowly when ! these lists get long. The number 32 was chosen because it ! seems like a reasonable number. When compiling GCC with itself, this flush occurs 8 times for sparc, and 10 times for m88k using ! the number 32. */ flush_pending_lists (deps, insn, 0); } else --- 673,685 ---- { /* Writing memory. */ ! if (deps->pending_lists_length > MAX_PENDING_LIST_LENGTH) { /* Flush all pending reads and writes to prevent the pending lists from getting any larger. Insn scheduling runs too slowly when ! these lists get long. When compiling GCC with itself, this flush occurs 8 times for sparc, and 10 times for m88k using ! the default value of 32. */ flush_pending_lists (deps, insn, 0); } else *************** sched_analyze (deps, head, tail) *** 1242,1249 **** /* Make each JUMP_INSN a scheduling barrier for memory references. */ if (GET_CODE (insn) == JUMP_INSN) ! deps->last_pending_memory_flush ! = alloc_INSN_LIST (insn, deps->last_pending_memory_flush); sched_analyze_insn (deps, PATTERN (insn), insn, loop_notes); loop_notes = 0; } --- 1243,1256 ---- /* Make each JUMP_INSN a scheduling barrier for memory references. */ if (GET_CODE (insn) == JUMP_INSN) ! { ! /* Keep the list a reasonable size. */ ! if (deps->pending_flush_length++ > MAX_PENDING_LIST_LENGTH) ! flush_pending_lists (deps, insn, 0); ! else ! deps->last_pending_memory_flush ! = alloc_INSN_LIST (insn, deps->last_pending_memory_flush); ! } sched_analyze_insn (deps, PATTERN (insn), insn, loop_notes); loop_notes = 0; } *************** init_deps (deps) *** 1469,1474 **** --- 1476,1482 ---- deps->pending_write_insns = 0; deps->pending_write_mems = 0; deps->pending_lists_length = 0; + deps->pending_flush_length = 0; deps->last_pending_memory_flush = 0; deps->last_function_call = 0; deps->in_post_call_group_p = 0; diff -Nrc3pad gcc-3.0/gcc/sched-int.h gcc-3.0.1/gcc/sched-int.h *** gcc-3.0/gcc/sched-int.h Thu Mar 1 05:16:03 2001 --- gcc-3.0.1/gcc/sched-int.h Thu Jul 26 06:55:02 2001 *************** struct deps *** 53,58 **** --- 53,62 ---- a function of the length of these pending lists. */ int pending_lists_length; + /* Length of the pending memory flush list. Large functions with no + calls may build up extremely large lists. */ + int pending_flush_length; + /* The last insn upon which all memory references must depend. This is an insn which flushed the pending lists, creating a dependency between it and all previously pending memory references. This creates diff -Nrc3pad gcc-3.0/gcc/stmt.c gcc-3.0.1/gcc/stmt.c *** gcc-3.0/gcc/stmt.c Thu May 17 04:37:30 2001 --- gcc-3.0.1/gcc/stmt.c Wed Jul 25 06:34:58 2001 *************** expand_goto (label) *** 842,853 **** /* Search backwards to the jump insn and mark it as a non-local goto. */ ! for (insn = get_last_insn (); ! GET_CODE (insn) != JUMP_INSN; ! insn = PREV_INSN (insn)) ! continue; ! REG_NOTES (insn) = alloc_EXPR_LIST (REG_NON_LOCAL_GOTO, const0_rtx, ! REG_NOTES (insn)); } else expand_goto_internal (label, label_rtx (label), NULL_RTX); --- 842,858 ---- /* Search backwards to the jump insn and mark it as a non-local goto. */ ! for (insn = get_last_insn (); insn; insn = PREV_INSN (insn)) ! { ! if (GET_CODE (insn) == JUMP_INSN) ! { ! REG_NOTES (insn) = alloc_EXPR_LIST (REG_NON_LOCAL_GOTO, ! const0_rtx, REG_NOTES (insn)); ! break; ! } ! else if (GET_CODE (insn) == CALL_INSN) ! break; ! } } else expand_goto_internal (label, label_rtx (label), NULL_RTX); *************** expand_asm (body) *** 1292,1297 **** --- 1297,1460 ---- last_expr_type = 0; } + /* Parse the output constraint pointed to by *CONSTRAINT_P. It is the + OPERAND_NUMth output operand, indexed from zero. There are NINPUTS + inputs and NOUTPUTS outputs to this extended-asm. Upon return, + *ALLOWS_MEM will be TRUE iff the constraint allows the use of a + memory operand. Similarly, *ALLOWS_REG will be TRUE iff the + constraint allows the use of a register operand. And, *IS_INOUT + will be true if the operand is read-write, i.e., if it is used as + an input as well as an output. If *CONSTRAINT_P is not in + canonical form, it will be made canonical. (Note that `+' will be + rpelaced with `=' as part of this process.) + + Returns TRUE if all went well; FALSE if an error occurred. */ + + bool + parse_output_constraint (constraint_p, + operand_num, + ninputs, + noutputs, + allows_mem, + allows_reg, + is_inout) + const char **constraint_p; + int operand_num; + int ninputs; + int noutputs; + bool *allows_mem; + bool *allows_reg; + bool *is_inout; + { + const char *constraint = *constraint_p; + const char *p; + + /* Assume the constraint doesn't allow the use of either a register + or memory. */ + *allows_mem = false; + *allows_reg = false; + + /* Allow the `=' or `+' to not be at the beginning of the string, + since it wasn't explicitly documented that way, and there is a + large body of code that puts it last. Swap the character to + the front, so as not to uglify any place else. */ + p = strchr (constraint, '='); + if (!p) + p = strchr (constraint, '+'); + + /* If the string doesn't contain an `=', issue an error + message. */ + if (!p) + { + error ("output operand constraint lacks `='"); + return false; + } + + /* If the constraint begins with `+', then the operand is both read + from and written to. */ + *is_inout = (*p == '+'); + + /* Make sure we can specify the matching operand. */ + if (*is_inout && operand_num > 9) + { + error ("output operand constraint %d contains `+'", + operand_num); + return false; + } + + /* Canonicalize the output constraint so that it begins with `='. */ + if (p != constraint || is_inout) + { + char *buf; + size_t c_len = strlen (constraint); + + if (p != constraint) + warning ("output constraint `%c' for operand %d is not at the beginning", + *p, operand_num); + + /* Make a copy of the constraint. */ + buf = alloca (c_len + 1); + strcpy (buf, constraint); + /* Swap the first character and the `=' or `+'. */ + buf[p - constraint] = buf[0]; + /* Make sure the first character is an `='. (Until we do this, + it might be a `+'.) */ + buf[0] = '='; + /* Replace the constraint with the canonicalized string. */ + *constraint_p = ggc_alloc_string (buf, c_len); + constraint = *constraint_p; + } + + /* Loop through the constraint string. */ + for (p = constraint + 1; *p; ++p) + switch (*p) + { + case '+': + case '=': + error ("operand constraint contains '+' or '=' at illegal position."); + return false; + + case '%': + if (operand_num + 1 == ninputs + noutputs) + { + error ("`%%' constraint used with last operand"); + return false; + } + break; + + case 'V': case 'm': case 'o': + *allows_mem = true; + break; + + case '?': case '!': case '*': case '&': case '#': + case 'E': case 'F': case 'G': case 'H': + case 's': case 'i': case 'n': + case 'I': case 'J': case 'K': case 'L': case 'M': + case 'N': case 'O': case 'P': case ',': + break; + + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + error ("matching constraint not valid in output operand"); + return false; + + case '<': case '>': + /* ??? Before flow, auto inc/dec insns are not supposed to exist, + excepting those that expand_call created. So match memory + and hope. */ + *allows_mem = true; + break; + + case 'g': case 'X': + *allows_reg = true; + *allows_mem = true; + break; + + case 'p': case 'r': + *allows_reg = true; + break; + + default: + if (!ISALPHA (*p)) + break; + if (REG_CLASS_FROM_LETTER (*p) != NO_REGS) + *allows_reg = true; + #ifdef EXTRA_CONSTRAINT + else + { + /* Otherwise we can't assume anything about the nature of + the constraint except that it isn't purely registers. + Treat it like "g" and hope for the best. */ + *allows_reg = true; + *allows_mem = true; + } + #endif + break; + } + + return true; + } + /* Generate RTL for an asm statement with arguments. STRING is the instruction template. OUTPUTS is a list of output arguments (lvalues); INPUTS a list of inputs. *************** expand_asm_operands (string, outputs, in *** 1411,1425 **** tree val = TREE_VALUE (tail); tree type = TREE_TYPE (val); const char *constraint; ! char *p; ! int c_len; ! int j; ! int is_inout = 0; ! int allows_reg = 0; ! int allows_mem = 0; /* If there's an erroneous arg, emit no insn. */ ! if (TREE_TYPE (val) == error_mark_node) return; /* Make sure constraint has `=' and does not have `+'. Also, see --- 1574,1585 ---- tree val = TREE_VALUE (tail); tree type = TREE_TYPE (val); const char *constraint; ! bool is_inout; ! bool allows_reg; ! bool allows_mem; /* If there's an erroneous arg, emit no insn. */ ! if (type == error_mark_node) return; /* Make sure constraint has `=' and does not have `+'. Also, see *************** expand_asm_operands (string, outputs, in *** 1429,1547 **** constraint = TREE_STRING_POINTER (TREE_PURPOSE (tail)); output_constraints[i] = constraint; - c_len = strlen (constraint); - - /* Allow the `=' or `+' to not be at the beginning of the string, - since it wasn't explicitly documented that way, and there is a - large body of code that puts it last. Swap the character to - the front, so as not to uglify any place else. */ - switch (c_len) - { - default: - if ((p = strchr (constraint, '=')) != NULL) - break; - if ((p = strchr (constraint, '+')) != NULL) - break; - case 0: - error ("output operand constraint lacks `='"); - return; - } - j = p - constraint; - is_inout = *p == '+'; - - if (j || is_inout) - { - /* Have to throw away this constraint string and get a new one. */ - char *buf = alloca (c_len + 1); - buf[0] = '='; - if (j) - memcpy (buf + 1, constraint, j); - memcpy (buf + 1 + j, p + 1, c_len - j); /* not -j-1 - copy null */ - constraint = ggc_alloc_string (buf, c_len); - output_constraints[i] = constraint; - - if (j) - warning ( - "output constraint `%c' for operand %d is not at the beginning", - *p, i); - } - - /* Make sure we can specify the matching operand. */ - if (is_inout && i > 9) - { - error ("output operand constraint %d contains `+'", i); - return; - } - - for (j = 1; j < c_len; j++) - switch (constraint[j]) - { - case '+': - case '=': - error ("operand constraint contains '+' or '=' at illegal position."); - return; - - case '%': - if (i + 1 == ninputs + noutputs) - { - error ("`%%' constraint used with last operand"); - return; - } - break; ! case '?': case '!': case '*': case '&': case '#': ! case 'E': case 'F': case 'G': case 'H': ! case 's': case 'i': case 'n': ! case 'I': case 'J': case 'K': case 'L': case 'M': ! case 'N': case 'O': case 'P': case ',': ! break; ! ! case '0': case '1': case '2': case '3': case '4': ! case '5': case '6': case '7': case '8': case '9': ! error ("matching constraint not valid in output operand"); ! break; ! ! case 'V': case 'm': case 'o': ! allows_mem = 1; ! break; ! ! case '<': case '>': ! /* ??? Before flow, auto inc/dec insns are not supposed to exist, ! excepting those that expand_call created. So match memory ! and hope. */ ! allows_mem = 1; ! break; ! ! case 'g': case 'X': ! allows_reg = 1; ! allows_mem = 1; ! break; ! ! case 'p': case 'r': ! allows_reg = 1; ! break; ! ! default: ! if (! ISALPHA (constraint[j])) ! { ! error ("invalid punctuation `%c' in constraint", ! constraint[j]); ! return; ! } ! if (REG_CLASS_FROM_LETTER (constraint[j]) != NO_REGS) ! allows_reg = 1; ! #ifdef EXTRA_CONSTRAINT ! else ! { ! /* Otherwise we can't assume anything about the nature of ! the constraint except that it isn't purely registers. ! Treat it like "g" and hope for the best. */ ! allows_reg = 1; ! allows_mem = 1; ! } ! #endif ! break; ! } /* If an output operand is not a decl or indirect ref and our constraint allows a register, make a temporary to act as an intermediate. --- 1589,1605 ---- constraint = TREE_STRING_POINTER (TREE_PURPOSE (tail)); output_constraints[i] = constraint; ! /* Try to parse the output constraint. If that fails, there's ! no point in going further. */ ! if (!parse_output_constraint (&output_constraints[i], ! i, ! ninputs, ! noutputs, ! &allows_mem, ! &allows_reg, ! &is_inout)) ! return; /* If an output operand is not a decl or indirect ref and our constraint allows a register, make a temporary to act as an intermediate. diff -Nrc3pad gcc-3.0/gcc/testsuite/ChangeLog gcc-3.0.1/gcc/testsuite/ChangeLog *** gcc-3.0/gcc/testsuite/ChangeLog Sun Jun 17 12:40:19 2001 --- gcc-3.0.1/gcc/testsuite/ChangeLog Sun Aug 19 14:08:22 2001 *************** *** 1,3 **** --- 1,139 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-07 Nathan Sidwell + + * g++.old-deja/g++.abi/empty4.C: New test. + + 2001-08-06 Franz Sirl + + * gcc.c-torture/compile/20010408-1.c: New test. + * gcc.c-torture/execute/ieee/ieee.exp: Only use -ffloat-store on + i[34567]86-*-*. + Delete handling of ieee_multilib_flags. + Pass -mieee for alpha*-*-* and sh-*-*. + * gcc.c-torture/execute/20010114-2.c: Move into ieee subdir. + * gcc.c-torture/execute/20010114-2.x: Remove. + + 2001-08-03 Zack Weinberg + + * gcc.dg/bconstp-1.c: New test. + + 2001-08-02 Nathan Sidwell + + Remove -fhonor-std. + * g++.old-deja/g++.ns/ns14.C: Remove special options. + * g++.old-deja/g++.other/std1.C: Likewise. + * g++.old-deja/g++.robertl/eb133.C: Likewise. Add using directive. + + 2001-07-31 Nathan Sidwell + + * g++.old-deja/g++.abi/vthunk1.C: New test. + + 2001-07-31 Nathan Sidwell + + * g++.old-deja/g++.abi/vbase8-22.C: New test. + + 2001-07-30 Janis Johnson + + * gcc.misc-tests/gcov-3.c: New test. + + 2001-07-27 Peter Schmid + + Copied from mainline by ljrittle (to go along with 2001-07-26 + libstdc++-v3 header staging configuration patch). + * g++.old-deja/g++.robertl/eb130.C: Include the correct header file. + + 2001-07-27 Nathan Sidwell + + * g++.old-deja/g++.abi/vbase8-21.C: New test. + + 2001-07-27 Nathan Sidwell + + * g++.old-deja/g++.abi/vbase8-10.C: New test. + + 2001-07-27 Rainer Orth + + * lib/g++.exp (g++_set_ld_library_path): Renamed to + ${tool}_set_ld_library_path. + Changed caller. + * lib/objc.exp (${tool}_set_ld_library_path): New, copied from + g++.exp. + + 2001-07-26 Nathan Sidwell + + * g++.old-deja/g++.other/lineno5.C: New test. + + 2001-07-26 Nathan Sidwell + + * g++.old-deja/g++.pt/crash68.C: New test. + + 2001-07-26 Nathan Sidwell + + * g++.old-deja/g++.other/crash42.C: New test. + + 2001-07-25 Rainer Orth + + * gcc.c-torture/execute/20010724-1.c: New file. + * gcc.c-torture/execute/20010724-1.x: New file. + + 2001-07-25 Nathan Sidwell + + * g++.old-deja/g++.other/cond7.C: New test. + + 2001-07-25 Jason Merrill + + Copied from mainline. + * g++.old-deja/g++.mike/p2846.C: Check correct copy ctor called. + + 2001-07-25 Nathan Sidwell + + * g++.old-deja/g++.other/optimize4.C: New test. + + 2001-07-25 Nathan Sidwell + + * g++.old-deja/g++.abi/vbase8-5.C: New test. + + 2001-07-19 Rainer Orth + + * g++.old-deja/g++.pt/static3.C: Removed alpha*-*-osf* XFAIL. + g++.old-deja/g++.pt/static6.C: Likewise. + * lib/target-supports.exp (check_weak_available): alpha*-*-osf* + supports weak symbols. + + 2001-07-16 Rainer Orth + + * gcc.c-torture/execute/20001229-1.c: Include for + UAC_SIGBUS, UAC_NOPRINT definitions. + + Mon Jul 16 12:21:56 2001 Nicola Pero + + * objc/execute/object_is_class.m: New test. + * objc/execute/object_is_meta_class.m: New test. + + 2000-09-10 Michael Chamberlain + + * gcc.misc-tests/mg.exp (compiler_output): Support tcl 8.3.1. + + 2001-06-29 Rainer Orth + + * lib/objc.exp (objc_target_compile): Declare rootme. Append to + ld_library_path. + + 2001-06-28 Rainer Orth + + * lib/objc.exp (objc_target_compile): Don't need -lposix4 on any + Solaris 2.[678] system. + + 2001-06-22 Joseph S. Myers + + * gcc.dg/20010622-1.c: New test. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.abi/empty4.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.abi/empty4.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.abi/empty4.C Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.abi/empty4.C Tue Aug 7 06:06:44 2001 *************** *** 0 **** --- 1,84 ---- + // Copyright (C) 2001 Free Software Foundation, Inc. + // Contributed by Nathan Sidwell 31 Jul 2001 + + // Bug 3820. We were bit copying empty bases including the + // padding. Which clobbers whatever they overlay. + + struct Empty {}; + + struct Inter : Empty {}; + + int now = 0; + + struct NonPod + { + int m; + + NonPod () {m = 0x12345678;} + NonPod (int m_) {m = m_;} + NonPod &operator= (NonPod const &src) {now = m; m = src.m;} + NonPod (NonPod const &src) {m = src.m;} + }; + + struct A : Inter + { + A (int c) {m = c;} + + NonPod m; + }; + + struct B + { + Inter empty; + NonPod m; + + B (int c) {m = c;} + }; + + struct C : NonPod, Inter + { + C (int c) : NonPod (c), Inter () {} + }; + + int main () + { + A a (0x12131415); + + int was = a.m.m; + + a = 0x22232425; + + if (was != now) + return 1; // we copied the empty base which clobbered a.m.m's + // original value. + + A b (0x32333435); + *(Inter *)&a = *(Inter *)&b; + + if (a.m.m != 0x22232425) + return 2; // we copied padding, which clobbered a.m.m + + A b2 (0x32333435); + (Inter &)b2 = Inter (); + if (b2.m.m != 0x32333435) + return 2; // we copied padding, which clobbered b2.m.m + + B c (0x12131415); + was = c.m.m; + c = 0x22232425; + if (was != now) + return 3; + + B d (0x32333435); + c.empty = d.empty; + + if (c.m.m != 0x22232425) + return 4; + + C e (0x32333435); + + if (e.m != 0x32333435) + return 2; // we copied padding + + return 0; + } diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.abi/vbase8-10.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.abi/vbase8-10.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.abi/vbase8-10.C Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.abi/vbase8-10.C Fri Jul 27 08:11:24 2001 *************** *** 0 **** --- 1,74 ---- + // Special g++ Options: -w + + // Copyright (C) 2001 Free Software Foundation, Inc. + // Contributed by Nathan Sidwell 26 Jul 2001 + + // Origin stefan@space.twc.de + // Bug 3145 case 10. Horribly complicated class hierarchy + + class C0 + {}; + class C1 + : public C0 + {}; + class C2 + : public C1 + , virtual public C0 + {}; + class C3 + : public C1 + , public C2 + , virtual public C0 + {}; + class C4 + : virtual public C1 + , virtual public C0 + , virtual public C3 + , public C2 + {}; + class C5 + : public C3 + , virtual public C0 + , virtual public C2 + {}; + class C6 + : public C1 + , public C2 + , virtual public C5 + , virtual public C3 + , virtual public C0 + {}; + class C7 + : public C1 + , virtual public C5 + , virtual public C4 + , virtual public C2 + , virtual public C0 + , virtual public C6 + {}; + class C8 + : virtual public C4 + , public C3 + , public C0 + , virtual public C7 + , virtual public C6 + {}; + class C9 + : virtual public C0 + , public C4 + , public C8 + , public C1 + , public C6 + {}; + main() { + C0 c0; + C1 c1; + C2 c2; + C3 c3; + C4 c4; + C5 c5; + C6 c6; + C7 c7; + C8 c8; + C9 c9; + } diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.abi/vbase8-21.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.abi/vbase8-21.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.abi/vbase8-21.C Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.abi/vbase8-21.C Fri Jul 27 08:15:30 2001 *************** *** 0 **** --- 1,74 ---- + // Special g++ Options: -w + + // Copyright (C) 2001 Free Software Foundation, Inc. + // Contributed by Nathan Sidwell 26 Jul 2001 + + // Origin stefan@space.twc.de + // Bug 3145 case 21. Horribly complicated class hierarchy + + class C0 + {}; + class C1 + : virtual public C0 + {}; + class C2 + : virtual public C1 + , virtual public C0 + {}; + class C3 + : virtual public C2 + , virtual public C1 + {}; + class C4 + : virtual public C2 + , public C0 + , public C1 + {}; + class C5 + : virtual public C0 + , public C2 + , virtual public C1 + , virtual public C3 + , virtual public C4 + {}; + class C6 + : virtual public C1 + , virtual public C3 + , public C0 + , public C2 + , virtual public C4 + {}; + class C7 + : virtual public C5 + , public C2 + , public C6 + , virtual public C0 + , public C3 + {}; + class C8 + : virtual public C5 + , public C7 + , virtual public C0 + , virtual public C2 + , virtual public C6 + {}; + class C9 + : virtual public C2 + , virtual public C4 + , public C1 + , virtual public C0 + , public C7 + , public C5 + {}; + main() { + C0 c0; + C1 c1; + C2 c2; + C3 c3; + C4 c4; + C5 c5; + C6 c6; + C7 c7; + C8 c8; + C9 c9; + } diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.abi/vbase8-22.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.abi/vbase8-22.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.abi/vbase8-22.C Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.abi/vbase8-22.C Tue Jul 31 01:49:25 2001 *************** *** 0 **** --- 1,79 ---- + // Special g++ Options: -w + + // Copyright (C) 2001 Free Software Foundation, Inc. + // Contributed by Nathan Sidwell 27 Jul 2001 + + // Origin stefan@space.twc.de + // Bug 3145 case 22. Horribly complicated class hierarchy + + class C0 + {}; + class C1 + : public C0 + {}; + class C2 + : public C1 + , virtual public C0 + {}; + class C3 + : virtual public C0 + , virtual public C2 + , virtual public C1 + {}; + class C4 + : virtual public C2 + , public C1 + , virtual public C3 + , public C0 + {}; + class C5 + : virtual public C0 + , virtual public C4 + , public C1 + , virtual public C2 + , virtual public C3 + {}; + class C6 + : public C0 + , virtual public C1 + , public C5 + , public C2 + , virtual public C3 + , virtual public C4 + {}; + class C7 + : virtual public C1 + , public C5 + , virtual public C6 + , virtual public C4 + , virtual public C3 + , virtual public C0 + {}; + class C8 + : virtual public C6 + , virtual public C1 + , virtual public C2 + , public C3 + , virtual public C4 + {}; + class C9 + : public C4 + , virtual public C2 + , virtual public C8 + , public C3 + , public C1 + , public C6 + , public C5 + {}; + main() { + C0 c0; + C1 c1; + C2 c2; + C3 c3; + C4 c4; + C5 c5; + C6 c6; + C7 c7; + C8 c8; + C9 c9; + } diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.abi/vbase8-5.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.abi/vbase8-5.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.abi/vbase8-5.C Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.abi/vbase8-5.C Wed Jul 25 01:56:42 2001 *************** *** 0 **** --- 1,79 ---- + // Special g++ Options: -w + + // Copyright (C) 2001 Free Software Foundation, Inc. + // Contributed by Nathan Sidwell 24 Jul 2001 + + // Origin stefan@space.twc.de + // Bug 3145 case 5. Horribly complicated class hierarchy + + class C0 + {}; + class C1 + : virtual public C0 + {}; + class C2 + : public C0 + , virtual public C1 + {}; + class C3 + : virtual public C0 + , virtual public C2 + , public C1 + {}; + class C4 + : virtual public C0 + , virtual public C2 + , virtual public C1 + , virtual public C3 + {}; + class C5 + : virtual public C3 + , virtual public C2 + , virtual public C0 + , public C4 + , virtual public C1 + {}; + class C6 + : public C0 + , virtual public C3 + , public C4 + , virtual public C5 + , public C1 + {}; + class C7 + : virtual public C3 + , public C5 + , public C2 + , virtual public C4 + , public C6 + , public C0 + {}; + class C8 + : virtual public C2 + , public C5 + , public C7 + , public C1 + , public C0 + , public C4 + , public C3 + {}; + class C9 + : public C3 + , public C2 + , virtual public C6 + , public C8 + , virtual public C7 + , public C5 + {}; + main() { + C0 c0; + C1 c1; + C2 c2; + C3 c3; + C4 c4; + C5 c5; + C6 c6; + C7 c7; + C8 c8; + C9 c9; + } diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.abi/vthunk1.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.abi/vthunk1.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.abi/vthunk1.C Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.abi/vthunk1.C Tue Jul 31 01:57:08 2001 *************** *** 0 **** --- 1,45 ---- + // Build don't run: + + // Copyright (C) 2001 Free Software Foundation, Inc. + // Contributed by Nathan Sidwell 29 Jul 2001 + + // Origin snyder@fnal.gov + // Bug 3631. We mis-calculated the non-virtual part of a virtual + // thunk. Leading to a link failure, in this case. + + struct A { virtual ~A () {} }; + + struct B : virtual public A + { + virtual void destroy() {} + }; + + class C : virtual public B {}; + class D : virtual public C {}; + class E : public virtual A {}; + + struct F : virtual public B, virtual public E + { + virtual void destroy() = 0; + }; + + struct G : public virtual F + { + virtual void destroy() {} + }; + + class H : virtual public C, virtual public F {}; + class I : virtual public D, virtual public H {}; + class J : public virtual G, public virtual H {}; + + class K : public virtual I, public virtual J + { + public: + virtual ~K(); + }; + K::~K() {} + + int main () + { + return 0; + } diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.mike/p2846.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.mike/p2846.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.mike/p2846.C Wed Dec 16 13:46:56 1998 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.mike/p2846.C Wed Jul 25 02:32:49 2001 *************** extern "C" void exit(int); *** 6,11 **** --- 6,13 ---- class A; class B; + int c; + class A { public: *************** public: *** 30,35 **** --- 32,38 ---- virtual ~B(void){} void print(void) const { + ++c; printf("B::print\n"); } *************** int main () *** 50,55 **** { A titi; A toto = titi.compute(); ! printf("PASS\n"); ! return 0; } --- 53,66 ---- { A titi; A toto = titi.compute(); ! if (c != 1) ! { ! printf ("FAIL\n"); ! return 1; ! } ! else ! { ! printf("PASS\n"); ! return 0; ! } } diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.ns/ns14.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.ns/ns14.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.ns/ns14.C Wed Dec 16 13:50:45 1998 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.ns/ns14.C Thu Aug 2 07:23:15 2001 *************** *** 1,4 **** ! //Special g++ Options: -fhonor-std namespace std{ int f(){ return 0; --- 1,4 ---- ! namespace std{ int f(){ return 0; diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.ns/template18.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.ns/template18.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.ns/template18.C Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.ns/template18.C Tue Jul 10 23:13:26 2001 *************** *** 0 **** --- 1,24 ---- + // Build don't run: + // Origin: Andrey Slepuhin + + namespace A + { + int j; + + template + struct X + { + inline X () + { + extern int j; + i = j; + } + + int i; + }; + } + + int main () + { + A::X x; + } diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog Sun Jun 17 12:40:24 2001 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog Sun Aug 19 14:08:24 2001 *************** *** 1,3 **** --- 1,11 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.other/array5.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.other/array5.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.other/array5.C Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.other/array5.C Sun Jul 1 13:48:02 2001 *************** *** 0 **** --- 1,20 ---- + // Special g++ Options: -O1 + + int count = 0; + + double foo () { + count++; + return 0; + }; + + double bar () { + const double x[1] = { foo() }; + return x[0]; + }; + + int main () + { + bar(); + if (count != 1) + return 1; + }; diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.other/asm2.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.other/asm2.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.other/asm2.C Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.other/asm2.C Wed Jul 11 09:57:24 2001 *************** *** 0 **** --- 1,11 ---- + // Build don't link: + // Skip if not target: i?86-*-* + // Special g++ Options: -O2 + + typedef unsigned long long uint64; + uint64 fstps(void) + { + uint64 ret; + asm volatile("fstps %0" : "=m" (ret)); + return ret; + } diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.other/cond7.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.other/cond7.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.other/cond7.C Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.other/cond7.C Wed Jul 25 02:37:28 2001 *************** *** 0 **** --- 1,26 ---- + // Build don't link: + // + // Copyright (C) 2001 Free Software Foundation, Inc. + // Contributed by Nathan Sidwell 24 Jul 2001 + + // Bug 3416. We left some unchecked overloaded functions lying around. + + struct X + { + void operator << (int); + void operator << (float); + }; + + void OVL1 (int); + void OVL1 (float); + + void OVL2 (int); + void OVL2 (float); + + X x; + + void foo (bool a) + { + x << (a ? OVL1 : OVL2); // ERROR - incomplete type + a ? OVL1 : OVL2; // ERROR - incomplete type + } diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.other/crash42.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.other/crash42.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.other/crash42.C Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.other/crash42.C Thu Jul 26 01:07:28 2001 *************** *** 0 **** --- 1,17 ---- + // Build don't link: + // Special g++ Options: -g + // + // Copyright (C) 2001 Free Software Foundation, Inc. + // Contributed by Nathan Sidwell 25 Jul 2001 + + // Bug 3152. Using a typedef to declare a function used an unset + // global variable, last_function_parms. + + struct actor + { + typedef bool (operation)(); + + operation a; + operation b; + operation c; + }; diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.other/empty2.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.other/empty2.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.other/empty2.C Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.other/empty2.C Mon Aug 13 13:54:15 2001 *************** *** 0 **** --- 1,10 ---- + // Build don't link: + // Origin: Mark Mitchell + + struct E {}; + + void f () { + E e1, e2; + e1 = e2; // We should not warn about this statement, even though no + // code is generated for it. + } diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.other/lineno5.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.other/lineno5.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.other/lineno5.C Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.other/lineno5.C Thu Jul 26 01:16:56 2001 *************** *** 0 **** --- 1,19 ---- + // Build don't link: + // + // Copyright (C) 2001 Free Software Foundation, Inc. + // Contributed by Nathan Sidwell 25 Jul 2001 + + // Origin: johanb@DoCS.UU.SE + // Bug 3621. At the end of saved input, we'd set the lineno to + // zero. This would confusing things no end, if there was a subsequent + // error. + + namespace tmp { + typedef int B; + B b; + } + + class A { + public: + int kaka(tmp::B = b); // ERROR - no b in scope + }; diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.other/optimize4.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.other/optimize4.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.other/optimize4.C Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.other/optimize4.C Wed Jul 25 02:01:33 2001 *************** *** 0 **** --- 1,31 ---- + // Build don't link: + // + // Copyright (C) 2001 Free Software Foundation, Inc. + // Contributed by Nathan Sidwell 24 Jul 2001 + + // Bug 3543. We forgot to resolve an OFFSET_REF + + + struct Writeable { + bool blocking_mode; + }; + + + struct Pipe : Writeable { + void ewrite(); + + void set_write_blocking () + { + if (Writeable::blocking_mode); + } + }; + + void Pipe::ewrite() + { + set_write_blocking(); + } + + void ewrite(Pipe &p) + { + p.set_write_blocking(); + } diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.other/override2.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.other/override2.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.other/override2.C Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.other/override2.C Mon Jun 18 03:35:30 2001 *************** *** 0 **** --- 1,9 ---- + // Copyright (C) 2001 Free Software Foundation, Inc. + // Contributed by Jason Merrill 14 Jun 2001 + + // Test for diagnosis of missing final overrider. + + struct A { virtual void f (); }; + struct B1: virtual A { virtual void f (); }; + struct B2: virtual A { virtual void f (); }; + struct C: public B1, public B2 {}; // ERROR - no final overrider diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.other/std1.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.other/std1.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.other/std1.C Thu Oct 19 10:57:48 2000 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.other/std1.C Thu Aug 2 07:23:15 2001 *************** *** 1,5 **** // Build don't link: - // Special g++ Options: -fhonor-std // Origin: Mark Mitchell extern "C" int memcmp (const void * __s1, --- 1,4 ---- diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.pt/crash68.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.pt/crash68.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.pt/crash68.C Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.pt/crash68.C Thu Jul 26 01:12:58 2001 *************** *** 0 **** --- 1,70 ---- + // Build don't link: + // + // Copyright (C) 2001 Free Software Foundation, Inc. + // Contributed by Nathan Sidwell 25 Jul 2001 + + // Origin: gustavo@geneura.ugr.es + // Bug 3624. Template instantiation of a reference type was not + // converted from reference when doing a call. + + #include + + using namespace std; + + template class eo: public A + { + public: + eo() + { + cout << this->x << " " << this->y << " " + << c(*this) << " " + << ((d)?"true":"false") << endl; + } + + private: + B b; + }; + + struct XY + { + float x, y; + + XY(): x(1), y(0.1) {} + }; + + float fitness(const XY& a) + { + return a.x + a.y; + } + + struct fitness2 + { + float operator()(const XY& a) + { + return a.x - a.y; + } + + float f(const XY& a) + { + return a.x - a.y; + } + }; + + struct fitness3 + { + float operator()(const XY& a) + { + return a.x / a.y; + } + }; + + fitness2 f2; + fitness3 f3; + + int main() + { + eo eo2; + eo eo3; + + return 0; + } diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.pt/deduct7.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.pt/deduct7.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.pt/deduct7.C Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.pt/deduct7.C Mon Jun 18 03:35:31 2001 *************** *** 0 **** --- 1,14 ---- + // Copyright (C) 2001 Free Software Foundation, Inc. + // Contributed by Jason Merrill 14 Jun 2001 + + // Test that deduction can add cv-quals to a pointer-to-member type. + + struct A; + int A::* pi; + + template void f (const T A::*) {} + + int main () + { + f (pi); + } diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.pt/ptrmem2.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.pt/ptrmem2.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.pt/ptrmem2.C Wed Dec 16 13:59:36 1998 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.pt/ptrmem2.C Mon Jun 18 03:34:41 2001 *************** S* S::g() *** 31,36 **** --- 31,41 ---- return this; } + S* S::h() + { + return this; + } + int main() { S s; diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.pt/static3.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.pt/static3.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.pt/static3.C Mon Jun 12 16:48:12 2000 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.pt/static3.C Thu Jul 19 11:01:31 2001 *************** *** 1,6 **** // On targets that don't support weak symbols, we require an explicit // instantiation of arr. ! // excess errors test - XFAIL *-*-aout *-*-coff *-*-hpux* alpha*-dec-osf* *-*-hms template struct A { --- 1,6 ---- // On targets that don't support weak symbols, we require an explicit // instantiation of arr. ! // excess errors test - XFAIL *-*-aout *-*-coff *-*-hpux* *-*-hms template struct A { diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.pt/static6.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.pt/static6.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.pt/static6.C Wed Jun 14 17:14:08 2000 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.pt/static6.C Thu Jul 19 11:01:31 2001 *************** *** 1,5 **** // Build don't run: ! // excess errors test - XFAIL *-*-aout *-*-coff *-*-hpux* alpha*-dec-osf* *-*-hms // Simplified from testcase by Erez Louidor Lior --- 1,5 ---- // Build don't run: ! // excess errors test - XFAIL *-*-aout *-*-coff *-*-hpux* *-*-hms // Simplified from testcase by Erez Louidor Lior diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.pt/unify8.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.pt/unify8.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.pt/unify8.C Thu Jan 18 01:56:46 2001 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.pt/unify8.C Mon Jun 18 03:35:31 2001 *************** *** 9,18 **** --- 9,20 ---- template void Foo (T const **); + template void Bar (T const * const *); void Foo (int); // ERROR - candidate void Foo (float); // ERROR - candidate void baz (int **p1) { Foo (p1); // ERROR - no such function + Bar (p1); // OK } diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C Wed Dec 16 14:03:23 1998 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C Fri Jul 27 15:32:54 2001 *************** *** 6,11 **** // From: Klaus-Georg Adams ! #include std::hash_set foo; --- 6,11 ---- // From: Klaus-Georg Adams ! #include std::hash_set foo; diff -Nrc3pad gcc-3.0/gcc/testsuite/g++.old-deja/g++.robertl/eb133.C gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.robertl/eb133.C *** gcc-3.0/gcc/testsuite/g++.old-deja/g++.robertl/eb133.C Mon Jun 12 16:48:13 2000 --- gcc-3.0.1/gcc/testsuite/g++.old-deja/g++.robertl/eb133.C Thu Aug 2 07:23:15 2001 *************** *** 1,8 **** // Build don't link: - // Special g++ Options: -fno-honor-std // Gives ICE 109 // From: Klaus-Georg Adams // Reported against EGCS snaps 98/06/28. int main() { --- 1,9 ---- // Build don't link: // Gives ICE 109 // From: Klaus-Georg Adams // Reported against EGCS snaps 98/06/28. + + using namespace std; int main() { diff -Nrc3pad gcc-3.0/gcc/testsuite/gcc.c-torture/execute/20001229-1.c gcc-3.0.1/gcc/testsuite/gcc.c-torture/execute/20001229-1.c *** gcc-3.0/gcc/testsuite/gcc.c-torture/execute/20001229-1.c Fri Dec 29 03:57:30 2000 --- gcc-3.0.1/gcc/testsuite/gcc.c-torture/execute/20001229-1.c Mon Jul 16 10:19:12 2001 *************** setsysinfo(unsigned long op, void *buffe *** 21,26 **** --- 21,27 ---- #else #include + #include #endif static void __attribute__((constructor)) diff -Nrc3pad gcc-3.0/gcc/testsuite/gcc.c-torture/execute/20010114-2.c gcc-3.0.1/gcc/testsuite/gcc.c-torture/execute/20010114-2.c *** gcc-3.0/gcc/testsuite/gcc.c-torture/execute/20010114-2.c Sun Jan 14 16:29:53 2001 --- gcc-3.0.1/gcc/testsuite/gcc.c-torture/execute/20010114-2.c Wed Dec 31 16:00:00 1969 *************** *** 1,31 **** - extern void exit (int); - extern void abort (void); - - float - rintf (float x) - { - static const float TWO23 = 8388608.0; - - if (__builtin_fabs (x) < TWO23) - { - if (x > 0.0) - { - x += TWO23; - x -= TWO23; - } - else if (x < 0.0) - { - x = TWO23 - x; - x = -(x - TWO23); - } - } - - return x; - } - - int main (void) - { - if (rintf (-1.5) != -2.0) - abort (); - exit (0); - } --- 0 ---- diff -Nrc3pad gcc-3.0/gcc/testsuite/gcc.c-torture/execute/20010114-2.x gcc-3.0.1/gcc/testsuite/gcc.c-torture/execute/20010114-2.x *** gcc-3.0/gcc/testsuite/gcc.c-torture/execute/20010114-2.x Mon Apr 30 07:43:00 2001 --- gcc-3.0.1/gcc/testsuite/gcc.c-torture/execute/20010114-2.x Wed Dec 31 16:00:00 1969 *************** *** 1,2 **** - set torture_execute_xfail "*-*-*" - return 0 --- 0 ---- diff -Nrc3pad gcc-3.0/gcc/testsuite/gcc.c-torture/execute/20010724-1.c gcc-3.0.1/gcc/testsuite/gcc.c-torture/execute/20010724-1.c *** gcc-3.0/gcc/testsuite/gcc.c-torture/execute/20010724-1.c Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/gcc.c-torture/execute/20010724-1.c Wed Jul 25 04:29:34 2001 *************** *** 0 **** --- 1,59 ---- + /* Verify that the workarounds in config/mips/irix6-libc-compat.c are still + needed. */ + + /* IRIX 6, unlike other Unix systems, defines union semun in . + Inhibit this definition to be able to run this test on other platforms. */ + #define _XOPEN_SOURCE + + #include + #include + #include + #include + #include + + union semun { + int val; + struct semid_ds *buf; + ushort_t *array; + }; + + int + main (void) + { + struct in_addr ia; + int semid; + union semun su; + + ia.s_addr = INADDR_BROADCAST; + + if (strcmp (inet_ntoa (ia), "255.255.255.255") != 0) + abort (); + + ia.s_addr = INADDR_LOOPBACK; + + if (inet_lnaof (ia) != 1) + abort (); + + if (inet_netof (ia) != IN_LOOPBACKNET) + abort (); + + ia = inet_makeaddr (IN_LOOPBACKNET, 1); + if (ia.s_addr != INADDR_LOOPBACK) + abort (); + + if ((semid = semget (IPC_PRIVATE, 1, IPC_CREAT | IPC_EXCL | SEM_R | SEM_A)) < 0) + abort (); + + su.val = 10; + + if (semctl (semid, 0, SETVAL, su) != 0) + abort (); + + if (semctl (semid, 0, GETVAL) != 10) + abort (); + + if (semctl (semid, 0, IPC_RMID) != 0) + abort (); + + return 0; + } diff -Nrc3pad gcc-3.0/gcc/testsuite/gcc.c-torture/execute/20010724-1.x gcc-3.0.1/gcc/testsuite/gcc.c-torture/execute/20010724-1.x *** gcc-3.0/gcc/testsuite/gcc.c-torture/execute/20010724-1.x Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/gcc.c-torture/execute/20010724-1.x Wed Jul 25 04:29:34 2001 *************** *** 0 **** --- 1,3 ---- + # This test is only needed on IRIX 6 + if { ! [istarget "mips*-sgi-irix6*"] } { return 1 } + return 0 diff -Nrc3pad gcc-3.0/gcc/testsuite/gcc.c-torture/execute/ieee/20010114-2.c gcc-3.0.1/gcc/testsuite/gcc.c-torture/execute/ieee/20010114-2.c *** gcc-3.0/gcc/testsuite/gcc.c-torture/execute/ieee/20010114-2.c Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/gcc.c-torture/execute/ieee/20010114-2.c Mon Aug 6 14:12:39 2001 *************** *** 0 **** --- 1,31 ---- + extern void exit (int); + extern void abort (void); + + float + rintf (float x) + { + static const float TWO23 = 8388608.0; + + if (__builtin_fabs (x) < TWO23) + { + if (x > 0.0) + { + x += TWO23; + x -= TWO23; + } + else if (x < 0.0) + { + x = TWO23 - x; + x = -(x - TWO23); + } + } + + return x; + } + + int main (void) + { + if (rintf (-1.5) != -2.0) + abort (); + exit (0); + } diff -Nrc3pad gcc-3.0/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp gcc-3.0.1/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp *** gcc-3.0/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp Fri May 11 08:38:56 2001 --- gcc-3.0.1/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp Mon Aug 6 14:12:39 2001 *************** if $tracelevel then { *** 31,45 **** strace $tracelevel } ! if [target_info exists ieee_multilib_flags] { ! set additional_flags [target_info ieee_multilib_flags]; ! } else { ! set additional_flags ""; } ! # We must use -ffloat-store to ensure that excess precision on some machines ! # does not cause problems ! lappend additional_flags "-ffloat-store" # load support procs load_lib c-torture.exp --- 31,48 ---- strace $tracelevel } ! set additional_flags ""; ! ! # We must use -ffloat-store/-mieee to ensure that excess precision on some ! # machines does not cause problems ! if [istarget "i\[34567\]86-*-*"] then { ! lappend additional_flags "-ffloat-store" } ! if { [istarget "alpha*-*-*"] ! || [istarget "sh-*-*"] } then { ! lappend additional_flags "-mieee" ! } # load support procs load_lib c-torture.exp diff -Nrc3pad gcc-3.0/gcc/testsuite/gcc.dg/20010622-1.c gcc-3.0.1/gcc/testsuite/gcc.dg/20010622-1.c *** gcc-3.0/gcc/testsuite/gcc.dg/20010622-1.c Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/gcc.dg/20010622-1.c Fri Jun 22 12:23:27 2001 *************** *** 0 **** --- 1,11 ---- + /* Test for segfault doing -Wsequence-point processing on an empty + statement expression. */ + /* Origin: PR c/3259 from . */ + /* { dg-do compile } */ + /* { dg-options "-Wall" } */ + + void + f (void) + { + ({ }); + } diff -Nrc3pad gcc-3.0/gcc/testsuite/gcc.dg/bconstp-1.c gcc-3.0.1/gcc/testsuite/gcc.dg/bconstp-1.c *** gcc-3.0/gcc/testsuite/gcc.dg/bconstp-1.c Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/gcc.dg/bconstp-1.c Fri Aug 3 17:24:14 2001 *************** *** 0 **** --- 1,25 ---- + /* { dg-do compile } */ + + /* This test checks that builtin_constant_p can be used safely in + initializers for static data. The macro X() defined below should + be an acceptable initializer expression no matter how complex its + argument is. */ + + extern int a; + extern int b; + + extern int foo(void); + extern int bar(void); + + #define X(exp) (__builtin_constant_p(exp) ? (exp) : -1) + + const short tests[] = { + X(0), + X(a), + X(0 && a), + X(a && b), + X(foo()), + X(0 && foo()), + X(a && foo()), + X(foo() && bar()) + }; diff -Nrc3pad gcc-3.0/gcc/testsuite/gcc.misc-tests/gcov-3.c gcc-3.0.1/gcc/testsuite/gcc.misc-tests/gcov-3.c *** gcc-3.0/gcc/testsuite/gcc.misc-tests/gcov-3.c Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/gcc.misc-tests/gcov-3.c Mon Jul 30 14:16:19 2001 *************** *** 0 **** --- 1,45 ---- + /* Test Gcov with computed gotos. + This is the same as test gcc.c-torture/execute/980526-1.c */ + + /* { dg-options "-fprofile-arcs -ftest-coverage" } */ + /* { dg-do run { target native } } */ + + int expect_do1 = 1, expect_do2 = 2; + + static int doit(int x){ + __label__ lbl1; + __label__ lbl2; + static int jtab_init = 0; + static void *jtab[2]; + + if(!jtab_init) { + jtab[0] = &&lbl1; + jtab[1] = &&lbl2; + jtab_init = 1; + } + goto *jtab[x]; + lbl1: + return 1; + lbl2: + return 2; + } + + static void do1(void) { + if (doit(0) != expect_do1) + abort (); + } + + static void do2(void){ + if (doit(1) != expect_do2) + abort (); + } + + int main(void){ /* count(1) */ + #ifndef NO_LABEL_VALUES + do1(); + do2(); + #endif + exit(0); /* count(1) */ + } + + /* { dg-final { run-gcov gcov-3.c } } */ diff -Nrc3pad gcc-3.0/gcc/testsuite/gcc.misc-tests/mg.exp gcc-3.0.1/gcc/testsuite/gcc.misc-tests/mg.exp *** gcc-3.0/gcc/testsuite/gcc.misc-tests/mg.exp Wed Feb 7 18:29:38 2001 --- gcc-3.0.1/gcc/testsuite/gcc.misc-tests/mg.exp Sun Jul 1 12:36:33 2001 *************** load_lib mike-gcc.exp *** 20,24 **** prebase set actions none-of-the-above ! set compiler_output "mg.o ?: .*mg.c \[ \\\n\]*nonexist.h" postbase mg.c "" "" "-MM -MG" --- 20,24 ---- prebase set actions none-of-the-above ! set compiler_output "mg.o ?: .*mg.c \[ \\\\\n\]*nonexist.h" postbase mg.c "" "" "-MM -MG" diff -Nrc3pad gcc-3.0/gcc/testsuite/lib/g++.exp gcc-3.0.1/gcc/testsuite/lib/g++.exp *** gcc-3.0/gcc/testsuite/lib/g++.exp Mon Jun 4 08:24:39 2001 --- gcc-3.0.1/gcc/testsuite/lib/g++.exp Fri Jul 27 05:17:05 2001 *************** if { [info procs prune_warnings] == "" } *** 303,314 **** # proper, so we do it here, by trickery. We really only need to do # this on IRIX, but it shouldn't hurt to do it anywhere else. ! proc g++_set_ld_library_path { name element op } { setenv LD_LIBRARYN32_PATH [getenv LD_LIBRARY_PATH] setenv LD_LIBRARY64_PATH [getenv LD_LIBRARY_PATH] } ! trace variable env(LD_LIBRARY_PATH) w g++_set_ld_library_path # Utility used by mike-g++.exp and old-dejagnu.exp. # Check the compiler(/assembler/linker) output for text indicating that --- 303,314 ---- # proper, so we do it here, by trickery. We really only need to do # this on IRIX, but it shouldn't hurt to do it anywhere else. ! proc ${tool}_set_ld_library_path { name element op } { setenv LD_LIBRARYN32_PATH [getenv LD_LIBRARY_PATH] setenv LD_LIBRARY64_PATH [getenv LD_LIBRARY_PATH] } ! trace variable env(LD_LIBRARY_PATH) w ${tool}_set_ld_library_path # Utility used by mike-g++.exp and old-dejagnu.exp. # Check the compiler(/assembler/linker) output for text indicating that diff -Nrc3pad gcc-3.0/gcc/testsuite/lib/objc.exp gcc-3.0.1/gcc/testsuite/lib/objc.exp *** gcc-3.0/gcc/testsuite/lib/objc.exp Thu Jun 7 10:10:00 2001 --- gcc-3.0.1/gcc/testsuite/lib/objc.exp Fri Jul 27 05:17:05 2001 *************** proc objc_init { args } { *** 113,133 **** } proc objc_target_compile { source dest type options } { global tmpdir; global gluefile wrap_flags; global OBJC_UNDER_TEST global TOOL_OPTIONS global ld_library_path ! set ld_library_path "." lappend options "libs=-lobjc" - # On Solaris 2.x, we need to include libposix4 in order to get - # sched_get_priority_max and such. - if [istarget {sparc*-sun-solaris2.[678]} ] { - lappend options "libs=-lposix4" - } - if { [target_info needs_status_wrapper]!="" && [info exists gluefile] } { lappend options "libs=${gluefile}" lappend options "ldflags=$wrap_flags" --- 113,128 ---- } proc objc_target_compile { source dest type options } { + global rootme; global tmpdir; global gluefile wrap_flags; global OBJC_UNDER_TEST global TOOL_OPTIONS global ld_library_path ! set ld_library_path ".:${rootme}" lappend options "libs=-lobjc" if { [target_info needs_status_wrapper]!="" && [info exists gluefile] } { lappend options "libs=${gluefile}" lappend options "ldflags=$wrap_flags" *************** if { [info procs prune_warnings] == "" } *** 240,245 **** --- 235,254 ---- return $text } } + + # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but + # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH + # (for the 64-bit ABI). The right way to do this would be to modify + # unix.exp -- but that's not an option since it's part of DejaGNU + # proper, so we do it here, by trickery. We really only need to do + # this on IRIX, but it shouldn't hurt to do it anywhere else. + + proc ${tool}_set_ld_library_path { name element op } { + setenv LD_LIBRARYN32_PATH [getenv LD_LIBRARY_PATH] + setenv LD_LIBRARY64_PATH [getenv LD_LIBRARY_PATH] + } + + trace variable env(LD_LIBRARY_PATH) w ${tool}_set_ld_library_path # Utility used by mike-gcc.exp and c-torture.exp. # Check the compiler(/assembler/linker) output for text indicating that diff -Nrc3pad gcc-3.0/gcc/testsuite/lib/target-supports.exp gcc-3.0.1/gcc/testsuite/lib/target-supports.exp *** gcc-3.0/gcc/testsuite/lib/target-supports.exp Wed Jan 3 10:22:23 2001 --- gcc-3.0.1/gcc/testsuite/lib/target-supports.exp Thu Jul 19 11:01:31 2001 *************** *** 27,38 **** --- 27,45 ---- # this proc returns 1 if they're supported, 0 if they're not, or -1 if unsure proc check_weak_available { } { + global target_triplet global target_cpu # All mips targets should support it if { [ string first "mips" $target_cpu ] >= 0 } { return 1 + } + + # DEC OSF/1/Digital UNIX/Tru64 UNIX supports it + + if { [regexp "alpha.*osf.*" $target_triplet] } { + return 1 } # ELF and ECOFF support it. a.out does with gas/gld but may also with diff -Nrc3pad gcc-3.0/gcc/testsuite/objc/execute/object_is_class.m gcc-3.0.1/gcc/testsuite/objc/execute/object_is_class.m *** gcc-3.0/gcc/testsuite/objc/execute/object_is_class.m Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/objc/execute/object_is_class.m Mon Jul 16 04:33:39 2001 *************** *** 0 **** --- 1,42 ---- + /* Contributed by Nicola Pero - Tue Jul 3 10:55:21 BST 2001 */ + #include + #include + #include + + /* This test demonstrate a failure in object_is_class which was fixed */ + + /* Create a class whose instance variables mirror the struct used for + Class structures in the runtime ... yes we're feeling evil today */ + @interface EvilClass : Object + { + Class super_class; + const char* name; + long version; + unsigned long info; + } + @end + + @implementation EvilClass + - (id) init + { + self = [super init]; + /* The following one is used in the runtime to mark classes */ + info = 0x1L; + return self; + } + @end + + int main (void) + { + /* Create an object of our EvilClass */ + EvilClass *evilObject = [EvilClass new]; + + /* Now check that the object is not a class object */ + if (object_is_class (evilObject)) + { + printf ("object_is_class failed\n"); + abort (); + } + + return 0; + } diff -Nrc3pad gcc-3.0/gcc/testsuite/objc/execute/object_is_meta_class.m gcc-3.0.1/gcc/testsuite/objc/execute/object_is_meta_class.m *** gcc-3.0/gcc/testsuite/objc/execute/object_is_meta_class.m Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/gcc/testsuite/objc/execute/object_is_meta_class.m Mon Jul 16 04:33:39 2001 *************** *** 0 **** --- 1,41 ---- + /* Contributed by Nicola Pero - Tue Jul 3 10:55:21 BST 2001 */ + #include + #include + #include + + /* This test demonstrate a failure in object_is_meta_class which was fixed */ + + @interface EvilClass : Object + { + Class super_class; + const char* name; + long version; + unsigned long info; + } + @end + + @implementation EvilClass + - (id) init + { + self = [super init]; + /* The following one is used in the runtime to mark meta classes */ + info = 0x2L; + return self; + } + @end + + int main (void) + { + /* Create an object of our EvilClass */ + EvilClass *evilObject = [EvilClass new]; + + /* Now check that the object is not a meta class object */ + if (object_is_meta_class (evilObject)) + { + printf ("object_is_meta_class failed\n"); + abort (); + } + + return 0; + } + diff -Nrc3pad gcc-3.0/gcc/toplev.c gcc-3.0.1/gcc/toplev.c *** gcc-3.0/gcc/toplev.c Tue Jun 12 20:10:25 2001 --- gcc-3.0.1/gcc/toplev.c Tue Jun 26 12:27:49 2001 *************** display_help () *** 3868,3874 **** printf (_(" -O[number] Set optimisation level to [number]\n")); printf (_(" -Os Optimise for space rather than speed\n")); ! for (i = sizeof (compiler_params); i--;) { const char *description = compiler_params[i].help; const int length = 21-strlen(compiler_params[i].option); --- 3868,3874 ---- printf (_(" -O[number] Set optimisation level to [number]\n")); printf (_(" -Os Optimise for space rather than speed\n")); ! for (i = LAST_PARAM; i--;) { const char *description = compiler_params[i].help; const int length = 21-strlen(compiler_params[i].option); diff -Nrc3pad gcc-3.0/gcc/tradcif.c gcc-3.0.1/gcc/tradcif.c *** gcc-3.0/gcc/tradcif.c Sun Jun 17 12:53:28 2001 --- gcc-3.0.1/gcc/tradcif.c Sun Aug 19 18:02:06 2001 *************** *** 1,6 **** /* A Bison parser, made from tradcif.y ! by GNU Bison version 1.28 */ #define YYBISON 1 /* Identify Bison output. */ --- 1,7 ---- /* A Bison parser, made from tradcif.y ! by GNU Bison version 1.27 ! */ #define YYBISON 1 /* Identify Bison output. */ *************** static const short yycheck[] = { 4, *** 225,231 **** }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/lib/bison.simple" ! /* This file comes from bison-1.28. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. --- 226,232 ---- }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/lib/bison.simple" ! /* This file comes from bison-1.27. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. *************** __yy_memcpy (char *to, char *from, unsig *** 438,444 **** #endif #endif ! #line 217 "/usr/lib/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. --- 439,445 ---- #endif #endif ! #line 216 "/usr/lib/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. *************** case 31: *** 953,959 **** break;} } /* the action file gets copied in in place of this dollarsign */ ! #line 543 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; --- 954,960 ---- break;} } /* the action file gets copied in in place of this dollarsign */ ! #line 542 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; diff -Nrc3pad gcc-3.0/gcc/tree.h gcc-3.0.1/gcc/tree.h *** gcc-3.0/gcc/tree.h Thu Jun 7 19:03:09 2001 --- gcc-3.0.1/gcc/tree.h Wed Jul 11 09:57:31 2001 *************** extern int div_and_round_double PARAMS *** 2861,2866 **** --- 2861,2869 ---- extern void emit_nop PARAMS ((void)); extern void expand_computed_goto PARAMS ((tree)); extern struct rtx_def *label_rtx PARAMS ((tree)); + extern bool parse_output_constraint PARAMS ((const char **, + int, int, int, + bool *, bool *, bool *)); extern void expand_asm_operands PARAMS ((tree, tree, tree, tree, int, const char *, int)); extern int any_pending_cleanups PARAMS ((int)); diff -Nrc3pad gcc-3.0/gcc/unwind-dw2-fde.c gcc-3.0.1/gcc/unwind-dw2-fde.c *** gcc-3.0/gcc/unwind-dw2-fde.c Mon Jun 11 13:15:07 2001 --- gcc-3.0.1/gcc/unwind-dw2-fde.c Wed Aug 1 12:19:29 2001 *************** Boston, MA 02111-1307, USA. */ *** 32,37 **** --- 32,38 ---- #include "tsystem.h" #include "dwarf2.h" #include "unwind.h" + #define NO_BASE_OF_ENCODED_VALUE #include "unwind-pe.h" #include "unwind-dw2-fde.h" #include "gthr.h" diff -Nrc3pad gcc-3.0/gcc/unwind-dw2.c gcc-3.0.1/gcc/unwind-dw2.c *** gcc-3.0/gcc/unwind-dw2.c Sat May 19 17:31:42 2001 --- gcc-3.0.1/gcc/unwind-dw2.c Thu Jul 19 11:13:30 2001 *************** typedef struct *** 106,111 **** --- 106,112 ---- unsigned char fde_encoding; unsigned char lsda_encoding; unsigned char saw_z; + void *eh_ptr; } _Unwind_FrameState; /* Read unaligned data from the instruction buffer. */ *************** extract_cie_info (struct dwarf_cie *cie, *** 220,225 **** --- 221,235 ---- const unsigned char *ret = NULL; _Unwind_Ptr tmp; + /* g++ v2 "eh" has pointer immediately following augmentation string, + so it must be handled first. */ + if (aug[0] == 'e' && aug[1] == 'h') + { + fs->eh_ptr = read_pointer (p); + p += sizeof (void *); + aug += 2; + } + /* Immediately following the augmentation are the code and data alignment and return address column. */ p = read_uleb128 (p, &tmp); fs->code_align = tmp; *************** extract_cie_info (struct dwarf_cie *cie, *** 242,256 **** /* Iterate over recognized augmentation subsequences. */ while (*aug != '\0') { - /* "eh" was used by g++ v2; recognize and skip. */ - if (aug[0] == 'e' && aug[1] == 'h') - { - p += sizeof (void *); - aug += 2; - } - /* "L" indicates a byte showing how the LSDA pointer is encoded. */ ! else if (aug[0] == 'L') { fs->lsda_encoding = *p++; aug += 1; --- 252,259 ---- /* Iterate over recognized augmentation subsequences. */ while (*aug != '\0') { /* "L" indicates a byte showing how the LSDA pointer is encoded. */ ! if (aug[0] == 'L') { fs->lsda_encoding = *p++; aug += 1; *************** uw_frame_state_for (struct _Unwind_Conte *** 937,944 **** --- 940,1008 ---- return _URC_NO_REASON; } + + typedef struct frame_state + { + void *cfa; + void *eh_ptr; + long cfa_offset; + long args_size; + long reg_or_offset[DWARF_FRAME_REGISTERS+1]; + unsigned short cfa_reg; + unsigned short retaddr_column; + char saved[DWARF_FRAME_REGISTERS+1]; + } frame_state; + + struct frame_state * __frame_state_for (void *, struct frame_state *); + + /* Called from pre-G++ 3.0 __throw to find the registers to restore for + a given PC_TARGET. The caller should allocate a local variable of + `struct frame_state' and pass its address to STATE_IN. */ + + struct frame_state * + __frame_state_for (void *pc_target, struct frame_state *state_in) + { + struct _Unwind_Context context; + _Unwind_FrameState fs; + int reg; + + memset (&context, 0, sizeof (struct _Unwind_Context)); + context.ra = pc_target + 1; + + if (uw_frame_state_for (&context, &fs) != _URC_NO_REASON) + return 0; + + /* We have no way to pass a location expression for the CFA to our + caller. It wouldn't understand it anyway. */ + if (fs.cfa_how == CFA_EXP) + return 0; + + for (reg = 0; reg < DWARF_FRAME_REGISTERS + 1; reg++) + { + state_in->saved[reg] = fs.regs.reg[reg].how; + switch (state_in->saved[reg]) + { + case REG_SAVED_REG: + state_in->reg_or_offset[reg] = fs.regs.reg[reg].loc.reg; + break; + case REG_SAVED_OFFSET: + state_in->reg_or_offset[reg] = fs.regs.reg[reg].loc.offset; + break; + default: + state_in->reg_or_offset[reg] = 0; + break; + } + } + state_in->cfa_offset = fs.cfa_offset; + state_in->cfa_reg = fs.cfa_reg; + state_in->retaddr_column = fs.retaddr_column; + state_in->args_size = context.args_size; + state_in->eh_ptr = fs.eh_ptr; + return state_in; + } + static void uw_update_context_1 (struct _Unwind_Context *context, _Unwind_FrameState *fs) { diff -Nrc3pad gcc-3.0/gcc/unwind-pe.h gcc-3.0.1/gcc/unwind-pe.h *** gcc-3.0/gcc/unwind-pe.h Sat Jun 9 10:58:28 2001 --- gcc-3.0.1/gcc/unwind-pe.h Wed Aug 1 12:19:29 2001 *************** size_of_encoded_value (unsigned char enc *** 76,81 **** --- 76,83 ---- __gxx_abort (); } + #ifndef NO_BASE_OF_ENCODED_VALUE + /* Given an encoding and an _Unwind_Context, return the base to which the encoding is relative. This base may then be passed to read_encoded_value_with_base for use when the _Unwind_Context is *************** base_of_encoded_value (unsigned char enc *** 104,109 **** --- 106,113 ---- __gxx_abort (); } + #endif + /* Load an encoded value from memory at P. The value is returned in VAL; The function returns P incremented past the value. BASE is as given by base_of_encoded_value for this encoding in the appropriate context. */ *************** read_encoded_value_with_base (unsigned c *** 220,225 **** --- 224,231 ---- return p; } + #ifndef NO_BASE_OF_ENCODED_VALUE + /* Like read_encoded_value_with_base, but get the base from the context rather than providing it directly. */ *************** read_encoded_value (struct _Unwind_Conte *** 231,236 **** --- 237,244 ---- base_of_encoded_value (encoding, context), p, val); } + + #endif /* Read an unsigned leb128 value from P, store the value in VAL, return P incremented past the value. */ diff -Nrc3pad gcc-3.0/gcc/varasm.c gcc-3.0.1/gcc/varasm.c *** gcc-3.0/gcc/varasm.c Thu May 17 11:07:33 2001 --- gcc-3.0.1/gcc/varasm.c Mon Aug 6 10:24:21 2001 *************** assemble_variable (decl, top_level, at_e *** 1238,1243 **** --- 1238,1244 ---- unsigned int align; int reloc = 0; enum in_section saved_in_section; + rtx decl_rtl; last_assemble_variable_decl = 0; *************** assemble_variable (decl, top_level, at_e *** 1319,1324 **** --- 1320,1328 ---- if (TREE_ASM_WRITTEN (decl)) return; + /* Make sure ENCODE_SECTION_INFO is invoked before we set ASM_WRITTEN. */ + decl_rtl = DECL_RTL (decl); + TREE_ASM_WRITTEN (decl) = 1; /* Do no output if -fsyntax-only. */ *************** assemble_variable (decl, top_level, at_e *** 1334,1340 **** goto finish; } ! name = XSTR (XEXP (DECL_RTL (decl), 0), 0); if (TREE_PUBLIC (decl) && DECL_NAME (decl) && ! first_global_object_name && ! (DECL_COMMON (decl) && (DECL_INITIAL (decl) == 0 --- 1338,1344 ---- goto finish; } ! name = XSTR (XEXP (decl_rtl, 0), 0); if (TREE_PUBLIC (decl) && DECL_NAME (decl) && ! first_global_object_name && ! (DECL_COMMON (decl) && (DECL_INITIAL (decl) == 0 *************** output_constant_def_contents (exp, reloc *** 3257,3263 **** /* Output the value of EXP. */ output_constant (exp, (TREE_CODE (exp) == STRING_CST ! ? TREE_STRING_LENGTH (exp) : int_size_in_bytes (TREE_TYPE (exp)))); } --- 3261,3268 ---- /* Output the value of EXP. */ output_constant (exp, (TREE_CODE (exp) == STRING_CST ! ? MAX (TREE_STRING_LENGTH (exp), ! int_size_in_bytes (TREE_TYPE (exp))) : int_size_in_bytes (TREE_TYPE (exp)))); } *************** free_varasm_status (f) *** 3366,3372 **** f->varasm = NULL; } ! enum kind { RTX_DOUBLE, RTX_INT }; /* Express an rtx for a constant integer (perhaps symbolic) as the sum of a symbol or label plus an explicit integer. --- 3371,3377 ---- f->varasm = NULL; } ! enum kind { RTX_DOUBLE, RTX_INT, RTX_UNSPEC }; /* Express an rtx for a constant integer (perhaps symbolic) as the sum of a symbol or label plus an explicit integer. *************** decode_rtx_const (mode, x, value) *** 3434,3440 **** abort (); } ! if (value->kind == RTX_INT && value->un.addr.base != 0) switch (GET_CODE (value->un.addr.base)) { case SYMBOL_REF: --- 3439,3462 ---- abort (); } ! if (value->kind == RTX_INT && value->un.addr.base != 0 ! && GET_CODE (value->un.addr.base) == UNSPEC) ! { ! /* For a simple UNSPEC, the base is set to the ! operand, the kind field is set to the index of ! the unspec expression. ! Together with the code below, in case that ! the operand is a SYMBOL_REF or LABEL_REF, ! the address of the string or the code_label ! is taken as base. */ ! if (XVECLEN (value->un.addr.base, 0) == 1) ! { ! value->kind = RTX_UNSPEC + XINT (value->un.addr.base, 1); ! value->un.addr.base = XVECEXP (value->un.addr.base, 0, 0); ! } ! } ! ! if (value->kind != RTX_DOUBLE && value->un.addr.base != 0) switch (GET_CODE (value->un.addr.base)) { case SYMBOL_REF: *************** simplify_subtraction (x) *** 3464,3470 **** decode_rtx_const (GET_MODE (x), XEXP (x, 0), &val0); decode_rtx_const (GET_MODE (x), XEXP (x, 1), &val1); ! if (val0.un.addr.base == val1.un.addr.base) return GEN_INT (val0.un.addr.offset - val1.un.addr.offset); return x; } --- 3486,3493 ---- decode_rtx_const (GET_MODE (x), XEXP (x, 0), &val0); decode_rtx_const (GET_MODE (x), XEXP (x, 1), &val1); ! if (val0.kind != RTX_DOUBLE && val0.kind == val1.kind ! && val0.un.addr.base == val1.un.addr.base) return GEN_INT (val0.un.addr.offset - val1.un.addr.offset); return x; } *************** weak_finish () *** 4777,4787 **** for (t = weak_decls; t; t = t->next) { if (t->name) ! { ! ASM_WEAKEN_LABEL (asm_out_file, t->name); ! if (t->value) ! ASM_OUTPUT_DEF (asm_out_file, t->name, t->value); ! } } } #endif --- 4800,4806 ---- for (t = weak_decls; t; t = t->next) { if (t->name) ! ASM_OUTPUT_WEAK_ALIAS (asm_out_file, t->name, t->value); } } #endif diff -Nrc3pad gcc-3.0/gcc/version.c gcc-3.0.1/gcc/version.c *** gcc-3.0/gcc/version.c Sun Jun 17 12:44:25 2001 --- gcc-3.0.1/gcc/version.c Sun Aug 19 14:08:39 2001 *************** *** 1,4 **** #include "gansidecl.h" #include "version.h" ! const char *const version_string = "3.0"; --- 1,4 ---- #include "gansidecl.h" #include "version.h" ! const char *const version_string = "3.0.1"; diff -Nrc3pad gcc-3.0/gnats.html gcc-3.0.1/gnats.html *** gcc-3.0/gnats.html Sun Jun 17 12:49:59 2001 --- gcc-3.0.1/gnats.html Sun Aug 19 17:45:07 2001 *************** *** 7,13 ****

      gccbug and gnatsweb

      !

      GNATS is the GNU bug tracking system, and it is now used to track GCC bug reports, as well. Before submitting a bug report, please read the general instructions.

      --- 7,13 ----

      gccbug and gnatsweb

      !

      GNATS is the GNU bug tracking system, and it is now used to track GCC bug reports, as well. Before submitting a bug report, please read the general instructions.

      diff -Nrc3pad gcc-3.0/include/ChangeLog gcc-3.0.1/include/ChangeLog *** gcc-3.0/include/ChangeLog Sun Jun 17 12:40:30 2001 --- gcc-3.0.1/include/ChangeLog Sun Aug 19 14:08:25 2001 *************** *** 1,3 **** --- 1,11 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/libf2c/ChangeLog gcc-3.0.1/libf2c/ChangeLog *** gcc-3.0/libf2c/ChangeLog Sun Jun 17 12:40:35 2001 --- gcc-3.0.1/libf2c/ChangeLog Sun Aug 19 14:08:26 2001 *************** *** 1,3 **** --- 1,11 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/libf2c/libF77/Version.c gcc-3.0.1/libf2c/libF77/Version.c *** gcc-3.0/libf2c/libF77/Version.c Sun Jun 17 00:16:38 2001 --- gcc-3.0.1/libf2c/libF77/Version.c Sun Aug 19 13:27:48 2001 *************** static char junk[] = "\n@(#)LIBF77 VERSI *** 3,9 **** /* */ ! char __G77_LIBF77_VERSION__[] = "0.5.26 20010617 (experimental)"; /* 2.00 11 June 1980. File version.c added to library. --- 3,9 ---- /* */ ! char __G77_LIBF77_VERSION__[] = "0.5.26 20010819 (release)"; /* 2.00 11 June 1980. File version.c added to library. diff -Nrc3pad gcc-3.0/libf2c/libI77/Version.c gcc-3.0.1/libf2c/libI77/Version.c *** gcc-3.0/libf2c/libI77/Version.c Sun Jun 17 00:16:38 2001 --- gcc-3.0.1/libf2c/libI77/Version.c Sun Aug 19 13:27:50 2001 *************** static char junk[] = "\n@(#) LIBI77 VERS *** 3,9 **** /* */ ! char __G77_LIBI77_VERSION__[] = "0.5.26 20010617 (experimental)"; /* 2.01 $ format added --- 3,9 ---- /* */ ! char __G77_LIBI77_VERSION__[] = "0.5.26 20010819 (release)"; /* 2.01 $ format added diff -Nrc3pad gcc-3.0/libf2c/libU77/Version.c gcc-3.0.1/libf2c/libU77/Version.c *** gcc-3.0/libf2c/libU77/Version.c Sun Jun 17 00:16:38 2001 --- gcc-3.0.1/libf2c/libU77/Version.c Sun Aug 19 13:27:51 2001 *************** *** 1,6 **** static char junk[] = "\n@(#) LIBU77 VERSION 19980709\n"; ! char __G77_LIBU77_VERSION__[] = "0.5.26 20010617 (experimental)"; #include --- 1,6 ---- static char junk[] = "\n@(#) LIBU77 VERSION 19980709\n"; ! char __G77_LIBU77_VERSION__[] = "0.5.26 20010819 (release)"; #include diff -Nrc3pad gcc-3.0/libffi/ChangeLog gcc-3.0.1/libffi/ChangeLog *** gcc-3.0/libffi/ChangeLog Sun Jun 17 12:40:40 2001 --- gcc-3.0.1/libffi/ChangeLog Sun Aug 19 14:08:28 2001 *************** *** 1,3 **** --- 1,30 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-07-16 Rainer Orth + + * src/x86/sysv.S: Avoid gas-only .balign directive. + Use C style comments. + + 2001-07-16 Rainer Orth + + * src/alpha/ffi.c (ffi_prep_closure): Avoid gas-only mnemonic. + Fixes PR bootstrap/3563. + + 2001-06-26 Rainer Orth + + * src/alpha/osf.S (ffi_closure_osf): Use .rdata for ECOFF. + + 2001-06-25 Rainer Orth + + * configure.in: Recognize sparc*-sun-* host. + * configure: Regenerate. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/libffi/configure gcc-3.0.1/libffi/configure *** gcc-3.0/libffi/configure Sun May 20 11:57:41 2001 --- gcc-3.0.1/libffi/configure Mon Jun 25 12:57:42 2001 *************** program_suffix=NONE *** 53,59 **** program_transform_name=s,x,x, silent= site= - sitefile= srcdir= target=NONE verbose= --- 53,58 ---- *************** Configuration: *** 168,174 **** --help print this message --no-create do not create output files --quiet, --silent do not print \`checking...' messages - --site-file=FILE use FILE as the site file --version print the version of autoconf that created configure Directory and file names: --prefix=PREFIX install architecture-independent files in PREFIX --- 167,172 ---- *************** EOF *** 339,349 **** -site=* | --site=* | --sit=*) site="$ac_optarg" ;; - -site-file | --site-file | --site-fil | --site-fi | --site-f) - ac_prev=sitefile ;; - -site-file=* | --site-file=* | --site-fil=* | --site-fi=* | --site-f=*) - sitefile="$ac_optarg" ;; - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) --- 337,342 ---- *************** fi *** 509,524 **** srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` # Prefer explicitly selected file to automatically selected ones. ! if test -z "$sitefile"; then ! if test -z "$CONFIG_SITE"; then ! if test "x$prefix" != xNONE; then ! CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" ! else ! CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" ! fi fi - else - CONFIG_SITE="$sitefile" fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then --- 502,513 ---- srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` # Prefer explicitly selected file to automatically selected ones. ! if test -z "$CONFIG_SITE"; then ! if test "x$prefix" != xNONE; then ! CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" ! else ! CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then *************** else *** 557,568 **** fi echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 ! echo "configure:561: checking for Cygwin environment" >&5 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:550: checking for Cygwin environment" >&5 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else --- 562,568 ---- return __CYGWIN__; ; return 0; } EOF ! if { (eval echo configure:566: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else *************** echo "$ac_t""$ac_cv_cygwin" 1>&6 *** 590,608 **** CYGWIN= test "$ac_cv_cygwin" = yes && CYGWIN=yes echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 ! echo "configure:594: checking for mingw32 environment" >&5 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else --- 579,597 ---- CYGWIN= test "$ac_cv_cygwin" = yes && CYGWIN=yes echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 ! echo "configure:583: checking for mingw32 environment" >&5 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else *************** else { echo "configure: error: can not r *** 673,679 **** fi echo $ac_n "checking host system type""... $ac_c" 1>&6 ! echo "configure:677: checking host system type" >&5 host_alias=$host case "$host_alias" in --- 662,668 ---- fi echo $ac_n "checking host system type""... $ac_c" 1>&6 ! echo "configure:666: checking host system type" >&5 host_alias=$host case "$host_alias" in *************** else *** 764,770 **** fi echo $ac_n "checking build system type""... $ac_c" 1>&6 ! echo "configure:768: checking build system type" >&5 build_alias=$build case "$build_alias" in --- 753,759 ---- fi echo $ac_n "checking build system type""... $ac_c" 1>&6 ! echo "configure:757: checking build system type" >&5 build_alias=$build case "$build_alias" in *************** echo "$ac_t""$build" 1>&6 *** 784,790 **** # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:788: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 773,779 ---- # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:777: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -z "$CC"; then *** 814,820 **** # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:818: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 803,809 ---- # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:807: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 865,871 **** # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:869: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 854,860 ---- # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:858: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 897,903 **** fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 ! echo "configure:901: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. --- 886,892 ---- fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 ! echo "configure:890: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. *************** cross_compiling=$ac_cv_prog_cc_cross *** 908,919 **** cat > conftest.$ac_ext << EOF ! #line 912 "configure" #include "confdefs.h" main(){return(0);} EOF ! if { (eval echo configure:917: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then --- 897,908 ---- cat > conftest.$ac_ext << EOF ! #line 901 "configure" #include "confdefs.h" main(){return(0);} EOF ! if { (eval echo configure:906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then *************** if test $ac_cv_prog_cc_works = no; then *** 939,950 **** { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 ! echo "configure:943: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ! echo "configure:948: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 928,939 ---- { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 ! echo "configure:932: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ! echo "configure:937: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 953,959 **** yes; #endif EOF ! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:957: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no --- 942,948 ---- yes; #endif EOF ! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:946: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no *************** ac_test_CFLAGS="${CFLAGS+set}" *** 972,978 **** ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ! echo "configure:976: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 961,967 ---- ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ! echo "configure:965: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** ac_prog=ld *** 1015,1021 **** if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 ! echo "configure:1019: checking for ld used by GCC" >&5 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw --- 1004,1010 ---- if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 ! echo "configure:1008: checking for ld used by GCC" >&5 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw *************** echo "configure:1019: checking for ld us *** 1045,1054 **** esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 ! echo "configure:1049: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 ! echo "configure:1052: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 1034,1043 ---- esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 ! echo "configure:1038: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 ! echo "configure:1041: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 1083,1089 **** fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 ! echo "configure:1087: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1072,1078 ---- fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 ! echo "configure:1076: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** with_gnu_ld=$lt_cv_prog_gnu_ld *** 1100,1106 **** echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 ! echo "configure:1104: checking for $LD option to reload object files" >&5 if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1089,1095 ---- echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 ! echo "configure:1093: checking for $LD option to reload object files" >&5 if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** reload_flag=$lt_cv_ld_reload_flag *** 1112,1118 **** test -n "$reload_flag" && reload_flag=" $reload_flag" echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 ! echo "configure:1116: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1101,1107 ---- test -n "$reload_flag" && reload_flag=" $reload_flag" echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 ! echo "configure:1105: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** NM="$lt_cv_path_NM" *** 1150,1156 **** echo "$ac_t""$NM" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 ! echo "configure:1154: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1139,1145 ---- echo "$ac_t""$NM" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 ! echo "configure:1143: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1171,1177 **** fi echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 ! echo "configure:1175: checking how to recognise dependant libraries" >&5 if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1160,1166 ---- fi echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 ! echo "configure:1164: checking how to recognise dependant libraries" >&5 if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** file_magic_cmd=$lt_cv_file_magic_cmd *** 1335,1347 **** deplibs_check_method=$lt_cv_deplibs_check_method echo $ac_n "checking for object suffix""... $ac_c" 1>&6 ! echo "configure:1339: checking for object suffix" >&5 if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftest* echo 'int i = 1;' > conftest.$ac_ext ! if { (eval echo configure:1345: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; --- 1324,1336 ---- deplibs_check_method=$lt_cv_deplibs_check_method echo $ac_n "checking for object suffix""... $ac_c" 1>&6 ! echo "configure:1328: checking for object suffix" >&5 if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftest* echo 'int i = 1;' > conftest.$ac_ext ! if { (eval echo configure:1334: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; *************** ac_objext=$ac_cv_objext *** 1361,1367 **** echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 ! echo "configure:1365: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1350,1356 ---- echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 ! echo "configure:1354: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1371,1380 **** rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= ! if { (eval echo configure:1375: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in ! *.c | *.o | *.obj | *.ilk | *.pdb) ;; *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; esac done --- 1360,1369 ---- rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= ! if { (eval echo configure:1364: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in ! *.c | *.o | *.obj) ;; *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; esac done *************** case $deplibs_check_method in *** 1404,1410 **** file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 ! echo "configure:1408: checking for ${ac_tool_prefix}file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1393,1399 ---- file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 ! echo "configure:1397: checking for ${ac_tool_prefix}file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1466,1472 **** if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo $ac_n "checking for file""... $ac_c" 1>&6 ! echo "configure:1470: checking for file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1455,1461 ---- if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo $ac_n "checking for file""... $ac_c" 1>&6 ! echo "configure:1459: checking for file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** esac *** 1537,1543 **** # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1541: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1526,1532 ---- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1530: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -n "$ac_tool_prefix"; then *** 1569,1575 **** # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1573: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1558,1564 ---- # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1562: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1604,1610 **** # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1608: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1593,1599 ---- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1597: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -n "$ac_tool_prefix"; then *** 1636,1642 **** # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1640: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1625,1631 ---- # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1629: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** test x"$pic_mode" = xno && libtool_flags *** 1703,1710 **** case $host in *-*-irix6*) # Find out which ABI we are using. ! echo '#line 1707 "configure"' > conftest.$ac_ext ! if { (eval echo configure:1708: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" --- 1692,1699 ---- case $host in *-*-irix6*) # Find out which ABI we are using. ! echo '#line 1696 "configure"' > conftest.$ac_ext ! if { (eval echo configure:1697: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" *************** case $host in *** 1725,1731 **** SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 ! echo "configure:1729: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1714,1720 ---- SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 ! echo "configure:1718: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** ac_link='${CC-cc} -o conftest${ac_exeext *** 1738,1751 **** cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else --- 1727,1740 ---- cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else *************** exec 5>>./config.log *** 1873,1879 **** # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:1877: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 1862,1868 ---- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:1866: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** test -z "$INSTALL_SCRIPT" && INSTALL_SCR *** 1926,1932 **** test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 ! echo "configure:1930: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile --- 1915,1921 ---- test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 ! echo "configure:1919: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile *************** test "$program_suffix" != NONE && *** 1983,1989 **** test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 ! echo "configure:1987: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 1972,1978 ---- test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 ! echo "configure:1976: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** fi *** 2022,2028 **** missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 ! echo "configure:2026: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 2011,2017 ---- missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 ! echo "configure:2015: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 2035,2041 **** fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 ! echo "configure:2039: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 2024,2030 ---- fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 ! echo "configure:2028: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 2048,2054 **** fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 ! echo "configure:2052: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 2037,2043 ---- fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 ! echo "configure:2041: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 2061,2067 **** fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 ! echo "configure:2065: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 2050,2056 ---- fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 ! echo "configure:2054: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 2074,2080 **** fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 ! echo "configure:2078: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 2063,2069 ---- fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 ! echo "configure:2067: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** fi *** 2091,2097 **** echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 ! echo "configure:2095: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2080,2086 ---- echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 ! echo "configure:2084: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 2101,2110 **** rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= ! if { (eval echo configure:2105: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in ! *.c | *.o | *.obj | *.ilk | *.pdb) ;; *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; esac done --- 2090,2099 ---- rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= ! if { (eval echo configure:2094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in ! *.c | *.o | *.obj) ;; *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; esac done *************** echo "$ac_t""${ac_cv_exeext}" 1>&6 *** 2122,2128 **** ac_exeext=$EXEEXT echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 ! echo "configure:2126: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" --- 2111,2117 ---- ac_exeext=$EXEEXT echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 ! echo "configure:2115: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" *************** fi *** 2148,2154 **** # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2152: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2137,2143 ---- # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2141: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -z "$CC"; then *** 2178,2184 **** # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2182: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2167,2173 ---- # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2171: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 2229,2235 **** # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2233: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2218,2224 ---- # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2222: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 2261,2267 **** fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 ! echo "configure:2265: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. --- 2250,2256 ---- fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 ! echo "configure:2254: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. *************** cross_compiling=$ac_cv_prog_cc_cross *** 2272,2283 **** cat > conftest.$ac_ext << EOF ! #line 2276 "configure" #include "confdefs.h" main(){return(0);} EOF ! if { (eval echo configure:2281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then --- 2261,2272 ---- cat > conftest.$ac_ext << EOF ! #line 2265 "configure" #include "confdefs.h" main(){return(0);} EOF ! if { (eval echo configure:2270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then *************** if test $ac_cv_prog_cc_works = no; then *** 2303,2314 **** { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 ! echo "configure:2307: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ! echo "configure:2312: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2292,2303 ---- { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 ! echo "configure:2296: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ! echo "configure:2301: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 2317,2323 **** yes; #endif EOF ! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2321: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no --- 2306,2312 ---- yes; #endif EOF ! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2310: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no *************** ac_test_CFLAGS="${CFLAGS+set}" *** 2336,2342 **** ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ! echo "configure:2340: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2325,2331 ---- ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ! echo "configure:2329: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** i*86-*-win32*) TARGET=X86_WIN32; TARGETD *** 2384,2390 **** i*86-*-cygwin*) TARGET=X86_WIN32; TARGETDIR=x86;; i*86-*-mingw*) TARGET=X86_WIN32; TARGETDIR=x86;; sparc-sun-4*) TARGET=SPARC; TARGETDIR=sparc;; ! sparc-sun-*) TARGET=SPARC; TARGETDIR=sparc;; sparc-*-linux*) TARGET=SPARC; TARGETDIR=sparc;; sparc64-*-linux*) TARGET=SPARC; TARGETDIR=sparc;; alpha*-*-linux* | alpha*-*-osf*) TARGET=ALPHA; TARGETDIR=alpha;; --- 2373,2379 ---- i*86-*-cygwin*) TARGET=X86_WIN32; TARGETDIR=x86;; i*86-*-mingw*) TARGET=X86_WIN32; TARGETDIR=x86;; sparc-sun-4*) TARGET=SPARC; TARGETDIR=sparc;; ! sparc*-sun-*) TARGET=SPARC; TARGETDIR=sparc;; sparc-*-linux*) TARGET=SPARC; TARGETDIR=sparc;; sparc64-*-linux*) TARGET=SPARC; TARGETDIR=sparc;; alpha*-*-linux* | alpha*-*-osf*) TARGET=ALPHA; TARGETDIR=alpha;; *************** else *** 2491,2497 **** fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 ! echo "configure:2495: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= --- 2480,2486 ---- fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 ! echo "configure:2484: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= *************** else *** 2506,2518 **** # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2516: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : --- 2495,2507 ---- # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2505: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : *************** else *** 2523,2535 **** rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2533: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : --- 2512,2524 ---- rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2522: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : *************** else *** 2540,2552 **** rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2550: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : --- 2529,2541 ---- rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2539: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : *************** fi *** 2571,2582 **** echo "$ac_t""$CPP" 1>&6 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 ! echo "configure:2575: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include --- 2560,2571 ---- echo "$ac_t""$CPP" 1>&6 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 ! echo "configure:2564: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include *************** else *** 2584,2590 **** #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2588: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 2573,2579 ---- #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2577: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** rm -f conftest* *** 2601,2607 **** if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF --- 2590,2596 ---- if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF *************** fi *** 2619,2625 **** if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF --- 2608,2614 ---- if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF *************** if test "$cross_compiling" = yes; then *** 2640,2646 **** : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') --- 2629,2635 ---- : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') *************** if (XOR (islower (i), ISLOWER (i)) || to *** 2651,2657 **** exit (0); } EOF ! if { (eval echo configure:2655: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else --- 2640,2646 ---- exit (0); } EOF ! if { (eval echo configure:2644: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else *************** fi *** 2677,2688 **** for ac_func in memcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:2681: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:2670: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 2694,2700 ---- ; return 0; } EOF ! if { (eval echo configure:2698: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 2732,2750 **** # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 ! echo "configure:2736: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF ! if { (eval echo configure:2748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else --- 2721,2739 ---- # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 ! echo "configure:2725: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF ! if { (eval echo configure:2737: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else *************** EOF *** 2765,2776 **** fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 ! echo "configure:2769: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:2758: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else --- 2787,2793 ---- char *p = (char *) alloca(1); ; return 0; } EOF ! if { (eval echo configure:2791: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else *************** EOF *** 2830,2841 **** echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 ! echo "configure:2834: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:2823: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 *** 2860,2871 **** if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:2864: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:2853: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 2877,2883 ---- ; return 0; } EOF ! if { (eval echo configure:2881: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 2915,2921 **** fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 ! echo "configure:2919: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2904,2910 ---- fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 ! echo "configure:2908: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 2923,2929 **** ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else --- 2931,2937 ---- exit (find_stack_direction() < 0); } EOF ! if { (eval echo configure:2935: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else *************** fi *** 2965,2971 **** echo $ac_n "checking size of short""... $ac_c" 1>&6 ! echo "configure:2969: checking size of short" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_short'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2954,2960 ---- echo $ac_n "checking size of short""... $ac_c" 1>&6 ! echo "configure:2958: checking size of short" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_short'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 2973,2979 **** { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() --- 2962,2968 ---- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() *************** main() *** 2984,2990 **** exit(0); } EOF ! if { (eval echo configure:2988: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_short=`cat conftestval` else --- 2973,2979 ---- exit(0); } EOF ! if { (eval echo configure:2977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_short=`cat conftestval` else *************** EOF *** 3004,3010 **** echo $ac_n "checking size of int""... $ac_c" 1>&6 ! echo "configure:3008: checking size of int" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2993,2999 ---- echo $ac_n "checking size of int""... $ac_c" 1>&6 ! echo "configure:2997: checking size of int" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 3012,3018 **** { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() --- 3001,3007 ---- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() *************** main() *** 3023,3029 **** exit(0); } EOF ! if { (eval echo configure:3027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_int=`cat conftestval` else --- 3012,3018 ---- exit(0); } EOF ! if { (eval echo configure:3016: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_int=`cat conftestval` else *************** EOF *** 3043,3049 **** echo $ac_n "checking size of long""... $ac_c" 1>&6 ! echo "configure:3047: checking size of long" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 3032,3038 ---- echo $ac_n "checking size of long""... $ac_c" 1>&6 ! echo "configure:3036: checking size of long" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 3051,3057 **** { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() --- 3040,3046 ---- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() *************** main() *** 3062,3068 **** exit(0); } EOF ! if { (eval echo configure:3066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_long=`cat conftestval` else --- 3051,3057 ---- exit(0); } EOF ! if { (eval echo configure:3055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_long=`cat conftestval` else *************** EOF *** 3082,3088 **** echo $ac_n "checking size of long long""... $ac_c" 1>&6 ! echo "configure:3086: checking size of long long" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 3071,3077 ---- echo $ac_n "checking size of long long""... $ac_c" 1>&6 ! echo "configure:3075: checking size of long long" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 3090,3096 **** { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() --- 3079,3085 ---- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() *************** main() *** 3101,3107 **** exit(0); } EOF ! if { (eval echo configure:3105: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_long_long=`cat conftestval` else --- 3090,3096 ---- exit(0); } EOF ! if { (eval echo configure:3094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_long_long=`cat conftestval` else *************** EOF *** 3121,3127 **** echo $ac_n "checking size of float""... $ac_c" 1>&6 ! echo "configure:3125: checking size of float" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_float'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 3110,3116 ---- echo $ac_n "checking size of float""... $ac_c" 1>&6 ! echo "configure:3114: checking size of float" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_float'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 3129,3135 **** { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() --- 3118,3124 ---- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() *************** main() *** 3140,3146 **** exit(0); } EOF ! if { (eval echo configure:3144: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_float=`cat conftestval` else --- 3129,3135 ---- exit(0); } EOF ! if { (eval echo configure:3133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_float=`cat conftestval` else *************** EOF *** 3160,3166 **** echo $ac_n "checking size of double""... $ac_c" 1>&6 ! echo "configure:3164: checking size of double" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_double'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 3149,3155 ---- echo $ac_n "checking size of double""... $ac_c" 1>&6 ! echo "configure:3153: checking size of double" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_double'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 3168,3174 **** { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() --- 3157,3163 ---- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() *************** main() *** 3179,3185 **** exit(0); } EOF ! if { (eval echo configure:3183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_double=`cat conftestval` else --- 3168,3174 ---- exit(0); } EOF ! if { (eval echo configure:3172: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_double=`cat conftestval` else *************** EOF *** 3199,3205 **** echo $ac_n "checking size of long double""... $ac_c" 1>&6 ! echo "configure:3203: checking size of long double" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_long_double'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 3188,3194 ---- echo $ac_n "checking size of long double""... $ac_c" 1>&6 ! echo "configure:3192: checking size of long double" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_long_double'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 3207,3213 **** { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() --- 3196,3202 ---- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() *************** main() *** 3218,3224 **** exit(0); } EOF ! if { (eval echo configure:3222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_long_double=`cat conftestval` else --- 3207,3213 ---- exit(0); } EOF ! if { (eval echo configure:3211: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_long_double=`cat conftestval` else *************** EOF *** 3239,3245 **** echo $ac_n "checking size of void *""... $ac_c" 1>&6 ! echo "configure:3243: checking size of void *" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_void_p'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 3228,3234 ---- echo $ac_n "checking size of void *""... $ac_c" 1>&6 ! echo "configure:3232: checking size of void *" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_void_p'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 3247,3253 **** { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() --- 3236,3242 ---- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() *************** main() *** 3258,3264 **** exit(0); } EOF ! if { (eval echo configure:3262: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_void_p=`cat conftestval` else --- 3247,3253 ---- exit(0); } EOF ! if { (eval echo configure:3251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_void_p=`cat conftestval` else *************** EOF *** 3278,3291 **** echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 ! echo "configure:3282: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include --- 3267,3280 ---- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 ! echo "configure:3271: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include *************** int main() { *** 3296,3306 **** #endif ; return 0; } EOF ! if { (eval echo configure:3300: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include --- 3285,3295 ---- #endif ; return 0; } EOF ! if { (eval echo configure:3289: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include *************** int main() { *** 3311,3317 **** #endif ; return 0; } EOF ! if { (eval echo configure:3315: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else --- 3300,3306 ---- #endif ; return 0; } EOF ! if { (eval echo configure:3304: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else *************** if test "$cross_compiling" = yes; then *** 3331,3337 **** { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else --- 3333,3339 ---- exit (u.c[sizeof (long) - 1] == 1); } EOF ! if { (eval echo configure:3337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else diff -Nrc3pad gcc-3.0/libffi/configure.in gcc-3.0.1/libffi/configure.in *** gcc-3.0/libffi/configure.in Sun May 6 05:54:48 2001 --- gcc-3.0.1/libffi/configure.in Mon Jun 25 12:57:42 2001 *************** i*86-*-win32*) TARGET=X86_WIN32; TARGETD *** 48,54 **** i*86-*-cygwin*) TARGET=X86_WIN32; TARGETDIR=x86;; i*86-*-mingw*) TARGET=X86_WIN32; TARGETDIR=x86;; sparc-sun-4*) TARGET=SPARC; TARGETDIR=sparc;; ! sparc-sun-*) TARGET=SPARC; TARGETDIR=sparc;; sparc-*-linux*) TARGET=SPARC; TARGETDIR=sparc;; sparc64-*-linux*) TARGET=SPARC; TARGETDIR=sparc;; alpha*-*-linux* | alpha*-*-osf*) TARGET=ALPHA; TARGETDIR=alpha;; --- 48,54 ---- i*86-*-cygwin*) TARGET=X86_WIN32; TARGETDIR=x86;; i*86-*-mingw*) TARGET=X86_WIN32; TARGETDIR=x86;; sparc-sun-4*) TARGET=SPARC; TARGETDIR=sparc;; ! sparc*-sun-*) TARGET=SPARC; TARGETDIR=sparc;; sparc-*-linux*) TARGET=SPARC; TARGETDIR=sparc;; sparc64-*-linux*) TARGET=SPARC; TARGETDIR=sparc;; alpha*-*-linux* | alpha*-*-osf*) TARGET=ALPHA; TARGETDIR=alpha;; diff -Nrc3pad gcc-3.0/libffi/src/alpha/ffi.c gcc-3.0.1/libffi/src/alpha/ffi.c *** gcc-3.0/libffi/src/alpha/ffi.c Sat Dec 9 23:13:18 2000 --- gcc-3.0.1/libffi/src/alpha/ffi.c Mon Jul 16 09:51:30 2001 *************** *** 1,5 **** /* ----------------------------------------------------------------------- ! ffi.c - Copyright (c) 1998 Cygnus Solutions Alpha Foreign Function Interface --- 1,5 ---- /* ----------------------------------------------------------------------- ! ffi.c - Copyright (c) 1998, 2001 Cygnus Solutions Alpha Foreign Function Interface *************** ffi_prep_closure (ffi_closure* closure, *** 168,175 **** closure->fun = fun; closure->user_data = user_data; ! /* Flush the Icache. */ ! asm volatile ("imb" : : : "memory"); return FFI_OK; } --- 168,180 ---- closure->fun = fun; closure->user_data = user_data; ! /* Flush the Icache. ! ! Tru64 UNIX as doesn't understand the imb mnemonic, so use call_pal ! instead, since both Compaq as and gas can handle it. ! ! 0x86 is PAL_imb in Tru64 UNIX . */ ! asm volatile ("call_pal 0x86" : : : "memory"); return FFI_OK; } diff -Nrc3pad gcc-3.0/libffi/src/alpha/osf.S gcc-3.0.1/libffi/src/alpha/osf.S *** gcc-3.0/libffi/src/alpha/osf.S Tue Jun 12 12:08:39 2001 --- gcc-3.0.1/libffi/src/alpha/osf.S Tue Jun 26 05:02:54 2001 *************** $LFE2: *** 251,257 **** --- 251,261 ---- .end ffi_closure_osf + #ifdef __ELF__ .section .rodata + #else + .rdata + #endif $load_table: .gprel32 $load_none # FFI_TYPE_VOID .gprel32 $load_32 # FFI_TYPE_INT diff -Nrc3pad gcc-3.0/libffi/src/x86/sysv.S gcc-3.0.1/libffi/src/x86/sysv.S *** gcc-3.0/libffi/src/x86/sysv.S Sun Aug 8 15:58:30 1999 --- gcc-3.0.1/libffi/src/x86/sysv.S Mon Jul 16 10:14:21 2001 *************** *** 1,5 **** /* ----------------------------------------------------------------------- ! sysv.S - Copyright (c) 1996, 1998 Cygnus Solutions X86 Foreign Function Interface --- 1,5 ---- /* ----------------------------------------------------------------------- ! sysv.S - Copyright (c) 1996, 1998, 2001 Cygnus Solutions X86 Foreign Function Interface *************** *** 32,39 **** .globl ffi_prep_args ! # This assumes we are using gas. ! .balign 16 .globl ffi_call_SYSV .type ffi_call_SYSV,@function --- 32,38 ---- .globl ffi_prep_args ! .align 4 .globl ffi_call_SYSV .type ffi_call_SYSV,@function *************** ffi_call_SYSV: *** 43,77 **** .LCFI0: movl %esp,%ebp .LCFI1: ! # Make room for all of the new args. movl 16(%ebp),%ecx subl %ecx,%esp movl %esp,%eax ! # Place all of the ffi_prep_args in position pushl 12(%ebp) pushl %eax call *8(%ebp) ! # Return stack to previous state and call the function addl $8,%esp call *28(%ebp) ! # Remove the space we pushed for the args movl 16(%ebp),%ecx addl %ecx,%esp ! # Load %ecx with the return type code movl 20(%ebp),%ecx ! # If the return value pointer is NULL, assume no return value. cmpl $0,24(%ebp) jne retint ! # Even if there is no space for the return value, we are ! # obliged to handle floating-point values. cmpl $FFI_TYPE_FLOAT,%ecx jne noretval fstp %st(0) --- 42,76 ---- .LCFI0: movl %esp,%ebp .LCFI1: ! /* Make room for all of the new args. */ movl 16(%ebp),%ecx subl %ecx,%esp movl %esp,%eax ! /* Place all of the ffi_prep_args in position */ pushl 12(%ebp) pushl %eax call *8(%ebp) ! /* Return stack to previous state and call the function */ addl $8,%esp call *28(%ebp) ! /* Remove the space we pushed for the args */ movl 16(%ebp),%ecx addl %ecx,%esp ! /* Load %ecx with the return type code */ movl 20(%ebp),%ecx ! /* If the return value pointer is NULL, assume no return value. */ cmpl $0,24(%ebp) jne retint ! /* Even if there is no space for the return value, we are ! obliged to handle floating-point values. */ cmpl $FFI_TYPE_FLOAT,%ecx jne noretval fstp %st(0) *************** ffi_call_SYSV: *** 81,87 **** retint: cmpl $FFI_TYPE_INT,%ecx jne retfloat ! # Load %ecx with the pointer to storage for the return value movl 24(%ebp),%ecx movl %eax,0(%ecx) jmp epilogue --- 80,86 ---- retint: cmpl $FFI_TYPE_INT,%ecx jne retfloat ! /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx movl %eax,0(%ecx) jmp epilogue *************** retint: *** 89,95 **** retfloat: cmpl $FFI_TYPE_FLOAT,%ecx jne retdouble ! # Load %ecx with the pointer to storage for the return value movl 24(%ebp),%ecx fstps (%ecx) jmp epilogue --- 88,94 ---- retfloat: cmpl $FFI_TYPE_FLOAT,%ecx jne retdouble ! /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx fstps (%ecx) jmp epilogue *************** retfloat: *** 97,103 **** retdouble: cmpl $FFI_TYPE_DOUBLE,%ecx jne retlongdouble ! # Load %ecx with the pointer to storage for the return value movl 24(%ebp),%ecx fstpl (%ecx) jmp epilogue --- 96,102 ---- retdouble: cmpl $FFI_TYPE_DOUBLE,%ecx jne retlongdouble ! /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx fstpl (%ecx) jmp epilogue *************** retdouble: *** 105,111 **** retlongdouble: cmpl $FFI_TYPE_LONGDOUBLE,%ecx jne retint64 ! # Load %ecx with the pointer to storage for the return value movl 24(%ebp),%ecx fstpt (%ecx) jmp epilogue --- 104,110 ---- retlongdouble: cmpl $FFI_TYPE_LONGDOUBLE,%ecx jne retint64 ! /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx fstpt (%ecx) jmp epilogue *************** retlongdouble: *** 113,125 **** retint64: cmpl $FFI_TYPE_SINT64,%ecx jne retstruct ! # Load %ecx with the pointer to storage for the return value movl 24(%ebp),%ecx movl %eax,0(%ecx) movl %edx,4(%ecx) retstruct: ! # Nothing to do! noretval: epilogue: --- 112,124 ---- retint64: cmpl $FFI_TYPE_SINT64,%ecx jne retstruct ! /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx movl %eax,0(%ecx) movl %edx,4(%ecx) retstruct: ! /* Nothing to do! */ noretval: epilogue: diff -Nrc3pad gcc-3.0/libiberty/ChangeLog gcc-3.0.1/libiberty/ChangeLog *** gcc-3.0/libiberty/ChangeLog Sun Jun 17 12:40:46 2001 --- gcc-3.0.1/libiberty/ChangeLog Sun Aug 19 14:08:29 2001 *************** *** 1,3 **** --- 1,11 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/libjava/ChangeLog gcc-3.0.1/libjava/ChangeLog *** gcc-3.0/libjava/ChangeLog Sun Jun 17 12:40:53 2001 --- gcc-3.0.1/libjava/ChangeLog Sun Aug 19 14:08:30 2001 *************** *** 1,3 **** --- 1,103 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-01 Rainer Orth + + * include/posix.h (_POSIX_PII_SOCKET): Define. + * configure.in (HAVE_SOCKLEN_T): Define. + * java/net/natPlainSocketImpl.cc [!HAVE_SOCKLEN_T]: Move socklen_t + definition up. + (_JV_accept): New function, avoids Tru64 UNIX accept macro. + (java::net::PlainSocketImpl::accept): Use it. + Fixes PRs libgcj/3694, libgcj/3696. + + * configure.in (HAVE_STRUCT_IPV6_MREQ): New test. + * acconfig.h (HAVE_STRUCT_IPV6_MREQ): Provide template. + * configure, include/config.h.in: Regenerate. + * java/net/natPlainDatagramSocketImpl.cc (union McastReq): Use it. + (mcastGrp): Likewise. + (java::net::PlainDatagramSocketImpl::setOption): Guard against + missing IPV6_MULTICAST_IF. + Fixes PR libgcj/3694. + + 2001-07-31 Christian Iseli + + * Makefile.in: Rebuilt. + * Makefile.am (GCJLINK): Added --tag=GCJ. + (LIBLINK): Likewise. + + 2001-07-29 Mark Wielaard + + * HACKING: New documentation file. + + 2001-07-24 Rainer Orth + + * gnu/gcj/runtime/natFirstThread.cc (_JNI_OnLoad): New function. + (JNI_OnLoad): Use it. + (gnu::gcj::runtime::FirstThread::run): Check for _JNI_OnLoad, not + NULL. + + 2001-07-24 Rainer Orth + + * Makefile.am (AM_MAKEFLAGS): Pass RUNTESTFLAGS. + Makefile.in: Regenerate. + + 2001-07-18 Rainer Orth + + * java/net/natPlainDatagramSocketImpl.cc (mcastGrp): Use new RFC + 2533 socket options IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP, falling + back to old RFC 2133 variants if missing. + + 2001-07-18 Tom Tromey + + * java/io/natFileWin32.cc (_access): Renamed. + (_stat): Likewise. + * java/io/natFile.cc (_access): Renamed. + (_stat): Likewise. + * java/io/File.java (access, stat): Add leading `_' to name. + Updated all callers. + + 2001-07-18 Martin Kahlert + + * java/lang/natClass.cc: Move calls of _Jv_InitClass from + java::lang::Class::isAssignableFrom and java::lang::Class::isInstance + into _Jv_IsAssignableFrom + + 2001-07-18 Tom Tromey + + For PR java/2812: + * libgcj.spec.in (*lib): Added LIBICONV. + * Makefile.am (GCJLINK): Added ICONV_LDFLAGS. + (LIBLINK): Likewise. + * configure: Rebuilt. + * configure.in: Call AM_ICONV. Don't check for iconv function. + * acinclude.m4 (AM_ICONV): New macro, from Bruno Haible. Then + modified to generate ICONV_LDFLAGS. + + 2001-07-05 Tom Tromey + + For PR java/3562: + * java/lang/Class.h (Class(void)): Now private. Removed + implementation. From dmorsberger@sensysdl.com. + + 2001-07-02 Tom Tromey + + Fix for PR bootstrap/3281: + * aclocal.m4, configure: Rebuilt. + * acinclude.m4 (LIBGCJ_CONFIGURE): Don't set libgcj_flagbasedir. + Correctly compute libgcj_basedir. + (mkinstalldirs): Define and subst. + + 2001-07-02 Rainer Orth + + * configure.in (test for eh model): Fixed typo. + * configure: Rebuilt. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/libjava/HACKING gcc-3.0.1/libjava/HACKING *** gcc-3.0/libjava/HACKING Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/libjava/HACKING Sun Jul 29 03:11:17 2001 *************** *** 0 **** --- 1,63 ---- + Things libgcj hackers should know + --------------------------------- + + If you want to hack on the libgcj files you need to be aware of the + following things. There are probably lots of other things that should be + explained in this HACKING file. Please add them if you discover them :) + + -- + + A lot of the standard library files come from the GNU Classpath project. + + The libgcj and Classpath project have officially merged, but the merge + is not yet complete. Our eventual goal is for Classpath to be an upstream + source provider for libgcj, however it will be some time before this becomes + reality: libgcj and Classpath have different implementations of many core + java classes. In order to merge them, we need to select the best (most + efficient, cleanest) implementation of each method/class/package, resolve + any conflicts created by the merge, and test the final result. + + The merged files can be recognized by the standard Classpath copyright + comments at the top of the file. If you make changes to these files then + you should also send a patch to the classpath mailinglist. + + + + If you merge a libgcj class with a classpath class then you must update the + copyright notice at the top of the file so others can see that this is a + shared libgcj/classpath file. + + -- + + If you need to add new java files to libgcj then you have to edit the + Makefile.am file in the top (libjava) directory. And run automake. + But note the following (thanks to Bryce McKinlay): + + > Do you know the magic dance I have to do when adding files to Makefile.am + > so they will appear in Makefile.in and finally in the user generated + > Makefile? + Yup, you need the magic libgcj automake ;-) + + + + Install that (dont worry, it should still work for other projects), add your + files to the Makefile.am, then just type "automake" and it will regenerate the + Makefile.in. Easy! + + Tom Tromey adds: + If you add a class to java.lang, java.io, or java.util + (including sub-packages, like java.lang.ref). + + * Edit gcj/javaprims.h + + * Go to the `namespace java' line, and delete that entire block (the + entire contents of the namespace) + + * Then insert the output of `perl ../scripts/classes.pl' into the file + at that point. + + If you're generating a patch there is a program you can get to do an + offline `cvs add' (it will fake an `add' if you don't have write + permission yet). Then you can use `cvs diff -N' to generate the + patch. See http://www.red-bean.com/cvsutils/ + diff -Nrc3pad gcc-3.0/libjava/Makefile.am gcc-3.0.1/libjava/Makefile.am *** gcc-3.0/libjava/Makefile.am Fri Jun 8 10:58:11 2001 --- gcc-3.0.1/libjava/Makefile.am Tue Jul 31 14:51:42 2001 *************** endif # CANADIAN *** 76,83 **** GCJ_WITH_FLAGS = $(GCJ) --encoding=UTF-8 GCJCOMPILE = $(LIBTOOL) --tag=GCJ --mode=compile $(GCJ_WITH_FLAGS) -fassume-compiled -fclasspath=$(here) -L$(here) $(JC1FLAGS) -MD -MT $@ -MF $(@:.lo=.d) -c ! GCJLINK = $(LIBTOOL) --mode=link $(GCJ) -L$(here) $(JC1FLAGS) $(LDFLAGS) -o $@ ! LIBLINK = $(LIBTOOL) --mode=link $(CC) -L$(here) $(JC1FLAGS) $(LDFLAGS) -o $@ ## We define this because otherwise libtool can be run with different ## values of `CXX' and will then get confused and fail to work. So, --- 76,85 ---- GCJ_WITH_FLAGS = $(GCJ) --encoding=UTF-8 GCJCOMPILE = $(LIBTOOL) --tag=GCJ --mode=compile $(GCJ_WITH_FLAGS) -fassume-compiled -fclasspath=$(here) -L$(here) $(JC1FLAGS) -MD -MT $@ -MF $(@:.lo=.d) -c ! GCJLINK = $(LIBTOOL) --tag=GCJ --mode=link $(GCJ) -L$(here) $(JC1FLAGS) \ ! $(ICONV_LDFLAGS) $(LDFLAGS) -o $@ ! LIBLINK = $(LIBTOOL) --tag=CC --mode=link $(CC) -L$(here) $(JC1FLAGS) \ ! $(ICONV_LDFLAGS) $(LDFLAGS) -o $@ ## We define this because otherwise libtool can be run with different ## values of `CXX' and will then get confused and fail to work. So, *************** AM_MAKEFLAGS = \ *** 1420,1425 **** --- 1422,1428 ---- "PICFLAG=$(PICFLAG)" \ "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ "SHELL=$(SHELL)" \ + "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ "exec_prefix=$(exec_prefix)" \ "infodir=$(infodir)" \ "libdir=$(libdir)" \ diff -Nrc3pad gcc-3.0/libjava/Makefile.in gcc-3.0.1/libjava/Makefile.in *** gcc-3.0/libjava/Makefile.in Sun Jun 17 12:49:45 2001 --- gcc-3.0.1/libjava/Makefile.in Sun Aug 19 17:45:03 2001 *************** GCLIBS = @GCLIBS@ *** 84,89 **** --- 84,90 ---- GCOBJS = @GCOBJS@ GCSPEC = @GCSPEC@ GCTESTSPEC = @GCTESTSPEC@ + ICONV_LDFLAGS = @ICONV_LDFLAGS@ INCLTDL = @INCLTDL@ JC1GCSPEC = @JC1GCSPEC@ LIBDATASTARTSPEC = @LIBDATASTARTSPEC@ *************** LIBGCJTESTSPEC = @LIBGCJTESTSPEC@ *** 92,97 **** --- 93,99 ---- LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@ LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@ LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@ + LIBICONV = @LIBICONV@ LIBLTDL = @LIBLTDL@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ *************** ZLIBSPEC = @ZLIBSPEC@ *** 118,123 **** --- 120,126 ---- ZLIBTESTSPEC = @ZLIBTESTSPEC@ here = @here@ libgcj_basedir = @libgcj_basedir@ + mkinstalldirs = @mkinstalldirs@ AUTOMAKE_OPTIONS = foreign @TESTSUBDIR_TRUE@SUBDIRS = \ *************** bin_SCRIPTS = addr2name.awk *** 161,168 **** GCJ_WITH_FLAGS = $(GCJ) --encoding=UTF-8 GCJCOMPILE = $(LIBTOOL) --tag=GCJ --mode=compile $(GCJ_WITH_FLAGS) -fassume-compiled -fclasspath=$(here) -L$(here) $(JC1FLAGS) -MD -MT $@ -MF $(@:.lo=.d) -c ! GCJLINK = $(LIBTOOL) --mode=link $(GCJ) -L$(here) $(JC1FLAGS) $(LDFLAGS) -o $@ ! LIBLINK = $(LIBTOOL) --mode=link $(CC) -L$(here) $(JC1FLAGS) $(LDFLAGS) -o $@ LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) --- 164,175 ---- GCJ_WITH_FLAGS = $(GCJ) --encoding=UTF-8 GCJCOMPILE = $(LIBTOOL) --tag=GCJ --mode=compile $(GCJ_WITH_FLAGS) -fassume-compiled -fclasspath=$(here) -L$(here) $(JC1FLAGS) -MD -MT $@ -MF $(@:.lo=.d) -c ! GCJLINK = $(LIBTOOL) --tag=GCJ --mode=link $(GCJ) -L$(here) $(JC1FLAGS) \ ! $(ICONV_LDFLAGS) $(LDFLAGS) -o $@ ! ! LIBLINK = $(LIBTOOL) --tag=CC --mode=link $(CC) -L$(here) $(JC1FLAGS) \ ! $(ICONV_LDFLAGS) $(LDFLAGS) -o $@ ! LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) *************** AM_MAKEFLAGS = \ *** 1104,1109 **** --- 1111,1117 ---- "PICFLAG=$(PICFLAG)" \ "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ "SHELL=$(SHELL)" \ + "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ "exec_prefix=$(exec_prefix)" \ "infodir=$(infodir)" \ "libdir=$(libdir)" \ *************** MULTISUBDIR = *** 1132,1138 **** MULTIDO = true MULTICLEAN = true ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = ./include/config.h CONFIG_CLEAN_FILES = libgcj.spec libgcj-test.spec LIBRARIES = $(toolexeclib_LIBRARIES) --- 1140,1145 ---- diff -Nrc3pad gcc-3.0/libjava/acconfig.h gcc-3.0.1/libjava/acconfig.h *** gcc-3.0/libjava/acconfig.h Sun Apr 2 08:34:17 2000 --- gcc-3.0.1/libjava/acconfig.h Wed Aug 1 10:49:13 2001 *************** *** 65,70 **** --- 65,73 ---- /* Define if struct ip_mreq is defined in netinet/in.h. */ #undef HAVE_STRUCT_IP_MREQ + /* Define if struct ipv6_mreq is defined in netinet/in.h. */ + #undef HAVE_STRUCT_IPV6_MREQ + /* Define it socklen_t typedef is in sys/socket.h. */ #undef HAVE_SOCKLEN_T diff -Nrc3pad gcc-3.0/libjava/acinclude.m4 gcc-3.0.1/libjava/acinclude.m4 *** gcc-3.0/libjava/acinclude.m4 Wed Jun 13 09:35:06 2001 --- gcc-3.0.1/libjava/acinclude.m4 Wed Jul 18 09:56:32 2001 *************** AC_ARG_ENABLE(multilib, *** 12,34 **** dnl We may get other options which we dont document: dnl --with-target-subdir, --with-multisrctop, --with-multisubdir ! if test "[$]{srcdir}" = "."; then ! if test "[$]{with_target_subdir}" != "."; then ! libgcj_basedir="[$]{srcdir}/[$]{with_multisrctop}../$1" else ! libgcj_basedir="[$]{srcdir}/[$]{with_multisrctop}$1" fi else ! libgcj_basedir="[$]{srcdir}/$1" fi AC_SUBST(libgcj_basedir) ! AC_CONFIG_AUX_DIR($libgcj_basedir/..) if :; then :; else # This overrides the previous occurrence for automake, but not for # autoconf, which is exactly what we want. AC_CONFIG_AUX_DIR(..) fi AC_CANONICAL_SYSTEM dnl This shouldn't be needed, as long as top-level dependencies are --- 12,50 ---- dnl We may get other options which we dont document: dnl --with-target-subdir, --with-multisrctop, --with-multisubdir ! # When building with srcdir == objdir, links to the source files will ! # be created in directories within the target_subdir. We have to ! # adjust toplevel_srcdir accordingly, so that configure finds ! # install-sh and other auxiliary files that live in the top-level ! # source directory. ! if test "${srcdir}" = "."; then ! if test -z "${with_target_subdir}"; then ! toprel=".." else ! if test "${with_target_subdir}" != "."; then ! toprel="${with_multisrctop}../.." ! else ! toprel="${with_multisrctop}.." ! fi fi else ! toprel=".." fi + + libgcj_basedir=$srcdir/$toprel/$1/libjava AC_SUBST(libgcj_basedir) ! ! AC_CONFIG_AUX_DIR(${srcdir}/$toprel) if :; then :; else # This overrides the previous occurrence for automake, but not for # autoconf, which is exactly what we want. AC_CONFIG_AUX_DIR(..) fi + # This works around an automake problem. + mkinstalldirs="`cd $ac_aux_dir && pwd`/mkinstalldirs" + AC_SUBST(mkinstalldirs) + AC_CANONICAL_SYSTEM dnl This shouldn't be needed, as long as top-level dependencies are *************** libgcj_javaflags= *** 81,91 **** . [$]{srcdir}/configure.host - case [$]{libgcj_basedir} in - /* | [A-Za-z]:[/\\]*) libgcj_flagbasedir=[$]{libgcj_basedir} ;; - *) libgcj_flagbasedir='[$](top_builddir)/'[$]{libgcj_basedir} ;; - esac - LIBGCJ_CFLAGS="[$]{libgcj_cflags}" LIBGCJ_CXXFLAGS="[$]{libgcj_cxxflags}" LIBGCJ_JAVAFLAGS="[$]{libgcj_javaflags}" --- 97,102 ---- *************** AC_DEFUN([AC_LIBLTDL_CONVENIENCE],) *** 105,108 **** --- 116,194 ---- AC_DEFUN([LT_AC_PROG_GCJ],) AC_SUBST(GCJ) AC_SUBST(LIBTOOL) + ]) + + #serial AM2 + + dnl From Bruno Haible. + + AC_DEFUN([AM_ICONV], + [ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + + ICONV_LDFLAGS= + AC_ARG_WITH([libiconv-prefix], + [ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib], [ + for dir in `echo "$withval" | tr : ' '`; do + if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi + if test -d $dir/lib; then + LDFLAGS="$LDFLAGS -L$dir/lib" + ICONV_LDFLAGS=-L$dir/lib + fi + done + ]) + AC_SUBST(ICONV_LDFLAGS) + + AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include + #include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_func_iconv=yes) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS -liconv" + AC_TRY_LINK([#include + #include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_lib_iconv=yes + am_cv_func_iconv=yes) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(am_cv_proto_iconv, [ + AC_TRY_COMPILE([ + #include + #include + extern + #ifdef __cplusplus + "C" + #endif + #if defined(__STDC__) || defined(__cplusplus) + size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); + #else + size_t iconv(); + #endif + ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([$]{ac_t:- + }[$]am_cv_proto_iconv) + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi + LIBICONV= + if test "$am_cv_lib_iconv" = yes; then + LIBICONV="-liconv" + fi + AC_SUBST(LIBICONV) ]) diff -Nrc3pad gcc-3.0/libjava/aclocal.m4 gcc-3.0.1/libjava/aclocal.m4 *** gcc-3.0/libjava/aclocal.m4 Wed Jun 13 09:35:06 2001 --- gcc-3.0.1/libjava/aclocal.m4 Sun Aug 19 17:45:03 2001 *************** AC_ARG_ENABLE(multilib, *** 24,46 **** dnl We may get other options which we dont document: dnl --with-target-subdir, --with-multisrctop, --with-multisubdir ! if test "[$]{srcdir}" = "."; then ! if test "[$]{with_target_subdir}" != "."; then ! libgcj_basedir="[$]{srcdir}/[$]{with_multisrctop}../$1" else ! libgcj_basedir="[$]{srcdir}/[$]{with_multisrctop}$1" fi else ! libgcj_basedir="[$]{srcdir}/$1" fi AC_SUBST(libgcj_basedir) ! AC_CONFIG_AUX_DIR($libgcj_basedir/..) if :; then :; else # This overrides the previous occurrence for automake, but not for # autoconf, which is exactly what we want. AC_CONFIG_AUX_DIR(..) fi AC_CANONICAL_SYSTEM dnl This shouldn't be needed, as long as top-level dependencies are --- 24,62 ---- dnl We may get other options which we dont document: dnl --with-target-subdir, --with-multisrctop, --with-multisubdir ! # When building with srcdir == objdir, links to the source files will ! # be created in directories within the target_subdir. We have to ! # adjust toplevel_srcdir accordingly, so that configure finds ! # install-sh and other auxiliary files that live in the top-level ! # source directory. ! if test "${srcdir}" = "."; then ! if test -z "${with_target_subdir}"; then ! toprel=".." else ! if test "${with_target_subdir}" != "."; then ! toprel="${with_multisrctop}../.." ! else ! toprel="${with_multisrctop}.." ! fi fi else ! toprel=".." fi + + libgcj_basedir=$srcdir/$toprel/$1/libjava AC_SUBST(libgcj_basedir) ! ! AC_CONFIG_AUX_DIR(${srcdir}/$toprel) if :; then :; else # This overrides the previous occurrence for automake, but not for # autoconf, which is exactly what we want. AC_CONFIG_AUX_DIR(..) fi + # This works around an automake problem. + mkinstalldirs="`cd $ac_aux_dir && pwd`/mkinstalldirs" + AC_SUBST(mkinstalldirs) + AC_CANONICAL_SYSTEM dnl This shouldn't be needed, as long as top-level dependencies are *************** libgcj_javaflags= *** 93,103 **** . [$]{srcdir}/configure.host - case [$]{libgcj_basedir} in - /* | [A-Za-z]:[/\\]*) libgcj_flagbasedir=[$]{libgcj_basedir} ;; - *) libgcj_flagbasedir='[$](top_builddir)/'[$]{libgcj_basedir} ;; - esac - LIBGCJ_CFLAGS="[$]{libgcj_cflags}" LIBGCJ_CXXFLAGS="[$]{libgcj_cxxflags}" LIBGCJ_JAVAFLAGS="[$]{libgcj_javaflags}" --- 109,114 ---- *************** AC_DEFUN([AC_LIBLTDL_CONVENIENCE],) *** 117,122 **** --- 128,208 ---- AC_DEFUN([LT_AC_PROG_GCJ],) AC_SUBST(GCJ) AC_SUBST(LIBTOOL) + ]) + + #serial AM2 + + dnl From Bruno Haible. + + AC_DEFUN([AM_ICONV], + [ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + + ICONV_LDFLAGS= + AC_ARG_WITH([libiconv-prefix], + [ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib], [ + for dir in `echo "$withval" | tr : ' '`; do + if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi + if test -d $dir/lib; then + LDFLAGS="$LDFLAGS -L$dir/lib" + ICONV_LDFLAGS=-L$dir/lib + fi + done + ]) + AC_SUBST(ICONV_LDFLAGS) + + AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include + #include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_func_iconv=yes) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS -liconv" + AC_TRY_LINK([#include + #include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_lib_iconv=yes + am_cv_func_iconv=yes) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(am_cv_proto_iconv, [ + AC_TRY_COMPILE([ + #include + #include + extern + #ifdef __cplusplus + "C" + #endif + #if defined(__STDC__) || defined(__cplusplus) + size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); + #else + size_t iconv(); + #endif + ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([$]{ac_t:- + }[$]am_cv_proto_iconv) + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi + LIBICONV= + if test "$am_cv_lib_iconv" = yes; then + LIBICONV="-liconv" + fi + AC_SUBST(LIBICONV) ]) # Do all the work for Automake. This macro actually does too much -- diff -Nrc3pad gcc-3.0/libjava/configure gcc-3.0.1/libjava/configure *** gcc-3.0/libjava/configure Wed Jun 13 09:35:07 2001 --- gcc-3.0.1/libjava/configure Sun Aug 19 17:45:03 2001 *************** ac_help="$ac_help *** 55,60 **** --- 55,62 ---- ac_help="$ac_help --enable-java-gc=TYPE choose garbage collector [boehm]" ac_help="$ac_help + --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib" + ac_help="$ac_help --with-x use the X Window System" ac_help="$ac_help --enable-java-awt list of AWT peer implementations to be built" *************** program_suffix=NONE *** 75,81 **** program_transform_name=s,x,x, silent= site= - sitefile= srcdir= target=NONE verbose= --- 77,82 ---- *************** Configuration: *** 190,196 **** --help print this message --no-create do not create output files --quiet, --silent do not print \`checking...' messages - --site-file=FILE use FILE as the site file --version print the version of autoconf that created configure Directory and file names: --prefix=PREFIX install architecture-independent files in PREFIX --- 191,196 ---- *************** EOF *** 361,371 **** -site=* | --site=* | --sit=*) site="$ac_optarg" ;; - -site-file | --site-file | --site-fil | --site-fi | --site-f) - ac_prev=sitefile ;; - -site-file=* | --site-file=* | --site-fil=* | --site-fi=* | --site-f=*) - sitefile="$ac_optarg" ;; - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) --- 361,366 ---- *************** fi *** 531,546 **** srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` # Prefer explicitly selected file to automatically selected ones. ! if test -z "$sitefile"; then ! if test -z "$CONFIG_SITE"; then ! if test "x$prefix" != xNONE; then ! CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" ! else ! CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" ! fi fi - else - CONFIG_SITE="$sitefile" fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then --- 526,537 ---- srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` # Prefer explicitly selected file to automatically selected ones. ! if test -z "$CONFIG_SITE"; then ! if test "x$prefix" != xNONE; then ! CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" ! else ! CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then *************** fi *** 581,587 **** echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 ! echo "configure:585: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 572,578 ---- echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 ! echo "configure:576: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 627,633 **** # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:631: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 618,624 ---- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:622: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** test -z "$INSTALL_SCRIPT" && INSTALL_SCR *** 680,686 **** test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 ! echo "configure:684: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile --- 671,677 ---- test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 ! echo "configure:675: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile *************** test "$program_suffix" != NONE && *** 737,743 **** test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 ! echo "configure:741: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 728,734 ---- test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 ! echo "configure:732: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 770,781 **** fi echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 ! echo "configure:774: checking for Cygwin environment" >&5 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:765: checking for Cygwin environment" >&5 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else --- 777,783 ---- return __CYGWIN__; ; return 0; } EOF ! if { (eval echo configure:781: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else *************** echo "$ac_t""$ac_cv_cygwin" 1>&6 *** 803,821 **** CYGWIN= test "$ac_cv_cygwin" = yes && CYGWIN=yes echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 ! echo "configure:807: checking for mingw32 environment" >&5 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else --- 794,812 ---- CYGWIN= test "$ac_cv_cygwin" = yes && CYGWIN=yes echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 ! echo "configure:798: checking for mingw32 environment" >&5 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else *************** else *** 845,862 **** fi if test "${srcdir}" = "."; then ! if test "${with_target_subdir}" != "."; then ! libgcj_basedir="${srcdir}/${with_multisrctop}../." else ! libgcj_basedir="${srcdir}/${with_multisrctop}." fi else ! libgcj_basedir="${srcdir}/." fi ac_aux_dir= ! for ac_dir in $libgcj_basedir/.. $srcdir/$libgcj_basedir/..; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" --- 836,865 ---- fi + # When building with srcdir == objdir, links to the source files will + # be created in directories within the target_subdir. We have to + # adjust toplevel_srcdir accordingly, so that configure finds + # install-sh and other auxiliary files that live in the top-level + # source directory. if test "${srcdir}" = "."; then ! if test -z "${with_target_subdir}"; then ! toprel=".." else ! if test "${with_target_subdir}" != "."; then ! toprel="${with_multisrctop}../.." ! else ! toprel="${with_multisrctop}.." ! fi fi else ! toprel=".." fi + libgcj_basedir=$srcdir/$toprel/./libjava + + ac_aux_dir= ! for ac_dir in ${srcdir}/$toprel $srcdir/${srcdir}/$toprel; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" *************** for ac_dir in $libgcj_basedir/.. $srcdir *** 868,874 **** fi done if test -z "$ac_aux_dir"; then ! { echo "configure: error: can not find install-sh or install.sh in $libgcj_basedir/.. $srcdir/$libgcj_basedir/.." 1>&2; exit 1; } fi ac_config_guess=$ac_aux_dir/config.guess ac_config_sub=$ac_aux_dir/config.sub --- 871,877 ---- fi done if test -z "$ac_aux_dir"; then ! { echo "configure: error: can not find install-sh or install.sh in ${srcdir}/$toprel $srcdir/${srcdir}/$toprel" 1>&2; exit 1; } fi ac_config_guess=$ac_aux_dir/config.guess ac_config_sub=$ac_aux_dir/config.sub *************** ac_configure=$ac_aux_dir/configure # Thi *** 898,903 **** --- 901,910 ---- fi + # This works around an automake problem. + mkinstalldirs="`cd $ac_aux_dir && pwd`/mkinstalldirs" + + # Do some error checking and defaulting for the host and target type. # The inputs are: *************** else { echo "configure: error: can not r *** 926,932 **** fi echo $ac_n "checking host system type""... $ac_c" 1>&6 ! echo "configure:930: checking host system type" >&5 host_alias=$host case "$host_alias" in --- 933,939 ---- fi echo $ac_n "checking host system type""... $ac_c" 1>&6 ! echo "configure:937: checking host system type" >&5 host_alias=$host case "$host_alias" in *************** host_os=`echo $host | sed 's/^\([^-]*\)- *** 947,953 **** echo "$ac_t""$host" 1>&6 echo $ac_n "checking target system type""... $ac_c" 1>&6 ! echo "configure:951: checking target system type" >&5 target_alias=$target case "$target_alias" in --- 954,960 ---- echo "$ac_t""$host" 1>&6 echo $ac_n "checking target system type""... $ac_c" 1>&6 ! echo "configure:958: checking target system type" >&5 target_alias=$target case "$target_alias" in *************** target_os=`echo $target | sed 's/^\([^-] *** 965,971 **** echo "$ac_t""$target" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6 ! echo "configure:969: checking build system type" >&5 build_alias=$build case "$build_alias" in --- 972,978 ---- echo "$ac_t""$target" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6 ! echo "configure:976: checking build system type" >&5 build_alias=$build case "$build_alias" in *************** test "$host_alias" != "$target_alias" && *** 994,1000 **** # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:998: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1001,1007 ---- # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1005: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -z "$CC"; then *** 1024,1030 **** # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1028: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1031,1037 ---- # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1035: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1075,1081 **** # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1079: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1082,1088 ---- # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1086: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1108,1114 **** echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ! echo "configure:1112: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1115,1121 ---- echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ! echo "configure:1119: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1117,1123 **** yes; #endif EOF ! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1121: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no --- 1124,1130 ---- yes; #endif EOF ! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1128: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no *************** ac_test_CFLAGS="${CFLAGS+set}" *** 1136,1142 **** ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ! echo "configure:1140: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1143,1149 ---- ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ! echo "configure:1147: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** do *** 1172,1178 **** # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1176: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1179,1185 ---- # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1183: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** test -n "$CXX" || CXX="gcc" *** 1205,1211 **** echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 ! echo "configure:1209: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1212,1218 ---- echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 ! echo "configure:1216: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1214,1220 **** yes; #endif EOF ! if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1218: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no --- 1221,1227 ---- yes; #endif EOF ! if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1225: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no *************** ac_test_CXXFLAGS="${CXXFLAGS+set}" *** 1233,1239 **** ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 ! echo "configure:1237: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1240,1246 ---- ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 ! echo "configure:1244: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** EOF *** 1286,1292 **** missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 ! echo "configure:1290: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 1293,1299 ---- missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 ! echo "configure:1297: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 1299,1305 **** fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 ! echo "configure:1303: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 1306,1312 ---- fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 ! echo "configure:1310: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 1312,1318 **** fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 ! echo "configure:1316: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 1319,1325 ---- fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 ! echo "configure:1323: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 1325,1331 **** fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 ! echo "configure:1329: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 1332,1338 ---- fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 ! echo "configure:1336: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 1338,1344 **** fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 ! echo "configure:1342: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 1345,1351 ---- fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 ! echo "configure:1349: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** fi *** 1357,1363 **** # LIBGCJ_CONFIGURE, which doesn't work because that means that it will # be run before AC_CANONICAL_HOST. echo $ac_n "checking build system type""... $ac_c" 1>&6 ! echo "configure:1361: checking build system type" >&5 build_alias=$build case "$build_alias" in --- 1364,1370 ---- # LIBGCJ_CONFIGURE, which doesn't work because that means that it will # be run before AC_CANONICAL_HOST. echo $ac_n "checking build system type""... $ac_c" 1>&6 ! echo "configure:1368: checking build system type" >&5 build_alias=$build case "$build_alias" in *************** echo "$ac_t""$build" 1>&6 *** 1378,1384 **** # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1382: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1385,1391 ---- # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1389: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1410,1416 **** # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1414: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1417,1423 ---- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1421: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1442,1448 **** # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1446: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1449,1455 ---- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1453: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -n "$ac_tool_prefix"; then *** 1474,1480 **** # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1478: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1481,1487 ---- # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1485: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1519,1525 **** # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:1523: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 1526,1532 ---- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:1530: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** test -z "$INSTALL_DATA" && INSTALL_DATA= *** 1573,1579 **** echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 ! echo "configure:1577: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" --- 1580,1586 ---- echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 ! echo "configure:1584: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" *************** if false; then *** 1607,1613 **** echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 ! echo "configure:1611: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1614,1620 ---- echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 ! echo "configure:1618: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1617,1626 **** rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= ! if { (eval echo configure:1621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in ! *.c | *.o | *.obj | *.ilk | *.pdb) ;; *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; esac done --- 1624,1633 ---- rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= ! if { (eval echo configure:1628: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in ! *.c | *.o | *.obj) ;; *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; esac done *************** libgcj_javaflags= *** 1650,1660 **** . ${srcdir}/configure.host - case ${libgcj_basedir} in - /* | A-Za-z:/\\*) libgcj_flagbasedir=${libgcj_basedir} ;; - *) libgcj_flagbasedir='$(top_builddir)/'${libgcj_basedir} ;; - esac - LIBGCJ_CFLAGS="${libgcj_cflags}" LIBGCJ_CXXFLAGS="${libgcj_cxxflags}" LIBGCJ_JAVAFLAGS="${libgcj_javaflags}" --- 1657,1662 ---- *************** ac_prog=ld *** 1773,1779 **** if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 ! echo "configure:1777: checking for ld used by GCC" >&5 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw --- 1775,1781 ---- if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 ! echo "configure:1779: checking for ld used by GCC" >&5 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw *************** echo "configure:1777: checking for ld us *** 1803,1812 **** esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 ! echo "configure:1807: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 ! echo "configure:1810: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 1805,1814 ---- esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 ! echo "configure:1809: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 ! echo "configure:1812: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 1841,1847 **** fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 ! echo "configure:1845: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1843,1849 ---- fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 ! echo "configure:1847: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** with_gnu_ld=$lt_cv_prog_gnu_ld *** 1858,1864 **** echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 ! echo "configure:1862: checking for $LD option to reload object files" >&5 if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1860,1866 ---- echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 ! echo "configure:1864: checking for $LD option to reload object files" >&5 if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** reload_flag=$lt_cv_ld_reload_flag *** 1870,1876 **** test -n "$reload_flag" && reload_flag=" $reload_flag" echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 ! echo "configure:1874: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1872,1878 ---- test -n "$reload_flag" && reload_flag=" $reload_flag" echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 ! echo "configure:1876: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** NM="$lt_cv_path_NM" *** 1908,1914 **** echo "$ac_t""$NM" 1>&6 echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 ! echo "configure:1912: checking how to recognise dependant libraries" >&5 if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1910,1916 ---- echo "$ac_t""$NM" 1>&6 echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 ! echo "configure:1914: checking how to recognise dependant libraries" >&5 if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** file_magic_cmd=$lt_cv_file_magic_cmd *** 2072,2084 **** deplibs_check_method=$lt_cv_deplibs_check_method echo $ac_n "checking for object suffix""... $ac_c" 1>&6 ! echo "configure:2076: checking for object suffix" >&5 if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftest* echo 'int i = 1;' > conftest.$ac_ext ! if { (eval echo configure:2082: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; --- 2074,2086 ---- deplibs_check_method=$lt_cv_deplibs_check_method echo $ac_n "checking for object suffix""... $ac_c" 1>&6 ! echo "configure:2078: checking for object suffix" >&5 if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftest* echo 'int i = 1;' > conftest.$ac_ext ! if { (eval echo configure:2084: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; *************** case $deplibs_check_method in *** 2102,2108 **** file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 ! echo "configure:2106: checking for ${ac_tool_prefix}file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2104,2110 ---- file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 ! echo "configure:2108: checking for ${ac_tool_prefix}file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 2164,2170 **** if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo $ac_n "checking for file""... $ac_c" 1>&6 ! echo "configure:2168: checking for file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2166,2172 ---- if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo $ac_n "checking for file""... $ac_c" 1>&6 ! echo "configure:2170: checking for file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** esac *** 2235,2241 **** # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2239: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2237,2243 ---- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2241: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -n "$ac_tool_prefix"; then *** 2267,2273 **** # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2271: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2269,2275 ---- # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2273: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 2302,2308 **** # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2306: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2304,2310 ---- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2308: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -n "$ac_tool_prefix"; then *** 2334,2340 **** # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2338: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2336,2342 ---- # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2340: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** test x"$pic_mode" = xno && libtool_flags *** 2401,2408 **** case $host in *-*-irix6*) # Find out which ABI we are using. ! echo '#line 2405 "configure"' > conftest.$ac_ext ! if { (eval echo configure:2406: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" --- 2403,2410 ---- case $host in *-*-irix6*) # Find out which ABI we are using. ! echo '#line 2407 "configure"' > conftest.$ac_ext ! if { (eval echo configure:2408: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" *************** case $host in *** 2423,2429 **** SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 ! echo "configure:2427: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2425,2431 ---- SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 ! echo "configure:2429: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** ac_link='${CC-cc} -o conftest${ac_exeext *** 2436,2449 **** cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else --- 2438,2451 ---- cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else *************** echo "$ac_t""$lt_cv_cc_needs_belf" 1>&6 *** 2473,2479 **** esac echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 ! echo "configure:2477: checking how to run the C++ preprocessor" >&5 if test -z "$CXXCPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 2475,2481 ---- esac echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 ! echo "configure:2479: checking how to run the C++ preprocessor" >&5 if test -z "$CXXCPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 2486,2497 **** cross_compiling=$ac_cv_prog_cxx_cross CXXCPP="${CXX-g++} -E" cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2495: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : --- 2488,2499 ---- cross_compiling=$ac_cv_prog_cxx_cross CXXCPP="${CXX-g++} -E" cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2497: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : *************** EOF *** 2708,2714 **** fi echo $ac_n "checking for exception model to use""... $ac_c" 1>&6 ! echo "configure:2712: checking for exception model to use" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. --- 2710,2716 ---- fi echo $ac_n "checking for exception model to use""... $ac_c" 1>&6 ! echo "configure:2714: checking for exception model to use" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. *************** if test "${enable_sjlj_exceptions+set}" *** 2723,2729 **** : else cat > conftest.$ac_ext << EOF ! #line 2727 "configure" struct S { ~S(); }; void bar(); void foo() --- 2725,2731 ---- : else cat > conftest.$ac_ext << EOF ! #line 2729 "configure" struct S { ~S(); }; void bar(); void foo() *************** void foo() *** 2734,2741 **** EOF old_CXXFLAGS="$CXXFLAGS" CXXFLAGS=-S ! if { (eval echo configure:2738: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ! if grep _Unwind_Sjlj_Resume conftest.s >/dev/null 2>&1 ; then enable_sjlj_exceptions=yes elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then enable_sjlj_exceptions=no --- 2736,2743 ---- EOF old_CXXFLAGS="$CXXFLAGS" CXXFLAGS=-S ! if { (eval echo configure:2740: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ! if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then enable_sjlj_exceptions=yes elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then enable_sjlj_exceptions=no *************** cross_compiling=$ac_cv_prog_cc_cross *** 2766,2783 **** echo "$ac_t""$ac_exception_model_name" 1>&6 echo $ac_n "checking for data_start""... $ac_c" 1>&6 ! echo "configure:2770: checking for data_start" >&5 LIBDATASTARTSPEC= NEEDS_DATA_START= cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""found it" 1>&6 else --- 2768,2785 ---- echo "$ac_t""$ac_exception_model_name" 1>&6 echo $ac_n "checking for data_start""... $ac_c" 1>&6 ! echo "configure:2772: checking for data_start" >&5 LIBDATASTARTSPEC= NEEDS_DATA_START= cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""found it" 1>&6 else *************** EOF *** 2847,2853 **** esac echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 ! echo "configure:2851: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= --- 2849,2855 ---- esac echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 ! echo "configure:2853: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= *************** else *** 2862,2874 **** # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2872: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : --- 2864,2876 ---- # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2874: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : *************** else *** 2879,2891 **** rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2889: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : --- 2881,2893 ---- rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2891: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : *************** else *** 2896,2908 **** rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2906: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : --- 2898,2910 ---- rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2908: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : *************** fi *** 2927,2933 **** echo "$ac_t""$CPP" 1>&6 cat > conftest.$ac_ext < EOF --- 2929,2935 ---- echo "$ac_t""$CPP" 1>&6 cat > conftest.$ac_ext < EOF *************** fi *** 2942,2948 **** rm -f conftest* cat > conftest.$ac_ext < EOF --- 2944,2950 ---- rm -f conftest* cat > conftest.$ac_ext < EOF *************** fi *** 2957,2963 **** rm -f conftest* cat > conftest.$ac_ext < EOF --- 2959,2965 ---- rm -f conftest* cat > conftest.$ac_ext < EOF *************** fi *** 2972,2978 **** rm -f conftest* cat > conftest.$ac_ext < EOF --- 2974,2980 ---- rm -f conftest* cat > conftest.$ac_ext < EOF *************** rm -f conftest* *** 2989,2995 **** cat > conftest.$ac_ext < EOF --- 2991,2997 ---- cat > conftest.$ac_ext < EOF *************** fi *** 3004,3010 **** rm -f conftest* cat > conftest.$ac_ext < EOF --- 3006,3012 ---- rm -f conftest* cat > conftest.$ac_ext < EOF *************** ZLIBTESTSPEC= *** 3048,3054 **** libsubdir=.libs echo $ac_n "checking for garbage collector to use""... $ac_c" 1>&6 ! echo "configure:3052: checking for garbage collector to use" >&5 # Check whether --enable-java-gc or --disable-java-gc was given. if test "${enable_java_gc+set}" = set; then enableval="$enable_java_gc" --- 3050,3056 ---- libsubdir=.libs echo $ac_n "checking for garbage collector to use""... $ac_c" 1>&6 ! echo "configure:3054: checking for garbage collector to use" >&5 # Check whether --enable-java-gc or --disable-java-gc was given. if test "${enable_java_gc+set}" = set; then enableval="$enable_java_gc" *************** esac *** 3104,3110 **** echo $ac_n "checking for thread model used by GCC""... $ac_c" 1>&6 ! echo "configure:3108: checking for thread model used by GCC" >&5 THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` echo "$ac_t""$THREADS" 1>&6 --- 3106,3112 ---- echo $ac_n "checking for thread model used by GCC""... $ac_c" 1>&6 ! echo "configure:3110: checking for thread model used by GCC" >&5 THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` echo "$ac_t""$THREADS" 1>&6 *************** else *** 3261,3272 **** for ac_func in strerror ioctl select fstat open fsync sleep do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:3265: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:3267: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 3291,3297 ---- ; return 0; } EOF ! if { (eval echo configure:3295: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 3316,3327 **** for ac_func in gmtime_r localtime_r readdir_r getpwuid_r getcwd do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:3320: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:3322: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 3346,3352 ---- ; return 0; } EOF ! if { (eval echo configure:3350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 3371,3382 **** for ac_func in access stat mkdir rename rmdir unlink realpath utime chmod do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:3375: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:3377: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 3401,3407 ---- ; return 0; } EOF ! if { (eval echo configure:3405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** else *** 3423,3437 **** fi done ! for ac_func in iconv nl_langinfo setlocale do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:3430: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:3432: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 3456,3462 ---- ; return 0; } EOF ! if { (eval echo configure:3460: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 3481,3492 **** for ac_func in inet_aton inet_addr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:3485: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:3487: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 3511,3517 ---- ; return 0; } EOF ! if { (eval echo configure:3515: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 3536,3547 **** for ac_func in inet_pton uname inet_ntoa do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:3540: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:3542: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 3566,3572 ---- ; return 0; } EOF ! if { (eval echo configure:3570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 3591,3602 **** for ac_func in backtrace fork execvp pipe do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:3595: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:3597: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 3621,3627 ---- ; return 0; } EOF ! if { (eval echo configure:3625: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 3647,3663 **** do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:3651: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:3661: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 3649,3665 ---- do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:3653: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:3663: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** fi *** 3684,3690 **** done echo $ac_n "checking for dladdr in -ldl""... $ac_c" 1>&6 ! echo "configure:3688: checking for dladdr in -ldl" >&5 ac_lib_var=`echo dl'_'dladdr | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 3686,3692 ---- done echo $ac_n "checking for dladdr in -ldl""... $ac_c" 1>&6 ! echo "configure:3690: checking for dladdr in -ldl" >&5 ac_lib_var=`echo dl'_'dladdr | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 3692,3698 **** ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 3705,3711 ---- dladdr() ; return 0; } EOF ! if { (eval echo configure:3709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** do *** 3732,3738 **** ac_safe=`echo "$ac_file" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_file""... $ac_c" 1>&6 ! echo "configure:3736: checking for $ac_file" >&5 if eval "test \"`echo '$''{'ac_cv_file_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 3734,3740 ---- ac_safe=`echo "$ac_file" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_file""... $ac_c" 1>&6 ! echo "configure:3738: checking for $ac_file" >&5 if eval "test \"`echo '$''{'ac_cv_file_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 3764,3778 **** done for ac_func in gethostbyname_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:3771: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 + echo "configure:3790: checking for iconv" >&5 + if eval "test \"`echo '$''{'am_cv_func_iconv'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat > conftest.$ac_ext < + #include + int main() { + iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; return 0; } + EOF + if { (eval echo configure:3808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + am_cv_func_iconv=yes + else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS -liconv" + cat > conftest.$ac_ext < + #include + int main() { + iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; return 0; } + EOF + if { (eval echo configure:3830: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + am_cv_lib_iconv=yes + am_cv_func_iconv=yes + else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* + LIBS="$am_save_LIBS" + fi + + fi + + echo "$ac_t""$am_cv_func_iconv" 1>&6 + if test "$am_cv_func_iconv" = yes; then + cat >> confdefs.h <<\EOF + #define HAVE_ICONV 1 + EOF + + echo $ac_n "checking for iconv declaration""... $ac_c" 1>&6 + echo "configure:3851: checking for iconv declaration" >&5 + if eval "test \"`echo '$''{'am_cv_proto_iconv'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + + cat > conftest.$ac_ext < + #include + extern + #ifdef __cplusplus + "C" + #endif + #if defined(__STDC__) || defined(__cplusplus) + size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); + #else + size_t iconv(); + #endif + + int main() { + + ; return 0; } + EOF + if { (eval echo configure:3876: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + am_cv_proto_iconv_arg1="" + else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + am_cv_proto_iconv_arg1="const" + fi + rm -f conftest* + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" + fi + + am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + echo "$ac_t""${ac_t:- + }$am_cv_proto_iconv" 1>&6 + cat >> confdefs.h <&6 ! echo "configure:3907: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 3931,3937 ---- ; return 0; } EOF ! if { (eval echo configure:3935: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** EOF *** 3822,3828 **** # We look for the one that returns `int'. # Hopefully this check is robust enough. cat > conftest.$ac_ext < EOF --- 3958,3964 ---- # We look for the one that returns `int'. # Hopefully this check is robust enough. cat > conftest.$ac_ext < EOF *************** rm -f conftest* *** 3842,3848 **** *" -D_REENTRANT "*) ;; *) echo $ac_n "checking whether gethostbyname_r declaration requires -D_REENTRANT""... $ac_c" 1>&6 ! echo "configure:3846: checking whether gethostbyname_r declaration requires -D_REENTRANT" >&5 if eval "test \"`echo '$''{'libjava_cv_gethostbyname_r_needs_reentrant'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 3978,3984 ---- *" -D_REENTRANT "*) ;; *) echo $ac_n "checking whether gethostbyname_r declaration requires -D_REENTRANT""... $ac_c" 1>&6 ! echo "configure:3982: checking whether gethostbyname_r declaration requires -D_REENTRANT" >&5 if eval "test \"`echo '$''{'libjava_cv_gethostbyname_r_needs_reentrant'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 3855,3868 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { gethostbyname_r("", 0, 0); ; return 0; } EOF ! if { (eval echo configure:3866: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libjava_cv_gethostbyname_r_needs_reentrant=no else --- 3991,4004 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { gethostbyname_r("", 0, 0); ; return 0; } EOF ! if { (eval echo configure:4002: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libjava_cv_gethostbyname_r_needs_reentrant=no else *************** else *** 3872,3885 **** CPPFLAGS_SAVE="$CPPFLAGS" CPPFLAGS="$CPPFLAGS -D_REENTRANT" cat > conftest.$ac_ext < int main() { gethostbyname_r("", 0, 0); ; return 0; } EOF ! if { (eval echo configure:3883: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libjava_cv_gethostbyname_r_needs_reentrant=yes else --- 4008,4021 ---- CPPFLAGS_SAVE="$CPPFLAGS" CPPFLAGS="$CPPFLAGS -D_REENTRANT" cat > conftest.$ac_ext < int main() { gethostbyname_r("", 0, 0); ; return 0; } EOF ! if { (eval echo configure:4019: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libjava_cv_gethostbyname_r_needs_reentrant=yes else *************** EOF *** 3914,3925 **** esac echo $ac_n "checking for struct hostent_data""... $ac_c" 1>&6 ! echo "configure:3918: checking for struct hostent_data" >&5 if eval "test \"`echo '$''{'libjava_cv_struct_hostent_data'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4054: checking for struct hostent_data" >&5 if eval "test \"`echo '$''{'libjava_cv_struct_hostent_data'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libjava_cv_struct_hostent_data=yes else --- 4066,4072 ---- struct hostent_data data; ; return 0; } EOF ! if { (eval echo configure:4070: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libjava_cv_struct_hostent_data=yes else *************** done *** 3959,3970 **** for ac_func in gethostbyaddr_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:3963: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4099: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 4123,4129 ---- ; return 0; } EOF ! if { (eval echo configure:4127: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** EOF *** 4014,4020 **** # We look for the one that returns `int'. # Hopefully this check is robust enough. cat > conftest.$ac_ext < EOF --- 4150,4156 ---- # We look for the one that returns `int'. # Hopefully this check is robust enough. cat > conftest.$ac_ext < EOF *************** done *** 4038,4049 **** for ac_func in gethostname do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:4042: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4178: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 4202,4208 ---- ; return 0; } EOF ! if { (eval echo configure:4206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** EOF *** 4090,4096 **** EOF cat > conftest.$ac_ext < EOF --- 4226,4232 ---- EOF cat > conftest.$ac_ext < EOF *************** done *** 4121,4132 **** for ac_func in pthread_mutexattr_settype pthread_mutexattr_setkind_np do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:4125: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4261: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 4285,4291 ---- ; return 0; } EOF ! if { (eval echo configure:4289: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 4179,4190 **** for ac_func in sched_yield do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:4183: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4319: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 4343,4349 ---- ; return 0; } EOF ! if { (eval echo configure:4347: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** EOF *** 4229,4235 **** else echo "$ac_t""no" 1>&6 echo $ac_n "checking for sched_yield in -lrt""... $ac_c" 1>&6 ! echo "configure:4233: checking for sched_yield in -lrt" >&5 ac_lib_var=`echo rt'_'sched_yield | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 4365,4371 ---- else echo "$ac_t""no" 1>&6 echo $ac_n "checking for sched_yield in -lrt""... $ac_c" 1>&6 ! echo "configure:4369: checking for sched_yield in -lrt" >&5 ac_lib_var=`echo rt'_'sched_yield | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 4237,4243 **** ac_save_LIBS="$LIBS" LIBS="-lrt $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 4384,4390 ---- sched_yield() ; return 0; } EOF ! if { (eval echo configure:4388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** else *** 4274,4280 **** echo "$ac_t""no" 1>&6 echo $ac_n "checking for sched_yield in -lposix4""... $ac_c" 1>&6 ! echo "configure:4278: checking for sched_yield in -lposix4" >&5 ac_lib_var=`echo posix4'_'sched_yield | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 4410,4416 ---- echo "$ac_t""no" 1>&6 echo $ac_n "checking for sched_yield in -lposix4""... $ac_c" 1>&6 ! echo "configure:4414: checking for sched_yield in -lposix4" >&5 ac_lib_var=`echo posix4'_'sched_yield | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 4282,4288 **** ac_save_LIBS="$LIBS" LIBS="-lposix4 $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 4429,4435 ---- sched_yield() ; return 0; } EOF ! if { (eval echo configure:4433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** done *** 4329,4335 **** # We can save a little space at runtime if the mutex has m_count # or __m_count. This is a nice hack for Linux. cat > conftest.$ac_ext < int main() { --- 4465,4471 ---- # We can save a little space at runtime if the mutex has m_count # or __m_count. This is a nice hack for Linux. cat > conftest.$ac_ext < int main() { *************** int main() { *** 4338,4344 **** ; return 0; } EOF ! if { (eval echo configure:4342: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define PTHREAD_MUTEX_HAVE_M_COUNT 1 --- 4474,4480 ---- ; return 0; } EOF ! if { (eval echo configure:4478: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define PTHREAD_MUTEX_HAVE_M_COUNT 1 *************** else *** 4350,4356 **** rm -rf conftest* cat > conftest.$ac_ext < int main() { --- 4486,4492 ---- rm -rf conftest* cat > conftest.$ac_ext < int main() { *************** int main() { *** 4359,4365 **** ; return 0; } EOF ! if { (eval echo configure:4363: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define PTHREAD_MUTEX_HAVE___M_COUNT 1 --- 4495,4501 ---- ; return 0; } EOF ! if { (eval echo configure:4499: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define PTHREAD_MUTEX_HAVE___M_COUNT 1 *************** rm -f conftest* *** 4379,4390 **** for ac_func in gettimeofday time ftime do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:4383: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4519: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 4543,4549 ---- ; return 0; } EOF ! if { (eval echo configure:4547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 4438,4449 **** for ac_func in memmove do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:4442: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4578: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 4602,4608 ---- ; return 0; } EOF ! if { (eval echo configure:4606: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 4496,4507 **** for ac_func in memcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:4500: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4636: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 4660,4666 ---- ; return 0; } EOF ! if { (eval echo configure:4664: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 4572,4578 **** #-------------------------------------------------------------------- echo $ac_n "checking for socket libraries""... $ac_c" 1>&6 ! echo "configure:4576: checking for socket libraries" >&5 if eval "test \"`echo '$''{'gcj_cv_lib_sockets'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 4708,4714 ---- #-------------------------------------------------------------------- echo $ac_n "checking for socket libraries""... $ac_c" 1>&6 ! echo "configure:4712: checking for socket libraries" >&5 if eval "test \"`echo '$''{'gcj_cv_lib_sockets'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 4580,4591 **** gcj_checkBoth=0 unset ac_cv_func_connect echo $ac_n "checking for connect""... $ac_c" 1>&6 ! echo "configure:4584: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4720: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else --- 4744,4750 ---- ; return 0; } EOF ! if { (eval echo configure:4748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else *************** fi *** 4631,4637 **** if test "$gcj_checkSocket" = 1; then unset ac_cv_func_connect echo $ac_n "checking for main in -lsocket""... $ac_c" 1>&6 ! echo "configure:4635: checking for main in -lsocket" >&5 ac_lib_var=`echo socket'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 4767,4773 ---- if test "$gcj_checkSocket" = 1; then unset ac_cv_func_connect echo $ac_n "checking for main in -lsocket""... $ac_c" 1>&6 ! echo "configure:4771: checking for main in -lsocket" >&5 ac_lib_var=`echo socket'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 4639,4652 **** ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 4775,4788 ---- ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** fi *** 4673,4684 **** LIBS="$LIBS -lsocket -lnsl" unset ac_cv_func_accept echo $ac_n "checking for accept""... $ac_c" 1>&6 ! echo "configure:4677: checking for accept" >&5 if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4813: checking for accept" >&5 if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_accept=yes" else --- 4837,4843 ---- ; return 0; } EOF ! if { (eval echo configure:4841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_accept=yes" else *************** fi *** 4728,4739 **** gcj_oldLibs=$LIBS LIBS="$LIBS $gcj_cv_lib_sockets" echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 ! echo "configure:4732: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4868: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else --- 4892,4898 ---- ; return 0; } EOF ! if { (eval echo configure:4896: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else *************** if eval "test \"`echo '$ac_cv_func_'geth *** 4774,4780 **** else echo "$ac_t""no" 1>&6 echo $ac_n "checking for main in -lnsl""... $ac_c" 1>&6 ! echo "configure:4778: checking for main in -lnsl" >&5 ac_lib_var=`echo nsl'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 4910,4916 ---- else echo "$ac_t""no" 1>&6 echo $ac_n "checking for main in -lnsl""... $ac_c" 1>&6 ! echo "configure:4914: checking for main in -lnsl" >&5 ac_lib_var=`echo nsl'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 4782,4795 **** ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 4918,4931 ---- ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** echo "$ac_t""$gcj_cv_lib_sockets" 1>&6 *** 4821,4827 **** if test "$with_system_zlib" = yes; then echo $ac_n "checking for deflate in -lz""... $ac_c" 1>&6 ! echo "configure:4825: checking for deflate in -lz" >&5 ac_lib_var=`echo z'_'deflate | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 4957,4963 ---- if test "$with_system_zlib" = yes; then echo $ac_n "checking for deflate in -lz""... $ac_c" 1>&6 ! echo "configure:4961: checking for deflate in -lz" >&5 ac_lib_var=`echo z'_'deflate | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 4829,4835 **** ac_save_LIBS="$LIBS" LIBS="-lz $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 4976,4982 ---- deflate() ; return 0; } EOF ! if { (eval echo configure:4980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** fi *** 4870,4876 **** # requires -ldl. if test "$GC" = boehm; then echo $ac_n "checking for main in -ldl""... $ac_c" 1>&6 ! echo "configure:4874: checking for main in -ldl" >&5 ac_lib_var=`echo dl'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 5006,5012 ---- # requires -ldl. if test "$GC" = boehm; then echo $ac_n "checking for main in -ldl""... $ac_c" 1>&6 ! echo "configure:5010: checking for main in -ldl" >&5 ac_lib_var=`echo dl'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 4878,4891 **** ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 5014,5027 ---- ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** fi *** 4951,4957 **** # Extract the first word of "${ac_tool_prefix}gcj", so it can be a program name with args. set dummy ${ac_tool_prefix}gcj; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:4955: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_GCJ'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5087,5093 ---- # Extract the first word of "${ac_tool_prefix}gcj", so it can be a program name with args. set dummy ${ac_tool_prefix}gcj; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5091: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_GCJ'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -n "$ac_tool_prefix"; then *** 4983,4989 **** # Extract the first word of "gcj", so it can be a program name with args. set dummy gcj; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:4987: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_GCJ'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5119,5125 ---- # Extract the first word of "gcj", so it can be a program name with args. set dummy gcj; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5123: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_GCJ'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** exec 5>>./config.log *** 5045,5051 **** CPPFLAGS=$GCJ_SAVE_CPPFLAGS echo $ac_n "checking size of void *""... $ac_c" 1>&6 ! echo "configure:5049: checking size of void *" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_void_p'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5181,5187 ---- CPPFLAGS=$GCJ_SAVE_CPPFLAGS echo $ac_n "checking size of void *""... $ac_c" 1>&6 ! echo "configure:5185: checking size of void *" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_void_p'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 5053,5059 **** { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() --- 5189,5195 ---- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() *************** main() *** 5064,5070 **** exit(0); } EOF ! if { (eval echo configure:5068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_void_p=`cat conftestval` else --- 5200,5206 ---- exit(0); } EOF ! if { (eval echo configure:5204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_void_p=`cat conftestval` else *************** EOF *** 5162,5179 **** echo $ac_n "checking for g++ -ffloat-store bug""... $ac_c" 1>&6 ! echo "configure:5166: checking for g++ -ffloat-store bug" >&5 save_CFLAGS="$CFLAGS" CFLAGS="-x c++ -O2 -ffloat-store" cat > conftest.$ac_ext < int main() { ; return 0; } EOF ! if { (eval echo configure:5177: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""no" 1>&6 else --- 5298,5315 ---- echo $ac_n "checking for g++ -ffloat-store bug""... $ac_c" 1>&6 ! echo "configure:5302: checking for g++ -ffloat-store bug" >&5 save_CFLAGS="$CFLAGS" CFLAGS="-x c++ -O2 -ffloat-store" cat > conftest.$ac_ext < int main() { ; return 0; } EOF ! if { (eval echo configure:5313: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""no" 1>&6 else *************** for ac_hdr in unistd.h bstring.h sys/tim *** 5193,5209 **** do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:5197: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:5207: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 5329,5345 ---- do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:5333: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:5343: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** for ac_hdr in dirent.h *** 5233,5249 **** do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:5237: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:5247: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 5369,5385 ---- do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:5373: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:5383: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** done *** 5271,5282 **** echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 ! echo "configure:5275: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include --- 5407,5418 ---- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 ! echo "configure:5411: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include *************** else *** 5284,5290 **** #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:5288: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 5420,5426 ---- #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:5424: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** rm -f conftest* *** 5301,5307 **** if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF --- 5437,5443 ---- if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF *************** fi *** 5319,5325 **** if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF --- 5455,5461 ---- if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF *************** if test "$cross_compiling" = yes; then *** 5340,5346 **** : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') --- 5476,5482 ---- : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') *************** if (XOR (islower (i), ISLOWER (i)) || to *** 5351,5357 **** exit (0); } EOF ! if { (eval echo configure:5355: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else --- 5487,5493 ---- exit (0); } EOF ! if { (eval echo configure:5491: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else *************** EOF *** 5375,5386 **** fi echo $ac_n "checking for ssize_t""... $ac_c" 1>&6 ! echo "configure:5379: checking for ssize_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS --- 5511,5522 ---- fi echo $ac_n "checking for ssize_t""... $ac_c" 1>&6 ! echo "configure:5515: checking for ssize_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS *************** EOF *** 5391,5407 **** if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "(^|[^a-zA-Z_0-9])ssize_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then rm -rf conftest* ! ac_cv_type_ssize_t=yes else rm -rf conftest* ! ac_cv_type_ssize_t=no fi rm -f conftest* fi ! echo "$ac_t""$ac_cv_type_ssize_t" 1>&6 ! if test $ac_cv_type_ssize_t = no; then ! cat >> confdefs.h <<\EOF #define ssize_t int EOF --- 5527,5545 ---- if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "(^|[^a-zA-Z_0-9])ssize_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then rm -rf conftest* ! eval "ac_cv_type_ssize_t=yes" else rm -rf conftest* ! eval "ac_cv_type_ssize_t=no" fi rm -f conftest* fi ! if eval "test \"`echo '$ac_cv_type_'ssize_t`\" = yes"; then ! echo "$ac_t""yes" 1>&6 ! else ! echo "$ac_t""no" 1>&6 ! cat >> confdefs.h <&6 ! echo "configure:5413: checking for in_addr_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS --- 5547,5555 ---- echo $ac_n "checking for in_addr_t""... $ac_c" 1>&6 ! echo "configure:5551: checking for in_addr_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS *************** int main() { *** 5425,5431 **** in_addr_t foo; ; return 0; } EOF ! if { (eval echo configure:5429: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define HAVE_IN_ADDR_T 1 --- 5563,5569 ---- in_addr_t foo; ; return 0; } EOF ! if { (eval echo configure:5567: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define HAVE_IN_ADDR_T 1 *************** fi *** 5441,5456 **** rm -f conftest* echo $ac_n "checking whether struct ip_mreq is in netinet/in.h""... $ac_c" 1>&6 ! echo "configure:5445: checking whether struct ip_mreq is in netinet/in.h" >&5 cat > conftest.$ac_ext < int main() { struct ip_mreq mreq; ; return 0; } EOF ! if { (eval echo configure:5454: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define HAVE_STRUCT_IP_MREQ 1 --- 5579,5594 ---- rm -f conftest* echo $ac_n "checking whether struct ip_mreq is in netinet/in.h""... $ac_c" 1>&6 ! echo "configure:5583: checking whether struct ip_mreq is in netinet/in.h" >&5 cat > conftest.$ac_ext < int main() { struct ip_mreq mreq; ; return 0; } EOF ! if { (eval echo configure:5592: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define HAVE_STRUCT_IP_MREQ 1 *************** else *** 5465,5481 **** fi rm -f conftest* echo $ac_n "checking whether struct sockaddr_in6 is in netinet/in.h""... $ac_c" 1>&6 ! echo "configure:5470: checking whether struct sockaddr_in6 is in netinet/in.h" >&5 cat > conftest.$ac_ext < int main() { struct sockaddr_in6 addr6; ; return 0; } EOF ! if { (eval echo configure:5479: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define HAVE_INET6 1 --- 5603,5644 ---- fi rm -f conftest* + echo $ac_n "checking whether struct ipv6_mreq is in netinet/in.h""... $ac_c" 1>&6 + echo "configure:5608: checking whether struct ipv6_mreq is in netinet/in.h" >&5 + cat > conftest.$ac_ext < + int main() { + struct ipv6_mreq mreq6; + ; return 0; } + EOF + if { (eval echo configure:5617: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cat >> confdefs.h <<\EOF + #define HAVE_STRUCT_IPV6_MREQ 1 + EOF + + echo "$ac_t""yes" 1>&6 + else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + echo "$ac_t""no" 1>&6 + fi + rm -f conftest* + echo $ac_n "checking whether struct sockaddr_in6 is in netinet/in.h""... $ac_c" 1>&6 ! echo "configure:5633: checking whether struct sockaddr_in6 is in netinet/in.h" >&5 cat > conftest.$ac_ext < int main() { struct sockaddr_in6 addr6; ; return 0; } EOF ! if { (eval echo configure:5642: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define HAVE_INET6 1 *************** fi *** 5491,5507 **** rm -f conftest* echo $ac_n "checking for socklen_t in sys/socket.h""... $ac_c" 1>&6 ! echo "configure:5495: checking for socklen_t in sys/socket.h" >&5 cat > conftest.$ac_ext < #include int main() { socklen_t x = 5; ; return 0; } EOF ! if { (eval echo configure:5505: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define HAVE_SOCKLEN_T 1 --- 5654,5671 ---- rm -f conftest* echo $ac_n "checking for socklen_t in sys/socket.h""... $ac_c" 1>&6 ! echo "configure:5658: checking for socklen_t in sys/socket.h" >&5 cat > conftest.$ac_ext < #include int main() { socklen_t x = 5; ; return 0; } EOF ! if { (eval echo configure:5669: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define HAVE_SOCKLEN_T 1 *************** fi *** 5517,5532 **** rm -f conftest* echo $ac_n "checking for tm_gmtoff in struct tm""... $ac_c" 1>&6 ! echo "configure:5521: checking for tm_gmtoff in struct tm" >&5 cat > conftest.$ac_ext < int main() { struct tm tim; tim.tm_gmtoff = 0; ; return 0; } EOF ! if { (eval echo configure:5530: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define STRUCT_TM_HAS_GMTOFF 1 --- 5681,5696 ---- rm -f conftest* echo $ac_n "checking for tm_gmtoff in struct tm""... $ac_c" 1>&6 ! echo "configure:5685: checking for tm_gmtoff in struct tm" >&5 cat > conftest.$ac_ext < int main() { struct tm tim; tim.tm_gmtoff = 0; ; return 0; } EOF ! if { (eval echo configure:5694: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define STRUCT_TM_HAS_GMTOFF 1 *************** else *** 5539,5554 **** rm -rf conftest* echo "$ac_t""no" 1>&6 echo $ac_n "checking for global timezone variable""... $ac_c" 1>&6 ! echo "configure:5543: checking for global timezone variable" >&5 cat > conftest.$ac_ext < int main() { long z2 = timezone; ; return 0; } EOF ! if { (eval echo configure:5552: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define HAVE_TIMEZONE 1 --- 5703,5718 ---- rm -rf conftest* echo "$ac_t""no" 1>&6 echo $ac_n "checking for global timezone variable""... $ac_c" 1>&6 ! echo "configure:5707: checking for global timezone variable" >&5 cat > conftest.$ac_ext < int main() { long z2 = timezone; ; return 0; } EOF ! if { (eval echo configure:5716: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define HAVE_TIMEZONE 1 *************** rm -f conftest* *** 5568,5586 **** # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 ! echo "configure:5572: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF ! if { (eval echo configure:5584: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else --- 5732,5750 ---- # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 ! echo "configure:5736: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF ! if { (eval echo configure:5748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else *************** EOF *** 5601,5612 **** fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 ! echo "configure:5605: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:5769: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else --- 5798,5804 ---- char *p = (char *) alloca(1); ; return 0; } EOF ! if { (eval echo configure:5802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else *************** EOF *** 5666,5677 **** echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 ! echo "configure:5670: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:5834: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 *** 5696,5707 **** if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:5700: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:5864: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 5888,5894 ---- ; return 0; } EOF ! if { (eval echo configure:5892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 5751,5757 **** fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 ! echo "configure:5755: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5915,5921 ---- fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 ! echo "configure:5919: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 5759,5765 **** ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else --- 5942,5948 ---- exit (find_stack_direction() < 0); } EOF ! if { (eval echo configure:5946: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else *************** do *** 5805,5811 **** # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5809: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_PERL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 5969,5975 ---- # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:5973: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_PERL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 5880,5886 **** # Uses ac_ vars as temps to allow command line to override cache and checks. # --without-x overrides everything else, but does not touch the cache. echo $ac_n "checking for X""... $ac_c" 1>&6 ! echo "configure:5884: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then --- 6044,6050 ---- # Uses ac_ vars as temps to allow command line to override cache and checks. # --without-x overrides everything else, but does not touch the cache. echo $ac_n "checking for X""... $ac_c" 1>&6 ! echo "configure:6048: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then *************** if test "$ac_x_includes" = NO; then *** 5942,5953 **** # First, try using that file with no special directory specified. cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:5951: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 6106,6117 ---- # First, try using that file with no special directory specified. cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:6115: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** if test "$ac_x_libraries" = NO; then *** 6016,6029 **** ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. --- 6180,6193 ---- ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. *************** else *** 6129,6145 **** case "`(uname -sr) 2>/dev/null`" in "SunOS 5"*) echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6 ! echo "configure:6133: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_nospace=yes else --- 6293,6309 ---- case "`(uname -sr) 2>/dev/null`" in "SunOS 5"*) echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6 ! echo "configure:6297: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_nospace=yes else *************** rm -f conftest* *** 6155,6168 **** else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_space=yes else --- 6319,6332 ---- else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_space=yes else *************** rm -f conftest* *** 6194,6200 **** # libraries were built with DECnet support. And karl@cs.umb.edu says # the Alpha needs dnet_stub (dnet does not exist). echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 ! echo "configure:6198: checking for dnet_ntoa in -ldnet" >&5 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 6358,6364 ---- # libraries were built with DECnet support. And karl@cs.umb.edu says # the Alpha needs dnet_stub (dnet does not exist). echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 ! echo "configure:6362: checking for dnet_ntoa in -ldnet" >&5 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 6202,6208 **** ac_save_LIBS="$LIBS" LIBS="-ldnet $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 6377,6383 ---- dnet_ntoa() ; return 0; } EOF ! if { (eval echo configure:6381: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** fi *** 6235,6241 **** if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6 ! echo "configure:6239: checking for dnet_ntoa in -ldnet_stub" >&5 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 6399,6405 ---- if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6 ! echo "configure:6403: checking for dnet_ntoa in -ldnet_stub" >&5 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 6243,6249 **** ac_save_LIBS="$LIBS" LIBS="-ldnet_stub $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 6418,6424 ---- dnet_ntoa() ; return 0; } EOF ! if { (eval echo configure:6422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** fi *** 6283,6294 **** # The nsl library prevents programs from opening the X display # on Irix 5.2, according to dickey@clark.net. echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 ! echo "configure:6287: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:6451: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else --- 6475,6481 ---- ; return 0; } EOF ! if { (eval echo configure:6479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else *************** fi *** 6332,6338 **** if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 ! echo "configure:6336: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 6496,6502 ---- if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 ! echo "configure:6500: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 6340,6346 **** ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 6515,6521 ---- gethostbyname() ; return 0; } EOF ! if { (eval echo configure:6519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** fi *** 6381,6392 **** # -lsocket must be given before -lnsl if both are needed. # We assume that if connect needs -lnsl, so does gethostbyname. echo $ac_n "checking for connect""... $ac_c" 1>&6 ! echo "configure:6385: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:6549: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else --- 6573,6579 ---- ; return 0; } EOF ! if { (eval echo configure:6577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else *************** fi *** 6430,6436 **** if test $ac_cv_func_connect = no; then echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6 ! echo "configure:6434: checking for connect in -lsocket" >&5 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 6594,6600 ---- if test $ac_cv_func_connect = no; then echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6 ! echo "configure:6598: checking for connect in -lsocket" >&5 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 6438,6444 **** ac_save_LIBS="$LIBS" LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 6613,6619 ---- connect() ; return 0; } EOF ! if { (eval echo configure:6617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** fi *** 6473,6484 **** # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. echo $ac_n "checking for remove""... $ac_c" 1>&6 ! echo "configure:6477: checking for remove" >&5 if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:6641: checking for remove" >&5 if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_remove=yes" else --- 6665,6671 ---- ; return 0; } EOF ! if { (eval echo configure:6669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_remove=yes" else *************** fi *** 6522,6528 **** if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 ! echo "configure:6526: checking for remove in -lposix" >&5 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 6686,6692 ---- if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 ! echo "configure:6690: checking for remove in -lposix" >&5 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 6530,6536 **** ac_save_LIBS="$LIBS" LIBS="-lposix $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 6705,6711 ---- remove() ; return 0; } EOF ! if { (eval echo configure:6709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** fi *** 6565,6576 **** # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 ! echo "configure:6569: checking for shmat" >&5 if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:6733: checking for shmat" >&5 if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else --- 6757,6763 ---- ; return 0; } EOF ! if { (eval echo configure:6761: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else *************** fi *** 6614,6620 **** if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 ! echo "configure:6618: checking for shmat in -lipc" >&5 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 6778,6784 ---- if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 ! echo "configure:6782: checking for shmat in -lipc" >&5 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 6622,6628 **** ac_save_LIBS="$LIBS" LIBS="-lipc $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 6797,6803 ---- shmat() ; return 0; } EOF ! if { (eval echo configure:6801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** fi *** 6666,6672 **** # libraries we check for below, so use a different variable. # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6 ! echo "configure:6670: checking for IceConnectionNumber in -lICE" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 6830,6836 ---- # libraries we check for below, so use a different variable. # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6 ! echo "configure:6834: checking for IceConnectionNumber in -lICE" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 6674,6680 **** ac_save_LIBS="$LIBS" LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 6849,6855 ---- IceConnectionNumber() ; return 0; } EOF ! if { (eval echo configure:6853: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** s%@infodir@%$infodir%g *** 6901,6906 **** --- 7065,7071 ---- s%@mandir@%$mandir%g s%@LN_S@%$LN_S%g s%@libgcj_basedir@%$libgcj_basedir%g + s%@mkinstalldirs@%$mkinstalldirs%g s%@host@%$host%g s%@host_alias@%$host_alias%g s%@host_cpu@%$host_cpu%g *************** s%@THREADOBJS@%$THREADOBJS%g *** 6971,6976 **** --- 7136,7143 ---- s%@THREADSPEC@%$THREADSPEC%g s%@USING_GCC_TRUE@%$USING_GCC_TRUE%g s%@USING_GCC_FALSE@%$USING_GCC_FALSE%g + s%@ICONV_LDFLAGS@%$ICONV_LDFLAGS%g + s%@LIBICONV@%$LIBICONV%g s%@GCJ@%$GCJ%g s%@GCJFLAGS@%$GCJFLAGS%g s%@ZLIBS@%$ZLIBS%g *************** if test "$no_recursion" != yes; then *** 7340,7351 **** *) if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :; else ! { echo "configure: error: can not create `pwd`/$ac_config_dir" 1>&2; exit 1; } fi ;; esac ! ac_popdir=`pwd` cd $ac_config_dir # A "../" for each directory in /$ac_config_dir. --- 7507,7518 ---- *) if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :; else ! { echo "configure: error: can not create `/vol/local/bin/pwd`/$ac_config_dir" 1>&2; exit 1; } fi ;; esac ! ac_popdir=`/vol/local/bin/pwd` cd $ac_config_dir # A "../" for each directory in /$ac_config_dir. diff -Nrc3pad gcc-3.0/libjava/configure.in gcc-3.0.1/libjava/configure.in *** gcc-3.0/libjava/configure.in Fri Jun 8 16:38:55 2001 --- gcc-3.0.1/libjava/configure.in Wed Aug 1 10:49:13 2001 *************** EOF *** 113,119 **** old_CXXFLAGS="$CXXFLAGS" CXXFLAGS=-S if AC_TRY_EVAL(ac_compile); then ! if grep _Unwind_Sjlj_Resume conftest.s >/dev/null 2>&1 ; then enable_sjlj_exceptions=yes elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then enable_sjlj_exceptions=no --- 113,119 ---- old_CXXFLAGS="$CXXFLAGS" CXXFLAGS=-S if AC_TRY_EVAL(ac_compile); then ! if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then enable_sjlj_exceptions=yes elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then enable_sjlj_exceptions=no *************** else *** 394,400 **** AC_CHECK_FUNCS(strerror ioctl select fstat open fsync sleep) AC_CHECK_FUNCS(gmtime_r localtime_r readdir_r getpwuid_r getcwd) AC_CHECK_FUNCS(access stat mkdir rename rmdir unlink realpath utime chmod) ! AC_CHECK_FUNCS(iconv nl_langinfo setlocale) AC_CHECK_FUNCS(inet_aton inet_addr, break) AC_CHECK_FUNCS(inet_pton uname inet_ntoa) AC_CHECK_FUNCS(backtrace fork execvp pipe) --- 394,400 ---- AC_CHECK_FUNCS(strerror ioctl select fstat open fsync sleep) AC_CHECK_FUNCS(gmtime_r localtime_r readdir_r getpwuid_r getcwd) AC_CHECK_FUNCS(access stat mkdir rename rmdir unlink realpath utime chmod) ! AC_CHECK_FUNCS(nl_langinfo setlocale) AC_CHECK_FUNCS(inet_aton inet_addr, break) AC_CHECK_FUNCS(inet_pton uname inet_ntoa) AC_CHECK_FUNCS(backtrace fork execvp pipe) *************** else *** 404,409 **** --- 404,411 ---- AC_CHECK_FILES(/proc/self/exe, [ AC_DEFINE(HAVE_PROC_SELF_EXE)]) + AM_ICONV + AC_CHECK_FUNCS(gethostbyname_r, [ AC_DEFINE(HAVE_GETHOSTBYNAME_R) # There are two different kinds of gethostbyname_r. *************** AC_TRY_COMPILE([#include ] *** 698,703 **** --- 700,711 ---- AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)]) + AC_MSG_CHECKING([whether struct ipv6_mreq is in netinet/in.h]) + AC_TRY_COMPILE([#include ], [struct ipv6_mreq mreq6;], + [AC_DEFINE(HAVE_STRUCT_IPV6_MREQ) + AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no)]) + AC_MSG_CHECKING([whether struct sockaddr_in6 is in netinet/in.h]) AC_TRY_COMPILE([#include ], [struct sockaddr_in6 addr6;], [AC_DEFINE(HAVE_INET6) *************** AC_TRY_COMPILE([#include ] *** 705,711 **** [AC_MSG_RESULT(no)]) AC_MSG_CHECKING([for socklen_t in sys/socket.h]) ! AC_TRY_COMPILE([#include #include ], [socklen_t x = 5;], [AC_DEFINE(HAVE_SOCKLEN_T) AC_MSG_RESULT(yes)], --- 713,720 ---- [AC_MSG_RESULT(no)]) AC_MSG_CHECKING([for socklen_t in sys/socket.h]) ! AC_TRY_COMPILE([#define _POSIX_PII_SOCKET ! #include #include ], [socklen_t x = 5;], [AC_DEFINE(HAVE_SOCKLEN_T) AC_MSG_RESULT(yes)], diff -Nrc3pad gcc-3.0/libjava/gcj/Makefile.in gcc-3.0.1/libjava/gcj/Makefile.in *** gcc-3.0/libjava/gcj/Makefile.in Fri Jun 8 10:58:16 2001 --- gcc-3.0.1/libjava/gcj/Makefile.in Wed Jul 18 09:56:41 2001 *************** GCLIBS = @GCLIBS@ *** 85,90 **** --- 85,91 ---- GCOBJS = @GCOBJS@ GCSPEC = @GCSPEC@ GCTESTSPEC = @GCTESTSPEC@ + ICONV_LDFLAGS = @ICONV_LDFLAGS@ INCLTDL = @INCLTDL@ JC1GCSPEC = @JC1GCSPEC@ LIBDATASTARTSPEC = @LIBDATASTARTSPEC@ *************** LIBGCJTESTSPEC = @LIBGCJTESTSPEC@ *** 93,98 **** --- 94,100 ---- LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@ LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@ LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@ + LIBICONV = @LIBICONV@ LIBLTDL = @LIBLTDL@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ *************** ZLIBSPEC = @ZLIBSPEC@ *** 119,130 **** ZLIBTESTSPEC = @ZLIBTESTSPEC@ here = @here@ libgcj_basedir = @libgcj_basedir@ AUTOMAKE_OPTIONS = foreign gcjdir = $(includedir)/gcj gcj_HEADERS = array.h cni.h field.h javaprims.h method.h - mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = ../include/config.h CONFIG_CLEAN_FILES = HEADERS = $(gcj_HEADERS) --- 121,132 ---- ZLIBTESTSPEC = @ZLIBTESTSPEC@ here = @here@ libgcj_basedir = @libgcj_basedir@ + mkinstalldirs = @mkinstalldirs@ AUTOMAKE_OPTIONS = foreign gcjdir = $(includedir)/gcj gcj_HEADERS = array.h cni.h field.h javaprims.h method.h CONFIG_HEADER = ../include/config.h CONFIG_CLEAN_FILES = HEADERS = $(gcj_HEADERS) diff -Nrc3pad gcc-3.0/libjava/gnu/gcj/runtime/natFirstThread.cc gcc-3.0.1/libjava/gnu/gcj/runtime/natFirstThread.cc *** gcc-3.0/libjava/gnu/gcj/runtime/natFirstThread.cc Mon Apr 24 08:07:16 2000 --- gcc-3.0.1/libjava/gnu/gcj/runtime/natFirstThread.cc Tue Jul 24 12:57:57 2001 *************** *** 1,6 **** // natFirstThread.cc - Implementation of FirstThread native methods. ! /* Copyright (C) 1998, 1999, 2000 Free Software Foundation This file is part of libgcj. --- 1,6 ---- // natFirstThread.cc - Implementation of FirstThread native methods. ! /* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation This file is part of libgcj. *************** typedef void main_func (jobject); *** 37,48 **** extern void (*_Jv_JVMPI_Notify_THREAD_START) (JVMPI_Event *event); #endif ! /* This will be non-NULL if the user has preloaded a JNI library, or ! linked one into the executable. */ extern "C" { ! #pragma weak JNI_OnLoad extern jint JNI_OnLoad (JavaVM *, void *) __attribute__((weak)); } void --- 37,55 ---- extern void (*_Jv_JVMPI_Notify_THREAD_START) (JVMPI_Event *event); #endif ! /* This will be different from _JNI_OnLoad if the user has preloaded a JNI ! library, or linked one into the executable. */ extern "C" { ! /* Some systems, like Tru64 UNIX, don't support weak definitions, so use ! an empty dummy function to check if the user provided his own. */ ! #pragma weak JNI_OnLoad = _JNI_OnLoad extern jint JNI_OnLoad (JavaVM *, void *) __attribute__((weak)); + + jint _JNI_OnLoad (JavaVM *vm, void *) + { + return 0; + } } void *************** gnu::gcj::runtime::FirstThread::run (voi *** 57,63 **** environment variable. We take advatage of this here to allow for dynamically loading a JNI library into a fully linked executable. */ ! if (JNI_OnLoad != NULL) { JavaVM *vm = _Jv_GetJavaVM (); if (vm == NULL) --- 64,70 ---- environment variable. We take advatage of this here to allow for dynamically loading a JNI library into a fully linked executable. */ ! if (JNI_OnLoad != _JNI_OnLoad) { JavaVM *vm = _Jv_GetJavaVM (); if (vm == NULL) diff -Nrc3pad gcc-3.0/libjava/include/Makefile.in gcc-3.0.1/libjava/include/Makefile.in *** gcc-3.0/libjava/include/Makefile.in Fri Jun 8 10:58:17 2001 --- gcc-3.0.1/libjava/include/Makefile.in Wed Jul 18 09:56:42 2001 *************** GCLIBS = @GCLIBS@ *** 85,90 **** --- 85,91 ---- GCOBJS = @GCOBJS@ GCSPEC = @GCSPEC@ GCTESTSPEC = @GCTESTSPEC@ + ICONV_LDFLAGS = @ICONV_LDFLAGS@ INCLTDL = @INCLTDL@ JC1GCSPEC = @JC1GCSPEC@ LIBDATASTARTSPEC = @LIBDATASTARTSPEC@ *************** LIBGCJTESTSPEC = @LIBGCJTESTSPEC@ *** 93,98 **** --- 94,100 ---- LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@ LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@ LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@ + LIBICONV = @LIBICONV@ LIBLTDL = @LIBLTDL@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ *************** ZLIBSPEC = @ZLIBSPEC@ *** 119,129 **** ZLIBTESTSPEC = @ZLIBTESTSPEC@ here = @here@ libgcj_basedir = @libgcj_basedir@ AUTOMAKE_OPTIONS = foreign include_HEADERS = jni.h jvmpi.h - mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = HEADERS = $(include_HEADERS) --- 121,131 ---- ZLIBTESTSPEC = @ZLIBTESTSPEC@ here = @here@ libgcj_basedir = @libgcj_basedir@ + mkinstalldirs = @mkinstalldirs@ AUTOMAKE_OPTIONS = foreign include_HEADERS = jni.h jvmpi.h CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = HEADERS = $(include_HEADERS) diff -Nrc3pad gcc-3.0/libjava/include/config.h.in gcc-3.0.1/libjava/include/config.h.in *** gcc-3.0/libjava/include/config.h.in Sun Apr 1 03:32:36 2001 --- gcc-3.0.1/libjava/include/config.h.in Wed Aug 1 10:49:20 2001 *************** *** 83,88 **** --- 83,91 ---- /* Define if struct ip_mreq is defined in netinet/in.h. */ #undef HAVE_STRUCT_IP_MREQ + /* Define if struct ipv6_mreq is defined in netinet/in.h. */ + #undef HAVE_STRUCT_IPV6_MREQ + /* Define it socklen_t typedef is in sys/socket.h. */ #undef HAVE_SOCKLEN_T *************** *** 135,143 **** getenv("GCJ_PROPERTIES"). */ #undef DISABLE_GETENV_PROPERTIES - /* Define if using setjmp/longjmp exceptions. */ - #undef SJLJ_EXCEPTIONS - /* Define if you have /proc/self/exe */ #undef HAVE_PROC_SELF_EXE --- 138,143 ---- *************** *** 206,214 **** /* Define if you have the gmtime_r function. */ #undef HAVE_GMTIME_R - /* Define if you have the iconv function. */ - #undef HAVE_ICONV - /* Define if you have the inet_addr function. */ #undef HAVE_INET_ADDR --- 206,211 ---- *************** *** 365,375 **** --- 362,381 ---- /* Version number of package */ #undef VERSION + /* Define if the compiler is configured for setjmp/longjmp exceptions. */ + #undef SJLJ_EXCEPTIONS + /* Required define if using POSIX threads */ #undef _REENTRANT /* Required define if using POSIX threads */ #undef _POSIX_PTHREAD_SEMANTICS + + /* Define if you have the iconv() function. */ + #undef HAVE_ICONV + + /* Define as const if the declaration of iconv() needs const. */ + #undef ICONV_CONST /* Required define if using POSIX threads */ #undef _REENTRANT diff -Nrc3pad gcc-3.0/libjava/include/posix.h gcc-3.0.1/libjava/include/posix.h *** gcc-3.0/libjava/include/posix.h Wed Aug 2 14:54:04 2000 --- gcc-3.0.1/libjava/include/posix.h Wed Aug 1 10:49:20 2001 *************** This software is copyrighted work licens *** 8,13 **** --- 8,18 ---- Libgcj License. Please consult the file "LIBGCJ_LICENSE" for details. */ + /* Required on Tru64 UNIX V4/V5 so defines prototypes of + socket functions with socklen_t instead of size_t. This must be defined + early so defines the correct version of __PIIX. */ + #define _POSIX_PII_SOCKET + #include #include diff -Nrc3pad gcc-3.0/libjava/java/io/File.java gcc-3.0.1/libjava/java/io/File.java *** gcc-3.0/libjava/java/io/File.java Thu Apr 12 02:27:03 2001 --- gcc-3.0.1/libjava/java/io/File.java Wed Jul 18 11:38:23 2001 *************** public class File implements Serializabl *** 29,41 **** public boolean canRead () { checkRead(); ! return access (READ); } public boolean canWrite () { checkWrite(); ! return access (WRITE); } private native boolean performCreate() throws IOException; --- 29,41 ---- public boolean canRead () { checkRead(); ! return _access (READ); } public boolean canWrite () { checkWrite(); ! return _access (WRITE); } private native boolean performCreate() throws IOException; *************** public class File implements Serializabl *** 71,77 **** public boolean exists () { checkRead(); ! return access (EXISTS); } public File (String p) --- 71,77 ---- public boolean exists () { checkRead(); ! return _access (EXISTS); } public File (String p) *************** public class File implements Serializabl *** 209,228 **** public boolean isDirectory () { checkRead(); ! return stat (DIRECTORY); } public boolean isFile () { checkRead(); ! return stat (ISFILE); } /** @since 1.2 */ public boolean isHidden() { checkRead(); ! return stat (ISHIDDEN); } public long lastModified () --- 209,228 ---- public boolean isDirectory () { checkRead(); ! return _stat (DIRECTORY); } public boolean isFile () { checkRead(); ! return _stat (ISFILE); } /** @since 1.2 */ public boolean isHidden() { checkRead(); ! return _stat (ISHIDDEN); } public long lastModified () *************** public class File implements Serializabl *** 566,573 **** private final static int LENGTH = 1; private final native long attr (int query); ! private final native boolean access (int query); ! private final native boolean stat (int query); private static final long serialVersionUID = 301077366599181567L; } --- 566,576 ---- private final static int LENGTH = 1; private final native long attr (int query); ! // On OSF1 V5.0, `stat' is a macro. It is easiest to use the name ! // `_stat' instead. We do the same thing for `_access' just in ! // case. ! private final native boolean _access (int query); ! private final native boolean _stat (int query); private static final long serialVersionUID = 301077366599181567L; } diff -Nrc3pad gcc-3.0/libjava/java/io/natFile.cc gcc-3.0.1/libjava/java/io/natFile.cc *** gcc-3.0/libjava/java/io/natFile.cc Thu May 31 18:58:47 2001 --- gcc-3.0.1/libjava/java/io/natFile.cc Wed Jul 18 11:38:23 2001 *************** details. */ *** 37,43 **** #include jboolean ! java::io::File::access (jint query) { char buf[MAXPATHLEN]; jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf); --- 37,43 ---- #include jboolean ! java::io::File::_access (jint query) { char buf[MAXPATHLEN]; jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf); *************** java::io::File::access (jint query) *** 59,65 **** } jboolean ! java::io::File::stat (jint query) { char buf[MAXPATHLEN]; jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf); --- 59,65 ---- } jboolean ! java::io::File::_stat (jint query) { char buf[MAXPATHLEN]; jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf); diff -Nrc3pad gcc-3.0/libjava/java/io/natFileWin32.cc gcc-3.0.1/libjava/java/io/natFileWin32.cc *** gcc-3.0/libjava/java/io/natFileWin32.cc Sun Apr 1 22:22:09 2001 --- gcc-3.0.1/libjava/java/io/natFileWin32.cc Wed Jul 18 11:38:23 2001 *************** details. */ *** 25,31 **** #include jboolean ! java::io::File::access (jint query) { char buf[MAX_PATH]; jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf); --- 25,31 ---- #include jboolean ! java::io::File::_access (jint query) { char buf[MAX_PATH]; jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf); *************** java::io::File::access (jint query) *** 46,52 **** } jboolean ! java::io::File::stat (jint query) { char buf[MAX_PATH]; jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf); --- 46,52 ---- } jboolean ! java::io::File::_stat (jint query) { char buf[MAX_PATH]; jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf); diff -Nrc3pad gcc-3.0/libjava/java/lang/Class.h gcc-3.0.1/libjava/java/lang/Class.h *** gcc-3.0/libjava/java/lang/Class.h Sun May 6 07:08:26 2001 --- gcc-3.0.1/libjava/java/lang/Class.h Thu Jul 5 09:08:54 2001 *************** public: *** 205,212 **** // finalization void finalize (); - Class () {}; - // This constructor is used to create Class object for the primitive // types. See prims.cc. Class (jobject cname, jbyte sig, jint len, jobject array_vtable) --- 205,210 ---- *************** public: *** 235,240 **** --- 233,240 ---- static java::lang::Class class$; private: + + Class (); void checkMemberAccess (jint flags); diff -Nrc3pad gcc-3.0/libjava/java/lang/natClass.cc gcc-3.0.1/libjava/java/lang/natClass.cc *** gcc-3.0/libjava/java/lang/natClass.cc Tue Jun 5 02:56:10 2001 --- gcc-3.0.1/libjava/java/lang/natClass.cc Wed Jul 18 11:08:57 2001 *************** java::lang::Class::getMethods (void) *** 624,632 **** jboolean java::lang::Class::isAssignableFrom (jclass klass) { - // Arguments may not have been initialized, given ".class" syntax. - _Jv_InitClass (this); - _Jv_InitClass (klass); return _Jv_IsAssignableFrom (this, klass); } --- 624,629 ---- *************** java::lang::Class::isInstance (jobject o *** 635,641 **** { if (! obj) return false; - _Jv_InitClass (this); return _Jv_IsAssignableFrom (this, JV_CLASS (obj)); } --- 632,637 ---- *************** _Jv_LookupInterfaceMethodIdx (jclass kla *** 909,914 **** --- 905,914 ---- jboolean _Jv_IsAssignableFrom (jclass target, jclass source) { + // Arguments may not have been initialized, given ".class" syntax. + _Jv_InitClass (target); + _Jv_InitClass (source); + if (source == target) return true; diff -Nrc3pad gcc-3.0/libjava/java/net/natPlainDatagramSocketImpl.cc gcc-3.0.1/libjava/java/net/natPlainDatagramSocketImpl.cc *** gcc-3.0/libjava/java/net/natPlainDatagramSocketImpl.cc Wed May 23 20:07:51 2001 --- gcc-3.0.1/libjava/java/net/natPlainDatagramSocketImpl.cc Wed Aug 1 10:49:21 2001 *************** union McastReq *** 158,164 **** #if HAVE_STRUCT_IP_MREQ struct ip_mreq mreq; #endif ! #ifdef HAVE_INET6 struct ipv6_mreq mreq6; #endif }; --- 158,164 ---- #if HAVE_STRUCT_IP_MREQ struct ip_mreq mreq; #endif ! #if HAVE_STRUCT_IPV6_MREQ struct ipv6_mreq mreq6; #endif }; *************** java::net::PlainDatagramSocketImpl::mcas *** 423,433 **** ptr = (const char *) &u.mreq; } #endif ! #ifdef HAVE_INET6 else if (len == 16) { level = IPPROTO_IPV6; ! opname = join ? IPV6_ADD_MEMBERSHIP : IPV6_DROP_MEMBERSHIP; memcpy (&u.mreq6.ipv6mr_multiaddr, bytes, len); // FIXME: If a non-default interface is set, use it; see Stevens p. 501. // Maybe not, see note in last paragraph at bottom of Stevens p. 497. --- 423,442 ---- ptr = (const char *) &u.mreq; } #endif ! #if HAVE_STRUCT_IPV6_MREQ else if (len == 16) { level = IPPROTO_IPV6; ! ! /* Prefer new RFC 2553 names. */ ! #ifndef IPV6_JOIN_GROUP ! #define IPV6_JOIN_GROUP IPV6_ADD_MEMBERSHIP ! #endif ! #ifndef IPV6_LEAVE_GROUP ! #define IPV6_LEAVE_GROUP IPV6_DROP_MEMBERSHIP ! #endif ! ! opname = join ? IPV6_JOIN_GROUP : IPV6_LEAVE_GROUP; memcpy (&u.mreq6.ipv6mr_multiaddr, bytes, len); // FIXME: If a non-default interface is set, use it; see Stevens p. 501. // Maybe not, see note in last paragraph at bottom of Stevens p. 497. *************** java::net::PlainDatagramSocketImpl::setO *** 522,528 **** len = sizeof (struct in_addr); ptr = (const char *) &u.addr; } ! #ifdef HAVE_INET6 else if (len == 16) { level = IPPROTO_IPV6; --- 531,538 ---- len = sizeof (struct in_addr); ptr = (const char *) &u.addr; } ! // Tru64 UNIX V5.0 has struct sockaddr_in6, but no IPV6_MULTICAST_IF ! #if defined (HAVE_INET6) && defined (IPV6_MULTICAST_IF) else if (len == 16) { level = IPPROTO_IPV6; diff -Nrc3pad gcc-3.0/libjava/java/net/natPlainSocketImpl.cc gcc-3.0.1/libjava/java/net/natPlainSocketImpl.cc *** gcc-3.0/libjava/java/net/natPlainSocketImpl.cc Wed May 23 20:07:51 2001 --- gcc-3.0.1/libjava/java/net/natPlainSocketImpl.cc Wed Aug 1 10:49:21 2001 *************** details. */ *** 33,38 **** --- 33,42 ---- #include #endif + #ifndef HAVE_SOCKLEN_T + typedef int socklen_t; + #endif + // Avoid macro definitions of bind, connect from system headers, e.g. on // Solaris 7 with _XOPEN_SOURCE. FIXME static inline int *************** _Jv_connect (int fd, struct sockaddr *ad *** 55,60 **** --- 59,75 ---- #undef connect #endif + // Same problem with accept on Tru64 UNIX with _POSIX_PII_SOCKET + static inline int + _Jv_accept (int fd, struct sockaddr *addr, socklen_t *addrlen) + { + return ::accept (fd, addr, addrlen); + } + + #ifdef accept + #undef accept + #endif + #include #include #include *************** java::net::PlainSocketImpl::getOption (j *** 126,135 **** #else /* DISABLE_JAVA_NET */ - #ifndef HAVE_SOCKLEN_T - typedef int socklen_t; - #endif - union SockAddr { struct sockaddr_in address; --- 141,146 ---- *************** java::net::PlainSocketImpl::accept (java *** 283,289 **** JvNewStringUTF("Accept timed out")); } ! new_socket = ::accept (fnum, (sockaddr*) &u, &addrlen); if (new_socket < 0) goto error; jbyteArray raddr; --- 294,300 ---- JvNewStringUTF("Accept timed out")); } ! new_socket = _Jv_accept (fnum, (sockaddr*) &u, &addrlen); if (new_socket < 0) goto error; jbyteArray raddr; diff -Nrc3pad gcc-3.0/libjava/libgcj.spec.in gcc-3.0.1/libjava/libgcj.spec.in *** gcc-3.0/libjava/libgcj.spec.in Mon May 14 10:45:15 2001 --- gcc-3.0.1/libjava/libgcj.spec.in Wed Jul 18 09:56:40 2001 *************** *** 4,10 **** # to link with libgcj. # %rename lib liborig ! *lib: -lgcj -lm @GCSPEC@ @THREADSPEC@ @ZLIBSPEC@ @SYSTEMSPEC@ %(libgcc) %(liborig) *jc1: @DIVIDESPEC@ @JC1GCSPEC@ @EXCEPTIONSPEC@ --- 4,10 ---- # to link with libgcj. # %rename lib liborig ! *lib: -lgcj -lm @LIBICONV@ @GCSPEC@ @THREADSPEC@ @ZLIBSPEC@ @SYSTEMSPEC@ %(libgcc) %(liborig) *jc1: @DIVIDESPEC@ @JC1GCSPEC@ @EXCEPTIONSPEC@ diff -Nrc3pad gcc-3.0/libjava/libltdl/ChangeLog gcc-3.0.1/libjava/libltdl/ChangeLog *** gcc-3.0/libjava/libltdl/ChangeLog Sun Jun 17 12:41:00 2001 --- gcc-3.0.1/libjava/libltdl/ChangeLog Sun Aug 19 14:08:32 2001 *************** *** 1,3 **** --- 1,17 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-07-02 Tom Tromey + + * configure: Rebuilt. + * configure.in: Added aux-dir hacks to satisfy automake and + in-tree builds. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/libjava/libltdl/Makefile.in gcc-3.0.1/libjava/libltdl/Makefile.in *** gcc-3.0/libjava/libltdl/Makefile.in Sun Sep 10 01:04:40 2000 --- gcc-3.0.1/libjava/libltdl/Makefile.in Sun Aug 19 17:45:03 2001 *************** PACKAGE = @PACKAGE@ *** 80,95 **** RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ AUTOMAKE_OPTIONS = no-dependencies foreign INCLUDES = $(GCINCS) ! @INSTALL_LTDL_TRUE@include_HEADERS = ltdl.h ! @INSTALL_LTDL_TRUE@lib_LTLIBRARIES = libltdl.la ! @INSTALL_LTDL_FALSE@noinst_HEADERS = ltdl.h ! @CONVENIENCE_LTDL_TRUE@noinst_LTLIBRARIES = libltdlc.la libltdl_la_SOURCES = ltdl.c libltdl_la_LDFLAGS = -no-undefined -version-info 2:0:2 --- 80,100 ---- RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ + mkinstalldirs = @mkinstalldirs@ AUTOMAKE_OPTIONS = no-dependencies foreign INCLUDES = $(GCINCS) ! @INSTALL_LTDL_TRUE@include_HEADERS = \ ! @INSTALL_LTDL_TRUE@ltdl.h ! @INSTALL_LTDL_TRUE@lib_LTLIBRARIES = \ ! @INSTALL_LTDL_TRUE@libltdl.la ! @INSTALL_LTDL_FALSE@noinst_HEADERS = \ ! @INSTALL_LTDL_FALSE@ltdl.h ! @CONVENIENCE_LTDL_TRUE@noinst_LTLIBRARIES = \ ! @CONVENIENCE_LTDL_TRUE@libltdlc.la libltdl_la_SOURCES = ltdl.c libltdl_la_LDFLAGS = -no-undefined -version-info 2:0:2 *************** libltdl_la_LIBADD = $(LIBADD_DL) *** 98,104 **** libltdlc_la_SOURCES = ltdl.c libltdlc_la_LIBADD = $(LIBADD_DL) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - mkinstalldirs = $(SHELL) $(top_srcdir)/../../mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) --- 103,108 ---- *************** configure.in *** 127,133 **** DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! TAR = gtar GZIP_ENV = --best SOURCES = $(libltdl_la_SOURCES) $(libltdlc_la_SOURCES) OBJECTS = $(libltdl_la_OBJECTS) $(libltdlc_la_OBJECTS) --- 131,137 ---- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! TAR = tar GZIP_ENV = --best SOURCES = $(libltdl_la_SOURCES) $(libltdlc_la_SOURCES) OBJECTS = $(libltdl_la_OBJECTS) $(libltdlc_la_OBJECTS) *************** distdir: $(DISTFILES) *** 347,353 **** @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ --- 351,357 ---- @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ diff -Nrc3pad gcc-3.0/libjava/libltdl/configure gcc-3.0.1/libjava/libltdl/configure *** gcc-3.0/libjava/libltdl/configure Sun Sep 10 01:04:40 2000 --- gcc-3.0.1/libjava/libltdl/configure Sun Aug 19 17:45:03 2001 *************** program_suffix=NONE *** 49,54 **** --- 49,55 ---- program_transform_name=s,x,x, silent= site= + sitefile= srcdir= target=NONE verbose= *************** Configuration: *** 163,168 **** --- 164,170 ---- --help print this message --no-create do not create output files --quiet, --silent do not print \`checking...' messages + --site-file=FILE use FILE as the site file --version print the version of autoconf that created configure Directory and file names: --prefix=PREFIX install architecture-independent files in PREFIX *************** EOF *** 333,338 **** --- 335,345 ---- -site=* | --site=* | --sit=*) site="$ac_optarg" ;; + -site-file | --site-file | --site-fil | --site-fi | --site-f) + ac_prev=sitefile ;; + -site-file=* | --site-file=* | --site-fil=* | --site-fi=* | --site-f=*) + sitefile="$ac_optarg" ;; + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) *************** fi *** 498,509 **** srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` # Prefer explicitly selected file to automatically selected ones. ! if test -z "$CONFIG_SITE"; then ! if test "x$prefix" != xNONE; then ! CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" ! else ! CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then --- 505,520 ---- srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` # Prefer explicitly selected file to automatically selected ones. ! if test -z "$sitefile"; then ! if test -z "$CONFIG_SITE"; then ! if test "x$prefix" != xNONE; then ! CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" ! else ! CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" ! fi fi + else + CONFIG_SITE="$sitefile" fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then *************** else *** 542,553 **** fi echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 ! echo "configure:546: checking for Cygwin environment" >&5 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:557: checking for Cygwin environment" >&5 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else --- 569,575 ---- return __CYGWIN__; ; return 0; } EOF ! if { (eval echo configure:573: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else *************** echo "$ac_t""$ac_cv_cygwin" 1>&6 *** 575,593 **** CYGWIN= test "$ac_cv_cygwin" = yes && CYGWIN=yes echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 ! echo "configure:579: checking for mingw32 environment" >&5 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else --- 586,604 ---- CYGWIN= test "$ac_cv_cygwin" = yes && CYGWIN=yes echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 ! echo "configure:590: checking for mingw32 environment" >&5 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else *************** test "$ac_cv_mingw32" = yes && MINGW32=y *** 609,615 **** if test "${with_auxdir+set}" = set; then withval="$with_auxdir" ac_aux_dir= ! for ac_dir in $with_auxdir; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" --- 620,626 ---- if test "${with_auxdir+set}" = set; then withval="$with_auxdir" ac_aux_dir= ! for ac_dir in $with_auxdir $srcdir/$with_auxdir; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" *************** for ac_dir in $with_auxdir; do *** 621,632 **** fi done if test -z "$ac_aux_dir"; then ! { echo "configure: error: can not find install-sh or install.sh in $with_auxdir" 1>&2; exit 1; } fi ac_config_guess=$ac_aux_dir/config.guess ac_config_sub=$ac_aux_dir/config.sub ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. else ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do --- 632,644 ---- fi done if test -z "$ac_aux_dir"; then ! { echo "configure: error: can not find install-sh or install.sh in $with_auxdir $srcdir/$with_auxdir" 1>&2; exit 1; } fi ac_config_guess=$ac_aux_dir/config.guess ac_config_sub=$ac_aux_dir/config.sub ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + else ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do *************** ac_configure=$ac_aux_dir/configure # Thi *** 650,655 **** --- 662,671 ---- fi + # This is another blatant hack to work around automake bugs. + mkinstalldirs="$ac_aux_dir/mkinstalldirs" + + if test -z "$enable_ltdl_install$enable_ltdl_convenience"; then if test -f ${srcdir}/ltconfig && test -f ${srcdir}/ltmain.sh; then # if libltdl is libtoolized, it is assumed to be stand-alone and *************** fi *** 674,680 **** # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:678: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 690,696 ---- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:694: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** test -z "$INSTALL_SCRIPT" && INSTALL_SCR *** 727,733 **** test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 ! echo "configure:731: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile --- 743,749 ---- test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 ! echo "configure:747: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile *************** test "$program_suffix" != NONE && *** 784,790 **** test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 ! echo "configure:788: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 800,806 ---- test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 ! echo "configure:804: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** fi *** 823,829 **** missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 ! echo "configure:827: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 839,845 ---- missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 ! echo "configure:843: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 836,842 **** fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 ! echo "configure:840: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 852,858 ---- fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 ! echo "configure:856: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 849,855 **** fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 ! echo "configure:853: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 865,871 ---- fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 ! echo "configure:869: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 862,868 **** fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 ! echo "configure:866: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 878,884 ---- fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 ! echo "configure:882: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 875,881 **** fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 ! echo "configure:879: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 891,897 ---- fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 ! echo "configure:895: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** fi *** 892,898 **** echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 ! echo "configure:896: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" --- 908,914 ---- echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 ! echo "configure:912: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" *************** fi *** 918,924 **** # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:922: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 934,940 ---- # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:938: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -z "$CC"; then *** 948,954 **** # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:952: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 964,970 ---- # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:968: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 999,1005 **** # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1003: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1015,1021 ---- # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1019: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1031,1037 **** fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 ! echo "configure:1035: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. --- 1047,1053 ---- fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 ! echo "configure:1051: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. *************** cross_compiling=$ac_cv_prog_cc_cross *** 1042,1053 **** cat > conftest.$ac_ext << EOF ! #line 1046 "configure" #include "confdefs.h" main(){return(0);} EOF ! if { (eval echo configure:1051: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then --- 1058,1069 ---- cat > conftest.$ac_ext << EOF ! #line 1062 "configure" #include "confdefs.h" main(){return(0);} EOF ! if { (eval echo configure:1067: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then *************** if test $ac_cv_prog_cc_works = no; then *** 1073,1084 **** { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 ! echo "configure:1077: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ! echo "configure:1082: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1089,1100 ---- { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 ! echo "configure:1093: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ! echo "configure:1098: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1087,1093 **** yes; #endif EOF ! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1091: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no --- 1103,1109 ---- yes; #endif EOF ! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1107: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no *************** ac_test_CFLAGS="${CFLAGS+set}" *** 1106,1112 **** ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ! echo "configure:1110: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1122,1128 ---- ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ! echo "configure:1126: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1138,1149 **** fi echo $ac_n "checking for working const""... $ac_c" 1>&6 ! echo "configure:1142: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:1158: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else --- 1208,1214 ---- ; return 0; } EOF ! if { (eval echo configure:1212: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else *************** EOF *** 1213,1233 **** fi echo $ac_n "checking for inline""... $ac_c" 1>&6 ! echo "configure:1217: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else --- 1229,1249 ---- fi echo $ac_n "checking for inline""... $ac_c" 1>&6 ! echo "configure:1233: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else *************** else { echo "configure: error: can not r *** 1330,1336 **** fi echo $ac_n "checking host system type""... $ac_c" 1>&6 ! echo "configure:1334: checking host system type" >&5 host_alias=$host case "$host_alias" in --- 1346,1352 ---- fi echo $ac_n "checking host system type""... $ac_c" 1>&6 ! echo "configure:1350: checking host system type" >&5 host_alias=$host case "$host_alias" in *************** host_os=`echo $host | sed 's/^\([^-]*\)- *** 1351,1357 **** echo "$ac_t""$host" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6 ! echo "configure:1355: checking build system type" >&5 build_alias=$build case "$build_alias" in --- 1367,1373 ---- echo "$ac_t""$host" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6 ! echo "configure:1371: checking build system type" >&5 build_alias=$build case "$build_alias" in *************** ac_prog=ld *** 1380,1386 **** if test "$ac_cv_prog_gcc" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 ! echo "configure:1384: checking for ld used by GCC" >&5 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw --- 1396,1402 ---- if test "$ac_cv_prog_gcc" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 ! echo "configure:1400: checking for ld used by GCC" >&5 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw *************** echo "configure:1384: checking for ld us *** 1410,1419 **** esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 ! echo "configure:1414: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 ! echo "configure:1417: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 1426,1435 ---- esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 ! echo "configure:1430: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 ! echo "configure:1433: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 1448,1454 **** fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 ! echo "configure:1452: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1464,1470 ---- fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 ! echo "configure:1468: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** with_gnu_ld=$ac_cv_prog_gnu_ld *** 1465,1471 **** echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 ! echo "configure:1469: checking for $LD option to reload object files" >&5 if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1481,1487 ---- echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 ! echo "configure:1485: checking for $LD option to reload object files" >&5 if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** reload_flag=$lt_cv_ld_reload_flag *** 1477,1483 **** test -n "$reload_flag" && reload_flag=" $reload_flag" echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 ! echo "configure:1481: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1493,1499 ---- test -n "$reload_flag" && reload_flag=" $reload_flag" echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 ! echo "configure:1497: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** NM="$ac_cv_path_NM" *** 1515,1521 **** echo "$ac_t""$NM" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 ! echo "configure:1519: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1531,1537 ---- echo "$ac_t""$NM" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 ! echo "configure:1535: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1536,1542 **** fi echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 ! echo "configure:1540: checking how to recognise dependant libraries" >&5 if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1552,1558 ---- fi echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 ! echo "configure:1556: checking how to recognise dependant libraries" >&5 if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** file_magic_cmd=$lt_cv_file_magic_cmd *** 1679,1691 **** deplibs_check_method=$lt_cv_deplibs_check_method echo $ac_n "checking for object suffix""... $ac_c" 1>&6 ! echo "configure:1683: checking for object suffix" >&5 if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftest* echo 'int i = 1;' > conftest.$ac_ext ! if { (eval echo configure:1689: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; --- 1695,1707 ---- deplibs_check_method=$lt_cv_deplibs_check_method echo $ac_n "checking for object suffix""... $ac_c" 1>&6 ! echo "configure:1699: checking for object suffix" >&5 if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftest* echo 'int i = 1;' > conftest.$ac_ext ! if { (eval echo configure:1705: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; *************** ac_objext=$ac_cv_objext *** 1705,1711 **** echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 ! echo "configure:1709: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1721,1727 ---- echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 ! echo "configure:1725: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1715,1724 **** rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= ! if { (eval echo configure:1719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in ! *.c | *.o | *.obj) ;; *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; esac done --- 1731,1740 ---- rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= ! if { (eval echo configure:1735: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in ! *.c | *.o | *.obj | *.ilk | *.pdb) ;; *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; esac done *************** case "$deplibs_check_method" in *** 1748,1754 **** file_magic*) if test "$file_magic_cmd" = '${MAGIC}'; then echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 ! echo "configure:1752: checking for ${ac_tool_prefix}file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1764,1770 ---- file_magic*) if test "$file_magic_cmd" = '${MAGIC}'; then echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 ! echo "configure:1768: checking for ${ac_tool_prefix}file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1810,1816 **** if test -z "$lt_cv_path_MAGIC"; then if test -n "$ac_tool_prefix"; then echo $ac_n "checking for file""... $ac_c" 1>&6 ! echo "configure:1814: checking for file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1826,1832 ---- if test -z "$lt_cv_path_MAGIC"; then if test -n "$ac_tool_prefix"; then echo $ac_n "checking for file""... $ac_c" 1>&6 ! echo "configure:1830: checking for file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** esac *** 1881,1887 **** # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1885: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1897,1903 ---- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1901: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -n "$ac_tool_prefix"; then *** 1913,1919 **** # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1917: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1929,1935 ---- # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1933: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1948,1954 **** # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1952: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1964,1970 ---- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1968: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -n "$ac_tool_prefix"; then *** 1980,1986 **** # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1984: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1996,2002 ---- # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2000: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** test x"$pic_mode" = xno && libtool_flags *** 2047,2054 **** case "$host" in *-*-irix6*) # Find out which ABI we are using. ! echo '#line 2051 "configure"' > conftest.$ac_ext ! if { (eval echo configure:2052: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case "`/usr/bin/file conftest.o`" in *32-bit*) LD="${LD-ld} -32" --- 2063,2070 ---- case "$host" in *-*-irix6*) # Find out which ABI we are using. ! echo '#line 2067 "configure"' > conftest.$ac_ext ! if { (eval echo configure:2068: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case "`/usr/bin/file conftest.o`" in *32-bit*) LD="${LD-ld} -32" *************** case "$host" in *** 2069,2075 **** SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 ! echo "configure:2073: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2085,2091 ---- SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 ! echo "configure:2089: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** ac_link='${CC-cc} -o conftest${ac_exeext *** 2082,2095 **** cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else --- 2098,2111 ---- cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else *************** echo "$ac_t""$lt_cv_cc_needs_belf" 1>&6 *** 2119,2125 **** # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2123: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2135,2141 ---- # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2139: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -n "$ac_tool_prefix"; then *** 2151,2157 **** # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2155: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2167,2173 ---- # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2171: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 2186,2192 **** # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2190: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2202,2208 ---- # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2206: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -n "$ac_tool_prefix"; then *** 2218,2224 **** # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2222: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2234,2240 ---- # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2238: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 2253,2259 **** # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2257: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2269,2275 ---- # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2273: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -n "$ac_tool_prefix"; then *** 2285,2291 **** # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2289: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2301,2307 ---- # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2305: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 2321,2332 **** # recent cygwin and mingw systems supply a stub DllMain which the user # can override, but on older systems we have to supply one echo $ac_n "checking if libtool should supply DllMain function""... $ac_c" 1>&6 ! echo "configure:2325: checking if libtool should supply DllMain function" >&5 if eval "test \"`echo '$''{'lt_cv_need_dllmain'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:2341: checking if libtool should supply DllMain function" >&5 if eval "test \"`echo '$''{'lt_cv_need_dllmain'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_need_dllmain=no else --- 2350,2356 ---- DllMain (0, 0, 0); ; return 0; } EOF ! if { (eval echo configure:2354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_need_dllmain=no else *************** echo "$ac_t""$lt_cv_need_dllmain" 1>&6 *** 2355,2373 **** SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -mdll" echo $ac_n "checking how to link DLLs""... $ac_c" 1>&6 ! echo "configure:2359: checking how to link DLLs" >&5 if eval "test \"`echo '$''{'lt_cv_cc_dll_switch'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_dll_switch=-mdll else --- 2371,2389 ---- SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -mdll" echo $ac_n "checking how to link DLLs""... $ac_c" 1>&6 ! echo "configure:2375: checking how to link DLLs" >&5 if eval "test \"`echo '$''{'lt_cv_cc_dll_switch'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_dll_switch=-mdll else *************** exec 5>>./config.log *** 2479,2485 **** echo $ac_n "checking for garbage collector to use""... $ac_c" 1>&6 ! echo "configure:2483: checking for garbage collector to use" >&5 # Check whether --enable-java-gc or --disable-java-gc was given. if test "${enable_java_gc+set}" = set; then enableval="$enable_java_gc" --- 2495,2501 ---- echo $ac_n "checking for garbage collector to use""... $ac_c" 1>&6 ! echo "configure:2499: checking for garbage collector to use" >&5 # Check whether --enable-java-gc or --disable-java-gc was given. if test "${enable_java_gc+set}" = set; then enableval="$enable_java_gc" *************** fi *** 2502,2508 **** echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 ! echo "configure:2506: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= --- 2518,2524 ---- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 ! echo "configure:2522: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= *************** else *** 2517,2529 **** # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2527: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : --- 2533,2545 ---- # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2543: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : *************** else *** 2534,2546 **** rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2544: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : --- 2550,2562 ---- rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2560: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : *************** else *** 2551,2563 **** rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2561: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : --- 2567,2579 ---- rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2577: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : *************** rm -f conftest *** 2589,2595 **** # Check for command to grab the raw symbol name followed by C symbol from nm. echo $ac_n "checking command to parse $NM output""... $ac_c" 1>&6 ! echo "configure:2593: checking command to parse $NM output" >&5 if eval "test \"`echo '$''{'ac_cv_sys_global_symbol_pipe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2605,2611 ---- # Check for command to grab the raw symbol name followed by C symbol from nm. echo $ac_n "checking command to parse $NM output""... $ac_c" 1>&6 ! echo "configure:2609: checking command to parse $NM output" >&5 if eval "test \"`echo '$''{'ac_cv_sys_global_symbol_pipe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** void nm_test_func(){} *** 2652,2662 **** int main(){nm_test_var='a';nm_test_func;return 0;} EOF ! if { (eval echo configure:2656: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then # Now try to grab the symbols. ac_nlist=conftest.nm ! if { (eval echo configure:2660: \"$NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) 2>&5; } && test -s "$ac_nlist"; then # Try sorting and uniquifying the output. if sort "$ac_nlist" | uniq > "$ac_nlist"T; then --- 2668,2678 ---- int main(){nm_test_var='a';nm_test_func;return 0;} EOF ! if { (eval echo configure:2672: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then # Now try to grab the symbols. ac_nlist=conftest.nm ! if { (eval echo configure:2676: \"$NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) 2>&5; } && test -s "$ac_nlist"; then # Try sorting and uniquifying the output. if sort "$ac_nlist" | uniq > "$ac_nlist"T; then *************** EOF *** 2708,2714 **** ac_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$no_builtin_flag" ! if { (eval echo configure:2712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then ac_pipe_works=yes else echo "configure: failed program was:" >&5 --- 2724,2730 ---- ac_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$no_builtin_flag" ! if { (eval echo configure:2728: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then ac_pipe_works=yes else echo "configure: failed program was:" >&5 *************** fi *** 2754,2765 **** echo "$ac_t""$ac_result" 1>&6 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 ! echo "configure:2758: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include --- 2770,2781 ---- echo "$ac_t""$ac_result" 1>&6 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 ! echo "configure:2774: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include *************** else *** 2767,2773 **** #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2771: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 2783,2789 ---- #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2787: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** rm -f conftest* *** 2784,2790 **** if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF --- 2800,2806 ---- if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF *************** fi *** 2802,2808 **** if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF --- 2818,2824 ---- if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF *************** if test "$cross_compiling" = yes; then *** 2823,2829 **** : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') --- 2839,2845 ---- : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') *************** if (XOR (islower (i), ISLOWER (i)) || to *** 2834,2840 **** exit (0); } EOF ! if { (eval echo configure:2838: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else --- 2850,2856 ---- exit (0); } EOF ! if { (eval echo configure:2854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else *************** else *** 2884,2890 **** fi echo $ac_n "checking which extension is used for shared libraries""... $ac_c" 1>&6 ! echo "configure:2888: checking which extension is used for shared libraries" >&5 if eval "test \"`echo '$''{'libltdl_cv_shlibext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2900,2906 ---- fi echo $ac_n "checking which extension is used for shared libraries""... $ac_c" 1>&6 ! echo "configure:2904: checking which extension is used for shared libraries" >&5 if eval "test \"`echo '$''{'libltdl_cv_shlibext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** EOF *** 2911,2917 **** fi echo $ac_n "checking which variable specifies run-time library path""... $ac_c" 1>&6 ! echo "configure:2915: checking which variable specifies run-time library path" >&5 if eval "test \"`echo '$''{'libltdl_cv_shlibpath_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2927,2933 ---- fi echo $ac_n "checking which variable specifies run-time library path""... $ac_c" 1>&6 ! echo "configure:2931: checking which variable specifies run-time library path" >&5 if eval "test \"`echo '$''{'libltdl_cv_shlibpath_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** EOF *** 2927,2933 **** fi echo $ac_n "checking for the default library search path""... $ac_c" 1>&6 ! echo "configure:2931: checking for the default library search path" >&5 if eval "test \"`echo '$''{'libltdl_cv_sys_search_path'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2943,2949 ---- fi echo $ac_n "checking for the default library search path""... $ac_c" 1>&6 ! echo "configure:2947: checking for the default library search path" >&5 if eval "test \"`echo '$''{'libltdl_cv_sys_search_path'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** EOF *** 2955,2961 **** fi echo $ac_n "checking for objdir""... $ac_c" 1>&6 ! echo "configure:2959: checking for objdir" >&5 if eval "test \"`echo '$''{'libltdl_cv_objdir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2971,2977 ---- fi echo $ac_n "checking for objdir""... $ac_c" 1>&6 ! echo "configure:2975: checking for objdir" >&5 if eval "test \"`echo '$''{'libltdl_cv_objdir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** EOF *** 2982,2988 **** echo $ac_n "checking whether libtool supports -dlopen/-dlpreopen""... $ac_c" 1>&6 ! echo "configure:2986: checking whether libtool supports -dlopen/-dlpreopen" >&5 if eval "test \"`echo '$''{'libltdl_cv_preloaded_symbols'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2998,3004 ---- echo $ac_n "checking whether libtool supports -dlopen/-dlpreopen""... $ac_c" 1>&6 ! echo "configure:3002: checking whether libtool supports -dlopen/-dlpreopen" >&5 if eval "test \"`echo '$''{'libltdl_cv_preloaded_symbols'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 3004,3010 **** LIBADD_DL= echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 ! echo "configure:3008: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 3020,3026 ---- LIBADD_DL= echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 ! echo "configure:3024: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 3012,3018 **** ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 3039,3045 ---- dlopen() ; return 0; } EOF ! if { (eval echo configure:3043: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** EOF *** 3045,3056 **** else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dlopen""... $ac_c" 1>&6 ! echo "configure:3049: checking for dlopen" >&5 if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 echo $ac_n "checking for dlopen""... $ac_c" 1>&6 ! echo "configure:3065: checking for dlopen" >&5 if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_dlopen=yes" else --- 3089,3095 ---- ; return 0; } EOF ! if { (eval echo configure:3093: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_dlopen=yes" else *************** EOF *** 3094,3100 **** else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dlopen in -lsvld""... $ac_c" 1>&6 ! echo "configure:3098: checking for dlopen in -lsvld" >&5 ac_lib_var=`echo svld'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 3110,3116 ---- else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dlopen in -lsvld""... $ac_c" 1>&6 ! echo "configure:3114: checking for dlopen in -lsvld" >&5 ac_lib_var=`echo svld'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 3102,3108 **** ac_save_LIBS="$LIBS" LIBS="-lsvld $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 3129,3135 ---- dlopen() ; return 0; } EOF ! if { (eval echo configure:3133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** fi *** 3142,3153 **** fi echo $ac_n "checking for shl_load""... $ac_c" 1>&6 ! echo "configure:3146: checking for shl_load" >&5 if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:3162: checking for shl_load" >&5 if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shl_load=yes" else --- 3186,3192 ---- ; return 0; } EOF ! if { (eval echo configure:3190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shl_load=yes" else *************** EOF *** 3191,3197 **** else echo "$ac_t""no" 1>&6 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 ! echo "configure:3195: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 3207,3213 ---- else echo "$ac_t""no" 1>&6 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 ! echo "configure:3211: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 3199,3205 **** ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 3226,3232 ---- shl_load() ; return 0; } EOF ! if { (eval echo configure:3230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** fi *** 3238,3244 **** fi echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 ! echo "configure:3242: checking for dld_link in -ldld" >&5 ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 3254,3260 ---- fi echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 ! echo "configure:3258: checking for dld_link in -ldld" >&5 ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 3246,3252 **** ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 3273,3279 ---- dld_link() ; return 0; } EOF ! if { (eval echo configure:3277: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** if test "x$ac_cv_func_dlopen" = xyes || *** 3288,3299 **** for ac_func in dlerror do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:3292: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:3308: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 3332,3338 ---- ; return 0; } EOF ! if { (eval echo configure:3336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 3344,3350 **** fi echo $ac_n "checking for _ prefix in compiled symbols""... $ac_c" 1>&6 ! echo "configure:3348: checking for _ prefix in compiled symbols" >&5 if eval "test \"`echo '$''{'ac_cv_sys_symbol_underscore'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 3360,3366 ---- fi echo $ac_n "checking for _ prefix in compiled symbols""... $ac_c" 1>&6 ! echo "configure:3364: checking for _ prefix in compiled symbols" >&5 if eval "test \"`echo '$''{'ac_cv_sys_symbol_underscore'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then # Now try to grab the symbols. ac_nlist=conftest.nm ! if { (eval echo configure:3360: \"$NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) 2>&5; } && test -s "$ac_nlist"; then # See whether the symbols have a leading underscore. if egrep '^. _nm_test_func' "$ac_nlist" >/dev/null; then ac_cv_sys_symbol_underscore=yes --- 3369,3378 ---- void nm_test_func(){} int main(){nm_test_func;return 0;} EOF ! if { (eval echo configure:3373: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then # Now try to grab the symbols. ac_nlist=conftest.nm ! if { (eval echo configure:3376: \"$NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) 2>&5; } && test -s "$ac_nlist"; then # See whether the symbols have a leading underscore. if egrep '^. _nm_test_func' "$ac_nlist" >/dev/null; then ac_cv_sys_symbol_underscore=yes *************** if test x"$ac_cv_sys_symbol_underscore" *** 3383,3389 **** if test x"$ac_cv_func_dlopen" = xyes || test x"$ac_cv_lib_dl_dlopen" = xyes ; then echo $ac_n "checking whether we have to add an underscore for dlsym""... $ac_c" 1>&6 ! echo "configure:3387: checking whether we have to add an underscore for dlsym" >&5 if eval "test \"`echo '$''{'libltdl_cv_need_uscore'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 3399,3405 ---- if test x"$ac_cv_func_dlopen" = xyes || test x"$ac_cv_lib_dl_dlopen" = xyes ; then echo $ac_n "checking whether we have to add an underscore for dlsym""... $ac_c" 1>&6 ! echo "configure:3403: checking whether we have to add an underscore for dlsym" >&5 if eval "test \"`echo '$''{'libltdl_cv_need_uscore'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 3392,3398 **** else cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then libltdl_cv_need_uscore=no else --- 3455,3461 ---- if(ptr1 && !ptr2) { dlclose(self); exit(0); } } exit(1); } EOF ! if { (eval echo configure:3459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then libltdl_cv_need_uscore=no else *************** for ac_hdr in malloc.h memory.h stdlib.h *** 3471,3487 **** do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:3475: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:3485: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 3487,3503 ---- do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:3491: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:3501: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** for ac_hdr in string.h strings.h *** 3511,3527 **** do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:3515: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:3525: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 3527,3543 ---- do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:3531: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:3541: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** done *** 3550,3561 **** for ac_func in strchr index do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:3554: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:3570: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 3594,3600 ---- ; return 0; } EOF ! if { (eval echo configure:3598: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 3605,3616 **** for ac_func in strrchr rindex do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:3609: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:3625: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 3649,3655 ---- ; return 0; } EOF ! if { (eval echo configure:3653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 3660,3671 **** for ac_func in strcmp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:3664: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:3680: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 3704,3710 ---- ; return 0; } EOF ! if { (eval echo configure:3708: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** s%@includedir@%$includedir%g *** 3848,3853 **** --- 3864,3870 ---- s%@oldincludedir@%$oldincludedir%g s%@infodir@%$infodir%g s%@mandir@%$mandir%g + s%@mkinstalldirs@%$mkinstalldirs%g s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g s%@INSTALL_DATA@%$INSTALL_DATA%g diff -Nrc3pad gcc-3.0/libjava/libltdl/configure.in gcc-3.0.1/libjava/libltdl/configure.in *** gcc-3.0/libjava/libltdl/configure.in Sun Sep 10 01:04:40 2000 --- gcc-3.0.1/libjava/libltdl/configure.in Tue Jul 3 15:33:47 2001 *************** dnl Process this file with autoconf to c *** 2,13 **** AC_INIT(ltdl.c) - dnl We shouldn't be using these internal macros of autoconf, - dnl but CONFIG_AUX_DIR($with_auxdir) breaks automake. AC_ARG_WITH(auxdir, [ --with-auxdir=DIR path to autoconf auxiliary files], ! [AC_CONFIG_AUX_DIRS($with_auxdir)], [AC_CONFIG_AUX_DIR_DEFAULT]) if test -z "$enable_ltdl_install$enable_ltdl_convenience"; then if test -f ${srcdir}/ltconfig && test -f ${srcdir}/ltmain.sh; then --- 2,17 ---- AC_INIT(ltdl.c) AC_ARG_WITH(auxdir, [ --with-auxdir=DIR path to autoconf auxiliary files], ! [AC_CONFIG_AUX_DIR($with_auxdir) ! dnl This is here just to satisfy automake. ! ifelse(not,equal,[AC_CONFIG_AUX_DIR(../..)])], [AC_CONFIG_AUX_DIR_DEFAULT]) + + # This is another blatant hack to work around automake bugs. + mkinstalldirs="$ac_aux_dir/mkinstalldirs" + AC_SUBST(mkinstalldirs) if test -z "$enable_ltdl_install$enable_ltdl_convenience"; then if test -f ${srcdir}/ltconfig && test -f ${srcdir}/ltmain.sh; then diff -Nrc3pad gcc-3.0/libjava/testsuite/ChangeLog gcc-3.0.1/libjava/testsuite/ChangeLog *** gcc-3.0/libjava/testsuite/ChangeLog Sun Jun 17 12:41:04 2001 --- gcc-3.0.1/libjava/testsuite/ChangeLog Sun Aug 19 14:08:33 2001 *************** *** 1,3 **** --- 1,16 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-07-27 Rainer Orth + + * lib/libjava.exp (${tool}_set_ld_library_path): New, copied from + g++.exp. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/libjava/testsuite/Makefile.in gcc-3.0.1/libjava/testsuite/Makefile.in *** gcc-3.0/libjava/testsuite/Makefile.in Fri Jun 8 10:58:17 2001 --- gcc-3.0.1/libjava/testsuite/Makefile.in Wed Jul 18 09:56:42 2001 *************** GCLIBS = @GCLIBS@ *** 85,90 **** --- 85,91 ---- GCOBJS = @GCOBJS@ GCSPEC = @GCSPEC@ GCTESTSPEC = @GCTESTSPEC@ + ICONV_LDFLAGS = @ICONV_LDFLAGS@ INCLTDL = @INCLTDL@ JC1GCSPEC = @JC1GCSPEC@ LIBDATASTARTSPEC = @LIBDATASTARTSPEC@ *************** LIBGCJTESTSPEC = @LIBGCJTESTSPEC@ *** 93,98 **** --- 94,100 ---- LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@ LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@ LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@ + LIBICONV = @LIBICONV@ LIBLTDL = @LIBLTDL@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ *************** ZLIBSPEC = @ZLIBSPEC@ *** 119,124 **** --- 121,127 ---- ZLIBTESTSPEC = @ZLIBTESTSPEC@ here = @here@ libgcj_basedir = @libgcj_basedir@ + mkinstalldirs = @mkinstalldirs@ AUTOMAKE_OPTIONS = foreign dejagnu *************** RUNTEST = `if [ -f $(top_srcdir)/../deja *** 134,140 **** RUNTESTFLAGS = @AM_RUNTESTFLAGS@ - mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = ../include/config.h CONFIG_CLEAN_FILES = DIST_COMMON = ChangeLog Makefile.am Makefile.in --- 137,142 ---- diff -Nrc3pad gcc-3.0/libjava/testsuite/lib/libjava.exp gcc-3.0.1/libjava/testsuite/lib/libjava.exp *** gcc-3.0/libjava/testsuite/lib/libjava.exp Fri May 4 12:32:15 2001 --- gcc-3.0.1/libjava/testsuite/lib/libjava.exp Fri Jul 27 05:17:05 2001 *************** proc default_libjava_version {} { *** 737,742 **** --- 737,756 ---- proc default_libjava_start { } { } + # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but + # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH + # (for the 64-bit ABI). The right way to do this would be to modify + # unix.exp -- but that's not an option since it's part of DejaGNU + # proper, so we do it here, by trickery. We really only need to do + # this on IRIX, but it shouldn't hurt to do it anywhere else. + + proc ${tool}_set_ld_library_path { name element op } { + setenv LD_LIBRARYN32_PATH [getenv LD_LIBRARY_PATH] + setenv LD_LIBRARY64_PATH [getenv LD_LIBRARY_PATH] + } + + trace variable env(LD_LIBRARY_PATH) w ${tool}_set_ld_library_path + # Local Variables: # tcl-indent-level:4 # End: diff -Nrc3pad gcc-3.0/libobjc/ChangeLog gcc-3.0.1/libobjc/ChangeLog *** gcc-3.0/libobjc/ChangeLog Sun Jun 17 12:41:14 2001 --- gcc-3.0.1/libobjc/ChangeLog Sun Aug 19 14:08:34 2001 *************** *** 1,3 **** --- 1,18 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + Mon Jul 16 12:15:00 2001 Nicola Pero + + * objc/objc-api.h (object_is_class): Fixed - buggy code was trying + to cast an id to a Class, which can not be done. Make the check + by using CLS_ISMETA on the class pointer instead. + (object_is_meta_class): Similar fix. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/libobjc/objc/objc-api.h gcc-3.0.1/libobjc/objc/objc-api.h *** gcc-3.0/libobjc/objc/objc-api.h Wed Jan 3 00:49:34 2001 --- gcc-3.0.1/libobjc/objc/objc-api.h Mon Jul 16 04:30:07 2001 *************** object_get_super_class *** 578,598 **** } static inline BOOL ! object_is_class(id object) { ! return CLS_ISCLASS((Class)object); } ! static inline BOOL ! object_is_instance(id object) { ! return (object!=nil)&&CLS_ISCLASS(object->class_pointer); } static inline BOOL ! object_is_meta_class(id object) { ! return CLS_ISMETA((Class)object); } struct sarray* --- 578,600 ---- } static inline BOOL ! object_is_class (id object) { ! return ((object != nil) && CLS_ISMETA (object->class_pointer)); } ! static inline BOOL ! object_is_instance (id object) { ! return ((object != nil) && CLS_ISCLASS (object->class_pointer)); } static inline BOOL ! object_is_meta_class (id object) { ! return ((object != nil) ! && !object_is_instance (object) ! && !object_is_class (object)); } struct sarray* diff -Nrc3pad gcc-3.0/libstdc++-v3/ChangeLog gcc-3.0.1/libstdc++-v3/ChangeLog *** gcc-3.0/libstdc++-v3/ChangeLog Sun Jun 17 12:41:19 2001 --- gcc-3.0.1/libstdc++-v3/ChangeLog Sun Aug 19 14:08:35 2001 *************** *** 1,3 **** --- 1,409 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-17 Loren J. Rittle + + bootstrap/3963 + * include/Makefile.am: Use relative file path in rule to allow + colon in $(objdir). + * include/Makefile.in: Rebuilt. + + 2001-08-16 Franz Sirl + + * configure.target: Set LIMITSH for powerpc-*-*. + * config/cpu/powerpc/bits/limits.h: New file. + + 2001-08-16 Marc Espie + + * libmath/mathconf.h: Include on OpenBSD (branch + fix only, for robustness). + + 2001-08-15 Andreas Schwab + + * configure.target (cpu_include_dir): Set to `config/cpu/m68k' for + m68k and m680[246]0. + * config/cpu/m68k/bits/atomicity.h: New file. + + * include/bits/std_limits.h [__glibcpp_long_double_bits == 96]: + Define appropriate long double limits for m68k extended floating + point. + (__glibcpp_f32_digits10): Corrected, off by one. + (__glibcpp_f80_digits10): Likewise. + (__glibcpp_f128_digits10): Likewise. + * config/os/gnu-linux/bits/os_defines.h + (__glibcpp_long_double_bits) [__mc68000__]: Define to 96. + + 2001-08-15 Gabriel Dos Reis + + * include/bits/std_limits.h (numeric_limits::max): Fix + typo. + + 2001-08-14 Ulrich Weigand + + * configure.target (cpu_include_dir): Set to `config/cpu/s390' + for s390 and s390x. + + * config/cpu/s390/bits/atomicity.h: New. + + 2001-08-14 Gabriel Dos Reis + + * include/bits/std_limits.h: Fix thinko. + + 2001-08-14 Benjamin Kosnik + + * src/Makefile.am (libstdc___la_LDFLAGS): Increase revision number. + * src/Makefile.in: Regenerate. + + 2001-08-14 Peter Schmid + + * libstdc++-v3/libmath/stubs.c: Fix PR/3988, replace + _GBLICPP_HAVE_LOGL with HAVE_LOGL + + 2001-08-13 Mark Mitchell + + * configure.in (LIMITS_INC_SRCDIR): New variable. + * configure.target (LIMITSH): New variable. + * porting.texi: Discuss numeric limits. + * config/cpu/generic/bits/limits.h: New file. + * config/cpu/i386/bits/limits.h: New file. + * include/Makefile.am: Install bits/limits.h. + * include/bits/c++config: Include bits/limits.h. + + 2001-08-10 Gabriel Dos Reis + Mark Mitchell + + * include/bits/std_limits.h: New file. + * include/Makefile.am (bits_headers): Add std_limits.h + (all-local): std_limits.h is no longer built. + (${target_builddir}/std_limits.h): Remove. + * include/Makefile.in: Regenerate. + * src/limits.cc: New file. + * src/Makefile.am (sources): Add limits.cc in replacement of + limitsMEMBERS.cc. + * src/Makefile.in: Regenerate. + + 2001-08-09 David Edelsohn + + * config/os/aix/bits/os_defines.h: Define std_limits.h macros. + * config/os/generic/bits/os_defines.h: Likewise. + * config/os/gnu-linux/bits/os_defines.h: Likewise. + * config/os/hpux/bits/os_defines.h: Likewise. + * config/os/irix/irix6.5/bits/os_defines.h: Likewise. + * config/os/solaris/solaris2.7/bits/os_defines.h: Likewise. + + 2001-08-10 Gunter Winkler + + * include/bits/std_complex.h (complex::operator*=, + complex::operator/=): Fix thinko. + + 2001-07-31 Loren J. Rittle + + * src/gen-num-limits.cc: Use __LONG_LONG_MAX__. + + 2001-07-26 Gabriel Dos Reis + + * acinclude.m4: CHECK_MATH_DECL_AND_LINKAGE for hypot, hypotf, + hypotl, atan2f, atan2l. Remove from REPLACE_MATHFUNCS list. + * aclocal.m4: Regenerate. + * config.h.in: Likewise. + * configure: Likewise. + * libmath/Makefile.am (EXTRA_LONG_DOUBLE_yes): Remove hypotl.c + (EXTRA_DIST): Remove hypot.c hypotf.c. + * libmath/Makefile.am: Regenerate. + * libmath/hypotf.c: Remove. + * libmath/hypot.c: Likewise. + * libmath/hypotl.c: Likewise. + * libmath/stubs.c: The macros seen here are HAVE_xxx, not + _GLIBCPP_HAVE_xxx. Add long double versions. + + 2001-07-26 Stephen M. Webb + + * acinclude.m4 (GLIBCPP_ENABLE_CHEADERS): Use glibcpp_srcdir when + setting C_INCLUDE_DIR. + * aclocal.m4: Regenerate. + * configure: Regenerate. + + 2001-07-26 Stephen M. Webb + Loren J. Rittle + Phil Edwards + + * include/Makefile.am: New file encapsulating header generation rules. + * Makefile.am (SUBDIRS): Prepend 'include' directory. + * acinclude.m4: Moved/removed rules for building various headers. + * configure.in (AC_OUTPUT): Add include/Makefile. + * mkc++config: Removed. + + * testsuite_flags.in: Changed build-includes to match new scheme. + * mknumeric_limits: Likewise. + * libio/Makefile.am: Changed INCLUDES to maatch new header scheme. + * libmath/Makefile.am: Likewise. + * libsupc++/Makefile.am: Likewise. + * src/Makefile.am: Likewise; removed rules to build headers. + * libmath/mathconf.h: Changed #include'd header names to match. + * libmath/stubs.c: Likewise. + * src/gen-num-limits.cc: Likewise. + + * configure: Regenerated. + * config.h.in: Regenerated. + * aclocal.m4: Regenerated. + * Makefile.in: Regenerated. + * include/Makefile.in: Regenerated. + * libio/Makefile.in: Regenerated. + * libmath/Makefile.in: Regenerated. + * libsupc++/Makefile.in: Regenerated. + * src/Makefile.in: Regenerated. + * testsuite/Makefile.in: Regenerated. + + 2001-07-26 Daniel Jacobowitz + + * configure.in: Remove NATIVE, NULL_TARGET. + Set CANADIAN only for Canadian crosses. Set xcompiling + for both Canadian crosses and host-x-host crosses. + * configure: Regenerated. + + 2001-07-25 H.J. Lu + + * configure.target (cpu_include_dir): Set to `config/cpu/mips' + for mips. + + * config/cpu/mips/bits/atomicity.h: New. + + 2001-07-25 David Edelsohn + + * include/bits/limits_generic.h (int): Set digits and digits10 + appropriately for word size. + (unsigned int,long,unsigned long): Likewise. + + 2001-07-19 Phil Edwards + Mark Mitchell + + Merge from cp-parser-branch. + * include/bits/basic_string.h: Qualify symbols with 'template'. + * include/bits/basic_string.tcc: Likewise. + * include/bits/fstream.tcc: Likewise. + * include/bits/istream.tcc: Likewise. + * include/bits/sstream.tcc: Likewise. + * include/bits/std_istream.h: Likewise. + * include/bits/stl_iterator.h: Likewise. + * include/bits/streambuf.tcc: Likewise. + * src/gen-num-limits.cc: Add 'template<>' to specializations. + * src/locale.cc: Likewise. + + 2001-07-19 Gabriel Dos Reis + Bert De Knuydt + + * src/gen-num-limits.cc (set_signals_handler): New function. + Factor out signals setting. Set signal handler for SIGILL. + + 2001-07-18 Phil Edwards + + * docs/html/27_io/howto.html: Fix typo. + * docs/html/faq/index.html: Minor updates for 3.0 all around. + * docs/html/faq/index.txt: Regenerated. + + 2001-07-13 Phil Edwards + + * include/bits/std_sstream.h (basic_stringbuf::basic_stringbuf(string): + Initialize _M_string with pointer-and-size constructor, not just + pointer. Fix some comments. + * testsuite/21_strings/ctor_copy_dtor.cc (test03): New test. + * testsuite/27_io/stringbuf.cc (test02): Remove unused variable. + (test03): Add embedded-NUL tests. + + * mkcheck.in: When printing totals, match the order of the tests. + * include/bits/stringfwd.h: Use same declaration keywords. + * include/bits/std_iosfwd.h: Cosmetic spacing. + + 2001-07-11 Felix Natter + + * docs/html/17_intro/porting-howto.xml: Initial checkin of + master copy. + * docs/html/17_intro/porting-howto.html: check in v0.9.3 + + 2001-07-11 Phil Edwards + + * docs/doxygen/run_doxygen: Don't keep output from previous run. + * docs/doxygen/user.cfg.in: Tweaks. + * include/bits/c++config: Documentation comments for Doxygen. + * include/bits/char_traits.h: Likewise. + * include/bits/limits_generic.h: Likewise. + * include/bits/std_stdexcept.h: Likewise. + * include/bits/stl_pair.h: Likewise. + * libsupc++/exception: Likewise. + * libsupc++/new: Likewise. + * libsupc++/typeinfo: Likewise. + * libmath/Makefile.am: Update and correct copyright. + + 2001-07-10 Gabriel Dos Reis + + * acinclude.m4: Don't AC_REPLACE_MATHFUNCS expf and atan2f. + * aclocal.m4: Regenerate. + * configure: Same. + + 2001-07-09 Phil Edwards + + * docs/html/configopts.html: Fix thinko. + * docs/html/27_io/howto.html: Fix thinko and HTML markup. + * include/bits/stl_iterator.h: Fix typo. + + 2001-07-09 Phil Edwards + + * docs/html/explanations.html: New file. + * docs/html/configopts.html: Link to it to provide more notes + on cstdio. Minor markup and spacing fixes. + * docs/html/27_io/howto.html: Talk about sync_with_stdio. + + 2001-07-09 Kriang Lerdsuwanakij + + * include/bits/valarray_meta.h (_Expr::operator+): Use qualified id + for _Expr template template argument. + (_Expr::operator-): Likewise. + (_Expr::operator~): Likewise. + (_Expr::operator!): Likewise. + (_DEFINE_EXPR_UNARY_OPERATOR): Likewise. + + 2001-07-06 Gabriel Dos Reis + + * libmath/Makefile.am (EXTRA_DIST): Remove atan2f.c and expf.c + * libmath/Makefile.in: Regenerate. + * libmath/expf.c: Remove. + * libmath/atan2f.c: Likewise. + + 2001-07-02 Loren J. Rittle + + * acinclude.m4 (GLIBCPP_ENABLE_THREADS): Protect variable from shell + expansion (thanks to Alexandre Oliva). + * aclocal.m4: Regenerate. + * configure: Regenerate. + + 2001-07-02 Loren J. Rittle + + libstdc++/3284 + * acinclude.m4 (GLIBCPP_ENABLE_THREADS): Portability enhancement. + * aclocal.m4: Regenerate. + * configure: Regenerate. + + 2001-07-02 Loren J. Rittle + + libstdc++/3243 + * acinclude.m4 (GLIBCPP_ENABLE_THREADS): Add relative path to + staged/installed area to support -I-. Document. + * aclocal.m4: Regenerate. + * configure: Regenerate. + + 2001-06-27 Phil Edwards + + * include/backward/algo.h: Add "GPL plus runtime exception" comment + block, this time for real. + * include/backward/algobase.h: Likewise. + * include/backward/alloc.h: Likewise. + * include/backward/bvector.h: Likewise. + * include/backward/defalloc.h: Likewise. + * include/backward/deque.h: Likewise. + * include/backward/function.h: Likewise. + * include/backward/hash_map.h: Likewise. + * include/backward/hash_set.h: Likewise. + * include/backward/hashtable.h: Likewise. + * include/backward/heap.h: Likewise. + * include/backward/iterator.h: Likewise. + * include/backward/list.h: Likewise. + * include/backward/map.h: Likewise. + * include/backward/multimap.h: Likewise. + * include/backward/multiset.h: Likewise. + * include/backward/pair.h: Likewise. + * include/backward/rope.h: Likewise. + * include/backward/set.h: Likewise. + * include/backward/slist.h: Likewise. + * include/backward/stack.h: Likewise. + * include/backward/strstream: Likewise. + * include/backward/tempbuf.h: Likewise. + * include/backward/tree.h: Likewise. + * include/backward/vector.h: Likewise. + * include/bits/pthread_allocimpl.h: Likewise. + * include/bits/std_algorithm.h: Likewise. + * include/bits/std_bitset.h: Likewise. + * include/bits/std_deque.h: Likewise. + * include/bits/std_functional.h: Likewise. + * include/bits/std_iterator.h: Likewise. + * include/bits/std_list.h: Likewise. + * include/bits/std_map.h: Likewise. + * include/bits/std_memory.h: Likewise. + * include/bits/std_numeric.h: Likewise. + * include/bits/std_queue.h: Likewise. + * include/bits/std_set.h: Likewise. + * include/bits/std_stack.h: Likewise. + * include/bits/std_utility.h: Likewise. + * include/bits/std_vector.h: Likewise. + * include/bits/stl_algo.h: Likewise. + * include/bits/stl_algobase.h: Likewise. + * include/bits/stl_alloc.h: Likewise. + * include/bits/stl_bvector.h: Likewise. + * include/bits/stl_construct.h: Likewise. + * include/bits/stl_deque.h: Likewise. + * include/bits/stl_function.h: Likewise. + * include/bits/stl_heap.h: Likewise. + * include/bits/stl_iterator.h: Likewise. + * include/bits/stl_iterator_base_funcs.h: Likewise. + * include/bits/stl_iterator_base_types.h: Likewise. + * include/bits/stl_list.h: Likewise. + * include/bits/stl_map.h: Likewise. + * include/bits/stl_multimap.h: Likewise. + * include/bits/stl_multiset.h: Likewise. + * include/bits/stl_numeric.h: Likewise. + * include/bits/stl_pair.h: Likewise. + * include/bits/stl_pthread_alloc.h: Likewise. + * include/bits/stl_queue.h: Likewise. + * include/bits/stl_raw_storage_iter.h: Likewise. + * include/bits/stl_relops.h: Likewise. + * include/bits/stl_set.h: Likewise. + * include/bits/stl_stack.h: Likewise. + * include/bits/stl_tempbuf.h: Likewise. + * include/bits/stl_threads.h: Likewise. + * include/bits/stl_tree.h: Likewise. + * include/bits/stl_uninitialized.h: Likewise. + * include/bits/stl_vector.h: Likewise. + * include/bits/type_traits.h: Likewise. + * include/ext/hash_map: Likewise. + * include/ext/hash_set: Likewise. + * include/ext/rope: Likewise. + * include/ext/ropeimpl.h: Likewise. + * include/ext/slist: Likewise. + * include/ext/stl_hash_fun.h: Likewise. + * include/ext/stl_hashtable.h: Likewise. + * include/ext/stl_rope.h: Likewise. + * src/bitset.cc: Likewise. + * src/strstream.cc: Likewise. + + 2001-06-26 Felix Natter + + * docs/html/17_intro/porting-howto.html: Fixed some errors. + + 2001-06-25 Phil Edwards + Kurt Garloff + + PR libstdc++/3377 + * src/cmath.cc: New [version of an old] file; instantiate + __cmath_power to start with. + * src/Makefile.am (sources): Add cmath.cc (and alphabetize). + * Makefile.in: Regenerate. + * libio/Makefile.in: Regenerate. + * libmath/Makefile.in: Regenerate. + * libsupc++/Makefile.in: Regenerate. + * src/Makefile.in: Regenerate. + * testsuite/Makefile.in: Regenerate. + + 2001-06-24 Gabriel Dos Reis + David Edelsohn + + * libmath/stubs.c: New file. + * libmath/Makefile.am (libmath_la_SOURCES): Add stubs.c. + * libmath/Makefile.in: Regenerate. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/libstdc++-v3/Makefile.am gcc-3.0.1/libstdc++-v3/Makefile.am *** gcc-3.0/libstdc++-v3/Makefile.am Mon May 14 12:48:35 2001 --- gcc-3.0.1/libstdc++-v3/Makefile.am Thu Jul 26 00:51:00 2001 *************** *** 24,30 **** AUTOMAKE_OPTIONS = 1.3 cygnus MAINT_CHARSET = latin1 ! SUBDIRS = libio libmath libsupc++ src testsuite mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs --- 24,30 ---- AUTOMAKE_OPTIONS = 1.3 cygnus MAINT_CHARSET = latin1 ! SUBDIRS = include libio libmath libsupc++ src testsuite mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs *************** doxygen-maint: *** 58,64 **** ${srcdir}/docs/doxygen/run_doxygen --mode=maint $${srcdir} $${outdir}) .PHONY: doxygen doxygen-maint - # Multilib support. MAKEOVERRIDES= --- 58,63 ---- diff -Nrc3pad gcc-3.0/libstdc++-v3/Makefile.in gcc-3.0.1/libstdc++-v3/Makefile.in *** gcc-3.0/libstdc++-v3/Makefile.in Fri Jun 8 23:56:45 2001 --- gcc-3.0.1/libstdc++-v3/Makefile.in Mon Aug 13 15:21:28 2001 *************** target_alias = @target_alias@ *** 65,74 **** target_triplet = @target@ AR = @AR@ AS = @AS@ CC = @CC@ CPP = @CPP@ CSHADOW_FLAGS = @CSHADOW_FLAGS@ ! CSTD_INCLUDES = @CSTD_INCLUDES@ CXX = @CXX@ CXXCPP = @CXXCPP@ C_INCLUDE_DIR = @C_INCLUDE_DIR@ --- 65,78 ---- target_triplet = @target@ AR = @AR@ AS = @AS@ + ATOMICITY_INC_SRCDIR = @ATOMICITY_INC_SRCDIR@ + BASIC_FILE_H = @BASIC_FILE_H@ CC = @CC@ + CCODECVT_C = @CCODECVT_C@ + CLOCALE_H = @CLOCALE_H@ CPP = @CPP@ CSHADOW_FLAGS = @CSHADOW_FLAGS@ ! CSTDIO_H = @CSTDIO_H@ CXX = @CXX@ CXXCPP = @CXXCPP@ C_INCLUDE_DIR = @C_INCLUDE_DIR@ *************** EXEEXT = @EXEEXT@ *** 78,84 **** EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@ GCJ = @GCJ@ GCJFLAGS = @GCJFLAGS@ ! GLIBCPP_INCLUDE_DIR = @GLIBCPP_INCLUDE_DIR@ LIBIO_INCLUDES = @LIBIO_INCLUDES@ LIBMATHOBJS = @LIBMATHOBJS@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ --- 82,89 ---- EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@ GCJ = @GCJ@ GCJFLAGS = @GCJFLAGS@ ! GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@ ! GLIBCPP_IS_CROSS_COMPILING = @GLIBCPP_IS_CROSS_COMPILING@ LIBIO_INCLUDES = @LIBIO_INCLUDES@ LIBMATHOBJS = @LIBMATHOBJS@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ *************** LIBSTRINGOBJS = @LIBSTRINGOBJS@ *** 86,91 **** --- 91,97 ---- LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@ LIBTOOL = @LIBTOOL@ + LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ *************** OBJDUMP = @OBJDUMP@ *** 93,98 **** --- 99,105 ---- OBJEXT = @OBJEXT@ OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@ OPT_LDFLAGS = @OPT_LDFLAGS@ + OS_INC_SRCDIR = @OS_INC_SRCDIR@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ SECTION_FLAGS = @SECTION_FLAGS@ *************** glibcpp_basedir = @glibcpp_basedir@ *** 110,115 **** --- 117,123 ---- glibcpp_builddir = @glibcpp_builddir@ glibcpp_prefixdir = @glibcpp_prefixdir@ glibcpp_srcdir = @glibcpp_srcdir@ + glibcpp_thread_h = @glibcpp_thread_h@ glibcpp_toolexecdir = @glibcpp_toolexecdir@ glibcpp_toolexeclibdir = @glibcpp_toolexeclibdir@ gxx_include_dir = @gxx_include_dir@ *************** toplevel_srcdir = @toplevel_srcdir@ *** 120,126 **** AUTOMAKE_OPTIONS = 1.3 cygnus MAINT_CHARSET = latin1 ! SUBDIRS = libio libmath libsupc++ src testsuite mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs --- 128,134 ---- AUTOMAKE_OPTIONS = 1.3 cygnus MAINT_CHARSET = latin1 ! SUBDIRS = include libio libmath libsupc++ src testsuite mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs diff -Nrc3pad gcc-3.0/libstdc++-v3/acinclude.m4 gcc-3.0.1/libstdc++-v3/acinclude.m4 *** gcc-3.0/libstdc++-v3/acinclude.m4 Thu Jun 14 01:47:35 2001 --- gcc-3.0.1/libstdc++-v3/acinclude.m4 Thu Jul 26 11:24:58 2001 *************** AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [ *** 641,646 **** --- 641,647 ---- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincos) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypot) dnl Check to see if basic C math functions have float versions. GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig, *************** AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [ *** 653,661 **** --- 654,664 ---- ceilf floorf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinff) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10f) *************** AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [ *** 682,687 **** --- 685,691 ---- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10l) *************** dnl Check to see if there is native supp *** 726,748 **** dnl dnl Don't compile bits in math/* if native support exits. dnl ! dnl Define USE_COMPLEX_LONG_DOUBLE etc if "atan2l/copysignl" is found. dnl dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [ dnl Check for complex versions of math functions of platform. AC_CHECK_LIB(m, main) ! AC_REPLACE_MATHFUNCS(nan hypot hypotf atan2f expf copysignf) dnl Compile the long double complex functions only if the function dnl provides the non-complex long double functions that are needed. ! dnl Currently this includes copysignl and atan2l, which should be dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above. USE_COMPLEX_LONG_DOUBLE=no ! if test x$ac_cv_func_atan2l = x"yes" \ ! && test x$ac_cv_func_copysignl = x"yes"; then USE_COMPLEX_LONG_DOUBLE=yes ! AC_REPLACE_MATHFUNCS(hypotl signbitl) fi AC_SUBST(USE_COMPLEX_LONG_DOUBLE) --- 730,751 ---- dnl dnl Don't compile bits in math/* if native support exits. dnl ! dnl Define USE_COMPLEX_LONG_DOUBLE etc if "copysignl" is found. dnl dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [ dnl Check for complex versions of math functions of platform. AC_CHECK_LIB(m, main) ! AC_REPLACE_MATHFUNCS(nan copysignf) dnl Compile the long double complex functions only if the function dnl provides the non-complex long double functions that are needed. ! dnl Currently this includes copysignl, which should be dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above. USE_COMPLEX_LONG_DOUBLE=no ! if test x$ac_cv_func_copysignl = x"yes"; then USE_COMPLEX_LONG_DOUBLE=yes ! AC_REPLACE_MATHFUNCS(signbitl) fi AC_SUBST(USE_COMPLEX_LONG_DOUBLE) *************** AC_DEFUN(GLIBCPP_CHECK_TARGET, [ *** 758,764 **** . [$]{glibcpp_basedir}/configure.target AC_MSG_RESULT(CPU config directory is $cpu_include_dir) AC_MSG_RESULT(OS config directory is $os_include_dir) - AC_LINK_FILES($os_include_dir/bits/os_defines.h, include/bits/os_defines.h) ]) --- 761,766 ---- *************** AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [ *** 1006,1012 **** ;; esac ! AC_LINK_FILES($CLOCALE_H, include/bits/c++locale.h) AC_LINK_FILES($CLOCALE_CC, src/c++locale.cc) ]) --- 1008,1014 ---- ;; esac ! AC_SUBST(CLOCALE_H) AC_LINK_FILES($CLOCALE_CC, src/c++locale.cc) ]) *************** AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [ *** 1106,1118 **** exit 1 ;; esac ! AC_LINK_FILES($CSTDIO_H, include/bits/c++io.h) ! AC_LINK_FILES($BASIC_FILE_H, include/bits/basic_file_model.h) AC_LINK_FILES($BASIC_FILE_CC, src/basic_file.cc) # 2000-08-04 bkoz hack CCODECVT_C=config/c_io_libio_codecvt.c ! AC_LINK_FILES($CCODECVT_C, libio/c_codecvt.c) # 2000-08-04 bkoz hack AM_CONDITIONAL(GLIBCPP_BUILD_LIBIO, --- 1108,1120 ---- exit 1 ;; esac ! AC_SUBST(CSTDIO_H) ! AC_SUBST(BASIC_FILE_H) AC_LINK_FILES($BASIC_FILE_CC, src/basic_file.cc) # 2000-08-04 bkoz hack CCODECVT_C=config/c_io_libio_codecvt.c ! AC_SUBST(CCODECVT_C) # 2000-08-04 bkoz hack AM_CONDITIONAL(GLIBCPP_BUILD_LIBIO, *************** dnl macro names into user-provided C++ c *** 1137,1166 **** dnl and process to with an output command. The reason for a two- dnl stage process here is to correctly handle $srcdir!=$objdir without dnl having to write complex code (the sed commands to clean the macro ! dnl namespace are complex and fragile enough as it is). dnl AC_DEFUN(GLIBCPP_ENABLE_THREADS, [ AC_MSG_CHECKING([for thread model used by GCC]) target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` AC_MSG_RESULT([$target_thread_file]) - AC_LINK_FILES($toprel/gcc/gthr.h, include/bits/gthr.h-in) - AC_LINK_FILES($toprel/gcc/gthr-single.h, - include/bits/gthr-single.h-in) - AC_LINK_FILES($toprel/gcc/gthr-$target_thread_file.h, - include/bits/gthr-default.h-in) if test $target_thread_file != single; then AC_DEFINE(HAVE_GTHR_DEFAULT) AC_DEFINE(_GLIBCPP_SUPPORTS_WEAK, __GXX_WEAK__) fi ! AC_OUTPUT_COMMANDS([d=include/bits ! rm -f $d/gthr.h $d/gthr-single.h $d/gthr-default.h ! sed '/^#/s/\([A-Z_][A-Z_]*\)/_GLIBCPP_\1/g' <$d/gthr.h-in >$d/gthr.h ! sed 's/\(UNUSED\)/_GLIBCPP_\1/g' <$d/gthr-single.h-in \ ! | sed 's/\(GCC[A-Z_]*_H\)/_GLIBCPP_\1/g' >$d/gthr-single.h ! sed 's/\(UNUSED\)/_GLIBCPP_\1/g' <$d/gthr-default.h-in \ ! | sed 's/\(GCC[A-Z_]*_H\)/_GLIBCPP_\1/g' \ ! | sed 's/\([A-Z_]*WEAK\)/_GLIBCPP_\1/g' >$d/gthr-default.h]) ]) --- 1139,1159 ---- dnl and process to with an output command. The reason for a two- dnl stage process here is to correctly handle $srcdir!=$objdir without dnl having to write complex code (the sed commands to clean the macro ! dnl namespace are complex and fragile enough as it is). We must also ! dnl add a relative path so that -I- is supported properly. dnl AC_DEFUN(GLIBCPP_ENABLE_THREADS, [ AC_MSG_CHECKING([for thread model used by GCC]) target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` AC_MSG_RESULT([$target_thread_file]) if test $target_thread_file != single; then AC_DEFINE(HAVE_GTHR_DEFAULT) AC_DEFINE(_GLIBCPP_SUPPORTS_WEAK, __GXX_WEAK__) fi ! ! glibcpp_thread_h=gthr-$target_thread_file.h ! AC_SUBST(glibcpp_thread_h) ]) *************** changequote([, ]) *** 1441,1456 **** case "$enable_cheaders" in c_shadow) CSHADOW_FLAGS="-fno-builtin" ! C_INCLUDE_DIR='${top_srcdir}/include/c_shadow' AC_DEFINE(_GLIBCPP_USE_SHADOW_HEADERS) ;; c_std) CSHADOW_FLAGS="" ! C_INCLUDE_DIR='${top_srcdir}/include/c_std' ;; c) CSHADOW_FLAGS="" ! C_INCLUDE_DIR='${top_srcdir}/include/c' ;; esac --- 1434,1449 ---- case "$enable_cheaders" in c_shadow) CSHADOW_FLAGS="-fno-builtin" ! C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_shadow' AC_DEFINE(_GLIBCPP_USE_SHADOW_HEADERS) ;; c_std) CSHADOW_FLAGS="" ! C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_std' ;; c) CSHADOW_FLAGS="" ! C_INCLUDE_DIR='${glibcpp_srcdir}/include/c' ;; esac *************** dnl Option parsed, now other scripts can *** 1489,1513 **** dnl dnl Set up *_INCLUDES and *_INCLUDE_DIR variables for all sundry Makefile.am's. dnl - dnl GLIBCPP_INCLUDE_DIR - dnl C_INCLUDE_DIR dnl TOPLEVEL_INCLUDES dnl LIBMATH_INCLUDES dnl LIBSUPCXX_INCLUDES dnl LIBIO_INCLUDES dnl CSHADOW_INCLUDES dnl ! dnl GLIBCPP_EXPORT_INCLUDE AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [ ! # Root level of the include sources. ! GLIBCPP_INCLUDE_DIR='$(top_srcdir)/include' - # Can either use include/c or include/c_std to grab "C" headers. This - # variable is set to the include directory currently in use. - # set with C_INCLUDE_DIR in GLIBCPP_ENABLE_CHEADERS - # Passed down for canadian crosses. ! if test x"$CANADIAN" = xyes; then TOPLEVEL_INCLUDES='-I$(includedir)' fi --- 1482,1500 ---- dnl dnl Set up *_INCLUDES and *_INCLUDE_DIR variables for all sundry Makefile.am's. dnl dnl TOPLEVEL_INCLUDES dnl LIBMATH_INCLUDES dnl LIBSUPCXX_INCLUDES dnl LIBIO_INCLUDES dnl CSHADOW_INCLUDES dnl ! dnl GLIBCPP_EXPORT_INCLUDES AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [ ! # Root level of the build directory include sources. ! GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include" # Passed down for canadian crosses. ! if test x"$CANADIAN" = xyes; then TOPLEVEL_INCLUDES='-I$(includedir)' fi *************** AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [ *** 1515,1540 **** LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++' ! #if GLIBCPP_NEED_LIBIO ! LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio' ! #else ! #LIBIO_INCLUDES='-I$(top_srcdir)/libio' ! #endif ! ! #if GLIBCPP_USE_CSHADOW ! # CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR) \ ! # -I$(top_blddir)/cshadow' ! #else ! CSTD_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR)' ! #endif # Now, export this to all the little Makefiles.... ! AC_SUBST(GLIBCPP_INCLUDE_DIR) AC_SUBST(TOPLEVEL_INCLUDES) AC_SUBST(LIBMATH_INCLUDES) AC_SUBST(LIBSUPCXX_INCLUDES) - AC_SUBST(LIBIO_INCLUDES) - AC_SUBST(CSTD_INCLUDES) ]) --- 1502,1517 ---- LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++' ! if test x"$need_libio" = xyes; then ! LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio' ! AC_SUBST(LIBIO_INCLUDES) ! fi # Now, export this to all the little Makefiles.... ! AC_SUBST(GLIBCPP_INCLUDES) AC_SUBST(TOPLEVEL_INCLUDES) AC_SUBST(LIBMATH_INCLUDES) AC_SUBST(LIBSUPCXX_INCLUDES) ]) diff -Nrc3pad gcc-3.0/libstdc++-v3/aclocal.m4 gcc-3.0.1/libstdc++-v3/aclocal.m4 *** gcc-3.0/libstdc++-v3/aclocal.m4 Thu Jun 14 01:47:36 2001 --- gcc-3.0.1/libstdc++-v3/aclocal.m4 Thu Jul 26 11:24:58 2001 *************** AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [ *** 653,658 **** --- 653,659 ---- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincos) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypot) dnl Check to see if basic C math functions have float versions. GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig, *************** AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [ *** 665,673 **** --- 666,676 ---- ceilf floorf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinff) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10f) *************** AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [ *** 694,699 **** --- 697,703 ---- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10l) *************** dnl Check to see if there is native supp *** 738,760 **** dnl dnl Don't compile bits in math/* if native support exits. dnl ! dnl Define USE_COMPLEX_LONG_DOUBLE etc if "atan2l/copysignl" is found. dnl dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [ dnl Check for complex versions of math functions of platform. AC_CHECK_LIB(m, main) ! AC_REPLACE_MATHFUNCS(nan hypot hypotf atan2f expf copysignf) dnl Compile the long double complex functions only if the function dnl provides the non-complex long double functions that are needed. ! dnl Currently this includes copysignl and atan2l, which should be dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above. USE_COMPLEX_LONG_DOUBLE=no ! if test x$ac_cv_func_atan2l = x"yes" \ ! && test x$ac_cv_func_copysignl = x"yes"; then USE_COMPLEX_LONG_DOUBLE=yes ! AC_REPLACE_MATHFUNCS(hypotl signbitl) fi AC_SUBST(USE_COMPLEX_LONG_DOUBLE) --- 742,763 ---- dnl dnl Don't compile bits in math/* if native support exits. dnl ! dnl Define USE_COMPLEX_LONG_DOUBLE etc if "copysignl" is found. dnl dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [ dnl Check for complex versions of math functions of platform. AC_CHECK_LIB(m, main) ! AC_REPLACE_MATHFUNCS(nan copysignf) dnl Compile the long double complex functions only if the function dnl provides the non-complex long double functions that are needed. ! dnl Currently this includes copysignl, which should be dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above. USE_COMPLEX_LONG_DOUBLE=no ! if test x$ac_cv_func_copysignl = x"yes"; then USE_COMPLEX_LONG_DOUBLE=yes ! AC_REPLACE_MATHFUNCS(signbitl) fi AC_SUBST(USE_COMPLEX_LONG_DOUBLE) *************** AC_DEFUN(GLIBCPP_CHECK_TARGET, [ *** 770,776 **** . [$]{glibcpp_basedir}/configure.target AC_MSG_RESULT(CPU config directory is $cpu_include_dir) AC_MSG_RESULT(OS config directory is $os_include_dir) - AC_LINK_FILES($os_include_dir/bits/os_defines.h, include/bits/os_defines.h) ]) --- 773,778 ---- *************** AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [ *** 1018,1024 **** ;; esac ! AC_LINK_FILES($CLOCALE_H, include/bits/c++locale.h) AC_LINK_FILES($CLOCALE_CC, src/c++locale.cc) ]) --- 1020,1026 ---- ;; esac ! AC_SUBST(CLOCALE_H) AC_LINK_FILES($CLOCALE_CC, src/c++locale.cc) ]) *************** AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [ *** 1118,1130 **** exit 1 ;; esac ! AC_LINK_FILES($CSTDIO_H, include/bits/c++io.h) ! AC_LINK_FILES($BASIC_FILE_H, include/bits/basic_file_model.h) AC_LINK_FILES($BASIC_FILE_CC, src/basic_file.cc) # 2000-08-04 bkoz hack CCODECVT_C=config/c_io_libio_codecvt.c ! AC_LINK_FILES($CCODECVT_C, libio/c_codecvt.c) # 2000-08-04 bkoz hack AM_CONDITIONAL(GLIBCPP_BUILD_LIBIO, --- 1120,1132 ---- exit 1 ;; esac ! AC_SUBST(CSTDIO_H) ! AC_SUBST(BASIC_FILE_H) AC_LINK_FILES($BASIC_FILE_CC, src/basic_file.cc) # 2000-08-04 bkoz hack CCODECVT_C=config/c_io_libio_codecvt.c ! AC_SUBST(CCODECVT_C) # 2000-08-04 bkoz hack AM_CONDITIONAL(GLIBCPP_BUILD_LIBIO, *************** dnl macro names into user-provided C++ c *** 1149,1178 **** dnl and process to with an output command. The reason for a two- dnl stage process here is to correctly handle $srcdir!=$objdir without dnl having to write complex code (the sed commands to clean the macro ! dnl namespace are complex and fragile enough as it is). dnl AC_DEFUN(GLIBCPP_ENABLE_THREADS, [ AC_MSG_CHECKING([for thread model used by GCC]) target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` AC_MSG_RESULT([$target_thread_file]) - AC_LINK_FILES($toprel/gcc/gthr.h, include/bits/gthr.h-in) - AC_LINK_FILES($toprel/gcc/gthr-single.h, - include/bits/gthr-single.h-in) - AC_LINK_FILES($toprel/gcc/gthr-$target_thread_file.h, - include/bits/gthr-default.h-in) if test $target_thread_file != single; then AC_DEFINE(HAVE_GTHR_DEFAULT) AC_DEFINE(_GLIBCPP_SUPPORTS_WEAK, __GXX_WEAK__) fi ! AC_OUTPUT_COMMANDS([d=include/bits ! rm -f $d/gthr.h $d/gthr-single.h $d/gthr-default.h ! sed '/^#/s/\([A-Z_][A-Z_]*\)/_GLIBCPP_\1/g' <$d/gthr.h-in >$d/gthr.h ! sed 's/\(UNUSED\)/_GLIBCPP_\1/g' <$d/gthr-single.h-in \ ! | sed 's/\(GCC[A-Z_]*_H\)/_GLIBCPP_\1/g' >$d/gthr-single.h ! sed 's/\(UNUSED\)/_GLIBCPP_\1/g' <$d/gthr-default.h-in \ ! | sed 's/\(GCC[A-Z_]*_H\)/_GLIBCPP_\1/g' \ ! | sed 's/\([A-Z_]*WEAK\)/_GLIBCPP_\1/g' >$d/gthr-default.h]) ]) --- 1151,1171 ---- dnl and process to with an output command. The reason for a two- dnl stage process here is to correctly handle $srcdir!=$objdir without dnl having to write complex code (the sed commands to clean the macro ! dnl namespace are complex and fragile enough as it is). We must also ! dnl add a relative path so that -I- is supported properly. dnl AC_DEFUN(GLIBCPP_ENABLE_THREADS, [ AC_MSG_CHECKING([for thread model used by GCC]) target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` AC_MSG_RESULT([$target_thread_file]) if test $target_thread_file != single; then AC_DEFINE(HAVE_GTHR_DEFAULT) AC_DEFINE(_GLIBCPP_SUPPORTS_WEAK, __GXX_WEAK__) fi ! ! glibcpp_thread_h=gthr-$target_thread_file.h ! AC_SUBST(glibcpp_thread_h) ]) *************** changequote([, ]) *** 1453,1468 **** case "$enable_cheaders" in c_shadow) CSHADOW_FLAGS="-fno-builtin" ! C_INCLUDE_DIR='${top_srcdir}/include/c_shadow' AC_DEFINE(_GLIBCPP_USE_SHADOW_HEADERS) ;; c_std) CSHADOW_FLAGS="" ! C_INCLUDE_DIR='${top_srcdir}/include/c_std' ;; c) CSHADOW_FLAGS="" ! C_INCLUDE_DIR='${top_srcdir}/include/c' ;; esac --- 1446,1461 ---- case "$enable_cheaders" in c_shadow) CSHADOW_FLAGS="-fno-builtin" ! C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_shadow' AC_DEFINE(_GLIBCPP_USE_SHADOW_HEADERS) ;; c_std) CSHADOW_FLAGS="" ! C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_std' ;; c) CSHADOW_FLAGS="" ! C_INCLUDE_DIR='${glibcpp_srcdir}/include/c' ;; esac *************** dnl Option parsed, now other scripts can *** 1501,1525 **** dnl dnl Set up *_INCLUDES and *_INCLUDE_DIR variables for all sundry Makefile.am's. dnl - dnl GLIBCPP_INCLUDE_DIR - dnl C_INCLUDE_DIR dnl TOPLEVEL_INCLUDES dnl LIBMATH_INCLUDES dnl LIBSUPCXX_INCLUDES dnl LIBIO_INCLUDES dnl CSHADOW_INCLUDES dnl ! dnl GLIBCPP_EXPORT_INCLUDE AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [ ! # Root level of the include sources. ! GLIBCPP_INCLUDE_DIR='$(top_srcdir)/include' - # Can either use include/c or include/c_std to grab "C" headers. This - # variable is set to the include directory currently in use. - # set with C_INCLUDE_DIR in GLIBCPP_ENABLE_CHEADERS - # Passed down for canadian crosses. ! if test x"$CANADIAN" = xyes; then TOPLEVEL_INCLUDES='-I$(includedir)' fi --- 1494,1512 ---- dnl dnl Set up *_INCLUDES and *_INCLUDE_DIR variables for all sundry Makefile.am's. dnl dnl TOPLEVEL_INCLUDES dnl LIBMATH_INCLUDES dnl LIBSUPCXX_INCLUDES dnl LIBIO_INCLUDES dnl CSHADOW_INCLUDES dnl ! dnl GLIBCPP_EXPORT_INCLUDES AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [ ! # Root level of the build directory include sources. ! GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include" # Passed down for canadian crosses. ! if test x"$CANADIAN" = xyes; then TOPLEVEL_INCLUDES='-I$(includedir)' fi *************** AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [ *** 1527,1552 **** LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++' ! #if GLIBCPP_NEED_LIBIO ! LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio' ! #else ! #LIBIO_INCLUDES='-I$(top_srcdir)/libio' ! #endif ! ! #if GLIBCPP_USE_CSHADOW ! # CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR) \ ! # -I$(top_blddir)/cshadow' ! #else ! CSTD_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR)' ! #endif # Now, export this to all the little Makefiles.... ! AC_SUBST(GLIBCPP_INCLUDE_DIR) AC_SUBST(TOPLEVEL_INCLUDES) AC_SUBST(LIBMATH_INCLUDES) AC_SUBST(LIBSUPCXX_INCLUDES) - AC_SUBST(LIBIO_INCLUDES) - AC_SUBST(CSTD_INCLUDES) ]) --- 1514,1529 ---- LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++' ! if test x"$need_libio" = xyes; then ! LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio' ! AC_SUBST(LIBIO_INCLUDES) ! fi # Now, export this to all the little Makefiles.... ! AC_SUBST(GLIBCPP_INCLUDES) AC_SUBST(TOPLEVEL_INCLUDES) AC_SUBST(LIBMATH_INCLUDES) AC_SUBST(LIBSUPCXX_INCLUDES) ]) diff -Nrc3pad gcc-3.0/libstdc++-v3/config/cpu/generic/bits/limits.h gcc-3.0.1/libstdc++-v3/config/cpu/generic/bits/limits.h *** gcc-3.0/libstdc++-v3/config/cpu/generic/bits/limits.h Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/libstdc++-v3/config/cpu/generic/bits/limits.h Mon Aug 13 15:22:26 2001 *************** *** 0 **** --- 1,40 ---- + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + + #ifndef _GLIBCPP_CPU_LIMITS + #define _GLIBCPP_CPU_LIMITS 1 + + // Nothing is defined in the generic file. In that way, we fall back + // on the defaults in std_limits.h. + + // If you need to override these defaults, you can either use a + // CPU-specific version (in which case you must modify + // configure.target) or you must add the overrides to your + // os_defines.h. In general, if all systems for your CPU use the + // same values, it is best to use a cpu-specific configuration file. + + #endif diff -Nrc3pad gcc-3.0/libstdc++-v3/config/cpu/i386/bits/limits.h gcc-3.0.1/libstdc++-v3/config/cpu/i386/bits/limits.h *** gcc-3.0/libstdc++-v3/config/cpu/i386/bits/limits.h Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/libstdc++-v3/config/cpu/i386/bits/limits.h Mon Aug 13 15:22:26 2001 *************** *** 0 **** --- 1,33 ---- + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + + #ifndef _GLIBCPP_CPU_LIMITS + #define _GLIBCPP_CPU_LIMITS 1 + + #define __glibcpp_long_double_bits 80 + + #endif diff -Nrc3pad gcc-3.0/libstdc++-v3/config/cpu/m68k/bits/atomicity.h gcc-3.0.1/libstdc++-v3/config/cpu/m68k/bits/atomicity.h *** gcc-3.0/libstdc++-v3/config/cpu/m68k/bits/atomicity.h Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/libstdc++-v3/config/cpu/m68k/bits/atomicity.h Wed Aug 15 08:50:53 2001 *************** *** 0 **** --- 1,61 ---- + // Low-level functions for atomic operations: m680x0, x >= 2 version -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + + #ifndef _BITS_ATOMICITY_H + #define _BITS_ATOMICITY_H 1 + + typedef int _Atomic_word; + + static inline _Atomic_word + __attribute__ ((__unused__)) + __exchange_and_add (volatile _Atomic_word *__mem, int __val) + { + register _Atomic_word __result = *__mem; + register _Atomic_word __temp; + __asm__ __volatile__ ("1: move%.l %0,%1;" + " add%.l %2,%1;" + " cas%.l %0,%1,%3;" + " jbne 1b" + : "=d" (__result), "=&d" (__temp) + : "d" (__val), "m" (*__mem), "0" (__result) + : "memory"); + return __result; + } + + static inline void + __attribute__ ((__unused__)) + __atomic_add (volatile _Atomic_word* __mem, int __val) + { + __asm__ __volatile__ ("add%.l %0,%1" + : : "id" (__val), "m" (*__mem) : "memory"); + } + + #endif /* atomicity.h */ + + diff -Nrc3pad gcc-3.0/libstdc++-v3/config/cpu/mips/bits/atomicity.h gcc-3.0.1/libstdc++-v3/config/cpu/mips/bits/atomicity.h *** gcc-3.0/libstdc++-v3/config/cpu/mips/bits/atomicity.h Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/libstdc++-v3/config/cpu/mips/bits/atomicity.h Wed Jul 25 22:04:48 2001 *************** *** 0 **** --- 1,138 ---- + // Low-level functions for atomic operations. Mips version. + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + + #ifndef _BITS_ATOMICITY_H + #define _BITS_ATOMICITY_H 1 + + #include + + typedef int _Atomic_word; + + #if (_MIPS_ISA >= _MIPS_ISA_MIPS2) + + static inline int + __attribute__ ((unused)) + __exchange_and_add (volatile _Atomic_word *__mem, int __val) + { + int __result, __tmp; + + __asm__ __volatile__ + ("/* Inline exchange & add */\n\t" + "1:\n\t" + "ll %0,%3\n\t" + "addu %1,%4,%0\n\t" + "sc %1,%2\n\t" + "beqz %1,1b\n\t" + "/* End exchange & add */" + : "=&r"(__result), "=&r"(__tmp), "=m"(*__mem) + : "m" (*__mem), "r"(__val) + : "memory"); + + return __result; + } + + static inline void + __attribute__ ((unused)) + __atomic_add (volatile _Atomic_word *__mem, int __val) + { + int __result; + + __asm__ __volatile__ + ("/* Inline atomic add */\n\t" + "1:\n\t" + "ll %0,%2\n\t" + "addu %0,%3,%0\n\t" + "sc %0,%1\n\t" + "beqz %0,1b\n\t" + "/* End atomic add */" + : "=&r"(__result), "=m"(*__mem) + : "m" (*__mem), "r"(__val) + : "memory"); + } + + static inline int + __attribute__ ((unused)) + __compare_and_swap (volatile long int *__p, long int __oldval, + long int __newval) + { + long int __ret; + + __asm__ __volatile__ + ("/* Inline compare & swap */\n\t" + "1:\n\t" + "ll %0,%4\n\t" + ".set push\n" + ".set noreorder\n\t" + "bne %0,%2,2f\n\t" + "move %0,%3\n\t" + ".set pop\n\t" + "sc %0,%1\n\t" + "beqz %0,1b\n" + "2:\n\t" + "/* End compare & swap */" + : "=&r" (__ret), "=m" (*__p) + : "r" (__oldval), "r" (__newval), "m" (*__p) + : "memory"); + + return __ret; + } + + #else /* (_MIPS_ISA >= _MIPS_ISA_MIPS2) */ + + static inline int + __attribute__ ((unused)) + __exchange_and_add (volatile _Atomic_word *__mem, int __val) + { + int __result = *__mem; + *__mem += __val; + return __result; + } + + static inline void + __attribute__ ((unused)) + __atomic_add (volatile _Atomic_word *__mem, int __val) + { + *__mem += __val; + } + + static inline int + __attribute__ ((unused)) + __compare_and_swap (volatile long int *__p, long int __oldval, + long int __newval) + { + if (*__p != __oldval) + return 0; + + *__p = __newval; + return 1; + } + + #endif /* !(_MIPS_ISA >= _MIPS_ISA_MIPS2) */ + + #endif /* atomicity.h */ diff -Nrc3pad gcc-3.0/libstdc++-v3/config/cpu/powerpc/bits/limits.h gcc-3.0.1/libstdc++-v3/config/cpu/powerpc/bits/limits.h *** gcc-3.0/libstdc++-v3/config/cpu/powerpc/bits/limits.h Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/libstdc++-v3/config/cpu/powerpc/bits/limits.h Thu Aug 16 12:09:53 2001 *************** *** 0 **** --- 1,33 ---- + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + + #ifndef _GLIBCPP_CPU_LIMITS + #define _GLIBCPP_CPU_LIMITS 1 + + #define __glibcpp_long_double_bits 64 + + #endif diff -Nrc3pad gcc-3.0/libstdc++-v3/config/cpu/s390/bits/atomicity.h gcc-3.0.1/libstdc++-v3/config/cpu/s390/bits/atomicity.h *** gcc-3.0/libstdc++-v3/config/cpu/s390/bits/atomicity.h Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/libstdc++-v3/config/cpu/s390/bits/atomicity.h Tue Aug 14 15:59:34 2001 *************** *** 0 **** --- 1,60 ---- + // Low-level functions for atomic operations: S/390 version -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + + #ifndef _BITS_ATOMICITY_H + #define _BITS_ATOMICITY_H 1 + + typedef int _Atomic_word; + + static inline _Atomic_word + __attribute__ ((__unused__)) + __exchange_and_add (volatile _Atomic_word *__mem, int __val) + { + register _Atomic_word __old_val, __new_val; + + __asm__ __volatile__ (" l %0,0(%2)\n" + "0: lr %1,%0\n" + " ar %1,%3\n" + " cs %0,%1,0(%2)\n" + " jl 0b" + : "=&d" (__old_val), "=&d" (__new_val) + : "a" (__mem), "d" (__val) : "cc", "memory" ); + return __old_val; + } + + static inline void + __attribute__ ((__unused__)) + __atomic_add (volatile _Atomic_word *__mem, int __val) + { + __exchange_and_add (__mem, __val); + } + + #endif /* atomicity.h */ + + diff -Nrc3pad gcc-3.0/libstdc++-v3/config/os/aix/bits/os_defines.h gcc-3.0.1/libstdc++-v3/config/os/aix/bits/os_defines.h *** gcc-3.0/libstdc++-v3/config/os/aix/bits/os_defines.h Fri Nov 3 19:00:10 2000 --- gcc-3.0.1/libstdc++-v3/config/os/aix/bits/os_defines.h Sat Aug 11 11:12:17 2001 *************** *** 55,59 **** --- 55,69 ---- #undef _G_USING_THUNKS #define _G_USING_THUNKS 0 + #define __glibcpp_long_double_bits 64 + + #if !defined(_AIX51) || !defined(__64BIT__) + #define __glibcpp_wchar_t_bits 16 + #endif + + #ifdef __64BIT__ + #define __glibcpp_long_bits 64 + #endif + #endif diff -Nrc3pad gcc-3.0/libstdc++-v3/config/os/generic/bits/os_defines.h gcc-3.0.1/libstdc++-v3/config/os/generic/bits/os_defines.h *** gcc-3.0/libstdc++-v3/config/os/generic/bits/os_defines.h Wed Dec 6 22:44:48 2000 --- gcc-3.0.1/libstdc++-v3/config/os/generic/bits/os_defines.h Sat Aug 11 11:12:17 2001 *************** *** 34,37 **** --- 34,41 ---- // System-specific #define, typedefs, corrections, etc, go here. This // file will come before all others. + #ifdef __alpha__ + #define __glibcpp_long_bits 64 + #endif + #endif diff -Nrc3pad gcc-3.0/libstdc++-v3/config/os/gnu-linux/bits/os_defines.h gcc-3.0.1/libstdc++-v3/config/os/gnu-linux/bits/os_defines.h *** gcc-3.0/libstdc++-v3/config/os/gnu-linux/bits/os_defines.h Thu May 24 13:42:05 2001 --- gcc-3.0.1/libstdc++-v3/config/os/gnu-linux/bits/os_defines.h Wed Aug 15 08:48:36 2001 *************** typedef __loff_t __off64_t; *** 63,70 **** # define __NO_STRING_INLINES # endif #endif ! ! ! --- 63,82 ---- # define __NO_STRING_INLINES # endif + #if defined (__powerpc__) || defined (__s390__) || defined (__s390x__) + #define __glibcpp_wchar_t_is_signed true + #endif + + #if defined (__alpha__) || defined (__powerpc64__) || (defined (__sparc__) && defined(__arch64__)) || defined (__s390__) || defined (__s390x__) + #define __glibcpp_long_bits 64 + #endif + + #if defined (__alpha__) || defined (__powerpc64__) + #define __glibcpp_long_double_bits 64 + #endif + + #if defined (__mc68000__) + #define __glibcpp_long_double_bits 96 #endif ! #endif diff -Nrc3pad gcc-3.0/libstdc++-v3/config/os/hpux/bits/os_defines.h gcc-3.0.1/libstdc++-v3/config/os/hpux/bits/os_defines.h *** gcc-3.0/libstdc++-v3/config/os/hpux/bits/os_defines.h Tue Dec 5 19:23:34 2000 --- gcc-3.0.1/libstdc++-v3/config/os/hpux/bits/os_defines.h Sat Aug 11 11:12:17 2001 *************** *** 39,44 **** #define __off64_t off64_t #define __ssize_t ssize_t #endif ! --- 39,46 ---- #define __off64_t off64_t #define __ssize_t ssize_t + #ifdef __LP64__ + #define __glibcpp_long_bits 64 #endif ! #endif diff -Nrc3pad gcc-3.0/libstdc++-v3/config/os/irix/irix6.5/bits/os_defines.h gcc-3.0.1/libstdc++-v3/config/os/irix/irix6.5/bits/os_defines.h *** gcc-3.0/libstdc++-v3/config/os/irix/irix6.5/bits/os_defines.h Thu Mar 15 19:31:44 2001 --- gcc-3.0.1/libstdc++-v3/config/os/irix/irix6.5/bits/os_defines.h Sat Aug 11 11:12:17 2001 *************** *** 52,57 **** /* GCC does not use thunks on IRIX. */ #define _G_USING_THUNKS 0 ! #endif --- 52,62 ---- /* GCC does not use thunks on IRIX. */ #define _G_USING_THUNKS 0 ! #define __glibcpp_long_double_bits 64 + #if __LONG_MAX__ > 2147483647 + #define __glibcpp_wchar_t_bits 64 + #define __glibcpp_long_bits 64 + #endif + #endif diff -Nrc3pad gcc-3.0/libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h gcc-3.0.1/libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h *** gcc-3.0/libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h Tue Jun 12 16:10:06 2001 --- gcc-3.0.1/libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h Sat Aug 11 11:12:17 2001 *************** *** 45,48 **** --- 45,52 ---- // Without this all the libio vtbls are offset wrongly. #define _G_USING_THUNKS 0 + #if defined(__sparc_v9) || defined(__arch64__) + #define __glibcpp_long_bits 64 + #endif + #endif diff -Nrc3pad gcc-3.0/libstdc++-v3/config.h.in gcc-3.0.1/libstdc++-v3/config.h.in *** gcc-3.0/libstdc++-v3/config.h.in Sun Jun 10 22:06:26 2001 --- gcc-3.0.1/libstdc++-v3/config.h.in Thu Jul 26 11:24:58 2001 *************** *** 87,92 **** --- 87,95 ---- /* Define if you have the _asinl function. */ #undef HAVE__ASINL + /* Define if you have the _atan2f function. */ + #undef HAVE__ATAN2F + /* Define if you have the _atan2l function. */ #undef HAVE__ATAN2L *************** *** 159,164 **** --- 162,176 ---- /* Define if you have the _frexpl function. */ #undef HAVE__FREXPL + /* Define if you have the _hypot function. */ + #undef HAVE__HYPOT + + /* Define if you have the _hypotf function. */ + #undef HAVE__HYPOTF + + /* Define if you have the _hypotl function. */ + #undef HAVE__HYPOTL + /* Define if you have the _isinf function. */ #undef HAVE__ISINF *************** *** 305,313 **** /* Define if you have the drand48 function. */ #undef HAVE_DRAND48 - - /* Define if you have the expf function. */ - #undef HAVE_EXPF /* Define if you have the expl function. */ #undef HAVE_EXPL --- 317,322 ---- diff -Nrc3pad gcc-3.0/libstdc++-v3/configure gcc-3.0.1/libstdc++-v3/configure *** gcc-3.0/libstdc++-v3/configure Thu Jun 14 01:47:36 2001 --- gcc-3.0.1/libstdc++-v3/configure Mon Aug 13 15:21:28 2001 *************** test "$host_alias" != "$target_alias" && *** 708,713 **** --- 708,737 ---- target_alias=${target_alias-$target} + # Will set LN_S to either 'ln -s' or 'ln'. With autoconf 2.50+, can also + # be 'cp -p' if linking isn't available. + echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 + echo "configure:715: checking whether ln -s works" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + rm -f conftestdata + if ln -s X conftestdata 2>/dev/null + then + rm -f conftestdata + ac_cv_prog_LN_S="ln -s" + else + ac_cv_prog_LN_S=ln + fi + fi + LN_S="$ac_cv_prog_LN_S" + if test "$ac_cv_prog_LN_S" = "ln -s"; then + echo "$ac_t""yes" 1>&6 + else + echo "$ac_t""no" 1>&6 + fi + + # We use these options to decide which functions to include. # Check whether --with-target-subdir or --without-target-subdir was given. if test "${with_target_subdir+set}" = set; then *************** fi *** 736,742 **** # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:740: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 760,766 ---- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:764: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** test -z "$INSTALL_SCRIPT" && INSTALL_SCR *** 789,795 **** test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 ! echo "configure:793: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile --- 813,819 ---- test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 ! echo "configure:817: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile *************** test "$program_suffix" != NONE && *** 846,852 **** test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 ! echo "configure:850: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 870,876 ---- test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 ! echo "configure:874: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 879,890 **** fi echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 ! echo "configure:883: checking for Cygwin environment" >&5 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:907: checking for Cygwin environment" >&5 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else --- 919,925 ---- return __CYGWIN__; ; return 0; } EOF ! if { (eval echo configure:923: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else *************** echo "$ac_t""$ac_cv_cygwin" 1>&6 *** 912,930 **** CYGWIN= test "$ac_cv_cygwin" = yes && CYGWIN=yes echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 ! echo "configure:916: checking for mingw32 environment" >&5 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else --- 936,954 ---- CYGWIN= test "$ac_cv_cygwin" = yes && CYGWIN=yes echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 ! echo "configure:940: checking for mingw32 environment" >&5 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else *************** EOF *** 976,982 **** missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 ! echo "configure:980: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 1000,1006 ---- missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 ! echo "configure:1004: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 989,995 **** fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 ! echo "configure:993: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 1013,1019 ---- fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 ! echo "configure:1017: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 1002,1008 **** fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 ! echo "configure:1006: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 1026,1032 ---- fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 ! echo "configure:1030: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 1015,1021 **** fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 ! echo "configure:1019: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 1039,1045 ---- fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 ! echo "configure:1043: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 1028,1034 **** fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 ! echo "configure:1032: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 1052,1058 ---- fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 ! echo "configure:1056: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** fi *** 1063,1069 **** # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1067: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1087,1093 ---- # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1091: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -z "$CC"; then *** 1093,1099 **** # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1097: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1117,1123 ---- # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1121: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1142,1148 **** fi echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ! echo "configure:1146: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1166,1172 ---- fi echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ! echo "configure:1170: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1151,1157 **** yes; #endif EOF ! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1155: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no --- 1175,1181 ---- yes; #endif EOF ! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1179: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no *************** if test $ac_cv_prog_gcc = yes; then *** 1166,1172 **** ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ! echo "configure:1170: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1190,1196 ---- ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ! echo "configure:1194: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** do *** 1211,1217 **** # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1215: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_glibcpp_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1235,1241 ---- # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1239: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_glibcpp_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** CXX=$glibcpp_CXX *** 1246,1252 **** test -z "$glibcpp_CXX" && { echo "configure: error: no acceptable c++ found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 ! echo "configure:1250: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1270,1276 ---- test -z "$glibcpp_CXX" && { echo "configure: error: no acceptable c++ found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 ! echo "configure:1274: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1255,1261 **** yes; #endif EOF ! if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1259: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no --- 1279,1285 ---- yes; #endif EOF ! if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1283: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no *************** if test $ac_cv_prog_gxx = yes; then *** 1270,1276 **** ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 ! echo "configure:1274: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1294,1300 ---- ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 ! echo "configure:1298: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1301,1307 **** # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1305: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1325,1331 ---- # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1329: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1333,1339 **** # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1337: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1357,1363 ---- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1361: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1365,1371 **** # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1369: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1389,1395 ---- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1393: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -n "$ac_tool_prefix"; then *** 1397,1403 **** # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1401: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1421,1427 ---- # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1425: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1441,1447 **** # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:1445: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 1465,1471 ---- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:1469: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** test -z "$INSTALL_DATA" && INSTALL_DATA= *** 1495,1501 **** echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 ! echo "configure:1499: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" --- 1519,1525 ---- echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 ! echo "configure:1523: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" *************** fi *** 1533,1539 **** echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 ! echo "configure:1537: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1557,1563 ---- echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 ! echo "configure:1561: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1543,1549 **** rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= ! if { (eval echo configure:1547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj) ;; --- 1567,1573 ---- rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= ! if { (eval echo configure:1571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj) ;; *************** ac_exeext=$EXEEXT *** 1578,1584 **** . ${glibcpp_basedir}/configure.target echo "$ac_t""CPU config directory is $cpu_include_dir" 1>&6 echo "$ac_t""OS config directory is $os_include_dir" 1>&6 - --- 1602,1607 ---- *************** ac_prog=ld *** 1664,1670 **** if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 ! echo "configure:1668: checking for ld used by GCC" >&5 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw --- 1687,1693 ---- if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 ! echo "configure:1691: checking for ld used by GCC" >&5 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw *************** echo "configure:1668: checking for ld us *** 1694,1703 **** esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 ! echo "configure:1698: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 ! echo "configure:1701: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 1717,1726 ---- esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 ! echo "configure:1721: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 ! echo "configure:1724: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 1732,1738 **** fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 ! echo "configure:1736: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1755,1761 ---- fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 ! echo "configure:1759: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** with_gnu_ld=$lt_cv_prog_gnu_ld *** 1749,1755 **** echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 ! echo "configure:1753: checking for $LD option to reload object files" >&5 if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1772,1778 ---- echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 ! echo "configure:1776: checking for $LD option to reload object files" >&5 if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** reload_flag=$lt_cv_ld_reload_flag *** 1761,1767 **** test -n "$reload_flag" && reload_flag=" $reload_flag" echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 ! echo "configure:1765: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1784,1790 ---- test -n "$reload_flag" && reload_flag=" $reload_flag" echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 ! echo "configure:1788: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1798,1826 **** NM="$lt_cv_path_NM" echo "$ac_t""$NM" 1>&6 - echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 - echo "configure:1803: checking whether ln -s works" >&5 - if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - rm -f conftestdata - if ln -s X conftestdata 2>/dev/null - then - rm -f conftestdata - ac_cv_prog_LN_S="ln -s" - else - ac_cv_prog_LN_S=ln - fi - fi - LN_S="$ac_cv_prog_LN_S" - if test "$ac_cv_prog_LN_S" = "ln -s"; then - echo "$ac_t""yes" 1>&6 - else - echo "$ac_t""no" 1>&6 - fi - echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 ! echo "configure:1824: checking how to recognise dependant libraries" >&5 if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1821,1828 ---- NM="$lt_cv_path_NM" echo "$ac_t""$NM" 1>&6 echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 ! echo "configure:1826: checking how to recognise dependant libraries" >&5 if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** file_magic_cmd=$lt_cv_file_magic_cmd *** 1984,1996 **** deplibs_check_method=$lt_cv_deplibs_check_method echo $ac_n "checking for object suffix""... $ac_c" 1>&6 ! echo "configure:1988: checking for object suffix" >&5 if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftest* echo 'int i = 1;' > conftest.$ac_ext ! if { (eval echo configure:1994: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; --- 1986,1998 ---- deplibs_check_method=$lt_cv_deplibs_check_method echo $ac_n "checking for object suffix""... $ac_c" 1>&6 ! echo "configure:1990: checking for object suffix" >&5 if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftest* echo 'int i = 1;' > conftest.$ac_ext ! if { (eval echo configure:1996: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; *************** case $deplibs_check_method in *** 2014,2020 **** file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 ! echo "configure:2018: checking for ${ac_tool_prefix}file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2016,2022 ---- file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 ! echo "configure:2020: checking for ${ac_tool_prefix}file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 2076,2082 **** if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo $ac_n "checking for file""... $ac_c" 1>&6 ! echo "configure:2080: checking for file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2078,2084 ---- if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo $ac_n "checking for file""... $ac_c" 1>&6 ! echo "configure:2082: checking for file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** esac *** 2147,2153 **** # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2151: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2149,2155 ---- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2153: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -n "$ac_tool_prefix"; then *** 2179,2185 **** # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2183: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2181,2187 ---- # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2185: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 2214,2220 **** # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2218: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2216,2222 ---- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2220: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -n "$ac_tool_prefix"; then *** 2246,2252 **** # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2250: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2248,2254 ---- # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2252: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** test x"$pic_mode" = xno && libtool_flags *** 2313,2320 **** case $host in *-*-irix6*) # Find out which ABI we are using. ! echo '#line 2317 "configure"' > conftest.$ac_ext ! if { (eval echo configure:2318: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" --- 2315,2322 ---- case $host in *-*-irix6*) # Find out which ABI we are using. ! echo '#line 2319 "configure"' > conftest.$ac_ext ! if { (eval echo configure:2320: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" *************** case $host in *** 2335,2341 **** SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 ! echo "configure:2339: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2337,2343 ---- SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 ! echo "configure:2341: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** ac_link='${CC-cc} -o conftest${ac_exeext *** 2348,2361 **** cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else --- 2350,2363 ---- cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else *************** echo "$ac_t""$lt_cv_cc_needs_belf" 1>&6 *** 2385,2391 **** esac echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 ! echo "configure:2389: checking how to run the C++ preprocessor" >&5 if test -z "$CXXCPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 2387,2393 ---- esac echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 ! echo "configure:2391: checking how to run the C++ preprocessor" >&5 if test -z "$CXXCPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 2398,2409 **** cross_compiling=$ac_cv_prog_cxx_cross CXXCPP="${CXX-g++} -E" cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2407: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : --- 2400,2411 ---- cross_compiling=$ac_cv_prog_cxx_cross CXXCPP="${CXX-g++} -E" cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2409: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : *************** exec 5>>./config.log *** 2538,2544 **** echo $ac_n "checking for GNU make""... $ac_c" 1>&6 ! echo "configure:2542: checking for GNU make" >&5 if eval "test \"`echo '$''{'_cv_gnu_make_command'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2540,2546 ---- echo $ac_n "checking for GNU make""... $ac_c" 1>&6 ! echo "configure:2544: checking for GNU make" >&5 if eval "test \"`echo '$''{'_cv_gnu_make_command'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** echo "$ac_t""$_cv_gnu_make_command" 1>&6 *** 2566,2573 **** - - # Check for c++ or library specific bits that don't require linking. if test ! -f stamp-sanity-compiler; then --- 2568,2573 ---- *************** fi *** 3601,3607 **** case "$enable_cheaders" in c_shadow) CSHADOW_FLAGS="-fno-builtin" ! C_INCLUDE_DIR='${top_srcdir}/include/c_shadow' cat >> confdefs.h <<\EOF #define _GLIBCPP_USE_SHADOW_HEADERS 1 EOF --- 3601,3607 ---- case "$enable_cheaders" in c_shadow) CSHADOW_FLAGS="-fno-builtin" ! C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_shadow' cat >> confdefs.h <<\EOF #define _GLIBCPP_USE_SHADOW_HEADERS 1 EOF *************** EOF *** 3609,3619 **** ;; c_std) CSHADOW_FLAGS="" ! C_INCLUDE_DIR='${top_srcdir}/include/c_std' ;; c) CSHADOW_FLAGS="" ! C_INCLUDE_DIR='${top_srcdir}/include/c' ;; esac --- 3609,3619 ---- ;; c_std) CSHADOW_FLAGS="" ! C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_std' ;; c) CSHADOW_FLAGS="" ! C_INCLUDE_DIR='${glibcpp_srcdir}/include/c' ;; esac *************** echo "configure:3635: checking for threa *** 3635,3643 **** target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` echo "$ac_t""$target_thread_file" 1>&6 - - - if test $target_thread_file != single; then cat >> confdefs.h <<\EOF #define HAVE_GTHR_DEFAULT 1 --- 3635,3640 ---- *************** EOF *** 3648,3653 **** --- 3645,3652 ---- EOF fi + + glibcpp_thread_h=gthr-$target_thread_file.h # Check whether --enable-cxx-flags or --disable-cxx-flags was given. *************** EXTRA_CXX_FLAGS="$enable_cxx_flags" *** 3685,3691 **** echo $ac_n "checking for exception model to use""... $ac_c" 1>&6 ! echo "configure:3689: checking for exception model to use" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. --- 3684,3690 ---- echo $ac_n "checking for exception model to use""... $ac_c" 1>&6 ! echo "configure:3688: checking for exception model to use" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. *************** if test "${enable_sjlj_exceptions+set}" *** 3700,3706 **** : else cat > conftest.$ac_ext << EOF ! #line 3704 "configure" struct S { ~S(); }; void bar(); void foo() --- 3699,3705 ---- : else cat > conftest.$ac_ext << EOF ! #line 3703 "configure" struct S { ~S(); }; void bar(); void foo() *************** void foo() *** 3711,3717 **** EOF old_CXXFLAGS="$CXXFLAGS" CXXFLAGS=-S ! if { (eval echo configure:3715: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then enable_sjlj_exceptions=yes elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then --- 3710,3716 ---- EOF old_CXXFLAGS="$CXXFLAGS" CXXFLAGS=-S ! if { (eval echo configure:3714: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then enable_sjlj_exceptions=yes elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then *************** cross_compiling=$ac_cv_prog_cc_cross *** 3743,3764 **** echo "$ac_t""$ac_exception_model_name" 1>&6 ! if test -n "$with_cross_host"; then ! # We are being configured with a cross compiler. AC_REPLACE_FUNCS ! # may not work correctly, because the compiler may not be able to ! # link executables. ! xcompiling=1 ! NATIVE=no # If Canadian cross, then don't pick up tools from the build # directory. ! if test x"$build" != x"$with_cross_host" && x"$build" != x"$target"; then CANADIAN=yes - NULL_TARGET=yes else CANADIAN=no - NULL_TARGET=no fi case "$target_alias" in --- 3742,3762 ---- echo "$ac_t""$ac_exception_model_name" 1>&6 ! if test -n "$with_cross_host" || test x"$build" != x"$host"; then ! # We are being configured with some form of cross compiler. ! # mknumeric_limits may not work correctly, either because the ! # compiler may not run on this machine, may not be able to link ! # executables, or may produce executables we can't run on this ! # machine. ! GLIBCPP_IS_CROSS_COMPILING=1 # If Canadian cross, then don't pick up tools from the build # directory. ! if test -n "$with_cross_host" && test x"$build" != x"$with_cross_host"; then CANADIAN=yes else CANADIAN=no fi case "$target_alias" in *************** if test -n "$with_cross_host"; then *** 3771,3787 **** do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:3775: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:3785: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 3769,3785 ---- do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:3773: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:3783: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** done *** 3837,3848 **** # used sections, first .eh_frame and now some of the glibc sections for # iconv). Bzzzzt. Thanks for playing, maybe next time. echo $ac_n "checking for ld that supports -Wl,--gc-sections""... $ac_c" 1>&6 ! echo "configure:3841: checking for ld that supports -Wl,--gc-sections" >&5 if test "$cross_compiling" = yes; then ac_sectionLDflags=yes else cat > conftest.$ac_ext <&6 ! echo "configure:3839: checking for ld that supports -Wl,--gc-sections" >&5 if test "$cross_compiling" = yes; then ac_sectionLDflags=yes else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_sectionLDflags=yes else --- 3851,3857 ---- } EOF ! if { (eval echo configure:3855: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_sectionLDflags=yes else *************** EOF *** 4131,4137 **** fi echo $ac_n "checking for main in -lm""... $ac_c" 1>&6 ! echo "configure:4135: checking for main in -lm" >&5 ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 4129,4135 ---- fi echo $ac_n "checking for main in -lm""... $ac_c" 1>&6 ! echo "configure:4133: checking for main in -lm" >&5 ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 4139,4152 **** ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 4137,4150 ---- ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** else *** 4173,4187 **** echo "$ac_t""no" 1>&6 fi ! for ac_func in nan hypot hypotf atan2f expf copysignf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:4180: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 fi ! for ac_func in nan copysignf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:4178: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 4202,4208 ---- ; return 0; } EOF ! if { (eval echo configure:4206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 4232,4249 **** USE_COMPLEX_LONG_DOUBLE=no ! if test x$ac_cv_func_atan2l = x"yes" \ ! && test x$ac_cv_func_copysignl = x"yes"; then USE_COMPLEX_LONG_DOUBLE=yes ! for ac_func in hypotl signbitl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:4242: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4239: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 4263,4269 ---- ; return 0; } EOF ! if { (eval echo configure:4267: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 4299,4314 **** echo $ac_n "checking for mbstate_t""... $ac_c" 1>&6 ! echo "configure:4303: checking for mbstate_t" >&5 cat > conftest.$ac_ext < int main() { mbstate_t teststate; ; return 0; } EOF ! if { (eval echo configure:4312: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* have_mbstate_t=yes else --- 4296,4311 ---- echo $ac_n "checking for mbstate_t""... $ac_c" 1>&6 ! echo "configure:4300: checking for mbstate_t" >&5 cat > conftest.$ac_ext < int main() { mbstate_t teststate; ; return 0; } EOF ! if { (eval echo configure:4309: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* have_mbstate_t=yes else *************** EOF *** 4330,4346 **** do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:4334: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:4344: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 4327,4343 ---- do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:4331: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:4341: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** done *** 4369,4385 **** ac_safe=`echo "wctype.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for wctype.h""... $ac_c" 1>&6 ! echo "configure:4373: checking for wctype.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:4383: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 4366,4382 ---- ac_safe=`echo "wctype.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for wctype.h""... $ac_c" 1>&6 ! echo "configure:4370: checking for wctype.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:4380: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** fi *** 4406,4421 **** && test x"$enable_c_mbchar" != xno; then echo $ac_n "checking for WCHAR_MIN and WCHAR_MAX""... $ac_c" 1>&6 ! echo "configure:4410: checking for WCHAR_MIN and WCHAR_MAX" >&5 cat > conftest.$ac_ext < int main() { int i = WCHAR_MIN; int j = WCHAR_MAX; ; return 0; } EOF ! if { (eval echo configure:4419: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* has_wchar_minmax=yes else --- 4403,4418 ---- && test x"$enable_c_mbchar" != xno; then echo $ac_n "checking for WCHAR_MIN and WCHAR_MAX""... $ac_c" 1>&6 ! echo "configure:4407: checking for WCHAR_MIN and WCHAR_MAX" >&5 cat > conftest.$ac_ext < int main() { int i = WCHAR_MIN; int j = WCHAR_MAX; ; return 0; } EOF ! if { (eval echo configure:4416: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* has_wchar_minmax=yes else *************** rm -f conftest* *** 4428,4436 **** echo "$ac_t""$has_wchar_minmax" 1>&6 echo $ac_n "checking for WEOF""... $ac_c" 1>&6 ! echo "configure:4432: checking for WEOF" >&5 cat > conftest.$ac_ext < --- 4425,4433 ---- echo "$ac_t""$has_wchar_minmax" 1>&6 echo $ac_n "checking for WEOF""... $ac_c" 1>&6 ! echo "configure:4429: checking for WEOF" >&5 cat > conftest.$ac_ext < *************** int main() { *** 4439,4445 **** wint_t i = WEOF; ; return 0; } EOF ! if { (eval echo configure:4443: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* has_weof=yes else --- 4436,4442 ---- wint_t i = WEOF; ; return 0; } EOF ! if { (eval echo configure:4440: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* has_weof=yes else *************** rm -f conftest* *** 4455,4466 **** for ac_func in wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:4459: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4456: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 4480,4486 ---- ; return 0; } EOF ! if { (eval echo configure:4484: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 4518,4529 **** wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:4522: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4519: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 4543,4549 ---- ; return 0; } EOF ! if { (eval echo configure:4547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 4574,4580 **** echo $ac_n "checking for ISO C99 wchar_t support""... $ac_c" 1>&6 ! echo "configure:4578: checking for ISO C99 wchar_t support" >&5 if test x"$has_weof" = xyes && test x"$has_wchar_minmax" = xyes \ && test x"$ac_wfuncs" = xyes; then ac_isoC99_wchar_t=yes --- 4571,4577 ---- echo $ac_n "checking for ISO C99 wchar_t support""... $ac_c" 1>&6 ! echo "configure:4575: checking for ISO C99 wchar_t support" >&5 if test x"$has_weof" = xyes && test x"$has_wchar_minmax" = xyes \ && test x"$ac_wfuncs" = xyes; then ac_isoC99_wchar_t=yes *************** echo "configure:4578: checking for ISO C *** 4585,4601 **** ac_safe=`echo "iconv.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for iconv.h""... $ac_c" 1>&6 ! echo "configure:4589: checking for iconv.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:4599: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 4582,4598 ---- ac_safe=`echo "iconv.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for iconv.h""... $ac_c" 1>&6 ! echo "configure:4586: checking for iconv.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:4596: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** fi *** 4619,4635 **** ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 ! echo "configure:4623: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:4633: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 4616,4632 ---- ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 ! echo "configure:4620: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:4630: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** fi *** 4653,4659 **** echo $ac_n "checking for iconv in -liconv""... $ac_c" 1>&6 ! echo "configure:4657: checking for iconv in -liconv" >&5 ac_lib_var=`echo iconv'_'iconv | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 4650,4656 ---- echo $ac_n "checking for iconv in -liconv""... $ac_c" 1>&6 ! echo "configure:4654: checking for iconv in -liconv" >&5 ac_lib_var=`echo iconv'_'iconv | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 4661,4667 **** ac_save_LIBS="$LIBS" LIBS="-liconv $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 4669,4675 ---- iconv() ; return 0; } EOF ! if { (eval echo configure:4673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** fi *** 4698,4709 **** for ac_func in iconv_open iconv_close iconv nl_langinfo do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:4702: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:4699: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 4723,4729 ---- ; return 0; } EOF ! if { (eval echo configure:4727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 4756,4762 **** LIBS="$ac_save_LIBS" echo $ac_n "checking for XPG2 wchar_t support""... $ac_c" 1>&6 ! echo "configure:4760: checking for XPG2 wchar_t support" >&5 if test x"$ac_has_iconv_h" = xyes && test x"$ac_has_langinfo_h" = xyes \ && test x"$ac_XPG2funcs" = xyes; then ac_XPG2_wchar_t=yes --- 4753,4759 ---- LIBS="$ac_save_LIBS" echo $ac_n "checking for XPG2 wchar_t support""... $ac_c" 1>&6 ! echo "configure:4757: checking for XPG2 wchar_t support" >&5 if test x"$ac_has_iconv_h" = xyes && test x"$ac_has_langinfo_h" = xyes \ && test x"$ac_XPG2funcs" = xyes; then ac_XPG2_wchar_t=yes *************** echo "configure:4760: checking for XPG2 *** 4766,4772 **** echo "$ac_t""$ac_XPG2_wchar_t" 1>&6 echo $ac_n "checking for enabled wchar_t specializations""... $ac_c" 1>&6 ! echo "configure:4770: checking for enabled wchar_t specializations" >&5 if test x"$ac_isoC99_wchar_t" = xyes \ && test x"$ac_XPG2_wchar_t" = xyes; then cat >> confdefs.h <<\EOF --- 4763,4769 ---- echo "$ac_t""$ac_XPG2_wchar_t" 1>&6 echo $ac_n "checking for enabled wchar_t specializations""... $ac_c" 1>&6 ! echo "configure:4767: checking for enabled wchar_t specializations" >&5 if test x"$ac_isoC99_wchar_t" = xyes \ && test x"$ac_XPG2_wchar_t" = xyes; then cat >> confdefs.h <<\EOF *************** else *** 4831,4840 **** # We are being configured natively. We can do more elaborate tests # that include AC_TRY_COMPILE now, as the linker is assumed to be # working. ! xcompiling=0 ! NATIVE=yes CANADIAN=no - NULL_TARGET=no # Check for available headers. for ac_hdr in nan.h ieeefp.h endian.h sys/isa_defs.h machine/endian.h \ --- 4828,4835 ---- # We are being configured natively. We can do more elaborate tests # that include AC_TRY_COMPILE now, as the linker is assumed to be # working. ! GLIBCPP_IS_CROSS_COMPILING=0 CANADIAN=no # Check for available headers. for ac_hdr in nan.h ieeefp.h endian.h sys/isa_defs.h machine/endian.h \ *************** else *** 4842,4858 **** do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:4846: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:4856: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 4837,4853 ---- do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:4841: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:4851: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** cross_compiling=$ac_cv_prog_cxx_cross *** 4903,4912 **** # Check for -ffunction-sections -fdata-sections echo $ac_n "checking for g++ that supports -ffunction-sections -fdata-sections""... $ac_c" 1>&6 ! echo "configure:4907: checking for g++ that supports -ffunction-sections -fdata-sections" >&5 CXXFLAGS='-Werror -ffunction-sections -fdata-sections' cat > conftest.$ac_ext <&6 ! echo "configure:4902: checking for g++ that supports -ffunction-sections -fdata-sections" >&5 CXXFLAGS='-Werror -ffunction-sections -fdata-sections' cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_fdsections=yes else --- 4909,4915 ---- ; return 0; } EOF ! if { (eval echo configure:4913: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_fdsections=yes else *************** cross_compiling=$ac_cv_prog_cc_cross *** 4971,4982 **** # used sections, first .eh_frame and now some of the glibc sections for # iconv). Bzzzzt. Thanks for playing, maybe next time. echo $ac_n "checking for ld that supports -Wl,--gc-sections""... $ac_c" 1>&6 ! echo "configure:4975: checking for ld that supports -Wl,--gc-sections" >&5 if test "$cross_compiling" = yes; then ac_sectionLDflags=yes else cat > conftest.$ac_ext <&6 ! echo "configure:4970: checking for ld that supports -Wl,--gc-sections" >&5 if test "$cross_compiling" = yes; then ac_sectionLDflags=yes else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_sectionLDflags=yes else --- 4982,4988 ---- } EOF ! if { (eval echo configure:4986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_sectionLDflags=yes else *************** fi *** 5022,5028 **** echo $ac_n "checking for __builtin_abs declaration""... $ac_c" 1>&6 ! echo "configure:5026: checking for __builtin_abs declaration" >&5 if test x${glibcpp_cv_func___builtin_abs_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_abs_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 5017,5023 ---- echo $ac_n "checking for __builtin_abs declaration""... $ac_c" 1>&6 ! echo "configure:5021: checking for __builtin_abs declaration" >&5 if test x${glibcpp_cv_func___builtin_abs_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_abs_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 5037,5050 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_abs(0); ; return 0; } EOF ! if { (eval echo configure:5048: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_abs_use=yes else --- 5032,5045 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_abs(0); ; return 0; } EOF ! if { (eval echo configure:5043: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_abs_use=yes else *************** fi *** 5068,5088 **** echo "$ac_t""$glibcpp_cv_func___builtin_abs_use" 1>&6 if test x$glibcpp_cv_func___builtin_abs_use = x"yes"; then echo $ac_n "checking for __builtin_abs linkage""... $ac_c" 1>&6 ! echo "configure:5072: checking for __builtin_abs linkage" >&5 if test x${glibcpp_cv_func___builtin_abs_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_abs_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_abs(0); ; return 0; } EOF ! if { (eval echo configure:5086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_abs_link=yes else --- 5063,5083 ---- echo "$ac_t""$glibcpp_cv_func___builtin_abs_use" 1>&6 if test x$glibcpp_cv_func___builtin_abs_use = x"yes"; then echo $ac_n "checking for __builtin_abs linkage""... $ac_c" 1>&6 ! echo "configure:5067: checking for __builtin_abs linkage" >&5 if test x${glibcpp_cv_func___builtin_abs_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_abs_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_abs(0); ; return 0; } EOF ! if { (eval echo configure:5081: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_abs_link=yes else *************** EOF *** 5108,5114 **** echo $ac_n "checking for __builtin_fabsf declaration""... $ac_c" 1>&6 ! echo "configure:5112: checking for __builtin_fabsf declaration" >&5 if test x${glibcpp_cv_func___builtin_fabsf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fabsf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 5103,5109 ---- echo $ac_n "checking for __builtin_fabsf declaration""... $ac_c" 1>&6 ! echo "configure:5107: checking for __builtin_fabsf declaration" >&5 if test x${glibcpp_cv_func___builtin_fabsf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fabsf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 5123,5136 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_fabsf(0); ; return 0; } EOF ! if { (eval echo configure:5134: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_fabsf_use=yes else --- 5118,5131 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_fabsf(0); ; return 0; } EOF ! if { (eval echo configure:5129: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_fabsf_use=yes else *************** fi *** 5154,5174 **** echo "$ac_t""$glibcpp_cv_func___builtin_fabsf_use" 1>&6 if test x$glibcpp_cv_func___builtin_fabsf_use = x"yes"; then echo $ac_n "checking for __builtin_fabsf linkage""... $ac_c" 1>&6 ! echo "configure:5158: checking for __builtin_fabsf linkage" >&5 if test x${glibcpp_cv_func___builtin_fabsf_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fabsf_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_fabsf(0); ; return 0; } EOF ! if { (eval echo configure:5172: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_fabsf_link=yes else --- 5149,5169 ---- echo "$ac_t""$glibcpp_cv_func___builtin_fabsf_use" 1>&6 if test x$glibcpp_cv_func___builtin_fabsf_use = x"yes"; then echo $ac_n "checking for __builtin_fabsf linkage""... $ac_c" 1>&6 ! echo "configure:5153: checking for __builtin_fabsf linkage" >&5 if test x${glibcpp_cv_func___builtin_fabsf_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fabsf_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_fabsf(0); ; return 0; } EOF ! if { (eval echo configure:5167: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_fabsf_link=yes else *************** EOF *** 5194,5200 **** echo $ac_n "checking for __builtin_fabs declaration""... $ac_c" 1>&6 ! echo "configure:5198: checking for __builtin_fabs declaration" >&5 if test x${glibcpp_cv_func___builtin_fabs_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fabs_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 5189,5195 ---- echo $ac_n "checking for __builtin_fabs declaration""... $ac_c" 1>&6 ! echo "configure:5193: checking for __builtin_fabs declaration" >&5 if test x${glibcpp_cv_func___builtin_fabs_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fabs_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 5209,5222 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_fabs(0); ; return 0; } EOF ! if { (eval echo configure:5220: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_fabs_use=yes else --- 5204,5217 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_fabs(0); ; return 0; } EOF ! if { (eval echo configure:5215: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_fabs_use=yes else *************** fi *** 5240,5260 **** echo "$ac_t""$glibcpp_cv_func___builtin_fabs_use" 1>&6 if test x$glibcpp_cv_func___builtin_fabs_use = x"yes"; then echo $ac_n "checking for __builtin_fabs linkage""... $ac_c" 1>&6 ! echo "configure:5244: checking for __builtin_fabs linkage" >&5 if test x${glibcpp_cv_func___builtin_fabs_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fabs_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_fabs(0); ; return 0; } EOF ! if { (eval echo configure:5258: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_fabs_link=yes else --- 5235,5255 ---- echo "$ac_t""$glibcpp_cv_func___builtin_fabs_use" 1>&6 if test x$glibcpp_cv_func___builtin_fabs_use = x"yes"; then echo $ac_n "checking for __builtin_fabs linkage""... $ac_c" 1>&6 ! echo "configure:5239: checking for __builtin_fabs linkage" >&5 if test x${glibcpp_cv_func___builtin_fabs_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fabs_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_fabs(0); ; return 0; } EOF ! if { (eval echo configure:5253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_fabs_link=yes else *************** EOF *** 5280,5286 **** echo $ac_n "checking for __builtin_fabsl declaration""... $ac_c" 1>&6 ! echo "configure:5284: checking for __builtin_fabsl declaration" >&5 if test x${glibcpp_cv_func___builtin_fabsl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fabsl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 5275,5281 ---- echo $ac_n "checking for __builtin_fabsl declaration""... $ac_c" 1>&6 ! echo "configure:5279: checking for __builtin_fabsl declaration" >&5 if test x${glibcpp_cv_func___builtin_fabsl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fabsl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 5295,5308 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_fabsl(0); ; return 0; } EOF ! if { (eval echo configure:5306: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_fabsl_use=yes else --- 5290,5303 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_fabsl(0); ; return 0; } EOF ! if { (eval echo configure:5301: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_fabsl_use=yes else *************** fi *** 5326,5346 **** echo "$ac_t""$glibcpp_cv_func___builtin_fabsl_use" 1>&6 if test x$glibcpp_cv_func___builtin_fabsl_use = x"yes"; then echo $ac_n "checking for __builtin_fabsl linkage""... $ac_c" 1>&6 ! echo "configure:5330: checking for __builtin_fabsl linkage" >&5 if test x${glibcpp_cv_func___builtin_fabsl_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fabsl_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_fabsl(0); ; return 0; } EOF ! if { (eval echo configure:5344: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_fabsl_link=yes else --- 5321,5341 ---- echo "$ac_t""$glibcpp_cv_func___builtin_fabsl_use" 1>&6 if test x$glibcpp_cv_func___builtin_fabsl_use = x"yes"; then echo $ac_n "checking for __builtin_fabsl linkage""... $ac_c" 1>&6 ! echo "configure:5325: checking for __builtin_fabsl linkage" >&5 if test x${glibcpp_cv_func___builtin_fabsl_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fabsl_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_fabsl(0); ; return 0; } EOF ! if { (eval echo configure:5339: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_fabsl_link=yes else *************** EOF *** 5366,5372 **** echo $ac_n "checking for __builtin_labs declaration""... $ac_c" 1>&6 ! echo "configure:5370: checking for __builtin_labs declaration" >&5 if test x${glibcpp_cv_func___builtin_labs_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_labs_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 5361,5367 ---- echo $ac_n "checking for __builtin_labs declaration""... $ac_c" 1>&6 ! echo "configure:5365: checking for __builtin_labs declaration" >&5 if test x${glibcpp_cv_func___builtin_labs_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_labs_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 5381,5394 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_labs(0); ; return 0; } EOF ! if { (eval echo configure:5392: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_labs_use=yes else --- 5376,5389 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_labs(0); ; return 0; } EOF ! if { (eval echo configure:5387: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_labs_use=yes else *************** fi *** 5412,5432 **** echo "$ac_t""$glibcpp_cv_func___builtin_labs_use" 1>&6 if test x$glibcpp_cv_func___builtin_labs_use = x"yes"; then echo $ac_n "checking for __builtin_labs linkage""... $ac_c" 1>&6 ! echo "configure:5416: checking for __builtin_labs linkage" >&5 if test x${glibcpp_cv_func___builtin_labs_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_labs_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_labs(0); ; return 0; } EOF ! if { (eval echo configure:5430: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_labs_link=yes else --- 5407,5427 ---- echo "$ac_t""$glibcpp_cv_func___builtin_labs_use" 1>&6 if test x$glibcpp_cv_func___builtin_labs_use = x"yes"; then echo $ac_n "checking for __builtin_labs linkage""... $ac_c" 1>&6 ! echo "configure:5411: checking for __builtin_labs linkage" >&5 if test x${glibcpp_cv_func___builtin_labs_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_labs_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_labs(0); ; return 0; } EOF ! if { (eval echo configure:5425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_labs_link=yes else *************** EOF *** 5453,5459 **** echo $ac_n "checking for __builtin_sqrtf declaration""... $ac_c" 1>&6 ! echo "configure:5457: checking for __builtin_sqrtf declaration" >&5 if test x${glibcpp_cv_func___builtin_sqrtf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sqrtf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 5448,5454 ---- echo $ac_n "checking for __builtin_sqrtf declaration""... $ac_c" 1>&6 ! echo "configure:5452: checking for __builtin_sqrtf declaration" >&5 if test x${glibcpp_cv_func___builtin_sqrtf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sqrtf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 5468,5481 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_sqrtf(0); ; return 0; } EOF ! if { (eval echo configure:5479: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_sqrtf_use=yes else --- 5463,5476 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_sqrtf(0); ; return 0; } EOF ! if { (eval echo configure:5474: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_sqrtf_use=yes else *************** fi *** 5499,5519 **** echo "$ac_t""$glibcpp_cv_func___builtin_sqrtf_use" 1>&6 if test x$glibcpp_cv_func___builtin_sqrtf_use = x"yes"; then echo $ac_n "checking for __builtin_sqrtf linkage""... $ac_c" 1>&6 ! echo "configure:5503: checking for __builtin_sqrtf linkage" >&5 if test x${glibcpp_cv_func___builtin_sqrtf_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sqrtf_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_sqrtf(0); ; return 0; } EOF ! if { (eval echo configure:5517: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_sqrtf_link=yes else --- 5494,5514 ---- echo "$ac_t""$glibcpp_cv_func___builtin_sqrtf_use" 1>&6 if test x$glibcpp_cv_func___builtin_sqrtf_use = x"yes"; then echo $ac_n "checking for __builtin_sqrtf linkage""... $ac_c" 1>&6 ! echo "configure:5498: checking for __builtin_sqrtf linkage" >&5 if test x${glibcpp_cv_func___builtin_sqrtf_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sqrtf_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_sqrtf(0); ; return 0; } EOF ! if { (eval echo configure:5512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_sqrtf_link=yes else *************** EOF *** 5539,5545 **** echo $ac_n "checking for __builtin_fsqrt declaration""... $ac_c" 1>&6 ! echo "configure:5543: checking for __builtin_fsqrt declaration" >&5 if test x${glibcpp_cv_func___builtin_fsqrt_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fsqrt_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 5534,5540 ---- echo $ac_n "checking for __builtin_fsqrt declaration""... $ac_c" 1>&6 ! echo "configure:5538: checking for __builtin_fsqrt declaration" >&5 if test x${glibcpp_cv_func___builtin_fsqrt_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fsqrt_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 5554,5567 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_fsqrt(0); ; return 0; } EOF ! if { (eval echo configure:5565: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_fsqrt_use=yes else --- 5549,5562 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_fsqrt(0); ; return 0; } EOF ! if { (eval echo configure:5560: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_fsqrt_use=yes else *************** fi *** 5585,5605 **** echo "$ac_t""$glibcpp_cv_func___builtin_fsqrt_use" 1>&6 if test x$glibcpp_cv_func___builtin_fsqrt_use = x"yes"; then echo $ac_n "checking for __builtin_fsqrt linkage""... $ac_c" 1>&6 ! echo "configure:5589: checking for __builtin_fsqrt linkage" >&5 if test x${glibcpp_cv_func___builtin_fsqrt_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fsqrt_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_fsqrt(0); ; return 0; } EOF ! if { (eval echo configure:5603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_fsqrt_link=yes else --- 5580,5600 ---- echo "$ac_t""$glibcpp_cv_func___builtin_fsqrt_use" 1>&6 if test x$glibcpp_cv_func___builtin_fsqrt_use = x"yes"; then echo $ac_n "checking for __builtin_fsqrt linkage""... $ac_c" 1>&6 ! echo "configure:5584: checking for __builtin_fsqrt linkage" >&5 if test x${glibcpp_cv_func___builtin_fsqrt_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_fsqrt_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_fsqrt(0); ; return 0; } EOF ! if { (eval echo configure:5598: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_fsqrt_link=yes else *************** EOF *** 5625,5631 **** echo $ac_n "checking for __builtin_sqrtl declaration""... $ac_c" 1>&6 ! echo "configure:5629: checking for __builtin_sqrtl declaration" >&5 if test x${glibcpp_cv_func___builtin_sqrtl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sqrtl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 5620,5626 ---- echo $ac_n "checking for __builtin_sqrtl declaration""... $ac_c" 1>&6 ! echo "configure:5624: checking for __builtin_sqrtl declaration" >&5 if test x${glibcpp_cv_func___builtin_sqrtl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sqrtl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 5640,5653 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_sqrtl(0); ; return 0; } EOF ! if { (eval echo configure:5651: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_sqrtl_use=yes else --- 5635,5648 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_sqrtl(0); ; return 0; } EOF ! if { (eval echo configure:5646: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_sqrtl_use=yes else *************** fi *** 5671,5691 **** echo "$ac_t""$glibcpp_cv_func___builtin_sqrtl_use" 1>&6 if test x$glibcpp_cv_func___builtin_sqrtl_use = x"yes"; then echo $ac_n "checking for __builtin_sqrtl linkage""... $ac_c" 1>&6 ! echo "configure:5675: checking for __builtin_sqrtl linkage" >&5 if test x${glibcpp_cv_func___builtin_sqrtl_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sqrtl_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_sqrtl(0); ; return 0; } EOF ! if { (eval echo configure:5689: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_sqrtl_link=yes else --- 5666,5686 ---- echo "$ac_t""$glibcpp_cv_func___builtin_sqrtl_use" 1>&6 if test x$glibcpp_cv_func___builtin_sqrtl_use = x"yes"; then echo $ac_n "checking for __builtin_sqrtl linkage""... $ac_c" 1>&6 ! echo "configure:5670: checking for __builtin_sqrtl linkage" >&5 if test x${glibcpp_cv_func___builtin_sqrtl_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sqrtl_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_sqrtl(0); ; return 0; } EOF ! if { (eval echo configure:5684: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_sqrtl_link=yes else *************** EOF *** 5712,5718 **** echo $ac_n "checking for __builtin_sinf declaration""... $ac_c" 1>&6 ! echo "configure:5716: checking for __builtin_sinf declaration" >&5 if test x${glibcpp_cv_func___builtin_sinf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sinf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 5707,5713 ---- echo $ac_n "checking for __builtin_sinf declaration""... $ac_c" 1>&6 ! echo "configure:5711: checking for __builtin_sinf declaration" >&5 if test x${glibcpp_cv_func___builtin_sinf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sinf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 5727,5740 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_sinf(0); ; return 0; } EOF ! if { (eval echo configure:5738: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_sinf_use=yes else --- 5722,5735 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_sinf(0); ; return 0; } EOF ! if { (eval echo configure:5733: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_sinf_use=yes else *************** fi *** 5758,5778 **** echo "$ac_t""$glibcpp_cv_func___builtin_sinf_use" 1>&6 if test x$glibcpp_cv_func___builtin_sinf_use = x"yes"; then echo $ac_n "checking for __builtin_sinf linkage""... $ac_c" 1>&6 ! echo "configure:5762: checking for __builtin_sinf linkage" >&5 if test x${glibcpp_cv_func___builtin_sinf_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sinf_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_sinf(0); ; return 0; } EOF ! if { (eval echo configure:5776: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_sinf_link=yes else --- 5753,5773 ---- echo "$ac_t""$glibcpp_cv_func___builtin_sinf_use" 1>&6 if test x$glibcpp_cv_func___builtin_sinf_use = x"yes"; then echo $ac_n "checking for __builtin_sinf linkage""... $ac_c" 1>&6 ! echo "configure:5757: checking for __builtin_sinf linkage" >&5 if test x${glibcpp_cv_func___builtin_sinf_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sinf_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_sinf(0); ; return 0; } EOF ! if { (eval echo configure:5771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_sinf_link=yes else *************** EOF *** 5798,5804 **** echo $ac_n "checking for __builtin_sin declaration""... $ac_c" 1>&6 ! echo "configure:5802: checking for __builtin_sin declaration" >&5 if test x${glibcpp_cv_func___builtin_sin_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sin_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 5793,5799 ---- echo $ac_n "checking for __builtin_sin declaration""... $ac_c" 1>&6 ! echo "configure:5797: checking for __builtin_sin declaration" >&5 if test x${glibcpp_cv_func___builtin_sin_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sin_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 5813,5826 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_sin(0); ; return 0; } EOF ! if { (eval echo configure:5824: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_sin_use=yes else --- 5808,5821 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_sin(0); ; return 0; } EOF ! if { (eval echo configure:5819: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_sin_use=yes else *************** fi *** 5844,5864 **** echo "$ac_t""$glibcpp_cv_func___builtin_sin_use" 1>&6 if test x$glibcpp_cv_func___builtin_sin_use = x"yes"; then echo $ac_n "checking for __builtin_sin linkage""... $ac_c" 1>&6 ! echo "configure:5848: checking for __builtin_sin linkage" >&5 if test x${glibcpp_cv_func___builtin_sin_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sin_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_sin(0); ; return 0; } EOF ! if { (eval echo configure:5862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_sin_link=yes else --- 5839,5859 ---- echo "$ac_t""$glibcpp_cv_func___builtin_sin_use" 1>&6 if test x$glibcpp_cv_func___builtin_sin_use = x"yes"; then echo $ac_n "checking for __builtin_sin linkage""... $ac_c" 1>&6 ! echo "configure:5843: checking for __builtin_sin linkage" >&5 if test x${glibcpp_cv_func___builtin_sin_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sin_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_sin(0); ; return 0; } EOF ! if { (eval echo configure:5857: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_sin_link=yes else *************** EOF *** 5884,5890 **** echo $ac_n "checking for __builtin_sinl declaration""... $ac_c" 1>&6 ! echo "configure:5888: checking for __builtin_sinl declaration" >&5 if test x${glibcpp_cv_func___builtin_sinl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sinl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 5879,5885 ---- echo $ac_n "checking for __builtin_sinl declaration""... $ac_c" 1>&6 ! echo "configure:5883: checking for __builtin_sinl declaration" >&5 if test x${glibcpp_cv_func___builtin_sinl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sinl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 5899,5912 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_sinl(0); ; return 0; } EOF ! if { (eval echo configure:5910: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_sinl_use=yes else --- 5894,5907 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_sinl(0); ; return 0; } EOF ! if { (eval echo configure:5905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_sinl_use=yes else *************** fi *** 5930,5950 **** echo "$ac_t""$glibcpp_cv_func___builtin_sinl_use" 1>&6 if test x$glibcpp_cv_func___builtin_sinl_use = x"yes"; then echo $ac_n "checking for __builtin_sinl linkage""... $ac_c" 1>&6 ! echo "configure:5934: checking for __builtin_sinl linkage" >&5 if test x${glibcpp_cv_func___builtin_sinl_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sinl_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_sinl(0); ; return 0; } EOF ! if { (eval echo configure:5948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_sinl_link=yes else --- 5925,5945 ---- echo "$ac_t""$glibcpp_cv_func___builtin_sinl_use" 1>&6 if test x$glibcpp_cv_func___builtin_sinl_use = x"yes"; then echo $ac_n "checking for __builtin_sinl linkage""... $ac_c" 1>&6 ! echo "configure:5929: checking for __builtin_sinl linkage" >&5 if test x${glibcpp_cv_func___builtin_sinl_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sinl_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_sinl(0); ; return 0; } EOF ! if { (eval echo configure:5943: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_sinl_link=yes else *************** EOF *** 5971,5977 **** echo $ac_n "checking for __builtin_cosf declaration""... $ac_c" 1>&6 ! echo "configure:5975: checking for __builtin_cosf declaration" >&5 if test x${glibcpp_cv_func___builtin_cosf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_cosf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 5966,5972 ---- echo $ac_n "checking for __builtin_cosf declaration""... $ac_c" 1>&6 ! echo "configure:5970: checking for __builtin_cosf declaration" >&5 if test x${glibcpp_cv_func___builtin_cosf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_cosf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 5986,5999 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_cosf(0); ; return 0; } EOF ! if { (eval echo configure:5997: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_cosf_use=yes else --- 5981,5994 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_cosf(0); ; return 0; } EOF ! if { (eval echo configure:5992: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_cosf_use=yes else *************** fi *** 6017,6037 **** echo "$ac_t""$glibcpp_cv_func___builtin_cosf_use" 1>&6 if test x$glibcpp_cv_func___builtin_cosf_use = x"yes"; then echo $ac_n "checking for __builtin_cosf linkage""... $ac_c" 1>&6 ! echo "configure:6021: checking for __builtin_cosf linkage" >&5 if test x${glibcpp_cv_func___builtin_cosf_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_cosf_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_cosf(0); ; return 0; } EOF ! if { (eval echo configure:6035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_cosf_link=yes else --- 6012,6032 ---- echo "$ac_t""$glibcpp_cv_func___builtin_cosf_use" 1>&6 if test x$glibcpp_cv_func___builtin_cosf_use = x"yes"; then echo $ac_n "checking for __builtin_cosf linkage""... $ac_c" 1>&6 ! echo "configure:6016: checking for __builtin_cosf linkage" >&5 if test x${glibcpp_cv_func___builtin_cosf_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_cosf_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_cosf(0); ; return 0; } EOF ! if { (eval echo configure:6030: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_cosf_link=yes else *************** EOF *** 6057,6063 **** echo $ac_n "checking for __builtin_cos declaration""... $ac_c" 1>&6 ! echo "configure:6061: checking for __builtin_cos declaration" >&5 if test x${glibcpp_cv_func___builtin_cos_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_cos_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 6052,6058 ---- echo $ac_n "checking for __builtin_cos declaration""... $ac_c" 1>&6 ! echo "configure:6056: checking for __builtin_cos declaration" >&5 if test x${glibcpp_cv_func___builtin_cos_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_cos_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 6072,6085 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_cos(0); ; return 0; } EOF ! if { (eval echo configure:6083: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_cos_use=yes else --- 6067,6080 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_cos(0); ; return 0; } EOF ! if { (eval echo configure:6078: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_cos_use=yes else *************** fi *** 6103,6123 **** echo "$ac_t""$glibcpp_cv_func___builtin_cos_use" 1>&6 if test x$glibcpp_cv_func___builtin_cos_use = x"yes"; then echo $ac_n "checking for __builtin_cos linkage""... $ac_c" 1>&6 ! echo "configure:6107: checking for __builtin_cos linkage" >&5 if test x${glibcpp_cv_func___builtin_cos_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_cos_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_cos(0); ; return 0; } EOF ! if { (eval echo configure:6121: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_cos_link=yes else --- 6098,6118 ---- echo "$ac_t""$glibcpp_cv_func___builtin_cos_use" 1>&6 if test x$glibcpp_cv_func___builtin_cos_use = x"yes"; then echo $ac_n "checking for __builtin_cos linkage""... $ac_c" 1>&6 ! echo "configure:6102: checking for __builtin_cos linkage" >&5 if test x${glibcpp_cv_func___builtin_cos_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_cos_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_cos(0); ; return 0; } EOF ! if { (eval echo configure:6116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_cos_link=yes else *************** EOF *** 6143,6149 **** echo $ac_n "checking for __builtin_cosl declaration""... $ac_c" 1>&6 ! echo "configure:6147: checking for __builtin_cosl declaration" >&5 if test x${glibcpp_cv_func___builtin_cosl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_cosl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 6138,6144 ---- echo $ac_n "checking for __builtin_cosl declaration""... $ac_c" 1>&6 ! echo "configure:6142: checking for __builtin_cosl declaration" >&5 if test x${glibcpp_cv_func___builtin_cosl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_cosl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 6158,6171 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_cosl(0); ; return 0; } EOF ! if { (eval echo configure:6169: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_cosl_use=yes else --- 6153,6166 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { __builtin_cosl(0); ; return 0; } EOF ! if { (eval echo configure:6164: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func___builtin_cosl_use=yes else *************** fi *** 6189,6209 **** echo "$ac_t""$glibcpp_cv_func___builtin_cosl_use" 1>&6 if test x$glibcpp_cv_func___builtin_cosl_use = x"yes"; then echo $ac_n "checking for __builtin_cosl linkage""... $ac_c" 1>&6 ! echo "configure:6193: checking for __builtin_cosl linkage" >&5 if test x${glibcpp_cv_func___builtin_cosl_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_cosl_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_cosl(0); ; return 0; } EOF ! if { (eval echo configure:6207: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_cosl_link=yes else --- 6184,6204 ---- echo "$ac_t""$glibcpp_cv_func___builtin_cosl_use" 1>&6 if test x$glibcpp_cv_func___builtin_cosl_use = x"yes"; then echo $ac_n "checking for __builtin_cosl linkage""... $ac_c" 1>&6 ! echo "configure:6188: checking for __builtin_cosl linkage" >&5 if test x${glibcpp_cv_func___builtin_cosl_link+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_cosl_link'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { __builtin_cosl(0); ; return 0; } EOF ! if { (eval echo configure:6202: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* glibcpp_cv_func___builtin_cosl_link=yes else *************** EOF *** 6294,6300 **** CXXFLAGS='-fno-builtins -D_GNU_SOURCE' echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6 ! echo "configure:6298: checking for sin in -lm" >&5 ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 6289,6295 ---- CXXFLAGS='-fno-builtins -D_GNU_SOURCE' echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6 ! echo "configure:6293: checking for sin in -lm" >&5 ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 6302,6308 **** ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 6308,6314 ---- sin() ; return 0; } EOF ! if { (eval echo configure:6312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** fi *** 6339,6345 **** echo $ac_n "checking for isinf declaration""... $ac_c" 1>&6 ! echo "configure:6343: checking for isinf declaration" >&5 if test x${glibcpp_cv_func_isinf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_isinf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 6334,6340 ---- echo $ac_n "checking for isinf declaration""... $ac_c" 1>&6 ! echo "configure:6338: checking for isinf declaration" >&5 if test x${glibcpp_cv_func_isinf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_isinf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 6354,6360 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 6349,6355 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 6365,6371 **** isinf(0); ; return 0; } EOF ! if { (eval echo configure:6369: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_isinf_use=yes else --- 6360,6366 ---- isinf(0); ; return 0; } EOF ! if { (eval echo configure:6364: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_isinf_use=yes else *************** fi *** 6392,6403 **** for ac_func in isinf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:6396: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:6391: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 6415,6421 ---- ; return 0; } EOF ! if { (eval echo configure:6419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 6447,6453 **** else echo $ac_n "checking for _isinf declaration""... $ac_c" 1>&6 ! echo "configure:6451: checking for _isinf declaration" >&5 if test x${glibcpp_cv_func__isinf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__isinf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 6442,6448 ---- else echo $ac_n "checking for _isinf declaration""... $ac_c" 1>&6 ! echo "configure:6446: checking for _isinf declaration" >&5 if test x${glibcpp_cv_func__isinf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__isinf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 6462,6468 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 6457,6463 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 6473,6479 **** _isinf(0); ; return 0; } EOF ! if { (eval echo configure:6477: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__isinf_use=yes else --- 6468,6474 ---- _isinf(0); ; return 0; } EOF ! if { (eval echo configure:6472: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__isinf_use=yes else *************** fi *** 6500,6511 **** for ac_func in _isinf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:6504: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:6499: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 6523,6529 ---- ; return 0; } EOF ! if { (eval echo configure:6527: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 6558,6564 **** echo $ac_n "checking for isnan declaration""... $ac_c" 1>&6 ! echo "configure:6562: checking for isnan declaration" >&5 if test x${glibcpp_cv_func_isnan_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_isnan_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 6553,6559 ---- echo $ac_n "checking for isnan declaration""... $ac_c" 1>&6 ! echo "configure:6557: checking for isnan declaration" >&5 if test x${glibcpp_cv_func_isnan_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_isnan_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 6573,6579 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 6568,6574 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 6584,6590 **** isnan(0); ; return 0; } EOF ! if { (eval echo configure:6588: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_isnan_use=yes else --- 6579,6585 ---- isnan(0); ; return 0; } EOF ! if { (eval echo configure:6583: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_isnan_use=yes else *************** fi *** 6611,6622 **** for ac_func in isnan do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:6615: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:6610: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 6634,6640 ---- ; return 0; } EOF ! if { (eval echo configure:6638: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 6666,6672 **** else echo $ac_n "checking for _isnan declaration""... $ac_c" 1>&6 ! echo "configure:6670: checking for _isnan declaration" >&5 if test x${glibcpp_cv_func__isnan_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__isnan_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 6661,6667 ---- else echo $ac_n "checking for _isnan declaration""... $ac_c" 1>&6 ! echo "configure:6665: checking for _isnan declaration" >&5 if test x${glibcpp_cv_func__isnan_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__isnan_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 6681,6687 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 6676,6682 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 6692,6698 **** _isnan(0); ; return 0; } EOF ! if { (eval echo configure:6696: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__isnan_use=yes else --- 6687,6693 ---- _isnan(0); ; return 0; } EOF ! if { (eval echo configure:6691: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__isnan_use=yes else *************** fi *** 6719,6730 **** for ac_func in _isnan do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:6723: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:6718: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 6742,6748 ---- ; return 0; } EOF ! if { (eval echo configure:6746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 6777,6783 **** echo $ac_n "checking for finite declaration""... $ac_c" 1>&6 ! echo "configure:6781: checking for finite declaration" >&5 if test x${glibcpp_cv_func_finite_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_finite_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 6772,6778 ---- echo $ac_n "checking for finite declaration""... $ac_c" 1>&6 ! echo "configure:6776: checking for finite declaration" >&5 if test x${glibcpp_cv_func_finite_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_finite_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 6792,6798 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 6787,6793 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 6803,6809 **** finite(0); ; return 0; } EOF ! if { (eval echo configure:6807: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_finite_use=yes else --- 6798,6804 ---- finite(0); ; return 0; } EOF ! if { (eval echo configure:6802: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_finite_use=yes else *************** fi *** 6830,6841 **** for ac_func in finite do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:6834: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:6829: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 6853,6859 ---- ; return 0; } EOF ! if { (eval echo configure:6857: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 6885,6891 **** else echo $ac_n "checking for _finite declaration""... $ac_c" 1>&6 ! echo "configure:6889: checking for _finite declaration" >&5 if test x${glibcpp_cv_func__finite_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__finite_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 6880,6886 ---- else echo $ac_n "checking for _finite declaration""... $ac_c" 1>&6 ! echo "configure:6884: checking for _finite declaration" >&5 if test x${glibcpp_cv_func__finite_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__finite_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 6900,6906 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 6895,6901 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 6911,6917 **** _finite(0); ; return 0; } EOF ! if { (eval echo configure:6915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__finite_use=yes else --- 6906,6912 ---- _finite(0); ; return 0; } EOF ! if { (eval echo configure:6910: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__finite_use=yes else *************** fi *** 6938,6949 **** for ac_func in _finite do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:6942: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:6937: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 6961,6967 ---- ; return 0; } EOF ! if { (eval echo configure:6965: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 6996,7002 **** echo $ac_n "checking for copysign declaration""... $ac_c" 1>&6 ! echo "configure:7000: checking for copysign declaration" >&5 if test x${glibcpp_cv_func_copysign_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_copysign_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 6991,6997 ---- echo $ac_n "checking for copysign declaration""... $ac_c" 1>&6 ! echo "configure:6995: checking for copysign declaration" >&5 if test x${glibcpp_cv_func_copysign_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_copysign_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 7011,7024 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { copysign(0, 0); ; return 0; } EOF ! if { (eval echo configure:7022: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_copysign_use=yes else --- 7006,7019 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { copysign(0, 0); ; return 0; } EOF ! if { (eval echo configure:7017: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_copysign_use=yes else *************** fi *** 7045,7056 **** for ac_func in copysign do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:7049: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:7044: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 7068,7074 ---- ; return 0; } EOF ! if { (eval echo configure:7072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 7100,7106 **** else echo $ac_n "checking for _copysign declaration""... $ac_c" 1>&6 ! echo "configure:7104: checking for _copysign declaration" >&5 if test x${glibcpp_cv_func__copysign_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__copysign_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 7095,7101 ---- else echo $ac_n "checking for _copysign declaration""... $ac_c" 1>&6 ! echo "configure:7099: checking for _copysign declaration" >&5 if test x${glibcpp_cv_func__copysign_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__copysign_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 7115,7128 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _copysign(0, 0); ; return 0; } EOF ! if { (eval echo configure:7126: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__copysign_use=yes else --- 7110,7123 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _copysign(0, 0); ; return 0; } EOF ! if { (eval echo configure:7121: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__copysign_use=yes else *************** fi *** 7149,7160 **** for ac_func in _copysign do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:7153: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:7148: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 7172,7178 ---- ; return 0; } EOF ! if { (eval echo configure:7176: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 7207,7213 **** echo $ac_n "checking for sincos declaration""... $ac_c" 1>&6 ! echo "configure:7211: checking for sincos declaration" >&5 if test x${glibcpp_cv_func_sincos_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_sincos_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 7202,7208 ---- echo $ac_n "checking for sincos declaration""... $ac_c" 1>&6 ! echo "configure:7206: checking for sincos declaration" >&5 if test x${glibcpp_cv_func_sincos_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_sincos_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 7222,7235 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { sincos(0, 0, 0); ; return 0; } EOF ! if { (eval echo configure:7233: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_sincos_use=yes else --- 7217,7230 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { sincos(0, 0, 0); ; return 0; } EOF ! if { (eval echo configure:7228: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_sincos_use=yes else *************** fi *** 7256,7267 **** for ac_func in sincos do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:7260: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:7255: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 7279,7285 ---- ; return 0; } EOF ! if { (eval echo configure:7283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 7311,7317 **** else echo $ac_n "checking for _sincos declaration""... $ac_c" 1>&6 ! echo "configure:7315: checking for _sincos declaration" >&5 if test x${glibcpp_cv_func__sincos_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__sincos_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 7306,7312 ---- else echo $ac_n "checking for _sincos declaration""... $ac_c" 1>&6 ! echo "configure:7310: checking for _sincos declaration" >&5 if test x${glibcpp_cv_func__sincos_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__sincos_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 7326,7339 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _sincos(0, 0, 0); ; return 0; } EOF ! if { (eval echo configure:7337: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__sincos_use=yes else --- 7321,7334 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _sincos(0, 0, 0); ; return 0; } EOF ! if { (eval echo configure:7332: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__sincos_use=yes else *************** fi *** 7360,7371 **** for ac_func in _sincos do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:7364: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:7359: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 7383,7389 ---- ; return 0; } EOF ! if { (eval echo configure:7387: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 7418,7424 **** echo $ac_n "checking for fpclass declaration""... $ac_c" 1>&6 ! echo "configure:7422: checking for fpclass declaration" >&5 if test x${glibcpp_cv_func_fpclass_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_fpclass_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 7413,7419 ---- echo $ac_n "checking for fpclass declaration""... $ac_c" 1>&6 ! echo "configure:7417: checking for fpclass declaration" >&5 if test x${glibcpp_cv_func_fpclass_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_fpclass_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 7433,7439 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 7428,7434 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 7444,7450 **** fpclass(0); ; return 0; } EOF ! if { (eval echo configure:7448: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_fpclass_use=yes else --- 7439,7445 ---- fpclass(0); ; return 0; } EOF ! if { (eval echo configure:7443: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_fpclass_use=yes else *************** fi *** 7471,7482 **** for ac_func in fpclass do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:7475: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:7470: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 7494,7500 ---- ; return 0; } EOF ! if { (eval echo configure:7498: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 7526,7532 **** else echo $ac_n "checking for _fpclass declaration""... $ac_c" 1>&6 ! echo "configure:7530: checking for _fpclass declaration" >&5 if test x${glibcpp_cv_func__fpclass_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__fpclass_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 7521,7527 ---- else echo $ac_n "checking for _fpclass declaration""... $ac_c" 1>&6 ! echo "configure:7525: checking for _fpclass declaration" >&5 if test x${glibcpp_cv_func__fpclass_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__fpclass_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 7541,7547 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 7536,7542 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 7552,7558 **** _fpclass(0); ; return 0; } EOF ! if { (eval echo configure:7556: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__fpclass_use=yes else --- 7547,7553 ---- _fpclass(0); ; return 0; } EOF ! if { (eval echo configure:7551: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__fpclass_use=yes else *************** fi *** 7579,7590 **** for ac_func in _fpclass do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:7583: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:7578: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 7602,7608 ---- ; return 0; } EOF ! if { (eval echo configure:7606: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 7637,7643 **** echo $ac_n "checking for qfpclass declaration""... $ac_c" 1>&6 ! echo "configure:7641: checking for qfpclass declaration" >&5 if test x${glibcpp_cv_func_qfpclass_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_qfpclass_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 7632,7638 ---- echo $ac_n "checking for qfpclass declaration""... $ac_c" 1>&6 ! echo "configure:7636: checking for qfpclass declaration" >&5 if test x${glibcpp_cv_func_qfpclass_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_qfpclass_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 7652,7658 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 7647,7653 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 7663,7669 **** qfpclass(0); ; return 0; } EOF ! if { (eval echo configure:7667: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_qfpclass_use=yes else --- 7658,7664 ---- qfpclass(0); ; return 0; } EOF ! if { (eval echo configure:7662: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_qfpclass_use=yes else *************** fi *** 7690,7701 **** for ac_func in qfpclass do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:7694: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:7689: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 7713,7719 ---- ; return 0; } EOF ! if { (eval echo configure:7717: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 7745,7751 **** else echo $ac_n "checking for _qfpclass declaration""... $ac_c" 1>&6 ! echo "configure:7749: checking for _qfpclass declaration" >&5 if test x${glibcpp_cv_func__qfpclass_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__qfpclass_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 7740,7746 ---- else echo $ac_n "checking for _qfpclass declaration""... $ac_c" 1>&6 ! echo "configure:7744: checking for _qfpclass declaration" >&5 if test x${glibcpp_cv_func__qfpclass_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__qfpclass_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 7760,7766 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 7755,7761 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 7771,7777 **** _qfpclass(0); ; return 0; } EOF ! if { (eval echo configure:7775: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__qfpclass_use=yes else --- 7766,7772 ---- _qfpclass(0); ; return 0; } EOF ! if { (eval echo configure:7770: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__qfpclass_use=yes else *************** fi *** 7798,7809 **** for ac_func in _qfpclass do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:7802: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:7797: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 7821,8038 ---- ; return 0; } EOF ! if { (eval echo configure:7825: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" ! fi ! rm -f conftest* ! fi ! ! if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then ! echo "$ac_t""yes" 1>&6 ! ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` ! cat >> confdefs.h <&6 ! fi ! done ! ! fi ! fi ! ! ! ! echo $ac_n "checking for hypot declaration""... $ac_c" 1>&6 ! echo "configure:7855: checking for hypot declaration" >&5 ! if test x${glibcpp_cv_func_hypot_use+set} != xset; then ! if eval "test \"`echo '$''{'glibcpp_cv_func_hypot_use'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! ! ! ac_ext=C ! # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CXXCPP $CPPFLAGS' ! ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cxx_cross ! ! cat > conftest.$ac_ext < ! int main() { ! hypot(0, 0); ! ; return 0; } ! EOF ! if { (eval echo configure:7877: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ! rm -rf conftest* ! glibcpp_cv_func_hypot_use=yes ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! glibcpp_cv_func_hypot_use=no ! fi ! rm -f conftest* ! ac_ext=c ! # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CPP $CPPFLAGS' ! ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cc_cross ! ! ! fi ! ! fi ! echo "$ac_t""$glibcpp_cv_func_hypot_use" 1>&6 ! ! if test x$glibcpp_cv_func_hypot_use = x"yes"; then ! for ac_func in hypot ! do ! echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:7904: checking for $ac_func" >&5 ! if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext < ! /* Override any gcc2 internal prototype to avoid an error. */ ! /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char $ac_func(); ! ! int main() { ! ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); ! #endif ! ! ; return 0; } ! EOF ! if { (eval echo configure:7932: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" ! fi ! rm -f conftest* ! fi ! ! if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then ! echo "$ac_t""yes" 1>&6 ! ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` ! cat >> confdefs.h <&6 ! fi ! done ! ! else ! ! echo $ac_n "checking for _hypot declaration""... $ac_c" 1>&6 ! echo "configure:7959: checking for _hypot declaration" >&5 ! if test x${glibcpp_cv_func__hypot_use+set} != xset; then ! if eval "test \"`echo '$''{'glibcpp_cv_func__hypot_use'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! ! ! ac_ext=C ! # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CXXCPP $CPPFLAGS' ! ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cxx_cross ! ! cat > conftest.$ac_ext < ! int main() { ! _hypot(0, 0); ! ; return 0; } ! EOF ! if { (eval echo configure:7981: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ! rm -rf conftest* ! glibcpp_cv_func__hypot_use=yes ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! glibcpp_cv_func__hypot_use=no ! fi ! rm -f conftest* ! ac_ext=c ! # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CPP $CPPFLAGS' ! ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cc_cross ! ! ! fi ! ! fi ! echo "$ac_t""$glibcpp_cv_func__hypot_use" 1>&6 ! ! if test x$glibcpp_cv_func__hypot_use = x"yes"; then ! for ac_func in _hypot ! do ! echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:8008: checking for $ac_func" >&5 ! if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext < ! /* Override any gcc2 internal prototype to avoid an error. */ ! /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char $ac_func(); ! ! int main() { ! ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); ! #endif ! ! ; return 0; } ! EOF ! if { (eval echo configure:8036: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 7856,7862 **** echo $ac_n "checking for float trig functions""... $ac_c" 1>&6 ! echo "configure:7860: checking for float trig functions" >&5 if eval "test \"`echo '$''{'glibcpp_cv_func_float_trig_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 8062,8068 ---- echo $ac_n "checking for float trig functions""... $ac_c" 1>&6 ! echo "configure:8066: checking for float trig functions" >&5 if eval "test \"`echo '$''{'glibcpp_cv_func_float_trig_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 7870,7876 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { --- 8076,8082 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { *************** int main() { *** 7879,7885 **** coshf sinhf tanhf; do echo "$x (0);"; done` ; return 0; } EOF ! if { (eval echo configure:7883: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_float_trig_use=yes else --- 8085,8091 ---- coshf sinhf tanhf; do echo "$x (0);"; done` ; return 0; } EOF ! if { (eval echo configure:8089: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_float_trig_use=yes else *************** fi *** 7905,7916 **** coshf sinhf tanhf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:7909: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:8115: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 8139,8145 ---- ; return 0; } EOF ! if { (eval echo configure:8143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 7961,7967 **** echo $ac_n "checking for float round functions""... $ac_c" 1>&6 ! echo "configure:7965: checking for float round functions" >&5 if eval "test \"`echo '$''{'glibcpp_cv_func_float_round_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 8167,8173 ---- echo $ac_n "checking for float round functions""... $ac_c" 1>&6 ! echo "configure:8171: checking for float round functions" >&5 if eval "test \"`echo '$''{'glibcpp_cv_func_float_round_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 7975,7988 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { `for x in ceilf floorf; do echo "$x (0);"; done` ; return 0; } EOF ! if { (eval echo configure:7986: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_float_round_use=yes else --- 8181,8194 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { `for x in ceilf floorf; do echo "$x (0);"; done` ; return 0; } EOF ! if { (eval echo configure:8192: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_float_round_use=yes else *************** fi *** 8006,8017 **** for ac_func in ceilf floorf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:8010: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:8216: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 8240,8246 ---- ; return 0; } EOF ! if { (eval echo configure:8244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 8063,8069 **** echo $ac_n "checking for isnanf declaration""... $ac_c" 1>&6 ! echo "configure:8067: checking for isnanf declaration" >&5 if test x${glibcpp_cv_func_isnanf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_isnanf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 8269,8275 ---- echo $ac_n "checking for isnanf declaration""... $ac_c" 1>&6 ! echo "configure:8273: checking for isnanf declaration" >&5 if test x${glibcpp_cv_func_isnanf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_isnanf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 8078,8084 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 8284,8290 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 8089,8095 **** isnanf(0); ; return 0; } EOF ! if { (eval echo configure:8093: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_isnanf_use=yes else --- 8295,8301 ---- isnanf(0); ; return 0; } EOF ! if { (eval echo configure:8299: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_isnanf_use=yes else *************** fi *** 8116,8127 **** for ac_func in isnanf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:8120: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:8326: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 8350,8356 ---- ; return 0; } EOF ! if { (eval echo configure:8354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 8171,8177 **** else echo $ac_n "checking for _isnanf declaration""... $ac_c" 1>&6 ! echo "configure:8175: checking for _isnanf declaration" >&5 if test x${glibcpp_cv_func__isnanf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__isnanf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 8377,8383 ---- else echo $ac_n "checking for _isnanf declaration""... $ac_c" 1>&6 ! echo "configure:8381: checking for _isnanf declaration" >&5 if test x${glibcpp_cv_func__isnanf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__isnanf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 8186,8192 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 8392,8398 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 8197,8203 **** _isnanf(0); ; return 0; } EOF ! if { (eval echo configure:8201: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__isnanf_use=yes else --- 8403,8409 ---- _isnanf(0); ; return 0; } EOF ! if { (eval echo configure:8407: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__isnanf_use=yes else *************** fi *** 8224,8235 **** for ac_func in _isnanf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:8228: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:8434: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 8458,8464 ---- ; return 0; } EOF ! if { (eval echo configure:8462: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 8282,8288 **** echo $ac_n "checking for isinff declaration""... $ac_c" 1>&6 ! echo "configure:8286: checking for isinff declaration" >&5 if test x${glibcpp_cv_func_isinff_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_isinff_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 8488,8494 ---- echo $ac_n "checking for isinff declaration""... $ac_c" 1>&6 ! echo "configure:8492: checking for isinff declaration" >&5 if test x${glibcpp_cv_func_isinff_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_isinff_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 8297,8303 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 8503,8509 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 8308,8314 **** isinff(0); ; return 0; } EOF ! if { (eval echo configure:8312: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_isinff_use=yes else --- 8514,8520 ---- isinff(0); ; return 0; } EOF ! if { (eval echo configure:8518: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_isinff_use=yes else *************** fi *** 8335,8346 **** for ac_func in isinff do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:8339: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:8545: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 8569,8575 ---- ; return 0; } EOF ! if { (eval echo configure:8573: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 8390,8396 **** else echo $ac_n "checking for _isinff declaration""... $ac_c" 1>&6 ! echo "configure:8394: checking for _isinff declaration" >&5 if test x${glibcpp_cv_func__isinff_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__isinff_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 8596,8602 ---- else echo $ac_n "checking for _isinff declaration""... $ac_c" 1>&6 ! echo "configure:8600: checking for _isinff declaration" >&5 if test x${glibcpp_cv_func__isinff_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__isinff_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 8405,8411 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 8611,8617 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 8416,8422 **** _isinff(0); ; return 0; } EOF ! if { (eval echo configure:8420: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__isinff_use=yes else --- 8622,8628 ---- _isinff(0); ; return 0; } EOF ! if { (eval echo configure:8626: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__isinff_use=yes else *************** fi *** 8443,8454 **** for ac_func in _isinff do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:8447: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:8653: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 8677,8894 ---- ; return 0; } EOF ! if { (eval echo configure:8681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" ! fi ! rm -f conftest* ! fi ! ! if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then ! echo "$ac_t""yes" 1>&6 ! ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` ! cat >> confdefs.h <&6 ! fi ! done ! ! fi ! fi ! ! ! ! echo $ac_n "checking for atan2f declaration""... $ac_c" 1>&6 ! echo "configure:8711: checking for atan2f declaration" >&5 ! if test x${glibcpp_cv_func_atan2f_use+set} != xset; then ! if eval "test \"`echo '$''{'glibcpp_cv_func_atan2f_use'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! ! ! ac_ext=C ! # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CXXCPP $CPPFLAGS' ! ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cxx_cross ! ! cat > conftest.$ac_ext < ! int main() { ! atan2f(0, 0); ! ; return 0; } ! EOF ! if { (eval echo configure:8733: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ! rm -rf conftest* ! glibcpp_cv_func_atan2f_use=yes ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! glibcpp_cv_func_atan2f_use=no ! fi ! rm -f conftest* ! ac_ext=c ! # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CPP $CPPFLAGS' ! ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cc_cross ! ! ! fi ! ! fi ! echo "$ac_t""$glibcpp_cv_func_atan2f_use" 1>&6 ! ! if test x$glibcpp_cv_func_atan2f_use = x"yes"; then ! for ac_func in atan2f ! do ! echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:8760: checking for $ac_func" >&5 ! if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext < ! /* Override any gcc2 internal prototype to avoid an error. */ ! /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char $ac_func(); ! ! int main() { ! ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); ! #endif ! ! ; return 0; } ! EOF ! if { (eval echo configure:8788: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" ! fi ! rm -f conftest* ! fi ! ! if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then ! echo "$ac_t""yes" 1>&6 ! ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` ! cat >> confdefs.h <&6 ! fi ! done ! ! else ! ! echo $ac_n "checking for _atan2f declaration""... $ac_c" 1>&6 ! echo "configure:8815: checking for _atan2f declaration" >&5 ! if test x${glibcpp_cv_func__atan2f_use+set} != xset; then ! if eval "test \"`echo '$''{'glibcpp_cv_func__atan2f_use'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! ! ! ac_ext=C ! # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CXXCPP $CPPFLAGS' ! ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cxx_cross ! ! cat > conftest.$ac_ext < ! int main() { ! _atan2f(0, 0); ! ; return 0; } ! EOF ! if { (eval echo configure:8837: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ! rm -rf conftest* ! glibcpp_cv_func__atan2f_use=yes ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! glibcpp_cv_func__atan2f_use=no ! fi ! rm -f conftest* ! ac_ext=c ! # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CPP $CPPFLAGS' ! ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cc_cross ! ! ! fi ! ! fi ! echo "$ac_t""$glibcpp_cv_func__atan2f_use" 1>&6 ! ! if test x$glibcpp_cv_func__atan2f_use = x"yes"; then ! for ac_func in _atan2f ! do ! echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:8864: checking for $ac_func" >&5 ! if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext < ! /* Override any gcc2 internal prototype to avoid an error. */ ! /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char $ac_func(); ! ! int main() { ! ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); ! #endif ! ! ; return 0; } ! EOF ! if { (eval echo configure:8892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 8501,8507 **** echo $ac_n "checking for fabsf declaration""... $ac_c" 1>&6 ! echo "configure:8505: checking for fabsf declaration" >&5 if test x${glibcpp_cv_func_fabsf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_fabsf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 8918,8924 ---- echo $ac_n "checking for fabsf declaration""... $ac_c" 1>&6 ! echo "configure:8922: checking for fabsf declaration" >&5 if test x${glibcpp_cv_func_fabsf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_fabsf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 8516,8522 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 8933,8939 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 8527,8533 **** fabsf(0); ; return 0; } EOF ! if { (eval echo configure:8531: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_fabsf_use=yes else --- 8944,8950 ---- fabsf(0); ; return 0; } EOF ! if { (eval echo configure:8948: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_fabsf_use=yes else *************** fi *** 8554,8565 **** for ac_func in fabsf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:8558: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:8975: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 8999,9005 ---- ; return 0; } EOF ! if { (eval echo configure:9003: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 8609,8615 **** else echo $ac_n "checking for _fabsf declaration""... $ac_c" 1>&6 ! echo "configure:8613: checking for _fabsf declaration" >&5 if test x${glibcpp_cv_func__fabsf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__fabsf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 9026,9032 ---- else echo $ac_n "checking for _fabsf declaration""... $ac_c" 1>&6 ! echo "configure:9030: checking for _fabsf declaration" >&5 if test x${glibcpp_cv_func__fabsf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__fabsf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 8624,8630 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 9041,9047 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 8635,8641 **** _fabsf(0); ; return 0; } EOF ! if { (eval echo configure:8639: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__fabsf_use=yes else --- 9052,9058 ---- _fabsf(0); ; return 0; } EOF ! if { (eval echo configure:9056: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__fabsf_use=yes else *************** fi *** 8662,8673 **** for ac_func in _fabsf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:8666: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:9083: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 9107,9113 ---- ; return 0; } EOF ! if { (eval echo configure:9111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 8720,8726 **** echo $ac_n "checking for fmodf declaration""... $ac_c" 1>&6 ! echo "configure:8724: checking for fmodf declaration" >&5 if test x${glibcpp_cv_func_fmodf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_fmodf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 9137,9143 ---- echo $ac_n "checking for fmodf declaration""... $ac_c" 1>&6 ! echo "configure:9141: checking for fmodf declaration" >&5 if test x${glibcpp_cv_func_fmodf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_fmodf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 8735,8748 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { fmodf(0, 0); ; return 0; } EOF ! if { (eval echo configure:8746: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_fmodf_use=yes else --- 9152,9165 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { fmodf(0, 0); ; return 0; } EOF ! if { (eval echo configure:9163: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_fmodf_use=yes else *************** fi *** 8769,8780 **** for ac_func in fmodf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:8773: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:9190: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 9214,9220 ---- ; return 0; } EOF ! if { (eval echo configure:9218: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 8824,8830 **** else echo $ac_n "checking for _fmodf declaration""... $ac_c" 1>&6 ! echo "configure:8828: checking for _fmodf declaration" >&5 if test x${glibcpp_cv_func__fmodf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__fmodf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 9241,9247 ---- else echo $ac_n "checking for _fmodf declaration""... $ac_c" 1>&6 ! echo "configure:9245: checking for _fmodf declaration" >&5 if test x${glibcpp_cv_func__fmodf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__fmodf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 8839,8852 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _fmodf(0, 0); ; return 0; } EOF ! if { (eval echo configure:8850: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__fmodf_use=yes else --- 9256,9269 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _fmodf(0, 0); ; return 0; } EOF ! if { (eval echo configure:9267: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__fmodf_use=yes else *************** fi *** 8873,8884 **** for ac_func in _fmodf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:8877: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:9294: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 9318,9324 ---- ; return 0; } EOF ! if { (eval echo configure:9322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 8931,8937 **** echo $ac_n "checking for frexpf declaration""... $ac_c" 1>&6 ! echo "configure:8935: checking for frexpf declaration" >&5 if test x${glibcpp_cv_func_frexpf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_frexpf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 9348,9354 ---- echo $ac_n "checking for frexpf declaration""... $ac_c" 1>&6 ! echo "configure:9352: checking for frexpf declaration" >&5 if test x${glibcpp_cv_func_frexpf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_frexpf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 8946,8959 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { frexpf(0, 0); ; return 0; } EOF ! if { (eval echo configure:8957: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_frexpf_use=yes else --- 9363,9376 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { frexpf(0, 0); ; return 0; } EOF ! if { (eval echo configure:9374: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_frexpf_use=yes else *************** fi *** 8980,8991 **** for ac_func in frexpf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:8984: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:9401: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 9425,9431 ---- ; return 0; } EOF ! if { (eval echo configure:9429: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 9035,9041 **** else echo $ac_n "checking for _frexpf declaration""... $ac_c" 1>&6 ! echo "configure:9039: checking for _frexpf declaration" >&5 if test x${glibcpp_cv_func__frexpf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__frexpf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 9452,9458 ---- else echo $ac_n "checking for _frexpf declaration""... $ac_c" 1>&6 ! echo "configure:9456: checking for _frexpf declaration" >&5 if test x${glibcpp_cv_func__frexpf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__frexpf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 9050,9063 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _frexpf(0, 0); ; return 0; } EOF ! if { (eval echo configure:9061: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__frexpf_use=yes else --- 9467,9480 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _frexpf(0, 0); ; return 0; } EOF ! if { (eval echo configure:9478: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__frexpf_use=yes else *************** fi *** 9084,9095 **** for ac_func in _frexpf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:9088: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:9505: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 9529,9746 ---- ; return 0; } EOF ! if { (eval echo configure:9533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" ! fi ! rm -f conftest* ! fi ! ! if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then ! echo "$ac_t""yes" 1>&6 ! ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` ! cat >> confdefs.h <&6 ! fi ! done ! ! fi ! fi ! ! ! ! echo $ac_n "checking for hypotf declaration""... $ac_c" 1>&6 ! echo "configure:9563: checking for hypotf declaration" >&5 ! if test x${glibcpp_cv_func_hypotf_use+set} != xset; then ! if eval "test \"`echo '$''{'glibcpp_cv_func_hypotf_use'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! ! ! ac_ext=C ! # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CXXCPP $CPPFLAGS' ! ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cxx_cross ! ! cat > conftest.$ac_ext < ! int main() { ! hypotf(0, 0); ! ; return 0; } ! EOF ! if { (eval echo configure:9585: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ! rm -rf conftest* ! glibcpp_cv_func_hypotf_use=yes ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! glibcpp_cv_func_hypotf_use=no ! fi ! rm -f conftest* ! ac_ext=c ! # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CPP $CPPFLAGS' ! ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cc_cross ! ! ! fi ! ! fi ! echo "$ac_t""$glibcpp_cv_func_hypotf_use" 1>&6 ! ! if test x$glibcpp_cv_func_hypotf_use = x"yes"; then ! for ac_func in hypotf ! do ! echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:9612: checking for $ac_func" >&5 ! if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext < ! /* Override any gcc2 internal prototype to avoid an error. */ ! /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char $ac_func(); ! ! int main() { ! ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); ! #endif ! ! ; return 0; } ! EOF ! if { (eval echo configure:9640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" ! fi ! rm -f conftest* ! fi ! ! if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then ! echo "$ac_t""yes" 1>&6 ! ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` ! cat >> confdefs.h <&6 ! fi ! done ! ! else ! ! echo $ac_n "checking for _hypotf declaration""... $ac_c" 1>&6 ! echo "configure:9667: checking for _hypotf declaration" >&5 ! if test x${glibcpp_cv_func__hypotf_use+set} != xset; then ! if eval "test \"`echo '$''{'glibcpp_cv_func__hypotf_use'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! ! ! ac_ext=C ! # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CXXCPP $CPPFLAGS' ! ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cxx_cross ! ! cat > conftest.$ac_ext < ! int main() { ! _hypotf(0, 0); ! ; return 0; } ! EOF ! if { (eval echo configure:9689: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ! rm -rf conftest* ! glibcpp_cv_func__hypotf_use=yes ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! glibcpp_cv_func__hypotf_use=no ! fi ! rm -f conftest* ! ac_ext=c ! # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CPP $CPPFLAGS' ! ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cc_cross ! ! ! fi ! ! fi ! echo "$ac_t""$glibcpp_cv_func__hypotf_use" 1>&6 ! ! if test x$glibcpp_cv_func__hypotf_use = x"yes"; then ! for ac_func in _hypotf ! do ! echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:9716: checking for $ac_func" >&5 ! if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext < ! /* Override any gcc2 internal prototype to avoid an error. */ ! /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char $ac_func(); ! ! int main() { ! ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); ! #endif ! ! ; return 0; } ! EOF ! if { (eval echo configure:9744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 9142,9148 **** echo $ac_n "checking for ldexpf declaration""... $ac_c" 1>&6 ! echo "configure:9146: checking for ldexpf declaration" >&5 if test x${glibcpp_cv_func_ldexpf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_ldexpf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 9770,9776 ---- echo $ac_n "checking for ldexpf declaration""... $ac_c" 1>&6 ! echo "configure:9774: checking for ldexpf declaration" >&5 if test x${glibcpp_cv_func_ldexpf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_ldexpf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 9157,9170 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { ldexpf(0, 0); ; return 0; } EOF ! if { (eval echo configure:9168: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_ldexpf_use=yes else --- 9785,9798 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { ldexpf(0, 0); ; return 0; } EOF ! if { (eval echo configure:9796: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_ldexpf_use=yes else *************** fi *** 9191,9202 **** for ac_func in ldexpf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:9195: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:9823: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 9847,9853 ---- ; return 0; } EOF ! if { (eval echo configure:9851: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 9246,9252 **** else echo $ac_n "checking for _ldexpf declaration""... $ac_c" 1>&6 ! echo "configure:9250: checking for _ldexpf declaration" >&5 if test x${glibcpp_cv_func__ldexpf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__ldexpf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 9874,9880 ---- else echo $ac_n "checking for _ldexpf declaration""... $ac_c" 1>&6 ! echo "configure:9878: checking for _ldexpf declaration" >&5 if test x${glibcpp_cv_func__ldexpf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__ldexpf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 9261,9274 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _ldexpf(0, 0); ; return 0; } EOF ! if { (eval echo configure:9272: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__ldexpf_use=yes else --- 9889,9902 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _ldexpf(0, 0); ; return 0; } EOF ! if { (eval echo configure:9900: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__ldexpf_use=yes else *************** fi *** 9295,9306 **** for ac_func in _ldexpf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:9299: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:9927: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 9951,9957 ---- ; return 0; } EOF ! if { (eval echo configure:9955: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 9353,9359 **** echo $ac_n "checking for logf declaration""... $ac_c" 1>&6 ! echo "configure:9357: checking for logf declaration" >&5 if test x${glibcpp_cv_func_logf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_logf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 9981,9987 ---- echo $ac_n "checking for logf declaration""... $ac_c" 1>&6 ! echo "configure:9985: checking for logf declaration" >&5 if test x${glibcpp_cv_func_logf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_logf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 9368,9374 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 9996,10002 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 9379,9385 **** logf(0); ; return 0; } EOF ! if { (eval echo configure:9383: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_logf_use=yes else --- 10007,10013 ---- logf(0); ; return 0; } EOF ! if { (eval echo configure:10011: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_logf_use=yes else *************** fi *** 9406,9417 **** for ac_func in logf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:9410: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:10038: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 10062,10068 ---- ; return 0; } EOF ! if { (eval echo configure:10066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 9461,9467 **** else echo $ac_n "checking for _logf declaration""... $ac_c" 1>&6 ! echo "configure:9465: checking for _logf declaration" >&5 if test x${glibcpp_cv_func__logf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__logf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 10089,10095 ---- else echo $ac_n "checking for _logf declaration""... $ac_c" 1>&6 ! echo "configure:10093: checking for _logf declaration" >&5 if test x${glibcpp_cv_func__logf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__logf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 9476,9482 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 10104,10110 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 9487,9493 **** _logf(0); ; return 0; } EOF ! if { (eval echo configure:9491: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__logf_use=yes else --- 10115,10121 ---- _logf(0); ; return 0; } EOF ! if { (eval echo configure:10119: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__logf_use=yes else *************** fi *** 9514,9525 **** for ac_func in _logf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:9518: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:10146: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 10170,10176 ---- ; return 0; } EOF ! if { (eval echo configure:10174: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 9572,9578 **** echo $ac_n "checking for log10f declaration""... $ac_c" 1>&6 ! echo "configure:9576: checking for log10f declaration" >&5 if test x${glibcpp_cv_func_log10f_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_log10f_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 10200,10206 ---- echo $ac_n "checking for log10f declaration""... $ac_c" 1>&6 ! echo "configure:10204: checking for log10f declaration" >&5 if test x${glibcpp_cv_func_log10f_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_log10f_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 9587,9593 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 10215,10221 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 9598,9604 **** log10f(0); ; return 0; } EOF ! if { (eval echo configure:9602: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_log10f_use=yes else --- 10226,10232 ---- log10f(0); ; return 0; } EOF ! if { (eval echo configure:10230: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_log10f_use=yes else *************** fi *** 9625,9636 **** for ac_func in log10f do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:9629: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:10257: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 10281,10287 ---- ; return 0; } EOF ! if { (eval echo configure:10285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 9680,9686 **** else echo $ac_n "checking for _log10f declaration""... $ac_c" 1>&6 ! echo "configure:9684: checking for _log10f declaration" >&5 if test x${glibcpp_cv_func__log10f_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__log10f_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 10308,10314 ---- else echo $ac_n "checking for _log10f declaration""... $ac_c" 1>&6 ! echo "configure:10312: checking for _log10f declaration" >&5 if test x${glibcpp_cv_func__log10f_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__log10f_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 9695,9701 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 10323,10329 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 9706,9712 **** _log10f(0); ; return 0; } EOF ! if { (eval echo configure:9710: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__log10f_use=yes else --- 10334,10340 ---- _log10f(0); ; return 0; } EOF ! if { (eval echo configure:10338: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__log10f_use=yes else *************** fi *** 9733,9744 **** for ac_func in _log10f do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:9737: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:10365: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 10389,10395 ---- ; return 0; } EOF ! if { (eval echo configure:10393: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 9791,9797 **** echo $ac_n "checking for modff declaration""... $ac_c" 1>&6 ! echo "configure:9795: checking for modff declaration" >&5 if test x${glibcpp_cv_func_modff_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_modff_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 10419,10425 ---- echo $ac_n "checking for modff declaration""... $ac_c" 1>&6 ! echo "configure:10423: checking for modff declaration" >&5 if test x${glibcpp_cv_func_modff_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_modff_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 9806,9819 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { modff(0, 0); ; return 0; } EOF ! if { (eval echo configure:9817: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_modff_use=yes else --- 10434,10447 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { modff(0, 0); ; return 0; } EOF ! if { (eval echo configure:10445: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_modff_use=yes else *************** fi *** 9840,9851 **** for ac_func in modff do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:9844: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:10472: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 10496,10502 ---- ; return 0; } EOF ! if { (eval echo configure:10500: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 9895,9901 **** else echo $ac_n "checking for _modff declaration""... $ac_c" 1>&6 ! echo "configure:9899: checking for _modff declaration" >&5 if test x${glibcpp_cv_func__modff_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__modff_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 10523,10529 ---- else echo $ac_n "checking for _modff declaration""... $ac_c" 1>&6 ! echo "configure:10527: checking for _modff declaration" >&5 if test x${glibcpp_cv_func__modff_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__modff_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 9910,9923 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _modff(0, 0); ; return 0; } EOF ! if { (eval echo configure:9921: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__modff_use=yes else --- 10538,10551 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _modff(0, 0); ; return 0; } EOF ! if { (eval echo configure:10549: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__modff_use=yes else *************** fi *** 9944,9955 **** for ac_func in _modff do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:9948: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:10576: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 10600,10606 ---- ; return 0; } EOF ! if { (eval echo configure:10604: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 10002,10008 **** echo $ac_n "checking for powf declaration""... $ac_c" 1>&6 ! echo "configure:10006: checking for powf declaration" >&5 if test x${glibcpp_cv_func_powf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_powf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 10630,10636 ---- echo $ac_n "checking for powf declaration""... $ac_c" 1>&6 ! echo "configure:10634: checking for powf declaration" >&5 if test x${glibcpp_cv_func_powf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_powf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 10017,10030 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { powf(0, 0); ; return 0; } EOF ! if { (eval echo configure:10028: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_powf_use=yes else --- 10645,10658 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { powf(0, 0); ; return 0; } EOF ! if { (eval echo configure:10656: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_powf_use=yes else *************** fi *** 10051,10062 **** for ac_func in powf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:10055: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:10683: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 10707,10713 ---- ; return 0; } EOF ! if { (eval echo configure:10711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 10106,10112 **** else echo $ac_n "checking for _powf declaration""... $ac_c" 1>&6 ! echo "configure:10110: checking for _powf declaration" >&5 if test x${glibcpp_cv_func__powf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__powf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 10734,10740 ---- else echo $ac_n "checking for _powf declaration""... $ac_c" 1>&6 ! echo "configure:10738: checking for _powf declaration" >&5 if test x${glibcpp_cv_func__powf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__powf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 10121,10134 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _powf(0, 0); ; return 0; } EOF ! if { (eval echo configure:10132: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__powf_use=yes else --- 10749,10762 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _powf(0, 0); ; return 0; } EOF ! if { (eval echo configure:10760: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__powf_use=yes else *************** fi *** 10155,10166 **** for ac_func in _powf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:10159: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:10787: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 10811,10817 ---- ; return 0; } EOF ! if { (eval echo configure:10815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 10213,10219 **** echo $ac_n "checking for sqrtf declaration""... $ac_c" 1>&6 ! echo "configure:10217: checking for sqrtf declaration" >&5 if test x${glibcpp_cv_func_sqrtf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_sqrtf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 10841,10847 ---- echo $ac_n "checking for sqrtf declaration""... $ac_c" 1>&6 ! echo "configure:10845: checking for sqrtf declaration" >&5 if test x${glibcpp_cv_func_sqrtf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_sqrtf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 10228,10234 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 10856,10862 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 10239,10245 **** sqrtf(0); ; return 0; } EOF ! if { (eval echo configure:10243: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_sqrtf_use=yes else --- 10867,10873 ---- sqrtf(0); ; return 0; } EOF ! if { (eval echo configure:10871: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_sqrtf_use=yes else *************** fi *** 10266,10277 **** for ac_func in sqrtf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:10270: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:10898: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 10922,10928 ---- ; return 0; } EOF ! if { (eval echo configure:10926: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 10321,10327 **** else echo $ac_n "checking for _sqrtf declaration""... $ac_c" 1>&6 ! echo "configure:10325: checking for _sqrtf declaration" >&5 if test x${glibcpp_cv_func__sqrtf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__sqrtf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 10949,10955 ---- else echo $ac_n "checking for _sqrtf declaration""... $ac_c" 1>&6 ! echo "configure:10953: checking for _sqrtf declaration" >&5 if test x${glibcpp_cv_func__sqrtf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__sqrtf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 10336,10342 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 10964,10970 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 10347,10353 **** _sqrtf(0); ; return 0; } EOF ! if { (eval echo configure:10351: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__sqrtf_use=yes else --- 10975,10981 ---- _sqrtf(0); ; return 0; } EOF ! if { (eval echo configure:10979: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__sqrtf_use=yes else *************** fi *** 10374,10385 **** for ac_func in _sqrtf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:10378: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:11006: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 11030,11036 ---- ; return 0; } EOF ! if { (eval echo configure:11034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 10432,10438 **** echo $ac_n "checking for sincosf declaration""... $ac_c" 1>&6 ! echo "configure:10436: checking for sincosf declaration" >&5 if test x${glibcpp_cv_func_sincosf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_sincosf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 11060,11066 ---- echo $ac_n "checking for sincosf declaration""... $ac_c" 1>&6 ! echo "configure:11064: checking for sincosf declaration" >&5 if test x${glibcpp_cv_func_sincosf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_sincosf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 10447,10460 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { sincosf(0, 0, 0); ; return 0; } EOF ! if { (eval echo configure:10458: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_sincosf_use=yes else --- 11075,11088 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { sincosf(0, 0, 0); ; return 0; } EOF ! if { (eval echo configure:11086: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_sincosf_use=yes else *************** fi *** 10481,10492 **** for ac_func in sincosf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:10485: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:11113: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 11137,11143 ---- ; return 0; } EOF ! if { (eval echo configure:11141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 10536,10542 **** else echo $ac_n "checking for _sincosf declaration""... $ac_c" 1>&6 ! echo "configure:10540: checking for _sincosf declaration" >&5 if test x${glibcpp_cv_func__sincosf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__sincosf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 11164,11170 ---- else echo $ac_n "checking for _sincosf declaration""... $ac_c" 1>&6 ! echo "configure:11168: checking for _sincosf declaration" >&5 if test x${glibcpp_cv_func__sincosf_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__sincosf_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 10551,10564 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _sincosf(0, 0, 0); ; return 0; } EOF ! if { (eval echo configure:10562: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__sincosf_use=yes else --- 11179,11192 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _sincosf(0, 0, 0); ; return 0; } EOF ! if { (eval echo configure:11190: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__sincosf_use=yes else *************** fi *** 10585,10596 **** for ac_func in _sincosf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:10589: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:11217: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 11241,11247 ---- ; return 0; } EOF ! if { (eval echo configure:11245: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 10643,10649 **** echo $ac_n "checking for finitef declaration""... $ac_c" 1>&6 ! echo "configure:10647: checking for finitef declaration" >&5 if test x${glibcpp_cv_func_finitef_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_finitef_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 11271,11277 ---- echo $ac_n "checking for finitef declaration""... $ac_c" 1>&6 ! echo "configure:11275: checking for finitef declaration" >&5 if test x${glibcpp_cv_func_finitef_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_finitef_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 10658,10664 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 11286,11292 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 10669,10675 **** finitef(0); ; return 0; } EOF ! if { (eval echo configure:10673: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_finitef_use=yes else --- 11297,11303 ---- finitef(0); ; return 0; } EOF ! if { (eval echo configure:11301: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_finitef_use=yes else *************** fi *** 10696,10707 **** for ac_func in finitef do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:10700: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:11328: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 11352,11358 ---- ; return 0; } EOF ! if { (eval echo configure:11356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 10751,10757 **** else echo $ac_n "checking for _finitef declaration""... $ac_c" 1>&6 ! echo "configure:10755: checking for _finitef declaration" >&5 if test x${glibcpp_cv_func__finitef_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__finitef_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 11379,11385 ---- else echo $ac_n "checking for _finitef declaration""... $ac_c" 1>&6 ! echo "configure:11383: checking for _finitef declaration" >&5 if test x${glibcpp_cv_func__finitef_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__finitef_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 10766,10772 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 11394,11400 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 10777,10783 **** _finitef(0); ; return 0; } EOF ! if { (eval echo configure:10781: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__finitef_use=yes else --- 11405,11411 ---- _finitef(0); ; return 0; } EOF ! if { (eval echo configure:11409: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__finitef_use=yes else *************** fi *** 10804,10815 **** for ac_func in _finitef do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:10808: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:11436: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 11460,11466 ---- ; return 0; } EOF ! if { (eval echo configure:11464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 10862,10868 **** echo $ac_n "checking for long double trig functions""... $ac_c" 1>&6 ! echo "configure:10866: checking for long double trig functions" >&5 if eval "test \"`echo '$''{'glibcpp_cv_func_long_double_trig_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 11490,11496 ---- echo $ac_n "checking for long double trig functions""... $ac_c" 1>&6 ! echo "configure:11494: checking for long double trig functions" >&5 if eval "test \"`echo '$''{'glibcpp_cv_func_long_double_trig_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 10876,10882 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { --- 11504,11510 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { *************** int main() { *** 10885,10891 **** coshl sinhl tanhl; do echo "$x (0);"; done` ; return 0; } EOF ! if { (eval echo configure:10889: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_long_double_trig_use=yes else --- 11513,11519 ---- coshl sinhl tanhl; do echo "$x (0);"; done` ; return 0; } EOF ! if { (eval echo configure:11517: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_long_double_trig_use=yes else *************** fi *** 10911,10922 **** coshl sinhl tanhl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:10915: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:11543: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 11567,11573 ---- ; return 0; } EOF ! if { (eval echo configure:11571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 10967,10973 **** echo $ac_n "checking for long double round functions""... $ac_c" 1>&6 ! echo "configure:10971: checking for long double round functions" >&5 if eval "test \"`echo '$''{'glibcpp_cv_func_long_double_round_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 11595,11601 ---- echo $ac_n "checking for long double round functions""... $ac_c" 1>&6 ! echo "configure:11599: checking for long double round functions" >&5 if eval "test \"`echo '$''{'glibcpp_cv_func_long_double_round_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 10981,10994 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { `for x in ceill floorl; do echo "$x (0);"; done` ; return 0; } EOF ! if { (eval echo configure:10992: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_long_double_round_use=yes else --- 11609,11622 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { `for x in ceill floorl; do echo "$x (0);"; done` ; return 0; } EOF ! if { (eval echo configure:11620: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_long_double_round_use=yes else *************** fi *** 11012,11023 **** for ac_func in ceill floorl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:11016: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:11644: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 11668,11674 ---- ; return 0; } EOF ! if { (eval echo configure:11672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 11069,11075 **** echo $ac_n "checking for isnanl declaration""... $ac_c" 1>&6 ! echo "configure:11073: checking for isnanl declaration" >&5 if test x${glibcpp_cv_func_isnanl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_isnanl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 11697,11703 ---- echo $ac_n "checking for isnanl declaration""... $ac_c" 1>&6 ! echo "configure:11701: checking for isnanl declaration" >&5 if test x${glibcpp_cv_func_isnanl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_isnanl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 11084,11090 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 11712,11718 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 11095,11101 **** isnanl(0); ; return 0; } EOF ! if { (eval echo configure:11099: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_isnanl_use=yes else --- 11723,11729 ---- isnanl(0); ; return 0; } EOF ! if { (eval echo configure:11727: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_isnanl_use=yes else *************** fi *** 11122,11133 **** for ac_func in isnanl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:11126: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:11754: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 11778,11784 ---- ; return 0; } EOF ! if { (eval echo configure:11782: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 11177,11183 **** else echo $ac_n "checking for _isnanl declaration""... $ac_c" 1>&6 ! echo "configure:11181: checking for _isnanl declaration" >&5 if test x${glibcpp_cv_func__isnanl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__isnanl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 11805,11811 ---- else echo $ac_n "checking for _isnanl declaration""... $ac_c" 1>&6 ! echo "configure:11809: checking for _isnanl declaration" >&5 if test x${glibcpp_cv_func__isnanl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__isnanl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 11192,11198 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 11820,11826 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 11203,11209 **** _isnanl(0); ; return 0; } EOF ! if { (eval echo configure:11207: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__isnanl_use=yes else --- 11831,11837 ---- _isnanl(0); ; return 0; } EOF ! if { (eval echo configure:11835: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__isnanl_use=yes else *************** fi *** 11230,11241 **** for ac_func in _isnanl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:11234: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:11862: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 11886,11892 ---- ; return 0; } EOF ! if { (eval echo configure:11890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 11288,11294 **** echo $ac_n "checking for isinfl declaration""... $ac_c" 1>&6 ! echo "configure:11292: checking for isinfl declaration" >&5 if test x${glibcpp_cv_func_isinfl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_isinfl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 11916,11922 ---- echo $ac_n "checking for isinfl declaration""... $ac_c" 1>&6 ! echo "configure:11920: checking for isinfl declaration" >&5 if test x${glibcpp_cv_func_isinfl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_isinfl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 11303,11309 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 11931,11937 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 11314,11320 **** isinfl(0); ; return 0; } EOF ! if { (eval echo configure:11318: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_isinfl_use=yes else --- 11942,11948 ---- isinfl(0); ; return 0; } EOF ! if { (eval echo configure:11946: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_isinfl_use=yes else *************** fi *** 11341,11352 **** for ac_func in isinfl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:11345: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:11973: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 11997,12003 ---- ; return 0; } EOF ! if { (eval echo configure:12001: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 11396,11402 **** else echo $ac_n "checking for _isinfl declaration""... $ac_c" 1>&6 ! echo "configure:11400: checking for _isinfl declaration" >&5 if test x${glibcpp_cv_func__isinfl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__isinfl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 12024,12030 ---- else echo $ac_n "checking for _isinfl declaration""... $ac_c" 1>&6 ! echo "configure:12028: checking for _isinfl declaration" >&5 if test x${glibcpp_cv_func__isinfl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__isinfl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 11411,11417 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 12039,12045 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 11422,11428 **** _isinfl(0); ; return 0; } EOF ! if { (eval echo configure:11426: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__isinfl_use=yes else --- 12050,12056 ---- _isinfl(0); ; return 0; } EOF ! if { (eval echo configure:12054: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__isinfl_use=yes else *************** fi *** 11449,11460 **** for ac_func in _isinfl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:11453: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:12081: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 12105,12111 ---- ; return 0; } EOF ! if { (eval echo configure:12109: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 11507,11513 **** echo $ac_n "checking for copysignl declaration""... $ac_c" 1>&6 ! echo "configure:11511: checking for copysignl declaration" >&5 if test x${glibcpp_cv_func_copysignl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_copysignl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 12135,12141 ---- echo $ac_n "checking for copysignl declaration""... $ac_c" 1>&6 ! echo "configure:12139: checking for copysignl declaration" >&5 if test x${glibcpp_cv_func_copysignl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_copysignl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 11522,11535 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { copysignl(0, 0); ; return 0; } EOF ! if { (eval echo configure:11533: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_copysignl_use=yes else --- 12150,12163 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { copysignl(0, 0); ; return 0; } EOF ! if { (eval echo configure:12161: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_copysignl_use=yes else *************** fi *** 11556,11567 **** for ac_func in copysignl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:11560: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:12188: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 12212,12218 ---- ; return 0; } EOF ! if { (eval echo configure:12216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 11611,11617 **** else echo $ac_n "checking for _copysignl declaration""... $ac_c" 1>&6 ! echo "configure:11615: checking for _copysignl declaration" >&5 if test x${glibcpp_cv_func__copysignl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__copysignl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 12239,12245 ---- else echo $ac_n "checking for _copysignl declaration""... $ac_c" 1>&6 ! echo "configure:12243: checking for _copysignl declaration" >&5 if test x${glibcpp_cv_func__copysignl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__copysignl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 11626,11639 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _copysignl(0, 0); ; return 0; } EOF ! if { (eval echo configure:11637: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__copysignl_use=yes else --- 12254,12267 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _copysignl(0, 0); ; return 0; } EOF ! if { (eval echo configure:12265: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__copysignl_use=yes else *************** fi *** 11660,11671 **** for ac_func in _copysignl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:11664: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:12292: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 12316,12322 ---- ; return 0; } EOF ! if { (eval echo configure:12320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 11718,11724 **** echo $ac_n "checking for atan2l declaration""... $ac_c" 1>&6 ! echo "configure:11722: checking for atan2l declaration" >&5 if test x${glibcpp_cv_func_atan2l_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_atan2l_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 12346,12352 ---- echo $ac_n "checking for atan2l declaration""... $ac_c" 1>&6 ! echo "configure:12350: checking for atan2l declaration" >&5 if test x${glibcpp_cv_func_atan2l_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_atan2l_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 11733,11746 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { atan2l(0, 0); ; return 0; } EOF ! if { (eval echo configure:11744: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_atan2l_use=yes else --- 12361,12374 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { atan2l(0, 0); ; return 0; } EOF ! if { (eval echo configure:12372: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_atan2l_use=yes else *************** fi *** 11767,11778 **** for ac_func in atan2l do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:11771: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:12399: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 12423,12429 ---- ; return 0; } EOF ! if { (eval echo configure:12427: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 11822,11828 **** else echo $ac_n "checking for _atan2l declaration""... $ac_c" 1>&6 ! echo "configure:11826: checking for _atan2l declaration" >&5 if test x${glibcpp_cv_func__atan2l_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__atan2l_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 12450,12456 ---- else echo $ac_n "checking for _atan2l declaration""... $ac_c" 1>&6 ! echo "configure:12454: checking for _atan2l declaration" >&5 if test x${glibcpp_cv_func__atan2l_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__atan2l_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 11837,11850 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _atan2l(0, 0); ; return 0; } EOF ! if { (eval echo configure:11848: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__atan2l_use=yes else --- 12465,12478 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _atan2l(0, 0); ; return 0; } EOF ! if { (eval echo configure:12476: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__atan2l_use=yes else *************** fi *** 11871,11882 **** for ac_func in _atan2l do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:11875: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:12503: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 12527,12533 ---- ; return 0; } EOF ! if { (eval echo configure:12531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 11929,11935 **** echo $ac_n "checking for expl declaration""... $ac_c" 1>&6 ! echo "configure:11933: checking for expl declaration" >&5 if test x${glibcpp_cv_func_expl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_expl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 12557,12563 ---- echo $ac_n "checking for expl declaration""... $ac_c" 1>&6 ! echo "configure:12561: checking for expl declaration" >&5 if test x${glibcpp_cv_func_expl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_expl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 11944,11950 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 12572,12578 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 11955,11961 **** expl(0); ; return 0; } EOF ! if { (eval echo configure:11959: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_expl_use=yes else --- 12583,12589 ---- expl(0); ; return 0; } EOF ! if { (eval echo configure:12587: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_expl_use=yes else *************** fi *** 11982,11993 **** for ac_func in expl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:11986: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:12614: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 12638,12644 ---- ; return 0; } EOF ! if { (eval echo configure:12642: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 12037,12043 **** else echo $ac_n "checking for _expl declaration""... $ac_c" 1>&6 ! echo "configure:12041: checking for _expl declaration" >&5 if test x${glibcpp_cv_func__expl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__expl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 12665,12671 ---- else echo $ac_n "checking for _expl declaration""... $ac_c" 1>&6 ! echo "configure:12669: checking for _expl declaration" >&5 if test x${glibcpp_cv_func__expl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__expl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 12052,12058 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 12680,12686 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 12063,12069 **** _expl(0); ; return 0; } EOF ! if { (eval echo configure:12067: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__expl_use=yes else --- 12691,12697 ---- _expl(0); ; return 0; } EOF ! if { (eval echo configure:12695: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__expl_use=yes else *************** fi *** 12090,12101 **** for ac_func in _expl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:12094: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:12722: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 12746,12752 ---- ; return 0; } EOF ! if { (eval echo configure:12750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 12148,12154 **** echo $ac_n "checking for fabsl declaration""... $ac_c" 1>&6 ! echo "configure:12152: checking for fabsl declaration" >&5 if test x${glibcpp_cv_func_fabsl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_fabsl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 12776,12782 ---- echo $ac_n "checking for fabsl declaration""... $ac_c" 1>&6 ! echo "configure:12780: checking for fabsl declaration" >&5 if test x${glibcpp_cv_func_fabsl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_fabsl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 12163,12169 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 12791,12797 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 12174,12180 **** fabsl(0); ; return 0; } EOF ! if { (eval echo configure:12178: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_fabsl_use=yes else --- 12802,12808 ---- fabsl(0); ; return 0; } EOF ! if { (eval echo configure:12806: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_fabsl_use=yes else *************** fi *** 12201,12212 **** for ac_func in fabsl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:12205: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:12833: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 12857,12863 ---- ; return 0; } EOF ! if { (eval echo configure:12861: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 12256,12262 **** else echo $ac_n "checking for _fabsl declaration""... $ac_c" 1>&6 ! echo "configure:12260: checking for _fabsl declaration" >&5 if test x${glibcpp_cv_func__fabsl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__fabsl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 12884,12890 ---- else echo $ac_n "checking for _fabsl declaration""... $ac_c" 1>&6 ! echo "configure:12888: checking for _fabsl declaration" >&5 if test x${glibcpp_cv_func__fabsl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__fabsl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 12271,12277 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 12899,12905 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 12282,12288 **** _fabsl(0); ; return 0; } EOF ! if { (eval echo configure:12286: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__fabsl_use=yes else --- 12910,12916 ---- _fabsl(0); ; return 0; } EOF ! if { (eval echo configure:12914: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__fabsl_use=yes else *************** fi *** 12309,12320 **** for ac_func in _fabsl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:12313: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:12941: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 12965,12971 ---- ; return 0; } EOF ! if { (eval echo configure:12969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 12367,12373 **** echo $ac_n "checking for fmodl declaration""... $ac_c" 1>&6 ! echo "configure:12371: checking for fmodl declaration" >&5 if test x${glibcpp_cv_func_fmodl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_fmodl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 12995,13001 ---- echo $ac_n "checking for fmodl declaration""... $ac_c" 1>&6 ! echo "configure:12999: checking for fmodl declaration" >&5 if test x${glibcpp_cv_func_fmodl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_fmodl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 12382,12395 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { fmodl(0, 0); ; return 0; } EOF ! if { (eval echo configure:12393: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_fmodl_use=yes else --- 13010,13023 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { fmodl(0, 0); ; return 0; } EOF ! if { (eval echo configure:13021: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_fmodl_use=yes else *************** fi *** 12416,12427 **** for ac_func in fmodl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:12420: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:13048: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 13072,13078 ---- ; return 0; } EOF ! if { (eval echo configure:13076: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 12471,12477 **** else echo $ac_n "checking for _fmodl declaration""... $ac_c" 1>&6 ! echo "configure:12475: checking for _fmodl declaration" >&5 if test x${glibcpp_cv_func__fmodl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__fmodl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 13099,13105 ---- else echo $ac_n "checking for _fmodl declaration""... $ac_c" 1>&6 ! echo "configure:13103: checking for _fmodl declaration" >&5 if test x${glibcpp_cv_func__fmodl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__fmodl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 12486,12499 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _fmodl(0, 0); ; return 0; } EOF ! if { (eval echo configure:12497: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__fmodl_use=yes else --- 13114,13127 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _fmodl(0, 0); ; return 0; } EOF ! if { (eval echo configure:13125: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__fmodl_use=yes else *************** fi *** 12520,12531 **** for ac_func in _fmodl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:12524: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:13152: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 13176,13182 ---- ; return 0; } EOF ! if { (eval echo configure:13180: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 12578,12584 **** echo $ac_n "checking for frexpl declaration""... $ac_c" 1>&6 ! echo "configure:12582: checking for frexpl declaration" >&5 if test x${glibcpp_cv_func_frexpl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_frexpl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 13206,13212 ---- echo $ac_n "checking for frexpl declaration""... $ac_c" 1>&6 ! echo "configure:13210: checking for frexpl declaration" >&5 if test x${glibcpp_cv_func_frexpl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_frexpl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 12593,12606 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { frexpl(0, 0); ; return 0; } EOF ! if { (eval echo configure:12604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_frexpl_use=yes else --- 13221,13234 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { frexpl(0, 0); ; return 0; } EOF ! if { (eval echo configure:13232: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_frexpl_use=yes else *************** fi *** 12627,12638 **** for ac_func in frexpl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:12631: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:13259: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 13283,13289 ---- ; return 0; } EOF ! if { (eval echo configure:13287: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 12682,12688 **** else echo $ac_n "checking for _frexpl declaration""... $ac_c" 1>&6 ! echo "configure:12686: checking for _frexpl declaration" >&5 if test x${glibcpp_cv_func__frexpl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__frexpl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 13310,13316 ---- else echo $ac_n "checking for _frexpl declaration""... $ac_c" 1>&6 ! echo "configure:13314: checking for _frexpl declaration" >&5 if test x${glibcpp_cv_func__frexpl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__frexpl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 12697,12710 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _frexpl(0, 0); ; return 0; } EOF ! if { (eval echo configure:12708: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__frexpl_use=yes else --- 13325,13338 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _frexpl(0, 0); ; return 0; } EOF ! if { (eval echo configure:13336: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__frexpl_use=yes else *************** fi *** 12731,12742 **** for ac_func in _frexpl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:12735: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:13363: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 13387,13604 ---- ; return 0; } EOF ! if { (eval echo configure:13391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" ! fi ! rm -f conftest* ! fi ! ! if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then ! echo "$ac_t""yes" 1>&6 ! ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` ! cat >> confdefs.h <&6 ! fi ! done ! ! fi ! fi ! ! ! ! echo $ac_n "checking for hypotl declaration""... $ac_c" 1>&6 ! echo "configure:13421: checking for hypotl declaration" >&5 ! if test x${glibcpp_cv_func_hypotl_use+set} != xset; then ! if eval "test \"`echo '$''{'glibcpp_cv_func_hypotl_use'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! ! ! ac_ext=C ! # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CXXCPP $CPPFLAGS' ! ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cxx_cross ! ! cat > conftest.$ac_ext < ! int main() { ! hypotl(0, 0); ! ; return 0; } ! EOF ! if { (eval echo configure:13443: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ! rm -rf conftest* ! glibcpp_cv_func_hypotl_use=yes ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! glibcpp_cv_func_hypotl_use=no ! fi ! rm -f conftest* ! ac_ext=c ! # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CPP $CPPFLAGS' ! ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cc_cross ! ! ! fi ! ! fi ! echo "$ac_t""$glibcpp_cv_func_hypotl_use" 1>&6 ! ! if test x$glibcpp_cv_func_hypotl_use = x"yes"; then ! for ac_func in hypotl ! do ! echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:13470: checking for $ac_func" >&5 ! if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext < ! /* Override any gcc2 internal prototype to avoid an error. */ ! /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char $ac_func(); ! ! int main() { ! ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); ! #endif ! ! ; return 0; } ! EOF ! if { (eval echo configure:13498: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" ! fi ! rm -f conftest* ! fi ! ! if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then ! echo "$ac_t""yes" 1>&6 ! ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` ! cat >> confdefs.h <&6 ! fi ! done ! ! else ! ! echo $ac_n "checking for _hypotl declaration""... $ac_c" 1>&6 ! echo "configure:13525: checking for _hypotl declaration" >&5 ! if test x${glibcpp_cv_func__hypotl_use+set} != xset; then ! if eval "test \"`echo '$''{'glibcpp_cv_func__hypotl_use'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! ! ! ac_ext=C ! # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CXXCPP $CPPFLAGS' ! ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cxx_cross ! ! cat > conftest.$ac_ext < ! int main() { ! _hypotl(0, 0); ! ; return 0; } ! EOF ! if { (eval echo configure:13547: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ! rm -rf conftest* ! glibcpp_cv_func__hypotl_use=yes ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! glibcpp_cv_func__hypotl_use=no ! fi ! rm -f conftest* ! ac_ext=c ! # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CPP $CPPFLAGS' ! ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cc_cross ! ! ! fi ! ! fi ! echo "$ac_t""$glibcpp_cv_func__hypotl_use" 1>&6 ! ! if test x$glibcpp_cv_func__hypotl_use = x"yes"; then ! for ac_func in _hypotl ! do ! echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:13574: checking for $ac_func" >&5 ! if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext < ! /* Override any gcc2 internal prototype to avoid an error. */ ! /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char $ac_func(); ! ! int main() { ! ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); ! #endif ! ! ; return 0; } ! EOF ! if { (eval echo configure:13602: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 12789,12795 **** echo $ac_n "checking for ldexpl declaration""... $ac_c" 1>&6 ! echo "configure:12793: checking for ldexpl declaration" >&5 if test x${glibcpp_cv_func_ldexpl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_ldexpl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 13628,13634 ---- echo $ac_n "checking for ldexpl declaration""... $ac_c" 1>&6 ! echo "configure:13632: checking for ldexpl declaration" >&5 if test x${glibcpp_cv_func_ldexpl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_ldexpl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 12804,12817 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { ldexpl(0, 0); ; return 0; } EOF ! if { (eval echo configure:12815: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_ldexpl_use=yes else --- 13643,13656 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { ldexpl(0, 0); ; return 0; } EOF ! if { (eval echo configure:13654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_ldexpl_use=yes else *************** fi *** 12838,12849 **** for ac_func in ldexpl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:12842: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:13681: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 13705,13711 ---- ; return 0; } EOF ! if { (eval echo configure:13709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 12893,12899 **** else echo $ac_n "checking for _ldexpl declaration""... $ac_c" 1>&6 ! echo "configure:12897: checking for _ldexpl declaration" >&5 if test x${glibcpp_cv_func__ldexpl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__ldexpl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 13732,13738 ---- else echo $ac_n "checking for _ldexpl declaration""... $ac_c" 1>&6 ! echo "configure:13736: checking for _ldexpl declaration" >&5 if test x${glibcpp_cv_func__ldexpl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__ldexpl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 12908,12921 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _ldexpl(0, 0); ; return 0; } EOF ! if { (eval echo configure:12919: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__ldexpl_use=yes else --- 13747,13760 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _ldexpl(0, 0); ; return 0; } EOF ! if { (eval echo configure:13758: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__ldexpl_use=yes else *************** fi *** 12942,12953 **** for ac_func in _ldexpl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:12946: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:13785: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 13809,13815 ---- ; return 0; } EOF ! if { (eval echo configure:13813: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 13000,13006 **** echo $ac_n "checking for logl declaration""... $ac_c" 1>&6 ! echo "configure:13004: checking for logl declaration" >&5 if test x${glibcpp_cv_func_logl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_logl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 13839,13845 ---- echo $ac_n "checking for logl declaration""... $ac_c" 1>&6 ! echo "configure:13843: checking for logl declaration" >&5 if test x${glibcpp_cv_func_logl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_logl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 13015,13021 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 13854,13860 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 13026,13032 **** logl(0); ; return 0; } EOF ! if { (eval echo configure:13030: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_logl_use=yes else --- 13865,13871 ---- logl(0); ; return 0; } EOF ! if { (eval echo configure:13869: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_logl_use=yes else *************** fi *** 13053,13064 **** for ac_func in logl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:13057: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:13896: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 13920,13926 ---- ; return 0; } EOF ! if { (eval echo configure:13924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 13108,13114 **** else echo $ac_n "checking for _logl declaration""... $ac_c" 1>&6 ! echo "configure:13112: checking for _logl declaration" >&5 if test x${glibcpp_cv_func__logl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__logl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 13947,13953 ---- else echo $ac_n "checking for _logl declaration""... $ac_c" 1>&6 ! echo "configure:13951: checking for _logl declaration" >&5 if test x${glibcpp_cv_func__logl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__logl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 13123,13129 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 13962,13968 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 13134,13140 **** _logl(0); ; return 0; } EOF ! if { (eval echo configure:13138: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__logl_use=yes else --- 13973,13979 ---- _logl(0); ; return 0; } EOF ! if { (eval echo configure:13977: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__logl_use=yes else *************** fi *** 13161,13172 **** for ac_func in _logl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:13165: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:14004: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 14028,14034 ---- ; return 0; } EOF ! if { (eval echo configure:14032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 13219,13225 **** echo $ac_n "checking for log10l declaration""... $ac_c" 1>&6 ! echo "configure:13223: checking for log10l declaration" >&5 if test x${glibcpp_cv_func_log10l_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_log10l_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 14058,14064 ---- echo $ac_n "checking for log10l declaration""... $ac_c" 1>&6 ! echo "configure:14062: checking for log10l declaration" >&5 if test x${glibcpp_cv_func_log10l_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_log10l_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 13234,13240 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 14073,14079 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 13245,13251 **** log10l(0); ; return 0; } EOF ! if { (eval echo configure:13249: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_log10l_use=yes else --- 14084,14090 ---- log10l(0); ; return 0; } EOF ! if { (eval echo configure:14088: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_log10l_use=yes else *************** fi *** 13272,13283 **** for ac_func in log10l do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:13276: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:14115: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 14139,14145 ---- ; return 0; } EOF ! if { (eval echo configure:14143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 13327,13333 **** else echo $ac_n "checking for _log10l declaration""... $ac_c" 1>&6 ! echo "configure:13331: checking for _log10l declaration" >&5 if test x${glibcpp_cv_func__log10l_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__log10l_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 14166,14172 ---- else echo $ac_n "checking for _log10l declaration""... $ac_c" 1>&6 ! echo "configure:14170: checking for _log10l declaration" >&5 if test x${glibcpp_cv_func__log10l_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__log10l_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 13342,13348 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 14181,14187 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 13353,13359 **** _log10l(0); ; return 0; } EOF ! if { (eval echo configure:13357: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__log10l_use=yes else --- 14192,14198 ---- _log10l(0); ; return 0; } EOF ! if { (eval echo configure:14196: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__log10l_use=yes else *************** fi *** 13380,13391 **** for ac_func in _log10l do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:13384: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:14223: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 14247,14253 ---- ; return 0; } EOF ! if { (eval echo configure:14251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 13438,13444 **** echo $ac_n "checking for modfl declaration""... $ac_c" 1>&6 ! echo "configure:13442: checking for modfl declaration" >&5 if test x${glibcpp_cv_func_modfl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_modfl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 14277,14283 ---- echo $ac_n "checking for modfl declaration""... $ac_c" 1>&6 ! echo "configure:14281: checking for modfl declaration" >&5 if test x${glibcpp_cv_func_modfl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_modfl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 13453,13466 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { modfl(0, 0); ; return 0; } EOF ! if { (eval echo configure:13464: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_modfl_use=yes else --- 14292,14305 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { modfl(0, 0); ; return 0; } EOF ! if { (eval echo configure:14303: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_modfl_use=yes else *************** fi *** 13487,13498 **** for ac_func in modfl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:13491: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:14330: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 14354,14360 ---- ; return 0; } EOF ! if { (eval echo configure:14358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 13542,13548 **** else echo $ac_n "checking for _modfl declaration""... $ac_c" 1>&6 ! echo "configure:13546: checking for _modfl declaration" >&5 if test x${glibcpp_cv_func__modfl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__modfl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 14381,14387 ---- else echo $ac_n "checking for _modfl declaration""... $ac_c" 1>&6 ! echo "configure:14385: checking for _modfl declaration" >&5 if test x${glibcpp_cv_func__modfl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__modfl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 13557,13570 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _modfl(0, 0); ; return 0; } EOF ! if { (eval echo configure:13568: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__modfl_use=yes else --- 14396,14409 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _modfl(0, 0); ; return 0; } EOF ! if { (eval echo configure:14407: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__modfl_use=yes else *************** fi *** 13591,13602 **** for ac_func in _modfl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:13595: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:14434: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 14458,14464 ---- ; return 0; } EOF ! if { (eval echo configure:14462: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 13649,13655 **** echo $ac_n "checking for powl declaration""... $ac_c" 1>&6 ! echo "configure:13653: checking for powl declaration" >&5 if test x${glibcpp_cv_func_powl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_powl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 14488,14494 ---- echo $ac_n "checking for powl declaration""... $ac_c" 1>&6 ! echo "configure:14492: checking for powl declaration" >&5 if test x${glibcpp_cv_func_powl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_powl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 13664,13677 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { powl(0, 0); ; return 0; } EOF ! if { (eval echo configure:13675: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_powl_use=yes else --- 14503,14516 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { powl(0, 0); ; return 0; } EOF ! if { (eval echo configure:14514: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_powl_use=yes else *************** fi *** 13698,13709 **** for ac_func in powl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:13702: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:14541: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 14565,14571 ---- ; return 0; } EOF ! if { (eval echo configure:14569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 13753,13759 **** else echo $ac_n "checking for _powl declaration""... $ac_c" 1>&6 ! echo "configure:13757: checking for _powl declaration" >&5 if test x${glibcpp_cv_func__powl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__powl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 14592,14598 ---- else echo $ac_n "checking for _powl declaration""... $ac_c" 1>&6 ! echo "configure:14596: checking for _powl declaration" >&5 if test x${glibcpp_cv_func__powl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__powl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 13768,13781 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _powl(0, 0); ; return 0; } EOF ! if { (eval echo configure:13779: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__powl_use=yes else --- 14607,14620 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _powl(0, 0); ; return 0; } EOF ! if { (eval echo configure:14618: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__powl_use=yes else *************** fi *** 13802,13813 **** for ac_func in _powl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:13806: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:14645: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 14669,14675 ---- ; return 0; } EOF ! if { (eval echo configure:14673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 13860,13866 **** echo $ac_n "checking for sqrtl declaration""... $ac_c" 1>&6 ! echo "configure:13864: checking for sqrtl declaration" >&5 if test x${glibcpp_cv_func_sqrtl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_sqrtl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 14699,14705 ---- echo $ac_n "checking for sqrtl declaration""... $ac_c" 1>&6 ! echo "configure:14703: checking for sqrtl declaration" >&5 if test x${glibcpp_cv_func_sqrtl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_sqrtl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 13875,13881 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 14714,14720 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 13886,13892 **** sqrtl(0); ; return 0; } EOF ! if { (eval echo configure:13890: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_sqrtl_use=yes else --- 14725,14731 ---- sqrtl(0); ; return 0; } EOF ! if { (eval echo configure:14729: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_sqrtl_use=yes else *************** fi *** 13913,13924 **** for ac_func in sqrtl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:13917: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:14756: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 14780,14786 ---- ; return 0; } EOF ! if { (eval echo configure:14784: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 13968,13974 **** else echo $ac_n "checking for _sqrtl declaration""... $ac_c" 1>&6 ! echo "configure:13972: checking for _sqrtl declaration" >&5 if test x${glibcpp_cv_func__sqrtl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__sqrtl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 14807,14813 ---- else echo $ac_n "checking for _sqrtl declaration""... $ac_c" 1>&6 ! echo "configure:14811: checking for _sqrtl declaration" >&5 if test x${glibcpp_cv_func__sqrtl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__sqrtl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 13983,13989 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 14822,14828 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 13994,14000 **** _sqrtl(0); ; return 0; } EOF ! if { (eval echo configure:13998: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__sqrtl_use=yes else --- 14833,14839 ---- _sqrtl(0); ; return 0; } EOF ! if { (eval echo configure:14837: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__sqrtl_use=yes else *************** fi *** 14021,14032 **** for ac_func in _sqrtl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:14025: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:14864: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 14888,14894 ---- ; return 0; } EOF ! if { (eval echo configure:14892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 14079,14085 **** echo $ac_n "checking for sincosl declaration""... $ac_c" 1>&6 ! echo "configure:14083: checking for sincosl declaration" >&5 if test x${glibcpp_cv_func_sincosl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_sincosl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 14918,14924 ---- echo $ac_n "checking for sincosl declaration""... $ac_c" 1>&6 ! echo "configure:14922: checking for sincosl declaration" >&5 if test x${glibcpp_cv_func_sincosl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_sincosl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 14094,14107 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { sincosl(0, 0, 0); ; return 0; } EOF ! if { (eval echo configure:14105: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_sincosl_use=yes else --- 14933,14946 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { sincosl(0, 0, 0); ; return 0; } EOF ! if { (eval echo configure:14944: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_sincosl_use=yes else *************** fi *** 14128,14139 **** for ac_func in sincosl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:14132: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:14971: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 14995,15001 ---- ; return 0; } EOF ! if { (eval echo configure:14999: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 14183,14189 **** else echo $ac_n "checking for _sincosl declaration""... $ac_c" 1>&6 ! echo "configure:14187: checking for _sincosl declaration" >&5 if test x${glibcpp_cv_func__sincosl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__sincosl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 15022,15028 ---- else echo $ac_n "checking for _sincosl declaration""... $ac_c" 1>&6 ! echo "configure:15026: checking for _sincosl declaration" >&5 if test x${glibcpp_cv_func__sincosl_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__sincosl_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 14198,14211 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _sincosl(0, 0, 0); ; return 0; } EOF ! if { (eval echo configure:14209: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__sincosl_use=yes else --- 15037,15050 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { _sincosl(0, 0, 0); ; return 0; } EOF ! if { (eval echo configure:15048: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__sincosl_use=yes else *************** fi *** 14232,14243 **** for ac_func in _sincosl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:14236: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:15075: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 15099,15105 ---- ; return 0; } EOF ! if { (eval echo configure:15103: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 14290,14296 **** echo $ac_n "checking for finitel declaration""... $ac_c" 1>&6 ! echo "configure:14294: checking for finitel declaration" >&5 if test x${glibcpp_cv_func_finitel_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_finitel_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 15129,15135 ---- echo $ac_n "checking for finitel declaration""... $ac_c" 1>&6 ! echo "configure:15133: checking for finitel declaration" >&5 if test x${glibcpp_cv_func_finitel_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_finitel_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 14305,14311 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 15144,15150 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 14316,14322 **** finitel(0); ; return 0; } EOF ! if { (eval echo configure:14320: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_finitel_use=yes else --- 15155,15161 ---- finitel(0); ; return 0; } EOF ! if { (eval echo configure:15159: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_finitel_use=yes else *************** fi *** 14343,14354 **** for ac_func in finitel do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:14347: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:15186: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 15210,15216 ---- ; return 0; } EOF ! if { (eval echo configure:15214: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 14398,14404 **** else echo $ac_n "checking for _finitel declaration""... $ac_c" 1>&6 ! echo "configure:14402: checking for _finitel declaration" >&5 if test x${glibcpp_cv_func__finitel_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__finitel_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 15237,15243 ---- else echo $ac_n "checking for _finitel declaration""... $ac_c" 1>&6 ! echo "configure:15241: checking for _finitel declaration" >&5 if test x${glibcpp_cv_func__finitel_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func__finitel_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 14413,14419 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H --- 15252,15258 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #ifdef HAVE_IEEEFP_H *************** int main() { *** 14424,14430 **** _finitel(0); ; return 0; } EOF ! if { (eval echo configure:14428: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__finitel_use=yes else --- 15263,15269 ---- _finitel(0); ; return 0; } EOF ! if { (eval echo configure:15267: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__finitel_use=yes else *************** fi *** 14451,14462 **** for ac_func in _finitel do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:14455: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:15294: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 15318,15324 ---- ; return 0; } EOF ! if { (eval echo configure:15322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 14510,14516 **** echo $ac_n "checking for _float trig functions""... $ac_c" 1>&6 ! echo "configure:14514: checking for _float trig functions" >&5 if eval "test \"`echo '$''{'glibcpp_cv_func__float_trig_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 15349,15355 ---- echo $ac_n "checking for _float trig functions""... $ac_c" 1>&6 ! echo "configure:15353: checking for _float trig functions" >&5 if eval "test \"`echo '$''{'glibcpp_cv_func__float_trig_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 14524,14530 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { --- 15363,15369 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { *************** int main() { *** 14533,14539 **** _coshf _sinhf _tanhf; do echo "$x (0);"; done` ; return 0; } EOF ! if { (eval echo configure:14537: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__float_trig_use=yes else --- 15372,15378 ---- _coshf _sinhf _tanhf; do echo "$x (0);"; done` ; return 0; } EOF ! if { (eval echo configure:15376: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__float_trig_use=yes else *************** fi *** 14559,14570 **** _coshf _sinhf _tanhf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:14563: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:15402: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 15426,15432 ---- ; return 0; } EOF ! if { (eval echo configure:15430: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 14615,14621 **** echo $ac_n "checking for _float round functions""... $ac_c" 1>&6 ! echo "configure:14619: checking for _float round functions" >&5 if eval "test \"`echo '$''{'glibcpp_cv_func__float_round_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 15454,15460 ---- echo $ac_n "checking for _float round functions""... $ac_c" 1>&6 ! echo "configure:15458: checking for _float round functions" >&5 if eval "test \"`echo '$''{'glibcpp_cv_func__float_round_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 14629,14642 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { `for x in _ceilf _floorf; do echo "$x (0);"; done` ; return 0; } EOF ! if { (eval echo configure:14640: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__float_round_use=yes else --- 15468,15481 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { `for x in _ceilf _floorf; do echo "$x (0);"; done` ; return 0; } EOF ! if { (eval echo configure:15479: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__float_round_use=yes else *************** fi *** 14660,14671 **** for ac_func in _ceilf _floorf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:14664: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:15503: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 15527,15533 ---- ; return 0; } EOF ! if { (eval echo configure:15531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 14717,14723 **** echo $ac_n "checking for _long double trig functions""... $ac_c" 1>&6 ! echo "configure:14721: checking for _long double trig functions" >&5 if eval "test \"`echo '$''{'glibcpp_cv_func__long_double_trig_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 15556,15562 ---- echo $ac_n "checking for _long double trig functions""... $ac_c" 1>&6 ! echo "configure:15560: checking for _long double trig functions" >&5 if eval "test \"`echo '$''{'glibcpp_cv_func__long_double_trig_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 14731,14737 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { --- 15570,15576 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { *************** int main() { *** 14740,14746 **** _coshl _sinhl _tanhl; do echo "$x (0);"; done` ; return 0; } EOF ! if { (eval echo configure:14744: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__long_double_trig_use=yes else --- 15579,15585 ---- _coshl _sinhl _tanhl; do echo "$x (0);"; done` ; return 0; } EOF ! if { (eval echo configure:15583: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__long_double_trig_use=yes else *************** fi *** 14766,14777 **** _coshl _sinhl _tanhl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:14770: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:15609: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 15633,15639 ---- ; return 0; } EOF ! if { (eval echo configure:15637: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 14822,14828 **** echo $ac_n "checking for _long double round functions""... $ac_c" 1>&6 ! echo "configure:14826: checking for _long double round functions" >&5 if eval "test \"`echo '$''{'glibcpp_cv_func__long_double_round_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 15661,15667 ---- echo $ac_n "checking for _long double round functions""... $ac_c" 1>&6 ! echo "configure:15665: checking for _long double round functions" >&5 if eval "test \"`echo '$''{'glibcpp_cv_func__long_double_round_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 14836,14849 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { `for x in _ceill _floorl; do echo "$x (0);"; done` ; return 0; } EOF ! if { (eval echo configure:14847: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__long_double_round_use=yes else --- 15675,15688 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { `for x in _ceill _floorl; do echo "$x (0);"; done` ; return 0; } EOF ! if { (eval echo configure:15686: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func__long_double_round_use=yes else *************** fi *** 14867,14878 **** for ac_func in _ceill _floorl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:14871: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:15710: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 15734,15740 ---- ; return 0; } EOF ! if { (eval echo configure:15738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 14927,14933 **** echo $ac_n "checking for main in -lm""... $ac_c" 1>&6 ! echo "configure:14931: checking for main in -lm" >&5 ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 15766,15772 ---- echo $ac_n "checking for main in -lm""... $ac_c" 1>&6 ! echo "configure:15770: checking for main in -lm" >&5 ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 14935,14948 **** ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 15774,15787 ---- ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** else *** 14969,14983 **** echo "$ac_t""no" 1>&6 fi ! for ac_func in nan hypot hypotf atan2f expf copysignf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:14976: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 fi ! for ac_func in nan copysignf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:15815: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 15839,15845 ---- ; return 0; } EOF ! if { (eval echo configure:15843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 15028,15045 **** USE_COMPLEX_LONG_DOUBLE=no ! if test x$ac_cv_func_atan2l = x"yes" \ ! && test x$ac_cv_func_copysignl = x"yes"; then USE_COMPLEX_LONG_DOUBLE=yes ! for ac_func in hypotl signbitl do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:15038: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:15876: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 15900,15906 ---- ; return 0; } EOF ! if { (eval echo configure:15904: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 15095,15110 **** echo $ac_n "checking for mbstate_t""... $ac_c" 1>&6 ! echo "configure:15099: checking for mbstate_t" >&5 cat > conftest.$ac_ext < int main() { mbstate_t teststate; ; return 0; } EOF ! if { (eval echo configure:15108: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* have_mbstate_t=yes else --- 15933,15948 ---- echo $ac_n "checking for mbstate_t""... $ac_c" 1>&6 ! echo "configure:15937: checking for mbstate_t" >&5 cat > conftest.$ac_ext < int main() { mbstate_t teststate; ; return 0; } EOF ! if { (eval echo configure:15946: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* have_mbstate_t=yes else *************** EOF *** 15126,15142 **** do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:15130: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:15140: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 15964,15980 ---- do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:15968: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:15978: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** done *** 15165,15181 **** ac_safe=`echo "wctype.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for wctype.h""... $ac_c" 1>&6 ! echo "configure:15169: checking for wctype.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:15179: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 16003,16019 ---- ac_safe=`echo "wctype.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for wctype.h""... $ac_c" 1>&6 ! echo "configure:16007: checking for wctype.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:16017: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** fi *** 15202,15217 **** && test x"$enable_c_mbchar" != xno; then echo $ac_n "checking for WCHAR_MIN and WCHAR_MAX""... $ac_c" 1>&6 ! echo "configure:15206: checking for WCHAR_MIN and WCHAR_MAX" >&5 cat > conftest.$ac_ext < int main() { int i = WCHAR_MIN; int j = WCHAR_MAX; ; return 0; } EOF ! if { (eval echo configure:15215: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* has_wchar_minmax=yes else --- 16040,16055 ---- && test x"$enable_c_mbchar" != xno; then echo $ac_n "checking for WCHAR_MIN and WCHAR_MAX""... $ac_c" 1>&6 ! echo "configure:16044: checking for WCHAR_MIN and WCHAR_MAX" >&5 cat > conftest.$ac_ext < int main() { int i = WCHAR_MIN; int j = WCHAR_MAX; ; return 0; } EOF ! if { (eval echo configure:16053: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* has_wchar_minmax=yes else *************** rm -f conftest* *** 15224,15232 **** echo "$ac_t""$has_wchar_minmax" 1>&6 echo $ac_n "checking for WEOF""... $ac_c" 1>&6 ! echo "configure:15228: checking for WEOF" >&5 cat > conftest.$ac_ext < --- 16062,16070 ---- echo "$ac_t""$has_wchar_minmax" 1>&6 echo $ac_n "checking for WEOF""... $ac_c" 1>&6 ! echo "configure:16066: checking for WEOF" >&5 cat > conftest.$ac_ext < *************** int main() { *** 15235,15241 **** wint_t i = WEOF; ; return 0; } EOF ! if { (eval echo configure:15239: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* has_weof=yes else --- 16073,16079 ---- wint_t i = WEOF; ; return 0; } EOF ! if { (eval echo configure:16077: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* has_weof=yes else *************** rm -f conftest* *** 15251,15262 **** for ac_func in wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:15255: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:16093: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 16117,16123 ---- ; return 0; } EOF ! if { (eval echo configure:16121: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 15314,15325 **** wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:15318: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:16156: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 16180,16186 ---- ; return 0; } EOF ! if { (eval echo configure:16184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 15370,15376 **** echo $ac_n "checking for ISO C99 wchar_t support""... $ac_c" 1>&6 ! echo "configure:15374: checking for ISO C99 wchar_t support" >&5 if test x"$has_weof" = xyes && test x"$has_wchar_minmax" = xyes \ && test x"$ac_wfuncs" = xyes; then ac_isoC99_wchar_t=yes --- 16208,16214 ---- echo $ac_n "checking for ISO C99 wchar_t support""... $ac_c" 1>&6 ! echo "configure:16212: checking for ISO C99 wchar_t support" >&5 if test x"$has_weof" = xyes && test x"$has_wchar_minmax" = xyes \ && test x"$ac_wfuncs" = xyes; then ac_isoC99_wchar_t=yes *************** echo "configure:15374: checking for ISO *** 15381,15397 **** ac_safe=`echo "iconv.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for iconv.h""... $ac_c" 1>&6 ! echo "configure:15385: checking for iconv.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:15395: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 16219,16235 ---- ac_safe=`echo "iconv.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for iconv.h""... $ac_c" 1>&6 ! echo "configure:16223: checking for iconv.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:16233: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** fi *** 15415,15431 **** ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 ! echo "configure:15419: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:15429: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 16253,16269 ---- ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 ! echo "configure:16257: checking for langinfo.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:16267: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** fi *** 15449,15455 **** echo $ac_n "checking for iconv in -liconv""... $ac_c" 1>&6 ! echo "configure:15453: checking for iconv in -liconv" >&5 ac_lib_var=`echo iconv'_'iconv | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 16287,16293 ---- echo $ac_n "checking for iconv in -liconv""... $ac_c" 1>&6 ! echo "configure:16291: checking for iconv in -liconv" >&5 ac_lib_var=`echo iconv'_'iconv | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 15457,15463 **** ac_save_LIBS="$LIBS" LIBS="-liconv $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 16306,16312 ---- iconv() ; return 0; } EOF ! if { (eval echo configure:16310: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** fi *** 15494,15505 **** for ac_func in iconv_open iconv_close iconv nl_langinfo do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:15498: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:16336: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 16360,16366 ---- ; return 0; } EOF ! if { (eval echo configure:16364: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 15552,15558 **** LIBS="$ac_save_LIBS" echo $ac_n "checking for XPG2 wchar_t support""... $ac_c" 1>&6 ! echo "configure:15556: checking for XPG2 wchar_t support" >&5 if test x"$ac_has_iconv_h" = xyes && test x"$ac_has_langinfo_h" = xyes \ && test x"$ac_XPG2funcs" = xyes; then ac_XPG2_wchar_t=yes --- 16390,16396 ---- LIBS="$ac_save_LIBS" echo $ac_n "checking for XPG2 wchar_t support""... $ac_c" 1>&6 ! echo "configure:16394: checking for XPG2 wchar_t support" >&5 if test x"$ac_has_iconv_h" = xyes && test x"$ac_has_langinfo_h" = xyes \ && test x"$ac_XPG2funcs" = xyes; then ac_XPG2_wchar_t=yes *************** echo "configure:15556: checking for XPG2 *** 15562,15568 **** echo "$ac_t""$ac_XPG2_wchar_t" 1>&6 echo $ac_n "checking for enabled wchar_t specializations""... $ac_c" 1>&6 ! echo "configure:15566: checking for enabled wchar_t specializations" >&5 if test x"$ac_isoC99_wchar_t" = xyes \ && test x"$ac_XPG2_wchar_t" = xyes; then cat >> confdefs.h <<\EOF --- 16400,16406 ---- echo "$ac_t""$ac_XPG2_wchar_t" 1>&6 echo $ac_n "checking for enabled wchar_t specializations""... $ac_c" 1>&6 ! echo "configure:16404: checking for enabled wchar_t specializations" >&5 if test x"$ac_isoC99_wchar_t" = xyes \ && test x"$ac_XPG2_wchar_t" = xyes; then cat >> confdefs.h <<\EOF *************** EOF *** 15584,15590 **** echo $ac_n "checking for strtold declaration""... $ac_c" 1>&6 ! echo "configure:15588: checking for strtold declaration" >&5 if test x${glibcpp_cv_func_strtold_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_strtold_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 16422,16428 ---- echo $ac_n "checking for strtold declaration""... $ac_c" 1>&6 ! echo "configure:16426: checking for strtold declaration" >&5 if test x${glibcpp_cv_func_strtold_use+set} != xset; then if eval "test \"`echo '$''{'glibcpp_cv_func_strtold_use'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** ac_link='${CXX-g++} -o conftest${ac_exee *** 15599,15612 **** cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { strtold(0, 0); ; return 0; } EOF ! if { (eval echo configure:15610: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_strtold_use=yes else --- 16437,16450 ---- cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { strtold(0, 0); ; return 0; } EOF ! if { (eval echo configure:16448: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_cv_func_strtold_use=yes else *************** fi *** 15632,15643 **** for ac_func in strtold do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:15636: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:16474: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 16498,16504 ---- ; return 0; } EOF ! if { (eval echo configure:16502: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 15689,15700 **** for ac_func in drand48 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:15693: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:16531: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 16555,16561 ---- ; return 0; } EOF ! if { (eval echo configure:16559: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 15746,15752 **** cat > conftest.$ac_ext < --- 16584,16590 ---- cat > conftest.$ac_ext < *************** int main() { *** 15755,15761 **** sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1); ; return 0; } EOF ! if { (eval echo configure:15759: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define HAVE_SIGSETJMP 1 --- 16593,16599 ---- sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1); ; return 0; } EOF ! if { (eval echo configure:16597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define HAVE_SIGSETJMP 1 *************** rm -f conftest* *** 15771,15787 **** do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:15775: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:15785: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 16609,16625 ---- do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:16613: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:16623: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** done *** 15810,15821 **** for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:15814: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:16652: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 16676,16682 ---- ; return 0; } EOF ! if { (eval echo configure:16680: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** fi *** 15863,15869 **** done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 ! echo "configure:15867: checking for working mmap" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 16701,16707 ---- done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 ! echo "configure:16705: checking for working mmap" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 15871,15877 **** ac_cv_func_mmap_fixed_mapped=no else cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_fixed_mapped=yes else --- 16849,16855 ---- } EOF ! if { (eval echo configure:16853: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_fixed_mapped=yes else *************** fi *** 16035,16064 **** fi ! # Now that ctype is determined for all possible targets, we can do this... ! ! ! ! - if test "$NULL_TARGET" = yes; then - NULL_TARGET_TRUE= - NULL_TARGET_FALSE='#' - else - NULL_TARGET_TRUE='#' - NULL_TARGET_FALSE= - fi - if test "$NATIVE" = yes || test "$NULL_TARGET" = yes; then - NATIVE_TRUE= - NATIVE_FALSE='#' - else - NATIVE_TRUE='#' - NATIVE_FALSE= - fi if test "$CANADIAN" = yes; then --- 16873,16888 ---- fi ! # Propagate the target-specific source directories through the build chain. ! OS_INC_SRCDIR=$os_include_dir/bits ! ATOMICITY_INC_SRCDIR=$ATOMICITYH/bits ! LIMITS_INC_SRCDIR=$LIMITSH/bits + # Set up cross-compile flags if test "$CANADIAN" = yes; then *************** rm -f confcache *** 16119,16135 **** ac_safe=`echo "locale.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for locale.h""... $ac_c" 1>&6 ! echo "configure:16123: checking for locale.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:16133: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 16943,16959 ---- ac_safe=`echo "locale.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for locale.h""... $ac_c" 1>&6 ! echo "configure:16947: checking for locale.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:16957: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** if eval "test \"`echo '$ac_cv_header_'$a *** 16147,16165 **** echo "$ac_t""yes" 1>&6 echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 ! echo "configure:16151: checking for LC_MESSAGES" >&5 if eval "test \"`echo '$''{'ac_cv_val_LC_MESSAGES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return LC_MESSAGES ; return 0; } EOF ! if { (eval echo configure:16163: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_val_LC_MESSAGES=yes else --- 16971,16989 ---- echo "$ac_t""yes" 1>&6 echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 ! echo "configure:16975: checking for LC_MESSAGES" >&5 if eval "test \"`echo '$''{'ac_cv_val_LC_MESSAGES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return LC_MESSAGES ; return 0; } EOF ! if { (eval echo configure:16987: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_val_LC_MESSAGES=yes else *************** else *** 16191,16199 **** multilib_arg= fi - - # Generate the various Makefiles, include files, and scripts. - # Needed so that g++ can find the correct include subdir automatically. INTERFACE=v3 --- 17015,17020 ---- *************** esac *** 16215,16227 **** glibcpp_prefixdir=${prefix} echo $ac_n "checking for interface version number""... $ac_c" 1>&6 ! echo "configure:16219: checking for interface version number" >&5 libstdcxx_interface=$INTERFACE echo "$ac_t""$libstdcxx_interface" 1>&6 # Process the option --with-gxx-include-dir= echo $ac_n "checking for --with-gxx-include-dir""... $ac_c" 1>&6 ! echo "configure:16225: checking for --with-gxx-include-dir" >&5 # Check whether --with-gxx-include-dir or --without-gxx-include-dir was given. if test "${with_gxx_include_dir+set}" = set; then withval="$with_gxx_include_dir" --- 17036,17048 ---- glibcpp_prefixdir=${prefix} echo $ac_n "checking for interface version number""... $ac_c" 1>&6 ! echo "configure:17040: checking for interface version number" >&5 libstdcxx_interface=$INTERFACE echo "$ac_t""$libstdcxx_interface" 1>&6 # Process the option --with-gxx-include-dir= echo $ac_n "checking for --with-gxx-include-dir""... $ac_c" 1>&6 ! echo "configure:17046: checking for --with-gxx-include-dir" >&5 # Check whether --with-gxx-include-dir or --without-gxx-include-dir was given. if test "${with_gxx_include_dir+set}" = set; then withval="$with_gxx_include_dir" *************** echo "$ac_t""$gxx_include_dir" 1>&6 *** 16245,16251 **** # Process the option "--enable-version-specific-runtime-libs" echo $ac_n "checking for --enable-version-specific-runtime-libs""... $ac_c" 1>&6 ! echo "configure:16249: checking for --enable-version-specific-runtime-libs" >&5 # Check whether --enable-version-specific-runtime-libs or --disable-version-specific-runtime-libs was given. if test "${enable_version_specific_runtime_libs+set}" = set; then enableval="$enable_version_specific_runtime_libs" --- 17066,17072 ---- # Process the option "--enable-version-specific-runtime-libs" echo $ac_n "checking for --enable-version-specific-runtime-libs""... $ac_c" 1>&6 ! echo "configure:17070: checking for --enable-version-specific-runtime-libs" >&5 # Check whether --enable-version-specific-runtime-libs or --disable-version-specific-runtime-libs was given. if test "${enable_version_specific_runtime_libs+set}" = set; then enableval="$enable_version_specific_runtime_libs" *************** if test x"$glibcpp_toolexecdir" = x"no"; *** 16285,16291 **** fi echo $ac_n "checking for install location""... $ac_c" 1>&6 ! echo "configure:16289: checking for install location" >&5 echo "$ac_t""$gxx_include_dir" 1>&6 --- 17106,17112 ---- fi echo $ac_n "checking for install location""... $ac_c" 1>&6 ! echo "configure:17110: checking for install location" >&5 echo "$ac_t""$gxx_include_dir" 1>&6 *************** echo "$ac_t""$gxx_include_dir" 1>&6 *** 16298,16312 **** # Export all the include and flag information to makefiles. ! # Root level of the include sources. ! GLIBCPP_INCLUDE_DIR='$(top_srcdir)/include' - # Can either use include/c or include/c_std to grab "C" headers. This - # variable is set to the include directory currently in use. - # set with C_INCLUDE_DIR in GLIBCPP_ENABLE_CHEADERS - # Passed down for canadian crosses. ! if test x"$CANADIAN" = xyes; then TOPLEVEL_INCLUDES='-I$(includedir)' fi --- 17119,17129 ---- # Export all the include and flag information to makefiles. ! # Root level of the build directory include sources. ! GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include" # Passed down for canadian crosses. ! if test x"$CANADIAN" = xyes; then TOPLEVEL_INCLUDES='-I$(includedir)' fi *************** echo "$ac_t""$gxx_include_dir" 1>&6 *** 16314,16339 **** LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++' ! #if GLIBCPP_NEED_LIBIO ! LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio' ! #else ! #LIBIO_INCLUDES='-I$(top_srcdir)/libio' ! #endif ! ! #if GLIBCPP_USE_CSHADOW ! # CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR) \ ! # -I$(top_blddir)/cshadow' ! #else ! CSTD_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR)' ! #endif # Now, export this to all the little Makefiles.... - - # Optimization flags that are probably a good idea for thrill-seekers. Just --- 17131,17146 ---- LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++' ! if test x"$need_libio" = xyes; then ! LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio' ! ! fi # Now, export this to all the little Makefiles.... # Optimization flags that are probably a good idea for thrill-seekers. Just *************** else *** 16354,16367 **** fi ! # This should be done by mkincludedir, but hack around it now. ! blddir=`pwd` ! echo "checking for $blddir/include" ! ! if test ! -d "$blddir/include"; then ! mkdir "$blddir/include" ! fi ! # NB: Multilibs need MULTISUBDIR defined correctly in src/Makefile.am # and libsupc++/Makefile.am so that multilib installs will end up # installed in the correct place. To work around this not being passed --- 17161,17167 ---- fi ! # Generate the various Makefiles, include files, and scripts. # NB: Multilibs need MULTISUBDIR defined correctly in src/Makefile.am # and libsupc++/Makefile.am so that multilib installs will end up # installed in the correct place. To work around this not being passed *************** done *** 16468,16474 **** ac_given_srcdir=$srcdir ac_given_INSTALL="$INSTALL" ! trap 'rm -fr `echo "Makefile src/Makefile libmath/Makefile libio/Makefile libsupc++/Makefile testsuite/Makefile mkcheck testsuite_flags config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then --- 17434,17443 ---- cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then *************** fi; done *** 16796,16806 **** EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF --- 17606,17613 ---- EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF *************** done *** 16844,16850 **** EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h - d=include/bits - rm -f $d/gthr.h $d/gthr-single.h $d/gthr-default.h - sed '/^#/s/\([A-Z_][A-Z_]*\)/_GLIBCPP_\1/g' <$d/gthr.h-in >$d/gthr.h - sed 's/\(UNUSED\)/_GLIBCPP_\1/g' <$d/gthr-single.h-in \ - | sed 's/\(GCC[A-Z_]*_H\)/_GLIBCPP_\1/g' >$d/gthr-single.h - sed 's/\(UNUSED\)/_GLIBCPP_\1/g' <$d/gthr-default.h-in \ - | sed 's/\(GCC[A-Z_]*_H\)/_GLIBCPP_\1/g' \ - | sed 's/\([A-Z_]*WEAK\)/_GLIBCPP_\1/g' >$d/gthr-default.h if test -n "$CONFIG_FILES"; then ac_file=Makefile . ${glibcpp_basedir}/../config-ml.in grep '^MULTISUBDIR =' Makefile >> src/Makefile --- 17664,17669 ---- *************** chmod +x $CONFIG_STATUS *** 16880,16901 **** rm -fr confdefs* $ac_clean_files test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - - - # Generate bits/c++config.h - # NB: This must be the first generated file as others include it. . . - $srcdir/mkc++config $blddir $srcdir - - # Generate bits/std_limits.h and src/limitsMEMBERS.cc - if test ! -f stamp-limits; then - $srcdir/mknumeric_limits $blddir $srcdir $xcompiling - if test ! -f include/bits/std_limits.h; then - echo "mknumeric_limits failed to execute properly: exiting" - exit 1 - else - touch stamp-limits - fi - fi # Sanity checking & User-visible messages. --- 17678,17683 ---- diff -Nrc3pad gcc-3.0/libstdc++-v3/configure.in gcc-3.0.1/libstdc++-v3/configure.in *** gcc-3.0/libstdc++-v3/configure.in Thu Jun 14 01:47:35 2001 --- gcc-3.0.1/libstdc++-v3/configure.in Mon Aug 13 15:22:25 2001 *************** AC_CANONICAL_SYSTEM *** 36,41 **** --- 36,45 ---- target_alias=${target_alias-$target} AC_SUBST(target_alias) + # Will set LN_S to either 'ln -s' or 'ln'. With autoconf 2.50+, can also + # be 'cp -p' if linking isn't available. + AC_PROG_LN_S + # We use these options to decide which functions to include. AC_ARG_WITH(target-subdir, [ --with-target-subdir=SUBDIR *************** AC_SUBST(enable_shared) *** 53,60 **** AC_SUBST(enable_static) GLIBCPP_CHECK_GNU_MAKE - - AM_CONFIG_HEADER(config.h) # Check for c++ or library specific bits that don't require linking. --- 57,62 ---- *************** GLIBCPP_ENABLE_THREADS *** 72,93 **** GLIBCPP_ENABLE_CXX_FLAGS([none]) GLIBCPP_ENABLE_SJLJ_EXCEPTIONS ! if test -n "$with_cross_host"; then ! # We are being configured with a cross compiler. AC_REPLACE_FUNCS ! # may not work correctly, because the compiler may not be able to ! # link executables. ! xcompiling=1 ! NATIVE=no # If Canadian cross, then don't pick up tools from the build # directory. ! if test x"$build" != x"$with_cross_host" && x"$build" != x"$target"; then CANADIAN=yes - NULL_TARGET=yes else CANADIAN=no - NULL_TARGET=no fi case "$target_alias" in --- 74,94 ---- GLIBCPP_ENABLE_CXX_FLAGS([none]) GLIBCPP_ENABLE_SJLJ_EXCEPTIONS ! if test -n "$with_cross_host" || test x"$build" != x"$host"; then ! # We are being configured with some form of cross compiler. ! # mknumeric_limits may not work correctly, either because the ! # compiler may not run on this machine, may not be able to link ! # executables, or may produce executables we can't run on this ! # machine. ! GLIBCPP_IS_CROSS_COMPILING=1 # If Canadian cross, then don't pick up tools from the build # directory. ! if test -n "$with_cross_host" && test x"$build" != x"$with_cross_host"; then CANADIAN=yes else CANADIAN=no fi case "$target_alias" in *************** else *** 197,206 **** # We are being configured natively. We can do more elaborate tests # that include AC_TRY_COMPILE now, as the linker is assumed to be # working. ! xcompiling=0 ! NATIVE=yes CANADIAN=no - NULL_TARGET=no # Check for available headers. AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h machine/endian.h \ --- 198,205 ---- # We are being configured natively. We can do more elaborate tests # that include AC_TRY_COMPILE now, as the linker is assumed to be # working. ! GLIBCPP_IS_CROSS_COMPILING=0 CANADIAN=no # Check for available headers. AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h machine/endian.h \ *************** else *** 222,238 **** AC_FUNC_MMAP fi ! # Now that ctype is determined for all possible targets, we can do this... ! AC_LINK_FILES($os_include_dir/bits/ctype_base.h, \ ! include/bits/ctype_base.h) ! AC_LINK_FILES($os_include_dir/bits/ctype_inline.h, \ ! include/bits/ctype_inline.h) ! AC_LINK_FILES($os_include_dir/bits/ctype_noninline.h, \ ! include/bits/ctype_noninline.h) ! AC_LINK_FILES($ATOMICITYH/bits/atomicity.h, include/bits/atomicity.h) ! AM_CONDITIONAL(NULL_TARGET, test "$NULL_TARGET" = yes) ! AM_CONDITIONAL(NATIVE, test "$NATIVE" = yes || test "$NULL_TARGET" = yes) AM_CONDITIONAL(CANADIAN, test "$CANADIAN" = yes) AC_CACHE_SAVE --- 221,236 ---- AC_FUNC_MMAP fi ! # Propagate the target-specific source directories through the build chain. ! OS_INC_SRCDIR=$os_include_dir/bits ! ATOMICITY_INC_SRCDIR=$ATOMICITYH/bits ! LIMITS_INC_SRCDIR=$LIMITSH/bits ! AC_SUBST(OS_INC_SRCDIR) ! AC_SUBST(ATOMICITY_INC_SRCDIR) ! AC_SUBST(LIMITS_INC_SRCDIR) ! # Set up cross-compile flags ! AC_SUBST(GLIBCPP_IS_CROSS_COMPILING) AM_CONDITIONAL(CANADIAN, test "$CANADIAN" = yes) AC_CACHE_SAVE *************** else *** 244,252 **** multilib_arg= fi - - # Generate the various Makefiles, include files, and scripts. - # Needed so that g++ can find the correct include subdir automatically. INTERFACE=v3 --- 242,247 ---- *************** else *** 265,284 **** fi AC_SUBST(LIBSUPCXX_PICFLAGS) ! # This should be done by mkincludedir, but hack around it now. ! blddir=`pwd` ! echo "checking for $blddir/include" ! ! if test ! -d "$blddir/include"; then ! mkdir "$blddir/include" ! fi ! # NB: Multilibs need MULTISUBDIR defined correctly in src/Makefile.am # and libsupc++/Makefile.am so that multilib installs will end up # installed in the correct place. To work around this not being passed # down from config-ml.in -> top_srcdir/Makefile.am -> # top_srcdir/{src,libsupc++}/Makefile.am, manually append it here. ! AC_OUTPUT(Makefile src/Makefile libmath/Makefile libio/Makefile libsupc++/Makefile testsuite/Makefile mkcheck testsuite_flags, [if test -n "$CONFIG_FILES"; then ac_file=Makefile . ${glibcpp_basedir}/../config-ml.in grep '^MULTISUBDIR =' Makefile >> src/Makefile --- 260,275 ---- fi AC_SUBST(LIBSUPCXX_PICFLAGS) ! # Generate the various Makefiles, include files, and scripts. # NB: Multilibs need MULTISUBDIR defined correctly in src/Makefile.am # and libsupc++/Makefile.am so that multilib installs will end up # installed in the correct place. To work around this not being passed # down from config-ml.in -> top_srcdir/Makefile.am -> # top_srcdir/{src,libsupc++}/Makefile.am, manually append it here. ! AC_OUTPUT(Makefile \ ! include/Makefile src/Makefile \ ! libmath/Makefile libio/Makefile libsupc++/Makefile \ ! testsuite/Makefile mkcheck testsuite_flags, [if test -n "$CONFIG_FILES"; then ac_file=Makefile . ${glibcpp_basedir}/../config-ml.in grep '^MULTISUBDIR =' Makefile >> src/Makefile *************** glibcpp_basedir=${glibcpp_basedir} *** 297,318 **** CC="${CC}" CXX="${CXX}" ) - - - # Generate bits/c++config.h - # NB: This must be the first generated file as others include it. . . - $srcdir/mkc++config $blddir $srcdir - - # Generate bits/std_limits.h and src/limitsMEMBERS.cc - if test ! -f stamp-limits; then - $srcdir/mknumeric_limits $blddir $srcdir $xcompiling - if test ! -f include/bits/std_limits.h; then - echo "mknumeric_limits failed to execute properly: exiting" - exit 1 - else - touch stamp-limits - fi - fi # Sanity checking & User-visible messages. --- 288,293 ---- diff -Nrc3pad gcc-3.0/libstdc++-v3/configure.target gcc-3.0.1/libstdc++-v3/configure.target *** gcc-3.0/libstdc++-v3/configure.target Thu May 17 22:46:00 2001 --- gcc-3.0.1/libstdc++-v3/configure.target Sat Aug 18 12:23:13 2001 *************** case "${target_cpu}" in *** 39,47 **** --- 39,56 ---- i486 | i586 | i686 | i786) cpu_include_dir="config/cpu/i486" ;; + m68k | m680[246]0) + cpu_include_dir="config/cpu/m68k" + ;; + mips*) + cpu_include_dir="config/cpu/mips" + ;; powerpc | rs6000) cpu_include_dir="config/cpu/powerpc" ;; + s390 | s390x) + cpu_include_dir="config/cpu/s390" + ;; sparc64 | ultrasparc) cpu_include_dir="config/cpu/sparc/sparc64" ;; *************** case "${target}" in *** 120,124 **** --- 129,149 ---- ;; *) ATOMICITYH=$cpu_include_dir + ;; + esac + + # Set LIMITSH to the directory where the configuration-dependent + # limits.h can be found. + # THIS TABLE IS SORTED. KEEP IT THAT WAY. + + case "${target}" in + i?86-*-*) + LIMITSH=config/cpu/i386 + ;; + powerpc-*-*) + LIMITSH=config/cpu/powerpc + ;; + *) + LIMITSH=config/cpu/generic ;; esac diff -Nrc3pad gcc-3.0/libstdc++-v3/docs/doxygen/run_doxygen gcc-3.0.1/libstdc++-v3/docs/doxygen/run_doxygen *** gcc-3.0/libstdc++-v3/docs/doxygen/run_doxygen Mon Jun 11 06:06:44 2001 --- gcc-3.0.1/libstdc++-v3/docs/doxygen/run_doxygen Wed Jul 11 12:37:57 2001 *************** *** 5,11 **** # Synopsis: run_doxygen --mode=[user|maint] v3srcdir v3builddir # # Originally hacked together by Phil Edwards ! # $Id: run_doxygen,v 1.1.4.2 2001/06/11 13:06:44 pme Exp $ # We can check now that the version of doxygen is >= this variable. --- 5,11 ---- # Synopsis: run_doxygen --mode=[user|maint] v3srcdir v3builddir # # Originally hacked together by Phil Edwards ! # $Id: run_doxygen,v 1.1.4.3 2001/07/11 19:37:57 pme Exp $ # We can check now that the version of doxygen is >= this variable. *************** parse_options() { *** 75,81 **** blank= Id=is echo You expect this dinky script to track a version? Okay, here ! echo it $Id: run_doxygen,v 1.1.4.2 2001/06/11 13:06:44 pme Exp $blank exit 0 ;; *) --- 75,81 ---- blank= Id=is echo You expect this dinky script to track a version? Okay, here ! echo it $Id: run_doxygen,v 1.1.4.3 2001/07/11 19:37:57 pme Exp $blank exit 0 ;; *) *************** case x"$mode" in *** 115,121 **** exit 1 ;; esac ! test -d $outdir || (mkdir -p $outdir ; chmod u+w $outdir) ( set -e cd $srcdir --- 115,123 ---- exit 1 ;; esac ! rm -rf $outdir ! mkdir -p $outdir ! chmod u+w $outdir ( set -e cd $srcdir diff -Nrc3pad gcc-3.0/libstdc++-v3/docs/doxygen/user.cfg.in gcc-3.0.1/libstdc++-v3/docs/doxygen/user.cfg.in *** gcc-3.0/libstdc++-v3/docs/doxygen/user.cfg.in Wed May 30 14:59:29 2001 --- gcc-3.0.1/libstdc++-v3/docs/doxygen/user.cfg.in Wed Jul 11 12:37:57 2001 *************** SORT_MEMBER_DOCS = YES *** 197,203 **** # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. ! DISTRIBUTE_GROUP_DOC = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. --- 197,203 ---- # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. ! DISTRIBUTE_GROUP_DOC = YES # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. *************** WARN_LOGFILE = *** 305,311 **** INPUT = docs/doxygen \ libsupc++ \ include \ ! src # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp --- 305,326 ---- INPUT = docs/doxygen \ libsupc++ \ include \ ! src \ ! libsupc++/exception libsupc++/new libsupc++/typeinfo include/ext/hash_map \ ! include/ext/hash_set include/ext/rope include/ext/slist include/std/algorithm \ ! include/std/bitset include/std/cassert include/std/cctype \ ! include/std/cerrno include/std/cfloat include/std/ciso646 include/std/climits \ ! include/std/clocale include/std/cmath include/std/complex include/std/csetjmp \ ! include/std/csignal include/std/cstdarg include/std/cstddef \ ! include/std/cstdio include/std/cstdlib include/std/cstring \ ! include/std/ctime include/std/cwchar include/std/cwctype include/std/deque \ ! include/std/fstream include/std/functional include/std/iomanip \ ! include/std/ios include/std/iosfwd include/std/iostream include/std/istream \ ! include/std/iterator include/std/limits include/std/list include/std/locale \ ! include/std/map include/std/memory include/std/numeric include/std/ostream \ ! include/std/queue include/std/set include/std/sstream include/std/stack \ ! include/std/stdexcept include/std/streambuf include/std/string \ ! include/std/utility include/std/valarray include/std/vector # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp diff -Nrc3pad gcc-3.0/libstdc++-v3/docs/html/17_intro/porting-howto.html gcc-3.0.1/libstdc++-v3/docs/html/17_intro/porting-howto.html *** gcc-3.0/libstdc++-v3/docs/html/17_intro/porting-howto.html Sat Dec 9 20:03:09 2000 --- gcc-3.0.1/libstdc++-v3/docs/html/17_intro/porting-howto.html Wed Jul 11 17:04:16 2001 *************** *** 1,726 **** ! ! Libstdc++-porting-howto ! ! ! !
      !
      !

      ! Libstdc++-porting-howto !

      !

      Felix Natter

      !

      This document can be distributed under the FDL ! (www.gnu.org) !

      !

      what kind of a date ? I don't drink !

      !
      ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
      Revision History
      Revision 0.5Thu Jun 1 13:06:50 2000fnatter
      First docbook-version.
      Revision 0.8Sun Jul 30 20:28:40 2000fnatter
      First released version using docbook-xml + second upload to libstdc++-page. !
      Revision 0.9Wed Sep 6 02:59:32 2000fnatter
      5 new sections.
      !
      !
      !

      ! Abstract !

      !

      ! Some notes on porting applications from libstdc++-2.90 (or earlier ! versions) to libstdc++-v3. Not speaking in terms of the GNU libstdc++ ! implementations, this means porting from earlier versions of the ! C++-Standard to ISO 14882. !

      !
      !
      !
      ! !

      ! In the following, when I say portable, I will refer to "portable among ISO ! 14882-implementations". On the other hand, if I say "backportable" or ! "conservative", I am talking about "compiles with older ! libstdc++-implementations".

      !
      !

      ! 1. Namespace std:: !

      !

      ! The latest C++-standard (ISO-14882) requires that the standard ! C++-library is defined in namespace std::. Thus, in order to use ! classes from the standard C++-library, you can do one of three ! things: !

      !
        !
      • ! !

        wrap your code in namespace std { ! ... } => This is not an option because only symbols ! from the standard c++-library are defined in namespace std::. !

        !
      • !
      • ! !

        put a kind of ! using-declaration in your source (either ! using namespace std; or i.e. using ! std::string;) => works well for source-files, but ! cannot be used in header-files. !

        !
      • !
      • ! !

        use a fully qualified name for ! each libstdc++-symbol (i.e. std::string, ! std::cout) => can always be used !

        !
      • !
      !
      !

      !

      ! Because there are many compilers which still use an implementation ! that does not have the standard C++-library in namespace ! std::, some care is required to support these as ! well. !

      !

      ! Namespace back-portability-issues are generally not a problem with ! g++, because versions of g++ that do not have libstdc++ in ! std:: use -fno-honor-std ! (ignore std::, :: = std::) by ! default. That is, the responsibility for enabling or disabling ! std:: is on the user; the maintainer does not have ! to care about it. This probably applies to some other compilers as ! well. !

      !

      ! The following sections list some possible solutions to support compilers ! that cannot ignore std::. !

      !
      !

      ! 1.1.1. Using namespace ! composition if the project uses a separate ! namespace !

      !

      ! Gtk-- defines ! most of its classes in namespace Gtk::. Thus, it was possible to ! adapt Gtk-- to namespace std:: by using a C++-feature called ! namespace composition. This is what happens if ! you put a using-declaration into a ! namespace-definition: the imported symbol(s) gets imported into the ! currently active namespace(s). For example: !

      ! 		  namespace Gtk {
      ! 		  using std::string;
      ! 		  class Window { ... }
      ! 		  }
      ! 		
      ! In this example, std::string gets imported into ! namespace Gtk::. The result is that you don't have to use ! std::string in this header, but still ! std::string does not get imported into ! user-space (the global namespace ::) unless the user does ! using namespace Gtk; (which is not recommended ! practice for Gtk--, so it is not a problem). Additionally, the ! using-declarations are wrapped in macros that ! are set based on autoconf-tests to either "" or i.e. using ! std::string; (depending on whether the system has ! libstdc++ in std:: or not). (ideas from ! <llewelly@dbritsch.dsl.xmission.com>, Karl Nelson ! <kenelson@ece.ucdavis.edu>) !

      !
      !
      !

      ! 1.1.2. Defining an empty namespace std !

      !

      ! By defining an (empty) namespace std:: before ! using it, you avoid getting errors on systems where no part of the ! library is in namespace std: !

      ! 		  namespace std { }
      ! 		  using namespace std;
      ! 		
      !

      !
      !
      !

      ! 1.1.3. Avoid to use fully qualified names ! (i.e. std::string) !

      !

      ! If some compilers complain about using ! std::string;, and if the "hack" for gtk-- mentioned above ! does not work, then it might be a good idea to define a macro ! NS_STD, which is defined to either "" or "std" ! based on an autoconf-test. Then you should be able to use ! NS_STD::string, which will evaluate to ! ::string ("string in the global namespace") on ! systems that do not put string in std::. (This is untested) !

      !
      !
      !

      ! 1.1.4. How some open-source-projects deal ! with this !

      !

      ! This information was gathered around May 2000. It may not be correct ! by the time you read this. !

      !
      !

      ! Table 1. Namespace std:: in Open-Source programs !

      ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
      clanlibusual
      pingususual
      mozillausual
      mnemonicnone
      ! libsigc++conservative-impl
      !
      !
      !

      ! Table 2. Notations for categories !

      ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
      usualmostly fully qualified names and some ! using-declarations (but not in headers)
      noneno namespace std at all
      conservative-implwrap all ! namespace-handling in macros to support compilers without ! namespace-support (no libstdc++ used in headers)
      !
      !

      ! As you can see, this currently lacks an example of a project which ! uses libstdc++-symbols in headers in a back-portable way (except ! for Gtk--: see the ). !

      !
      !
      !
      !

      ! 2. there is no ios::nocreate/ios::noreplace ! in ISO 14882 !

      !

      ! I have seen ios::nocreate being used for input-streams, ! most probably because the authors thought it would be more correct ! to specify nocreate "explicitly". So you can simply leave it out ! for input-streams. !

      !

      ! For output streams, "nocreate" is probably the default, unless you ! specify std::ios::trunc ? To be safe, you can open ! the file for reading, check if it has been opened, and then decide ! whether you want to create/replace or not. To my knowledge, even ! older implementations support app, ! ate and trunc (except for ! app ?). !

      !
      !
      !

      ! 3. stream::attach(int ! fd) is not in the standard any more !

      !

      ! When using libstdc++-v3, you can use !

      !

      !

      ! !
      ! 		  #include <fstream>
      ! 		
      !

      ! int basic_filebuf(__fd, __name, __mode);
      int __fd;
      const char* __name;
      ios_base::openmode __mode;
      !

      !

      !

      !
      ! For a portable solution (if there is one), you need to implement a ! subclass of streambuf which opens a file given a ! descriptor, and then pass an instance of this to the ! stream-constructor (from the Josuttis-book). !

      !
      !
      !

      ! 4. The new headers !

      !

      ! All new headers can be seen in this source-code. !

      !

      ! I think it is a problem for libstdc++-v3 to add links or wrappers ! for the old headers, because the implementation has changed, and ! the header name-changes indicate this. It might be preferable to ! use the new headers and tell users of old compilers that they ! should create links (which is what they will have to do sometime ! anyway). !

      !
      !

      ! 4.4.1. New headers replacing C-headers !

      !

      ! You should not use the C-headers (except for system-level headers) ! from C++ programs. Instead, you should use a set of headers that ! are named by prepending 'c' and, as usual, ommiting the extension ! (.h). For example, instead of using <math.h>, you should use <cmath>. The standard ! specifies that if you include the C-style header (<math.h> in this case), the symbols ! will be available both in the global namespace and in namespace ! std:: (libstdc++-v3, version 2.90.8 currently ! puts them in std:: only) On the other hand, if ! you include only the new header (i.e. <pcmath>), the symbols will only be ! defined in namespace std:: (and macros will be ! converted to inline-functions). !

      !

      ! For more information on this, and for information on how the GNU ! C++ implementation reuses ("shadows") the C library-functions, have ! a look at ! www.cantrip.org. !

      !
      !
      !

      ! 4.4.2. ! <fstream> does ! not define std::cout, ! std::cin etc. !

      !

      ! In previous versions of the standard, <fstream.h>, <ostream.h> and <istream.h> used to define ! cout, cin and so on. Because ! of the templatized iostreams in libstdc++-v3, you need to include ! <iostream> ! explicitly to define these. !

      !
      !
      !
      !

      ! 5. Iterators !

      !

      ! The following are not proper uses of iterators, but may be working ! fixes for existing uses of iterators. !

      !
        !
      • ! !

        you cannot do ! ostream::operator<<(iterator) to ! print the address of the iterator => use ! operator<< &*iterator instead ? !

        !
      • !
      • ! !

        you cannot clear an iterator's reference ! (iterator = 0) => use ! iterator = iterator_type(); ? !

        !
      • !
      • ! !

        ! if (iterator) won't work any ! more => use if (iterator != iterator_type()) ! ?

        !
      • !
      !
      !

      !
      !
      !

      ! 6. ! Libc-macros (i.e. isspace from ! <cctype>) !

      !

      ! Glibc 2.0.x and 2.1.x define the <ctype.h> -functionality as ! macros (isspace, isalpha etc.). Libstdc++-v3 "shadows" these macros ! as described in the . !

      !

      ! Older implementations of libstdc++ (g++-2 for egcs 1.x and g++-3 ! for gcc 2.95.2), however, keep these functions as macros, and so it ! is not back-portable to use fully qualified names. For example: !

      ! 		#include <cctype>
      ! 		int main() { std::isspace('X'); }
      ! 	  
      ! will result in something like this (unless using g++-v3): !
      ! 		std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int)
      ! 		_ISspace )  ;
      ! 	  
      !

      !

      ! One solution I can think of is to test for -v3 using ! autoconf-macros, and define macros for each of the C-functions ! (maybe that is possible with one "wrapper" macro as well ?).

      !

      ! Another solution which would fix g++ is to tell the user to modify a ! header-file so that g++-2 (egcs 1.x) and g++-3 (gcc 2.95.2) define a ! macro which tells <ctype.h> to define functions ! instead of macros: !

      ! 		// This keeps isalnum, et al from being propagated as macros.
      ! 		#if __linux__
      ! 		#define __NO_CTYPE 1
      ! 		#endif
        
      ! 		[ now include <ctype.h> ]
      ! 	  
      !

      !

      ! Another problem arises if you put a using namespace ! std; declaration at the top, and include <ctype.h>. This will result in ! ambiguities between the definitions in the global namespace ! (<ctype.h>) and the ! definitions in namespace std:: ! (<cctype>). !

      !

      ! The solution to this problem was posted to the libstdc++-v3 ! mailing-list: ! Benjamin Kosnik <bkoz@redhat.com> writes: ! " ! --enable-cshadow-headers is currently broken. As a result, shadow ! headers are not being searched.... ! " !

      !
      !
      !

      ! 7. ! State of streams ! !

      !

      ! At least some older implementations don't have ! std::ios_base, so you should use ! std::ios::badbit, std::ios::failbit ! and std::ios::eofbit and ! std::ios::goodbit. !

      !
      !
      !

      ! 8. vector::at is missing (i.e. gcc 2.95.2) !

      !

      ! For my use, I added it to ! prefix/include/g++-3/stl_vector.h: !

      !   reference operator[](size_type __n) { return *(begin() + __n); }
      !   reference at(size_type __n) {
      !     if (begin() + __n >= end())
      !       throw out_of_range("vector::at");
      !     return *(begin() + __n);
      !   }
      !   const_reference operator[](size_type __n) const { return *(begin() + __n); }
      !   const_reference at(size_type __n) const {
      !     if (begin() + __n >= end())
      !       throw out_of_range("vector::at");
      !     return *(begin() + __n);
      !   }
      ! 	  
      !

      !
      !
      !

      ! 9. Using std::char_traits<char>::eof() !

      !

      !

      ! 		#ifdef HAVE_CHAR_TRAITS
      ! 		#define CPP_EOF std::char_traits<char>::eof()
      ! 		#else
      ! 		#define CPP_EOF EOF
      ! 		#endif
      ! 	  
      !

      !
      !
      !

      ! 10. Using string::clear()/string::erase() !

      !

      ! There are two functions for deleting the contents of a string: ! clear and erase (the latter ! returns the string). !

      ! 		void 
      ! 		clear() { _M_mutate(0, this->size(), 0); }
      ! 	  
      !
      !       basic_string& 
      !       erase(size_type __pos = 0, size_type __n = npos)
      !       { 
      ! 		return this->replace(_M_check(__pos), _M_fold(__pos, __n),
      ! 			     _M_data(), _M_data()); 
      !       }
      ! 	  
      ! The implementation of erase seems to be more ! complicated (from libstdc++-v3), but clear is not ! implemented in gcc 2.95.2's libstdc++, so you should use ! erase (which is probably faster than ! operator=(charT*)). !

      !
      !
      !

      ! 11. Using stringstream's !

      !

      ! Libstdc++-v3 includes the new ! i/ostringstream-classes, (<sstream>), but with older ! implementations you still have to use i/ostrstream ! (<strstream>): !

      ! 		#ifdef HAVE_SSTREAM
      ! 		#include <sstream>
      ! 		#else
      ! 		#include <strstream>
      ! 		#endif
      ! 	  
      !
      !
        !
      • ! !

        strstream is considered to be ! deprecated !

        !
      • !
      • ! !

        strstream is limited to ! char !

        !
      • !
      • ! !

        with ostringstream you don't ! have to take care of terminating the string or freeing its ! memory !

        !
      • !
      • ! !

        istringstream can be re-filled ! (clear(); str(input);) !

        !
      • !
      !
      !

      !

      ! You can then use output-stringstreams like this: !

      ! 		#ifdef HAVE_SSTREAM
      ! 		std::ostringstream oss;
      ! 		#else
      ! 		std::ostrstream oss;
      ! 		#endif
      ! 		oss << "Name=" << m_name << ", number=" << m_number << std::endl;
      ! 		...
      ! 		#ifndef HAVE_SSTREAM
      ! 		oss << std::ends; // terminate the char*-string
      ! 		#endif
      ! 		// str() returns char* for ostrstream and a string for ostringstream
      ! 		// this also causes ostrstream to think that the buffer's memory
      ! 		// is yours
      ! 		m_label.set_text(oss.str());
      ! 		#ifndef HAVE_SSTREAM
      ! 		// let the ostrstream take care of freeing the memory
      ! 		oss.freeze(false);
      ! 		#endif
      ! 	  
      !

      !

      ! Input-stringstreams can be used similarly: !

      ! 		std::string input;
      ! 		...
      ! 		#ifdef HAVE_SSTREAM
      ! 		std::istringstream iss(input);
      ! 		#else
      ! 		std::istrstream iss(input.c_str());
      ! 		#endif
      ! 		int i;
      ! 		iss >> i; 
      ! 	  
      ! One (the only?) restriction is that an istrstream cannot be re-filled: !
      ! 		std::istringstream iss(numerator);
      ! 		iss >> m_num;
      ! 		// this is not possible with istrstream
      ! 		iss.clear();
      ! 		iss.str(denominator);
      ! 		iss >> m_den;
      ! 	  
      ! If you don't care about speed, you can put these conversions in ! a template-function: !
      ! 		template <class X>
      ! 		void fromString(const string& input, X& any)
      ! 		{
      ! 		#ifdef HAVE_SSTREAM
      ! 		std::istringstream iss(input);
      ! 		#else
      ! 		std::istrstream iss(input.c_str());
      ! 		#endif
      ! 		X temp;
      ! 		iss >> temp;
      ! 		if (iss.fail())
      ! 		   throw runtime_error(..)
      ! 		any = temp;
      ! 		}
      ! 	  
      !

      !

      ! I have read the Josuttis book on Standard C++, so some information ! comes from there. Additionally, there is information in ! "info iostream", which covers the old implementation that gcc 2.95.2 ! uses. !

      !
      !
      !

      ! 12. About... !

      !

      ! Please send any experience, additions, corrections or questions to ! fnatter@gmx.net or for ! discussion to the libstdc++-v3-mailing-list. !

      !
      !
      ! --- 1,773 ---- + ! ! ! Libstdc++-porting-howto ! ! !
      !
      !

      ! Libstdc++-porting-howto

      !

      Felix Natter

      !
      !

      Legal Notice

      !

      This document can be distributed under the FDL ! (www.gnu.org) !

      !
      !

      Tue Jun 5 20:07:49 2001

      !
      ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
      Revision History
      Revision 0.5Thu Jun 1 13:06:50 2000fnatter
      First docbook-version.
      Revision 0.8Sun Jul 30 20:28:40 2000fnatter
      First released version using docbook-xml + second upload to libstdc++-page. !
      Revision 0.9Wed Sep 6 02:59:32 2000fnatter
      5 new sections.
      Revision 0.9.1Sat Sep 23 14:20:15 2000fnatter
      added information about why file-descriptors are not in the ! standard
      Revision 0.9.2Tue Jun 5 20:07:49 2001fnatter
      ! a fix, added hint on increased portability of C-shadow-headers, ! added autoconf-test HAVE_CONTAINER_AT !
      Revision 0.9.3Fri Jun 29 16:15:56 2001fnatter
      ! changed signature of nonstandard filebuf-constructor and ! update the section on filebuf::attach to point to ../ext/howto.html, ! added link to ../21/strings/howto.html ! in sec-stringstream, changed <link>-tags to have content ! (so that these links work), ! replace "user-space" by "global namespace" ! add note about gcc 3.0 and shadow-headers ! add section about ostream::form and istream::scan ! sec-vector-at: remove hint to modify headers ! fix spelling error in sec-stringstream !
      !
      !

      ! Abstract !

      !

      ! Some notes on porting applications from libstdc++-2.90 (or earlier ! versions) to libstdc++-v3. Not speaking in terms of the GNU libstdc++ ! implementations, this means porting from earlier versions of the ! C++-Standard to ISO 14882. !

      !
      !
      !
      ! !

      ! In the following, when I say portable, I will refer to "portable among ISO ! 14882-implementations". On the other hand, if I say "backportable" or ! "conservative", I am talking about "compiles with older ! libstdc++-implementations".

      !
      !

      ! 1. Namespace std:: !

      !

      ! The latest C++-standard (ISO-14882) requires that the standard ! C++-library is defined in namespace std::. Thus, in order to use ! classes from the standard C++-library, you can do one of three ! things: !

        !
      • ! wrap your code in namespace std { ! ... } => This is not an option because only symbols ! from the standard c++-library are defined in namespace std::. !

      • !
      • ! put a kind of ! using-declaration in your source (either ! using namespace std; or i.e. using ! std::string;) => works well for source-files, but ! cannot be used in header-files. !

      • !
      • ! use a fully qualified name for ! each libstdc++-symbol (i.e. std::string, ! std::cout) => can always be used !

      • !
      !

      !

      ! Because there are many compilers which still use an implementation ! that does not have the standard C++-library in namespace ! std::, some care is required to support these as ! well. !

      !

      ! Namespace back-portability-issues are generally not a problem with ! g++, because versions of g++ that do not have libstdc++ in ! std:: use -fno-honor-std ! (ignore std::, :: = std::) by ! default. That is, the responsibility for enabling or disabling ! std:: is on the user; the maintainer does not have ! to care about it. This probably applies to some other compilers as ! well. !

      !

      ! The following sections list some possible solutions to support compilers ! that cannot ignore std::. !

      !
      !

      ! 1.1.1. Using namespace ! composition if the project uses a separate ! namespace !

      !

      ! Gtk-- defines ! most of its classes in namespace Gtk::. Thus, it was possible to ! adapt Gtk-- to namespace std:: by using a C++-feature called ! namespace composition. This is what happens if ! you put a using-declaration into a ! namespace-definition: the imported symbol(s) gets imported into the ! currently active namespace(s). For example: !

      ! 	  namespace Gtk {
      ! 	  using std::string;
      ! 	  class Window { ... }
      ! 	  }
      ! 	
      ! In this example, std::string gets imported into ! namespace Gtk::. The result is that you don't have to use ! std::string in this header, but still ! std::string does not get imported into ! the global namespace (::) unless the user does ! using namespace Gtk; (which is not recommended ! practice for Gtk--, so it is not a problem). Additionally, the ! using-declarations are wrapped in macros that ! are set based on autoconf-tests to either "" or i.e. using ! std::string; (depending on whether the system has ! libstdc++ in std:: or not). (ideas from ! <llewelly@dbritsch.dsl.xmission.com>, Karl Nelson ! <kenelson@ece.ucdavis.edu>) !

      !
      !
      !

      ! 1.1.2. Defining an empty namespace std !

      !

      ! By defining an (empty) namespace std:: before ! using it, you avoid getting errors on systems where no part of the ! library is in namespace std: !

      ! 	  namespace std { }
      ! 	  using namespace std;
      ! 	
      !

      !
      !
      !

      ! 1.1.3. Avoid to use fully qualified names ! (i.e. std::string) !

      !

      ! If some compilers complain about using ! std::string;, and if the "hack" for gtk-- mentioned above ! does not work, then it might be a good idea to define a macro ! NS_STD, which is defined to either "" or "std" ! based on an autoconf-test. Then you should be able to use ! NS_STD::string, which will evaluate to ! ::string ("string in the global namespace") on ! systems that do not put string in std::. (This is untested) !

      !
      !
      !

      ! 1.1.4. How some open-source-projects deal ! with this !

      !

      ! This information was gathered around May 2000. It may not be correct ! by the time you read this. !

      !
      !

      ! Table 1. Namespace std:: in Open-Source programs !

      ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
      clanlibusual
      pingususual
      mozillausual
      mnemonicnone
      ! libsigc++conservative-impl
      !
      !
      !

      ! Table 2. Notations for categories !

      ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
      usualmostly fully qualified names and some ! using-declarations (but not in headers)
      noneno namespace std at all
      conservative-implwrap all ! namespace-handling in macros to support compilers without ! namespace-support (no libstdc++ used in headers)
      !
      !

      ! As you can see, this currently lacks an example of a project ! which uses libstdc++-symbols in headers in a back-portable way ! (except for Gtk--: see the section on the gtkmm-hack). !

      !
      !
      !
      !

      ! 2. there is no ios::nocreate/ios::noreplace ! in ISO 14882 !

      !

      ! I have seen ios::nocreate being used for ! input-streams, most probably because the author thought it would be ! more correct to specify nocreate "explicitly". So you can simply ! leave it out for input-streams. !

      !

      ! For output streams, "nocreate" is probably the default, unless you ! specify std::ios::trunc ? To be safe, you can open ! the file for reading, check if it has been opened, and then decide ! whether you want to create/replace or not. To my knowledge, even ! older implementations support app, ! ate and trunc (except for ! app ?). !

      !
      !
      !

      ! 3. stream::attach(int ! fd) is not in the standard any more !

      !

      ! Phil Edwards <pedwards@disaster.jaj.com> writes: ! It was considered and rejected. Not all environments use file ! descriptors. Of those that do, not all of them use integers to represent ! them. !

      !

      ! When using libstdc++-v3, you can use !

      !

      !

      ! 	  #include <fstream>
      ! 	
      !

      ! basic_filebuf<...>::basic_filebuf<...> ! ! (file, mode, size);
      __c_file_type* file;
      ios_base::open_mode mode;
      int size;

      !

      !

      ! but the the signature of this constructor has changed often, and ! it might change again. For the current state of this, check ! the howto for extensions.

      !

      ! For a portable solution (among systems which use ! filedescriptors), you need to implement a subclass of ! std::streambuf (or ! std::basic_streambuf<..>) which opens a file ! given a descriptor, and then pass an instance of this to the ! stream-constructor (from the Josuttis-book). !

      !
      !
      !

      ! 4. The new headers !

      !

      ! All new headers can be seen in this ! source-code. !

      !

      ! The old C++-headers (iostream.h etc.) are available, but gcc generates ! a warning that you are using deprecated headers. !

      !
      !

      ! 4.4.1. New headers replacing C-headers !

      !

      ! You should not use the C-headers (except for system-level ! headers) from C++ programs. Instead, you should use a set of ! headers that are named by prepending 'c' and, as usual, ! omitting the extension (.h). For example, instead of using ! <math.h>, you ! should use <cmath>. In some cases this has ! the advantage that the C++-header is more standardized than ! the C-header (i.e. <ctime> (almost) ! corresponds to either <time.h> or <sys/time.h>). ! The standard specifies that if you include the C-style header ! (<math.h> in ! this case), the symbols will be available both in the global ! namespace and in namespace std:: (but ! libstdc++ does not yet have fully compliant headers) On the ! other hand, if you include only the new header (i.e. <cmath>), the symbols ! will only be defined in namespace std:: ! (and macros will be converted to inline-functions). !

      !

      ! For more information on this, and for information on how the ! GNU C++ implementation might reuse ("shadow") the C ! library-functions, have a look at ! www.cantrip.org. !

      !
      !
      !

      ! 4.4.2. ! <fstream> does ! not define std::cout, ! std::cin etc. !

      !

      ! In earlier versions of the standard, ! <fstream.h>, ! <ostream.h> ! and <istream.h> ! used to define ! cout, cin and so on. Because ! of the templatized iostreams in libstdc++-v3, you need to include ! <iostream> ! explicitly to define these. !

      !
      !
      !
      !

      ! 5. Iterators !

      !

      ! The following are not proper uses of iterators, but may be working ! fixes for existing uses of iterators. !

        !
      • ! you cannot do ! ostream::operator<<(iterator) to ! print the address of the iterator => use ! operator<< &*iterator instead ? !

      • !
      • ! you cannot clear an iterator's reference ! (iterator = 0) => use ! iterator = iterator_type(); ? !

      • !
      • ! if (iterator) won't work any ! more => use if (iterator != iterator_type()) ! ?

      • !
      !

      !
      !
      !

      ! 6. ! Libc-macros (i.e. isspace from ! <cctype>) !

      !

      ! Glibc 2.0.x and 2.1.x define the ! <ctype.h> ! -functionality as macros (isspace, isalpha etc.). Libstdc++-v3 ! "shadows" these macros as described in the section about ! c-headers. !

      !

      ! Older implementations of libstdc++ (g++-2 for egcs 1.x and g++-3 ! for gcc 2.95.x), however, keep these functions as macros, and so it ! is not back-portable to use fully qualified names. For example: !

      ! 	#include <cctype>
      ! 	int main() { std::isspace('X'); }
      !       
      ! will result in something like this (unless using g++-v3): !
      ! 	std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int)
      ! 	_ISspace )  ;
      !       
      !

      !

      ! One solution I can think of is to test for -v3 using ! autoconf-macros, and define macros for each of the C-functions ! (maybe that is possible with one "wrapper" macro as well ?). !

      !

      ! Another solution which would fix g++ is to tell the user to modify a ! header-file so that g++-2 (egcs 1.x) and g++-3 (gcc 2.95.x) define a ! macro which tells <ctype.h> to define functions ! instead of macros: !

      ! 	// This keeps isalnum, et al from being propagated as macros.
      ! 	#if __linux__
      ! 	#define __NO_CTYPE 1
      ! 	#endif
      ! 
      ! 	[ now include <ctype.h> ]
      !       
      !

      !

      ! Another problem arises if you put a using namespace ! std; declaration at the top, and include <ctype.h>. This will result in ! ambiguities between the definitions in the global namespace ! (<ctype.h>) and the ! definitions in namespace std:: ! (<cctype>). !

      !

      ! The solution to this problem was posted to the libstdc++-v3 ! mailing-list: ! Benjamin Kosnik <bkoz@redhat.com> writes: ! ` ! --enable-cshadow-headers is currently broken. As a result, shadow ! headers are not being searched.... ! ' ! This is now outdated, but gcc 3.0 still does not have fully ! compliant "shadow headers". !

      !
      !
      !

      ! 7. State of streams !

      !

      ! At least some older implementations don't have ! std::ios_base, so you should use ! std::ios::badbit, std::ios::failbit ! and std::ios::eofbit and ! std::ios::goodbit. !

      !
      !
      !

      ! 8. vector::at is missing (i.e. gcc 2.95.x) !

      !

      ! One solution is to add an autoconf-test for this: !

      ! 	AC_MSG_CHECKING(for container::at)
      ! 	AC_TRY_COMPILE(
      ! 	[
      ! 	#include <vector>
      ! 	#include <deque>
      ! 	#include <string>
      ! 	
      ! 	using namespace std;
      ! 	],
      ! 	[
      ! 	deque<int> test_deque(3);
      ! 	test_deque.at(2);
      ! 	vector<int> test_vector(2);
      ! 	test_vector.at(1);
      ! 	string test_string("test_string");
      ! 	test_string.at(3);
      ! 	],
      ! 	[AC_MSG_RESULT(yes)
      ! 	AC_DEFINE(HAVE_CONTAINER_AT)],
      ! 	[AC_MSG_RESULT(no)])
      !       
      ! If you are using other (non-GNU) compilers it might be a good idea ! to check for string::at separately. !

      !
      !
      !

      ! 9. Using std::char_traits<char>::eof() !

      !

      !

      ! 	#ifdef HAVE_CHAR_TRAITS
      ! 	#define CPP_EOF std::char_traits<char>::eof()
      ! 	#else
      ! 	#define CPP_EOF EOF
      ! 	#endif
      !       
      !

      !
      !
      !

      ! 10. Using string::clear()/string::erase() !

      !

      ! There are two functions for deleting the contents of a string: ! clear and erase (the latter ! returns the string). !

      ! 	void 
      ! 	clear() { _M_mutate(0, this->size(), 0); }
      !       
      !
      ! 	basic_string& 
      ! 	erase(size_type __pos = 0, size_type __n = npos)
      ! 	{ 
      ! 	return this->replace(_M_check(__pos), _M_fold(__pos, __n),
      ! 	_M_data(), _M_data()); 
      ! 	}
      !       
      ! The implementation of erase seems to be more ! complicated (from libstdc++-v3), but clear is not ! implemented in gcc 2.95.x's libstdc++, so you should use ! erase (which is probably faster than ! operator=(charT*)). !

      !
      !
      !

      ! 11. GNU Extensions ostream::form and istream::scan !

      !

      ! These are not supported any more - use ! ! stringstreams instead. !

      !
      !
      !

      ! 12. Using stringstreams !

      !

      ! Libstdc++-v3 provides the new ! i/ostringstream-classes, (<sstream>), but for compatibility ! with older implementations you still have to use ! i/ostrstream (<strstream>): !

      ! 	#ifdef HAVE_SSTREAM
      ! 	#include <sstream>
      ! 	#else
      ! 	#include <strstream>
      ! 	#endif
      !       
      !
        !
      • ! strstream is considered to be ! deprecated !

      • !
      • ! strstream is limited to ! char !

      • !
      • ! with ostringstream you don't ! have to take care of terminating the string or freeing its ! memory !

      • !
      • ! istringstream can be re-filled ! (clear(); str(input);) !

      • !
      !

      !

      ! You can then use output-stringstreams like this: !

      ! 	#ifdef HAVE_SSTREAM
      ! 	std::ostringstream oss;
      ! 	#else
      ! 	std::ostrstream oss;
      ! 	#endif
      ! 	oss << "Name=" << m_name << ", number=" << m_number << std::endl;
      ! 	...
      ! 	#ifndef HAVE_SSTREAM
      ! 	oss << std::ends; // terminate the char*-string
      ! 	#endif
      ! 	// str() returns char* for ostrstream and a string for ostringstream
      ! 	// this also causes ostrstream to think that the buffer's memory
      ! 	// is yours
      ! 	m_label.set_text(oss.str());
      ! 	#ifndef HAVE_SSTREAM
      ! 	// let the ostrstream take care of freeing the memory
      ! 	oss.freeze(false);
      ! 	#endif
      !       
      !

      !

      ! Input-stringstreams can be used similarly: !

      ! 	std::string input;
      ! 	...
      ! 	#ifdef HAVE_SSTREAM
      ! 	std::istringstream iss(input);
      ! 	#else
      ! 	std::istrstream iss(input.c_str());
      ! 	#endif
      ! 	int i;
      ! 	iss >> i; 
      !       
      ! One (the only?) restriction is that an istrstream cannot be re-filled: !
      ! 	std::istringstream iss(numerator);
      ! 	iss >> m_num;
      ! 	// this is not possible with istrstream
      ! 	iss.clear();
      ! 	iss.str(denominator);
      ! 	iss >> m_den;
      !       
      ! If you don't care about speed, you can put these conversions in ! a template-function: !
      ! 	template <class X>
      ! 	void fromString(const string& input, X& any)
      ! 	{
      ! 	#ifdef HAVE_SSTREAM
      ! 	  std::istringstream iss(input);
      ! 	#else
      ! 	  std::istrstream iss(input.c_str());
      ! 	#endif
      ! 	  X temp;
      ! 	  iss >> temp;
      ! 	  if (iss.fail())
      ! 	    throw runtime_error(..)
      ! 	  any = temp;
      ! 	}
      !       
      ! Another example of using stringstreams is in this howto. !

      !

      ! I have read the Josuttis book on Standard C++, so some information ! comes from there. Additionally, there is information in ! "info iostream", which covers the old implementation that gcc 2.95.x ! uses. !

      !
      !
      !

      ! 13. About... !

      !

      ! Please send any experience, additions, corrections or questions to ! fnatter@gmx.net or for ! discussion to the libstdc++-v3-mailing-list. !

      !
      !
      diff -Nrc3pad gcc-3.0/libstdc++-v3/docs/html/17_intro/porting-howto.xml gcc-3.0.1/libstdc++-v3/docs/html/17_intro/porting-howto.xml *** gcc-3.0/libstdc++-v3/docs/html/17_intro/porting-howto.xml Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/libstdc++-v3/docs/html/17_intro/porting-howto.xml Wed Jul 11 17:04:16 2001 *************** *** 0 **** --- 1,758 ---- + + + + + + + + + + +
      + + Libstdc++-porting-howto + + Felix + Natter + +
      + fnatter@gmx.net +
      + + + 0.5 + Thu Jun 1 13:06:50 2000 + fnatter + First docbook-version. + + + 0.8 + Sun Jul 30 20:28:40 2000 + fnatter + First released version using docbook-xml + + second upload to libstdc++-page. + + + + 0.9 + Wed Sep 6 02:59:32 2000 + fnatter + 5 new sections. + + + 0.9.1 + Sat Sep 23 14:20:15 2000 + fnatter + added information about why file-descriptors are not in the + standard + + + 0.9.2 + Tue Jun 5 20:07:49 2001 + fnatter + + a fix, added hint on increased portability of C-shadow-headers, + added autoconf-test HAVE_CONTAINER_AT + + + + 0.9.3 + Fri Jun 29 16:15:56 2001 + fnatter + + changed signature of nonstandard filebuf-constructor and + update the section on filebuf::attach to point to ../ext/howto.html, + added link to ../21/strings/howto.html + in sec-stringstream, changed <link>-tags to have content + (so that these links work), + replace "user-space" by "global namespace" + add note about gcc 3.0 and shadow-headers + add section about ostream::form and istream::scan + sec-vector-at: remove hint to modify headers + fix spelling error in sec-stringstream + + + + Legal Notice + + This document can be distributed under the FDL + (www.gnu.org) + + + + Tue Jun 5 20:07:49 2001 + + + Some notes on porting applications from libstdc++-2.90 (or earlier + versions) to libstdc++-v3. Not speaking in terms of the GNU libstdc++ + implementations, this means porting from earlier versions of the + C++-Standard to ISO 14882. + + +
      + + + In the following, when I say portable, I will refer to "portable among ISO + 14882-implementations". On the other hand, if I say "backportable" or + "conservative", I am talking about "compiles with older + libstdc++-implementations". + + +
      Namespace std:: + + The latest C++-standard (ISO-14882) requires that the standard + C++-library is defined in namespace std::. Thus, in order to use + classes from the standard C++-library, you can do one of three + things: + + + wrap your code in namespace std { + ... } => This is not an option because only symbols + from the standard c++-library are defined in namespace std::. + + + put a kind of + using-declaration in your source (either + using namespace std; or i.e. using + std::string;) => works well for source-files, but + cannot be used in header-files. + + + use a fully qualified name for + each libstdc++-symbol (i.e. std::string, + std::cout) => can always be used + + + + + + Because there are many compilers which still use an implementation + that does not have the standard C++-library in namespace + std::, some care is required to support these as + well. + + + + Namespace back-portability-issues are generally not a problem with + g++, because versions of g++ that do not have libstdc++ in + std:: use -fno-honor-std + (ignore std::, :: = std::) by + default. That is, the responsibility for enabling or disabling + std:: is on the user; the maintainer does not have + to care about it. This probably applies to some other compilers as + well. + + + The following sections list some possible solutions to support compilers + that cannot ignore std::. + + +
      + Using <emphasis>namespace + composition</emphasis> if the project uses a separate + namespace + + Gtk-- defines + most of its classes in namespace Gtk::. Thus, it was possible to + adapt Gtk-- to namespace std:: by using a C++-feature called + namespace composition. This is what happens if + you put a using-declaration into a + namespace-definition: the imported symbol(s) gets imported into the + currently active namespace(s). For example: + + namespace Gtk { + using std::string; + class Window { ... } + } + + In this example, std::string gets imported into + namespace Gtk::. The result is that you don't have to use + std::string in this header, but still + std::string does not get imported into + the global namespace (::) unless the user does + using namespace Gtk; (which is not recommended + practice for Gtk--, so it is not a problem). Additionally, the + using-declarations are wrapped in macros that + are set based on autoconf-tests to either "" or i.e. using + std::string; (depending on whether the system has + libstdc++ in std:: or not). (ideas from + llewelly@dbritsch.dsl.xmission.com, Karl Nelson + kenelson@ece.ucdavis.edu) + +
      + +
      + Defining an empty namespace std + + By defining an (empty) namespace std:: before + using it, you avoid getting errors on systems where no part of the + library is in namespace std: + + namespace std { } + using namespace std; + + +
      + +
      + Avoid to use fully qualified names + (i.e. std::string) + + If some compilers complain about using + std::string;, and if the "hack" for gtk-- mentioned above + does not work, then it might be a good idea to define a macro + NS_STD, which is defined to either "" or "std" + based on an autoconf-test. Then you should be able to use + NS_STD::string, which will evaluate to + ::string ("string in the global namespace") on + systems that do not put string in std::. (This is untested) + +
      + +
      + How some open-source-projects deal + with this + + This information was gathered around May 2000. It may not be correct + by the time you read this. + + Namespace std:: in Open-Source programs + + + + clanlib + + usual + + + pingus + + usual + + + mozilla + + usual + + + mnemonic + none + + + + libsigc++ + conservative-impl + + + +
      + + Notations for categories + + + + usual + mostly fully qualified names and some + using-declarations (but not in headers) + + + none no namespace std at all + + + conservative-impl + wrap all + namespace-handling in macros to support compilers without + namespace-support (no libstdc++ used in headers) + + + +
      + + + As you can see, this currently lacks an example of a project + which uses libstdc++-symbols in headers in a back-portable way + (except for Gtk--: see the section on the gtkmm-hack). + +
      +
      + +
      + there is no ios::nocreate/ios::noreplace + in ISO 14882 + + I have seen ios::nocreate being used for + input-streams, most probably because the author thought it would be + more correct to specify nocreate "explicitly". So you can simply + leave it out for input-streams. + + + For output streams, "nocreate" is probably the default, unless you + specify std::ios::trunc ? To be safe, you can open + the file for reading, check if it has been opened, and then decide + whether you want to create/replace or not. To my knowledge, even + older implementations support app, + ate and trunc (except for + app ?). + +
      + +
      + <command>stream::attach(int + fd)</command> is not in the standard any more + + Phil Edwards pedwards@disaster.jaj.com writes: + It was considered and rejected. Not all environments use file + descriptors. Of those that do, not all of them use integers to represent + them. + + + When using libstdc++-v3, you can use + + + #include <fstream> + + + + basic_filebuf<...>::basic_filebuf<...> + + + __c_file_type* file + ios_base::open_mode mode + int size + + + but the the signature of this constructor has changed often, and + it might change again. For the current state of this, check + the howto for extensions. + + + For a portable solution (among systems which use + filedescriptors), you need to implement a subclass of + std::streambuf (or + std::basic_streambuf<..>) which opens a file + given a descriptor, and then pass an instance of this to the + stream-constructor (from the Josuttis-book). + +
      + +
      + The new headers + + All new headers can be seen in this + source-code. + + + The old C++-headers (iostream.h etc.) are available, but gcc generates + a warning that you are using deprecated headers. + + +
      + New headers replacing C-headers + + You should not use the C-headers (except for system-level + headers) from C++ programs. Instead, you should use a set of + headers that are named by prepending 'c' and, as usual, + omitting the extension (.h). For example, instead of using + <math.h>, you + should use <cmath>. In some cases this has + the advantage that the C++-header is more standardized than + the C-header (i.e. <ctime> (almost) + corresponds to either <time.h> or <sys/time.h>). + + The standard specifies that if you include the C-style header + (<math.h> in + this case), the symbols will be available both in the global + namespace and in namespace std:: (but + libstdc++ does not yet have fully compliant headers) On the + other hand, if you include only the new header (i.e. <cmath>), the symbols + will only be defined in namespace std:: + (and macros will be converted to inline-functions). + + + For more information on this, and for information on how the + GNU C++ implementation might reuse ("shadow") the C + library-functions, have a look at + www.cantrip.org. + +
      + +
      + + <filename class="headerfile"><fstream></filename> does + not define <command>std::cout</command>, + <command>std::cin</command> etc. + + In earlier versions of the standard, + <fstream.h>, + <ostream.h> + and <istream.h> + used to define + cout, cin and so on. Because + of the templatized iostreams in libstdc++-v3, you need to include + <iostream> + explicitly to define these. + +
      +
      + +
      + Iterators + + The following are not proper uses of iterators, but may be working + fixes for existing uses of iterators. + + you cannot do + ostream::operator<<(iterator) to + print the address of the iterator => use + operator<< &*iterator instead ? + + + you cannot clear an iterator's reference + (iterator = 0) => use + iterator = iterator_type(); ? + + + if (iterator) won't work any + more => use if (iterator != iterator_type()) + ? + + + +
      + +
      + + Libc-macros (i.e. <command>isspace</command> from + <filename class = "headerfile"><cctype></filename>) + + Glibc 2.0.x and 2.1.x define the + <ctype.h> + -functionality as macros (isspace, isalpha etc.). Libstdc++-v3 + "shadows" these macros as described in the section about + c-headers. + + + Older implementations of libstdc++ (g++-2 for egcs 1.x and g++-3 + for gcc 2.95.x), however, keep these functions as macros, and so it + is not back-portable to use fully qualified names. For example: + + #include <cctype> + int main() { std::isspace('X'); } + + will result in something like this (unless using g++-v3): + + std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int) + _ISspace ) ; + + + + One solution I can think of is to test for -v3 using + autoconf-macros, and define macros for each of the C-functions + (maybe that is possible with one "wrapper" macro as well ?). + + + Another solution which would fix g++ is to tell the user to modify a + header-file so that g++-2 (egcs 1.x) and g++-3 (gcc 2.95.x) define a + macro which tells <ctype.h> to define functions + instead of macros: + + // This keeps isalnum, et al from being propagated as macros. + #if __linux__ + #define __NO_CTYPE 1 + #endif + + [ now include <ctype.h> ] + + + + Another problem arises if you put a using namespace + std; declaration at the top, and include <ctype.h>. This will result in + ambiguities between the definitions in the global namespace + (<ctype.h>) and the + definitions in namespace std:: + (<cctype>). + + + The solution to this problem was posted to the libstdc++-v3 + mailing-list: + Benjamin Kosnik bkoz@redhat.com writes: + + --enable-cshadow-headers is currently broken. As a result, shadow + headers are not being searched.... + + This is now outdated, but gcc 3.0 still does not have fully + compliant "shadow headers". + +
      + +
      + State of streams + + At least some older implementations don't have + std::ios_base, so you should use + std::ios::badbit, std::ios::failbit + and std::ios::eofbit and + std::ios::goodbit. + +
      + +
      + vector::at is missing (i.e. gcc 2.95.x) + + One solution is to add an autoconf-test for this: + + AC_MSG_CHECKING(for container::at) + AC_TRY_COMPILE( + [ + #include <vector> + #include <deque> + #include <string> + + using namespace std; + ], + [ + deque<int> test_deque(3); + test_deque.at(2); + vector<int> test_vector(2); + test_vector.at(1); + string test_string("test_string"); + test_string.at(3); + ], + [AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_CONTAINER_AT)], + [AC_MSG_RESULT(no)]) + + If you are using other (non-GNU) compilers it might be a good idea + to check for string::at separately. + +
      + +
      + Using std::char_traits<char>::eof() + + + #ifdef HAVE_CHAR_TRAITS + #define CPP_EOF std::char_traits<char>::eof() + #else + #define CPP_EOF EOF + #endif + + +
      + +
      + Using string::clear()/string::erase() + + There are two functions for deleting the contents of a string: + clear and erase (the latter + returns the string). + + void + clear() { _M_mutate(0, this->size(), 0); } + + + basic_string& + erase(size_type __pos = 0, size_type __n = npos) + { + return this->replace(_M_check(__pos), _M_fold(__pos, __n), + _M_data(), _M_data()); + } + + The implementation of erase seems to be more + complicated (from libstdc++-v3), but clear is not + implemented in gcc 2.95.x's libstdc++, so you should use + erase (which is probably faster than + operator=(charT*)). + +
      + +
      + GNU Extensions ostream::form and istream::scan + + These are not supported any more - use + + stringstreams instead. + +
      + +
      + Using stringstreams + + Libstdc++-v3 provides the new + i/ostringstream-classes, (<sstream>), but for compatibility + with older implementations you still have to use + i/ostrstream (<strstream>): + + #ifdef HAVE_SSTREAM + #include <sstream> + #else + #include <strstream> + #endif + + + strstream is considered to be + deprecated + + + strstream is limited to + char + + + with ostringstream you don't + have to take care of terminating the string or freeing its + memory + + + istringstream can be re-filled + (clear(); str(input);) + + + + + + You can then use output-stringstreams like this: + + #ifdef HAVE_SSTREAM + std::ostringstream oss; + #else + std::ostrstream oss; + #endif + oss << "Name=" << m_name << ", number=" << m_number << std::endl; + ... + #ifndef HAVE_SSTREAM + oss << std::ends; // terminate the char*-string + #endif + // str() returns char* for ostrstream and a string for ostringstream + // this also causes ostrstream to think that the buffer's memory + // is yours + m_label.set_text(oss.str()); + #ifndef HAVE_SSTREAM + // let the ostrstream take care of freeing the memory + oss.freeze(false); + #endif + + + + Input-stringstreams can be used similarly: + + std::string input; + ... + #ifdef HAVE_SSTREAM + std::istringstream iss(input); + #else + std::istrstream iss(input.c_str()); + #endif + int i; + iss >> i; + + One (the only?) restriction is that an istrstream cannot be re-filled: + + std::istringstream iss(numerator); + iss >> m_num; + // this is not possible with istrstream + iss.clear(); + iss.str(denominator); + iss >> m_den; + + If you don't care about speed, you can put these conversions in + a template-function: + + template <class X> + void fromString(const string& input, X& any) + { + #ifdef HAVE_SSTREAM + std::istringstream iss(input); + #else + std::istrstream iss(input.c_str()); + #endif + X temp; + iss >> temp; + if (iss.fail()) + throw runtime_error(..) + any = temp; + } + + Another example of using stringstreams is in this howto. + + + I have read the Josuttis book on Standard C++, so some information + comes from there. Additionally, there is information in + "info iostream", which covers the old implementation that gcc 2.95.x + uses. + +
      + +
      + About... + + Please send any experience, additions, corrections or questions to + fnatter@gmx.net or for + discussion to the libstdc++-v3-mailing-list. + +
      + +
      + + + + diff -Nrc3pad gcc-3.0/libstdc++-v3/docs/html/27_io/howto.html gcc-3.0.1/libstdc++-v3/docs/html/27_io/howto.html *** gcc-3.0/libstdc++-v3/docs/html/27_io/howto.html Wed May 30 14:59:33 2001 --- gcc-3.0.1/libstdc++-v3/docs/html/27_io/howto.html Wed Jul 18 14:39:58 2001 *************** *** 8,14 **** libstdc++-v3 HOWTO: Chapter 27 ! --- 8,14 ---- libstdc++-v3 HOWTO: Chapter 27 ! *************** *** 29,34 **** --- 29,35 ----
    4. What is this <sstream>/stringstreams thing?
    5. Deriving a stream buffer
    6. More on binary I/O +
    7. Pathetic performance? Ditch C.
      *************** *** 400,413 **** a portable binary format.

      !

      Comments and suggestions are welcome, and may be sent to the mailing list. !
      $Id: howto.html,v 1.3.2.2 2001/05/30 21:59:33 pme Exp $

      --- 401,466 ---- a portable binary format.

      +
      +

      Pathetic performance? Ditch C.

      +

      It sounds like a flame on C, but it isn't. Really. Calm down. + I'm just saying it to get your attention. +

      +

      Because the C++ library includes the C library, both C-style and + C++-style I/O have to work at the same time. For example: +

      +      #include <iostream>
      +      #include <cstdio>
      + 
      +      std::cout << "Hel";
      +      std::printf ("lo, worl");
      +      std::cout << "d!\n";
      +       
      + This must do what you think it does. +

      +

      Alert members of the audience will immediately notice that buffering + is going to make a hash of the output unless special steps are taken. +

      +

      The special steps taken by libstdc++, at least for version 3.0, + involve doing very little buffering for the standard streams, leaving + most of the buffering to the underlying C library. (This kind of + thing is tricky to get right.) + The upside is that correctness is ensured. The downside is that + writing through cout can quite easily lead to awful + performance when the C++ I/O library is layered on top of the C I/O + library (as it is for 3.0 by default). Some patches are in the + works which should improve the situation for 3.1. +

      +

      However, the C and C++ standard streams only need to be kept in sync + when both libraries' facilities are in use. If your program only uses + C++ I/O, then there's no need to sync with the C streams. The right + thing to do in this case is to call +

      +      #include any of the I/O headers such as ios, iostream, etc
      + 
      +      std::ios::sync_with_stdio(false);
      +       
      +

      +

      You must do this before performing any I/O via the C++ stream objects. + Once you call this, the C++ streams will operate independantly of the + (unused) C streams. For GCC 3.0, this means that cout and + company will become fully buffered on their own. +

      +

      Note, by the way, that the synchronization requirement only applies to + the standard streams (cin, cout, cerr, + clog, and their wide-character counterparts). File stream + objects that you create yourself have no such requirement and are fully + buffered. +

      + !








      Comments and suggestions are welcome, and may be sent to the mailing list. !
      $Id: howto.html,v 1.3.2.5 2001/07/18 21:39:58 pme Exp $

      diff -Nrc3pad gcc-3.0/libstdc++-v3/docs/html/configopts.html gcc-3.0.1/libstdc++-v3/docs/html/configopts.html *** gcc-3.0/libstdc++-v3/docs/html/configopts.html Mon May 14 12:48:55 2001 --- gcc-3.0.1/libstdc++-v3/docs/html/configopts.html Mon Jul 9 14:55:36 2001 *************** *** 7,13 **** libstdc++-v3 configure options ! --- 7,13 ---- libstdc++-v3 configure options ! *************** options *** 66,121 **** I/O package (from glibc, the GNU C library), or 'stdio' to use a generic "C" ! abstraction. The default is 'stdio'.

      !
      --enable-sjlj-exceptions !

      Forces old, short-jump/long-jump exception handling model. If ! at all possible, the new, frame unwinding exception handling routines ! should be used instead, as they significantly reduce both runtime ! memory usage and executable size.

      -
      --enable-clocale

      This is an abbreviated form of '--enable-clocale=generic' (described next).

      !
      --enable-clocale=MODEL

      Select a target-specific ! underlying locale package. The choices are 'gnu' to specify an X/Open ! (IEEE Std. 1003.1-200x) model based on langinfo/iconv (from glibc, the GNU C ! library), or 'generic' to use a generic "C" abstraction ! which consists of "C" locale info. The default is ! 'generic'.

      --enable-c99

      The "long long" type was introduced in C99, along ! with bunches of other functions for wide characters, and math ! classification macros, etc. If enabled, all C99 functions not ! specified by the C++ standard will be put into namespace c99, ! and then all names in the c99 namespace will be injected into ! namespace std, so that C99 functions can be used "as if" they ! were in the C++ standard (as they will eventually be in some ! future revision of the standard, without a doubt.) By default, ! C99 support is on, assuming the configure probes find all the ! necessary functions and bits necessary.

      --enable-long-long

      The "long long" type was introduced in C99. It is provided as a GNU extension to C++98 in g++. This flag builds ! support for "long long" into the library ! (specialized templates and the like for iostreams). This ! option is on by default: if enabled, users will have to either ! use the new-style "C" headers by default (ie cmath ! not math.h) or add appropriate compile-time flags to all ! compile lines to allow "C" visibility of this ! feature (on GNU/Linux, the flag is -D_ISOC99_SOURCE, which is ! added automatically via CPLUSPLUS_CPP_SPEC's addition of ! _GNU_SOURCE).

      --enable-cheaders=OPTION --- 66,120 ---- I/O package (from glibc, the GNU C library), or 'stdio' to use a generic "C" ! abstraction. The default is 'stdio'. A longer explanation ! is here.

      !
      --enable-sjlj-exceptions !

      Forces old, set-jump/long-jump exception handling model. If ! at all possible, the new, frame unwinding exception handling routines ! should be used instead, as they significantly reduce both runtime ! memory usage and executable size.

      --enable-clocale

      This is an abbreviated form of '--enable-clocale=generic' (described next).

      !
      --enable-clocale=MODEL !

      Select a target-specific underlying locale package. The choices ! are 'gnu' to specify an X/Open (IEEE Std. 1003.1-200x) model based ! on langinfo/iconv (from ! glibc, the GNU C ! library), or 'generic' to use a generic "C" abstraction ! which consists of "C" locale info. The default is 'generic'.

      --enable-c99

      The "long long" type was introduced in C99, along ! with bunches of other functions for wide characters, and math ! classification macros, etc. If enabled, all C99 functions not ! specified by the C++ standard will be put into namespace ! c99, and then all names in the c99 namespace will be injected ! into namespace std, so that C99 functions can be used "as ! if" they were in the C++ standard (as they will eventually ! be in some future revision of the standard, without a doubt). ! By default, C99 support is on, assuming the configure probes find ! all the necessary functions and bits necessary.

      --enable-long-long

      The "long long" type was introduced in C99. It is provided as a GNU extension to C++98 in g++. This flag builds ! support for "long long" into the library (specialized ! templates and the like for iostreams). This option is on by default: ! if enabled, users will have to either use the new-style "C" ! headers by default (i.e., <cmath> not <math.h>) ! or add appropriate compile-time flags to all compile lines to ! allow "C" visibility of this feature (on GNU/Linux, ! the flag is -D_ISOC99_SOURCE, which is added automatically via ! CPLUSPLUS_CPP_SPEC's addition of _GNU_SOURCE).

      --enable-cheaders=OPTION *************** options *** 148,161 ****
      --enable-version-specific-runtime-libs

      Specify that run-time libraries should be installed in the ! compiler-specific subdirectory (i.e., ! $(libdir)/gcc-lib/$(target_alias)/$(gcc_version)) ! instead of $(libdir). This option is useful if you ! intend to use several versions of gcc in parallel. In addition, ! libstdc++'s include files will be installed in ! $(libdir)/gcc-lib/$(target_alias)/$(gcc_version)/include/g++, ! unless you also specify ! --with-gxx-include-dir=_dirname_ during configuration.

      --with-gxx-include-dir=<include-files dir> --- 147,160 ----
      --enable-version-specific-runtime-libs

      Specify that run-time libraries should be installed in the ! compiler-specific subdirectory (i.e., ! ${libdir}/gcc-lib/${target_alias}/${gcc_version}) ! instead of ${libdir}. This option is useful if you ! intend to use several versions of gcc in parallel. In addition, ! libstdc++'s include files will be installed in ! ${libdir}/gcc-lib/${target_alias}/${gcc_version}/include/g++, ! unless you also specify ! --with-gxx-include-dir=dirname during configuration.

      --with-gxx-include-dir=<include-files dir> *************** options *** 212,218 ****

      ! $Id: configopts.html,v 1.6.2.3 2001/05/14 19:48:55 bkoz Exp $

      --- 211,217 ----

      ! $Id: configopts.html,v 1.6.2.5 2001/07/09 21:55:36 pme Exp $

      diff -Nrc3pad gcc-3.0/libstdc++-v3/docs/html/explanations.html gcc-3.0.1/libstdc++-v3/docs/html/explanations.html *** gcc-3.0/libstdc++-v3/docs/html/explanations.html Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/libstdc++-v3/docs/html/explanations.html Mon Jul 9 12:38:58 2001 *************** *** 0 **** --- 1,74 ---- + + + + + + + + Explanatory notes about libstdc++-v3 design + + + + + +

      Explanatory notes about libstdc++-v3 + design

      + +

      The latest version of this document is always available at + + http://gcc.gnu.org/onlinedocs/libstdc++/explanations.html. +

      + +

      To the libstdc++-v3 homepage. + + + +


      +

      "I/O packages", --enable-cstdio

      +

      In addition to all the nifty things which C++ can do for I/O, its library + also includes all of the I/O capabilites of C. Making them work together + can be a challenge, not only + for the programmer but for the + implementors as well. +

      +

      There are two ways to do a C++ library: the cool way, and the easy way. + More specifically, the cool-but-easy-to-get-wrong way, and the + easy-to-guarantee-correct-behavior way. For 3.0, the easy way is used. +

      +

      Choosing 'stdio' is the easy way. It builds a C++ library which forwards + all operations to the C library. Many of the C++ I/O functions are + specified in the standard 'as if' they called a certain C function; the + easiest way to get it correct is to actually call that function. The + disadvantage is that the C++ code will run slower (fortunately, the layer + is thin). +

      +

      Choosing 'libio' is the cool way; it allows C++ and C to share some + buffers. It's disabled because of tricky synchronization issues. Other + cool ways (various methods of sharing resources between C and C++ + facilities, instead of layering) are possible. This approach can speed + up I/O significantly. +

      +

      Other packages are possible. For a new package, a header must be + written to provide types like streamsize (usually just a typedef), as + well as some internal types like __c_file_type and + __c_lock (for the stdio case, these are FILE (as in + "FILE*") and a simple POSIX mutex, respectively). An + interface class called __basic_file must also be filled in; + as an example, for the stdio case, these member functions are all + inline calles to fread, fwrite, etc. +

      +

      Return to the top of the page or + to the homepage. +

      + + + + +
      +

      + $Id: explanations.html,v 1.1.2.1 2001/07/09 19:38:58 pme Exp $ +

      + + + + diff -Nrc3pad gcc-3.0/libstdc++-v3/docs/html/faq/index.html gcc-3.0.1/libstdc++-v3/docs/html/faq/index.html *** gcc-3.0/libstdc++-v3/docs/html/faq/index.html Wed May 30 14:59:33 2001 --- gcc-3.0.1/libstdc++-v3/docs/html/faq/index.html Wed Jul 18 14:39:58 2001 *************** *** 9,15 **** ** Locations of "the most recent snapshot is the Nth" text are ** answers 1_1, 1_4, 4_1, 5_6. --> ! --- 9,15 ---- ** Locations of "the most recent snapshot is the Nth" text are ** answers 1_1, 1_4, 4_1, 5_6. --> ! *************** which is no longer available, thanks dej *** 241,247 ****

      If you have a question that you think should be included here, or if you have a question about a question/answer here, ! contact Phil Edwards or Gabriel Dos Reis.

      --- 241,247 ----

      If you have a question that you think should be included here, or if you have a question about a question/answer here, ! contact Phil Edwards or Gabriel Dos Reis.

      *************** which is no longer available, thanks dej *** 257,263 **** easier and more automated than building the GCC 2.[78] series was. If you are using GCC 2.95, you can still build earlier snapshots of libstdc++. !
    8. GNU Make is the only make that supports these makefiles.
    9. The GNU Autotools are needed if you are messing with the configury or makefiles. --- 257,263 ---- easier and more automated than building the GCC 2.[78] series was. If you are using GCC 2.95, you can still build earlier snapshots of libstdc++. !
    10. GNU Make is recommended, but should not be required.
    11. The GNU Autotools are needed if you are messing with the configury or makefiles. *************** which is no longer available, thanks dej *** 304,316 ****

      2.4 How do I know if it works?

      libstdc++-v3 comes with its own testsuite. You do not need ! to actually install the library ("gmake install") to run the testsuite.

      To run the testsuite on the library after building it, use ! "gmake check" while in your build directory. To run the testsuite on the library after building and installing it, ! use "gmake check-install" instead.

      If you find bugs in the testsuite programs themselves, or if you think of a new test program that should be added to the --- 304,316 ----


      2.4 How do I know if it works?

      libstdc++-v3 comes with its own testsuite. You do not need ! to actually install the library ("make install") to run the testsuite.

      To run the testsuite on the library after building it, use ! "make check" while in your build directory. To run the testsuite on the library after building and installing it, ! use "make check-install" instead.

      If you find bugs in the testsuite programs themselves, or if you think of a new test program that should be added to the *************** http://clisp.cons.org/~haible/gccinclude *** 551,565 **** than a typedef for T* outweighs nearly all opposing arguments.


      5.2 What's next after libstdc++-v3?

      Hopefully, not much. The goal of libstdc++-v3 is to produce a fully-compliant, fully-portable Standard Library. After that, we're mostly done: there won't be any more compliance ! work to do.

      !

      The ISO Committee will meet periodically to review Defect Reports in the C++ Standard. Undoubtedly some of these will result in changes to the Standard, which will be reflected in patches to libstdc++. Some of that is already happening, see 4.2. Some of --- 551,572 ---- than a typedef for T* outweighs nearly all opposing arguments.

      +

      Code which does assume that a vector iterator i + is a pointer can often be fixed by changing i in + certain expressions to &*i . Future revisions + of the Standard are expected to bless this usage for + vector<> (but not for basic_string<>). +


      5.2 What's next after libstdc++-v3?

      Hopefully, not much. The goal of libstdc++-v3 is to produce a fully-compliant, fully-portable Standard Library. After that, we're mostly done: there won't be any more compliance ! work to do. However:

      !
        !
      1. The ISO Committee will meet periodically to review Defect Reports in the C++ Standard. Undoubtedly some of these will result in changes to the Standard, which will be reflected in patches to libstdc++. Some of that is already happening, see 4.2. Some of *************** http://clisp.cons.org/~haible/gccinclude *** 567,573 **** we add code to the library based on what the current proposed resolution specifies.

        !

        The current libstdc++ contains extensions to the Library which must be explicitly requested by client code (for example, the hash tables from SGI). Other extensions may be added to libstdc++-v3 if they seem to be "standard" enough. --- 574,589 ---- we add code to the library based on what the current proposed resolution specifies.

        !
      2. Performance tuning. Lots of performance tuning. This too is ! already underway for post-3.0 releases, starting with memory ! expansion in container classes and buffer usage in synchronized ! stream objects. !

        !
      3. An ABI for libstdc++ will eventually be developed, so that ! multiple binary-incompatible copies of the library can be replaced ! with a single backwards-compatible library, like libgcc_s.so is. !

        !
      4. The current libstdc++ contains extensions to the Library which must be explicitly requested by client code (for example, the hash tables from SGI). Other extensions may be added to libstdc++-v3 if they seem to be "standard" enough. *************** http://clisp.cons.org/~haible/gccinclude *** 575,580 **** --- 591,597 ---- Bugfixes and rewrites (to improve or fix thread safety, for instance) will of course be a continuing task.

        +

      This question about the next libstdc++ prompted some brief but *************** HREF="http://gcc.gnu.org/ml/libstdc++/19 *** 584,593 ****


      5.3 What about the STL from SGI?

      !

      The STL from SGI ! is merged into libstdc++-v3 with changes as necessary. ! Currently release 3.3 is being used as an initial codebase, plus ! changes, fixes, and extensions.

      In particular, string is not from SGI and makes no use of their "rope" class (which is included as an --- 601,611 ----


      5.3 What about the STL from SGI?

      !

      The STL from SGI, ! version 3.3, was the most recent merge of the STL codebase. The ! code in libstdc++ contains many fixes and changes, and it is ! very likely that the SGI code is no longer under active ! development. We expect that no future merges will take place.

      In particular, string is not from SGI and makes no use of their "rope" class (which is included as an *************** HREF="http://gcc.gnu.org/ml/libstdc++/19 *** 660,666 ****

      Comments and suggestions are welcome, and may be sent to the mailing list. !
      $Id: index.html,v 1.2.4.4 2001/05/30 21:59:33 pme Exp $

      --- 678,684 ----

      Comments and suggestions are welcome, and may be sent to the mailing list. !
      $Id: index.html,v 1.2.4.5 2001/07/18 21:39:58 pme Exp $

      diff -Nrc3pad gcc-3.0/libstdc++-v3/docs/html/faq/index.txt gcc-3.0.1/libstdc++-v3/docs/html/faq/index.txt *** gcc-3.0/libstdc++-v3/docs/html/faq/index.txt Wed May 30 14:59:33 2001 --- gcc-3.0.1/libstdc++-v3/docs/html/faq/index.txt Wed Jul 18 14:39:58 2001 *************** *** 187,193 **** more automated than building the GCC 2.[78] series was. If you are using GCC 2.95, you can still build earlier snapshots of libstdc++. ! * GNU Make is the only make that supports these makefiles. * The GNU Autotools are needed if you are messing with the configury or makefiles. --- 187,193 ---- more automated than building the GCC 2.[78] series was. If you are using GCC 2.95, you can still build earlier snapshots of libstdc++. ! * GNU Make is recommended, but should not be required. * The GNU Autotools are needed if you are messing with the configury or makefiles. *************** *** 228,238 **** 2.4 How do I know if it works? libstdc++-v3 comes with its own testsuite. You do not need to actually ! install the library ("gmake install") to run the testsuite. ! To run the testsuite on the library after building it, use "gmake check" while in your build directory. To run the testsuite on the ! library after building and installing it, use "gmake check-install" instead. If you find bugs in the testsuite programs themselves, or if you think --- 228,238 ---- 2.4 How do I know if it works? libstdc++-v3 comes with its own testsuite. You do not need to actually ! install the library ("make install") to run the testsuite. ! To run the testsuite on the library after building it, use "make check" while in your build directory. To run the testsuite on the ! library after building and installing it, use "make check-install" instead. If you find bugs in the testsuite programs themselves, or if you think *************** http://clisp.cons.org/~haible/gccinclude *** 430,456 **** were never guaranteed by the Standard anyway. The type-safety achieved by making iterators a real class rather than a typedef for T* outweighs nearly all opposing arguments. _________________________________________________________________ 5.2 What's next after libstdc++-v3? Hopefully, not much. The goal of libstdc++-v3 is to produce a fully-compliant, fully-portable Standard Library. After that, we're ! mostly done: there won't be any more compliance work to do. ! ! The ISO Committee will meet periodically to review Defect Reports in ! the C++ Standard. Undoubtedly some of these will result in changes to ! the Standard, which will be reflected in patches to libstdc++. Some of ! that is already happening, see 4.2. Some of those changes are being ! predicted by the library maintainers, and we add code to the library ! based on what the current proposed resolution specifies. ! ! The current libstdc++ contains extensions to the Library which must be ! explicitly requested by client code (for example, the hash tables from ! SGI). Other extensions may be added to libstdc++-v3 if they seem to be ! "standard" enough. (For example, the "long long" type from C99.) ! Bugfixes and rewrites (to improve or fix thread safety, for instance) ! will of course be a continuing task. [69]This question about the next libstdc++ prompted some brief but interesting [70]speculation. --- 430,467 ---- were never guaranteed by the Standard anyway. The type-safety achieved by making iterators a real class rather than a typedef for T* outweighs nearly all opposing arguments. + + Code which does assume that a vector iterator i is a pointer can often + be fixed by changing i in certain expressions to &*i . Future + revisions of the Standard are expected to bless this usage for + vector<> (but not for basic_string<>). _________________________________________________________________ 5.2 What's next after libstdc++-v3? Hopefully, not much. The goal of libstdc++-v3 is to produce a fully-compliant, fully-portable Standard Library. After that, we're ! mostly done: there won't be any more compliance work to do. However: ! 1. The ISO Committee will meet periodically to review Defect Reports ! in the C++ Standard. Undoubtedly some of these will result in ! changes to the Standard, which will be reflected in patches to ! libstdc++. Some of that is already happening, see 4.2. Some of ! those changes are being predicted by the library maintainers, and ! we add code to the library based on what the current proposed ! resolution specifies. ! 2. Performance tuning. Lots of performance tuning. This too is ! already underway for post-3.0 releases, starting with memory ! expansion in container classes and buffer usage in synchronized ! stream objects. ! 3. An ABI for libstdc++ will eventually be developed, so that ! multiple binary-incompatible copies of the library can be replaced ! with a single backwards-compatible library, like libgcc_s.so is. ! 4. The current libstdc++ contains extensions to the Library which ! must be explicitly requested by client code (for example, the hash ! tables from SGI). Other extensions may be added to libstdc++-v3 if ! they seem to be "standard" enough. (For example, the "long long" ! type from C99.) Bugfixes and rewrites (to improve or fix thread ! safety, for instance) will of course be a continuing task. [69]This question about the next libstdc++ prompted some brief but interesting [70]speculation. *************** http://clisp.cons.org/~haible/gccinclude *** 458,466 **** 5.3 What about the STL from SGI? ! The [71]STL from SGI is merged into libstdc++-v3 with changes as ! necessary. Currently release 3.3 is being used as an initial codebase, ! plus changes, fixes, and extensions. In particular, string is not from SGI and makes no use of their "rope" class (which is included as an optional extension), nor is valarray --- 469,478 ---- 5.3 What about the STL from SGI? ! The [71]STL from SGI, version 3.3, was the most recent merge of the ! STL codebase. The code in libstdc++ contains many fixes and changes, ! and it is very likely that the SGI code is no longer under active ! development. We expect that no future merges will take place. In particular, string is not from SGI and makes no use of their "rope" class (which is included as an optional extension), nor is valarray *************** http://clisp.cons.org/~haible/gccinclude *** 517,523 **** Comments and suggestions are welcome, and may be sent to [78]the mailing list. ! $Id: index.txt,v 1.2.4.4 2001/05/30 21:59:33 pme Exp $ References --- 529,535 ---- Comments and suggestions are welcome, and may be sent to [78]the mailing list. ! $Id: index.txt,v 1.2.4.5 2001/07/18 21:39:58 pme Exp $ References *************** References *** 571,577 **** 48. http://www.boost.org/ 49. http://gcc.gnu.org/fom_serv/cache/33.html 50. mailto:libstdc++@gcc.gnu.org ! 51. mailto:pme@sources.redhat.com 52. mailto:gdr@gcc.gnu.org 53. ../documentation.html 54. ../17_intro/RELEASE-NOTES --- 583,589 ---- 48. http://www.boost.org/ 49. http://gcc.gnu.org/fom_serv/cache/33.html 50. mailto:libstdc++@gcc.gnu.org ! 51. mailto:pme@gcc.gnu.org 52. mailto:gdr@gcc.gnu.org 53. ../documentation.html 54. ../17_intro/RELEASE-NOTES diff -Nrc3pad gcc-3.0/libstdc++-v3/include/Makefile.am gcc-3.0.1/libstdc++-v3/include/Makefile.am *** gcc-3.0/libstdc++-v3/include/Makefile.am Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/libstdc++-v3/include/Makefile.am Fri Aug 17 22:03:40 2001 *************** *** 0 **** --- 1,428 ---- + ## Makefile for the include subdirectory of the GNU C++ Standard library. + ## + ## Copyright (C) 2001 Free Software Foundation, Inc. + ## + ## This file is part of the libstdc++ version 3 distribution. + ## Process this file with automake to produce Makefile.in. + + ## This file is part of the GNU ISO C++ Library. This library is free + ## software; you can redistribute it and/or modify it under the + ## terms of the GNU General Public License as published by the + ## Free Software Foundation; either version 2, or (at your option) + ## any later version. + + ## This library is distributed in the hope that it will be useful, + ## but WITHOUT ANY WARRANTY; without even the implied warranty of + ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ## GNU General Public License for more details. + + ## You should have received a copy of the GNU General Public License along + ## with this library; see the file COPYING. If not, write to the Free + ## Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + ## USA. + + ## $Id: Makefile.am,v 1.1.6.4 2001/08/18 05:03:40 ljrittle Exp $ + + AUTOMAKE_OPTIONS = 1.3 gnits + MAINT_CHARSET = latin1 + + mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs + + # Cross compiler and multilib support. + CXX = @glibcpp_CXX@ + glibcpp_srcdir=@glibcpp_srcdir@ + glibcpp_builddir=@glibcpp_builddir@ + + bits_srcdir = ${glibcpp_srcdir}/include/bits + bits_builddir = ./bits + bits_headers = \ + ${bits_srcdir}/basic_file.h \ + ${bits_srcdir}/basic_ios.h \ + ${bits_srcdir}/basic_ios.tcc \ + ${bits_srcdir}/basic_string.h \ + ${bits_srcdir}/basic_string.tcc \ + ${bits_srcdir}/boost_concept_check.h \ + ${bits_srcdir}/char_traits.h \ + ${bits_srcdir}/codecvt.h \ + ${bits_srcdir}/concept_check.h \ + ${bits_srcdir}/cpp_type_traits.h \ + ${bits_srcdir}/fpos.h \ + ${bits_srcdir}/fstream.tcc \ + ${bits_srcdir}/functexcept.h \ + ${bits_srcdir}/generic_shadow.h \ + ${bits_srcdir}/gslice.h \ + ${bits_srcdir}/gslice_array.h \ + ${bits_srcdir}/indirect_array.h \ + ${bits_srcdir}/ios_base.h \ + ${bits_srcdir}/istream.tcc \ + ${bits_srcdir}/locale_facets.h \ + ${bits_srcdir}/locale_facets.tcc \ + ${bits_srcdir}/localefwd.h \ + ${bits_srcdir}/mask_array.h \ + ${bits_srcdir}/ostream.tcc \ + ${bits_srcdir}/pthread_allocimpl.h \ + ${bits_srcdir}/sbuf_iter.h \ + ${bits_srcdir}/slice.h \ + ${bits_srcdir}/slice_array.h \ + ${bits_srcdir}/sstream.tcc \ + ${bits_srcdir}/std_algorithm.h \ + ${bits_srcdir}/std_bitset.h \ + ${bits_srcdir}/std_complex.h \ + ${bits_srcdir}/std_deque.h \ + ${bits_srcdir}/std_fstream.h \ + ${bits_srcdir}/std_functional.h \ + ${bits_srcdir}/std_iomanip.h \ + ${bits_srcdir}/std_ios.h \ + ${bits_srcdir}/std_iosfwd.h \ + ${bits_srcdir}/std_iostream.h \ + ${bits_srcdir}/std_istream.h \ + ${bits_srcdir}/std_iterator.h \ + ${bits_srcdir}/std_limits.h \ + ${bits_srcdir}/std_list.h \ + ${bits_srcdir}/std_locale.h \ + ${bits_srcdir}/std_map.h \ + ${bits_srcdir}/std_memory.h \ + ${bits_srcdir}/std_numeric.h \ + ${bits_srcdir}/std_ostream.h \ + ${bits_srcdir}/std_queue.h \ + ${bits_srcdir}/std_set.h \ + ${bits_srcdir}/std_sstream.h \ + ${bits_srcdir}/std_stack.h \ + ${bits_srcdir}/std_stdexcept.h \ + ${bits_srcdir}/std_streambuf.h \ + ${bits_srcdir}/std_string.h \ + ${bits_srcdir}/std_utility.h \ + ${bits_srcdir}/std_valarray.h \ + ${bits_srcdir}/std_vector.h \ + ${bits_srcdir}/stl_algo.h \ + ${bits_srcdir}/stl_algobase.h \ + ${bits_srcdir}/stl_alloc.h \ + ${bits_srcdir}/stl_bvector.h \ + ${bits_srcdir}/stl_construct.h \ + ${bits_srcdir}/stl_deque.h \ + ${bits_srcdir}/stl_function.h \ + ${bits_srcdir}/stl_heap.h \ + ${bits_srcdir}/stl_iterator.h \ + ${bits_srcdir}/stl_iterator_base_funcs.h \ + ${bits_srcdir}/stl_iterator_base_types.h \ + ${bits_srcdir}/stl_list.h \ + ${bits_srcdir}/stl_map.h \ + ${bits_srcdir}/stl_multimap.h \ + ${bits_srcdir}/stl_multiset.h \ + ${bits_srcdir}/stl_numeric.h \ + ${bits_srcdir}/stl_pair.h \ + ${bits_srcdir}/stl_pthread_alloc.h \ + ${bits_srcdir}/stl_queue.h \ + ${bits_srcdir}/stl_raw_storage_iter.h \ + ${bits_srcdir}/stl_relops.h \ + ${bits_srcdir}/stl_set.h \ + ${bits_srcdir}/stl_stack.h \ + ${bits_srcdir}/stl_tempbuf.h \ + ${bits_srcdir}/stl_threads.h \ + ${bits_srcdir}/stl_tree.h \ + ${bits_srcdir}/stl_uninitialized.h \ + ${bits_srcdir}/stl_vector.h \ + ${bits_srcdir}/streambuf.tcc \ + ${bits_srcdir}/stringfwd.h \ + ${bits_srcdir}/type_traits.h \ + ${bits_srcdir}/valarray_array.h \ + ${bits_srcdir}/valarray_array.tcc \ + ${bits_srcdir}/valarray_meta.h + + backward_srcdir = ${glibcpp_srcdir}/include/backward + backward_builddir = ./backward + backward_headers = \ + ${backward_srcdir}/complex.h \ + ${backward_srcdir}/iomanip.h \ + ${backward_srcdir}/istream.h \ + ${backward_srcdir}/ostream.h \ + ${backward_srcdir}/stream.h \ + ${backward_srcdir}/streambuf.h \ + ${backward_srcdir}/algo.h \ + ${backward_srcdir}/algobase.h \ + ${backward_srcdir}/alloc.h \ + ${backward_srcdir}/bvector.h \ + ${backward_srcdir}/defalloc.h \ + ${backward_srcdir}/deque.h \ + ${backward_srcdir}/function.h \ + ${backward_srcdir}/hash_map.h \ + ${backward_srcdir}/hash_set.h \ + ${backward_srcdir}/hashtable.h \ + ${backward_srcdir}/heap.h \ + ${backward_srcdir}/iostream.h \ + ${backward_srcdir}/iterator.h \ + ${backward_srcdir}/list.h \ + ${backward_srcdir}/map.h \ + ${backward_srcdir}/multimap.h \ + ${backward_srcdir}/new.h \ + ${backward_srcdir}/multiset.h \ + ${backward_srcdir}/pair.h \ + ${backward_srcdir}/queue.h \ + ${backward_srcdir}/rope.h \ + ${backward_srcdir}/set.h \ + ${backward_srcdir}/slist.h \ + ${backward_srcdir}/stack.h \ + ${backward_srcdir}/tempbuf.h \ + ${backward_srcdir}/tree.h \ + ${backward_srcdir}/vector.h \ + ${backward_srcdir}/fstream.h \ + ${backward_srcdir}/strstream.h \ + ${backward_srcdir}/strstream \ + ${backward_srcdir}/backward_warning.h + + ext_srcdir = ${glibcpp_srcdir}/include/ext + ext_builddir = ./ext + ext_headers = \ + ${ext_srcdir}/rope \ + ${ext_srcdir}/ropeimpl.h \ + ${ext_srcdir}/stl_rope.h \ + ${ext_srcdir}/slist \ + ${ext_srcdir}/hash_map \ + ${ext_srcdir}/hash_set \ + ${ext_srcdir}/stl_hashtable.h \ + ${ext_srcdir}/stl_hash_fun.h + + # This is the common subset of files that all three "C" header models use. + c_base_srcdir = @C_INCLUDE_DIR@/bits + c_base_builddir = ./bits + c_base_headers = \ + ${c_base_srcdir}/std_cassert.h \ + ${c_base_srcdir}/std_cctype.h \ + ${c_base_srcdir}/std_cerrno.h \ + ${c_base_srcdir}/std_cfloat.h \ + ${c_base_srcdir}/std_climits.h \ + ${c_base_srcdir}/std_clocale.h \ + ${c_base_srcdir}/std_cmath.h \ + ${c_base_srcdir}/std_csetjmp.h \ + ${c_base_srcdir}/std_csignal.h \ + ${c_base_srcdir}/std_cstdarg.h \ + ${c_base_srcdir}/std_cstddef.h \ + ${c_base_srcdir}/std_cstdio.h \ + ${c_base_srcdir}/std_cstdlib.h \ + ${c_base_srcdir}/std_cstring.h \ + ${c_base_srcdir}/std_ctime.h \ + ${c_base_srcdir}/std_cwchar.h \ + ${c_base_srcdir}/std_cwctype.h \ + ${c_base_srcdir}/cmath.tcc + + ##c_compatibility_srcdir = ${glibcpp_srcdir}/include/c_compatibility + ##c_compatibility_builddir = ./ + ##c_compatibility_headers = \ + ## ${c_compatibility_srcdir}/assert.h \ + ## ${c_compatibility_srcdir}/ctype.h \ + ## ${c_compatibility_srcdir}/errno.h \ + ## ${c_compatibility_srcdir}/float.h \ + ## ${c_compatibility_srcdir}/limits.h \ + ## ${c_compatibility_srcdir}/locale.h \ + ## ${c_compatibility_srcdir}/math.h \ + ## ${c_compatibility_srcdir}/setjmp.h \ + ## ${c_compatibility_srcdir}/signal.h \ + ## ${c_compatibility_srcdir}/stdarg.h \ + ## ${c_compatibility_srcdir}/stddef.h \ + ## ${c_compatibility_srcdir}/stdio.h \ + ## ${c_compatibility_srcdir}/stdlib.h \ + ## ${c_compatibility_srcdir}/string.h \ + ## ${c_compatibility_srcdir}/time.h \ + ## ${c_compatibility_srcdir}/wchar.h \ + ## ${c_compatibility_srcdir}/wctype.h + + std_srcdir = ${glibcpp_srcdir}/include/std + std_builddir = ./ + std_headers = \ + ${std_srcdir}/algorithm \ + ${std_srcdir}/bitset \ + ${std_srcdir}/complex \ + ${std_srcdir}/deque \ + ${std_srcdir}/fstream \ + ${std_srcdir}/functional \ + ${std_srcdir}/iomanip \ + ${std_srcdir}/ios \ + ${std_srcdir}/iosfwd \ + ${std_srcdir}/iostream \ + ${std_srcdir}/istream \ + ${std_srcdir}/iterator \ + ${std_srcdir}/limits \ + ${std_srcdir}/list \ + ${std_srcdir}/locale \ + ${std_srcdir}/map \ + ${std_srcdir}/memory \ + ${std_srcdir}/numeric \ + ${std_srcdir}/ostream \ + ${std_srcdir}/queue \ + ${std_srcdir}/set \ + ${std_srcdir}/sstream \ + ${std_srcdir}/stack \ + ${std_srcdir}/stdexcept \ + ${std_srcdir}/streambuf \ + ${std_srcdir}/string \ + ${std_srcdir}/utility \ + ${std_srcdir}/valarray \ + ${std_srcdir}/vector \ + ${std_srcdir}/cassert \ + ${std_srcdir}/cctype \ + ${std_srcdir}/cerrno \ + ${std_srcdir}/cfloat \ + ${std_srcdir}/climits \ + ${std_srcdir}/clocale \ + ${std_srcdir}/ciso646 \ + ${std_srcdir}/cmath \ + ${std_srcdir}/csetjmp \ + ${std_srcdir}/csignal \ + ${std_srcdir}/cstdarg \ + ${std_srcdir}/cstddef \ + ${std_srcdir}/cstdio \ + ${std_srcdir}/cstdlib \ + ${std_srcdir}/cstring \ + ${std_srcdir}/ctime \ + ${std_srcdir}/cwchar \ + ${std_srcdir}/cwctype + + target_srcdir = ${glibcpp_srcdir}/@OS_INC_SRCDIR@ + target_builddir = ./${target_alias}/bits + target_headers = \ + ${target_srcdir}/ctype_base.h \ + ${target_srcdir}/ctype_inline.h \ + ${target_srcdir}/ctype_noninline.h \ + ${target_srcdir}/os_defines.h \ + ${glibcpp_srcdir}/@ATOMICITY_INC_SRCDIR@/atomicity.h \ + ${glibcpp_srcdir}/@LIMITS_INC_SRCDIR@/limits.h + + thread_builddir = ./${target_alias}/bits + thread_headers = \ + ${thread_builddir}/gthr.h \ + ${thread_builddir}/gthr-single.h \ + ${thread_builddir}/gthr-default.h + + # List of all timestamp files. By keeping only one copy of this list, both + # CLEANFILES and all-local are kept up-to-date. + # XXX stamp-c_compatibility + allstamps = stamp-std stamp-bits stamp-c_base stamp-backward stamp-ext \ + stamp-target stamp-thread stamp-file_model stamp-io stamp-locale + + # By adding these files here, automake will remove them for 'make clean' + CLEANFILES = ${allstamps} + + # Here are the rules for building the headers + all-local: \ + ${target_builddir}/c++config.h \ + ${allstamps} + + stamp-std: ${std_headers} + @if [ ! -d "${std_builddir}" ]; then \ + mkdir -p ${std_builddir} ;\ + fi ;\ + (cd ${std_builddir} && @LN_S@ $? .) ;\ + echo `date` > stamp-std + + stamp-bits: ${bits_headers} + @if [ ! -d "${bits_builddir}" ]; then \ + mkdir -p ${bits_builddir} ;\ + fi ;\ + (cd ${bits_builddir} && @LN_S@ $? .) ;\ + echo `date` > stamp-bits + + stamp-c_base: ${c_base_headers} + @if [ ! -d "${c_base_builddir}" ]; then \ + mkdir -p ${c_base_builddir} ;\ + fi ;\ + (cd ${c_base_builddir} && @LN_S@ $? .) ;\ + echo `date` > stamp-c_base + + stamp-c_compatibility: ${c_compatibility_headers} + @if [ ! -d "${c_compatibility_builddir}" ]; then \ + mkdir -p ${c_compatibility_builddir} ;\ + fi ;\ + (cd ${c_compatibility_builddir} && @LN_S@ $? .) ;\ + echo `date` > stamp-c_compatibility + + stamp-backward: ${backward_headers} + @if [ ! -d "${backward_builddir}" ]; then \ + mkdir -p ${backward_builddir} ;\ + fi ;\ + (cd ${backward_builddir} && @LN_S@ $? .) ;\ + echo `date` > stamp-backward + + stamp-ext: ${ext_headers} + @if [ ! -d "${ext_builddir}" ]; then \ + mkdir -p ${ext_builddir} ;\ + fi ;\ + (cd ${ext_builddir} && @LN_S@ $? .) ;\ + echo `date` > stamp-ext + + # Can't use $? in command, otherwise target_builddir will trigger it, and + # we get bizarre symlinks mazes. + stamp-target: ${target_headers} ${target_builddir} + @(cd ${target_builddir} && @LN_S@ ${target_headers} .) ;\ + echo `date` > stamp-target + + stamp-thread: ${thread_headers} ${thread_builddir} + @echo `date` > stamp-thread + + stamp-file_model: ${glibcpp_srcdir}/@BASIC_FILE_H@ ${target_builddir} + @(cd ${target_builddir} && @LN_S@ ${glibcpp_srcdir}/@BASIC_FILE_H@ basic_file_model.h) ;\ + echo `date` > stamp-file_model + + stamp-io: ${glibcpp_srcdir}/@CSTDIO_H@ ${target_builddir} + @(cd ${target_builddir} && @LN_S@ ${glibcpp_srcdir}/@CSTDIO_H@ c++io.h) ;\ + echo `date` > stamp-io + + stamp-locale: ${glibcpp_srcdir}/@CLOCALE_H@ ${target_builddir} + @(cd ${target_builddir} && @LN_S@ ${glibcpp_srcdir}/@CLOCALE_H@ c++locale.h) ;\ + echo `date` > stamp-locale + + # This target is kinda special. The timestamp on a directory gets modified + # whenever a file it contains gets modified, and that'll throw off all the + # build dependencies that need this target. On the other hand, someone + # could delete the directory and not the stamp file, faking out the make. + ${target_builddir}: stamp-${target_alias} + + stamp-${target_alias}: + @if [ ! -d ${target_builddir} ]; then \ + mkdir -p ${target_builddir} ;\ + fi + echo `date` > stamp-${target_alias} + + ${target_builddir}/c++config.h: ../config.h \ + ${glibcpp_srcdir}/include/bits/c++config \ + ${target_builddir} + @cat ${glibcpp_srcdir}/include/bits/c++config > $@ ;\ + sed -e 's/HAVE_/_GLIBCPP_HAVE_/g' \ + -e 's/PACKAGE/_GLIBCPP_PACKAGE/g' \ + -e 's/VERSION/_GLIBCPP_VERSION/g' \ + -e 's/WORDS_/_GLIBCPP_WORDS_/g' \ + < ${glibcpp_builddir}/config.h >> $@ ;\ + echo "#endif // _CPP_CPPCONFIG_" >>$@ + + glibcpp_thread_h = @glibcpp_thread_h@ + uppercase = [ABCDEFGHIJKLMNOPQRSTUVWXYZ_] + + ${thread_builddir}/gthr.h: + sed -e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCPP_\1/g' \ + -e 's,^#include "\(.*\)",#include ,g' \ + < ${glibcpp_srcdir}/../gcc/gthr.h > $@ + + ${thread_builddir}/gthr-single.h: + sed -e 's/\(UNUSED\)/_GLIBCPP_\1/g' \ + -e 's/\(GCC${uppercase}*_H\)/_GLIBCPP_\1/g' \ + < ${glibcpp_srcdir}/../gcc/gthr-single.h > $@ + + ${thread_builddir}/gthr-default.h: + sed -e 's/\(UNUSED\)/_GLIBCPP_\1/g' \ + -e 's/\(GCC${uppercase}*_H\)/_GLIBCPP_\1/g' \ + -e 's/\(${uppercase}*WEAK\)/_GLIBCPP_\1/g' \ + < ${glibcpp_srcdir}/../gcc/${glibcpp_thread_h} > $@ + + # One big happy istallation: just copy everything from the build to the + # install tree (except for the build stamps). + gxx_include_dir = @gxx_include_dir@ + + install-data-local: + for file in `find . ! -name stamp-\* -print`; do \ + installFile=${gxx_include_dir}/$${file} ;\ + if [ -d $${file} ]; then \ + $(INSTALL) -d $${installFile} ;\ + else \ + $(INSTALL_DATA) $${file} $${installFile} ;\ + fi ;\ + done + diff -Nrc3pad gcc-3.0/libstdc++-v3/include/Makefile.in gcc-3.0.1/libstdc++-v3/include/Makefile.in *** gcc-3.0/libstdc++-v3/include/Makefile.in Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/libstdc++-v3/include/Makefile.in Fri Aug 17 22:02:27 2001 *************** *** 0 **** --- 1,405 ---- + # Makefile.in generated automatically by automake 1.4 from Makefile.am + + # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. + + # This program is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY, to the extent permitted by law; without + # even the implied warranty of MERCHANTABILITY or FITNESS FOR A + # PARTICULAR PURPOSE. + + + SHELL = @SHELL@ + + srcdir = @srcdir@ + top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + prefix = @prefix@ + exec_prefix = @exec_prefix@ + + bindir = @bindir@ + sbindir = @sbindir@ + libexecdir = @libexecdir@ + datadir = @datadir@ + sysconfdir = @sysconfdir@ + sharedstatedir = @sharedstatedir@ + localstatedir = @localstatedir@ + libdir = @libdir@ + infodir = @infodir@ + mandir = @mandir@ + includedir = @includedir@ + oldincludedir = /usr/include + + DESTDIR = + + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ + + top_builddir = .. + + ACLOCAL = @ACLOCAL@ + AUTOCONF = @AUTOCONF@ + AUTOMAKE = @AUTOMAKE@ + AUTOHEADER = @AUTOHEADER@ + + INSTALL = @INSTALL@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + transform = @program_transform_name@ + + NORMAL_INSTALL = : + PRE_INSTALL = : + POST_INSTALL = : + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : + build_alias = @build_alias@ + build_triplet = @build@ + host_alias = @host_alias@ + host_triplet = @host@ + target_alias = @target_alias@ + target_triplet = @target@ + AR = @AR@ + AS = @AS@ + ATOMICITY_INC_SRCDIR = @ATOMICITY_INC_SRCDIR@ + BASIC_FILE_H = @BASIC_FILE_H@ + CC = @CC@ + CCODECVT_C = @CCODECVT_C@ + CLOCALE_H = @CLOCALE_H@ + CPP = @CPP@ + CSHADOW_FLAGS = @CSHADOW_FLAGS@ + CSTDIO_H = @CSTDIO_H@ + CXXCPP = @CXXCPP@ + C_INCLUDE_DIR = @C_INCLUDE_DIR@ + DEBUG_FLAGS = @DEBUG_FLAGS@ + DLLTOOL = @DLLTOOL@ + EXEEXT = @EXEEXT@ + EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@ + GCJ = @GCJ@ + GCJFLAGS = @GCJFLAGS@ + GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@ + GLIBCPP_IS_CROSS_COMPILING = @GLIBCPP_IS_CROSS_COMPILING@ + LIBIO_INCLUDES = @LIBIO_INCLUDES@ + LIBMATHOBJS = @LIBMATHOBJS@ + LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ + LIBSTRINGOBJS = @LIBSTRINGOBJS@ + LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ + LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@ + LIBTOOL = @LIBTOOL@ + LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@ + LN_S = @LN_S@ + MAINT = @MAINT@ + MAKEINFO = @MAKEINFO@ + OBJDUMP = @OBJDUMP@ + OBJEXT = @OBJEXT@ + OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@ + OPT_LDFLAGS = @OPT_LDFLAGS@ + OS_INC_SRCDIR = @OS_INC_SRCDIR@ + PACKAGE = @PACKAGE@ + RANLIB = @RANLIB@ + SECTION_FLAGS = @SECTION_FLAGS@ + SECTION_LDFLAGS = @SECTION_LDFLAGS@ + STRIP = @STRIP@ + TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ + USE_COMPLEX_LONG_DOUBLE = @USE_COMPLEX_LONG_DOUBLE@ + VERSION = @VERSION@ + WARN_FLAGS = @WARN_FLAGS@ + WERROR = @WERROR@ + enable_shared = @enable_shared@ + enable_static = @enable_static@ + glibcpp_CXX = @glibcpp_CXX@ + glibcpp_basedir = @glibcpp_basedir@ + glibcpp_prefixdir = @glibcpp_prefixdir@ + glibcpp_toolexecdir = @glibcpp_toolexecdir@ + glibcpp_toolexeclibdir = @glibcpp_toolexeclibdir@ + ifGNUmake = @ifGNUmake@ + libio_la = @libio_la@ + toplevel_srcdir = @toplevel_srcdir@ + + AUTOMAKE_OPTIONS = 1.3 gnits + MAINT_CHARSET = latin1 + + mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs + + # Cross compiler and multilib support. + CXX = @glibcpp_CXX@ + glibcpp_srcdir = @glibcpp_srcdir@ + glibcpp_builddir = @glibcpp_builddir@ + + bits_srcdir = ${glibcpp_srcdir}/include/bits + bits_builddir = ./bits + bits_headers = ${bits_srcdir}/basic_file.h ${bits_srcdir}/basic_ios.h ${bits_srcdir}/basic_ios.tcc ${bits_srcdir}/basic_string.h ${bits_srcdir}/basic_string.tcc ${bits_srcdir}/boost_concept_check.h ${bits_srcdir}/char_traits.h ${bits_srcdir}/codecvt.h ${bits_srcdir}/concept_check.h ${bits_srcdir}/cpp_type_traits.h ${bits_srcdir}/fpos.h ${bits_srcdir}/fstream.tcc ${bits_srcdir}/functexcept.h ${bits_srcdir}/generic_shadow.h ${bits_srcdir}/gslice.h ${bits_srcdir}/gslice_array.h ${bits_srcdir}/indirect_array.h ${bits_srcdir}/ios_base.h ${bits_srcdir}/istream.tcc ${bits_srcdir}/locale_facets.h ${bits_srcdir}/locale_facets.tcc ${bits_srcdir}/localefwd.h ${bits_srcdir}/mask_array.h ${bits_srcdir}/ostream.tcc ${bits_srcdir}/pthread_allocimpl.h ${bits_srcdir}/sbuf_iter.h ${bits_srcdir}/slice.h ${bits_srcdir}/slice_array.h ${bits_srcdir}/sstream.tcc ${bits_srcdir}/std_algorithm.h ${bits_srcdir}/std_bitset.h ${bits_srcdir}/std_complex.h ${bits_srcdir}/std_deque.h ${bits_srcdir}/std_fstream.h ${bits_srcdir}/std_functional.h ${bits_srcdir}/std_iomanip.h ${bits_srcdir}/std_ios.h ${bits_srcdir}/std_iosfwd.h ${bits_srcdir}/std_iostream.h ${bits_srcdir}/std_istream.h ${bits_srcdir}/std_iterator.h ${bits_srcdir}/std_limits.h ${bits_srcdir}/std_list.h ${bits_srcdir}/std_locale.h ${bits_srcdir}/std_map.h ${bits_srcdir}/std_memory.h ${bits_srcdir}/std_numeric.h ${bits_srcdir}/std_ostream.h ${bits_srcdir}/std_queue.h ${bits_srcdir}/std_set.h ${bits_srcdir}/std_sstream.h ${bits_srcdir}/std_stack.h ${bits_srcdir}/std_stdexcept.h ${bits_srcdir}/std_streambuf.h ${bits_srcdir}/std_string.h ${bits_srcdir}/std_utility.h ${bits_srcdir}/std_valarray.h ${bits_srcdir}/std_vector.h ${bits_srcdir}/stl_algo.h ${bits_srcdir}/stl_algobase.h ${bits_srcdir}/stl_alloc.h ${bits_srcdir}/stl_bvector.h ${bits_srcdir}/stl_construct.h ${bits_srcdir}/stl_deque.h ${bits_srcdir}/stl_function.h ${bits_srcdir}/stl_heap.h ${bits_srcdir}/stl_iterator.h ${bits_srcdir}/stl_iterator_base_funcs.h ${bits_srcdir}/stl_iterator_base_types.h ${bits_srcdir}/stl_list.h ${bits_srcdir}/stl_map.h ${bits_srcdir}/stl_multimap.h ${bits_srcdir}/stl_multiset.h ${bits_srcdir}/stl_numeric.h ${bits_srcdir}/stl_pair.h ${bits_srcdir}/stl_pthread_alloc.h ${bits_srcdir}/stl_queue.h ${bits_srcdir}/stl_raw_storage_iter.h ${bits_srcdir}/stl_relops.h ${bits_srcdir}/stl_set.h ${bits_srcdir}/stl_stack.h ${bits_srcdir}/stl_tempbuf.h ${bits_srcdir}/stl_threads.h ${bits_srcdir}/stl_tree.h ${bits_srcdir}/stl_uninitialized.h ${bits_srcdir}/stl_vector.h ${bits_srcdir}/streambuf.tcc ${bits_srcdir}/stringfwd.h ${bits_srcdir}/type_traits.h ${bits_srcdir}/valarray_array.h ${bits_srcdir}/valarray_array.tcc ${bits_srcdir}/valarray_meta.h + + + backward_srcdir = ${glibcpp_srcdir}/include/backward + backward_builddir = ./backward + backward_headers = ${backward_srcdir}/complex.h ${backward_srcdir}/iomanip.h ${backward_srcdir}/istream.h ${backward_srcdir}/ostream.h ${backward_srcdir}/stream.h ${backward_srcdir}/streambuf.h ${backward_srcdir}/algo.h ${backward_srcdir}/algobase.h ${backward_srcdir}/alloc.h ${backward_srcdir}/bvector.h ${backward_srcdir}/defalloc.h ${backward_srcdir}/deque.h ${backward_srcdir}/function.h ${backward_srcdir}/hash_map.h ${backward_srcdir}/hash_set.h ${backward_srcdir}/hashtable.h ${backward_srcdir}/heap.h ${backward_srcdir}/iostream.h ${backward_srcdir}/iterator.h ${backward_srcdir}/list.h ${backward_srcdir}/map.h ${backward_srcdir}/multimap.h ${backward_srcdir}/new.h ${backward_srcdir}/multiset.h ${backward_srcdir}/pair.h ${backward_srcdir}/queue.h ${backward_srcdir}/rope.h ${backward_srcdir}/set.h ${backward_srcdir}/slist.h ${backward_srcdir}/stack.h ${backward_srcdir}/tempbuf.h ${backward_srcdir}/tree.h ${backward_srcdir}/vector.h ${backward_srcdir}/fstream.h ${backward_srcdir}/strstream.h ${backward_srcdir}/strstream ${backward_srcdir}/backward_warning.h + + + ext_srcdir = ${glibcpp_srcdir}/include/ext + ext_builddir = ./ext + ext_headers = ${ext_srcdir}/rope ${ext_srcdir}/ropeimpl.h ${ext_srcdir}/stl_rope.h ${ext_srcdir}/slist ${ext_srcdir}/hash_map ${ext_srcdir}/hash_set ${ext_srcdir}/stl_hashtable.h ${ext_srcdir}/stl_hash_fun.h + + + # This is the common subset of files that all three "C" header models use. + c_base_srcdir = @C_INCLUDE_DIR@/bits + c_base_builddir = ./bits + c_base_headers = ${c_base_srcdir}/std_cassert.h ${c_base_srcdir}/std_cctype.h ${c_base_srcdir}/std_cerrno.h ${c_base_srcdir}/std_cfloat.h ${c_base_srcdir}/std_climits.h ${c_base_srcdir}/std_clocale.h ${c_base_srcdir}/std_cmath.h ${c_base_srcdir}/std_csetjmp.h ${c_base_srcdir}/std_csignal.h ${c_base_srcdir}/std_cstdarg.h ${c_base_srcdir}/std_cstddef.h ${c_base_srcdir}/std_cstdio.h ${c_base_srcdir}/std_cstdlib.h ${c_base_srcdir}/std_cstring.h ${c_base_srcdir}/std_ctime.h ${c_base_srcdir}/std_cwchar.h ${c_base_srcdir}/std_cwctype.h ${c_base_srcdir}/cmath.tcc + + + std_srcdir = ${glibcpp_srcdir}/include/std + std_builddir = ./ + std_headers = ${std_srcdir}/algorithm ${std_srcdir}/bitset ${std_srcdir}/complex ${std_srcdir}/deque ${std_srcdir}/fstream ${std_srcdir}/functional ${std_srcdir}/iomanip ${std_srcdir}/ios ${std_srcdir}/iosfwd ${std_srcdir}/iostream ${std_srcdir}/istream ${std_srcdir}/iterator ${std_srcdir}/limits ${std_srcdir}/list ${std_srcdir}/locale ${std_srcdir}/map ${std_srcdir}/memory ${std_srcdir}/numeric ${std_srcdir}/ostream ${std_srcdir}/queue ${std_srcdir}/set ${std_srcdir}/sstream ${std_srcdir}/stack ${std_srcdir}/stdexcept ${std_srcdir}/streambuf ${std_srcdir}/string ${std_srcdir}/utility ${std_srcdir}/valarray ${std_srcdir}/vector ${std_srcdir}/cassert ${std_srcdir}/cctype ${std_srcdir}/cerrno ${std_srcdir}/cfloat ${std_srcdir}/climits ${std_srcdir}/clocale ${std_srcdir}/ciso646 ${std_srcdir}/cmath ${std_srcdir}/csetjmp ${std_srcdir}/csignal ${std_srcdir}/cstdarg ${std_srcdir}/cstddef ${std_srcdir}/cstdio ${std_srcdir}/cstdlib ${std_srcdir}/cstring ${std_srcdir}/ctime ${std_srcdir}/cwchar ${std_srcdir}/cwctype + + + target_srcdir = ${glibcpp_srcdir}/@OS_INC_SRCDIR@ + target_builddir = ./${target_alias}/bits + target_headers = ${target_srcdir}/ctype_base.h ${target_srcdir}/ctype_inline.h ${target_srcdir}/ctype_noninline.h ${target_srcdir}/os_defines.h ${glibcpp_srcdir}/@ATOMICITY_INC_SRCDIR@/atomicity.h ${glibcpp_srcdir}/@LIMITS_INC_SRCDIR@/limits.h + + + thread_builddir = ./${target_alias}/bits + thread_headers = ${thread_builddir}/gthr.h ${thread_builddir}/gthr-single.h ${thread_builddir}/gthr-default.h + + + # List of all timestamp files. By keeping only one copy of this list, both + # CLEANFILES and all-local are kept up-to-date. + # XXX stamp-c_compatibility + allstamps = stamp-std stamp-bits stamp-c_base stamp-backward stamp-ext stamp-target stamp-thread stamp-file_model stamp-io stamp-locale + + + # By adding these files here, automake will remove them for 'make clean' + CLEANFILES = ${allstamps} + + glibcpp_thread_h = @glibcpp_thread_h@ + uppercase = [ABCDEFGHIJKLMNOPQRSTUVWXYZ_] + + # One big happy istallation: just copy everything from the build to the + # install tree (except for the build stamps). + gxx_include_dir = @gxx_include_dir@ + CONFIG_HEADER = ../config.h + CONFIG_CLEAN_FILES = + DIST_COMMON = Makefile.am Makefile.in + + + DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + + TAR = gtar + GZIP_ENV = --best + all: all-redirect + .SUFFIXES: + $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --cygnus include/Makefile + + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + tags: TAGS + TAGS: + + + distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + + subdir = include + + distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + info-am: + info: info-am + dvi-am: + dvi: dvi-am + check-am: + check: check-am + installcheck-am: + installcheck: installcheck-am + install-info-am: + install-info: install-info-am + install-exec-am: + install-exec: install-exec-am + + install-data-am: install-data-local + install-data: install-data-am + + install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + install: install-am + uninstall-am: + uninstall: uninstall-am + all-am: Makefile all-local + all-redirect: all-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install + installdirs: + + + mostlyclean-generic: + + clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + + distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + + maintainer-clean-generic: + mostlyclean-am: mostlyclean-generic + + mostlyclean: mostlyclean-am + + clean-am: clean-generic mostlyclean-am + + clean: clean-am + + distclean-am: distclean-generic clean-am + -rm -f libtool + + distclean: distclean-am + + maintainer-clean-am: maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + + maintainer-clean: maintainer-clean-am + + .PHONY: tags distdir info-am info dvi-am dvi check check-am \ + installcheck-am installcheck install-info-am install-info \ + install-exec-am install-exec install-data-local install-data-am \ + install-data install-am install uninstall-am uninstall all-local \ + all-redirect all-am all installdirs mostlyclean-generic \ + distclean-generic clean-generic maintainer-clean-generic clean \ + mostlyclean distclean maintainer-clean + + + # Here are the rules for building the headers + all-local: \ + ${target_builddir}/c++config.h \ + ${allstamps} + + stamp-std: ${std_headers} + @if [ ! -d "${std_builddir}" ]; then \ + mkdir -p ${std_builddir} ;\ + fi ;\ + (cd ${std_builddir} && @LN_S@ $? .) ;\ + echo `date` > stamp-std + + stamp-bits: ${bits_headers} + @if [ ! -d "${bits_builddir}" ]; then \ + mkdir -p ${bits_builddir} ;\ + fi ;\ + (cd ${bits_builddir} && @LN_S@ $? .) ;\ + echo `date` > stamp-bits + + stamp-c_base: ${c_base_headers} + @if [ ! -d "${c_base_builddir}" ]; then \ + mkdir -p ${c_base_builddir} ;\ + fi ;\ + (cd ${c_base_builddir} && @LN_S@ $? .) ;\ + echo `date` > stamp-c_base + + stamp-c_compatibility: ${c_compatibility_headers} + @if [ ! -d "${c_compatibility_builddir}" ]; then \ + mkdir -p ${c_compatibility_builddir} ;\ + fi ;\ + (cd ${c_compatibility_builddir} && @LN_S@ $? .) ;\ + echo `date` > stamp-c_compatibility + + stamp-backward: ${backward_headers} + @if [ ! -d "${backward_builddir}" ]; then \ + mkdir -p ${backward_builddir} ;\ + fi ;\ + (cd ${backward_builddir} && @LN_S@ $? .) ;\ + echo `date` > stamp-backward + + stamp-ext: ${ext_headers} + @if [ ! -d "${ext_builddir}" ]; then \ + mkdir -p ${ext_builddir} ;\ + fi ;\ + (cd ${ext_builddir} && @LN_S@ $? .) ;\ + echo `date` > stamp-ext + + # Can't use $? in command, otherwise target_builddir will trigger it, and + # we get bizarre symlinks mazes. + stamp-target: ${target_headers} ${target_builddir} + @(cd ${target_builddir} && @LN_S@ ${target_headers} .) ;\ + echo `date` > stamp-target + + stamp-thread: ${thread_headers} ${thread_builddir} + @echo `date` > stamp-thread + + stamp-file_model: ${glibcpp_srcdir}/@BASIC_FILE_H@ ${target_builddir} + @(cd ${target_builddir} && @LN_S@ ${glibcpp_srcdir}/@BASIC_FILE_H@ basic_file_model.h) ;\ + echo `date` > stamp-file_model + + stamp-io: ${glibcpp_srcdir}/@CSTDIO_H@ ${target_builddir} + @(cd ${target_builddir} && @LN_S@ ${glibcpp_srcdir}/@CSTDIO_H@ c++io.h) ;\ + echo `date` > stamp-io + + stamp-locale: ${glibcpp_srcdir}/@CLOCALE_H@ ${target_builddir} + @(cd ${target_builddir} && @LN_S@ ${glibcpp_srcdir}/@CLOCALE_H@ c++locale.h) ;\ + echo `date` > stamp-locale + + # This target is kinda special. The timestamp on a directory gets modified + # whenever a file it contains gets modified, and that'll throw off all the + # build dependencies that need this target. On the other hand, someone + # could delete the directory and not the stamp file, faking out the make. + ${target_builddir}: stamp-${target_alias} + + stamp-${target_alias}: + @if [ ! -d ${target_builddir} ]; then \ + mkdir -p ${target_builddir} ;\ + fi + echo `date` > stamp-${target_alias} + + ${target_builddir}/c++config.h: ../config.h \ + ${glibcpp_srcdir}/include/bits/c++config \ + ${target_builddir} + @cat ${glibcpp_srcdir}/include/bits/c++config > $@ ;\ + sed -e 's/HAVE_/_GLIBCPP_HAVE_/g' \ + -e 's/PACKAGE/_GLIBCPP_PACKAGE/g' \ + -e 's/VERSION/_GLIBCPP_VERSION/g' \ + -e 's/WORDS_/_GLIBCPP_WORDS_/g' \ + < ${glibcpp_builddir}/config.h >> $@ ;\ + echo "#endif // _CPP_CPPCONFIG_" >>$@ + + ${thread_builddir}/gthr.h: + sed -e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCPP_\1/g' \ + -e 's,^#include "\(.*\)",#include ,g' \ + < ${glibcpp_srcdir}/../gcc/gthr.h > $@ + + ${thread_builddir}/gthr-single.h: + sed -e 's/\(UNUSED\)/_GLIBCPP_\1/g' \ + -e 's/\(GCC${uppercase}*_H\)/_GLIBCPP_\1/g' \ + < ${glibcpp_srcdir}/../gcc/gthr-single.h > $@ + + ${thread_builddir}/gthr-default.h: + sed -e 's/\(UNUSED\)/_GLIBCPP_\1/g' \ + -e 's/\(GCC${uppercase}*_H\)/_GLIBCPP_\1/g' \ + -e 's/\(${uppercase}*WEAK\)/_GLIBCPP_\1/g' \ + < ${glibcpp_srcdir}/../gcc/${glibcpp_thread_h} > $@ + + install-data-local: + for file in `find . ! -name stamp-\* -print`; do \ + installFile=${gxx_include_dir}/$${file} ;\ + if [ -d $${file} ]; then \ + $(INSTALL) -d $${installFile} ;\ + else \ + $(INSTALL_DATA) $${file} $${installFile} ;\ + fi ;\ + done + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/algo.h gcc-3.0.1/libstdc++-v3/include/backward/algo.h *** gcc-3.0/libstdc++-v3/include/backward/algo.h Mon May 14 12:48:58 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/algo.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/algobase.h gcc-3.0.1/libstdc++-v3/include/backward/algobase.h *** gcc-3.0/libstdc++-v3/include/backward/algobase.h Mon May 14 12:48:59 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/algobase.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/alloc.h gcc-3.0.1/libstdc++-v3/include/backward/alloc.h *** gcc-3.0/libstdc++-v3/include/backward/alloc.h Mon May 14 12:48:59 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/alloc.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1996-1997 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/bvector.h gcc-3.0.1/libstdc++-v3/include/backward/bvector.h *** gcc-3.0/libstdc++-v3/include/backward/bvector.h Mon May 14 12:48:59 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/bvector.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/defalloc.h gcc-3.0.1/libstdc++-v3/include/backward/defalloc.h *** gcc-3.0/libstdc++-v3/include/backward/defalloc.h Mon May 14 12:48:59 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/defalloc.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/deque.h gcc-3.0.1/libstdc++-v3/include/backward/deque.h *** gcc-3.0/libstdc++-v3/include/backward/deque.h Mon May 14 12:49:00 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/deque.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/function.h gcc-3.0.1/libstdc++-v3/include/backward/function.h *** gcc-3.0/libstdc++-v3/include/backward/function.h Mon May 14 12:49:00 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/function.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/hash_map.h gcc-3.0.1/libstdc++-v3/include/backward/hash_map.h *** gcc-3.0/libstdc++-v3/include/backward/hash_map.h Mon May 14 12:49:00 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/hash_map.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1996 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/hash_set.h gcc-3.0.1/libstdc++-v3/include/backward/hash_set.h *** gcc-3.0/libstdc++-v3/include/backward/hash_set.h Mon May 14 12:49:01 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/hash_set.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1996 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/hashtable.h gcc-3.0.1/libstdc++-v3/include/backward/hashtable.h *** gcc-3.0/libstdc++-v3/include/backward/hashtable.h Mon May 14 12:49:01 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/hashtable.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1996,1997 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/heap.h gcc-3.0.1/libstdc++-v3/include/backward/heap.h *** gcc-3.0/libstdc++-v3/include/backward/heap.h Mon May 14 12:49:01 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/heap.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/iterator.h gcc-3.0.1/libstdc++-v3/include/backward/iterator.h *** gcc-3.0/libstdc++-v3/include/backward/iterator.h Mon May 14 12:49:01 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/iterator.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/list.h gcc-3.0.1/libstdc++-v3/include/backward/list.h *** gcc-3.0/libstdc++-v3/include/backward/list.h Mon May 14 12:49:01 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/list.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/map.h gcc-3.0.1/libstdc++-v3/include/backward/map.h *** gcc-3.0/libstdc++-v3/include/backward/map.h Mon May 14 12:49:01 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/map.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/multimap.h gcc-3.0.1/libstdc++-v3/include/backward/multimap.h *** gcc-3.0/libstdc++-v3/include/backward/multimap.h Mon May 14 12:49:01 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/multimap.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/multiset.h gcc-3.0.1/libstdc++-v3/include/backward/multiset.h *** gcc-3.0/libstdc++-v3/include/backward/multiset.h Mon May 14 12:49:01 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/multiset.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/pair.h gcc-3.0.1/libstdc++-v3/include/backward/pair.h *** gcc-3.0/libstdc++-v3/include/backward/pair.h Mon May 14 12:49:02 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/pair.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/rope.h gcc-3.0.1/libstdc++-v3/include/backward/rope.h *** gcc-3.0/libstdc++-v3/include/backward/rope.h Mon May 14 12:49:02 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/rope.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1997 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/set.h gcc-3.0.1/libstdc++-v3/include/backward/set.h *** gcc-3.0/libstdc++-v3/include/backward/set.h Mon May 14 12:49:02 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/set.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/slist.h gcc-3.0.1/libstdc++-v3/include/backward/slist.h *** gcc-3.0/libstdc++-v3/include/backward/slist.h Mon May 14 12:49:02 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/slist.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1997 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/stack.h gcc-3.0.1/libstdc++-v3/include/backward/stack.h *** gcc-3.0/libstdc++-v3/include/backward/stack.h Mon May 14 12:49:02 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/stack.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/strstream gcc-3.0.1/libstdc++-v3/include/backward/strstream *** gcc-3.0/libstdc++-v3/include/backward/strstream Mon May 14 12:49:02 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/strstream Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1998 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/tempbuf.h gcc-3.0.1/libstdc++-v3/include/backward/tempbuf.h *** gcc-3.0/libstdc++-v3/include/backward/tempbuf.h Mon May 14 12:49:02 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/tempbuf.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/tree.h gcc-3.0.1/libstdc++-v3/include/backward/tree.h *** gcc-3.0/libstdc++-v3/include/backward/tree.h Mon May 14 12:49:02 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/tree.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,31 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. /* * Copyright (c) 1997 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/backward/vector.h gcc-3.0.1/libstdc++-v3/include/backward/vector.h *** gcc-3.0/libstdc++-v3/include/backward/vector.h Mon May 14 12:49:02 2001 --- gcc-3.0.1/libstdc++-v3/include/backward/vector.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Backward-compat support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/basic_string.h gcc-3.0.1/libstdc++-v3/include/bits/basic_string.h *** gcc-3.0/libstdc++-v3/include/bits/basic_string.h Mon Jun 11 19:30:05 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/basic_string.h Thu Jul 19 17:14:09 2001 *************** namespace std *** 118,124 **** struct _Rep { // Types: ! typedef typename _Alloc::rebind::other _Raw_bytes_alloc; // (Public) Data members: --- 118,124 ---- struct _Rep { // Types: ! typedef typename _Alloc::template rebind::other _Raw_bytes_alloc; // (Public) Data members: diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/basic_string.tcc gcc-3.0.1/libstdc++-v3/include/bits/basic_string.tcc *** gcc-3.0/libstdc++-v3/include/bits/basic_string.tcc Mon Jun 11 19:30:05 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/basic_string.tcc Thu Jul 19 17:14:09 2001 *************** namespace std *** 354,360 **** #endif template ! basic_string<_CharT, _Traits, _Alloc>::_Rep* basic_string<_CharT, _Traits, _Alloc>::_Rep:: _S_create(size_t __capacity, const _Alloc& __alloc) { --- 354,360 ---- #endif template ! typename basic_string<_CharT, _Traits, _Alloc>::_Rep* basic_string<_CharT, _Traits, _Alloc>::_Rep:: _S_create(size_t __capacity, const _Alloc& __alloc) { *************** namespace std *** 571,577 **** } template ! basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: copy(_CharT* __s, size_type __n, size_type __pos) const { --- 571,577 ---- } template ! typename basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: copy(_CharT* __s, size_type __n, size_type __pos) const { *************** namespace std *** 587,593 **** } template ! basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find(const _CharT* __s, size_type __pos, size_type __n) const { --- 587,593 ---- } template ! typename basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find(const _CharT* __s, size_type __pos, size_type __n) const { *************** namespace std *** 601,607 **** } template ! basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find(_CharT __c, size_type __pos) const { --- 601,607 ---- } template ! typename basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find(_CharT __c, size_type __pos) const { *************** namespace std *** 620,626 **** template ! basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: rfind(const _CharT* __s, size_type __pos, size_type __n) const { --- 620,626 ---- template ! typename basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: rfind(const _CharT* __s, size_type __pos, size_type __n) const { *************** namespace std *** 640,646 **** } template ! basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: rfind(_CharT __c, size_type __pos) const { --- 640,646 ---- } template ! typename basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: rfind(_CharT __c, size_type __pos) const { *************** namespace std *** 659,665 **** } template ! basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const { --- 659,665 ---- } template ! typename basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const { *************** namespace std *** 673,679 **** } template ! basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const { --- 673,679 ---- } template ! typename basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const { *************** namespace std *** 693,699 **** } template ! basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const { --- 693,699 ---- } template ! typename basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const { *************** namespace std *** 705,711 **** } template ! basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find_first_not_of(_CharT __c, size_type __pos) const { --- 705,711 ---- } template ! typename basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find_first_not_of(_CharT __c, size_type __pos) const { *************** namespace std *** 717,723 **** } template ! basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const { --- 717,723 ---- } template ! typename basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const { *************** namespace std *** 737,743 **** } template ! basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find_last_not_of(_CharT __c, size_type __pos) const { --- 737,743 ---- } template ! typename basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find_last_not_of(_CharT __c, size_type __pos) const { diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/c++config gcc-3.0.1/libstdc++-v3/include/bits/c++config *** gcc-3.0/libstdc++-v3/include/bits/c++config Wed Jun 13 11:20:05 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/c++config Sun Aug 19 00:52:57 2001 *************** *** 32,40 **** // Pick up any OS-specific definitions. #include // The current version of the C++ library in compressed ISO date format. ! #define __GLIBCPP__ 20010615 // This is necessary until GCC supports separate template // compilation. --- 32,42 ---- // Pick up any OS-specific definitions. #include + // And any CPU-specific definitions. + #include // The current version of the C++ library in compressed ISO date format. ! #define __GLIBCPP__ 20010819 // This is necessary until GCC supports separate template // compilation. *************** *** 108,112 **** --- 110,118 ---- // Only used in the SGI rope extensions; this is from stl_config.h and // should be cleaned up. # define __stl_assert(expr) + + /** @namespace std + * @brief Everything defined by the ISO C++ Standard is within namespace std. + */ // End of prewritten config; the discovered settings follow. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/char_traits.h gcc-3.0.1/libstdc++-v3/include/bits/char_traits.h *** gcc-3.0/libstdc++-v3/include/bits/char_traits.h Sun Jun 10 22:06:54 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/char_traits.h Wed Jul 11 12:37:57 2001 *************** *** 41,49 **** namespace std { ! // 21.1.2 Basis for explicit _Traits specialization ! // NB: That for any given actual character type this definition is ! // probably wrong. template struct char_traits { --- 41,49 ---- namespace std { ! /// 21.1.2 Basis for explicit _Traits specialization ! /// NB: That for any given actual character type this definition is ! /// probably wrong. template struct char_traits { *************** namespace std *** 127,133 **** }; ! // 21.1.4 char_traits specializations template<> struct char_traits { --- 127,133 ---- }; ! /// 21.1.4 char_traits specializations template<> struct char_traits { diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/fstream.tcc gcc-3.0.1/libstdc++-v3/include/bits/fstream.tcc *** gcc-3.0/libstdc++-v3/include/bits/fstream.tcc Tue Jun 12 16:10:07 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/fstream.tcc Thu Jul 19 17:14:09 2001 *************** namespace std *** 139,145 **** } template ! basic_filebuf<_CharT, _Traits>::__filebuf_type* basic_filebuf<_CharT, _Traits>:: open(const char* __s, ios_base::openmode __mode) { --- 139,145 ---- } template ! typename basic_filebuf<_CharT, _Traits>::__filebuf_type* basic_filebuf<_CharT, _Traits>:: open(const char* __s, ios_base::openmode __mode) { *************** namespace std *** 166,172 **** } template ! basic_filebuf<_CharT, _Traits>::__filebuf_type* basic_filebuf<_CharT, _Traits>:: close() { --- 166,172 ---- } template ! typename basic_filebuf<_CharT, _Traits>::__filebuf_type* basic_filebuf<_CharT, _Traits>:: close() { *************** namespace std *** 232,238 **** } template ! basic_filebuf<_CharT, _Traits>::int_type basic_filebuf<_CharT, _Traits>:: underflow() { --- 232,238 ---- } template ! typename basic_filebuf<_CharT, _Traits>::int_type basic_filebuf<_CharT, _Traits>:: underflow() { *************** namespace std *** 303,309 **** } template ! basic_filebuf<_CharT, _Traits>::int_type basic_filebuf<_CharT, _Traits>:: pbackfail(int_type __i) { --- 303,309 ---- } template ! typename basic_filebuf<_CharT, _Traits>::int_type basic_filebuf<_CharT, _Traits>:: pbackfail(int_type __i) { *************** namespace std *** 371,377 **** } template ! basic_filebuf<_CharT, _Traits>::int_type basic_filebuf<_CharT, _Traits>:: overflow(int_type __c) { --- 371,377 ---- } template ! typename basic_filebuf<_CharT, _Traits>::int_type basic_filebuf<_CharT, _Traits>:: overflow(int_type __c) { *************** namespace std *** 396,402 **** } template ! basic_filebuf<_CharT, _Traits>::int_type basic_filebuf<_CharT, _Traits>:: _M_really_overflow(int_type __c) { --- 396,402 ---- } template ! typename basic_filebuf<_CharT, _Traits>::int_type basic_filebuf<_CharT, _Traits>:: _M_really_overflow(int_type __c) { *************** namespace std *** 475,481 **** } template ! basic_filebuf<_CharT, _Traits>::__streambuf_type* basic_filebuf<_CharT, _Traits>:: setbuf(char_type* __s, streamsize __n) { --- 475,481 ---- } template ! typename basic_filebuf<_CharT, _Traits>::__streambuf_type* basic_filebuf<_CharT, _Traits>:: setbuf(char_type* __s, streamsize __n) { *************** namespace std *** 503,509 **** } template ! basic_filebuf<_CharT, _Traits>::pos_type basic_filebuf<_CharT, _Traits>:: seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode) { --- 503,509 ---- } template ! typename basic_filebuf<_CharT, _Traits>::pos_type basic_filebuf<_CharT, _Traits>:: seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode) { *************** namespace std *** 559,565 **** } template ! basic_filebuf<_CharT, _Traits>::pos_type basic_filebuf<_CharT, _Traits>:: seekpos(pos_type __pos, ios_base::openmode __mode) { --- 559,565 ---- } template ! typename basic_filebuf<_CharT, _Traits>::pos_type basic_filebuf<_CharT, _Traits>:: seekpos(pos_type __pos, ios_base::openmode __mode) { diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/istream.tcc gcc-3.0.1/libstdc++-v3/include/bits/istream.tcc *** gcc-3.0/libstdc++-v3/include/bits/istream.tcc Tue Jun 12 16:07:39 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/istream.tcc Thu Jul 19 17:14:09 2001 *************** namespace std *** 465,471 **** } template ! basic_istream<_CharT, _Traits>::int_type basic_istream<_CharT, _Traits>:: get(void) { --- 465,471 ---- } template ! typename basic_istream<_CharT, _Traits>::int_type basic_istream<_CharT, _Traits>:: get(void) { *************** namespace std *** 720,726 **** } template ! basic_istream<_CharT, _Traits>::int_type basic_istream<_CharT, _Traits>:: peek(void) { --- 720,726 ---- } template ! typename basic_istream<_CharT, _Traits>::int_type basic_istream<_CharT, _Traits>:: peek(void) { diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/limits_generic.h gcc-3.0.1/libstdc++-v3/include/bits/limits_generic.h *** gcc-3.0/libstdc++-v3/include/bits/limits_generic.h Tue Jun 12 16:07:40 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/limits_generic.h Wed Jul 25 13:48:26 2001 *************** *** 35,40 **** --- 35,45 ---- // 18.2.1 // + /** @file limits_generic.h + * ISO 14882:1998 + * 18.2.1 + */ + #ifndef _CPP_NUMERIC_LIMITS #define _CPP_NUMERIC_LIMITS 1 *************** *** 49,54 **** --- 54,60 ---- namespace std { + /// Rounding style determines the behavior of floating-point calculations. enum float_round_style { round_indeterminate = -1, round_toward_zero = 0, *************** namespace std { *** 57,68 **** --- 63,82 ---- round_toward_neg_infinity = 3 }; + /// This enum signals whether a type has denormalization. enum float_denorm_style { denorm_indeterminate = -1, denorm_absent = 0, denorm_present = 1 }; + /** + * [18.2.1]/1: "The numeric_limits component provides a C++ program + * with information about various properties of the implementation's + * representation of the fundamental types." All of the standard + * fundamental types have specializations of this class template. + * @brief Properties of fundamental types on a per-platform basis. + */ template struct numeric_limits { static const bool is_specialized = false; *************** namespace std { *** 455,462 **** --- 469,481 ---- static int max() throw() { return INT_MAX; } + #if INT_MAX > 32767 static const int digits = 31; static const int digits10 = 9; + #else + static const int digits = 15; + static const int digits10 = 4; + #endif static const bool is_signed = true; static const bool is_integer = true; static const bool is_exact = true; *************** namespace std { *** 503,510 **** --- 522,534 ---- static unsigned int max() throw() { return UINT_MAX; } + #if INT_MAX > 32767 static const int digits = 32; static const int digits10 = 9; + #else + static const int digits = 16; + static const int digits10 = 4; + #endif static const bool is_signed = false; static const bool is_integer = true; static const bool is_exact = true; *************** namespace std { *** 551,558 **** --- 575,590 ---- static long max() throw() { return LONG_MAX; } + #if LONG_MAX > 2147483647 + static const int digits = 63; + static const int digits10 = 18; + #elif LONG_MAX > 32767 static const int digits = 31; static const int digits10 = 9; + #else + static const int digits = 15; + static const int digits10 = 4; + #endif static const bool is_signed = true; static const bool is_integer = true; static const bool is_exact = true; *************** namespace std { *** 599,606 **** --- 631,646 ---- static unsigned long max() throw() { return ULONG_MAX; } + #if LONG_MAX > 2147483647 + static const int digits = 64; + static const int digits10 = 19; + #elif LONG_MAX > 32767 static const int digits = 32; static const int digits10 = 9; + #else + static const int digits = 16; + static const int digits10 = 4; + #endif static const bool is_signed = false; static const bool is_integer = true; static const bool is_exact = true; diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/pthread_allocimpl.h gcc-3.0.1/libstdc++-v3/include/bits/pthread_allocimpl.h *** gcc-3.0/libstdc++-v3/include/bits/pthread_allocimpl.h Mon May 14 12:49:03 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/pthread_allocimpl.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // POSIX thread-related memory allocation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1996 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/sstream.tcc gcc-3.0.1/libstdc++-v3/include/bits/sstream.tcc *** gcc-3.0/libstdc++-v3/include/bits/sstream.tcc Mon May 14 12:49:03 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/sstream.tcc Thu Jul 19 17:14:09 2001 *************** namespace std *** 40,46 **** { template ! basic_stringbuf<_CharT, _Traits, _Alloc>::int_type basic_stringbuf<_CharT, _Traits, _Alloc>:: pbackfail(int_type __c) { --- 40,46 ---- { template ! typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type basic_stringbuf<_CharT, _Traits, _Alloc>:: pbackfail(int_type __c) { *************** namespace std *** 74,80 **** } template ! basic_stringbuf<_CharT, _Traits, _Alloc>::int_type basic_stringbuf<_CharT, _Traits, _Alloc>:: overflow(int_type __c) { --- 74,80 ---- } template ! typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type basic_stringbuf<_CharT, _Traits, _Alloc>:: overflow(int_type __c) { *************** namespace std *** 114,120 **** } template ! basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type basic_stringbuf<_CharT, _Traits, _Alloc>:: seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode) { --- 114,120 ---- } template ! typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type basic_stringbuf<_CharT, _Traits, _Alloc>:: seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode) { *************** namespace std *** 172,178 **** } template ! basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type basic_stringbuf<_CharT, _Traits, _Alloc>:: seekpos(pos_type __sp, ios_base::openmode __mode) { --- 172,178 ---- } template ! typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type basic_stringbuf<_CharT, _Traits, _Alloc>:: seekpos(pos_type __sp, ios_base::openmode __mode) { diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/std_algorithm.h gcc-3.0.1/libstdc++-v3/include/bits/std_algorithm.h *** gcc-3.0/libstdc++-v3/include/bits/std_algorithm.h Mon Feb 19 10:57:40 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/std_algorithm.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/std_bitset.h gcc-3.0.1/libstdc++-v3/include/bits/std_bitset.h *** gcc-3.0/libstdc++-v3/include/bits/std_bitset.h Tue Jun 12 16:07:40 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/std_bitset.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1998 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/std_complex.h gcc-3.0.1/libstdc++-v3/include/bits/std_complex.h *** gcc-3.0/libstdc++-v3/include/bits/std_complex.h Thu May 31 05:41:46 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/std_complex.h Fri Aug 10 08:32:43 2001 *************** namespace std *** 930,943 **** inline complex& complex::operator*=(long double __r) { ! __real__ _M_value *= __r; return *this; } inline complex& complex::operator/=(long double __r) { ! __real__ _M_value /= __r; return *this; } --- 930,943 ---- inline complex& complex::operator*=(long double __r) { ! _M_value *= __r; return *this; } inline complex& complex::operator/=(long double __r) { ! _M_value /= __r; return *this; } diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/std_deque.h gcc-3.0.1/libstdc++-v3/include/bits/std_deque.h *** gcc-3.0/libstdc++-v3/include/bits/std_deque.h Mon Feb 19 10:57:40 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/std_deque.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/std_functional.h gcc-3.0.1/libstdc++-v3/include/bits/std_functional.h *** gcc-3.0/libstdc++-v3/include/bits/std_functional.h Mon May 14 12:49:04 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/std_functional.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1997 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/std_istream.h gcc-3.0.1/libstdc++-v3/include/bits/std_istream.h *** gcc-3.0/libstdc++-v3/include/bits/std_istream.h Thu May 31 13:34:34 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/std_istream.h Thu Jul 19 17:14:09 2001 *************** namespace std *** 217,223 **** typedef _Traits traits_type; typedef basic_streambuf<_CharT, _Traits> __streambuf_type; typedef basic_istream<_CharT, _Traits> __istream_type; ! typedef __istream_type::__ctype_type __ctype_type; typedef typename _Traits::int_type __int_type; explicit --- 217,223 ---- typedef _Traits traits_type; typedef basic_streambuf<_CharT, _Traits> __streambuf_type; typedef basic_istream<_CharT, _Traits> __istream_type; ! typedef typename __istream_type::__ctype_type __ctype_type; typedef typename _Traits::int_type __int_type; explicit diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/std_iterator.h gcc-3.0.1/libstdc++-v3/include/bits/std_iterator.h *** gcc-3.0/libstdc++-v3/include/bits/std_iterator.h Mon May 14 12:49:04 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/std_iterator.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/std_limits.h gcc-3.0.1/libstdc++-v3/include/bits/std_limits.h *** gcc-3.0/libstdc++-v3/include/bits/std_limits.h Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/libstdc++-v3/include/bits/std_limits.h Wed Aug 15 08:48:36 2001 *************** *** 0 **** --- 1,1995 ---- + // The template and inlines for the -*- C++ -*- numeric_limits classes. + + // Copyright (C) 1999-2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + + // Note: this is not a conforming implementation. + // Written by Gabriel Dos Reis + + // + // ISO 14882:1998 + // 18.2.1 + // + + #ifndef _CPP_NUMERIC_LIMITS + #define _CPP_NUMERIC_LIMITS 1 + + #pragma GCC system_header + + #include + + // + // The numeric_limits<> traits document implementation-defined aspects + // of fundamental arithmetic data types (integers and floating points). + // From Standard C++ point of view, there are 13 such types: + // * integers + // bool (1) + // char, signed char, unsigned char (3) + // short, unsigned short (2) + // int, unsigned (2) + // long, unsigned long (2) + // + // * floating points + // float (1) + // double (1) + // long double (1) + // + // GNU C++ undertstands (where supported by the host C-library) + // * integer + // long long, unsigned long long (2) + // + // which brings us to 15 fundamental arithmetic data types in GNU C++. + // + // + // Since a numeric_limits<> is a bit tricky to get right, we rely on + // an interface composed of macros which should be defined in config/os + // or config/cpu when they differ from the generic (read arbitrary) + // definitions given here. + // + + // These values can be overridden in the target configuration file. + // The default values are appropriate for many 32-bit targets. + + #ifndef __glibcpp_char_bits + #define __glibcpp_char_bits 8 + #endif + #ifdef __CHAR_UNSIGNED__ + #define __glibcpp_plain_char_is_signed false + #else + #define __glibcpp_plain_char_is_signed true + #endif + #ifndef __glibcpp_short_bits + #define __glibcpp_short_bits 16 + #endif + #ifndef __glibcpp_int_bits + #define __glibcpp_int_bits 32 + #endif + #ifndef __glibcpp_long_bits + #define __glibcpp_long_bits 32 + #endif + #ifndef __glibcpp_wchar_t_bits + #define __glibcpp_wchar_t_bits 32 + #endif + #ifndef __glibcpp_wchar_t_is_signed + #define __glibcpp_wchar_t_is_signed __glibcpp_plain_char_is_signed + #endif + #ifdef _GLIBCPP_USE_LONG_LONG + #ifndef __glibcpp_long_long_bits + #define __glibcpp_long_long_bits 64 + #endif + #endif + #ifndef __glibcpp_float_bits + #define __glibcpp_float_bits 32 + #endif + #ifndef __glibcpp_double_bits + #define __glibcpp_double_bits 64 + #endif + #ifndef __glibcpp_long_double_bits + #define __glibcpp_long_double_bits 128 + #endif + + #ifndef __glibcpp_char_traps + #define __glibcpp_char_traps true + #endif + #ifndef __glibcpp_short_traps + #define __glibcpp_short_traps true + #endif + #ifndef __glibcpp_int_traps + #define __glibcpp_int_traps true + #endif + #ifndef __glibcpp_long_traps + #define __glibcpp_long_traps true + #endif + #ifndef __glibcpp_wchar_t_traps + #define __glibcpp_wchar_t_traps true + #endif + #ifdef _GLIBCPP_USE_LONG_LONG + #ifndef __glibcpp_long_long_traps + #define __glibcpp_long_long_traps true + #endif + #endif + + // You should not need to define any macros below this point, unless + // you have a machine with non-standard bit-widths. + + // These values are the minimums and maximums for standard data types + // of common widths. + + #define __glibcpp_s8_max 127 + #define __glibcpp_s8_min (-__glibcpp_s8_max - 1) + #define __glibcpp_s8_digits 7 + #define __glibcpp_s8_digits10 3 + #define __glibcpp_u8_min 0U + #define __glibcpp_u8_max (__glibcpp_s8_max * 2 + 1) + #define __glibcpp_u8_digits 8 + #define __glibcpp_u8_digits10 3 + #define __glibcpp_s16_max 32767 + #define __glibcpp_s16_min (-__glibcpp_s16_max - 1) + #define __glibcpp_s16_digits 15 + #define __glibcpp_s16_digits10 5 + #define __glibcpp_u16_min 0U + #define __glibcpp_u16_max (__glibcpp_s16_max * 2 + 1) + #define __glibcpp_u16_digits 16 + #define __glibcpp_u16_digits10 5 + #define __glibcpp_s32_max 2147483647L + #define __glibcpp_s32_min (-__glibcpp_s32_max - 1) + #define __glibcpp_s32_digits 31 + #define __glibcpp_s32_digits10 10 + #define __glibcpp_u32_min 0UL + #define __glibcpp_u32_max (__glibcpp_s32_max * 2U + 1) + #define __glibcpp_u32_digits 32 + #define __glibcpp_u32_digits10 10 + #define __glibcpp_s64_max 9223372036854775807LL + #define __glibcpp_s64_min (-__glibcpp_s64_max - 1) + #define __glibcpp_s64_digits 63 + #define __glibcpp_s64_digits10 19 + #define __glibcpp_u64_min 0ULL + #define __glibcpp_u64_max (__glibcpp_s64_max * 2ULL + 1) + #define __glibcpp_u64_digits 64 + #define __glibcpp_u64_digits10 19 + + #define __glibcpp_f32_min 1.17549435e-38F + #define __glibcpp_f32_max 3.40282347e+38F + #define __glibcpp_f32_digits 24 + #define __glibcpp_f32_digits10 6 + #define __glibcpp_f32_radix 2 + #define __glibcpp_f32_epsilon 1.19209290e-07F + #define __glibcpp_f32_round_error 1.0F + #define __glibcpp_f32_min_exponent -125 + #define __glibcpp_f32_min_exponent10 -37 + #define __glibcpp_f32_max_exponent 128 + #define __glibcpp_f32_max_exponent10 38 + #define __glibcpp_f64_min 2.2250738585072014e-308 + #define __glibcpp_f64_max 1.7976931348623157e+308 + #define __glibcpp_f64_digits 53 + #define __glibcpp_f64_digits10 15 + #define __glibcpp_f64_radix 2 + #define __glibcpp_f64_epsilon 2.2204460492503131e-16 + #define __glibcpp_f64_round_error 1.0 + #define __glibcpp_f64_min_exponent -1021 + #define __glibcpp_f64_min_exponent10 -307 + #define __glibcpp_f64_max_exponent 1024 + #define __glibcpp_f64_max_exponent10 308 + #define __glibcpp_f80_min 3.36210314311209350626e-4932L + #define __glibcpp_f80_max 1.18973149535723176502e+4932L + #define __glibcpp_f80_digits 64 + #define __glibcpp_f80_digits10 18 + #define __glibcpp_f80_radix 2 + #define __glibcpp_f80_epsilon 1.08420217248550443401e-19L + #define __glibcpp_f80_round_error 1.0L + #define __glibcpp_f80_min_exponent -16381 + #define __glibcpp_f80_min_exponent10 -4931 + #define __glibcpp_f80_max_exponent 16384 + #define __glibcpp_f80_max_exponent10 4932 + #define __glibcpp_f96_min 1.68105157155604675313e-4932L + #define __glibcpp_f96_max 1.18973149535723176502e+4932L + #define __glibcpp_f96_digits 64 + #define __glibcpp_f96_digits10 18 + #define __glibcpp_f96_radix 2 + #define __glibcpp_f96_epsilon 1.08420217248550443401e-19L + #define __glibcpp_f96_round_error 1.0L + #define __glibcpp_f96_min_exponent -16382 + #define __glibcpp_f96_min_exponent10 -4931 + #define __glibcpp_f96_max_exponent 16384 + #define __glibcpp_f96_max_exponent10 4932 + #define __glibcpp_f128_min 3.362103143112093506262677817321752603E-4932L + #define __glibcpp_f128_max 1.189731495357231765085759326628007016E+4932L + #define __glibcpp_f128_digits 113 + #define __glibcpp_f128_digits10 33 + #define __glibcpp_f128_radix 2 + #define __glibcpp_f128_epsilon 1.925929944387235853055977942584927319E-34L + #define __glibcpp_f128_round_error 1.0L + #define __glibcpp_f128_min_exponent -16381 + #define __glibcpp_f128_min_exponent10 -4931 + #define __glibcpp_f128_max_exponent 16384 + #define __glibcpp_f128_max_exponent10 4932 + + // bool-specific hooks: + // __glibcpp_bool_digits __glibcpp_int_traps __glibcpp_long_traps + + // This is actually CHAR_BITS because the new ABI says a bool + // is one (1) byte wide. + + #ifndef __glibcpp_bool_digits + #define __glibcpp_bool_digits __glibcpp_char_bits + #endif + + // char. + + #define __glibcpp_plain_char_traps true + #define __glibcpp_signed_char_traps true + #define __glibcpp_unsigned_char_traps true + #if __glibcpp_char_bits == 8 + #define __glibcpp_signed_char_min __glibcpp_s8_min + #define __glibcpp_signed_char_max __glibcpp_s8_max + #define __glibcpp_signed_char_digits __glibcpp_s8_digits + #define __glibcpp_signed_char_digits10 __glibcpp_s8_digits10 + #define __glibcpp_unsigned_char_min __glibcpp_u8_min + #define __glibcpp_unsigned_char_max __glibcpp_u8_max + #define __glibcpp_unsigned_char_digits __glibcpp_u8_digits + #define __glibcpp_unsigned_char_digits10 __glibcpp_u8_digits10 + #elif __glibcpp_char_bits == 16 + #define __glibcpp_signed_char_min __glibcpp_s16_min + #define __glibcpp_signed_char_max __glibcpp_s16_max + #define __glibcpp_signed_char_digits __glibcpp_s16_digits + #define __glibcpp_signed_char_digits10 __glibcpp_s16_digits10 + #define __glibcpp_unsigned_char_min __glibcpp_u16_min + #define __glibcpp_unsigned_char_max __glibcpp_u16_max + #define __glibcpp_unsigned_char_digits __glibcpp_u16_digits + #define __glibcpp_unsigned_char_digits10 __glibcpp_u16_digits10 + #elif __glibcpp_char_bits == 32 + #define __glibcpp_signed_char_min (signed char)__glibcpp_s32_min + #define __glibcpp_signed_char_max (signed char)__glibcpp_s32_max + #define __glibcpp_signed_char_digits __glibcpp_s32_digits + #define __glibcpp_signed_char_digits10 __glibcpp_s32_digits10 + #define __glibcpp_unsigned_char_min (unsigned char)__glibcpp_u32_min + #define __glibcpp_unsigned_char_max (unsigned char)__glibcpp_u32_max + #define __glibcpp_unsigned_char_digits __glibcpp_u32_digits + #define __glibcpp_unsigned_char_digits10 __glibcpp_u32_digits10 + #elif __glibcpp_char_bits == 64 + #define __glibcpp_signed_char_min (signed char)__glibcpp_s64_min + #define __glibcpp_signed_char_max (signed char)__glibcpp_s64_max + #define __glibcpp_signed_char_digits __glibcpp_s64_digits + #define __glibcpp_signed_char_digits10 __glibcpp_s64_digits10 + #define __glibcpp_unsigned_char_min (unsigned char)__glibcpp_u64_min + #define __glibcpp_unsigned_char_max (unsigned char)__glibcpp_u64_max + #define __glibcpp_unsigned_char_digits __glibcpp_u64_digits + #define __glibcpp_unsigned_char_digits10 __glibcpp_u64_digits10 + #else + // You must define these macros in the configuration file. + #endif + + #if __glibcpp_plain_char_is_signed + #define __glibcpp_char_min (char)__glibcpp_signed_char_min + #define __glibcpp_char_max (char)__glibcpp_signed_char_max + #define __glibcpp_char_digits __glibcpp_signed_char_digits + #define __glibcpp_char_digits10 __glibcpp_signed_char_digits + #else + #define __glibcpp_char_min (char)__glibcpp_unsigned_char_min + #define __glibcpp_char_max (char)__glibcpp_unsigned_char_max + #define __glibcpp_char_digits __glibcpp_unsigned_char_digits + #define __glibcpp_char_digits10 __glibcpp_unsigned_char_digits + #endif + + // short + + #define __glibcpp_signed_short_traps true + #define __glibcpp_unsigned_short_traps true + #if __glibcpp_short_bits == 8 + #define __glibcpp_signed_short_min __glibcpp_s8_min + #define __glibcpp_signed_short_max __glibcpp_s8_max + #define __glibcpp_signed_short_digits __glibcpp_s8_digits + #define __glibcpp_signed_short_digits10 __glibcpp_s8_digits10 + #define __glibcpp_unsigned_short_min __glibcpp_u8_min + #define __glibcpp_unsigned_short_max __glibcpp_u8_max + #define __glibcpp_unsigned_short_digits __glibcpp_u8_digits + #define __glibcpp_unsigned_short_digits10 __glibcpp_u8_digits10 + #elif __glibcpp_short_bits == 16 + #define __glibcpp_signed_short_min __glibcpp_s16_min + #define __glibcpp_signed_short_max __glibcpp_s16_max + #define __glibcpp_signed_short_digits __glibcpp_s16_digits + #define __glibcpp_signed_short_digits10 __glibcpp_s16_digits10 + #define __glibcpp_unsigned_short_min __glibcpp_u16_min + #define __glibcpp_unsigned_short_max __glibcpp_u16_max + #define __glibcpp_unsigned_short_digits __glibcpp_u16_digits + #define __glibcpp_unsigned_short_digits10 __glibcpp_u16_digits10 + #elif __glibcpp_short_bits == 32 + #define __glibcpp_signed_short_min (short)__glibcpp_s32_min + #define __glibcpp_signed_short_max (short)__glibcpp_s32_max + #define __glibcpp_signed_short_digits __glibcpp_s32_digits + #define __glibcpp_signed_short_digits10 __glibcpp_s32_digits10 + #define __glibcpp_unsigned_short_min (unsigned short)__glibcpp_u32_min + #define __glibcpp_unsigned_short_max (unsigned short)__glibcpp_u32_max + #define __glibcpp_unsigned_short_digits __glibcpp_u32_digits + #define __glibcpp_unsigned_short_digits10 __glibcpp_u32_digits10 + #elif __glibcpp_short_bits == 64 + #define __glibcpp_signed_short_min (short)__glibcpp_s64_min + #define __glibcpp_signed_short_max (short)__glibcpp_s64_max + #define __glibcpp_signed_short_digits __glibcpp_s64_digits + #define __glibcpp_signed_short_digits10 __glibcpp_s64_digits10 + #define __glibcpp_unsigned_short_min (unsigned short)__glibcpp_u64_min + #define __glibcpp_unsigned_short_max (unsigned short)__glibcpp_u64_max + #define __glibcpp_unsigned_short_digits __glibcpp_u64_digits + #define __glibcpp_unsigned_short_digits10 __glibcpp_u64_digits10 + #else + // You must define these macros in the configuration file. + #endif + + // int + + #define __glibcpp_signed_int_traps true + #define __glibcpp_unsigned_int_traps true + #if __glibcpp_int_bits == 8 + #define __glibcpp_signed_int_min __glibcpp_s8_min + #define __glibcpp_signed_int_max __glibcpp_s8_max + #define __glibcpp_signed_int_digits __glibcpp_s8_digits + #define __glibcpp_signed_int_digits10 __glibcpp_s8_digits10 + #define __glibcpp_unsigned_int_min __glibcpp_u8_min + #define __glibcpp_unsigned_int_max __glibcpp_u8_max + #define __glibcpp_unsigned_int_digits __glibcpp_u8_digits + #define __glibcpp_unsigned_int_digits10 __glibcpp_u8_digits10 + #elif __glibcpp_int_bits == 16 + #define __glibcpp_signed_int_min __glibcpp_s16_min + #define __glibcpp_signed_int_max __glibcpp_s16_max + #define __glibcpp_signed_int_digits __glibcpp_s16_digits + #define __glibcpp_signed_int_digits10 __glibcpp_s16_digits10 + #define __glibcpp_unsigned_int_min __glibcpp_u16_min + #define __glibcpp_unsigned_int_max __glibcpp_u16_max + #define __glibcpp_unsigned_int_digits __glibcpp_u16_digits + #define __glibcpp_unsigned_int_digits10 __glibcpp_u16_digits10 + #elif __glibcpp_int_bits == 32 + #define __glibcpp_signed_int_min (int)__glibcpp_s32_min + #define __glibcpp_signed_int_max (int)__glibcpp_s32_max + #define __glibcpp_signed_int_digits __glibcpp_s32_digits + #define __glibcpp_signed_int_digits10 __glibcpp_s32_digits10 + #define __glibcpp_unsigned_int_min (unsigned)__glibcpp_u32_min + #define __glibcpp_unsigned_int_max (unsigned)__glibcpp_u32_max + #define __glibcpp_unsigned_int_digits __glibcpp_u32_digits + #define __glibcpp_unsigned_int_digits10 __glibcpp_u32_digits10 + #elif __glibcpp_int_bits == 64 + #define __glibcpp_signed_int_min (int)__glibcpp_s64_min + #define __glibcpp_signed_int_max (int)__glibcpp_s64_max + #define __glibcpp_signed_int_digits __glibcpp_s64_digits + #define __glibcpp_signed_int_digits10 __glibcpp_s64_digits10 + #define __glibcpp_unsigned_int_min (unsigned)__glibcpp_u64_min + #define __glibcpp_unsigned_int_max (unsigned)__glibcpp_u64_max + #define __glibcpp_unsigned_int_digits __glibcpp_u64_digits + #define __glibcpp_unsigned_int_digits10 __glibcpp_u64_digits10 + #else + // You must define these macros in the configuration file. + #endif + + // long + + #define __glibcpp_signed_long_traps true + #define __glibcpp_unsigned_long_traps true + #if __glibcpp_long_bits == 8 + #define __glibcpp_signed_long_min __glibcpp_s8_min + #define __glibcpp_signed_long_max __glibcpp_s8_max + #define __glibcpp_signed_long_digits __glibcpp_s8_digits + #define __glibcpp_signed_long_digits10 __glibcpp_s8_digits10 + #define __glibcpp_unsigned_long_min __glibcpp_u8_min + #define __glibcpp_unsigned_long_max __glibcpp_u8_max + #define __glibcpp_unsigned_long_digits __glibcpp_u8_digits + #define __glibcpp_unsigned_long_digits10 __glibcpp_u8_digits10 + #elif __glibcpp_long_bits == 16 + #define __glibcpp_signed_long_min __glibcpp_s16_min + #define __glibcpp_signed_long_max __glibcpp_s16_max + #define __glibcpp_signed_long_digits __glibcpp_s16_digits + #define __glibcpp_signed_long_digits10 __glibcpp_s16_digits10 + #define __glibcpp_unsigned_long_min __glibcpp_u16_min + #define __glibcpp_unsigned_long_max __glibcpp_u16_max + #define __glibcpp_unsigned_long_digits __glibcpp_u16_digits + #define __glibcpp_unsigned_long_digits10 __glibcpp_u16_digits10 + #elif __glibcpp_long_bits == 32 + #define __glibcpp_signed_long_min __glibcpp_s32_min + #define __glibcpp_signed_long_max __glibcpp_s32_max + #define __glibcpp_signed_long_digits __glibcpp_s32_digits + #define __glibcpp_signed_long_digits10 __glibcpp_s32_digits10 + #define __glibcpp_unsigned_long_min __glibcpp_u32_min + #define __glibcpp_unsigned_long_max __glibcpp_u32_max + #define __glibcpp_unsigned_long_digits __glibcpp_u32_digits + #define __glibcpp_unsigned_long_digits10 __glibcpp_u32_digits10 + #elif __glibcpp_long_bits == 64 + #define __glibcpp_signed_long_min (long)__glibcpp_s64_min + #define __glibcpp_signed_long_max (long)__glibcpp_s64_max + #define __glibcpp_signed_long_digits __glibcpp_s64_digits + #define __glibcpp_signed_long_digits10 __glibcpp_s64_digits10 + #define __glibcpp_unsigned_long_min (unsigned long)__glibcpp_u64_min + #define __glibcpp_unsigned_long_max (unsigned long)__glibcpp_u64_max + #define __glibcpp_unsigned_long_digits __glibcpp_u64_digits + #define __glibcpp_unsigned_long_digits10 __glibcpp_u64_digits10 + #else + // You must define these macros in the configuration file. + #endif + + #ifdef _GLIBCPP_USE_LONG_LONG + + // long long + + #define __glibcpp_signed_long_long_traps true + #define __glibcpp_signed_long_long_traps true + #if __glibcpp_long_long_bits == 8 + #define __glibcpp_signed_long_long_min __glibcpp_s8_min + #define __glibcpp_signed_long_long_max __glibcpp_s8_max + #define __glibcpp_signed_long_long_digits __glibcpp_s8_digits + #define __glibcpp_signed_long_long_digits10 __glibcpp_s8_digits10 + #define __glibcpp_unsigned_long_long_min __glibcpp_u8_min + #define __glibcpp_unsigned_long_long_max __glibcpp_u8_max + #define __glibcpp_unsigned_long_long_digits __glibcpp_u8_digits + #define __glibcpp_unsigned_long_long_digits10 __glibcpp_u8_digits10 + #elif __glibcpp_long_long_bits == 16 + #define __glibcpp_signed_long_long_min __glibcpp_s16_min + #define __glibcpp_signed_long_long_max __glibcpp_s16_max + #define __glibcpp_signed_long_long_digits __glibcpp_s16_digits + #define __glibcpp_signed_long_long_digits10 __glibcpp_s16_digits10 + #define __glibcpp_unsigned_long_long_min __glibcpp_u16_min + #define __glibcpp_unsigned_long_long_max __glibcpp_u16_max + #define __glibcpp_unsigned_long_long_digits __glibcpp_u16_digits + #define __glibcpp_unsigned_long_long_digits10 __glibcpp_u16_digits10 + #elif __glibcpp_long_long_bits == 32 + #define __glibcpp_signed_long_long_min __glibcpp_s32_min + #define __glibcpp_signed_long_long_max __glibcpp_s32_max + #define __glibcpp_signed_long_long_digits __glibcpp_s32_digits + #define __glibcpp_signed_long_long_digits10 __glibcpp_s32_digits10 + #define __glibcpp_unsigned_long_long_min __glibcpp_u32_min + #define __glibcpp_unsigned_long_long_max __glibcpp_u32_max + #define __glibcpp_unsigned_long_long_digits __glibcpp_u32_digits + #define __glibcpp_unsigned_long_long_digits10 __glibcpp_u32_digits10 + #elif __glibcpp_long_long_bits == 64 + #define __glibcpp_signed_long_long_min __glibcpp_s64_min + #define __glibcpp_signed_long_long_max __glibcpp_s64_max + #define __glibcpp_signed_long_long_digits __glibcpp_s64_digits + #define __glibcpp_signed_long_long_digits10 __glibcpp_s64_digits10 + #define __glibcpp_signed_long_long_traps true + #define __glibcpp_unsigned_long_long_min __glibcpp_u64_min + #define __glibcpp_unsigned_long_long_max __glibcpp_u64_max + #define __glibcpp_unsigned_long_long_digits __glibcpp_u64_digits + #define __glibcpp_unsigned_long_long_digits10 __glibcpp_u64_digits10 + #define __glibcpp_unsigned_long_long_traps true + #else + // You must define these macros in the configuration file. + #endif + + #endif + + // wchar_t + + #define __glibcpp_wchar_t_traps true + #if __glibcpp_wchar_t_is_signed + #if __glibcpp_wchar_t_bits == 8 + #define __glibcpp_wchar_t_min __glibcpp_s8_min + #define __glibcpp_wchar_t_max __glibcpp_s8_max + #define __glibcpp_wchar_t_digits __glibcpp_s8_digits + #define __glibcpp_wchar_t_digits10 __glibcpp_s8_digits10 + #elif __glibcpp_wchar_t_bits == 16 + #define __glibcpp_wchar_t_min __glibcpp_s16_min + #define __glibcpp_wchar_t_max __glibcpp_s16_max + #define __glibcpp_wchar_t_digits __glibcpp_s16_digits + #define __glibcpp_wchar_t_digits10 __glibcpp_s16_digits10 + #elif __glibcpp_wchar_t_bits == 32 + #define __glibcpp_wchar_t_min (wchar_t)__glibcpp_s32_min + #define __glibcpp_wchar_t_max (wchar_t)__glibcpp_s32_max + #define __glibcpp_wchar_t_digits __glibcpp_s32_digits + #define __glibcpp_wchar_t_digits10 __glibcpp_s32_digits10 + #elif __glibcpp_wchar_t_bits == 64 + #define __glibcpp_wchar_t_min (wchar_t)__glibcpp_s64_min + #define __glibcpp_wchar_t_max (wchar_t)__glibcpp_s64_max + #define __glibcpp_wchar_t_digits __glibcpp_s64_digits + #define __glibcpp_wchar_t_digits10 __glibcpp_s64_digits10 + #else + // You must define these macros in the configuration file. + #endif + #else + #if __glibcpp_wchar_t_bits == 8 + #define __glibcpp_wchar_t_min __glibcpp_u8_min + #define __glibcpp_wchar_t_max __glibcpp_u8_max + #define __glibcpp_wchar_t_digits __glibcpp_u8_digits + #define __glibcpp_wchar_t_digits10 __glibcpp_u8_digits10 + #elif __glibcpp_wchar_t_bits == 16 + #define __glibcpp_wchar_t_min __glibcpp_u16_min + #define __glibcpp_wchar_t_max __glibcpp_u16_max + #define __glibcpp_wchar_t_digits __glibcpp_u16_digits + #define __glibcpp_wchar_t_digits10 __glibcpp_u16_digits10 + #elif __glibcpp_wchar_t_bits == 32 + #define __glibcpp_wchar_t_min (wchar_t)__glibcpp_u32_min + #define __glibcpp_wchar_t_max (wchar_t)__glibcpp_u32_max + #define __glibcpp_wchar_t_digits __glibcpp_u32_digits + #define __glibcpp_wchar_t_digits10 __glibcpp_u32_digits10 + #elif __glibcpp_wchar_t_bits == 64 + #define __glibcpp_wchar_t_min (wchar_t)__glibcpp_u64_min + #define __glibcpp_wchar_t_max (wchar_t)__glibcpp_u64_max + #define __glibcpp_wchar_t_digits __glibcpp_u64_digits + #define __glibcpp_wchar_t_digits10 __glibcpp_u64_digits10 + #else + // You must define these macros in the configuration file. + #endif + #endif + + // float + // + + #if __glibcpp_float_bits == 32 + #define __glibcpp_float_min __glibcpp_f32_min + #define __glibcpp_float_max __glibcpp_f32_max + #define __glibcpp_float_digits __glibcpp_f32_digits + #define __glibcpp_float_digits10 __glibcpp_f32_digits10 + #define __glibcpp_float_radix __glibcpp_f32_radix + #define __glibcpp_float_epsilon __glibcpp_f32_epsilon + #define __glibcpp_float_round_error __glibcpp_f32_round_error + #define __glibcpp_float_min_exponent __glibcpp_f32_min_exponent + #define __glibcpp_float_min_exponent10 __glibcpp_f32_min_exponent10 + #define __glibcpp_float_max_exponent __glibcpp_f32_max_exponent + #define __glibcpp_float_max_exponent10 __glibcpp_f32_max_exponent10 + #elif __glibcpp_float_bits == 64 + #define __glibcpp_float_min __glibcpp_f64_min + #define __glibcpp_float_max __glibcpp_f64_max + #define __glibcpp_float_digits __glibcpp_f64_digits + #define __glibcpp_float_digits10 __glibcpp_f64_digits10 + #define __glibcpp_float_radix __glibcpp_f64_radix + #define __glibcpp_float_epsilon __glibcpp_f64_epsilon + #define __glibcpp_float_round_error __glibcpp_f64_round_error + #define __glibcpp_float_min_exponent __glibcpp_f64_min_exponent + #define __glibcpp_float_min_exponent10 __glibcpp_f64_min_exponent10 + #define __glibcpp_float_max_exponent __glibcpp_f64_max_exponent + #define __glibcpp_float_max_exponent10 __glibcpp_f64_max_exponent10 + #elif __glibcpp_float_bits == 80 + #define __glibcpp_float_min __glibcpp_f80_min + #define __glibcpp_float_max __glibcpp_f80_max + #define __glibcpp_float_digits __glibcpp_f80_digits + #define __glibcpp_float_digits10 __glibcpp_f80_digits10 + #define __glibcpp_float_radix __glibcpp_f80_radix + #define __glibcpp_float_epsilon __glibcpp_f80_epsilon + #define __glibcpp_float_round_error __glibcpp_f80_round_error + #define __glibcpp_float_min_exponent __glibcpp_f80_min_exponent + #define __glibcpp_float_min_exponent10 __glibcpp_f80_min_exponent10 + #define __glibcpp_float_max_exponent __glibcpp_f80_max_exponent + #define __glibcpp_float_max_exponent10 __glibcpp_f80_max_exponent10 + #else + // You must define these macros in the configuration file. + #endif + + // FIXME: These are just stubs and inkorrect + + #ifndef __glibcpp_float_has_infinity + #define __glibcpp_float_has_infinity false + #endif + + #ifndef __glibcpp_float_has_quiet_NaM + #define __glibcpp_float_has_quiet_NaN false + #endif + + #ifndef __glibcpp_float_has_signaling_NaN + #define __glibcpp_float_has_signaling_NaN false + #endif + + #ifndef __glibcpp_float_has_denorm + #define __glibcpp_float_has_denorm denorm_absent + #endif + + #ifndef __glibcpp_float_has_denorm_loss + #define __glibcpp_float_has_denorm_loss false + #endif + + #ifndef __glibcpp_float_infinity + #define __glibcpp_float_infinity 0.0F + #endif + + #ifndef __glibcpp_float_quiet_NaN + #define __glibcpp_float_quiet_NaN 0.0F + #endif + + #ifndef __glibcpp_float_signaling_NaN + #define __glibcpp_float_signaling_NaN 0.0F + #endif + + #ifndef __glibcpp_float_denorm_min + #define __glibcpp_float_denorm_min 0.0F + #endif + + #ifndef __glibcpp_float_is_iec559 + #define __glibcpp_float_is_iec559 false + #endif + + #ifndef __glibcpp_float_is_bounded + #define __glibcpp_float_is_bounded true + #endif + + #ifndef __glibcpp_float_is_modulo + #define __glibcpp_float_is_modulo false + #endif + + #ifndef __glibcpp_float_traps + #define __glibcpp_float_traps false + #endif + + #ifndef __glibcpp_float_tinyness_before + #define __glibcpp_float_tinyness_before false + #endif + + #ifndef __glibcpp_float_round_style + #define __glibcpp_float_round_style round_toward_zero + #endif + + // double + + #if __glibcpp_double_bits == 32 + #define __glibcpp_double_min __glibcpp_f32_min + #define __glibcpp_double_max __glibcpp_f32_max + #define __glibcpp_double_digits __glibcpp_f32_digits + #define __glibcpp_double_digits10 __glibcpp_f32_digits10 + #define __glibcpp_double_radix __glibcpp_f32_radix + #define __glibcpp_double_epsilon __glibcpp_f32_epsilon + #define __glibcpp_double_round_error __glibcpp_f32_round_error + #define __glibcpp_double_min_exponent __glibcpp_f32_min_exponent + #define __glibcpp_double_min_exponent10 __glibcpp_f32_min_exponent10 + #define __glibcpp_double_max_exponent __glibcpp_f32_max_exponent + #define __glibcpp_double_max_exponent10 __glibcpp_f32_max_exponent10 + #elif __glibcpp_double_bits == 64 + #define __glibcpp_double_min __glibcpp_f64_min + #define __glibcpp_double_max __glibcpp_f64_max + #define __glibcpp_double_digits __glibcpp_f64_digits + #define __glibcpp_double_digits10 __glibcpp_f64_digits10 + #define __glibcpp_double_radix __glibcpp_f64_radix + #define __glibcpp_double_epsilon __glibcpp_f64_epsilon + #define __glibcpp_double_round_error __glibcpp_f64_round_error + #define __glibcpp_double_min_exponent __glibcpp_f64_min_exponent + #define __glibcpp_double_min_exponent10 __glibcpp_f64_min_exponent10 + #define __glibcpp_double_max_exponent __glibcpp_f64_max_exponent + #define __glibcpp_double_max_exponent10 __glibcpp_f64_max_exponent10 + #elif __glibcpp_double_bits == 80 + #define __glibcpp_double_min __glibcpp_f80_min + #define __glibcpp_double_max __glibcpp_f80_max + #define __glibcpp_double_digits __glibcpp_f80_digits + #define __glibcpp_double_digits10 __glibcpp_f80_digits10 + #define __glibcpp_double_radix __glibcpp_f80_radix + #define __glibcpp_double_epsilon __glibcpp_f80_epsilon + #define __glibcpp_double_round_error __glibcpp_f80_round_error + #define __glibcpp_double_min_exponent __glibcpp_f80_min_exponent + #define __glibcpp_double_min_exponent10 __glibcpp_f80_min_exponent10 + #define __glibcpp_double_max_exponent __glibcpp_f80_max_exponent + #define __glibcpp_double_max_exponent10 __glibcpp_f80_max_exponent10 + #else + // You must define these macros in the configuration file. + #endif + + // FIXME: These are just stubs and inkorrect + + #ifndef __glibcpp_double_has_infinity + #define __glibcpp_double_has_infinity false + #endif + + #ifndef __glibcpp_double_has_quiet_NaM + #define __glibcpp_double_has_quiet_NaN false + #endif + + #ifndef __glibcpp_double_has_signaling_NaN + #define __glibcpp_double_has_signaling_NaN false + #endif + + #ifndef __glibcpp_double_has_denorm + #define __glibcpp_double_has_denorm denorm_absent + #endif + + #ifndef __glibcpp_double_has_denorm_loss + #define __glibcpp_double_has_denorm_loss false + #endif + + #ifndef __glibcpp_double_infinity + #define __glibcpp_double_infinity 0.0 + #endif + + #ifndef __glibcpp_double_quiet_NaN + #define __glibcpp_double_quiet_NaN 0.0 + #endif + + #ifndef __glibcpp_double_signaling_NaN + #define __glibcpp_double_signaling_NaN 0.0 + #endif + + #ifndef __glibcpp_double_denorm_min + #define __glibcpp_double_denorm_min 0.0 + #endif + + #ifndef __glibcpp_double_is_iec559 + #define __glibcpp_double_is_iec559 false + #endif + + #ifndef __glibcpp_double_is_bounded + #define __glibcpp_double_is_bounded true + #endif + + #ifndef __glibcpp_double_is_modulo + #define __glibcpp_double_is_modulo false + #endif + + #ifndef __glibcpp_double_traps + #define __glibcpp_double_traps false + #endif + + #ifndef __glibcpp_double_tinyness_before + #define __glibcpp_double_tinyness_before false + #endif + + #ifndef __glibcpp_double_round_style + #define __glibcpp_double_round_style round_toward_zero + #endif + + // long double + + #if __glibcpp_long_double_bits == 32 + #define __glibcpp_long_double_min __glibcpp_f32_min + #define __glibcpp_long_double_max __glibcpp_f32_max + #define __glibcpp_long_double_digits __glibcpp_f32_digits + #define __glibcpp_long_double_digits10 __glibcpp_f32_digits10 + #define __glibcpp_long_double_radix __glibcpp_f32_radix + #define __glibcpp_long_double_epsilon __glibcpp_f32_epsilon + #define __glibcpp_long_double_round_error __glibcpp_f32_round_error + #define __glibcpp_long_double_min_exponent __glibcpp_f32_min_exponent + #define __glibcpp_long_double_min_exponent10 __glibcpp_f32_min_exponent10 + #define __glibcpp_long_double_max_exponent __glibcpp_f32_max_exponent + #define __glibcpp_long_double_max_exponent10 __glibcpp_f32_max_exponent10 + #elif __glibcpp_long_double_bits == 64 + #define __glibcpp_long_double_min __glibcpp_f64_min + #define __glibcpp_long_double_max __glibcpp_f64_max + #define __glibcpp_long_double_digits __glibcpp_f64_digits + #define __glibcpp_long_double_digits10 __glibcpp_f64_digits10 + #define __glibcpp_long_double_radix __glibcpp_f64_radix + #define __glibcpp_long_double_epsilon __glibcpp_f64_epsilon + #define __glibcpp_long_double_round_error __glibcpp_f64_round_error + #define __glibcpp_long_double_min_exponent __glibcpp_f64_min_exponent + #define __glibcpp_long_double_min_exponent10 __glibcpp_f64_min_exponent10 + #define __glibcpp_long_double_max_exponent __glibcpp_f64_max_exponent + #define __glibcpp_long_double_max_exponent10 __glibcpp_f64_max_exponent10 + #elif __glibcpp_long_double_bits == 80 + #define __glibcpp_long_double_min __glibcpp_f80_min + #define __glibcpp_long_double_max __glibcpp_f80_max + #define __glibcpp_long_double_digits __glibcpp_f80_digits + #define __glibcpp_long_double_digits10 __glibcpp_f80_digits10 + #define __glibcpp_long_double_radix __glibcpp_f80_radix + #define __glibcpp_long_double_epsilon __glibcpp_f80_epsilon + #define __glibcpp_long_double_round_error __glibcpp_f80_round_error + #define __glibcpp_long_double_min_exponent __glibcpp_f80_min_exponent + #define __glibcpp_long_double_min_exponent10 __glibcpp_f80_min_exponent10 + #define __glibcpp_long_double_max_exponent __glibcpp_f80_max_exponent + #define __glibcpp_long_double_max_exponent10 __glibcpp_f80_max_exponent10 + #elif __glibcpp_long_double_bits == 96 + #define __glibcpp_long_double_min __glibcpp_f96_min + #define __glibcpp_long_double_max __glibcpp_f96_max + #define __glibcpp_long_double_digits __glibcpp_f96_digits + #define __glibcpp_long_double_digits10 __glibcpp_f96_digits10 + #define __glibcpp_long_double_radix __glibcpp_f96_radix + #define __glibcpp_long_double_epsilon __glibcpp_f96_epsilon + #define __glibcpp_long_double_round_error __glibcpp_f96_round_error + #define __glibcpp_long_double_min_exponent __glibcpp_f96_min_exponent + #define __glibcpp_long_double_min_exponent10 __glibcpp_f96_min_exponent10 + #define __glibcpp_long_double_max_exponent __glibcpp_f96_max_exponent + #define __glibcpp_long_double_max_exponent10 __glibcpp_f96_max_exponent10 + #elif __glibcpp_long_double_bits == 128 + #define __glibcpp_long_double_min __glibcpp_f128_min + #define __glibcpp_long_double_max __glibcpp_f128_max + #define __glibcpp_long_double_digits __glibcpp_f128_digits + #define __glibcpp_long_double_digits10 __glibcpp_f128_digits10 + #define __glibcpp_long_double_radix __glibcpp_f128_radix + #define __glibcpp_long_double_epsilon __glibcpp_f128_epsilon + #define __glibcpp_long_double_round_error __glibcpp_f128_round_error + #define __glibcpp_long_double_min_exponent __glibcpp_f128_min_exponent + #define __glibcpp_long_double_min_exponent10 __glibcpp_f128_min_exponent10 + #define __glibcpp_long_double_max_exponent __glibcpp_f128_max_exponent + #define __glibcpp_long_double_max_exponent10 __glibcpp_f128_max_exponent10 + #else + // You must define these macros in the configuration file. + #endif + + // FIXME: These are just stubs and inkorrect + + #ifndef __glibcpp_long_double_has_infinity + #define __glibcpp_long_double_has_infinity false + #endif + + #ifndef __glibcpp_long_double_has_quiet_NaN + #define __glibcpp_long_double_has_quiet_NaN false + #endif + + #ifndef __glibcpp_long_double_has_signaling_NaN + #define __glibcpp_long_double_has_signaling_NaN false + #endif + + #ifndef __glibcpp_long_double_has_denorm + #define __glibcpp_long_double_has_denorm denorm_absent + #endif + + #ifndef __glibcpp_long_double_has_denorm_loss + #define __glibcpp_long_double_has_denorm_loss false + #endif + + #ifndef __glibcpp_long_double_infinity + #define __glibcpp_long_double_infinity 0.0L + #endif + + #ifndef __glibcpp_long_double_quiet_NaN + #define __glibcpp_long_double_quiet_NaN 0.0L + #endif + + #ifndef __glibcpp_long_double_signaling_NaN + #define __glibcpp_long_double_signaling_NaN 0.0L + #endif + + #ifndef __glibcpp_long_double_denorm_min + #define __glibcpp_long_double_denorm_min 0.0L + #endif + + #ifndef __glibcpp_long_double_is_iec559 + #define __glibcpp_long_double_is_iec559 false + #endif + + #ifndef __glibcpp_long_double_is_bounded + #define __glibcpp_long_double_is_bounded false + #endif + + #ifndef __glibcpp_long_double_is_modulo + #define __glibcpp_long_double_is_modulo false + #endif + + #ifndef __glibcpp_long_double_traps + #define __glibcpp_long_double_traps false + #endif + + #ifndef __glibcpp_long_double_tinyness_before + #define __glibcpp_long_double_tinyness_before false + #endif + + #ifndef __glibcpp_long_double_round_style + #define __glibcpp_long_double_round_style round_toward_zero + #endif + + + namespace std + { + enum float_round_style + { + round_indeterminate = -1, + round_toward_zero = 0, + round_to_nearest = 1, + round_toward_infinity = 2, + round_toward_neg_infinity = 3 + }; + + enum float_denorm_style + { + denorm_indeterminate = -1, + denorm_absent = 0, + denorm_present = 1 + }; + + // + // The primary class traits + // + template + struct numeric_limits + { + static const bool is_specialized = false; + + static _Tp min() throw() { return static_cast<_Tp>(0); } + static _Tp max() throw() { return static_cast<_Tp>(0); } + + static const int digits = 0; + static const int digits10 = 0; + static const bool is_signed = false; + static const bool is_integer = false; + static const bool is_exact = false; + static const int radix = 0; + + static _Tp epsilon() throw() { return static_cast<_Tp>(0); } + static _Tp round_error() throw() { return static_cast<_Tp>(0); } + + static const int min_exponent = 0; + static const int min_exponent10 = 0; + static const int max_exponent = 0; + static const int max_exponent10 = 0; + + static const bool has_infinity = false; + static const bool has_quiet_NaN = false; + static const bool has_signaling_NaN = false; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + + static _Tp infinity() throw() { return static_cast<_Tp>(0); } + static _Tp quiet_NaN() throw() { return static_cast<_Tp>(0); } + static _Tp signaling_NaN() throw() { return static_cast<_Tp>(0); } + static _Tp denorm_min() throw() { return static_cast<_Tp>(0); } + + static const bool is_iec559 = false; + static const bool is_bounded = false; + static const bool is_modulo = false; + + static const bool traps = false; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; + }; + + template + const bool + numeric_limits<_Tp>::is_specialized; + + template + const int + numeric_limits<_Tp>::digits; + + template + const int + numeric_limits<_Tp>::digits10; + + template + const bool + numeric_limits<_Tp>::is_signed; + + template + const bool + numeric_limits<_Tp>::is_integer; + + template + const bool + numeric_limits<_Tp>::is_exact; + + template + const int + numeric_limits<_Tp>::radix; + + template + const int + numeric_limits<_Tp>::min_exponent; + + template + const int + numeric_limits<_Tp>::min_exponent10; + + template + const int + numeric_limits<_Tp>::max_exponent; + + template + const int + numeric_limits<_Tp>::max_exponent10; + + template + const bool + numeric_limits<_Tp>::has_infinity; + + template + const bool + numeric_limits<_Tp>::has_quiet_NaN; + + template + const bool + numeric_limits<_Tp>::has_signaling_NaN; + + template + const float_denorm_style + numeric_limits<_Tp>::has_denorm; + + template + const bool + numeric_limits<_Tp>::has_denorm_loss; + + template + const bool + numeric_limits<_Tp>::is_iec559; + + template + const bool + numeric_limits<_Tp>::is_bounded; + + template + const bool + numeric_limits<_Tp>::is_modulo; + + template + const bool + numeric_limits<_Tp>::traps; + + template + const bool + numeric_limits<_Tp>::tinyness_before; + + template + const float_round_style + numeric_limits<_Tp>::round_style; + + // Now there follow 15 explicit specializations. Yes, 15. Make sure + // you get the count right. + + template<> + struct numeric_limits + { + static const bool is_specialized = true; + + static bool min() throw() + { return false; } + + static bool max() throw() + { return true; } + + static const int digits = __glibcpp_bool_digits; + static const int digits10 = 1; + static const bool is_signed = false; + static const bool is_integer = true; + static const bool is_exact = true; + static const int radix = 2; + static bool epsilon() throw() + { return false; } + static bool round_error() throw() + { return false; } + + static const int min_exponent = 0; + static const int min_exponent10 = 0; + static const int max_exponent = 0; + static const int max_exponent10 = 0; + + static const bool has_infinity = false; + static const bool has_quiet_NaN = false; + static const bool has_signaling_NaN = false; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + + static bool infinity() throw() + { return false; } + static bool quiet_NaN() throw() + { return false; } + static bool signaling_NaN() throw() + { return false; } + static bool denorm_min() throw() + { return false; } + + static const bool is_iec559 = true; + static const bool is_bounded = true; + static const bool is_modulo = true; + + // It is not clear what it means for a boolean type to trap. + // This is a DR on the LWG issue list. Here, I use integer + // promotion semantics. + static const bool traps = __glibcpp_signed_int_traps + || __glibcpp_signed_long_traps; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; + }; + + #undef __glibcpp_bool_digits + + template<> + struct numeric_limits + { + static const bool is_specialized = true; + + static char min() throw() + { return __glibcpp_char_min; } + static char max() throw() + { return __glibcpp_char_max; } + + static const int digits = __glibcpp_char_digits; + static const int digits10 = __glibcpp_char_digits10; + static const bool is_signed = __glibcpp_plain_char_is_signed; + static const bool is_integer = true; + static const bool is_exact = true; + static const int radix = 2; + static char epsilon() throw() + { return char(); } + static char round_error() throw() + { return char(); } + + static const int min_exponent = 0; + static const int min_exponent10 = 0; + static const int max_exponent = 0; + static const int max_exponent10 = 0; + + static const bool has_infinity = false; + static const bool has_quiet_NaN = false; + static const bool has_signaling_NaN = false; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + + static char infinity() throw() + { return char(); } + static char quiet_NaN() throw() + { return char(); } + static char signaling_NaN() throw() + { return char(); } + static char denorm_min() throw() + { return static_cast(0); } + + static const bool is_iec559 = false; + static const bool is_bounded = true; + static const bool is_modulo = false; + + static const bool traps = __glibcpp_signed_char_traps; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; + }; + + #undef __glibcpp_char_min + #undef __glibcpp_char_max + #undef __glibcpp_char_digits + #undef __glibcpp_char_digits10 + #undef __glibcpp_char_is_signed + #undef __glibcpp_char_traps + + + template<> + struct numeric_limits + { + static const bool is_specialized = true; + + static signed char min() throw() + { return __glibcpp_signed_char_min; } + static signed char max() throw() + { return __glibcpp_signed_char_max; } + + static const int digits = __glibcpp_signed_char_digits; + static const int digits10 = __glibcpp_signed_char_digits10; + static const bool is_signed = true; + static const bool is_integer = true; + static const bool is_exact = true; + static const int radix = 2; + static signed char epsilon() throw() + { return 0; } + static signed char round_error() throw() + { return 0; } + + static const int min_exponent = 0; + static const int min_exponent10 = 0; + static const int max_exponent = 0; + static const int max_exponent10 = 0; + + static const bool has_infinity = false; + static const bool has_quiet_NaN = false; + static const bool has_signaling_NaN = false; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + + static signed char infinity() throw() + { return static_cast(0); } + static signed char quiet_NaN() throw() + { return static_cast(0); } + static signed char signaling_NaN() throw() + { return static_cast(0); } + static signed char denorm_min() throw() + { return static_cast(0); } + + static const bool is_iec559 = false; + static const bool is_bounded = true; + static const bool is_modulo = false; + + static const bool traps = __glibcpp_signed_char_traps; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; + }; + + #undef __glibcpp_signed_char_min + #undef __glibcpp_signed_char_max + #undef __glibcpp_signed_char_digits + #undef __glibcpp_signed_char_digits10 + #undef __glibcpp_signed_char_traps + + template<> + struct numeric_limits + { + static const bool is_specialized = true; + + static unsigned char min() throw() + { return 0; } + static unsigned char max() throw() + { return __glibcpp_unsigned_char_max; } + + static const int digits = __glibcpp_unsigned_char_digits; + static const int digits10 = __glibcpp_unsigned_char_digits10; + static const bool is_signed = false; + static const bool is_integer = true; + static const bool is_exact = true; + static const int radix = 2; + static unsigned char epsilon() throw() + { return 0; } + static unsigned char round_error() throw() + { return 0; } + + static const int min_exponent = 0; + static const int min_exponent10 = 0; + static const int max_exponent = 0; + static const int max_exponent10 = 0; + + static const bool has_infinity = false; + static const bool has_quiet_NaN = false; + static const bool has_signaling_NaN = false; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + + static unsigned char infinity() throw() + { return static_cast(0); } + static unsigned char quiet_NaN() throw() + { return static_cast(0); } + static unsigned char signaling_NaN() throw() + { return static_cast(0); } + static unsigned char denorm_min() throw() + { return static_cast(0); } + + static const bool is_iec559 = false; + static const bool is_bounded = true; + static const bool is_modulo = true; + + static const bool traps = __glibcpp_unsigned_char_traps; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; + }; + + #undef __glibcpp_unsigned_char_max + #undef __glibcpp_unsigned_char_digits + #undef __glibcpp_unsigned_char_digits10 + #undef __glibcpp_unsigned_char_traps + + template<> + struct numeric_limits + { + static const bool is_specialized = true; + + static wchar_t min() throw() + { return __glibcpp_wchar_t_min; } + static wchar_t max() throw() + { return __glibcpp_wchar_t_max; } + + static const int digits = __glibcpp_wchar_t_digits; + static const int digits10 = __glibcpp_wchar_t_digits10; + static const bool is_signed = __glibcpp_wchar_t_is_signed; + static const bool is_integer = true; + static const bool is_exact = true; + static const int radix = 2; + static wchar_t epsilon() throw() + { return 0; } + static wchar_t round_error() throw() + { return 0; } + + static const int min_exponent = 0; + static const int min_exponent10 = 0; + static const int max_exponent = 0; + static const int max_exponent10 = 0; + + static const bool has_infinity = false; + static const bool has_quiet_NaN = false; + static const bool has_signaling_NaN = false; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + + static wchar_t infinity() throw() + { return wchar_t(); } + static wchar_t quiet_NaN() throw() + { return wchar_t(); } + static wchar_t signaling_NaN() throw() + { return wchar_t(); } + static wchar_t denorm_min() throw() + { return wchar_t(); } + + static const bool is_iec559 = false; + static const bool is_bounded = true; + static const bool is_modulo = false; + + static const bool traps = __glibcpp_wchar_t_traps; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; + }; + + #undef __glibcpp_wchar_t_min + #undef __glibcpp_wchar_t_max + #undef __glibcpp_wchar_t_digits + #undef __glibcpp_wchar_t_digits10 + #undef __glibcpp_wchar_t_is_signed + #undef __glibcpp_wchar_t_traps + + template<> + struct numeric_limits + { + static const bool is_specialized = true; + + static short min() throw() + { return __glibcpp_signed_short_min; } + static short max() throw() + { return __glibcpp_signed_short_max; } + + static const int digits = __glibcpp_signed_short_digits; + static const int digits10 = __glibcpp_signed_short_digits10; + static const bool is_signed = true; + static const bool is_integer = true; + static const bool is_exact = true; + static const int radix = 2; + static short epsilon() throw() + { return 0; } + static short round_error() throw() + { return 0; } + + static const int min_exponent = 0; + static const int min_exponent10 = 0; + static const int max_exponent = 0; + static const int max_exponent10 = 0; + + static const bool has_infinity = false; + static const bool has_quiet_NaN = false; + static const bool has_signaling_NaN = false; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + + static short infinity() throw() + { return short(); } + static short quiet_NaN() throw() + { return short(); } + static short signaling_NaN() throw() + { return short(); } + static short denorm_min() throw() + { return short(); } + + static const bool is_iec559 = true; + static const bool is_bounded = true; + static const bool is_modulo = false; + + static const bool traps = __glibcpp_signed_short_traps; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; + }; + + #undef __glibcpp_signed_short_min + #undef __glibcpp_signed_short_max + #undef __glibcpp_signed_short_digits + #undef __glibcpp_signed_short_digits10 + #undef __glibcpp_signed_short_traps + + template<> + struct numeric_limits + { + static const bool is_specialized = true; + + static unsigned short min() throw() + { return 0; } + static unsigned short max() throw() + { return __glibcpp_unsigned_short_max; } + + static const int digits = __glibcpp_unsigned_short_digits; + static const int digits10 = __glibcpp_unsigned_short_digits10; + static const bool is_signed = false; + static const bool is_integer = true; + static const bool is_exact = true; + static const int radix = 2; + static unsigned short epsilon() throw() + { return 0; } + static unsigned short round_error() throw() + { return 0; } + + static const int min_exponent = 0; + static const int min_exponent10 = 0; + static const int max_exponent = 0; + static const int max_exponent10 = 0; + + static const bool has_infinity = false; + static const bool has_quiet_NaN = false; + static const bool has_signaling_NaN = false; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + + static unsigned short infinity() throw() + { return static_cast(0); } + static unsigned short quiet_NaN() throw() + { return static_cast(0); } + static unsigned short signaling_NaN() throw() + { return static_cast(0); } + static unsigned short denorm_min() throw() + { return static_cast(0); } + + static const bool is_iec559 = true; + static const bool is_bounded = true; + static const bool is_modulo = true; + + static const bool traps = __glibcpp_unsigned_short_traps; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; + }; + + #undef __glibcpp_unsigned_short_max + #undef __glibcpp_unsigned_short_digits + #undef __glibcpp_unsigned_short_digits10 + #undef __glibcpp_unsigned_short_traps + + template<> + struct numeric_limits + { + static const bool is_specialized = true; + + static int min() throw() + { return __glibcpp_signed_int_min; } + static int max() throw() + { return __glibcpp_signed_int_max; } + + static const int digits = __glibcpp_signed_int_digits; + static const int digits10 = __glibcpp_signed_int_digits10; + static const bool is_signed = true; + static const bool is_integer = true; + static const bool is_exact = true; + static const int radix = 2; + static int epsilon() throw() + { return 0; } + static int round_error() throw() + { return 0; } + + static const int min_exponent = 0; + static const int min_exponent10 = 0; + static const int max_exponent = 0; + static const int max_exponent10 = 0; + + static const bool has_infinity = false; + static const bool has_quiet_NaN = false; + static const bool has_signaling_NaN = false; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + + static int infinity() throw() + { return static_cast(0); } + static int quiet_NaN() throw() + { return static_cast(0); } + static int signaling_NaN() throw() + { return static_cast(0); } + static int denorm_min() throw() + { return static_cast(0); } + + static const bool is_iec559 = true; + static const bool is_bounded = true; + static const bool is_modulo = false; + + static const bool traps = __glibcpp_signed_int_traps; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; + }; + + #undef __glibcpp_signed_int_min + #undef __glibcpp_signed_int_max + #undef __glibcpp_signed_int_digits + #undef __glibcpp_signed_int_digits10 + #undef __glibcpp_signed_int_traps + + template<> + struct numeric_limits + { + static const bool is_specialized = true; + + static unsigned int min() throw() + { return 0; } + static unsigned int max() throw() + { return __glibcpp_unsigned_int_max; } + + static const int digits = __glibcpp_unsigned_int_digits; + static const int digits10 = __glibcpp_unsigned_int_digits10; + static const bool is_signed = false; + static const bool is_integer = true; + static const bool is_exact = true; + static const int radix = 2; + static unsigned int epsilon() throw() + { return 0; } + static unsigned int round_error() throw() + { return 0; } + + static const int min_exponent = 0; + static const int min_exponent10 = 0; + static const int max_exponent = 0; + static const int max_exponent10 = 0; + + static const bool has_infinity = false; + static const bool has_quiet_NaN = false; + static const bool has_signaling_NaN = false; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + + static unsigned int infinity() throw() + { return static_cast(0); } + static unsigned int quiet_NaN() throw() + { return static_cast(0); } + static unsigned int signaling_NaN() throw() + { return static_cast(0); } + static unsigned int denorm_min() throw() + { return static_cast(0); } + + static const bool is_iec559 = true; + static const bool is_bounded = true; + static const bool is_modulo = true; + + static const bool traps = __glibcpp_unsigned_int_traps; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; + }; + + #undef __glibcpp_unsigned_int_max + #undef __glibcpp_unsigned_int_digits + #undef __glibcpp_unsigned_int_digits10 + #undef __glibcpp_unsigned_int_traps + + template<> + struct numeric_limits + { + static const bool is_specialized = true; + + static long min() throw() + { return __glibcpp_signed_long_min; } + static long max() throw() + { return __glibcpp_signed_long_max; } + + static const int digits = __glibcpp_signed_long_digits; + static const int digits10 = __glibcpp_signed_long_digits10; + static const bool is_signed = true; + static const bool is_integer = true; + static const bool is_exact = true; + static const int radix = 2; + static long epsilon() throw() + { return 0; } + static long round_error() throw() + { return 0; } + + static const int min_exponent = 0; + static const int min_exponent10 = 0; + static const int max_exponent = 0; + static const int max_exponent10 = 0; + + static const bool has_infinity = false; + static const bool has_quiet_NaN = false; + static const bool has_signaling_NaN = false; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + + static long infinity() throw() + { return static_cast(0); } + static long quiet_NaN() throw() + { return static_cast(0); } + static long signaling_NaN() throw() + { return static_cast(0); } + static long denorm_min() throw() + { return static_cast(0); } + + static const bool is_iec559 = true; + static const bool is_bounded = true; + static const bool is_modulo = false; + + static const bool traps = __glibcpp_signed_long_traps; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; + }; + + #undef __glibcpp_signed_long_min + #undef __glibcpp_signed_long_max + #undef __glibcpp_signed_long_digits + #undef __glibcpp_signed_long_digits10 + #undef __glibcpp_signed_long_traps + + template<> + struct numeric_limits + { + static const bool is_specialized = true; + + static unsigned long min() throw() + { return 0; } + static unsigned long max() throw() + { return __glibcpp_unsigned_long_max; } + + static const int digits = __glibcpp_unsigned_long_digits; + static const int digits10 = __glibcpp_unsigned_long_digits10; + static const bool is_signed = false; + static const bool is_integer = true; + static const bool is_exact = true; + static const int radix = 2; + static unsigned long epsilon() throw() + { return 0; } + static unsigned long round_error() throw() + { return 0; } + + static const int min_exponent = 0; + static const int min_exponent10 = 0; + static const int max_exponent = 0; + static const int max_exponent10 = 0; + + static const bool has_infinity = false; + static const bool has_quiet_NaN = false; + static const bool has_signaling_NaN = false; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + + static unsigned long infinity() throw() + { return static_cast(0); } + static unsigned long quiet_NaN() throw() + { return static_cast(0); } + static unsigned long signaling_NaN() throw() + { return static_cast(0); } + static unsigned long denorm_min() throw() + { return static_cast(0); } + + static const bool is_iec559 = true; + static const bool is_bounded = true; + static const bool is_modulo = true; + + static const bool traps = __glibcpp_unsigned_long_traps; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; + }; + + #undef __glibcpp_unsigned_long_max + #undef __glibcpp_unsigned_long_digits + #undef __glibcpp_unsigned_long_digits10 + #undef __glibcpp_unsigned_long_traps + + #ifdef _GLIBCPP_USE_LONG_LONG + + template<> + struct numeric_limits + { + static const bool is_specialized = true; + + static long long min() throw() + { return __glibcpp_signed_long_long_min; } + static long long max() throw() + { return __glibcpp_signed_long_long_max; } + + static const int digits = __glibcpp_signed_long_long_digits; + static const int digits10 = __glibcpp_signed_long_long_digits10; + static const bool is_signed = true; + static const bool is_integer = true; + static const bool is_exact = true; + static const int radix = 2; + static long long epsilon() throw() + { return 0; } + static long long round_error() throw() + { return 0; } + + static const int min_exponent = 0; + static const int min_exponent10 = 0; + static const int max_exponent = 0; + static const int max_exponent10 = 0; + + static const bool has_infinity = false; + static const bool has_quiet_NaN = false; + static const bool has_signaling_NaN = false; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + + static long long infinity() throw() + { return static_cast(0); } + static long long quiet_NaN() throw() + { return static_cast(0); } + static long long signaling_NaN() throw() + { return static_cast(0); } + static long long denorm_min() throw() + { return static_cast(0); } + + static const bool is_iec559 = true; + static const bool is_bounded = true; + static const bool is_modulo = false; + + static const bool traps = __glibcpp_signed_long_long_traps; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; + }; + + #undef __glibcpp_signed_long_long_min + #undef __glibcpp_signed_long_long_max + #undef __glibcpp_signed_long_long_digits + #undef __glibcpp_signed_long_long_digits10 + #undef __glibcpp_signed_long_long_traps + + template<> + struct numeric_limits + { + static const bool is_specialized = true; + + static unsigned long long min() throw() + { return 0; } + static unsigned long long max() throw() + { return __glibcpp_unsigned_long_long_max; } + + static const int digits = __glibcpp_unsigned_long_long_digits; + static const int digits10 = __glibcpp_unsigned_long_long_digits10; + static const bool is_signed = false; + static const bool is_integer = true; + static const bool is_exact = true; + static const int radix = 2; + static unsigned long long epsilon() throw() + { return 0; } + static unsigned long long round_error() throw() + { return 0; } + + static const int min_exponent = 0; + static const int min_exponent10 = 0; + static const int max_exponent = 0; + static const int max_exponent10 = 0; + + static const bool has_infinity = false; + static const bool has_quiet_NaN = false; + static const bool has_signaling_NaN = false; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + + static unsigned long long infinity() throw() + { return static_cast(0); } + static unsigned long long quiet_NaN() throw() + { return static_cast(0); } + static unsigned long long signaling_NaN() throw() + { return static_cast(0); } + static unsigned long long denorm_min() throw() + { return static_cast(0); } + + static const bool is_iec559 = true; + static const bool is_bounded = true; + static const bool is_modulo = true; + + static const bool traps = true; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; + }; + + #undef __glibcpp_unsigned_long_long_max + #undef __glibcpp_unsigned_long_long_digits + #undef __glibcpp_unsigned_long_long_digits10 + #undef __glibcpp_unsigned_long_long_traps + + #endif // _GLIBCPP_USE_LONG_LONG + + + template<> + struct numeric_limits + { + static const bool is_specialized = true; + + static float min() throw() + { return __glibcpp_float_min; } + static float max() throw() + { return __glibcpp_float_max; } + + static const int digits = __glibcpp_float_digits; + static const int digits10 = __glibcpp_float_digits10; + static const bool is_signed = true; + static const bool is_integer = false; + static const bool is_exact = false; + static const int radix = 2; + static float epsilon() throw() + { return __glibcpp_float_radix; } + static float round_error() throw() + { return __glibcpp_float_round_error; } + + static const int min_exponent = __glibcpp_float_min_exponent; + static const int min_exponent10 = __glibcpp_float_min_exponent10; + static const int max_exponent = __glibcpp_float_max_exponent; + static const int max_exponent10 = __glibcpp_float_max_exponent10; + + static const bool has_infinity = __glibcpp_float_has_infinity; + static const bool has_quiet_NaN = __glibcpp_float_has_quiet_NaN; + static const bool has_signaling_NaN = __glibcpp_float_has_signaling_NaN; + static const float_denorm_style has_denorm = __glibcpp_float_has_denorm; + static const bool has_denorm_loss = __glibcpp_float_has_denorm_loss; + + static float infinity() throw() + { return __glibcpp_float_infinity; } + static float quiet_NaN() throw() + { return __glibcpp_float_quiet_NaN; } + static float signaling_NaN() throw() + { return __glibcpp_float_signaling_NaN; } + static float denorm_min() throw() + { return __glibcpp_float_denorm_min; } + + static const bool is_iec559 = __glibcpp_float_is_iec559; + static const bool is_bounded = __glibcpp_float_is_bounded; + static const bool is_modulo = __glibcpp_float_is_modulo; + + static const bool traps = __glibcpp_float_traps; + static const bool tinyness_before = __glibcpp_float_tinyness_before; + static const float_round_style round_style = __glibcpp_float_round_style; + }; + + #undef __glibcpp_float_min + #undef __glibcpp_float_max + #undef __glibcpp_float_digits + #undef __glibcpp_float_digits10 + #undef __glibcpp_float_radix + #undef __glibcpp_float_round_error + #undef __glibcpp_float_min_exponent + #undef __glibcpp_float_min_exponent10 + #undef __glibcpp_float_max_exponent + #undef __glibcpp_float_max_exponent10 + #undef __glibcpp_float_has_infinity + #undef __glibcpp_float_has_quiet_NaN + #undef __glibcpp_float_has_signaling_NaN + #undef __glibcpp_float_has_denorm + #undef __glibcpp_float_has_denorm_loss + #undef __glibcpp_float_infinity + #undef __glibcpp_float_quiet_NaN + #undef __glibcpp_float_signaling_NaN + #undef __glibcpp_float_denorm_min + #undef __glibcpp_float_is_iec559 + #undef __glibcpp_float_is_bounded + #undef __glibcpp_float_is_modulo + #undef __glibcpp_float_traps + #undef __glibcpp_float_tinyness_before + #undef __glibcpp_float_round_style + + template<> + struct numeric_limits + { + static const bool is_specialized = true; + + static double min() throw() + { return __glibcpp_double_min; } + static double max() throw() + { return __glibcpp_double_max; } + + static const int digits = __glibcpp_double_digits; + static const int digits10 = __glibcpp_double_digits10; + static const bool is_signed = true; + static const bool is_integer = false; + static const bool is_exact = false; + static const int radix = __glibcpp_double_radix; + static double epsilon() throw() + { return __glibcpp_double_epsilon; } + static double round_error() throw() + { return __glibcpp_double_round_error; } + + static const int min_exponent = __glibcpp_double_min_exponent; + static const int min_exponent10 = __glibcpp_double_min_exponent10; + static const int max_exponent = __glibcpp_double_max_exponent; + static const int max_exponent10 = __glibcpp_double_max_exponent10; + + static const bool has_infinity = __glibcpp_double_has_infinity; + static const bool has_quiet_NaN = __glibcpp_double_has_quiet_NaN; + static const bool has_signaling_NaN = __glibcpp_double_has_signaling_NaN; + static const float_denorm_style has_denorm = + __glibcpp_double_has_denorm;; + static const bool has_denorm_loss = __glibcpp_double_has_denorm_loss;; + + static double infinity() throw() + { return __glibcpp_double_infinity; } + static double quiet_NaN() throw() + { return __glibcpp_double_quiet_NaN; } + static double signaling_NaN() throw() + { return __glibcpp_double_signaling_NaN; } + static double denorm_min() throw() + { return __glibcpp_double_denorm_min; } + + static const bool is_iec559 = __glibcpp_double_is_iec559; + static const bool is_bounded = __glibcpp_double_is_bounded; + static const bool is_modulo = __glibcpp_double_is_modulo; + + static const bool traps = __glibcpp_double_traps; + static const bool tinyness_before = __glibcpp_double_tinyness_before; + static const float_round_style round_style = + __glibcpp_double_round_style; + }; + + #undef __glibcpp_double_min + #undef __glibcpp_double_max + #undef __glibcpp_double_digits + #undef __glibcpp_double_digits10 + #undef __glibcpp_double_radix + #undef __glibcpp_double_round_error + #undef __glibcpp_double_min_exponent + #undef __glibcpp_double_min_exponent10 + #undef __glibcpp_double_max_exponent + #undef __glibcpp_double_max_exponent10 + #undef __glibcpp_double_has_infinity + #undef __glibcpp_double_has_quiet_NaN + #undef __glibcpp_double_has_signaling_NaN + #undef __glibcpp_double_has_denorm + #undef __glibcpp_double_has_denorm_loss + #undef __glibcpp_double_infinity + #undef __glibcpp_double_quiet_NaN + #undef __glibcpp_double_signaling_NaN + #undef __glibcpp_double_denorm_min + #undef __glibcpp_double_is_iec559 + #undef __glibcpp_double_is_bounded + #undef __glibcpp_double_is_modulo + #undef __glibcpp_double_traps + #undef __glibcpp_double_tinyness_before + #undef __glibcpp_double_round_style + + + template<> + struct numeric_limits + { + static const bool is_specialized = true; + + static long double min() throw() + { return __glibcpp_long_double_min; } + static long double max() throw() + { return __glibcpp_long_double_max; } + + static const int digits = __glibcpp_long_double_digits; + static const int digits10 = __glibcpp_long_double_digits10; + static const bool is_signed = true; + static const bool is_integer = false; + static const bool is_exact = false; + static const int radix = __glibcpp_long_double_radix; + static long double epsilon() throw() + { return __glibcpp_long_double_epsilon; } + static long double round_error() throw() + { return __glibcpp_long_double_round_error; } + + static const int min_exponent = __glibcpp_long_double_min_exponent; + static const int min_exponent10 = __glibcpp_long_double_min_exponent10; + static const int max_exponent = __glibcpp_long_double_max_exponent; + static const int max_exponent10 = __glibcpp_long_double_max_exponent10; + + static const bool has_infinity = __glibcpp_long_double_has_infinity; + static const bool has_quiet_NaN = __glibcpp_long_double_has_quiet_NaN; + static const bool has_signaling_NaN = + __glibcpp_long_double_has_signaling_NaN; + static const float_denorm_style has_denorm = + __glibcpp_long_double_has_denorm; + static const bool has_denorm_loss = + __glibcpp_long_double_has_denorm_loss; + + static long double infinity() throw() + { return __glibcpp_long_double_infinity; } + static long double quiet_NaN() throw() + { return __glibcpp_long_double_quiet_NaN; } + static long double signaling_NaN() throw() + { return __glibcpp_long_double_signaling_NaN; } + static long double denorm_min() throw() + { return __glibcpp_long_double_denorm_min; } + + static const bool is_iec559 = __glibcpp_long_double_is_iec559; + static const bool is_bounded = __glibcpp_long_double_is_bounded; + static const bool is_modulo = __glibcpp_long_double_is_modulo; + + static const bool traps = __glibcpp_long_double_traps; + static const bool tinyness_before = __glibcpp_long_double_tinyness_before; + static const float_round_style round_style = + __glibcpp_long_double_round_style; + }; + + #undef __glibcpp_long_double_min + #undef __glibcpp_long_double_max + #undef __glibcpp_long_double_digits + #undef __glibcpp_long_double_digits10 + #undef __glibcpp_long_double_radix + #undef __glibcpp_long_double_round_error + #undef __glibcpp_long_double_min_exponent + #undef __glibcpp_long_double_min_exponent10 + #undef __glibcpp_long_double_max_exponent + #undef __glibcpp_long_double_max_exponent10 + #undef __glibcpp_long_double_has_infinity + #undef __glibcpp_long_double_has_quiet_NaN + #undef __glibcpp_long_double_has_signaling_NaN + #undef __glibcpp_long_double_has_denorm + #undef __glibcpp_long_double_has_denorm_loss + #undef __glibcpp_long_double_infinity + #undef __glibcpp_long_double_quiet_NaN + #undef __glibcpp_long_double_signaling_NaN + #undef __glibcpp_long_double_denorm_min + #undef __glibcpp_long_double_is_iec559 + #undef __glibcpp_long_double_is_bounded + #undef __glibcpp_long_double_is_modulo + #undef __glibcpp_long_double_traps + #undef __glibcpp_long_double_tinyness_before + #undef __glibcpp_long_double_round_style + + } // namespace std + + #endif // _CPP_NUMERIC_LIMITS diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/std_list.h gcc-3.0.1/libstdc++-v3/include/bits/std_list.h *** gcc-3.0/libstdc++-v3/include/bits/std_list.h Mon Feb 19 10:57:40 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/std_list.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/std_map.h gcc-3.0.1/libstdc++-v3/include/bits/std_map.h *** gcc-3.0/libstdc++-v3/include/bits/std_map.h Mon Feb 19 10:57:40 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/std_map.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/std_memory.h gcc-3.0.1/libstdc++-v3/include/bits/std_memory.h *** gcc-3.0/libstdc++-v3/include/bits/std_memory.h Mon May 14 12:49:04 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/std_memory.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1997-1999 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/std_numeric.h gcc-3.0.1/libstdc++-v3/include/bits/std_numeric.h *** gcc-3.0/libstdc++-v3/include/bits/std_numeric.h Mon May 14 12:49:04 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/std_numeric.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/std_queue.h gcc-3.0.1/libstdc++-v3/include/bits/std_queue.h *** gcc-3.0/libstdc++-v3/include/bits/std_queue.h Mon Jun 11 12:37:49 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/std_queue.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/std_set.h gcc-3.0.1/libstdc++-v3/include/bits/std_set.h *** gcc-3.0/libstdc++-v3/include/bits/std_set.h Mon Feb 19 10:57:40 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/std_set.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/std_sstream.h gcc-3.0.1/libstdc++-v3/include/bits/std_sstream.h *** gcc-3.0/libstdc++-v3/include/bits/std_sstream.h Tue Jun 12 16:07:40 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/std_sstream.h Fri Jul 13 13:55:54 2001 *************** namespace std *** 75,81 **** explicit basic_stringbuf(const __string_type& __str, ios_base::openmode __mode = ios_base::in | ios_base::out) ! : __streambuf_type(), _M_string(__str.c_str()) { _M_stringbuf_init(__mode); } // Get and set: --- 75,81 ---- explicit basic_stringbuf(const __string_type& __str, ios_base::openmode __mode = ios_base::in | ios_base::out) ! : __streambuf_type(), _M_string(__str.data(), __str.size()) { _M_stringbuf_init(__mode); } // Get and set: *************** namespace std *** 84,90 **** { if (_M_mode & ios_base::out) { ! // This is the deal: _M_string.size() is value that // represents the size of the intial string that makes // _M_string, and may not be the correct size of the // current stringbuf internal buffer. --- 84,90 ---- { if (_M_mode & ios_base::out) { ! // This is the deal: _M_string.size() is a value that // represents the size of the intial string that makes // _M_string, and may not be the correct size of the // current stringbuf internal buffer. *************** namespace std *** 116,122 **** // re-allocation of the internal string object, _M_string. _M_buf_size = _M_string.size(); ! // NB: Start ostringstream buffers at 1024 bytes. This is an // experimental value (pronounced "arbitrary" in some of the // hipper english-speaking countries), and can be changed to // suite particular needs. --- 116,122 ---- // re-allocation of the internal string object, _M_string. _M_buf_size = _M_string.size(); ! // NB: Start ostringstream buffers at 512 bytes. This is an // experimental value (pronounced "arbitrary" in some of the // hipper english-speaking countries), and can be changed to // suite particular needs. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/std_stack.h gcc-3.0.1/libstdc++-v3/include/bits/std_stack.h *** gcc-3.0/libstdc++-v3/include/bits/std_stack.h Mon Feb 19 10:57:41 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/std_stack.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/std_stdexcept.h gcc-3.0.1/libstdc++-v3/include/bits/std_stdexcept.h *** gcc-3.0/libstdc++-v3/include/bits/std_stdexcept.h Tue Feb 27 15:03:59 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/std_stdexcept.h Wed Jul 11 12:37:57 2001 *************** *** 31,36 **** --- 31,43 ---- // ISO C++ 19.1 Exception classes // + /** @file std_stdexcept.h + * The Standard C++ library provides classes to be used to report certain + * errors (17.4.4.8) in C++ programs. In the error model reflected in these + * classes, errors are divided into two broad categories: logic errors and + * runtime errors. + */ + #ifndef _CPP_STDEXCEPT #define _CPP_STDEXCEPT 1 *************** *** 41,112 **** --- 48,145 ---- namespace std { + /** Logic errors represent problems in the internal logic of a program; + * in theory, these are preventable, and even detectable before the + * program runs (e.g., violations of class invariants). + * @brief One of two subclasses of exception. + */ class logic_error : public exception { string _M_msg; public: + /** Takes a character string describing the error. */ explicit logic_error(const string& __arg); virtual ~logic_error() throw(); + /** Returns a C-style character string describing the general cause of + * the current error (the same string passed to the ctor). */ virtual const char* what() const throw(); }; + /** Thrown by the library, or by you, to report domain errors (domain in + * the mathmatical sense). */ class domain_error : public logic_error { public: explicit domain_error(const string& __arg); }; + /** Thrown to report invalid arguments to functions. */ class invalid_argument : public logic_error { public: explicit invalid_argument(const string& __arg); }; + /** Thrown when an object is constructed that would exceed its maximum + * permitted size (e.g., a basic_string instance). */ class length_error : public logic_error { public: explicit length_error(const string& __arg); }; + /** This represents an argument whose value is not within the expected + * range (e.g., boundary checks in basic_string). */ class out_of_range : public logic_error { public: explicit out_of_range(const string& __arg); }; + /** Runtime errors represent problems outside the scope of a program; + * they cannot be easily predicted and can generally only be caught as + * the program executes. + * @brief One of two subclasses of exception. + */ class runtime_error : public exception { string _M_msg; public: + /** Takes a character string describing the error. */ explicit runtime_error(const string& __arg); virtual ~runtime_error() throw(); + /** Returns a C-style character string describing the general cause of + * the current error (the same string passed to the ctor). */ virtual const char* what() const throw(); }; + /** Thrown to indicate range errors in internal computations. */ class range_error : public runtime_error { public: explicit range_error(const string& __arg); }; + /** Thrown to indicate arithmetic overflow. */ class overflow_error : public runtime_error { public: explicit overflow_error(const string& __arg); }; + /** Thrown to indicate arithmetic underflow. */ class underflow_error : public runtime_error { public: diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/std_utility.h gcc-3.0.1/libstdc++-v3/include/bits/std_utility.h *** gcc-3.0/libstdc++-v3/include/bits/std_utility.h Mon May 14 12:49:04 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/std_utility.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/std_vector.h gcc-3.0.1/libstdc++-v3/include/bits/std_vector.h *** gcc-3.0/libstdc++-v3/include/bits/std_vector.h Mon May 14 12:49:04 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/std_vector.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_algo.h gcc-3.0.1/libstdc++-v3/include/bits/stl_algo.h *** gcc-3.0/libstdc++-v3/include/bits/stl_algo.h Mon May 14 12:49:04 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_algo.h Wed Jun 27 10:12:27 2001 *************** *** 1,3 **** --- 1,32 ---- + // Algorithm implimentation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_algobase.h gcc-3.0.1/libstdc++-v3/include/bits/stl_algobase.h *** gcc-3.0/libstdc++-v3/include/bits/stl_algobase.h Mon May 14 12:49:04 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_algobase.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Bits and pieces used in algorithms -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_alloc.h gcc-3.0.1/libstdc++-v3/include/bits/stl_alloc.h *** gcc-3.0/libstdc++-v3/include/bits/stl_alloc.h Mon May 14 12:49:04 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_alloc.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Allocators -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1996-1997 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_bvector.h gcc-3.0.1/libstdc++-v3/include/bits/stl_bvector.h *** gcc-3.0/libstdc++-v3/include/bits/stl_bvector.h Mon May 14 12:49:04 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_bvector.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // bit_vector and vector specialization -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_construct.h gcc-3.0.1/libstdc++-v3/include/bits/stl_construct.h *** gcc-3.0/libstdc++-v3/include/bits/stl_construct.h Mon May 14 12:49:04 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_construct.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // nonstandard construct and destroy functions -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_deque.h gcc-3.0.1/libstdc++-v3/include/bits/stl_deque.h *** gcc-3.0/libstdc++-v3/include/bits/stl_deque.h Mon May 14 12:49:04 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_deque.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // deque implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_function.h gcc-3.0.1/libstdc++-v3/include/bits/stl_function.h *** gcc-3.0/libstdc++-v3/include/bits/stl_function.h Mon Jun 11 12:37:49 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_function.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Functor implementations -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_heap.h gcc-3.0.1/libstdc++-v3/include/bits/stl_heap.h *** gcc-3.0/libstdc++-v3/include/bits/stl_heap.h Mon May 14 12:49:04 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_heap.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Heap implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_iterator.h gcc-3.0.1/libstdc++-v3/include/bits/stl_iterator.h *** gcc-3.0/libstdc++-v3/include/bits/stl_iterator.h Mon May 14 12:49:04 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_iterator.h Thu Jul 19 17:14:09 2001 *************** *** 1,3 **** --- 1,32 ---- + // Iterators -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 *************** private: *** 408,414 **** // This iterator adapter is 'normal' in the sense that it does not ! // change the semantics of any of the operators of its itererator // parameter. Its primary purpose is to convert an iterator that is // not a class, e.g. a pointer, into an iterator that is a class. // The _Container parameter exists solely so that different containers --- 437,443 ---- // This iterator adapter is 'normal' in the sense that it does not ! // change the semantics of any of the operators of its iterator // parameter. Its primary purpose is to convert an iterator that is // not a class, e.g. a pointer, into an iterator that is a class. // The _Container parameter exists solely so that different containers *************** operator>=(const __normal_iterator<_Iter *** 535,541 **** template inline __normal_iterator<_Iterator, _Container> ! operator+(__normal_iterator<_Iterator, _Container>::difference_type __n, const __normal_iterator<_Iterator, _Container>& __i) { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } --- 564,570 ---- template inline __normal_iterator<_Iterator, _Container> ! operator+(typename __normal_iterator<_Iterator, _Container>::difference_type __n, const __normal_iterator<_Iterator, _Container>& __i) { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_iterator_base_funcs.h gcc-3.0.1/libstdc++-v3/include/bits/stl_iterator_base_funcs.h *** gcc-3.0/libstdc++-v3/include/bits/stl_iterator_base_funcs.h Mon May 14 12:49:04 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_iterator_base_funcs.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Functions used by iterators -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_iterator_base_types.h gcc-3.0.1/libstdc++-v3/include/bits/stl_iterator_base_types.h *** gcc-3.0/libstdc++-v3/include/bits/stl_iterator_base_types.h Mon May 14 12:49:04 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_iterator_base_types.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Types used in iterator implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 *************** *** 37,42 **** --- 66,74 ---- // such as front_insert_iterator and istream_iterator. #pragma GCC system_header + + #include // for ptrdiff_t + namespace std { diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_list.h gcc-3.0.1/libstdc++-v3/include/bits/stl_list.h *** gcc-3.0/libstdc++-v3/include/bits/stl_list.h Mon May 14 12:49:04 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_list.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // List implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_map.h gcc-3.0.1/libstdc++-v3/include/bits/stl_map.h *** gcc-3.0/libstdc++-v3/include/bits/stl_map.h Mon May 14 12:49:05 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_map.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Map implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_multimap.h gcc-3.0.1/libstdc++-v3/include/bits/stl_multimap.h *** gcc-3.0/libstdc++-v3/include/bits/stl_multimap.h Mon May 14 12:49:05 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_multimap.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Multimap implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_multiset.h gcc-3.0.1/libstdc++-v3/include/bits/stl_multiset.h *** gcc-3.0/libstdc++-v3/include/bits/stl_multiset.h Mon Jun 4 10:52:30 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_multiset.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Multiset implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_numeric.h gcc-3.0.1/libstdc++-v3/include/bits/stl_numeric.h *** gcc-3.0/libstdc++-v3/include/bits/stl_numeric.h Mon May 14 12:49:05 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_numeric.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Numeric functions implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_pair.h gcc-3.0.1/libstdc++-v3/include/bits/stl_pair.h *** gcc-3.0/libstdc++-v3/include/bits/stl_pair.h Mon Jun 4 11:05:20 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_pair.h Wed Jul 11 12:37:57 2001 *************** *** 1,3 **** --- 1,32 ---- + // Pair implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 *************** *** 24,31 **** * purpose. It is provided "as is" without express or implied warranty. */ ! /* NOTE: This is an internal header file, included by other STL headers. ! * You should not attempt to use it directly. */ #ifndef __SGI_STL_INTERNAL_PAIR_H --- 53,61 ---- * purpose. It is provided "as is" without express or implied warranty. */ ! /** @file stl_pair.h ! * This is an internal header file, included by other STL headers. You ! * should not attempt to use it directly. */ #ifndef __SGI_STL_INTERNAL_PAIR_H *************** *** 34,64 **** namespace std { template struct pair { ! typedef _T1 first_type; ! typedef _T2 second_type; ! _T1 first; ! _T2 second; #ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS //265. std::pair::pair() effects overly restrictive pair() : first(), second() {} #else pair() : first(_T1()), second(_T2()) {} #endif pair(const _T1& __a, const _T2& __b) : first(__a), second(__b) {} template pair(const pair<_U1, _U2>& __p) : first(__p.first), second(__p.second) {} }; template inline bool operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { return __x.first == __y.first && __x.second == __y.second; } template inline bool operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { --- 64,101 ---- namespace std { + /// pair holds two objects of arbitrary type. template struct pair { ! typedef _T1 first_type; ///< @c first_type is the first bound type ! typedef _T2 second_type; ///< @c second_type is the second bound type ! _T1 first; ///< @c first is a copy of the first object ! _T2 second; ///< @c second is a copy of the second object #ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS //265. std::pair::pair() effects overly restrictive + /** The default constructor creates @c first and @c second using their + * respective default constructors. */ pair() : first(), second() {} #else pair() : first(_T1()), second(_T2()) {} #endif + /** Two objects may be passed to a @c pair constructor to be copied. */ pair(const _T1& __a, const _T2& __b) : first(__a), second(__b) {} + /** There is also a templated copy ctor for the @c pair class itself. */ template pair(const pair<_U1, _U2>& __p) : first(__p.first), second(__p.second) {} }; + /// Two pairs of the same type are equal iff their members are equal. template inline bool operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { return __x.first == __y.first && __x.second == __y.second; } + /// ...put link to onlinedocs here... template inline bool operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { *************** inline bool operator<(const pair<_T1, _T *** 66,91 **** --- 103,141 ---- (!(__y.first < __x.first) && __x.second < __y.second); } + /// Uses @c operator== to find the result. template inline bool operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { return !(__x == __y); } + /// Uses @c operator< to find the result. template inline bool operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { return __y < __x; } + /// Uses @c operator< to find the result. template inline bool operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { return !(__y < __x); } + /// Uses @c operator< to find the result. template inline bool operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { return !(__x < __y); } + /** + * @brief A convenience wrapper for creating a pair from two objects. + * @param x The first object. + * @param y The second object. + * @return A newly-constructed pair<> object of the appropriate type. + * + * The standard requires that the objects be passed by reference-to-const, + * but LWG issue #181 says they should be passed by const value. + */ template #ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS //181. make_pair() unintended behavior diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_pthread_alloc.h gcc-3.0.1/libstdc++-v3/include/bits/stl_pthread_alloc.h *** gcc-3.0/libstdc++-v3/include/bits/stl_pthread_alloc.h Mon May 14 12:49:05 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_pthread_alloc.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Wrapper of pthread allocation header -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1996-1997 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_queue.h gcc-3.0.1/libstdc++-v3/include/bits/stl_queue.h *** gcc-3.0/libstdc++-v3/include/bits/stl_queue.h Mon Jun 4 10:36:08 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_queue.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Queue implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_raw_storage_iter.h gcc-3.0.1/libstdc++-v3/include/bits/stl_raw_storage_iter.h *** gcc-3.0/libstdc++-v3/include/bits/stl_raw_storage_iter.h Mon May 14 12:49:05 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_raw_storage_iter.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_relops.h gcc-3.0.1/libstdc++-v3/include/bits/stl_relops.h *** gcc-3.0/libstdc++-v3/include/bits/stl_relops.h Mon May 14 12:49:05 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_relops.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // std::rel_ops implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_set.h gcc-3.0.1/libstdc++-v3/include/bits/stl_set.h *** gcc-3.0/libstdc++-v3/include/bits/stl_set.h Mon Jun 4 10:52:30 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_set.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Set implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_stack.h gcc-3.0.1/libstdc++-v3/include/bits/stl_stack.h *** gcc-3.0/libstdc++-v3/include/bits/stl_stack.h Mon May 14 12:49:05 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_stack.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Stack implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_tempbuf.h gcc-3.0.1/libstdc++-v3/include/bits/stl_tempbuf.h *** gcc-3.0/libstdc++-v3/include/bits/stl_tempbuf.h Mon May 14 12:49:05 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_tempbuf.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Temporary buffer implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_threads.h gcc-3.0.1/libstdc++-v3/include/bits/stl_threads.h *** gcc-3.0/libstdc++-v3/include/bits/stl_threads.h Wed Jun 13 23:07:12 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_threads.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Threading support -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1997-1999 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_tree.h gcc-3.0.1/libstdc++-v3/include/bits/stl_tree.h *** gcc-3.0/libstdc++-v3/include/bits/stl_tree.h Mon May 14 12:49:05 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_tree.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // RB tree implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1996,1997 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_uninitialized.h gcc-3.0.1/libstdc++-v3/include/bits/stl_uninitialized.h *** gcc-3.0/libstdc++-v3/include/bits/stl_uninitialized.h Mon May 14 12:49:05 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_uninitialized.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Raw memory manipulators -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stl_vector.h gcc-3.0.1/libstdc++-v3/include/bits/stl_vector.h *** gcc-3.0/libstdc++-v3/include/bits/stl_vector.h Mon May 14 12:49:05 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stl_vector.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Vector implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1994 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/streambuf.tcc gcc-3.0.1/libstdc++-v3/include/bits/streambuf.tcc *** gcc-3.0/libstdc++-v3/include/bits/streambuf.tcc Mon May 14 12:49:05 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/streambuf.tcc Thu Jul 19 17:14:09 2001 *************** *** 37,43 **** namespace std { template ! basic_streambuf<_CharT, _Traits>::int_type basic_streambuf<_CharT, _Traits>:: sbumpc() { --- 37,43 ---- namespace std { template ! typename basic_streambuf<_CharT, _Traits>::int_type basic_streambuf<_CharT, _Traits>:: sbumpc() { *************** namespace std { *** 54,60 **** } template ! basic_streambuf<_CharT, _Traits>::int_type basic_streambuf<_CharT, _Traits>:: sputbackc(char_type __c) { --- 54,60 ---- } template ! typename basic_streambuf<_CharT, _Traits>::int_type basic_streambuf<_CharT, _Traits>:: sputbackc(char_type __c) { *************** namespace std { *** 72,78 **** } template ! basic_streambuf<_CharT, _Traits>::int_type basic_streambuf<_CharT, _Traits>:: sungetc() { --- 72,78 ---- } template ! typename basic_streambuf<_CharT, _Traits>::int_type basic_streambuf<_CharT, _Traits>:: sungetc() { *************** namespace std { *** 93,99 **** // buffers will still be valid. (This happens if setp is used to set // the internal buffer to say some externally-allocated sequence.) template ! basic_streambuf<_CharT, _Traits>::int_type basic_streambuf<_CharT, _Traits>:: sputc(char_type __c) { --- 93,99 ---- // buffers will still be valid. (This happens if setp is used to set // the internal buffer to say some externally-allocated sequence.) template ! typename basic_streambuf<_CharT, _Traits>::int_type basic_streambuf<_CharT, _Traits>:: sputc(char_type __c) { diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/stringfwd.h gcc-3.0.1/libstdc++-v3/include/bits/stringfwd.h *** gcc-3.0/libstdc++-v3/include/bits/stringfwd.h Mon May 14 12:49:05 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/stringfwd.h Fri Jul 13 13:55:54 2001 *************** namespace std *** 43,51 **** template struct char_traits; ! template<> class char_traits; #ifdef _GLIBCPP_USE_WCHAR_T ! template<> class char_traits; #endif template --- 43,51 ---- template struct char_traits; ! template<> struct char_traits; #ifdef _GLIBCPP_USE_WCHAR_T ! template<> struct char_traits; #endif template diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/type_traits.h gcc-3.0.1/libstdc++-v3/include/bits/type_traits.h *** gcc-3.0/libstdc++-v3/include/bits/type_traits.h Mon May 14 12:49:05 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/type_traits.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Type traits implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * * Copyright (c) 1997 diff -Nrc3pad gcc-3.0/libstdc++-v3/include/bits/valarray_meta.h gcc-3.0.1/libstdc++-v3/include/bits/valarray_meta.h *** gcc-3.0/libstdc++-v3/include/bits/valarray_meta.h Mon May 14 12:49:05 2001 --- gcc-3.0.1/libstdc++-v3/include/bits/valarray_meta.h Mon Jul 9 07:57:05 2001 *************** namespace std *** 655,670 **** valarray operator[] (const valarray&) const; valarray operator[] (const valarray&) const; ! _Expr<_UnClos<_Unary_plus,_Expr,_Clos>, value_type> operator+ () const; ! _Expr<_UnClos, value_type> operator- () const; ! _Expr<_UnClos<_Bitwise_not,_Expr,_Clos>, value_type> operator~ () const; ! _Expr<_UnClos, bool> operator! () const; size_t size () const; --- 655,670 ---- valarray operator[] (const valarray&) const; valarray operator[] (const valarray&) const; ! _Expr<_UnClos<_Unary_plus,std::_Expr,_Clos>, value_type> operator+ () const; ! _Expr<_UnClos, value_type> operator- () const; ! _Expr<_UnClos<_Bitwise_not,std::_Expr,_Clos>, value_type> operator~ () const; ! _Expr<_UnClos, bool> operator! () const; size_t size () const; *************** namespace std *** 769,784 **** inline _Expr<_UnClos, bool> _Expr<_Dom,_Tp>::operator! () const { ! typedef _UnClos _Closure; return _Expr<_Closure,_Tp> (_Closure(this->_M_closure)); } #define _DEFINE_EXPR_UNARY_OPERATOR(_Op, _Name) \ template \ ! inline _Expr<_UnClos<_Name,_Expr,_Dom>,_Tp> \ _Expr<_Dom,_Tp>::operator _Op () const \ { \ ! typedef _UnClos<_Name,_Expr,_Dom> _Closure; \ return _Expr<_Closure,_Tp> (_Closure (this->_M_closure)); \ } --- 769,784 ---- inline _Expr<_UnClos, bool> _Expr<_Dom,_Tp>::operator! () const { ! typedef _UnClos _Closure; return _Expr<_Closure,_Tp> (_Closure(this->_M_closure)); } #define _DEFINE_EXPR_UNARY_OPERATOR(_Op, _Name) \ template \ ! inline _Expr<_UnClos<_Name,std::_Expr,_Dom>,_Tp> \ _Expr<_Dom,_Tp>::operator _Op () const \ { \ ! typedef _UnClos<_Name,std::_Expr,_Dom> _Closure; \ return _Expr<_Closure,_Tp> (_Closure (this->_M_closure)); \ } diff -Nrc3pad gcc-3.0/libstdc++-v3/include/ext/hash_map gcc-3.0.1/libstdc++-v3/include/ext/hash_map *** gcc-3.0/libstdc++-v3/include/ext/hash_map Mon May 14 12:49:08 2001 --- gcc-3.0.1/libstdc++-v3/include/ext/hash_map Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Hashing map implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1996 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/ext/hash_set gcc-3.0.1/libstdc++-v3/include/ext/hash_set *** gcc-3.0/libstdc++-v3/include/ext/hash_set Mon May 14 12:49:08 2001 --- gcc-3.0.1/libstdc++-v3/include/ext/hash_set Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Hashing set implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1996 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/ext/rope gcc-3.0.1/libstdc++-v3/include/ext/rope *** gcc-3.0/libstdc++-v3/include/ext/rope Thu Oct 5 04:27:02 2000 --- gcc-3.0.1/libstdc++-v3/include/ext/rope Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // SGI's rope class -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1997 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/ext/ropeimpl.h gcc-3.0.1/libstdc++-v3/include/ext/ropeimpl.h *** gcc-3.0/libstdc++-v3/include/ext/ropeimpl.h Mon May 14 12:49:08 2001 --- gcc-3.0.1/libstdc++-v3/include/ext/ropeimpl.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // SGI's rope class implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1997 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/ext/slist gcc-3.0.1/libstdc++-v3/include/ext/slist *** gcc-3.0/libstdc++-v3/include/ext/slist Mon May 14 12:49:08 2001 --- gcc-3.0.1/libstdc++-v3/include/ext/slist Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Singly-linked list implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1997 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/ext/stl_hash_fun.h gcc-3.0.1/libstdc++-v3/include/ext/stl_hash_fun.h *** gcc-3.0/libstdc++-v3/include/ext/stl_hash_fun.h Mon May 14 12:49:08 2001 --- gcc-3.0.1/libstdc++-v3/include/ext/stl_hash_fun.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // 'struct hash' from SGI -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1996-1998 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/ext/stl_hashtable.h gcc-3.0.1/libstdc++-v3/include/ext/stl_hashtable.h *** gcc-3.0/libstdc++-v3/include/ext/stl_hashtable.h Mon May 14 12:49:08 2001 --- gcc-3.0.1/libstdc++-v3/include/ext/stl_hashtable.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // Hashtable implementation used by containers -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1996,1997 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/include/ext/stl_rope.h gcc-3.0.1/libstdc++-v3/include/ext/stl_rope.h *** gcc-3.0/libstdc++-v3/include/ext/stl_rope.h Mon May 14 12:49:08 2001 --- gcc-3.0.1/libstdc++-v3/include/ext/stl_rope.h Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,32 ---- + // SGI's rope implementation -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1997-1998 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/libio/ChangeLog gcc-3.0.1/libstdc++-v3/libio/ChangeLog *** gcc-3.0/libstdc++-v3/libio/ChangeLog Sun Jun 17 12:41:24 2001 --- gcc-3.0.1/libstdc++-v3/libio/ChangeLog Sun Aug 19 14:08:37 2001 *************** *** 1,3 **** --- 1,11 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + 20010617 Release Manager * GCC 3.0 Released. diff -Nrc3pad gcc-3.0/libstdc++-v3/libio/Makefile.am gcc-3.0.1/libstdc++-v3/libio/Makefile.am *** gcc-3.0/libstdc++-v3/libio/Makefile.am Sat Feb 3 01:01:44 2001 --- gcc-3.0.1/libstdc++-v3/libio/Makefile.am Thu Jul 26 00:52:20 2001 *************** noinst_LTLIBRARIES = *** 32,49 **** endif # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES ! GLIBCPP_INCLUDE_DIR = @GLIBCPP_INCLUDE_DIR@ ! C_INCLUDE_DIR = @C_INCLUDE_DIR@ TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ - LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ - LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ LIBIO_INCLUDES = @LIBIO_INCLUDES@ - CSHADOW_INCLUDES = @CSHADOW_INCLUDES@ INCLUDES = \ -nostdinc++ \ ! -I$(top_builddir)/include -I$(GLIBCPP_INCLUDE_DIR) \ ! $(LIBIO_INCLUDES) $(TOPLEVEL_INCLUDES) libio_headers = \ libio.h libioP.h iolibio.h --- 32,44 ---- endif # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES ! GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@ TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ LIBIO_INCLUDES = @LIBIO_INCLUDES@ INCLUDES = \ -nostdinc++ \ ! $(GLIBCPP_INCLUDES) $(LIBIO_INCLUDES) $(TOPLEVEL_INCLUDES) libio_headers = \ libio.h libioP.h iolibio.h diff -Nrc3pad gcc-3.0/libstdc++-v3/libio/Makefile.in gcc-3.0.1/libstdc++-v3/libio/Makefile.in *** gcc-3.0/libstdc++-v3/libio/Makefile.in Mon May 14 12:49:09 2001 --- gcc-3.0.1/libstdc++-v3/libio/Makefile.in Mon Aug 13 15:22:26 2001 *************** target_alias = @target_alias@ *** 65,86 **** target_triplet = @target@ AR = @AR@ AS = @AS@ CC = @CC@ CPP = @CPP@ CSHADOW_FLAGS = @CSHADOW_FLAGS@ ! CSTD_INCLUDES = @CSTD_INCLUDES@ CXX = @CXX@ CXXCPP = @CXXCPP@ DEBUG_FLAGS = @DEBUG_FLAGS@ DLLTOOL = @DLLTOOL@ EXEEXT = @EXEEXT@ EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@ GCJ = @GCJ@ GCJFLAGS = @GCJFLAGS@ LIBMATHOBJS = @LIBMATHOBJS@ LIBSTRINGOBJS = @LIBSTRINGOBJS@ LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ --- 65,95 ---- target_triplet = @target@ AR = @AR@ AS = @AS@ + ATOMICITY_INC_SRCDIR = @ATOMICITY_INC_SRCDIR@ + BASIC_FILE_H = @BASIC_FILE_H@ CC = @CC@ + CCODECVT_C = @CCODECVT_C@ + CLOCALE_H = @CLOCALE_H@ CPP = @CPP@ CSHADOW_FLAGS = @CSHADOW_FLAGS@ ! CSTDIO_H = @CSTDIO_H@ CXX = @CXX@ CXXCPP = @CXXCPP@ + C_INCLUDE_DIR = @C_INCLUDE_DIR@ DEBUG_FLAGS = @DEBUG_FLAGS@ DLLTOOL = @DLLTOOL@ EXEEXT = @EXEEXT@ EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@ GCJ = @GCJ@ GCJFLAGS = @GCJFLAGS@ + GLIBCPP_IS_CROSS_COMPILING = @GLIBCPP_IS_CROSS_COMPILING@ LIBMATHOBJS = @LIBMATHOBJS@ + LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ LIBSTRINGOBJS = @LIBSTRINGOBJS@ + LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@ LIBTOOL = @LIBTOOL@ + LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ *************** OBJDUMP = @OBJDUMP@ *** 88,93 **** --- 97,103 ---- OBJEXT = @OBJEXT@ OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@ OPT_LDFLAGS = @OPT_LDFLAGS@ + OS_INC_SRCDIR = @OS_INC_SRCDIR@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ SECTION_FLAGS = @SECTION_FLAGS@ *************** glibcpp_basedir = @glibcpp_basedir@ *** 104,109 **** --- 114,120 ---- glibcpp_builddir = @glibcpp_builddir@ glibcpp_prefixdir = @glibcpp_prefixdir@ glibcpp_srcdir = @glibcpp_srcdir@ + glibcpp_thread_h = @glibcpp_thread_h@ glibcpp_toolexecdir = @glibcpp_toolexecdir@ glibcpp_toolexeclibdir = @glibcpp_toolexeclibdir@ gxx_include_dir = @gxx_include_dir@ *************** mkinstalldirs = $(SHELL) $(toplevel_srcd *** 118,132 **** @GLIBCPP_BUILD_LIBIO_FALSE@noinst_LTLIBRARIES = # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES ! GLIBCPP_INCLUDE_DIR = @GLIBCPP_INCLUDE_DIR@ ! C_INCLUDE_DIR = @C_INCLUDE_DIR@ TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ - LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ - LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ LIBIO_INCLUDES = @LIBIO_INCLUDES@ - CSHADOW_INCLUDES = @CSHADOW_INCLUDES@ ! INCLUDES = -nostdinc++ -I$(top_builddir)/include -I$(GLIBCPP_INCLUDE_DIR) $(LIBIO_INCLUDES) $(TOPLEVEL_INCLUDES) libio_headers = libio.h libioP.h iolibio.h --- 129,139 ---- @GLIBCPP_BUILD_LIBIO_FALSE@noinst_LTLIBRARIES = # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES ! GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@ TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ LIBIO_INCLUDES = @LIBIO_INCLUDES@ ! INCLUDES = -nostdinc++ $(GLIBCPP_INCLUDES) $(LIBIO_INCLUDES) $(TOPLEVEL_INCLUDES) libio_headers = libio.h libioP.h iolibio.h diff -Nrc3pad gcc-3.0/libstdc++-v3/libmath/Makefile.am gcc-3.0.1/libstdc++-v3/libmath/Makefile.am *** gcc-3.0/libstdc++-v3/libmath/Makefile.am Sat Feb 3 01:01:44 2001 --- gcc-3.0.1/libstdc++-v3/libmath/Makefile.am Thu Jul 26 11:25:42 2001 *************** *** 1,6 **** ## Makefile for the math subdirectory of the GNU C++ Standard library. ## ! ## Copyright (C) 1997, 1998, 1999, 2000 Cygnus Solutions ## ## This file is part of the libstdc++ version 3 distribution. ## Process this file with automake to produce Makefile.in. --- 1,6 ---- ## Makefile for the math subdirectory of the GNU C++ Standard library. ## ! ## Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. ## ## This file is part of the libstdc++ version 3 distribution. ## Process this file with automake to produce Makefile.in. *************** mkinstalldirs = $(SHELL) $(toplevel_srcd *** 27,38 **** noinst_LTLIBRARIES = libmath.la ! EXTRA_LONG_DOUBLE_yes = \ ! hypotl.c signbitl.c ! EXTRA_DIST = \ ! hypot.c hypotf.c atan2f.c expf.c \ ! $(EXTRA_LONG_DOUBLE_yes) libmath_la_LIBADD = \ @LIBMATHOBJS@ \ --- 27,35 ---- noinst_LTLIBRARIES = libmath.la ! EXTRA_LONG_DOUBLE_yes = signbitl.c ! EXTRA_DIST = $(EXTRA_LONG_DOUBLE_yes) libmath_la_LIBADD = \ @LIBMATHOBJS@ \ *************** libmath_la_LIBADD = \ *** 40,60 **** libmath_la_DEPENDENCIES = $(libmath_la_LIBADD) ! libmath_la_SOURCES = \ ! signbit.c signbitf.c LINK = $(LIBTOOL) --mode=link "$(CCLD)" $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES - GLIBCPP_INCLUDE_DIR = @GLIBCPP_INCLUDE_DIR@ - C_INCLUDE_DIR = @C_INCLUDE_DIR@ TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ - LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ - LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ - LIBIO_INCLUDES = @LIBIO_INCLUDES@ - CSHADOW_INCLUDES = @CSHADOW_INCLUDES@ INCLUDES = \ - -I$(GLIBCPP_INCLUDE_DIR) -I$(top_builddir)/include \ $(TOPLEVEL_INCLUDES) --- 37,49 ---- libmath_la_DEPENDENCIES = $(libmath_la_LIBADD) ! libmath_la_SOURCES = signbit.c signbitf.c stubs.c LINK = $(LIBTOOL) --mode=link "$(CCLD)" $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ INCLUDES = \ $(TOPLEVEL_INCLUDES) diff -Nrc3pad gcc-3.0/libstdc++-v3/libmath/Makefile.in gcc-3.0.1/libstdc++-v3/libmath/Makefile.in *** gcc-3.0/libstdc++-v3/libmath/Makefile.in Mon May 14 12:49:10 2001 --- gcc-3.0.1/libstdc++-v3/libmath/Makefile.in Mon Aug 13 15:22:26 2001 *************** target_alias = @target_alias@ *** 65,86 **** target_triplet = @target@ AR = @AR@ AS = @AS@ CC = @CC@ CPP = @CPP@ CSHADOW_FLAGS = @CSHADOW_FLAGS@ ! CSTD_INCLUDES = @CSTD_INCLUDES@ CXX = @CXX@ CXXCPP = @CXXCPP@ DEBUG_FLAGS = @DEBUG_FLAGS@ DLLTOOL = @DLLTOOL@ EXEEXT = @EXEEXT@ EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@ GCJ = @GCJ@ GCJFLAGS = @GCJFLAGS@ LIBMATHOBJS = @LIBMATHOBJS@ LIBSTRINGOBJS = @LIBSTRINGOBJS@ LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ --- 65,97 ---- target_triplet = @target@ AR = @AR@ AS = @AS@ + ATOMICITY_INC_SRCDIR = @ATOMICITY_INC_SRCDIR@ + BASIC_FILE_H = @BASIC_FILE_H@ CC = @CC@ + CCODECVT_C = @CCODECVT_C@ + CLOCALE_H = @CLOCALE_H@ CPP = @CPP@ CSHADOW_FLAGS = @CSHADOW_FLAGS@ ! CSTDIO_H = @CSTDIO_H@ CXX = @CXX@ CXXCPP = @CXXCPP@ + C_INCLUDE_DIR = @C_INCLUDE_DIR@ DEBUG_FLAGS = @DEBUG_FLAGS@ DLLTOOL = @DLLTOOL@ EXEEXT = @EXEEXT@ EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@ GCJ = @GCJ@ GCJFLAGS = @GCJFLAGS@ + GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@ + GLIBCPP_IS_CROSS_COMPILING = @GLIBCPP_IS_CROSS_COMPILING@ + LIBIO_INCLUDES = @LIBIO_INCLUDES@ LIBMATHOBJS = @LIBMATHOBJS@ + LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ LIBSTRINGOBJS = @LIBSTRINGOBJS@ + LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@ LIBTOOL = @LIBTOOL@ + LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ *************** OBJDUMP = @OBJDUMP@ *** 88,93 **** --- 99,105 ---- OBJEXT = @OBJEXT@ OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@ OPT_LDFLAGS = @OPT_LDFLAGS@ + OS_INC_SRCDIR = @OS_INC_SRCDIR@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ SECTION_FLAGS = @SECTION_FLAGS@ *************** glibcpp_basedir = @glibcpp_basedir@ *** 104,109 **** --- 116,122 ---- glibcpp_builddir = @glibcpp_builddir@ glibcpp_prefixdir = @glibcpp_prefixdir@ glibcpp_srcdir = @glibcpp_srcdir@ + glibcpp_thread_h = @glibcpp_thread_h@ glibcpp_toolexecdir = @glibcpp_toolexecdir@ glibcpp_toolexeclibdir = @glibcpp_toolexeclibdir@ gxx_include_dir = @gxx_include_dir@ *************** mkinstalldirs = $(SHELL) $(toplevel_srcd *** 117,148 **** noinst_LTLIBRARIES = libmath.la ! EXTRA_LONG_DOUBLE_yes = hypotl.c signbitl.c ! ! ! EXTRA_DIST = hypot.c hypotf.c atan2f.c expf.c $(EXTRA_LONG_DOUBLE_yes) libmath_la_LIBADD = @LIBMATHOBJS@ $(EXTRA_LONG_DOUBLE_$(USE_COMPLEX_LONG_DOUBLE)) libmath_la_DEPENDENCIES = $(libmath_la_LIBADD) ! libmath_la_SOURCES = signbit.c signbitf.c ! LINK = $(LIBTOOL) --mode=link "$(CCLD)" $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES - GLIBCPP_INCLUDE_DIR = @GLIBCPP_INCLUDE_DIR@ - C_INCLUDE_DIR = @C_INCLUDE_DIR@ TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ - LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ - LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ - LIBIO_INCLUDES = @LIBIO_INCLUDES@ - CSHADOW_INCLUDES = @CSHADOW_INCLUDES@ ! INCLUDES = -I$(GLIBCPP_INCLUDE_DIR) -I$(top_builddir)/include $(TOPLEVEL_INCLUDES) CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = --- 130,152 ---- noinst_LTLIBRARIES = libmath.la ! EXTRA_LONG_DOUBLE_yes = signbitl.c + EXTRA_DIST = $(EXTRA_LONG_DOUBLE_yes) libmath_la_LIBADD = @LIBMATHOBJS@ $(EXTRA_LONG_DOUBLE_$(USE_COMPLEX_LONG_DOUBLE)) libmath_la_DEPENDENCIES = $(libmath_la_LIBADD) ! libmath_la_SOURCES = signbit.c signbitf.c stubs.c LINK = $(LIBTOOL) --mode=link "$(CCLD)" $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ ! INCLUDES = $(TOPLEVEL_INCLUDES) CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = *************** CPPFLAGS = @CPPFLAGS@ *** 154,160 **** LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ libmath_la_LDFLAGS = ! libmath_la_OBJECTS = signbit.lo signbitf.lo CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) --- 158,164 ---- LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ libmath_la_LDFLAGS = ! libmath_la_OBJECTS = signbit.lo signbitf.lo stubs.lo CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) diff -Nrc3pad gcc-3.0/libstdc++-v3/libmath/atan2f.c gcc-3.0.1/libstdc++-v3/libmath/atan2f.c *** gcc-3.0/libstdc++-v3/libmath/atan2f.c Fri Oct 6 18:01:45 2000 --- gcc-3.0.1/libstdc++-v3/libmath/atan2f.c Wed Dec 31 16:00:00 1969 *************** *** 1,39 **** - /* Compute arc tangent. */ - - /* Copyright (C) 1997-1999 Free Software Foundation, Inc. - - This file is part of the GNU ISO C++ Library. This library is free - software; you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) - any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this library; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, - USA. - - As a special exception, you may use this file as part of a free software - library without restriction. Specifically, if other files instantiate - templates or use macros or inline functions from this file, or you compile - this file and link it with other files to produce an executable, this - file does not by itself cause the resulting executable to be covered by - the GNU General Public License. This exception does not however - invalidate any other reasons why the executable file might be covered by - the GNU General Public License. */ - - - #include - #include "mathconf.h" - - float - atan2f (float x, float y) - { - /* We use the double version. */ - return atan2 (x, y); - } --- 0 ---- diff -Nrc3pad gcc-3.0/libstdc++-v3/libmath/expf.c gcc-3.0.1/libstdc++-v3/libmath/expf.c *** gcc-3.0/libstdc++-v3/libmath/expf.c Fri Oct 6 18:01:45 2000 --- gcc-3.0.1/libstdc++-v3/libmath/expf.c Wed Dec 31 16:00:00 1969 *************** *** 1,39 **** - /* Compute exponential function. */ - - /* Copyright (C) 1997-1999 Free Software Foundation, Inc. - - This file is part of the GNU ISO C++ Library. This library is free - software; you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) - any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this library; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, - USA. - - As a special exception, you may use this file as part of a free software - library without restriction. Specifically, if other files instantiate - templates or use macros or inline functions from this file, or you compile - this file and link it with other files to produce an executable, this - file does not by itself cause the resulting executable to be covered by - the GNU General Public License. This exception does not however - invalidate any other reasons why the executable file might be covered by - the GNU General Public License. */ - - - #include - #include "mathconf.h" - - float - expf (float x) - { - /* We use the double version. */ - return exp (x); - } --- 0 ---- diff -Nrc3pad gcc-3.0/libstdc++-v3/libmath/hypot.c gcc-3.0.1/libstdc++-v3/libmath/hypot.c *** gcc-3.0/libstdc++-v3/libmath/hypot.c Fri Oct 6 18:01:45 2000 --- gcc-3.0.1/libstdc++-v3/libmath/hypot.c Wed Dec 31 16:00:00 1969 *************** *** 1,38 **** - /* Compute hypothenuse. */ - - /* Copyright (C) 1997-1999 Free Software Foundation, Inc. - - This file is part of the GNU ISO C++ Library. This library is free - software; you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) - any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this library; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, - USA. - - As a special exception, you may use this file as part of a free software - library without restriction. Specifically, if other files instantiate - templates or use macros or inline functions from this file, or you compile - this file and link it with other files to produce an executable, this - file does not by itself cause the resulting executable to be covered by - the GNU General Public License. This exception does not however - invalidate any other reasons why the executable file might be covered by - the GNU General Public License. */ - - /* If the platform is so pathetic that is has no hypot function it does - not deserve it better than getting this version. */ - extern double sqrt (double); - - double - hypot (double x, double y) - { - return sqrt (x * x + y * y); - } --- 0 ---- diff -Nrc3pad gcc-3.0/libstdc++-v3/libmath/hypotf.c gcc-3.0.1/libstdc++-v3/libmath/hypotf.c *** gcc-3.0/libstdc++-v3/libmath/hypotf.c Fri Oct 6 18:01:45 2000 --- gcc-3.0.1/libstdc++-v3/libmath/hypotf.c Wed Dec 31 16:00:00 1969 *************** *** 1,48 **** - /* Compute hypothenuse. */ - - /* Copyright (C) 1997-1999 Free Software Foundation, Inc. - - This file is part of the GNU ISO C++ Library. This library is free - software; you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) - any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this library; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, - USA. - - As a special exception, you may use this file as part of a free software - library without restriction. Specifically, if other files instantiate - templates or use macros or inline functions from this file, or you compile - this file and link it with other files to produce an executable, this - file does not by itself cause the resulting executable to be covered by - the GNU General Public License. This exception does not however - invalidate any other reasons why the executable file might be covered by - the GNU General Public License. */ - - #include - - /* If there is a `double' version use it. Otherwise make it simply and - stupid. */ - extern double hypot (double, double); - extern double sqrt (double); - extern float sqrtf (float); - - float - hypotf (float x, float y) - { - #ifdef HAVE_HYPOT - return hypot (x, y); - #elif HAVE_SQRTF - return sqrtf (x * x + y * y); - #else - return sqrt (x * x + y * y); - #endif - } --- 0 ---- diff -Nrc3pad gcc-3.0/libstdc++-v3/libmath/hypotl.c gcc-3.0.1/libstdc++-v3/libmath/hypotl.c *** gcc-3.0/libstdc++-v3/libmath/hypotl.c Fri Oct 6 18:01:45 2000 --- gcc-3.0.1/libstdc++-v3/libmath/hypotl.c Wed Dec 31 16:00:00 1969 *************** *** 1,37 **** - /* Compute hypothenuse. */ - - /* Copyright (C) 1997-1999 Free Software Foundation, Inc. - - This file is part of the GNU ISO C++ Library. This library is free - software; you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) - any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this library; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, - USA. - - As a special exception, you may use this file as part of a free software - library without restriction. Specifically, if other files instantiate - templates or use macros or inline functions from this file, or you compile - this file and link it with other files to produce an executable, this - file does not by itself cause the resulting executable to be covered by - the GNU General Public License. This exception does not however - invalidate any other reasons why the executable file might be covered by - the GNU General Public License. */ - - /* The platform supports some long double functions but not hypotl. Blarg. */ - extern long double sqrtl (long double); - - long double - hypotl (long double x, long double y) - { - return sqrtl (x * x + y * y); - } --- 0 ---- diff -Nrc3pad gcc-3.0/libstdc++-v3/libmath/mathconf.h gcc-3.0.1/libstdc++-v3/libmath/mathconf.h *** gcc-3.0/libstdc++-v3/libmath/mathconf.h Sun Feb 25 01:25:42 2001 --- gcc-3.0.1/libstdc++-v3/libmath/mathconf.h Thu Aug 16 05:29:42 2001 *************** *** 1,6 **** /* Configuration data for libmath subpart of libstdc++. */ ! /* Copyright (C) 1997-1999, 2000 Free Software Foundation, Inc. This file is part of the GNU ISO C++ Library. This library is free software; you can redistribute it and/or modify it under the --- 1,6 ---- /* Configuration data for libmath subpart of libstdc++. */ ! /* Copyright (C) 1997-1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU ISO C++ Library. This library is free software; you can redistribute it and/or modify it under the *************** *** 28,50 **** the GNU General Public License. */ ! #include ! #ifdef _GLIBCPP_HAVE_ENDIAN_H # include #else ! # ifdef _GLIBCPP_HAVE_MACHINE_ENDIAN_H # include # else ! # ifdef _GLIBCPP_HAVE_SYS_MACHINE_H # include # else ! # if defined _GLIBCPP_HAVE_SYS_ISA_DEFS_H || defined _GLIBCPP_HAVE_MACHINE_PARAM_H /* This is on Solaris. */ ! # ifdef _GLIBCPP_HAVE_SYS_ISA_DEFS_H # include # endif ! # ifdef _GLIBCPP_HAVE_MACHINE_PARAM_H # include # endif # ifdef _LITTLE_ENDIAN --- 28,53 ---- the GNU General Public License. */ ! #include ! #ifdef HAVE_ENDIAN_H # include #else ! # ifdef HAVE_MACHINE_ENDIAN_H ! # ifdef __OpenBSD__ ! # include ! # endif # include # else ! # ifdef HAVE_SYS_MACHINE_H # include # else ! # if defined HAVE_SYS_ISA_DEFS_H || defined HAVE_MACHINE_PARAM_H /* This is on Solaris. */ ! # ifdef HAVE_SYS_ISA_DEFS_H # include # endif ! # ifdef HAVE_MACHINE_PARAM_H # include # endif # ifdef _LITTLE_ENDIAN *************** typedef int Int32_t __attribute ((mode ( *** 72,78 **** typedef unsigned int U_int64_t __attribute ((mode (DI))); typedef int Int64_t __attribute ((mode (DI))); ! #ifdef _GLIBCPP_HAVE_NAN_H # include #endif --- 75,81 ---- typedef unsigned int U_int64_t __attribute ((mode (DI))); typedef int Int64_t __attribute ((mode (DI))); ! #ifdef HAVE_NAN_H # include #endif *************** typedef int Int64_t __attribute ((mode ( *** 81,95 **** double nan (void); #endif ! #ifdef _GLIBCPP_HAVE_IEEEFP_H # include #endif ! #ifdef _GLIBCPP_HAVE_FP_H # include #endif ! #ifdef _GLIBCPP_HAVE_FLOAT_H # include #endif --- 84,98 ---- double nan (void); #endif ! #ifdef HAVE_IEEEFP_H # include #endif ! #ifdef HAVE_FP_H # include #endif ! #ifdef HAVE_FLOAT_H # include #endif *************** do { \ *** 262,310 **** qw_u.value = (d); \ (msw) = qw_u.parts64.msw; \ } while (0) ! /* Replacement for non-existing float functions. */ ! #if !defined(_GLIBCPP_HAVE_FABSF) && !defined(_GLIBCPP_HAVE___BUILTIN_FABSF) # define fabsf(x) fabs (x) #endif ! #if !defined(_GLIBCPP_HAVE_COSF) && !defined(_GLIBCPP_HAVE___BUILTIN_COSF) # define cosf(x) cos (x) #endif ! #ifndef _GLIBCPP_HAVE_COSHF # define coshf(x) cosh (x) #endif ! #ifndef _GLIBCPP_HAVE_EXPF # define expf(x) expf (x) #endif ! #ifndef _GLIBCPP_HAVE_LOGF # define logf(x) log(x) #endif ! #ifndef _GLIBCPP_HAVE_LOG10F # define log10f(x) log10 (x) #endif ! #ifndef _GLIBCPP_HAVE_POWF # define powf(x, y) pow (x, y) #endif ! #if !defined(_GLIBCPP_HAVE_SINF) && !defined(_GLIBCPP_HAVE___BUILTIN_SINF) # define sinf(x) sin (x) #endif ! #ifndef _GLIBCPP_HAVE_SINHF # define sinhf(x) sinh (x) #endif ! #if !defined(_GLIBCPP_HAVE_SQRTF) && !defined(_GLIBCPP_HAVE___BUILTIN_SQRTF) # define sqrtf(x) sqrt (x) #endif ! #ifndef _GLIBCPP_HAVE_TANF # define tanf(x) tan (x) #endif ! #ifndef _GLIBCPP_HAVE_TANHF # define tanhf(x) tanh (x) #endif ! #ifndef _GLIBCPP_HAVE_STRTOF # define strtof(s, e) strtod (s, e) #endif #ifdef __cplusplus } #endif --- 265,314 ---- qw_u.value = (d); \ (msw) = qw_u.parts64.msw; \ } while (0) ! /* Replacement for non-existing float functions. */ ! #if !defined(HAVE_FABSF) && !defined(HAVE___BUILTIN_FABSF) # define fabsf(x) fabs (x) #endif ! #if !defined(HAVE_COSF) && !defined(HAVE___BUILTIN_COSF) # define cosf(x) cos (x) #endif ! #ifndef HAVE_COSHF # define coshf(x) cosh (x) #endif ! #ifndef HAVE_EXPF # define expf(x) expf (x) #endif ! #ifndef HAVE_LOGF # define logf(x) log(x) #endif ! #ifndef HAVE_LOG10F # define log10f(x) log10 (x) #endif ! #ifndef HAVE_POWF # define powf(x, y) pow (x, y) #endif ! #if !defined(HAVE_SINF) && !defined(HAVE___BUILTIN_SINF) # define sinf(x) sin (x) #endif ! #ifndef HAVE_SINHF # define sinhf(x) sinh (x) #endif ! #if !defined(HAVE_SQRTF) && !defined(HAVE___BUILTIN_SQRTF) # define sqrtf(x) sqrt (x) #endif ! #ifndef HAVE_TANF # define tanf(x) tan (x) #endif ! #ifndef HAVE_TANHF # define tanhf(x) tanh (x) #endif ! #ifndef HAVE_STRTOF # define strtof(s, e) strtod (s, e) #endif #ifdef __cplusplus } #endif + diff -Nrc3pad gcc-3.0/libstdc++-v3/libmath/stubs.c gcc-3.0.1/libstdc++-v3/libmath/stubs.c *** gcc-3.0/libstdc++-v3/libmath/stubs.c Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/libstdc++-v3/libmath/stubs.c Mon Aug 13 23:50:24 2001 *************** *** 0 **** --- 1,271 ---- + /* Stub definitions for libmath subpart of libstdc++. */ + + /* Copyright (C) 2001 Free Software Foundation, Inc. + + This file is part of the GNU ISO C++ Library. This library is free + software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the + Free Software Foundation; either version 2, or (at your option) + any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this library; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. + + As a special exception, you may use this file as part of a free software + library without restriction. Specifically, if other files instantiate + templates or use macros or inline functions from this file, or you compile + this file and link it with other files to produce an executable, this + file does not by itself cause the resulting executable to be covered by + the GNU General Public License. This exception does not however + invalidate any other reasons why the executable file might be covered by + the GNU General Public License. */ + + #include + #include "config.h" + + /* For targets which do not have support for long double versions, + we use the crude approximation. We'll do better later. */ + + + #ifndef HAVE_ATAN2F + float + atan2f(float x, float y) + { + return (float) atan2(x, y); + } + #endif + + #ifndef HAVE_ATAN2L + long double + atan2l(long double x, long double y) + { + return atan2((double) x, (double) y); + } + #endif + + + #if !defined(HAVE_COSF) && !defined(HAVE___BUILTIN_COSF) + float + cosf(float x) + { + return (float) cos(x); + } + #endif + + #ifndef HAVE_COSL + long double + cosl(long double x) + { + return cos((double) x); + } + #endif + + + #ifndef HAVE_COSHF + float + coshf(float x) + { + return (float) cosh(x); + } + #endif + + #ifndef HAVE_COSHL + long double + coshl(long double x) + { + return cosh((double) x); + } + #endif + + + #ifndef HAVE_EXPF + float + expf(float x) + { + return (float) exp(x); + } + #endif + + #ifndef HAVE_EXPL + long double + expl(long double x) + { + return exp((double) x); + } + #endif + + + /* Compute the hypothenuse of a right triangle with side x and y. */ + #ifndef HAVE_HYPOTF + float + hypotf(float x, float y) + { + float s = fabsf(x) + fabsf(y); + x /= s; y /= s; + return s * sqrtf(x * x + y * y); + } + #endif + + #ifndef HAVE_HYPOT + double + hypot(double x, double y) + { + double s = fabs(x) + fabs(y); + x /= s; y /= s; + return s * sqrt(x * x + y * y); + } + #endif + + #ifndef HAVE_HYPOTL + long double + hypotl(long double x, long double y) + { + long double s = fabsl(x) + fabsl(y); + x /= s; y /= s; + return s * sqrtl(x * x + y * y); + } + #endif + + + + #ifndef HAVE_LOGF + float + logf(float x) + { + return (float) log(x); + } + #endif + + #ifndef HAVE_LOGL + long double + logl(long double x) + { + return log((double) x); + } + #endif + + + #ifndef HAVE_LOG10F + float + log10f(float x) + { + return (float) log10(x); + } + #endif + + #ifndef HAVE_LOG10L + long double + log10l(long double x) + { + return log10((double) x); + } + #endif + + + #ifndef HAVE_POWF + float + powf(float x, float y) + { + return (float) pow(x, y); + } + #endif + + #ifndef HAVE_POWL + long double + powl(long double x, long double y) + { + return pow((double) x, (double) y); + } + #endif + + + #if !defined(HAVE_SINF) && !defined(HAVE___BUILTIN_SINF) + float + sinf(float x) + { + return (float) sin(x); + } + #endif + + #ifndef HAVE_SINL + long double + sinl(long double x) + { + return sin((double) x); + } + #endif + + + #ifndef HAVE_SINHF + float + sinhf(float x) + { + return (float) sinh(x); + } + #endif + + #ifndef HAVE_SINHL + long double + sinhl(long double x) + { + return sinh((double) x); + } + #endif + + + #ifndef HAVE_SQRTF + float + sqrtf(float x) + { + return (float) sqrt(x); + } + #endif + + #ifndef HAVE_SQRTL + long double + sqrtl(long double x) + { + return sqrt((double) x); + } + #endif + + + #ifndef HAVE_TANF + float + tanf(float x) + { + return (float) tan(x); + } + #endif + + #ifndef HAVE_TANL + long double + tanl(long double x) + { + return tan((double) x); + } + #endif + + + #ifndef HAVE_TANHF + float + tanhf(float x) + { + return (float) tanh(x); + } + #endif + + #ifndef HAVE_TANHL + long double + tanhl(long double x) + { + return tanh((double) x); + } + #endif diff -Nrc3pad gcc-3.0/libstdc++-v3/libsupc++/Makefile.am gcc-3.0.1/libstdc++-v3/libsupc++/Makefile.am *** gcc-3.0/libstdc++-v3/libsupc++/Makefile.am Sun Jun 3 19:29:37 2001 --- gcc-3.0.1/libstdc++-v3/libsupc++/Makefile.am Thu Jul 26 00:52:21 2001 *************** WARN_CXXFLAGS = \ *** 55,72 **** @WARN_FLAGS@ $(WERROR) -fdiagnostics-show-location=once # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES ! GLIBCPP_INCLUDE_DIR = @GLIBCPP_INCLUDE_DIR@ ! C_INCLUDE_DIR = @C_INCLUDE_DIR@ ! CSTD_INCLUDES = @CSTD_INCLUDES@ ! LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ - LIBIO_INCLUDES = @LIBIO_INCLUDES@ - TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ INCLUDES = \ -I$(toplevel_srcdir)/gcc -I$(toplevel_srcdir)/include \ ! -I$(GLIBCPP_INCLUDE_DIR) $(CSTD_INCLUDES) -I$(top_builddir)/include \ ! $(LIBSUPCXX_INCLUDES) headers = \ exception new typeinfo cxxabi.h exception_defines.h --- 55,66 ---- @WARN_FLAGS@ $(WERROR) -fdiagnostics-show-location=once # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES ! GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@ LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ INCLUDES = \ -I$(toplevel_srcdir)/gcc -I$(toplevel_srcdir)/include \ ! $(GLIBCPP_INCLUDES) $(LIBSUPCXX_INCLUDES) headers = \ exception new typeinfo cxxabi.h exception_defines.h diff -Nrc3pad gcc-3.0/libstdc++-v3/libsupc++/Makefile.in gcc-3.0.1/libstdc++-v3/libsupc++/Makefile.in *** gcc-3.0/libstdc++-v3/libsupc++/Makefile.in Sun Jun 3 19:29:37 2001 --- gcc-3.0.1/libstdc++-v3/libsupc++/Makefile.in Mon Aug 13 15:22:26 2001 *************** target_alias = @target_alias@ *** 65,95 **** --- 65,107 ---- target_triplet = @target@ AR = @AR@ AS = @AS@ + ATOMICITY_INC_SRCDIR = @ATOMICITY_INC_SRCDIR@ + BASIC_FILE_H = @BASIC_FILE_H@ CC = @CC@ + CCODECVT_C = @CCODECVT_C@ + CLOCALE_H = @CLOCALE_H@ CPP = @CPP@ CSHADOW_FLAGS = @CSHADOW_FLAGS@ + CSTDIO_H = @CSTDIO_H@ CXXCPP = @CXXCPP@ + C_INCLUDE_DIR = @C_INCLUDE_DIR@ DEBUG_FLAGS = @DEBUG_FLAGS@ DLLTOOL = @DLLTOOL@ EXEEXT = @EXEEXT@ EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@ GCJ = @GCJ@ GCJFLAGS = @GCJFLAGS@ + GLIBCPP_IS_CROSS_COMPILING = @GLIBCPP_IS_CROSS_COMPILING@ + LIBIO_INCLUDES = @LIBIO_INCLUDES@ LIBMATHOBJS = @LIBMATHOBJS@ + LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ LIBSTRINGOBJS = @LIBSTRINGOBJS@ LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@ LIBTOOL = @LIBTOOL@ + LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPT_LDFLAGS = @OPT_LDFLAGS@ + OS_INC_SRCDIR = @OS_INC_SRCDIR@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ SECTION_FLAGS = @SECTION_FLAGS@ SECTION_LDFLAGS = @SECTION_LDFLAGS@ STRIP = @STRIP@ + TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ USE_COMPLEX_LONG_DOUBLE = @USE_COMPLEX_LONG_DOUBLE@ VERSION = @VERSION@ WARN_FLAGS = @WARN_FLAGS@ *************** glibcpp_basedir = @glibcpp_basedir@ *** 101,106 **** --- 113,119 ---- glibcpp_builddir = @glibcpp_builddir@ glibcpp_prefixdir = @glibcpp_prefixdir@ glibcpp_srcdir = @glibcpp_srcdir@ + glibcpp_thread_h = @glibcpp_thread_h@ glibcpp_toolexecdir = @glibcpp_toolexecdir@ glibcpp_toolexeclibdir = @glibcpp_toolexeclibdir@ gxx_include_dir = @gxx_include_dir@ *************** WARN_CXXFLAGS = @WARN_FLAGS@ $(WERROR) *** 140,154 **** # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES ! GLIBCPP_INCLUDE_DIR = @GLIBCPP_INCLUDE_DIR@ ! C_INCLUDE_DIR = @C_INCLUDE_DIR@ ! CSTD_INCLUDES = @CSTD_INCLUDES@ ! LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ - LIBIO_INCLUDES = @LIBIO_INCLUDES@ - TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ ! INCLUDES = -I$(toplevel_srcdir)/gcc -I$(toplevel_srcdir)/include -I$(GLIBCPP_INCLUDE_DIR) $(CSTD_INCLUDES) -I$(top_builddir)/include $(LIBSUPCXX_INCLUDES) headers = exception new typeinfo cxxabi.h exception_defines.h --- 153,162 ---- # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES ! GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@ LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ ! INCLUDES = -I$(toplevel_srcdir)/gcc -I$(toplevel_srcdir)/include $(GLIBCPP_INCLUDES) $(LIBSUPCXX_INCLUDES) headers = exception new typeinfo cxxabi.h exception_defines.h diff -Nrc3pad gcc-3.0/libstdc++-v3/libsupc++/exception gcc-3.0.1/libstdc++-v3/libsupc++/exception *** gcc-3.0/libstdc++-v3/libsupc++/exception Sun May 13 00:10:26 2001 --- gcc-3.0.1/libstdc++-v3/libsupc++/exception Wed Jul 11 12:37:58 2001 *************** *** 28,33 **** --- 28,38 ---- // invalidate any other reasons why the executable file might be covered by // the GNU General Public License. + /** @file exception + * This header defines several types and functions relating to the + * handling of exceptions in a C++ program. + */ + #ifndef __EXCEPTION__ #define __EXCEPTION__ *************** extern "C++" { *** 35,48 **** --- 40,63 ---- namespace std { + /** This is the base class for all exceptions thrown by the standard + * library, and by certain language expressions. You are free to derive + * your own %exception classes, or use a different hierarchy, or to + * throw non-class data (e.g., fundamental types). + * @brief Base class for all library exceptions. + */ class exception { public: exception() throw() { } virtual ~exception() throw(); + /** Returns a C-style character string describing the general cause + * of the current error. */ virtual const char* what() const throw(); }; + /** If an %exception is thrown which is not listed in a function's + * %exception specification, one of these may be thrown. */ class bad_exception : public exception { public: *************** namespace std *** 50,64 **** --- 65,97 ---- virtual ~bad_exception() throw(); }; + /// If you write a replacement %terminate handler, it must be of this type. typedef void (*terminate_handler) (); + /// If you write a replacement %unexpected handler, it must be of this type. typedef void (*unexpected_handler) (); + /// Takes a new handler function as an argument, returns the old function. terminate_handler set_terminate(terminate_handler) throw(); + /** The runtime will call this function if %exception handling must be + * abandoned for any reason. */ void terminate() __attribute__ ((__noreturn__)); + /// Takes a new handler function as an argument, returns the old function. unexpected_handler set_unexpected(unexpected_handler) throw(); + /** The runtime will call this function if an %exception is thrown which + * violates the function's %exception specification. */ void unexpected() __attribute__ ((__noreturn__)); + /** [18.6.4]/1: "Returns true after completing evaluation of a + * throw-expression until either completing initialization of the + * exception-declaration in the matching handler or entering @c unexpected() + * due to the throw; or after entering @c terminate() for any reason + * other than an explicit call to @c terminate(). [Note: This includes + * stack unwinding [15.2]. end note]" + * + * 2: "When @c uncaught_exception() is true, throwing an %exception can + * result in a call of @c terminate() (15.5.1)." + */ bool uncaught_exception() throw(); } // namespace std diff -Nrc3pad gcc-3.0/libstdc++-v3/libsupc++/new gcc-3.0.1/libstdc++-v3/libsupc++/new *** gcc-3.0/libstdc++-v3/libsupc++/new Sun May 13 00:10:26 2001 --- gcc-3.0.1/libstdc++-v3/libsupc++/new Wed Jul 11 12:37:58 2001 *************** *** 28,33 **** --- 28,39 ---- // invalidate any other reasons why the executable file might be covered by // the GNU General Public License. + /** @file new + * This header defines several functions to manage dynamic memory and + * handling memory allocation errors; see + * http://gcc.gnu.org/onlinedocs/libstdc++/18_support/howto.html#4 for more. + */ + #ifndef __NEW__ #define __NEW__ *************** extern "C++" { *** 38,43 **** --- 44,51 ---- namespace std { + /** @c bad_alloc (or classes derived from it) is used to report allocation + * errors from the throwing forms of @c new. */ class bad_alloc : public exception { public: *************** namespace std *** 47,57 **** struct nothrow_t { }; extern const nothrow_t nothrow; typedef void (*new_handler)(); new_handler set_new_handler(new_handler); } // namespace std ! // Replaceable signatures. void *operator new(std::size_t) throw (std::bad_alloc); void *operator new[](std::size_t) throw (std::bad_alloc); void operator delete(void *) throw(); --- 55,78 ---- struct nothrow_t { }; extern const nothrow_t nothrow; + /** If you write your own error handler to be called by @c new, it must + * be of this type. */ typedef void (*new_handler)(); + /// Takes a replacement handler as the argument, returns the previous handler. new_handler set_new_handler(new_handler); } // namespace std ! //@{ ! /** These are replaceable signatures: ! * - normal single new and delete (no arguments, throw @c bad_alloc on error) ! * - normal array new and delete (same) ! * - @c nothrow single new and delete (take a @c nothrow argument, return ! * @c NULL on error) ! * - @c nothrow array new and delete (same) ! * ! * Placement new and delete signatures (take a memory address argument, ! * does nothing) may not be replaced by a user's program. ! */ void *operator new(std::size_t) throw (std::bad_alloc); void *operator new[](std::size_t) throw (std::bad_alloc); void operator delete(void *) throw(); *************** void operator delete[](void *, const std *** 64,69 **** --- 85,91 ---- // Default placement versions of operator new. inline void *operator new(std::size_t, void *place) throw() { return place; } inline void *operator new[](std::size_t, void *place) throw() { return place; } + //@} } // extern "C++" #endif diff -Nrc3pad gcc-3.0/libstdc++-v3/libsupc++/typeinfo gcc-3.0.1/libstdc++-v3/libsupc++/typeinfo *** gcc-3.0/libstdc++-v3/libsupc++/typeinfo Sun May 13 00:10:26 2001 --- gcc-3.0.1/libstdc++-v3/libsupc++/typeinfo Wed Jul 11 12:37:58 2001 *************** *** 27,32 **** --- 27,36 ---- // invalidate any other reasons why the executable file might be covered by // the GNU General Public License. + /** @file typeinfo + * This header provides RTTI support. + */ + #ifndef __TYPEINFO__ #define __TYPEINFO__ *************** namespace __cxxabiv1 *** 49,65 **** namespace std { class type_info { public: ! // Destructor. Being the first non-inline virtual function, this ! // controls in which translation unit the vtable is emitted. The ! // compiler makes use of that information to know where to emit ! // the runtime-mandated type_info structures in the new-abi. virtual ~type_info(); private: ! // Assigning type_info is not supported. made private. type_info& operator=(const type_info&); type_info(const type_info&); --- 53,72 ---- namespace std { + /** The @c type_info class describes type information generated by + * an implementation. + * @brief Used in RTTI. */ class type_info { public: ! /** Destructor. Being the first non-inline virtual function, this ! * controls in which translation unit the vtable is emitted. The ! * compiler makes use of that information to know where to emit ! * the runtime-mandated type_info structures in the new-abi. */ virtual ~type_info(); private: ! /// Assigning type_info is not supported. Made private. type_info& operator=(const type_info&); type_info(const type_info&); *************** namespace std *** 71,76 **** --- 78,85 ---- public: // the public interface + /** Returns an \e implementation-defined byte string; this is not + * portable between compilers! */ const char* name() const { return __name; } *************** namespace std *** 81,86 **** --- 90,97 ---- // type. Uniqueness must use the _name value, not object address. bool operator==(const type_info& __arg) const; #else + /** Returns true if @c *this preceeds @c __arg in the implementation's + * collation order. */ // In new abi we can rely on type_info's NTBS being unique, // and therefore address comparisons are sufficient. bool before(const type_info& __arg) const *************** namespace std *** 112,117 **** --- 123,130 ---- void **__obj_ptr) const; }; + /** If you attempt an invalid @c dynamic_cast expression, an instance of + * this class (or something derived from this class) is thrown. */ class bad_cast : public exception { public: *************** namespace std *** 119,124 **** --- 132,138 ---- virtual ~bad_cast() throw(); }; + /** If you use a NULL pointer in a @c typeid expression, this is thrown. */ class bad_typeid : public exception { public: diff -Nrc3pad gcc-3.0/libstdc++-v3/mkcheck.in gcc-3.0.1/libstdc++-v3/mkcheck.in *** gcc-3.0/libstdc++-v3/mkcheck.in Tue May 22 11:56:11 2001 --- gcc-3.0.1/libstdc++-v3/mkcheck.in Fri Jul 13 13:55:54 2001 *************** TEST_TIME_END=$($TIMER_COMMAND) *** 436,442 **** # grep can count faster than we can... total_failures=`expr ${shared_fail} + ${static_fail}` total_successes=`expr ${shared_pass} + ${static_pass}` ! resultstext="pass/fail results: ${shared_pass}/${shared_fail} shared + ${static_pass}/${static_fail} static = ${total_successes}/${total_failures} total" if [ $total_failures -eq 0 ]; then resultstext="${resultstext}, WIN WIN" fi --- 436,442 ---- # grep can count faster than we can... total_failures=`expr ${shared_fail} + ${static_fail}` total_successes=`expr ${shared_pass} + ${static_pass}` ! resultstext="pass/fail results: ${static_pass}/${static_fail} static + ${shared_pass}/${shared_fail} shared = ${total_successes}/${total_failures} total" if [ $total_failures -eq 0 ]; then resultstext="${resultstext}, WIN WIN" fi diff -Nrc3pad gcc-3.0/libstdc++-v3/mknumeric_limits gcc-3.0.1/libstdc++-v3/mknumeric_limits *** gcc-3.0/libstdc++-v3/mknumeric_limits Fri May 25 15:18:37 2001 --- gcc-3.0.1/libstdc++-v3/mknumeric_limits Thu Jul 26 00:52:19 2001 *************** CC=${CC="$BUILD_DIR/../../gcc/xgcc -B$BU *** 54,60 **** cat < $OUT_H-t // The template and inlines for the -*- C++ -*- numeric_limits classes. ! // Copyright (C) 1999, 2000 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the --- 54,60 ---- cat < $OUT_H-t // The template and inlines for the -*- C++ -*- numeric_limits classes. ! // Copyright (C) 1999-2001 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the *************** EOF *** 165,174 **** # Must turn off exceptions, because the C++ exception handling support # routines have not been built yet. ! echo "$CC -I. $CPPFLAGS -I$BUILD_DIR/include -DHAVE_CONFIG_H -fno-exceptions \ -o $BUILD_DIR/src/gen-num-limits $SRC_DIR/src/gen-num-limits.cc" ! { $CC -I. $CPPFLAGS -I$BUILD_DIR/include -DHAVE_CONFIG_H -fno-exceptions \ -o "$BUILD_DIR/src/gen-num-limits" "$SRC_DIR/src/gen-num-limits.cc" } || { echo "gen-num-limits failed to build, exiting." --- 165,174 ---- # Must turn off exceptions, because the C++ exception handling support # routines have not been built yet. ! echo "$CC -I$BUILD_DIR -fno-exceptions \ -o $BUILD_DIR/src/gen-num-limits $SRC_DIR/src/gen-num-limits.cc" ! { $CC -I$BUILD_DIR -fno-exceptions \ -o "$BUILD_DIR/src/gen-num-limits" "$SRC_DIR/src/gen-num-limits.cc" } || { echo "gen-num-limits failed to build, exiting." diff -Nrc3pad gcc-3.0/libstdc++-v3/porting.texi gcc-3.0.1/libstdc++-v3/porting.texi *** gcc-3.0/libstdc++-v3/porting.texi Tue Jun 12 16:10:00 2001 --- gcc-3.0.1/libstdc++-v3/porting.texi Mon Aug 13 15:22:25 2001 *************** Here are the primary steps required to p *** 74,79 **** --- 74,80 ---- * Operating system:: Configuring for your operating system. * Character types:: Implementing character classification. * Thread safety:: Implementing atomic operations. + * Numeric limits:: Implementing numeric limits. * Libtool:: Using libtool. * GNU Free Documentation License:: How you can copy and share this manual. @end menu *************** __atomic_add (_Atomic_word* __mem, int _ *** 435,440 **** --- 436,466 ---- *__mem += __val; @} @end example + + @c --------------------------------------------------------------------- + @c Numeric limits + @c --------------------------------------------------------------------- + + @node Numeric limits + @chapter Numeric limits + + The C++ library requires information about the fundamental data types, + such as the minimum and maximum representable values of each type. + You can define each of these values individually, but it is usually + easiest just to indicate how many bits are used in each of the data + types and let the library do the rest. For information about the + macros to define, see the top of @file{include/bits/std_limits.h}. + + If you need to define any macros, you can do so in + @file{os_defines.h}. However, if all operating systems for your CPU + are likely to use the same values, you can provide a CPU-specific file + instead so that you do not have to provide the same definitions for + each operating system. To take that approach, create a new file + called @file{limits.h} in your CPU configuration directory (e.g., + @file{config/cpu/i386/bits}) and then modify @file{configure.target} + so that @code{LIMITSH} is set to the CPU directory (e.g., + @file{config/cpu/i386}). Note that @code{LIMITSH} should not include + the @samp{bits} part of the directory name. @c --------------------------------------------------------------------- @c Libtool diff -Nrc3pad gcc-3.0/libstdc++-v3/src/Makefile.am gcc-3.0.1/libstdc++-v3/src/Makefile.am *** gcc-3.0/libstdc++-v3/src/Makefile.am Fri Jun 8 13:09:30 2001 --- gcc-3.0.1/libstdc++-v3/src/Makefile.am Tue Aug 14 14:10:06 2001 *************** *** 21,27 **** ## Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, ## USA. ! ## $Id: Makefile.am,v 1.71.2.8 2001/06/08 20:09:30 ljrittle Exp $ AUTOMAKE_OPTIONS = 1.3 gnits MAINT_CHARSET = latin1 --- 21,27 ---- ## Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, ## USA. ! ## $Id: Makefile.am,v 1.71.2.12 2001/08/14 21:10:06 bkoz Exp $ AUTOMAKE_OPTIONS = 1.3 gnits MAINT_CHARSET = latin1 *************** WARN_CXXFLAGS = \ *** 49,57 **** @WARN_FLAGS@ $(WERROR) -fdiagnostics-show-location=once # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES ! GLIBCPP_INCLUDE_DIR = @GLIBCPP_INCLUDE_DIR@ ! C_INCLUDE_DIR = @C_INCLUDE_DIR@ ! CSTD_INCLUDES = @CSTD_INCLUDES@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ LIBIO_INCLUDES = @LIBIO_INCLUDES@ --- 49,55 ---- @WARN_FLAGS@ $(WERROR) -fdiagnostics-show-location=once # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES ! GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ LIBIO_INCLUDES = @LIBIO_INCLUDES@ *************** TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ *** 59,180 **** INCLUDES = \ -nostdinc++ \ ! -I$(GLIBCPP_INCLUDE_DIR) $(CSTD_INCLUDES) -I$(top_builddir)/include \ $(LIBSUPCXX_INCLUDES) $(LIBIO_INCLUDES) $(LIBMATH_INCLUDES) \ $(TOPLEVEL_INCLUDES) - base_headers = \ - bits/cpp_type_traits.h bits/char_traits.h bits/codecvt.h \ - bits/stringfwd.h bits/std_string.h bits/basic_string.h \ - bits/basic_string.tcc \ - bits/generic_shadow.h bits/std_utility.h \ - bits/std_complex.h \ - bits/valarray_array.h bits/valarray_array.tcc bits/valarray_meta.h \ - bits/std_valarray.h bits/mask_array.h bits/slice.h bits/slice_array.h \ - bits/gslice.h bits/gslice_array.h bits/indirect_array.h \ - bits/std_fstream.h bits/std_iomanip.h \ - bits/ios_base.h bits/fpos.h bits/basic_ios.h bits/basic_ios.tcc \ - bits/std_ios.h bits/std_iosfwd.h bits/std_iostream.h \ - bits/std_istream.h bits/istream.tcc bits/std_locale.h \ - bits/fstream.tcc bits/ostream.tcc bits/sbuf_iter.h bits/sstream.tcc \ - bits/std_ostream.h bits/std_sstream.h bits/std_streambuf.h \ - bits/streambuf.tcc bits/basic_file.h \ - bits/locale_facets.h bits/locale_facets.tcc bits/localefwd.h \ - bits/stl_pthread_alloc.h bits/pthread_allocimpl.h \ - bits/stl_threads.h \ - bits/stl_iterator_base_types.h bits/stl_iterator_base_funcs.h \ - bits/std_bitset.h bits/std_deque.h bits/std_functional.h \ - bits/std_iterator.h bits/std_list.h \ - bits/std_map.h bits/std_memory.h bits/std_numeric.h \ - bits/std_queue.h bits/std_set.h bits/std_stack.h \ - bits/std_stdexcept.h bits/functexcept.h bits/std_vector.h \ - bits/stl_algo.h bits/stl_algobase.h bits/stl_alloc.h \ - bits/stl_deque.h bits/stl_function.h \ - bits/stl_heap.h bits/stl_iterator.h bits/stl_list.h bits/stl_map.h \ - bits/stl_multimap.h bits/stl_multiset.h bits/stl_numeric.h \ - bits/stl_pair.h bits/stl_queue.h bits/stl_raw_storage_iter.h \ - bits/stl_relops.h bits/stl_set.h bits/stl_stack.h bits/stl_tempbuf.h \ - bits/stl_tree.h bits/stl_uninitialized.h bits/stl_vector.h \ - bits/stl_bvector.h bits/type_traits.h bits/std_algorithm.h \ - bits/stl_construct.h bits/boost_concept_check.h bits/concept_check.h - - - backward_headers = \ - backward/complex.h backward/iomanip.h backward/istream.h \ - backward/ostream.h backward/stream.h backward/streambuf.h \ - backward/algo.h backward/algobase.h backward/alloc.h \ - backward/bvector.h backward/defalloc.h backward/deque.h \ - backward/function.h backward/hash_map.h backward/hash_set.h \ - backward/hashtable.h backward/heap.h backward/iostream.h \ - backward/iterator.h backward/list.h backward/map.h \ - backward/multimap.h backward/new.h backward/multiset.h \ - backward/pair.h backward/queue.h backward/rope.h backward/set.h \ - backward/slist.h backward/stack.h backward/tempbuf.h backward/tree.h \ - backward/vector.h backward/fstream.h backward/strstream.h \ - backward/strstream backward/backward_warning.h - - ext_headers = \ - ext/rope ext/ropeimpl.h ext/stl_rope.h \ - ext/slist ext/hash_map ext/hash_set \ - ext/stl_hashtable.h ext/stl_hash_fun.h - - c_base_headers = \ - bits/std_cassert.h bits/std_cctype.h bits/std_cerrno.h \ - bits/std_cfloat.h bits/std_climits.h bits/std_clocale.h \ - bits/std_cmath.h bits/std_csetjmp.h bits/std_csignal.h \ - bits/std_cstdarg.h bits/std_cstddef.h bits/std_cstdio.h \ - bits/std_cstdlib.h bits/std_cstring.h bits/std_ctime.h \ - bits/std_cwchar.h bits/std_cwctype.h bits/cmath.tcc - - if GLIBCPP_USE_CSHADOW - c_shadow_headers = \ - assert.h ctype.h errno.h float.h limits.h locale.h math.h setjmp.h \ - signal.h stdarg.h stddef.h stdio.h stdlib.h string.h time.h wchar.h \ - wctype.h fcntl.h libio.h iolibio.h libioP.h pthread.h iconv.h \ - features.h langinfo.h \ - bits/wrap_libio.h bits/wrap_iolibio.h bits/wrap_libioP.h \ - bits/wrap_iconv.h bits/wrap_fcntl.h bits/wrap_pthread.h \ - bits/wrap_features.h bits/wrap_langinfo.h \ - sys/cdefs.h - else - c_shadow_headers = - endif - - std_headers = \ - algorithm bitset complex deque fstream functional \ - iomanip ios iosfwd iostream istream iterator limits list locale \ - map memory numeric ostream queue set sstream stack stdexcept \ - streambuf string utility valarray vector \ - cassert cctype cerrno cfloat climits clocale ciso646 \ - cmath csetjmp csignal cstdarg cstddef cstdio cstdlib \ - cstring ctime cwchar cwctype - - if GLIBCPP_NEED_LIBIO - libio_headers = \ - $(top_srcdir)/libio/_G_config.h $(top_srcdir)/libio/libio.h - else - libio_headers = - endif - - build_headers = \ - bits/std_limits.h \ - bits/c++config.h bits/c++io.h bits/c++locale.h \ - bits/gthr.h bits/gthr-single.h bits/gthr-default.h \ - bits/basic_file_model.h \ - bits/atomicity.h bits/os_defines.h \ - bits/ctype_base.h bits/ctype_noninline.h bits/ctype_inline.h - sources = \ ! limitsMEMBERS.cc \ ! stdexcept.cc functexcept.cc bitset.cc \ ! globals.cc \ ! basic_file.cc ios.cc complex_io.cc strstream.cc \ ! c++locale.cc locale.cc localename.cc codecvt.cc \ ! locale-inst.cc stl-inst.cc misc-inst.cc valarray-inst.cc \ ! string-inst.cc wstring-inst.cc ! VPATH = $(top_srcdir):$(top_srcdir)/src:$(GLIBCPP_INCLUDE_DIR):$(GLIBCPP_INCLUDE_DIR)/std:$(C_INCLUDE_DIR) libstdc___la_SOURCES = $(sources) --- 57,75 ---- INCLUDES = \ -nostdinc++ \ ! $(GLIBCPP_INCLUDES) \ $(LIBSUPCXX_INCLUDES) $(LIBIO_INCLUDES) $(LIBMATH_INCLUDES) \ $(TOPLEVEL_INCLUDES) sources = \ ! basic_file.cc bitset.cc c++locale.cc cmath.cc codecvt.cc \ ! complex_io.cc functexcept.cc globals.cc ios.cc limits.cc \ ! locale.cc locale-inst.cc localename.cc misc-inst.cc stdexcept.cc \ ! stl-inst.cc string-inst.cc strstream.cc valarray-inst.cc \ ! wstring-inst.cc ! VPATH = $(top_srcdir):$(top_srcdir)/src libstdc___la_SOURCES = $(sources) *************** libstdc___la_LIBADD = \ *** 182,284 **** ../libmath/libmath.la @libio_la@ \ ../libsupc++/libsupc++convenience.la ! libstdc___la_LDFLAGS = -version-info 3:0:0 -lm libstdc___la_DEPENDENCIES = $(libstdc___la_LIBADD) # Use special rules for the deprecated source files so that they find # deprecated include files. strstream.lo: strstream.cc $(LTCXXCOMPILE) -I$(GLIBCPP_INCLUDE_DIR)/backward -c $< strstream.o: strstream.cc $(CXXCOMPILE) -I$(GLIBCPP_INCLUDE_DIR)/backward -c $< - - # Make sure cshadow headers are built first. - if GLIBCPP_USE_CSHADOW - CSHADOW_H = $(top_builddir)/stamp-cshadow - else - CSHADOW_H = - endif - - # Specify that all *.o's depend on this. - $(libstdc___la_OBJECTS): $(CSHADOW_H) - - $(top_builddir)/stamp-cshadow: $(top_srcdir)/mkinclosure \ - $(top_srcdir)/mkcshadow - $(top_srcdir)/mkinclosure \ - "-I $(top_builddir)/../../gcc/include -I /usr/include -G fcntl.h unistd.h" | $(top_srcdir)/mkcshadow; - rm -f $(top_builddir)/stamp-cshadow - echo "done" > $(top_builddir)/stamp-cshadow - - - # Check for various configure bits that change where the headers get installed. - gxx_include_dir = @gxx_include_dir@ - gxx_target_include_dir = $(gxx_include_dir)/$(target_alias) - - # We have our own special, ridiculously complicated installation routine - # here, as automake/autoconf is currently brain-damaged when it comes - # to installing sub-directories of headers. In particular, we want to - # 1) install build headers from (blddir)/include/bits -> (install)/bits - # 2) install source headers from - # (srcdir)/include/bits -> (install)/bits - # (srcdir)/include/ext -> (install)/ext - # (srcdir)/include/backward -> (install)/backward - # ... and the always entertaining "C" compatibility bits - # where * represents configure-time directory switching - # (srcdir)/include/c* -> (install)/ - # (srcdir)/include/c*/bits -> (install)/bits - # (srcdir)/include/c*/sys -> (install)/sys - install-data-local: myinstalldirs myinstallheaders - - # NB: installation of shadow header directories is not attempted. - myinstalldirs: - if test -z "$(MULTISUBDIR)"; then \ - $(mkinstalldirs) $(DESTDIR)$(gxx_include_dir)/backward; \ - $(mkinstalldirs) $(DESTDIR)$(gxx_include_dir)/bits; \ - $(mkinstalldirs) $(DESTDIR)$(gxx_include_dir)/ext; \ - $(mkinstalldirs) $(DESTDIR)$(gxx_target_include_dir)/bits; \ - fi - - # NB: As libio_headers may be empty, need this to make sure bash doesn't - # choke on an empty for... loop by using libio_headers_install - # NB: installation of shadow headers is not attempted. - src_incdir = @GLIBCPP_INCLUDE_DIR@ - bld_incdir = $(top_builddir)/include - c_incdir = @C_INCLUDE_DIR@ - myinstallheaders: - if test -z "$(MULTISUBDIR)"; then \ - for i in $(base_headers); do \ - echo "$(INSTALL_DATA) $(src_incdir)/$$i $(gxx_include_dir)/bits/";\ - $(INSTALL_DATA) $(src_incdir)/$$i $(gxx_include_dir)/bits/; \ - done; \ - for i in $(ext_headers); do \ - echo "$(INSTALL_DATA) $(src_incdir)/$$i $(gxx_include_dir)/ext/";\ - $(INSTALL_DATA) $(src_incdir)/$$i $(gxx_include_dir)/ext/; \ - done; \ - for i in $(backward_headers); do \ - echo "$(INSTALL_DATA) $(src_incdir)/$$i $(gxx_include_dir)/backward/";\ - $(INSTALL_DATA) $(src_incdir)/$$i $(gxx_include_dir)/backward/; \ - done; \ - for i in $(c_base_headers); do \ - echo "$(INSTALL_DATA) $(c_incdir)/$$i $(gxx_include_dir)/bits/";\ - $(INSTALL_DATA) $(c_incdir)/$$i $(gxx_include_dir)/bits/; \ - done; \ - for i in $(std_headers); do \ - echo "$(INSTALL_DATA) $(src_incdir)/std/$$i $(gxx_include_dir)";\ - $(INSTALL_DATA) $(src_incdir)/std/$$i $(gxx_include_dir); \ - done; \ - for i in $(build_headers); do \ - echo "$(INSTALL_DATA) $(bld_incdir)/$$i \ - $(gxx_target_include_dir)/bits/"; $(INSTALL_DATA) \ - $(bld_incdir)/$$i $(gxx_target_include_dir)/bits/; \ - done; \ - libio_headers_install='$(libio_headers)'; \ - for i in $$libio_headers_install; do \ - echo "$(INSTALL_DATA) $$i $(gxx_include_dir)"; \ - $(INSTALL_DATA) $$i $(gxx_include_dir); \ - done; \ - fi; # AM_CXXFLAGS needs to be in each subdirectory so that it can be --- 77,94 ---- ../libmath/libmath.la @libio_la@ \ ../libsupc++/libsupc++convenience.la ! libstdc___la_LDFLAGS = -version-info 3:1:0 -lm libstdc___la_DEPENDENCIES = $(libstdc___la_LIBADD) # Use special rules for the deprecated source files so that they find # deprecated include files. + GLIBCPP_INCLUDE_DIR=@glibcpp_builddir@/include strstream.lo: strstream.cc $(LTCXXCOMPILE) -I$(GLIBCPP_INCLUDE_DIR)/backward -c $< strstream.o: strstream.cc $(CXXCOMPILE) -I$(GLIBCPP_INCLUDE_DIR)/backward -c $< # AM_CXXFLAGS needs to be in each subdirectory so that it can be diff -Nrc3pad gcc-3.0/libstdc++-v3/src/Makefile.in gcc-3.0.1/libstdc++-v3/src/Makefile.in *** gcc-3.0/libstdc++-v3/src/Makefile.in Fri Jun 8 13:09:30 2001 --- gcc-3.0.1/libstdc++-v3/src/Makefile.in Tue Aug 14 14:10:07 2001 *************** target_alias = @target_alias@ *** 66,91 **** --- 66,100 ---- target_triplet = @target@ AR = @AR@ AS = @AS@ + ATOMICITY_INC_SRCDIR = @ATOMICITY_INC_SRCDIR@ + BASIC_FILE_H = @BASIC_FILE_H@ CC = @CC@ + CCODECVT_C = @CCODECVT_C@ + CLOCALE_H = @CLOCALE_H@ CPP = @CPP@ CSHADOW_FLAGS = @CSHADOW_FLAGS@ + CSTDIO_H = @CSTDIO_H@ CXXCPP = @CXXCPP@ + C_INCLUDE_DIR = @C_INCLUDE_DIR@ DEBUG_FLAGS = @DEBUG_FLAGS@ DLLTOOL = @DLLTOOL@ EXEEXT = @EXEEXT@ EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@ GCJ = @GCJ@ GCJFLAGS = @GCJFLAGS@ + GLIBCPP_IS_CROSS_COMPILING = @GLIBCPP_IS_CROSS_COMPILING@ LIBMATHOBJS = @LIBMATHOBJS@ LIBSTRINGOBJS = @LIBSTRINGOBJS@ LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@ LIBTOOL = @LIBTOOL@ + LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPT_LDFLAGS = @OPT_LDFLAGS@ + OS_INC_SRCDIR = @OS_INC_SRCDIR@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ SECTION_FLAGS = @SECTION_FLAGS@ *************** glibcpp_basedir = @glibcpp_basedir@ *** 102,109 **** --- 111,120 ---- glibcpp_builddir = @glibcpp_builddir@ glibcpp_prefixdir = @glibcpp_prefixdir@ glibcpp_srcdir = @glibcpp_srcdir@ + glibcpp_thread_h = @glibcpp_thread_h@ glibcpp_toolexecdir = @glibcpp_toolexecdir@ glibcpp_toolexeclibdir = @glibcpp_toolexeclibdir@ + gxx_include_dir = @gxx_include_dir@ ifGNUmake = @ifGNUmake@ libio_la = @libio_la@ toplevel_srcdir = @toplevel_srcdir@ *************** WARN_CXXFLAGS = @WARN_FLAGS@ $(WERROR) *** 134,198 **** # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES ! GLIBCPP_INCLUDE_DIR = @GLIBCPP_INCLUDE_DIR@ ! C_INCLUDE_DIR = @C_INCLUDE_DIR@ ! CSTD_INCLUDES = @CSTD_INCLUDES@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ LIBIO_INCLUDES = @LIBIO_INCLUDES@ TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ ! INCLUDES = -nostdinc++ -I$(GLIBCPP_INCLUDE_DIR) $(CSTD_INCLUDES) -I$(top_builddir)/include $(LIBSUPCXX_INCLUDES) $(LIBIO_INCLUDES) $(LIBMATH_INCLUDES) $(TOPLEVEL_INCLUDES) ! ! ! base_headers = bits/cpp_type_traits.h bits/char_traits.h bits/codecvt.h bits/stringfwd.h bits/std_string.h bits/basic_string.h bits/basic_string.tcc bits/generic_shadow.h bits/std_utility.h bits/std_complex.h bits/valarray_array.h bits/valarray_array.tcc bits/valarray_meta.h bits/std_valarray.h bits/mask_array.h bits/slice.h bits/slice_array.h bits/gslice.h bits/gslice_array.h bits/indirect_array.h bits/std_fstream.h bits/std_iomanip.h bits/ios_base.h bits/fpos.h bits/basic_ios.h bits/basic_ios.tcc bits/std_ios.h bits/std_iosfwd.h bits/std_iostream.h bits/std_istream.h bits/istream.tcc bits/std_locale.h bits/fstream.tcc bits/ostream.tcc bits/sbuf_iter.h bits/sstream.tcc bits/std_ostream.h bits/std_sstream.h bits/std_streambuf.h bits/streambuf.tcc bits/basic_file.h bits/locale_facets.h bits/locale_facets.tcc bits/localefwd.h bits/stl_pthread_alloc.h bits/pthread_allocimpl.h bits/stl_threads.h bits/stl_iterator_base_types.h bits/stl_iterator_base_funcs.h bits/std_bitset.h bits/std_deque.h bits/std_functional.h bits/std_iterator.h bits/std_list.h bits/std_map.h bits/std_memory.h bits/std_numeric.h bits/std_queue.h bits/std_set.h bits/std_stack.h bits/std_stdexcept.h bits/functexcept.h bits/std_vector.h bits/stl_algo.h bits/stl_algobase.h bits/stl_alloc.h bits/stl_deque.h bits/stl_function.h bits/stl_heap.h bits/stl_iterator.h bits/stl_list.h bits/stl_map.h bits/stl_multimap.h bits/stl_multiset.h bits/stl_numeric.h bits/stl_pair.h bits/stl_queue.h bits/stl_raw_storage_iter.h bits/stl_relops.h bits/stl_set.h bits/stl_stack.h bits/stl_tempbuf.h bits/stl_tree.h bits/stl_uninitialized.h bits/stl_vector.h bits/stl_bvector.h bits/type_traits.h bits/std_algorithm.h bits/stl_construct.h bits/boost_concept_check.h bits/concept_check.h ! ! ! backward_headers = backward/complex.h backward/iomanip.h backward/istream.h backward/ostream.h backward/stream.h backward/streambuf.h backward/algo.h backward/algobase.h backward/alloc.h backward/bvector.h backward/defalloc.h backward/deque.h backward/function.h backward/hash_map.h backward/hash_set.h backward/hashtable.h backward/heap.h backward/iostream.h backward/iterator.h backward/list.h backward/map.h backward/multimap.h backward/new.h backward/multiset.h backward/pair.h backward/queue.h backward/rope.h backward/set.h backward/slist.h backward/stack.h backward/tempbuf.h backward/tree.h backward/vector.h backward/fstream.h backward/strstream.h backward/strstream backward/backward_warning.h ! ! ! ext_headers = ext/rope ext/ropeimpl.h ext/stl_rope.h ext/slist ext/hash_map ext/hash_set ext/stl_hashtable.h ext/stl_hash_fun.h ! ! ! c_base_headers = bits/std_cassert.h bits/std_cctype.h bits/std_cerrno.h bits/std_cfloat.h bits/std_climits.h bits/std_clocale.h bits/std_cmath.h bits/std_csetjmp.h bits/std_csignal.h bits/std_cstdarg.h bits/std_cstddef.h bits/std_cstdio.h bits/std_cstdlib.h bits/std_cstring.h bits/std_ctime.h bits/std_cwchar.h bits/std_cwctype.h bits/cmath.tcc ! ! @GLIBCPP_USE_CSHADOW_TRUE@c_shadow_headers = assert.h ctype.h errno.h float.h limits.h locale.h math.h setjmp.h signal.h stdarg.h stddef.h stdio.h stdlib.h string.h time.h wchar.h wctype.h fcntl.h libio.h iolibio.h libioP.h pthread.h iconv.h features.h langinfo.h bits/wrap_libio.h bits/wrap_iolibio.h bits/wrap_libioP.h bits/wrap_iconv.h bits/wrap_fcntl.h bits/wrap_pthread.h bits/wrap_features.h bits/wrap_langinfo.h sys/cdefs.h ! @GLIBCPP_USE_CSHADOW_FALSE@c_shadow_headers = ! ! std_headers = algorithm bitset complex deque fstream functional iomanip ios iosfwd iostream istream iterator limits list locale map memory numeric ostream queue set sstream stack stdexcept streambuf string utility valarray vector cassert cctype cerrno cfloat climits clocale ciso646 cmath csetjmp csignal cstdarg cstddef cstdio cstdlib cstring ctime cwchar cwctype ! ! @GLIBCPP_NEED_LIBIO_TRUE@libio_headers = $(top_srcdir)/libio/_G_config.h $(top_srcdir)/libio/libio.h ! @GLIBCPP_NEED_LIBIO_FALSE@libio_headers = ! ! build_headers = bits/std_limits.h bits/c++config.h bits/c++io.h bits/c++locale.h bits/gthr.h bits/gthr-single.h bits/gthr-default.h bits/basic_file_model.h bits/atomicity.h bits/os_defines.h bits/ctype_base.h bits/ctype_noninline.h bits/ctype_inline.h ! sources = limitsMEMBERS.cc stdexcept.cc functexcept.cc bitset.cc globals.cc basic_file.cc ios.cc complex_io.cc strstream.cc c++locale.cc locale.cc localename.cc codecvt.cc locale-inst.cc stl-inst.cc misc-inst.cc valarray-inst.cc string-inst.cc wstring-inst.cc ! VPATH = $(top_srcdir):$(top_srcdir)/src:$(GLIBCPP_INCLUDE_DIR):$(GLIBCPP_INCLUDE_DIR)/std:$(C_INCLUDE_DIR) libstdc___la_SOURCES = $(sources) libstdc___la_LIBADD = ../libmath/libmath.la @libio_la@ ../libsupc++/libsupc++convenience.la ! libstdc___la_LDFLAGS = -version-info 3:0:0 -lm libstdc___la_DEPENDENCIES = $(libstdc___la_LIBADD) - @GLIBCPP_USE_CSHADOW_TRUE@CSHADOW_H = $(top_builddir)/stamp-cshadow - @GLIBCPP_USE_CSHADOW_FALSE@CSHADOW_H = ! # Check for various configure bits that change where the headers get installed. ! gxx_include_dir = @gxx_include_dir@ ! gxx_target_include_dir = $(gxx_include_dir)/$(target_alias) ! ! # NB: As libio_headers may be empty, need this to make sure bash doesn't ! # choke on an empty for... loop by using libio_headers_install ! # NB: installation of shadow headers is not attempted. ! src_incdir = @GLIBCPP_INCLUDE_DIR@ ! bld_incdir = $(top_builddir)/include ! c_incdir = @C_INCLUDE_DIR@ # AM_CXXFLAGS needs to be in each subdirectory so that it can be # modified in a per-library or per-sub-library way. Need to manually --- 145,176 ---- # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES ! GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ LIBIO_INCLUDES = @LIBIO_INCLUDES@ TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ ! INCLUDES = -nostdinc++ $(GLIBCPP_INCLUDES) $(LIBSUPCXX_INCLUDES) $(LIBIO_INCLUDES) $(LIBMATH_INCLUDES) $(TOPLEVEL_INCLUDES) ! sources = basic_file.cc bitset.cc c++locale.cc cmath.cc codecvt.cc complex_io.cc functexcept.cc globals.cc ios.cc limits.cc locale.cc locale-inst.cc localename.cc misc-inst.cc stdexcept.cc stl-inst.cc string-inst.cc strstream.cc valarray-inst.cc wstring-inst.cc ! VPATH = $(top_srcdir):$(top_srcdir)/src libstdc___la_SOURCES = $(sources) libstdc___la_LIBADD = ../libmath/libmath.la @libio_la@ ../libsupc++/libsupc++convenience.la ! libstdc___la_LDFLAGS = -version-info 3:1:0 -lm libstdc___la_DEPENDENCIES = $(libstdc___la_LIBADD) ! # Use special rules for the deprecated source files so that they find ! # deprecated include files. ! GLIBCPP_INCLUDE_DIR = @glibcpp_builddir@/include # AM_CXXFLAGS needs to be in each subdirectory so that it can be # modified in a per-library or per-sub-library way. Need to manually *************** DEFS = @DEFS@ -I. -I$(srcdir) -I.. *** 244,253 **** CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ ! libstdc___la_OBJECTS = limitsMEMBERS.lo stdexcept.lo functexcept.lo \ ! bitset.lo globals.lo basic_file.lo ios.lo complex_io.lo strstream.lo \ ! c++locale.lo locale.lo localename.lo codecvt.lo locale-inst.lo \ ! stl-inst.lo misc-inst.lo valarray-inst.lo string-inst.lo \ wstring-inst.lo CXXFLAGS = @CXXFLAGS@ CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) --- 222,231 ---- CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ ! libstdc___la_OBJECTS = basic_file.lo bitset.lo c++locale.lo cmath.lo \ ! codecvt.lo complex_io.lo functexcept.lo globals.lo ios.lo limits.lo \ ! locale.lo locale-inst.lo localename.lo misc-inst.lo stdexcept.lo \ ! stl-inst.lo string-inst.lo strstream.lo valarray-inst.lo \ wstring-inst.lo CXXFLAGS = @CXXFLAGS@ CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) *************** install-info: install-info-am *** 408,414 **** install-exec-am: install-toolexeclibLTLIBRARIES install-exec: install-exec-am ! install-data-am: install-data-local install-data: install-data-am install-am: all-am --- 386,392 ---- install-exec-am: install-toolexeclibLTLIBRARIES install-exec: install-exec-am ! install-data-am: install-data: install-data-am install-am: all-am *************** maintainer-clean-compile mostlyclean-lib *** 469,554 **** clean-libtool maintainer-clean-libtool tags mostlyclean-tags \ distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ dvi-am dvi check check-am installcheck-am installcheck install-info-am \ ! install-info install-exec-am install-exec install-data-local \ ! install-data-am install-data install-am install uninstall-am uninstall \ ! all-redirect all-am all installdirs mostlyclean-generic \ ! distclean-generic clean-generic maintainer-clean-generic clean \ ! mostlyclean distclean maintainer-clean ! - # Use special rules for the deprecated source files so that they find - # deprecated include files. strstream.lo: strstream.cc $(LTCXXCOMPILE) -I$(GLIBCPP_INCLUDE_DIR)/backward -c $< strstream.o: strstream.cc $(CXXCOMPILE) -I$(GLIBCPP_INCLUDE_DIR)/backward -c $< - - # Specify that all *.o's depend on this. - $(libstdc___la_OBJECTS): $(CSHADOW_H) - - $(top_builddir)/stamp-cshadow: $(top_srcdir)/mkinclosure \ - $(top_srcdir)/mkcshadow - $(top_srcdir)/mkinclosure \ - "-I $(top_builddir)/../../gcc/include -I /usr/include -G fcntl.h unistd.h" | $(top_srcdir)/mkcshadow; - rm -f $(top_builddir)/stamp-cshadow - echo "done" > $(top_builddir)/stamp-cshadow - - # We have our own special, ridiculously complicated installation routine - # here, as automake/autoconf is currently brain-damaged when it comes - # to installing sub-directories of headers. In particular, we want to - # 1) install build headers from (blddir)/include/bits -> (install)/bits - # 2) install source headers from - # (srcdir)/include/bits -> (install)/bits - # (srcdir)/include/ext -> (install)/ext - # (srcdir)/include/backward -> (install)/backward - # ... and the always entertaining "C" compatibility bits - # where * represents configure-time directory switching - # (srcdir)/include/c* -> (install)/ - # (srcdir)/include/c*/bits -> (install)/bits - # (srcdir)/include/c*/sys -> (install)/sys - install-data-local: myinstalldirs myinstallheaders - - # NB: installation of shadow header directories is not attempted. - myinstalldirs: - if test -z "$(MULTISUBDIR)"; then \ - $(mkinstalldirs) $(DESTDIR)$(gxx_include_dir)/backward; \ - $(mkinstalldirs) $(DESTDIR)$(gxx_include_dir)/bits; \ - $(mkinstalldirs) $(DESTDIR)$(gxx_include_dir)/ext; \ - $(mkinstalldirs) $(DESTDIR)$(gxx_target_include_dir)/bits; \ - fi - myinstallheaders: - if test -z "$(MULTISUBDIR)"; then \ - for i in $(base_headers); do \ - echo "$(INSTALL_DATA) $(src_incdir)/$$i $(gxx_include_dir)/bits/";\ - $(INSTALL_DATA) $(src_incdir)/$$i $(gxx_include_dir)/bits/; \ - done; \ - for i in $(ext_headers); do \ - echo "$(INSTALL_DATA) $(src_incdir)/$$i $(gxx_include_dir)/ext/";\ - $(INSTALL_DATA) $(src_incdir)/$$i $(gxx_include_dir)/ext/; \ - done; \ - for i in $(backward_headers); do \ - echo "$(INSTALL_DATA) $(src_incdir)/$$i $(gxx_include_dir)/backward/";\ - $(INSTALL_DATA) $(src_incdir)/$$i $(gxx_include_dir)/backward/; \ - done; \ - for i in $(c_base_headers); do \ - echo "$(INSTALL_DATA) $(c_incdir)/$$i $(gxx_include_dir)/bits/";\ - $(INSTALL_DATA) $(c_incdir)/$$i $(gxx_include_dir)/bits/; \ - done; \ - for i in $(std_headers); do \ - echo "$(INSTALL_DATA) $(src_incdir)/std/$$i $(gxx_include_dir)";\ - $(INSTALL_DATA) $(src_incdir)/std/$$i $(gxx_include_dir); \ - done; \ - for i in $(build_headers); do \ - echo "$(INSTALL_DATA) $(bld_incdir)/$$i \ - $(gxx_target_include_dir)/bits/"; $(INSTALL_DATA) \ - $(bld_incdir)/$$i $(gxx_target_include_dir)/bits/; \ - done; \ - libio_headers_install='$(libio_headers)'; \ - for i in $$libio_headers_install; do \ - echo "$(INSTALL_DATA) $$i $(gxx_include_dir)"; \ - $(INSTALL_DATA) $$i $(gxx_include_dir); \ - done; \ - fi; # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. --- 447,461 ---- clean-libtool maintainer-clean-libtool tags mostlyclean-tags \ distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ dvi-am dvi check check-am installcheck-am installcheck install-info-am \ ! install-info install-exec-am install-exec install-data-am install-data \ ! install-am install uninstall-am uninstall all-redirect all-am all \ ! installdirs mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean strstream.lo: strstream.cc $(LTCXXCOMPILE) -I$(GLIBCPP_INCLUDE_DIR)/backward -c $< strstream.o: strstream.cc $(CXXCOMPILE) -I$(GLIBCPP_INCLUDE_DIR)/backward -c $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -Nrc3pad gcc-3.0/libstdc++-v3/src/bitset.cc gcc-3.0.1/libstdc++-v3/src/bitset.cc *** gcc-3.0/libstdc++-v3/src/bitset.cc Thu May 31 12:13:09 2001 --- gcc-3.0.1/libstdc++-v3/src/bitset.cc Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,33 ---- + // Bitset definitions -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation + // + // This file is part of GNU CC. + // + // GNU CC is free software; you can redistribute it and/or modify + // it under the terms of the GNU General Public License as published by + // the Free Software Foundation; either version 2, or (at your option) + // any later version. + // + // GNU CC is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + // + // You should have received a copy of the GNU General Public License + // along with GNU CC; see the file COPYING. If not, write to + // the Free Software Foundation, 59 Temple Place - Suite 330, + // Boston, MA 02111-1307, USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1998 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/src/cmath.cc gcc-3.0.1/libstdc++-v3/src/cmath.cc *** gcc-3.0/libstdc++-v3/src/cmath.cc Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/libstdc++-v3/src/cmath.cc Mon Jun 25 14:03:07 2001 *************** *** 0 **** --- 1,48 ---- + // Explicit instantiation file for -*- C++ -*- math library. + + // Copyright (C) 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + + + // These are explicit instantiations of the behind-the-scenes internal + // helper functions used in the math routines of libstdc++. + + + #include + + namespace std + { + // This function is only declared/used in the cheaders=c_std case. + template float + __cmath_power(float, unsigned int); + template double + __cmath_power(double, unsigned int); + template long double + __cmath_power(long double, unsigned int); + + } // namespace std + diff -Nrc3pad gcc-3.0/libstdc++-v3/src/gen-num-limits.cc gcc-3.0.1/libstdc++-v3/src/gen-num-limits.cc *** gcc-3.0/libstdc++-v3/src/gen-num-limits.cc Mon May 14 12:49:14 2001 --- gcc-3.0.1/libstdc++-v3/src/gen-num-limits.cc Sat Aug 11 11:12:18 2001 *************** *** 33,56 **** // Do not compile with optimization turned on. // ! #include ! ! #if HAVE_CONFIG_H ! # include ! #endif ! ! // ! // Force Linux to define the *LONG_LONG* ! // ! #if __linux__ && _GLIBCPP_USE_LONG_LONG ! # ifndef __USE_GNU ! # define __USE_GNU 1 ! # endif ! # ifndef _GNU_SOURCE ! # define _GNU_SOURCE 1 ! # endif ! #endif ! #include #include #include --- 33,39 ---- // Do not compile with optimization turned on. // ! #include #include #include #include *************** template *** 174,188 **** template struct underflow { }; // traps template void traps() { fflush(NULL); ! signal_adapter (signal, SIGFPE, signal_handler); ! signal_adapter (signal, SIGTRAP, signal_handler); bool trap_flag = trapping(division_by_zero()); ! signal_adapter (signal, SIGFPE, signal_handler); ! signal_adapter (signal, SIGTRAP, signal_handler); trap_flag = trap_flag || trapping(overflow()); const char* p = bool_alpha[trap_flag]; printf("%s%s = %s;\n", tab2, "static const bool traps", p); --- 157,179 ---- template struct underflow { }; + + // Set various signals handler for trapping aritmetic ops. + void set_signals_handler() + { + signal_adapter(signal, SIGFPE, signal_handler); + signal_adapter(signal, SIGTRAP, signal_handler); + // This is necessary for Linux/SPARC. + signal_adapter(signal, SIGILL, signal_handler); + } + // traps template void traps() { fflush(NULL); ! set_signals_handler(); bool trap_flag = trapping(division_by_zero()); ! set_signals_handler(); trap_flag = trap_flag || trapping(overflow()); const char* p = bool_alpha[trap_flag]; printf("%s%s = %s;\n", tab2, "static const bool traps", p); *************** template void traps() *** 192,199 **** template<> void traps< T >() \ { \ fflush(NULL); \ ! signal_adapter (signal, SIGFPE, signal_handler); \ ! signal_adapter (signal, SIGTRAP, signal_handler); \ const char* p = bool_alpha[trapping(division_by_zero())]; \ printf("%s%s = %s;\n", tab2, "static const bool traps", p); \ } --- 183,189 ---- template<> void traps< T >() \ { \ fflush(NULL); \ ! set_signals_handler(); \ const char* p = bool_alpha[trapping(division_by_zero())]; \ printf("%s%s = %s;\n", tab2, "static const bool traps", p); \ } *************** template *** 216,222 **** --- 206,214 ---- }; #define DEFINED_TYPE_NAME(T) \ + template<> \ const char type_name_trait< T >::type_name[] = #T; \ + template<> \ const char type_name_trait< T >::trait_name[] = "numeric_limits<" #T ">"; DEFINED_TYPE_NAME(bool); *************** template *** 289,295 **** --- 281,289 ---- const bool predicate::is_exact = true; #define SPECIALIZE_EXACTNESS(T) \ + template<> \ const bool predicate< T >::is_integer = false; \ + template<> \ const bool predicate< T >::is_exact = false SPECIALIZE_EXACTNESS(float); *************** template *** 321,326 **** --- 315,321 ---- const bool predicate::is_iec559 = false; #define SPECIALIZE_IEC559(T) \ + template<> \ const bool predicate< T >::is_iec559 = true SPECIALIZE_IEC559(bool); *************** template *** 359,365 **** --- 354,362 ---- #define DEFINE_EXTREMA(T, m, M) DO_DEFINE_EXTREMA(T, m, M) #define DO_DEFINE_EXTREMA(T, m, M) \ + template<> \ const char value< T >::min[] = #m; \ + template<> \ const char value< T >::max[] = #M DEFINE_EXTREMA(bool, false, true); *************** DEFINE_EXTREMA(unsigned int, 0, UINT_MAX *** 376,383 **** DEFINE_EXTREMA(long, LONG_MIN, LONG_MAX); DEFINE_EXTREMA(unsigned long, 0, ULONG_MAX); #ifdef _GLIBCPP_USE_LONG_LONG ! DEFINE_EXTREMA(long long, LONG_LONG_MIN, LONG_LONG_MAX); ! DEFINE_EXTREMA(unsigned long long, 0, ULONG_LONG_MAX); #endif DEFINE_EXTREMA(float, FLT_MIN, FLT_MAX); DEFINE_EXTREMA(double, DBL_MIN, DBL_MAX); --- 373,380 ---- DEFINE_EXTREMA(long, LONG_MIN, LONG_MAX); DEFINE_EXTREMA(unsigned long, 0, ULONG_MAX); #ifdef _GLIBCPP_USE_LONG_LONG ! DEFINE_EXTREMA(long long, (-__LONG_LONG_MAX__-1), __LONG_LONG_MAX__); ! DEFINE_EXTREMA(unsigned long long, 0, (__LONG_LONG_MAX__ * 2ULL + 1)); #endif DEFINE_EXTREMA(float, FLT_MIN, FLT_MAX); DEFINE_EXTREMA(double, DBL_MIN, DBL_MAX); *************** const int value::digits = *** 396,403 **** template const int value::radix = 2; ! #define SPECIALIZE_DIGITS(T, D, D10) \ ! const int value< T >::digits = D; \ const int value< T >::digits10 = D10 SPECIALIZE_DIGITS(float, FLT_MANT_DIG, FLT_DIG); --- 393,402 ---- template const int value::radix = 2; ! #define SPECIALIZE_DIGITS(T, D, D10) \ ! template<> \ ! const int value< T >::digits = D; \ ! template<> \ const int value< T >::digits10 = D10 SPECIALIZE_DIGITS(float, FLT_MANT_DIG, FLT_DIG); *************** SPECIALIZE_DIGITS(long double, LDBL_MANT *** 407,413 **** #undef SPECIALIZE_DIGITS ! #define SPECIALIZE_RADIX(T, R) const int value< T >::radix = R SPECIALIZE_RADIX(float, FLT_RADIX); SPECIALIZE_RADIX(double, FLT_RADIX); --- 406,414 ---- #undef SPECIALIZE_DIGITS ! #define SPECIALIZE_RADIX(T, R) \ ! template<> \ ! const int value< T >::radix = R SPECIALIZE_RADIX(float, FLT_RADIX); SPECIALIZE_RADIX(double, FLT_RADIX); *************** const char value::epsilon[] = "0"; *** 428,434 **** #endif #define SPECIALIZE_EPSILON(T, E) DO_SPECIALIZE_EPSILON(T, E) ! #define DO_SPECIALIZE_EPSILON(T, E) const char value< T >::epsilon[] = #E // unsophisticated, gross method #if 1 --- 429,437 ---- #endif #define SPECIALIZE_EPSILON(T, E) DO_SPECIALIZE_EPSILON(T, E) ! #define DO_SPECIALIZE_EPSILON(T, E) \ ! template<> \ ! const char value< T >::epsilon[] = #E // unsophisticated, gross method #if 1 *************** template *** 467,473 **** const char value::round_error[] = "0"; #endif ! #define SPECIALIZE_ROUND_ERROR(T, R) const char value< T >::round_error[] = #R // unsophisticated, gross method #if 1 SPECIALIZE_ROUND_ERROR(bool, 0); --- 470,478 ---- const char value::round_error[] = "0"; #endif ! #define SPECIALIZE_ROUND_ERROR(T, R) \ ! template<> \ ! const char value< T >::round_error[] = #R // unsophisticated, gross method #if 1 SPECIALIZE_ROUND_ERROR(bool, 0); *************** const int value::max_exponent = 0; *** 504,513 **** template const int value::max_exponent10 = 0; ! #define SPECIALIZE_EXPONENTS(T, m, m10, M, M10) \ ! const int value< T >::min_exponent = m; \ ! const int value< T >::min_exponent10 = m10; \ ! const int value< T >::max_exponent = M; \ const int value< T >::max_exponent10 = M10 SPECIALIZE_EXPONENTS(float, FLT_MIN_EXP, FLT_MIN_10_EXP, --- 509,522 ---- template const int value::max_exponent10 = 0; ! #define SPECIALIZE_EXPONENTS(T, m, m10, M, M10) \ ! template<> \ ! const int value< T >::min_exponent = m; \ ! template<> \ ! const int value< T >::min_exponent10 = m10; \ ! template<> \ ! const int value< T >::max_exponent = M; \ ! template<> \ const int value< T >::max_exponent10 = M10 SPECIALIZE_EXPONENTS(float, FLT_MIN_EXP, FLT_MIN_10_EXP, *************** template *** 575,581 **** void digits10() { printf("%s%s = %d;\n", tab2, "static const int digits10", ! int(log10_of_two * value::digits)); } template --- 584,590 ---- void digits10() { printf("%s%s = %d;\n", tab2, "static const int digits10", ! int(log10_of_two * value::digits) + 1); } template diff -Nrc3pad gcc-3.0/libstdc++-v3/src/limits.cc gcc-3.0.1/libstdc++-v3/src/limits.cc *** gcc-3.0/libstdc++-v3/src/limits.cc Wed Dec 31 16:00:00 1969 --- gcc-3.0.1/libstdc++-v3/src/limits.cc Sat Aug 11 11:12:18 2001 *************** *** 0 **** --- 1,429 ---- + // Static data members of -*- C++ -*- numeric_limits classes + + // Copyright (C) 1999, 2001 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 2, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING. If not, write to the Free + // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, + // USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + + // Written by Gabriel Dos Reis + + // + // ISO C++ 14882:1998 + // 18.2.1 + // + + #include + namespace std + { + // bool + const bool numeric_limits::is_specialized; + const int numeric_limits::digits; + const int numeric_limits::digits10; + const bool numeric_limits::is_signed; + const bool numeric_limits::is_integer; + const bool numeric_limits::is_exact; + const int numeric_limits::radix; + const int numeric_limits::min_exponent; + const int numeric_limits::min_exponent10; + const int numeric_limits::max_exponent; + const int numeric_limits::max_exponent10; + const bool numeric_limits::has_infinity; + const bool numeric_limits::has_quiet_NaN; + const bool numeric_limits::has_signaling_NaN; + const float_denorm_style numeric_limits::has_denorm; + const bool numeric_limits::has_denorm_loss; + const bool numeric_limits::is_iec559; + const bool numeric_limits::is_bounded; + const bool numeric_limits::is_modulo; + const bool numeric_limits::traps; + const bool numeric_limits::tinyness_before; + const float_round_style numeric_limits::round_style; + + // char + const bool numeric_limits::is_specialized; + const int numeric_limits::digits; + const int numeric_limits::digits10; + const bool numeric_limits::is_signed; + const bool numeric_limits::is_integer; + const bool numeric_limits::is_exact; + const int numeric_limits::radix; + const int numeric_limits::min_exponent; + const int numeric_limits::min_exponent10; + const int numeric_limits::max_exponent; + const int numeric_limits::max_exponent10; + const bool numeric_limits::has_infinity; + const bool numeric_limits::has_quiet_NaN; + const bool numeric_limits::has_signaling_NaN; + const float_denorm_style numeric_limits::has_denorm; + const bool numeric_limits::has_denorm_loss; + const bool numeric_limits::is_iec559; + const bool numeric_limits::is_bounded; + const bool numeric_limits::is_modulo; + const bool numeric_limits::traps; + const bool numeric_limits::tinyness_before; + const float_round_style numeric_limits::round_style; + + // signed char + const bool numeric_limits::is_specialized; + const int numeric_limits::digits; + const int numeric_limits::digits10; + const bool numeric_limits::is_signed; + const bool numeric_limits::is_integer; + const bool numeric_limits::is_exact; + const int numeric_limits::radix; + const int numeric_limits::min_exponent; + const int numeric_limits::min_exponent10; + const int numeric_limits::max_exponent; + const int numeric_limits::max_exponent10; + const bool numeric_limits::has_infinity; + const bool numeric_limits::has_quiet_NaN; + const bool numeric_limits::has_signaling_NaN; + const float_denorm_style numeric_limits::has_denorm; + const bool numeric_limits::has_denorm_loss; + const bool numeric_limits::is_iec559; + const bool numeric_limits::is_bounded; + const bool numeric_limits::is_modulo; + const bool numeric_limits::traps; + const bool numeric_limits::tinyness_before; + const float_round_style numeric_limits::round_style; + + // unsigned char + const bool numeric_limits::is_specialized; + const int numeric_limits::digits; + const int numeric_limits::digits10; + const bool numeric_limits::is_signed; + const bool numeric_limits::is_integer; + const bool numeric_limits::is_exact; + const int numeric_limits::radix; + const int numeric_limits::min_exponent; + const int numeric_limits::min_exponent10; + const int numeric_limits::max_exponent; + const int numeric_limits::max_exponent10; + const bool numeric_limits::has_infinity; + const bool numeric_limits::has_quiet_NaN; + const bool numeric_limits::has_signaling_NaN; + const float_denorm_style numeric_limits::has_denorm; + const bool numeric_limits::has_denorm_loss; + const bool numeric_limits::is_iec559; + const bool numeric_limits::is_bounded; + const bool numeric_limits::is_modulo; + const bool numeric_limits::traps; + const bool numeric_limits::tinyness_before; + const float_round_style numeric_limits::round_style; + + // wchar_t + // This used to be problematic... + #ifdef _GLIBCPP_USE_WCHAR_T + const bool numeric_limits::is_specialized; + const int numeric_limits::digits; + const int numeric_limits::digits10; + const bool numeric_limits::is_signed; + const bool numeric_limits::is_integer; + const bool numeric_limits::is_exact; + const int numeric_limits::radix; + const int numeric_limits::min_exponent; + const int numeric_limits::min_exponent10; + const int numeric_limits::max_exponent; + const int numeric_limits::max_exponent10; + const bool numeric_limits::has_infinity; + const bool numeric_limits::has_quiet_NaN; + const bool numeric_limits::has_signaling_NaN; + const float_denorm_style numeric_limits::has_denorm; + const bool numeric_limits::has_denorm_loss; + const bool numeric_limits::is_iec559; + const bool numeric_limits::is_bounded; + const bool numeric_limits::is_modulo; + const bool numeric_limits::traps; + const bool numeric_limits::tinyness_before; + const float_round_style numeric_limits::round_style; + #endif // _GLIBCPP_USE_WCHAR_T + + // short + const bool numeric_limits::is_specialized; + const int numeric_limits::digits; + const int numeric_limits::digits10; + const bool numeric_limits::is_signed; + const bool numeric_limits::is_integer; + const bool numeric_limits::is_exact; + const int numeric_limits::radix; + const int numeric_limits::min_exponent; + const int numeric_limits::min_exponent10; + const int numeric_limits::max_exponent; + const int numeric_limits::max_exponent10; + const bool numeric_limits::has_infinity; + const bool numeric_limits::has_quiet_NaN; + const bool numeric_limits::has_signaling_NaN; + const float_denorm_style numeric_limits::has_denorm; + const bool numeric_limits::has_denorm_loss; + const bool numeric_limits::is_iec559; + const bool numeric_limits::is_bounded; + const bool numeric_limits::is_modulo; + const bool numeric_limits::traps; + const bool numeric_limits::tinyness_before; + const float_round_style numeric_limits::round_style; + + // unsigned short + const bool numeric_limits::is_specialized; + const int numeric_limits::digits; + const int numeric_limits::digits10; + const bool numeric_limits::is_signed; + const bool numeric_limits::is_integer; + const bool numeric_limits::is_exact; + const int numeric_limits::radix; + const int numeric_limits::min_exponent; + const int numeric_limits::min_exponent10; + const int numeric_limits::max_exponent; + const int numeric_limits::max_exponent10; + const bool numeric_limits::has_infinity; + const bool numeric_limits::has_quiet_NaN; + const bool numeric_limits::has_signaling_NaN; + const float_denorm_style numeric_limits::has_denorm; + const bool numeric_limits::has_denorm_loss; + const bool numeric_limits::is_iec559; + const bool numeric_limits::is_bounded; + const bool numeric_limits::is_modulo; + const bool numeric_limits::traps; + const bool numeric_limits::tinyness_before; + const float_round_style numeric_limits::round_style; + + // int + const bool numeric_limits::is_specialized; + const int numeric_limits::digits; + const int numeric_limits::digits10; + const bool numeric_limits::is_signed; + const bool numeric_limits::is_integer; + const bool numeric_limits::is_exact; + const int numeric_limits::radix; + const int numeric_limits::min_exponent; + const int numeric_limits::min_exponent10; + const int numeric_limits::max_exponent; + const int numeric_limits::max_exponent10; + const bool numeric_limits::has_infinity; + const bool numeric_limits::has_quiet_NaN; + const bool numeric_limits::has_signaling_NaN; + const float_denorm_style numeric_limits::has_denorm; + const bool numeric_limits::has_denorm_loss; + const bool numeric_limits::is_iec559; + const bool numeric_limits::is_bounded; + const bool numeric_limits::is_modulo; + const bool numeric_limits::traps; + const bool numeric_limits::tinyness_before; + const float_round_style numeric_limits::round_style; + + // unsigned int + const bool numeric_limits::is_specialized; + const int numeric_limits::digits; + const int numeric_limits::digits10; + const bool numeric_limits::is_signed; + const bool numeric_limits::is_integer; + const bool numeric_limits::is_exact; + const int numeric_limits::radix; + const int numeric_limits::min_exponent; + const int numeric_limits::min_exponent10; + const int numeric_limits::max_exponent; + const int numeric_limits::max_exponent10; + const bool numeric_limits::has_infinity; + const bool numeric_limits::has_quiet_NaN; + const bool numeric_limits::has_signaling_NaN; + const float_denorm_style numeric_limits::has_denorm; + const bool numeric_limits::has_denorm_loss; + const bool numeric_limits::is_iec559; + const bool numeric_limits::is_bounded; + const bool numeric_limits::is_modulo; + const bool numeric_limits::traps; + const bool numeric_limits::tinyness_before; + const float_round_style numeric_limits::round_style; + + // long + const bool numeric_limits::is_specialized; + const int numeric_limits::digits; + const int numeric_limits::digits10; + const bool numeric_limits::is_signed; + const bool numeric_limits::is_integer; + const bool numeric_limits::is_exact; + const int numeric_limits::radix; + const int numeric_limits::min_exponent; + const int numeric_limits::min_exponent10; + const int numeric_limits::max_exponent; + const int numeric_limits::max_exponent10; + const bool numeric_limits::has_infinity; + const bool numeric_limits::has_quiet_NaN; + const bool numeric_limits::has_signaling_NaN; + const float_denorm_style numeric_limits::has_denorm; + const bool numeric_limits::has_denorm_loss; + const bool numeric_limits::is_iec559; + const bool numeric_limits::is_bounded; + const bool numeric_limits::is_modulo; + const bool numeric_limits::traps; + const bool numeric_limits::tinyness_before; + const float_round_style numeric_limits::round_style; + + // unsigned long + const bool numeric_limits::is_specialized; + const int numeric_limits::digits; + const int numeric_limits::digits10; + const bool numeric_limits::is_signed; + const bool numeric_limits::is_integer; + const bool numeric_limits::is_exact; + const int numeric_limits::radix; + const int numeric_limits::min_exponent; + const int numeric_limits::min_exponent10; + const int numeric_limits::max_exponent; + const int numeric_limits::max_exponent10; + const bool numeric_limits::has_infinity; + const bool numeric_limits::has_quiet_NaN; + const bool numeric_limits::has_signaling_NaN; + const float_denorm_style numeric_limits::has_denorm; + const bool numeric_limits::has_denorm_loss; + const bool numeric_limits::is_iec559; + const bool numeric_limits::is_bounded; + const bool numeric_limits::is_modulo; + const bool numeric_limits::traps; + const bool numeric_limits::tinyness_before; + const float_round_style numeric_limits::round_style; + + // XXX: Extensions + #ifdef _GLIBCPP_USE_LONG_LONG + const bool numeric_limits::is_specialized; + const int numeric_limits::digits; + const int numeric_limits::digits10; + const bool numeric_limits::is_signed; + const bool numeric_limits::is_integer; + const bool numeric_limits::is_exact; + const int numeric_limits::radix; + const int numeric_limits::min_exponent; + const int numeric_limits::min_exponent10; + const int numeric_limits::max_exponent; + const int numeric_limits::max_exponent10; + const bool numeric_limits::has_infinity; + const bool numeric_limits::has_quiet_NaN; + const bool numeric_limits::has_signaling_NaN; + const float_denorm_style numeric_limits::has_denorm; + const bool numeric_limits::has_denorm_loss; + const bool numeric_limits::is_iec559; + const bool numeric_limits::is_bounded; + const bool numeric_limits::is_modulo; + const bool numeric_limits::traps; + const bool numeric_limits::tinyness_before; + const float_round_style numeric_limits::round_style; + + const bool numeric_limits::is_specialized; + const int numeric_limits::digits; + const int numeric_limits::digits10; + const bool numeric_limits::is_signed; + const bool numeric_limits::is_integer; + const bool numeric_limits::is_exact; + const int numeric_limits::radix; + const int numeric_limits::min_exponent; + const int numeric_limits::min_exponent10; + const int numeric_limits::max_exponent; + const int numeric_limits::max_exponent10; + const bool numeric_limits::has_infinity; + const bool numeric_limits::has_quiet_NaN; + const bool numeric_limits::has_signaling_NaN; + const float_denorm_style numeric_limits::has_denorm; + const bool numeric_limits::has_denorm_loss; + const bool numeric_limits::is_iec559; + const bool numeric_limits::is_bounded; + const bool numeric_limits::is_modulo; + const bool numeric_limits::traps; + const bool numeric_limits::tinyness_before; + const float_round_style numeric_limits::round_style; + #endif // _GLIBCPP_USE_LONG_LONG + + // float + const bool numeric_limits::is_specialized; + const int numeric_limits::digits; + const int numeric_limits::digits10; + const bool numeric_limits::is_signed; + const bool numeric_limits::is_integer; + const bool numeric_limits::is_exact; + const int numeric_limits::radix; + const int numeric_limits::min_exponent; + const int numeric_limits::min_exponent10; + const int numeric_limits::max_exponent; + const int numeric_limits::max_exponent10; + const bool numeric_limits::has_infinity; + const bool numeric_limits::has_quiet_NaN; + const bool numeric_limits::has_signaling_NaN; + const float_denorm_style numeric_limits::has_denorm; + const bool numeric_limits::has_denorm_loss; + const bool numeric_limits::is_iec559; + const bool numeric_limits::is_bounded; + const bool numeric_limits::is_modulo; + const bool numeric_limits::traps; + const bool numeric_limits::tinyness_before; + const float_round_style numeric_limits::round_style; + + // double + const bool numeric_limits::is_specialized; + const int numeric_limits::digits; + const int numeric_limits::digits10; + const bool numeric_limits::is_signed; + const bool numeric_limits::is_integer; + const bool numeric_limits::is_exact; + const int numeric_limits::radix; + const int numeric_limits::min_exponent; + const int numeric_limits::min_exponent10; + const int numeric_limits::max_exponent; + const int numeric_limits::max_exponent10; + const bool numeric_limits::has_infinity; + const bool numeric_limits::has_quiet_NaN; + const bool numeric_limits::has_signaling_NaN; + const float_denorm_style numeric_limits::has_denorm; + const bool numeric_limits::has_denorm_loss; + const bool numeric_limits::is_iec559; + const bool numeric_limits::is_bounded; + const bool numeric_limits::is_modulo; + const bool numeric_limits::traps; + const bool numeric_limits::tinyness_before; + const float_round_style numeric_limits::round_style; + + // long double + const bool numeric_limits::is_specialized; + const int numeric_limits::digits; + const int numeric_limits::digits10; + const bool numeric_limits::is_signed; + const bool numeric_limits::is_integer; + const bool numeric_limits::is_exact; + const int numeric_limits::radix; + const int numeric_limits::min_exponent; + const int numeric_limits::min_exponent10; + const int numeric_limits::max_exponent; + const int numeric_limits::max_exponent10; + const bool numeric_limits::has_infinity; + const bool numeric_limits::has_quiet_NaN; + const bool numeric_limits::has_signaling_NaN; + const float_denorm_style numeric_limits::has_denorm; + const bool numeric_limits::has_denorm_loss; + const bool numeric_limits::is_iec559; + const bool numeric_limits::is_bounded; + const bool numeric_limits::is_modulo; + const bool numeric_limits::traps; + const bool numeric_limits::tinyness_before; + const float_round_style numeric_limits::round_style; + } // namespace std + + diff -Nrc3pad gcc-3.0/libstdc++-v3/src/locale.cc gcc-3.0.1/libstdc++-v3/src/locale.cc *** gcc-3.0/libstdc++-v3/src/locale.cc Mon Jun 4 12:30:55 2001 --- gcc-3.0.1/libstdc++-v3/src/locale.cc Thu Jul 19 17:14:10 2001 *************** namespace std *** 601,606 **** --- 601,607 ---- return __hi; } + template<> ctype_byname::ctype_byname(const char* /*__s*/, size_t __refs) : ctype(new mask[table_size], true, __refs) { } *************** namespace std *** 1000,1010 **** --- 1001,1014 ---- return __incl_prec; } + template <> collate::collate(size_t __refs) : locale::facet(__refs) { } + template<> collate::~collate() { } + template<> int collate::do_compare(const char* __lo1, const char* __hi1, const char* __lo2, const char* __hi2) const *************** namespace std *** 1020,1030 **** --- 1024,1036 ---- return 0; } + template<> string collate:: do_transform(const char* __lo, const char* __hi) const { return string(__lo, __hi - __lo); } + template<> long collate:: do_hash(const char* __lo, const char* __hi) const *************** namespace std *** 1035,1052 **** (__val >> (numeric_limits::digits - 1))); return __val; } ! collate_byname::collate_byname(const char* /*__s*/, size_t __refs) : collate(__refs) { } moneypunct_byname::moneypunct_byname(const char* /*__s*/, size_t __refs) : moneypunct(__refs) { } moneypunct_byname::moneypunct_byname(const char* /*__s*/, size_t __refs) : moneypunct(__refs) { } messages_byname:: messages_byname(const char* /*__s*/, size_t __refs) : messages(__refs) { } --- 1041,1062 ---- (__val >> (numeric_limits::digits - 1))); return __val; } ! ! template<> collate_byname::collate_byname(const char* /*__s*/, size_t __refs) : collate(__refs) { } + template<> moneypunct_byname::moneypunct_byname(const char* /*__s*/, size_t __refs) : moneypunct(__refs) { } + template<> moneypunct_byname::moneypunct_byname(const char* /*__s*/, size_t __refs) : moneypunct(__refs) { } + template<> messages_byname:: messages_byname(const char* /*__s*/, size_t __refs) : messages(__refs) { } *************** namespace std *** 1203,1218 **** --- 1213,1232 ---- return __hi; } + template<> ctype_byname:: ctype_byname(const char* /*__s*/, size_t __refs) : ctype(__refs) { } + template<> collate:: collate(size_t __refs): locale::facet(__refs) { } + template<> collate:: ~collate() { } + template<> int collate:: do_compare(const wchar_t* /*__lo1*/, const wchar_t* /*__hi1*/, *************** namespace std *** 1220,1242 **** { return 0; // XXX not done } ! wstring collate:: do_transform(const wchar_t* /*__lo*/, const wchar_t* /*__hi*/) const { return wstring(); // XXX not done } long collate:: do_hash(const wchar_t* /*__lo*/, const wchar_t* /*__hi*/) const { return 0; // XXX not done } collate_byname:: collate_byname(const char* /*__s*/, size_t __refs) : collate (__refs) { } messages_byname:: messages_byname(const char* /*__s*/, size_t __refs) : messages (__refs) { } --- 1234,1260 ---- { return 0; // XXX not done } ! ! template<> wstring collate:: do_transform(const wchar_t* /*__lo*/, const wchar_t* /*__hi*/) const { return wstring(); // XXX not done } + template<> long collate:: do_hash(const wchar_t* /*__lo*/, const wchar_t* /*__hi*/) const { return 0; // XXX not done } + template<> collate_byname:: collate_byname(const char* /*__s*/, size_t __refs) : collate (__refs) { } + template<> messages_byname:: messages_byname(const char* /*__s*/, size_t __refs) : messages (__refs) { } diff -Nrc3pad gcc-3.0/libstdc++-v3/src/strstream.cc gcc-3.0.1/libstdc++-v3/src/strstream.cc *** gcc-3.0/libstdc++-v3/src/strstream.cc Mon May 14 12:49:15 2001 --- gcc-3.0.1/libstdc++-v3/src/strstream.cc Wed Jun 27 10:12:28 2001 *************** *** 1,3 **** --- 1,33 ---- + // strstream definitions -*- C++ -*- + + // Copyright (C) 2001 Free Software Foundation + // + // This file is part of GNU CC. + // + // GNU CC is free software; you can redistribute it and/or modify + // it under the terms of the GNU General Public License as published by + // the Free Software Foundation; either version 2, or (at your option) + // any later version. + // + // GNU CC is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + // + // You should have received a copy of the GNU General Public License + // along with GNU CC; see the file COPYING. If not, write to + // the Free Software Foundation, 59 Temple Place - Suite 330, + // Boston, MA 02111-1307, USA. + + // As a special exception, you may use this file as part of a free software + // library without restriction. Specifically, if other files instantiate + // templates or use macros or inline functions from this file, or you compile + // this file and link it with other files to produce an executable, this + // file does not by itself cause the resulting executable to be covered by + // the GNU General Public License. This exception does not however + // invalidate any other reasons why the executable file might be covered by + // the GNU General Public License. + /* * Copyright (c) 1998 * Silicon Graphics Computer Systems, Inc. diff -Nrc3pad gcc-3.0/libstdc++-v3/testsuite/21_strings/ctor_copy_dtor.cc gcc-3.0.1/libstdc++-v3/testsuite/21_strings/ctor_copy_dtor.cc *** gcc-3.0/libstdc++-v3/testsuite/21_strings/ctor_copy_dtor.cc Mon May 14 12:49:18 2001 --- gcc-3.0.1/libstdc++-v3/testsuite/21_strings/ctor_copy_dtor.cc Fri Jul 13 13:55:54 2001 *************** *** 1,6 **** // 1999-06-04 bkoz ! // Copyright (C) 1999, 2000 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the --- 1,6 ---- // 1999-06-04 bkoz ! // Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the *************** void test02() *** 176,184 **** --- 176,203 ---- #endif } + void test03() + { + bool test = true; + const char* with_nulls = "This contains \0 a zero byte."; + + // These are tests to see how basic_string handles data with NUL + // bytes. Obviously basic_string(char*) will halt at the first one, but + // nothing else should. + std::string s1 (with_nulls, 28); + VERIFY( s1.size() == 28 ); + std::string s2 (s1); + VERIFY( s2.size() == 28 ); + + #ifdef DEBUG_ASSERT + assert(test); + #endif + } + int main() { test01(); test02(); + test03(); return 0; } diff -Nrc3pad gcc-3.0/libstdc++-v3/testsuite/27_io/stringbuf.cc gcc-3.0.1/libstdc++-v3/testsuite/27_io/stringbuf.cc *** gcc-3.0/libstdc++-v3/testsuite/27_io/stringbuf.cc Mon May 14 12:49:26 2001 --- gcc-3.0.1/libstdc++-v3/testsuite/27_io/stringbuf.cc Fri Jul 13 13:55:54 2001 *************** *** 1,6 **** // 981208 bkoz test functionality of basic_stringbuf for char_type == char ! // Copyright (C) 1997-1999, 2000 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the --- 1,6 ---- // 981208 bkoz test functionality of basic_stringbuf for char_type == char ! // Copyright (C) 1997-2001 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the *************** bool test02() { *** 54,60 **** // test member functions bool test03() { bool test = true; - std::string str_tmp; //stringbuf::str() VERIFY( strb_01.str() == str_01 ); --- 54,59 ---- *************** bool test03() { *** 71,76 **** --- 70,87 ---- VERIFY( d1 != d2 ); //these should be the same VERIFY( str_01.length() == d1 ); VERIFY( strb_01.str() == strb_03.str() ); //ditto + + // stringbuf::str(string&) and stringbuf::stringbuf(string&), where the + // string in question contains embedded NUL characters. Note that in this + // embedded-NUL situation, the size must be passed to the string ctor. + std::string str_nulls ("eschew \0 obfuscation", 20); // tested in 21_strings + std::stringbuf strb_normal (str_01); + std::stringbuf strb_nulls (str_nulls); + strb_normal.str(str_nulls); // tried using 'strb_01' rather than declaring + // another variable, but then test04 broke! + VERIFY( strb_nulls.in_avail() == str_nulls.size() ); + VERIFY( strb_nulls.str().size() == 20 ); + VERIFY( strb_normal.in_avail() == str_nulls.size() ); #ifdef DEBUG_ASSERT assert(test); diff -Nrc3pad gcc-3.0/libstdc++-v3/testsuite/Makefile.in gcc-3.0.1/libstdc++-v3/testsuite/Makefile.in *** gcc-3.0/libstdc++-v3/testsuite/Makefile.in Mon May 14 12:49:16 2001 --- gcc-3.0.1/libstdc++-v3/testsuite/Makefile.in Mon Aug 13 15:22:27 2001 *************** target_alias = @target_alias@ *** 65,74 **** target_triplet = @target@ AR = @AR@ AS = @AS@ CC = @CC@ CPP = @CPP@ CSHADOW_FLAGS = @CSHADOW_FLAGS@ ! CSTD_INCLUDES = @CSTD_INCLUDES@ CXX = @CXX@ CXXCPP = @CXXCPP@ C_INCLUDE_DIR = @C_INCLUDE_DIR@ --- 65,78 ---- target_triplet = @target@ AR = @AR@ AS = @AS@ + ATOMICITY_INC_SRCDIR = @ATOMICITY_INC_SRCDIR@ + BASIC_FILE_H = @BASIC_FILE_H@ CC = @CC@ + CCODECVT_C = @CCODECVT_C@ + CLOCALE_H = @CLOCALE_H@ CPP = @CPP@ CSHADOW_FLAGS = @CSHADOW_FLAGS@ ! CSTDIO_H = @CSTDIO_H@ CXX = @CXX@ CXXCPP = @CXXCPP@ C_INCLUDE_DIR = @C_INCLUDE_DIR@ *************** EXEEXT = @EXEEXT@ *** 78,84 **** EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@ GCJ = @GCJ@ GCJFLAGS = @GCJFLAGS@ ! GLIBCPP_INCLUDE_DIR = @GLIBCPP_INCLUDE_DIR@ LIBIO_INCLUDES = @LIBIO_INCLUDES@ LIBMATHOBJS = @LIBMATHOBJS@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ --- 82,89 ---- EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@ GCJ = @GCJ@ GCJFLAGS = @GCJFLAGS@ ! GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@ ! GLIBCPP_IS_CROSS_COMPILING = @GLIBCPP_IS_CROSS_COMPILING@ LIBIO_INCLUDES = @LIBIO_INCLUDES@ LIBMATHOBJS = @LIBMATHOBJS@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ *************** LIBSTRINGOBJS = @LIBSTRINGOBJS@ *** 86,91 **** --- 91,97 ---- LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@ LIBTOOL = @LIBTOOL@ + LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ *************** OBJDUMP = @OBJDUMP@ *** 93,98 **** --- 99,105 ---- OBJEXT = @OBJEXT@ OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@ OPT_LDFLAGS = @OPT_LDFLAGS@ + OS_INC_SRCDIR = @OS_INC_SRCDIR@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ SECTION_FLAGS = @SECTION_FLAGS@ *************** glibcpp_basedir = @glibcpp_basedir@ *** 110,115 **** --- 117,123 ---- glibcpp_builddir = @glibcpp_builddir@ glibcpp_prefixdir = @glibcpp_prefixdir@ glibcpp_srcdir = @glibcpp_srcdir@ + glibcpp_thread_h = @glibcpp_thread_h@ glibcpp_toolexecdir = @glibcpp_toolexecdir@ glibcpp_toolexeclibdir = @glibcpp_toolexeclibdir@ gxx_include_dir = @gxx_include_dir@ diff -Nrc3pad gcc-3.0/libstdc++-v3/testsuite_flags.in gcc-3.0.1/libstdc++-v3/testsuite_flags.in *** gcc-3.0/libstdc++-v3/testsuite_flags.in Mon May 14 12:48:53 2001 --- gcc-3.0.1/libstdc++-v3/testsuite_flags.in Thu Jul 26 00:52:19 2001 *************** case ${query} in *** 32,43 **** echo ${INCLUDES} ;; --build-includes) ! C_DIR="`basename @C_INCLUDE_DIR@`" ! INCLUDES="-nostdinc++ -I${BUILD_DIR}/include -I${SRC_DIR}/include ! -I${SRC_DIR}/include/std -I${SRC_DIR}/include/$C_DIR ! -I${SRC_DIR}/libsupc++ -I${SRC_DIR}/libio ! -I${SRC_DIR}/testsuite ! -I${SRC_DIR}/include/backwards -I${SRC_DIR}/include/ext" echo ${INCLUDES} ;; --install-cxx) --- 32,40 ---- echo ${INCLUDES} ;; --build-includes) ! INCLUDES="-nostdinc++ @GLIBCPP_INCLUDES@ ! -I${SRC_DIR}/libsupc++ -I${SRC_DIR}/libio ! -I${SRC_DIR}/testsuite" echo ${INCLUDES} ;; --install-cxx) diff -Nrc3pad gcc-3.0/ltcf-c.sh gcc-3.0.1/ltcf-c.sh *** gcc-3.0/ltcf-c.sh Mon Jun 4 12:33:07 2001 --- gcc-3.0.1/ltcf-c.sh Mon Jul 30 18:39:20 2001 *************** if test "$with_gnu_ld" = yes; then *** 58,66 **** # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) ! # On AIX, the GNU linker is very broken ! ld_shlibs=no ! cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. --- 58,67 ---- # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) ! # On AIX/PPC, the GNU linker is very broken ! if test "$host_cpu" != ia64; then ! ld_shlibs=no ! cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *************** if test "$with_gnu_ld" = yes; then *** 69,74 **** --- 70,76 ---- *** so that a non-GNU linker is found, and then restart. EOF + fi ;; amigaos*) *************** else *** 311,318 **** # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no ! exp_sym_flag='-Bexport' ! no_entry_flag="" else # Test if we are trying to use run time linking, or normal AIX style linking. # If -brtl is somewhere in LDFLAGS, we need to do run time linking. --- 313,322 ---- # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no ! if test $with_gnu_ld = no; then ! exp_sym_flag='-Bexport' ! no_entry_flag="" ! fi else # Test if we are trying to use run time linking, or normal AIX style linking. # If -brtl is somewhere in LDFLAGS, we need to do run time linking. *************** else *** 336,344 **** archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else if test "$host_cpu" = ia64; then ! hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' ! allow_undefined_flag="-z nodefs" ! archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else allow_undefined_flag=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) --- 340,350 ---- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else if test "$host_cpu" = ia64; then ! if test $with_gnu_ld = no; then ! hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' ! allow_undefined_flag="-z nodefs" ! archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" ! fi else allow_undefined_flag=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) *************** if test "$enable_shared" = yes && test " *** 783,789 **** cat conftest.err 1>&5 soname=conftest lib=conftest ! libobjs=conftest.$ac_objext deplibs= wl=$ac_cv_prog_cc_wl compiler_flags=-v --- 789,795 ---- cat conftest.err 1>&5 soname=conftest lib=conftest ! libobjs=conftest.$objext deplibs= wl=$ac_cv_prog_cc_wl compiler_flags=-v diff -Nrc3pad gcc-3.0/ltcf-cxx.sh gcc-3.0.1/ltcf-cxx.sh *** gcc-3.0/ltcf-cxx.sh Mon May 28 14:03:53 2001 --- gcc-3.0.1/ltcf-cxx.sh Fri Jul 27 02:50:11 2001 *************** case $host_os in *** 165,172 **** # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no ! exp_sym_flag='-Bexport' ! no_entry_flag="" else # Test if we are trying to use run time linking, or normal AIX style linking. # If -brtl is somewhere in LDFLAGS, we need to do run time linking. --- 165,174 ---- # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no ! if test $with_gnu_ld = no; then ! exp_sym_flag='-Bexport' ! no_entry_flag="" ! fi else # Test if we are trying to use run time linking, or normal AIX style linking. # If -brtl is somewhere in LDFLAGS, we need to do run time linking. *************** case $host_os in *** 189,197 **** archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}-brtl \${wl}$exp_sym_flag:\$export_symbols" else if test "$host_cpu" = ia64; then ! hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' ! allow_undefined_flag="-z nodefs" ! archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' # Warning - without using the other run time loading flags, -berok will --- 191,201 ---- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}-brtl \${wl}$exp_sym_flag:\$export_symbols" else if test "$host_cpu" = ia64; then ! if test $with_gnu_ld = no; then ! hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' ! allow_undefined_flag="-z nodefs" ! archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" ! fi else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' # Warning - without using the other run time loading flags, -berok will *************** case $host_os in *** 242,247 **** --- 246,253 ---- # conventions ld_shlibs=yes ;; + gnu*) + ;; hpux*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' *************** else *** 739,744 **** --- 745,752 ---- ;; freebsd*) # FreeBSD uses GNU C++ + ;; + gnu*) ;; hpux9* | hpux10* | hpux11*) case $cc_basename in diff -Nrc3pad gcc-3.0/ltcf-gcj.sh gcc-3.0.1/ltcf-gcj.sh *** gcc-3.0/ltcf-gcj.sh Sun May 20 11:57:40 2001 --- gcc-3.0.1/ltcf-gcj.sh Mon Jul 23 13:23:11 2001 *************** if test "$with_gnu_ld" = yes; then *** 60,69 **** # See if GNU ld supports shared libraries. case $host_os in ! aix3* | aix4*) ! # On AIX, the GNU linker is very broken ! ld_shlibs=no ! cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. --- 60,70 ---- # See if GNU ld supports shared libraries. case $host_os in ! aix3* | aix4* | aix5*) ! # On AIX/PPC, the GNU linker is very broken ! if test "$host_cpu" != ia64; then ! ld_shlibs=no ! cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *************** if test "$with_gnu_ld" = yes; then *** 72,77 **** --- 73,79 ---- *** so that a non-GNU linker is found, and then restart. EOF + fi ;; amigaos*) *************** else *** 304,311 **** # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no ! exp_sym_flag='-Bexport' ! no_entry_flag="" else # Test if we are trying to use run time linking, or normal AIX style linking. # If -brtl is somewhere in LDFLAGS, we need to do run time linking. --- 306,315 ---- # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no ! if test $with_gnu_ld = no; then ! exp_sym_flag='-Bexport' ! no_entry_flag="" ! fi else # Test if we are trying to use run time linking, or normal AIX style linking. # If -brtl is somewhere in LDFLAGS, we need to do run time linking. *************** else *** 329,337 **** archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else if test "$host_cpu" = ia64; then ! hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' ! allow_undefined_flag="-z nodefs" ! archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else allow_undefined_flag=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) --- 333,343 ---- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else if test "$host_cpu" = ia64; then ! if test $with_gnu_ld = no; then ! hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' ! allow_undefined_flag="-z nodefs" ! archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" ! fi else allow_undefined_flag=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) diff -Nrc3pad gcc-3.0/ltconfig gcc-3.0.1/ltconfig *** gcc-3.0/ltconfig Mon May 28 13:46:49 2001 --- gcc-3.0.1/ltconfig Fri Jul 20 21:32:39 2001 *************** progname=`$echo "X$0" | $Xsed -e 's%^.*/ *** 181,188 **** # Constants: PROGRAM=ltconfig PACKAGE=libtool ! VERSION=1.4a ! TIMESTAMP=" (1.641.2.256 2001/05/28 20:09:07)" ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' rm="rm -f" --- 181,188 ---- # Constants: PROGRAM=ltconfig PACKAGE=libtool ! VERSION=1.4a-GCC3.0 ! TIMESTAMP=" (1.641.2.256 2001/05/28 20:09:07 with GCC-local changes)" ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' rm="rm -f" *************** else *** 791,797 **** = "XX$testring" && new_result=`expr "X$testring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && ! test $i != 18 # 1 MB should be enough do i=`expr $i + 1` testring=$testring$testring --- 791,797 ---- = "XX$testring" && new_result=`expr "X$testring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && ! test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` testring=$testring$testring diff -Nrc3pad gcc-3.0/ltmain.sh gcc-3.0.1/ltmain.sh *** gcc-3.0/ltmain.sh Mon May 28 13:46:49 2001 --- gcc-3.0.1/ltmain.sh Fri Jul 20 21:32:39 2001 *************** modename="$progname" *** 55,62 **** # Constants. PROGRAM=ltmain.sh PACKAGE=libtool ! VERSION=1.4a ! TIMESTAMP=" (1.641.2.256 2001/05/28 20:09:07)" default_mode= help="Try \`$progname --help' for more information." --- 55,62 ---- # Constants. PROGRAM=ltmain.sh PACKAGE=libtool ! VERSION=1.4a-GCC3.0 ! TIMESTAMP=" (1.641.2.256 2001/05/28 20:09:07 with GCC-local changes)" default_mode= help="Try \`$progname --help' for more information." diff -Nrc3pad gcc-3.0/zlib/ChangeLog gcc-3.0.1/zlib/ChangeLog *** gcc-3.0/zlib/ChangeLog Sun Jun 17 12:41:28 2001 --- gcc-3.0.1/zlib/ChangeLog Sun Aug 19 14:08:38 2001 *************** *** 1,3 **** --- 1,11 ---- + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + + 2001-08-19 Release Manager + + * GCC 3.0.1 Released. + 20010617 Release Manager * GCC 3.0 Released. *************** Changes in 1.0.6 (19 Jan 1998) *** 219,225 **** - use _fdopen instead of fdopen for MSC >= 6.0 (Thomas Fanslau) - added makelcc.bat for lcc-win32 (Tom St Denis) - in Makefile.dj2, use copy and del instead of install and rm (Frank Donahoe) ! - Avoid expanded $Id: ChangeLog,v 1.1.8.1 2001/06/17 19:41:28 mmitchel Exp $. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion. - check for unistd.h in configure (for off_t) - remove useless check parameter in inflate_blocks_free - avoid useless assignment of s->check to itself in inflate_blocks_new --- 227,233 ---- - use _fdopen instead of fdopen for MSC >= 6.0 (Thomas Fanslau) - added makelcc.bat for lcc-win32 (Tom St Denis) - in Makefile.dj2, use copy and del instead of install and rm (Frank Donahoe) ! - Avoid expanded $Id: ChangeLog,v 1.1.8.3 2001/08/19 21:08:38 gccadmin Exp $. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion. - check for unistd.h in configure (for off_t) - remove useless check parameter in inflate_blocks_free - avoid useless assignment of s->check to itself in inflate_blocks_new diff -Nrc3pad gcc-3.0/zlib/ChangeLog.gcj gcc-3.0.1/zlib/ChangeLog.gcj *** gcc-3.0/zlib/ChangeLog.gcj Tue May 15 15:24:45 2001 --- gcc-3.0.1/zlib/ChangeLog.gcj Tue Jul 3 15:29:13 2001 *************** *** 1,3 **** --- 1,9 ---- + 2001-07-03 Tom Tromey + + Fix for PR bootstrap/3281: + * configure, Makefile.in: Rebuilt. + * configure.in: Set mkinstalldirs, for in-tree build. + 2001-05-13 Alexandre Oliva * acinclude.m4: Use ../libtool.m4. diff -Nrc3pad gcc-3.0/zlib/Makefile.in gcc-3.0.1/zlib/Makefile.in *** gcc-3.0/zlib/Makefile.in Sun May 13 15:32:56 2001 --- gcc-3.0.1/zlib/Makefile.in Tue Jul 3 15:29:13 2001 *************** PACKAGE = @PACKAGE@ *** 83,88 **** --- 83,89 ---- RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ + mkinstalldirs = @mkinstalldirs@ target_all = @target_all@ zlib_basedir = @zlib_basedir@ *************** MULTIDIRS = *** 95,103 **** MULTISUBDIR = MULTIDO = true MULTICLEAN = true ! @USE_LIBDIR_TRUE@toolexeclibdir = @USE_LIBDIR_TRUE@$(libdir)$(MULTISUBDIR) ! @USE_LIBDIR_FALSE@toolexeclibdir = @USE_LIBDIR_FALSE@$(toolexecdir)/lib$(MULTISUBDIR) ! @USE_LIBDIR_FALSE@toolexecdir = @USE_LIBDIR_FALSE@$(exec_prefix)/$(target_alias) ZLIB_SOURCES = adler32.c compress.c crc32.c deflate.c deflate.h \ gzio.c infblock.c infblock.h infcodes.c infcodes.h inffast.c inffast.h \ --- 96,107 ---- MULTISUBDIR = MULTIDO = true MULTICLEAN = true ! @USE_LIBDIR_TRUE@toolexeclibdir = \ ! @USE_LIBDIR_TRUE@$(libdir)$(MULTISUBDIR) ! @USE_LIBDIR_FALSE@toolexeclibdir = \ ! @USE_LIBDIR_FALSE@$(toolexecdir)/lib$(MULTISUBDIR) ! @USE_LIBDIR_FALSE@toolexecdir = \ ! @USE_LIBDIR_FALSE@$(exec_prefix)/$(target_alias) ZLIB_SOURCES = adler32.c compress.c crc32.c deflate.c deflate.h \ gzio.c infblock.c infblock.h infcodes.c infcodes.h inffast.c inffast.h \ *************** inffixed.h inflate.c inftrees.c inftrees *** 105,116 **** trees.h uncompr.c zconf.h zlib.h zutil.c zutil.h ! @TARGET_LIBRARY_TRUE@toolexeclib_LTLIBRARIES = @TARGET_LIBRARY_TRUE@@target_all@ ! @TARGET_LIBRARY_TRUE@EXTRA_LTLIBRARIES = @TARGET_LIBRARY_TRUE@libzgcj.la ! @TARGET_LIBRARY_TRUE@libzgcj_la_SOURCES = @TARGET_LIBRARY_TRUE@$(ZLIB_SOURCES) ! @TARGET_LIBRARY_TRUE@libzgcj_la_LDFLAGS = @TARGET_LIBRARY_TRUE@-version-info 0:0:0 -rpath $(toolexeclibdir) ! @TARGET_LIBRARY_FALSE@toolexeclib_LIBRARIES = @TARGET_LIBRARY_FALSE@libz.a ! @TARGET_LIBRARY_FALSE@libz_a_SOURCES = @TARGET_LIBRARY_FALSE@$(ZLIB_SOURCES) # Work around what appears to be a GNU make bug handling MAKEFLAGS # values defined in terms of make variables, as is the case for CC and --- 109,126 ---- trees.h uncompr.c zconf.h zlib.h zutil.c zutil.h ! @TARGET_LIBRARY_TRUE@toolexeclib_LTLIBRARIES = \ ! @TARGET_LIBRARY_TRUE@@target_all@ ! @TARGET_LIBRARY_TRUE@EXTRA_LTLIBRARIES = \ ! @TARGET_LIBRARY_TRUE@libzgcj.la ! @TARGET_LIBRARY_TRUE@libzgcj_la_SOURCES = \ ! @TARGET_LIBRARY_TRUE@$(ZLIB_SOURCES) ! @TARGET_LIBRARY_TRUE@libzgcj_la_LDFLAGS = \ ! @TARGET_LIBRARY_TRUE@-version-info 0:0:0 -rpath $(toolexeclibdir) ! @TARGET_LIBRARY_FALSE@toolexeclib_LIBRARIES = \ ! @TARGET_LIBRARY_FALSE@libz.a ! @TARGET_LIBRARY_FALSE@libz_a_SOURCES = \ ! @TARGET_LIBRARY_FALSE@$(ZLIB_SOURCES) # Work around what appears to be a GNU make bug handling MAKEFLAGS # values defined in terms of make variables, as is the case for CC and *************** AM_MAKEFLAGS = \ *** 154,160 **** "DESTDIR=$(DESTDIR)" ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_CLEAN_FILES = LIBRARIES = $(toolexeclib_LIBRARIES) --- 164,169 ---- *************** aclocal.m4 configure configure.in *** 190,196 **** DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! TAR = gtar GZIP_ENV = --best SOURCES = $(libz_a_SOURCES) $(libzgcj_la_SOURCES) OBJECTS = $(libz_a_OBJECTS) $(libzgcj_la_OBJECTS) --- 199,205 ---- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! TAR = tar GZIP_ENV = --best SOURCES = $(libz_a_SOURCES) $(libzgcj_la_SOURCES) OBJECTS = $(libz_a_OBJECTS) $(libzgcj_la_OBJECTS) *************** distdir: $(DISTFILES) *** 392,398 **** @for file in $(DISTFILES); do \ if test -f $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ --- 401,407 ---- @for file in $(DISTFILES); do \ if test -f $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ ! cp -pr $$/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ diff -Nrc3pad gcc-3.0/zlib/configure gcc-3.0.1/zlib/configure *** gcc-3.0/zlib/configure Sun May 20 11:57:55 2001 --- gcc-3.0.1/zlib/configure Tue Jul 3 15:29:13 2001 *************** test "$host_alias" != "$target_alias" && *** 701,706 **** --- 701,711 ---- NONENONEs,x,x, && program_prefix=${target_alias}- + + # This works around an automake problem. + mkinstalldirs="`cd $ac_aux_dir && pwd`/mkinstalldirs" + + # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: *************** test "$host_alias" != "$target_alias" && *** 713,719 **** # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:717: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 718,724 ---- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:722: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** test -z "$INSTALL_SCRIPT" && INSTALL_SCR *** 766,772 **** test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 ! echo "configure:770: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile --- 771,777 ---- test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 ! echo "configure:775: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile *************** test "$program_suffix" != NONE && *** 823,829 **** test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 ! echo "configure:827: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 828,834 ---- test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 ! echo "configure:832: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** EOF *** 869,875 **** missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 ! echo "configure:873: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 874,880 ---- missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 ! echo "configure:878: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 882,888 **** fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 ! echo "configure:886: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 887,893 ---- fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 ! echo "configure:891: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 895,901 **** fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 ! echo "configure:899: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 900,906 ---- fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 ! echo "configure:904: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 908,914 **** fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 ! echo "configure:912: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 913,919 ---- fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 ! echo "configure:917: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** else *** 921,927 **** fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 ! echo "configure:925: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. --- 926,932 ---- fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 ! echo "configure:930: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. *************** fi *** 936,942 **** echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 ! echo "configure:940: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" --- 941,947 ---- echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 ! echo "configure:945: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" *************** fi *** 995,1001 **** # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:999: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1000,1006 ---- # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1004: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -z "$CC"; then *** 1025,1031 **** # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1029: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1030,1036 ---- # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1034: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1074,1080 **** fi echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ! echo "configure:1078: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1079,1085 ---- fi echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ! echo "configure:1083: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1083,1089 **** yes; #endif EOF ! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1087: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no --- 1088,1094 ---- yes; #endif EOF ! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1092: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no *************** if test $ac_cv_prog_gcc = yes; then *** 1098,1104 **** ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ! echo "configure:1102: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1103,1109 ---- ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ! echo "configure:1107: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1134,1145 **** # the result. if false; then echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 ! echo "configure:1138: checking for Cygwin environment" >&5 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:1143: checking for Cygwin environment" >&5 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else --- 1155,1161 ---- return __CYGWIN__; ; return 0; } EOF ! if { (eval echo configure:1159: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else *************** echo "$ac_t""$ac_cv_cygwin" 1>&6 *** 1167,1185 **** CYGWIN= test "$ac_cv_cygwin" = yes && CYGWIN=yes echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 ! echo "configure:1171: checking for mingw32 environment" >&5 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else --- 1172,1190 ---- CYGWIN= test "$ac_cv_cygwin" = yes && CYGWIN=yes echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 ! echo "configure:1176: checking for mingw32 environment" >&5 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else *************** test "$ac_cv_mingw32" = yes && MINGW32=y *** 1198,1204 **** echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 ! echo "configure:1202: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1203,1209 ---- echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 ! echo "configure:1207: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1208,1214 **** rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= ! if { (eval echo configure:1212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj | *.ilk | *.pdb) ;; --- 1213,1219 ---- rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= ! if { (eval echo configure:1217: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj | *.ilk | *.pdb) ;; *************** ac_prog=ld *** 1310,1316 **** if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 ! echo "configure:1314: checking for ld used by GCC" >&5 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw --- 1315,1321 ---- if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 ! echo "configure:1319: checking for ld used by GCC" >&5 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw *************** echo "configure:1314: checking for ld us *** 1340,1349 **** esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 ! echo "configure:1344: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 ! echo "configure:1347: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 1345,1354 ---- esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 ! echo "configure:1349: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 ! echo "configure:1352: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 1378,1384 **** fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 ! echo "configure:1382: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1383,1389 ---- fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 ! echo "configure:1387: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** with_gnu_ld=$lt_cv_prog_gnu_ld *** 1395,1401 **** echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 ! echo "configure:1399: checking for $LD option to reload object files" >&5 if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1400,1406 ---- echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 ! echo "configure:1404: checking for $LD option to reload object files" >&5 if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** reload_flag=$lt_cv_ld_reload_flag *** 1407,1413 **** test -n "$reload_flag" && reload_flag=" $reload_flag" echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 ! echo "configure:1411: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1412,1418 ---- test -n "$reload_flag" && reload_flag=" $reload_flag" echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 ! echo "configure:1416: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** NM="$lt_cv_path_NM" *** 1445,1451 **** echo "$ac_t""$NM" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 ! echo "configure:1449: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1450,1456 ---- echo "$ac_t""$NM" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 ! echo "configure:1454: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 1466,1472 **** fi echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 ! echo "configure:1470: checking how to recognise dependant libraries" >&5 if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1471,1477 ---- fi echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 ! echo "configure:1475: checking how to recognise dependant libraries" >&5 if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** file_magic_cmd=$lt_cv_file_magic_cmd *** 1630,1642 **** deplibs_check_method=$lt_cv_deplibs_check_method echo $ac_n "checking for object suffix""... $ac_c" 1>&6 ! echo "configure:1634: checking for object suffix" >&5 if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftest* echo 'int i = 1;' > conftest.$ac_ext ! if { (eval echo configure:1640: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; --- 1635,1647 ---- deplibs_check_method=$lt_cv_deplibs_check_method echo $ac_n "checking for object suffix""... $ac_c" 1>&6 ! echo "configure:1639: checking for object suffix" >&5 if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftest* echo 'int i = 1;' > conftest.$ac_ext ! if { (eval echo configure:1645: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; *************** case $deplibs_check_method in *** 1666,1672 **** file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 ! echo "configure:1670: checking for ${ac_tool_prefix}file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1671,1677 ---- file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 ! echo "configure:1675: checking for ${ac_tool_prefix}file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1728,1734 **** if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo $ac_n "checking for file""... $ac_c" 1>&6 ! echo "configure:1732: checking for file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1733,1739 ---- if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo $ac_n "checking for file""... $ac_c" 1>&6 ! echo "configure:1737: checking for file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** esac *** 1799,1805 **** # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1803: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1804,1810 ---- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1808: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -n "$ac_tool_prefix"; then *** 1831,1837 **** # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1835: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1836,1842 ---- # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1840: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** fi *** 1866,1872 **** # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1870: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1871,1877 ---- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1875: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** if test -n "$ac_tool_prefix"; then *** 1898,1904 **** # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1902: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1903,1909 ---- # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1907: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** test x"$pic_mode" = xno && libtool_flags *** 1965,1972 **** case $host in *-*-irix6*) # Find out which ABI we are using. ! echo '#line 1969 "configure"' > conftest.$ac_ext ! if { (eval echo configure:1970: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" --- 1970,1977 ---- case $host in *-*-irix6*) # Find out which ABI we are using. ! echo '#line 1974 "configure"' > conftest.$ac_ext ! if { (eval echo configure:1975: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" *************** case $host in *** 1987,1993 **** SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 ! echo "configure:1991: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 1992,1998 ---- SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 ! echo "configure:1996: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** ac_link='${CC-cc} -o conftest${ac_exeext *** 2000,2013 **** cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else --- 2005,2018 ---- cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else *************** fi *** 2133,2139 **** # Find CPP now so that any conditional tests below won't do it and # thereby make the resulting definitions conditional. echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 ! echo "configure:2137: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= --- 2138,2144 ---- # Find CPP now so that any conditional tests below won't do it and # thereby make the resulting definitions conditional. echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 ! echo "configure:2142: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= *************** else *** 2148,2160 **** # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2158: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : --- 2153,2165 ---- # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2163: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : *************** else *** 2165,2177 **** rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2175: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : --- 2170,2182 ---- rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2180: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : *************** else *** 2182,2194 **** rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2192: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : --- 2187,2199 ---- rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2197: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : *************** else *** 2236,2252 **** do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:2240: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2250: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 2241,2257 ---- do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:2245: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2255: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** done *** 2275,2286 **** for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:2279: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:2284: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 2308,2314 ---- ; return 0; } EOF ! if { (eval echo configure:2312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** fi *** 2328,2334 **** done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 ! echo "configure:2332: checking for working mmap" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else --- 2333,2339 ---- done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 ! echo "configure:2337: checking for working mmap" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** else *** 2336,2342 **** ac_cv_func_mmap_fixed_mapped=no else cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_fixed_mapped=yes else --- 2481,2487 ---- } EOF ! if { (eval echo configure:2485: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_fixed_mapped=yes else *************** fi *** 2501,2512 **** for ac_func in memcpy strerror do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:2505: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 ! echo "configure:2510: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else --- 2534,2540 ---- ; return 0; } EOF ! if { (eval echo configure:2538: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else *************** done *** 2556,2562 **** if test "$with_system_zlib" = yes; then echo $ac_n "checking for deflate in -lz""... $ac_c" 1>&6 ! echo "configure:2560: checking for deflate in -lz" >&5 ac_lib_var=`echo z'_'deflate | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 --- 2561,2567 ---- if test "$with_system_zlib" = yes; then echo $ac_n "checking for deflate in -lz""... $ac_c" 1>&6 ! echo "configure:2565: checking for deflate in -lz" >&5 ac_lib_var=`echo z'_'deflate | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** else *** 2564,2570 **** ac_save_LIBS="$LIBS" LIBS="-lz $LIBS" cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else --- 2580,2586 ---- deflate() ; return 0; } EOF ! if { (eval echo configure:2584: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** for ac_hdr in unistd.h *** 2607,2623 **** do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:2611: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2621: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* --- 2612,2628 ---- do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:2616: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2626: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** s%@build_alias@%$build_alias%g *** 2830,2835 **** --- 2835,2841 ---- s%@build_cpu@%$build_cpu%g s%@build_vendor@%$build_vendor%g s%@build_os@%$build_os%g + s%@mkinstalldirs@%$mkinstalldirs%g s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g s%@INSTALL_DATA@%$INSTALL_DATA%g diff -Nrc3pad gcc-3.0/zlib/configure.in gcc-3.0.1/zlib/configure.in *** gcc-3.0/zlib/configure.in Sun May 13 15:32:56 2001 --- gcc-3.0.1/zlib/configure.in Tue Jul 3 15:29:14 2001 *************** if :; then :; else *** 24,29 **** --- 24,34 ---- fi AC_CANONICAL_SYSTEM + + # This works around an automake problem. + mkinstalldirs="`cd $ac_aux_dir && pwd`/mkinstalldirs" + AC_SUBST(mkinstalldirs) + AM_INIT_AUTOMAKE(zlib, 1.1.3) AM_MAINTAINER_MODE