aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeoffrey Keating <geoffk@apple.com>2002-11-26 22:32:12 +0000
committerGeoffrey Keating <geoffk@apple.com>2002-11-26 22:32:12 +0000
commit9d4b5671b389387446a26776895a8c48767c8c81 (patch)
tree1a2105bb77d825910089c516ecc2d22cee100723
parent647f487caeb1af914ada296afa135925a0a7a148 (diff)
Merge to tag pch-merge-20021124
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/pch-branch@59544 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--ChangeLog108
-rw-r--r--MAINTAINERS10
-rw-r--r--Makefile.tpl69
-rw-r--r--boehm-gc/ChangeLog6
-rwxr-xr-xboehm-gc/ltconfig4
-rw-r--r--boehm-gc/ltmain.sh2
-rw-r--r--config/ChangeLog6
-rw-r--r--config/mpw-mh-mpw157
-rw-r--r--config/mpw/ChangeLog53
-rw-r--r--config/mpw/MoveIfChange19
-rw-r--r--config/mpw/README23
-rw-r--r--config/mpw/forward-include3
-rw-r--r--config/mpw/g-mpw-make.sed293
-rw-r--r--config/mpw/mpw-touch7
-rw-r--r--config/mpw/mpw-true1
-rw-r--r--config/mpw/null-command1
-rw-r--r--config/mpw/open-brace4
-rw-r--r--config/mpw/tr-7to8-src9
-rw-r--r--config/mpw/true1
-rw-r--r--fastjar/ChangeLog20
-rw-r--r--fastjar/config.h.in3
-rwxr-xr-xfastjar/configure2
-rw-r--r--fastjar/configure.in2
-rw-r--r--fastjar/dostime.c13
-rw-r--r--fastjar/jartool.c8
-rw-r--r--gcc/ChangeLog748
-rw-r--r--gcc/ChangeLog.74
-rw-r--r--gcc/Makefile.in45
-rw-r--r--gcc/aclocal.m421
-rw-r--r--gcc/ada/ChangeLog21
-rw-r--r--gcc/ada/adaint.c2
-rw-r--r--gcc/ada/bindgen.adb86
-rw-r--r--gcc/ada/comperr.adb58
-rw-r--r--gcc/ada/comperr.ads25
-rw-r--r--gcc/ada/config-lang.in3
-rw-r--r--gcc/ada/gnatvsn.ads14
-rw-r--r--gcc/builtins.c79
-rw-r--r--gcc/c-decl.c15
-rw-r--r--gcc/c-opts.c2
-rw-r--r--gcc/calls.c17
-rw-r--r--gcc/combine.c4
-rw-r--r--gcc/config.gcc18
-rw-r--r--gcc/config.in70
-rw-r--r--gcc/config/alpha/netbsd.h3
-rw-r--r--gcc/config/arm/arm-protos.h11
-rw-r--r--gcc/config/arm/arm.c70
-rw-r--r--gcc/config/arm/arm.h12
-rw-r--r--gcc/config/arm/arm.md6
-rw-r--r--gcc/config/arm/elf.h14
-rw-r--r--gcc/config/fr30/fr30-protos.h3
-rw-r--r--gcc/config/fr30/fr30.c14
-rw-r--r--gcc/config/fr30/fr30.md11
-rw-r--r--gcc/config/h8300/h8300.c72
-rw-r--r--gcc/config/h8300/h8300.h48
-rw-r--r--gcc/config/h8300/h8300.md185
-rw-r--r--gcc/config/h8300/t-h83007
-rw-r--r--gcc/config/i386/athlon.md2
-rw-r--r--gcc/config/i386/beos-elf.h17
-rw-r--r--gcc/config/i386/freebsd-aout.h20
-rw-r--r--gcc/config/i386/freebsd.h10
-rw-r--r--gcc/config/i386/i386-protos.h3
-rw-r--r--gcc/config/i386/i386.c183
-rw-r--r--gcc/config/i386/i386.h33
-rw-r--r--gcc/config/i386/i386.md170
-rw-r--r--gcc/config/i386/k6.md4
-rw-r--r--gcc/config/i386/linux.h10
-rw-r--r--gcc/config/i386/pentium.md6
-rw-r--r--gcc/config/i386/ppro.md2
-rw-r--r--gcc/config/i386/x86-64.h12
-rw-r--r--gcc/config/ia64/hpux_longdouble.h11
-rw-r--r--gcc/config/m68k/m68k.c4
-rw-r--r--gcc/config/m68k/t-crtstuff11
-rw-r--r--gcc/config/mips/netbsd.h8
-rw-r--r--gcc/config/mips/t-iris62
-rw-r--r--gcc/config/mmix/mmix.h9
-rw-r--r--gcc/config/netbsd-elf.h15
-rw-r--r--gcc/config/netbsd.h18
-rw-r--r--gcc/config/pa/pa-linux.h16
-rw-r--r--gcc/config/pa/pa.c24
-rw-r--r--gcc/config/pa/pa.h6
-rw-r--r--gcc/config/pa/pa64-hpux.h242
-rw-r--r--gcc/config/rs6000/linux.h3
-rw-r--r--gcc/config/rs6000/linux64.h3
-rw-r--r--gcc/config/rs6000/rs6000-protos.h3
-rw-r--r--gcc/config/rs6000/rs6000.c63
-rw-r--r--gcc/config/rs6000/rs6000.md163
-rw-r--r--gcc/config/rs6000/sysv4.h3
-rw-r--r--gcc/config/rs6000/windiss.h2
-rw-r--r--gcc/config/s390/libgcc-glibc.ver20
-rw-r--r--gcc/config/s390/linux.h6
-rw-r--r--gcc/config/s390/s390.c4
-rw-r--r--gcc/config/s390/s390.h6
-rw-r--r--gcc/config/s390/t-linux649
-rw-r--r--gcc/config/sh/sh-protos.h1
-rw-r--r--gcc/config/sh/sh.c67
-rw-r--r--gcc/config/sh/sh.md51
-rw-r--r--gcc/config/stormy16/stormy16.c123
-rw-r--r--gcc/config/stormy16/stormy16.md36
-rw-r--r--gcc/config/xtensa/xtensa-protos.h1
-rw-r--r--gcc/config/xtensa/xtensa.c110
-rw-r--r--gcc/config/xtensa/xtensa.md24
-rwxr-xr-xgcc/configure1509
-rw-r--r--gcc/configure.in175
-rw-r--r--gcc/cp/ChangeLog54
-rw-r--r--gcc/cp/class.c82
-rw-r--r--gcc/cp/cp-tree.h2
-rw-r--r--gcc/cp/decl2.c2
-rw-r--r--gcc/cp/g++spec.c6
-rw-r--r--gcc/cp/mangle.c5
-rw-r--r--gcc/cp/pt.c55
-rw-r--r--gcc/cp/rtti.c3
-rw-r--r--gcc/cp/search.c53
-rw-r--r--gcc/cp/typeck.c7
-rw-r--r--gcc/cppfiles.c47
-rw-r--r--gcc/cpplib.c46
-rw-r--r--gcc/cppspec.c6
-rw-r--r--gcc/df.c146
-rw-r--r--gcc/diagnostic.c1
-rw-r--r--gcc/doc/contrib.texi172
-rw-r--r--gcc/doc/install.texi49
-rw-r--r--gcc/doc/invoke.texi39
-rw-r--r--gcc/doc/sourcebuild.texi30
-rw-r--r--gcc/emit-rtl.c7
-rw-r--r--gcc/expr.c8
-rw-r--r--gcc/f/ChangeLog14
-rw-r--r--gcc/f/g77spec.c6
-rw-r--r--gcc/f/invoke.texi27
-rw-r--r--gcc/f/news.texi4
-rw-r--r--gcc/gcc.c507
-rw-r--r--gcc/gcc.h11
-rw-r--r--gcc/gccspec.c6
-rw-r--r--gcc/gcse.c2
-rw-r--r--gcc/ggc-common.c35
-rw-r--r--gcc/ggc-page.c45
-rw-r--r--gcc/global.c5
-rw-r--r--gcc/gthr-dce.h82
-rw-r--r--gcc/gthr-posix.h161
-rw-r--r--gcc/gthr-single.h46
-rw-r--r--gcc/gthr-solaris.h95
-rw-r--r--gcc/gthr-vxworks.h58
-rw-r--r--gcc/gthr-win32.h102
-rw-r--r--gcc/hard-reg-set.h2
-rw-r--r--gcc/hwint.h4
-rw-r--r--gcc/java/ChangeLog50
-rw-r--r--gcc/java/buffer.c4
-rw-r--r--gcc/java/check-init.c2
-rw-r--r--gcc/java/class.c9
-rw-r--r--gcc/java/constants.c10
-rw-r--r--gcc/java/decl.c14
-rw-r--r--gcc/java/except.c5
-rw-r--r--gcc/java/expr.c9
-rw-r--r--gcc/java/gjavah.c24
-rw-r--r--gcc/java/java-tree.h3
-rw-r--r--gcc/java/jcf-io.c4
-rw-r--r--gcc/java/jcf-parse.c4
-rw-r--r--gcc/java/jcf-path.c15
-rw-r--r--gcc/java/jcf-write.c9
-rw-r--r--gcc/java/jvspec.c14
-rw-r--r--gcc/java/lang.c8
-rw-r--r--gcc/java/lex.c21
-rw-r--r--gcc/java/parse.y22
-rw-r--r--gcc/java/verify.c2
-rw-r--r--gcc/loop.c7
-rw-r--r--gcc/optabs.c135
-rw-r--r--gcc/real.c16
-rw-r--r--gcc/recog.c30
-rw-r--r--gcc/reg-stack.c4
-rw-r--r--gcc/reload.c4
-rw-r--r--gcc/sched-deps.c8
-rw-r--r--gcc/stmt.c14
-rw-r--r--gcc/stor-layout.c1
-rw-r--r--gcc/target.h2
-rw-r--r--gcc/testsuite/ChangeLog110
-rw-r--r--gcc/testsuite/g++.dg/abi/vague1.C2
-rw-r--r--gcc/testsuite/g++.dg/abi/vthunk3.C2
-rw-r--r--gcc/testsuite/gcc.dg/cpp/trad/assembler.S4
-rw-r--r--gcc/testsuite/gcc.dg/cpp/trad/directive.c3
-rw-r--r--gcc/testsuite/lib/compat.exp2
-rw-r--r--gcc/tlink.c22
-rw-r--r--gcc/toplev.c16
-rw-r--r--gcc/tree-inline.c63
-rw-r--r--gcc/tree.c16
-rw-r--r--gcc/tree.h19
-rw-r--r--gcc/varasm.c15
-rw-r--r--gcc/version.c2
-rw-r--r--include/ChangeLog8
-rw-r--r--include/libiberty.h8
-rw-r--r--libf2c/ChangeLog5
-rw-r--r--libf2c/libF77/pow_zz.c6
-rw-r--r--libffi/ChangeLog8
-rwxr-xr-xlibffi/configure6
-rw-r--r--libffi/configure.in1
-rw-r--r--libffi/src/s390/sysv.S24
-rw-r--r--libiberty/ChangeLog16
-rw-r--r--libiberty/Makefile.in3
-rw-r--r--libiberty/functions.texi25
-rw-r--r--libiberty/md5.c108
-rw-r--r--libjava/ChangeLog1763
-rw-r--r--libjava/Makefile.am36
-rw-r--r--libjava/Makefile.in78
-rwxr-xr-xlibjava/configure567
-rw-r--r--libjava/include/jni.h816
-rw-r--r--libjava/include/posix.h67
-rw-r--r--libjava/include/win32.h64
-rw-r--r--libjava/java/applet/Applet.java542
-rw-r--r--libjava/java/applet/AppletContext.java149
-rw-r--r--libjava/java/applet/AppletStub.java97
-rw-r--r--libjava/java/applet/AudioClip.java41
-rw-r--r--libjava/java/awt/BorderLayout.java244
-rw-r--r--libjava/java/awt/CardLayout.java165
-rw-r--r--libjava/java/awt/Container.java475
-rw-r--r--libjava/java/awt/ContainerOrderFocusTraversalPolicy.java2
-rw-r--r--libjava/java/awt/Cursor.java2
-rw-r--r--libjava/java/awt/Event.java132
-rw-r--r--libjava/java/awt/FlowLayout.java166
-rw-r--r--libjava/java/awt/Frame.java12
-rw-r--r--libjava/java/awt/GridBagConstraints.java2
-rw-r--r--libjava/java/awt/GridBagLayout.java2
-rw-r--r--libjava/java/awt/GridLayout.java168
-rw-r--r--libjava/java/awt/List.java6
-rw-r--r--libjava/java/awt/ScrollPane.java8
-rw-r--r--libjava/java/awt/Window.java16
-rw-r--r--libjava/java/awt/color/ColorSpace.java119
-rw-r--r--libjava/java/awt/color/ICC_ColorSpace.java84
-rw-r--r--libjava/java/awt/color/ICC_Profile.java261
-rw-r--r--libjava/java/awt/datatransfer/DataFlavor.java1
-rw-r--r--libjava/java/awt/dnd/DragSourceContext.java2
-rw-r--r--libjava/java/awt/dnd/DropTarget.java1
-rw-r--r--libjava/java/awt/dnd/DropTargetContext.java2
-rw-r--r--libjava/java/awt/event/KeyEvent.java12
-rw-r--r--libjava/java/io/Externalizable.java1
-rw-r--r--libjava/java/io/FileInputStream.java11
-rw-r--r--libjava/java/io/FileOutputStream.java7
-rw-r--r--libjava/java/io/FilePermission.java5
-rw-r--r--libjava/java/io/ObjectStreamConstants.java2
-rw-r--r--libjava/java/io/Serializable.java1
-rw-r--r--libjava/java/io/SerializablePermission.java3
-rw-r--r--libjava/java/io/natFileDescriptorPosix.cc5
-rw-r--r--libjava/java/io/natFileDescriptorWin32.cc4
-rw-r--r--libjava/java/lang/natClass.cc9
-rw-r--r--libjava/java/lang/natRuntime.cc3
-rw-r--r--libjava/java/lang/natVMThrowable.cc2
-rw-r--r--libjava/java/lang/ref/Reference.java4
-rw-r--r--libjava/java/lang/ref/natReference.cc15
-rw-r--r--libjava/java/net/HttpURLConnection.java431
-rw-r--r--libjava/java/net/PlainSocketImpl.java4
-rw-r--r--libjava/java/net/ServerSocket.java22
-rw-r--r--libjava/java/net/SocketAddress.java9
-rw-r--r--libjava/java/net/URL.java416
-rw-r--r--libjava/java/net/URLStreamHandler.java218
-rw-r--r--libjava/java/net/natNetworkInterface.cc13
-rw-r--r--libjava/java/net/natPlainDatagramSocketImpl.cc61
-rw-r--r--libjava/java/net/natPlainSocketImpl.cc546
-rw-r--r--libjava/java/nio/Buffer.java151
-rw-r--r--libjava/java/nio/ByteBuffer.java37
-rw-r--r--libjava/java/nio/channels/AlreadyConnectedException.java6
-rw-r--r--libjava/java/nio/channels/ClosedChannelException.java4
-rw-r--r--libjava/java/nio/channels/DatagramChannel.java105
-rw-r--r--libjava/java/nio/channels/Pipe.java52
-rw-r--r--libjava/java/nio/channels/SelectableChannel.java99
-rw-r--r--libjava/java/nio/channels/SelectionKey.java104
-rw-r--r--libjava/java/nio/channels/Selector.java75
-rw-r--r--libjava/java/nio/channels/ServerSocketChannel.java50
-rw-r--r--libjava/java/nio/channels/SocketChannel.java121
-rw-r--r--libjava/java/nio/channels/spi/AbstractChannel.java57
-rw-r--r--libjava/java/nio/channels/spi/AbstractInterruptibleChannel.java47
-rw-r--r--libjava/java/nio/channels/spi/AbstractSelectableChannel.java169
-rw-r--r--libjava/java/nio/channels/spi/AbstractSelectionKey.java19
-rw-r--r--libjava/java/nio/channels/spi/AbstractSelector.java50
-rw-r--r--libjava/java/nio/channels/spi/SelectorProvider.java49
-rw-r--r--libjava/java/nio/charset/CharacterCodingException.java5
-rw-r--r--libjava/java/nio/charset/Charset.java291
-rw-r--r--libjava/java/nio/charset/CoderMalfunctionError.java2
-rw-r--r--libjava/java/nio/charset/CodingErrorAction.java26
-rw-r--r--libjava/java/nio/charset/IllegalCharsetNameException.java12
-rw-r--r--libjava/java/nio/charset/MalformedInputException.java8
-rw-r--r--libjava/java/nio/charset/UnmappableCharacterException.java8
-rw-r--r--libjava/java/nio/charset/UnsupportedCharsetException.java12
-rw-r--r--libjava/java/security/DummyKeyPairGenerator.java16
-rw-r--r--libjava/java/security/DummyMessageDigest.java46
-rw-r--r--libjava/java/security/DummySignature.java15
-rw-r--r--libjava/java/security/KeyPairGenerator.java55
-rw-r--r--libjava/java/security/KeyPairGeneratorSpi.java18
-rw-r--r--libjava/java/security/KeyStore.java45
-rw-r--r--libjava/java/security/MessageDigest.java70
-rw-r--r--libjava/java/security/Provider.java49
-rw-r--r--libjava/java/security/Security.java97
-rw-r--r--libjava/java/security/Signature.java67
-rw-r--r--libjava/java/text/Format.java2
-rw-r--r--libjava/java/util/AbstractMap.java29
-rw-r--r--libjava/java/util/HashMap.java59
-rw-r--r--libjava/java/util/LinkedHashMap.java202
-rw-r--r--libjava/java/util/jar/Attributes.java3
-rw-r--r--libjava/java/util/zip/GZIPInputStream.java36
-rw-r--r--libjava/javax/naming/AuthenticationException.java40
-rw-r--r--libjava/javax/naming/AuthenticationNotSupportedException.java40
-rw-r--r--libjava/javax/naming/BinaryRefAddr.java2
-rw-r--r--libjava/javax/naming/Binding.java40
-rw-r--r--libjava/javax/naming/CannotProceedException.java40
-rw-r--r--libjava/javax/naming/CommunicationException.java42
-rw-r--r--libjava/javax/naming/CompositeName.java40
-rw-r--r--libjava/javax/naming/CompoundName.java42
-rw-r--r--libjava/javax/naming/ConfigurationException.java42
-rw-r--r--libjava/javax/naming/Context.java42
-rw-r--r--libjava/javax/naming/ContextNotEmptyException.java42
-rw-r--r--libjava/javax/naming/InitialContext.java44
-rw-r--r--libjava/javax/naming/InsufficientResourcesException.java40
-rw-r--r--libjava/javax/naming/InterruptedNamingException.java42
-rw-r--r--libjava/javax/naming/LimitExceededException.java40
-rw-r--r--libjava/javax/naming/LinkException.java42
-rw-r--r--libjava/javax/naming/LinkLoopException.java40
-rw-r--r--libjava/javax/naming/LinkRef.java40
-rw-r--r--libjava/javax/naming/MalformedLinkException.java42
-rw-r--r--libjava/javax/naming/NameAlreadyBoundException.java42
-rw-r--r--libjava/javax/naming/NameClassPair.java40
-rw-r--r--libjava/javax/naming/NameNotFoundException.java40
-rw-r--r--libjava/javax/naming/NameParser.java40
-rw-r--r--libjava/javax/naming/NamingEnumeration.java40
-rw-r--r--libjava/javax/naming/NamingSecurityException.java42
-rw-r--r--libjava/javax/naming/NoInitialContextException.java42
-rw-r--r--libjava/javax/naming/NoPermissionException.java42
-rw-r--r--libjava/javax/naming/NotContextException.java42
-rw-r--r--libjava/javax/naming/OperationNotSupportedException.java42
-rw-r--r--libjava/javax/naming/PartialResultException.java42
-rw-r--r--libjava/javax/naming/Reference.java42
-rw-r--r--libjava/javax/naming/Referenceable.java40
-rw-r--r--libjava/javax/naming/ReferralException.java42
-rw-r--r--libjava/javax/naming/ServiceUnavailableException.java42
-rw-r--r--libjava/javax/naming/SizeLimitExceededException.java42
-rw-r--r--libjava/javax/naming/TimeLimitExceededException.java42
-rw-r--r--libjava/javax/naming/directory/Attribute.java42
-rw-r--r--libjava/javax/naming/directory/AttributeInUseException.java40
-rw-r--r--libjava/javax/naming/directory/AttributeModificationException.java42
-rw-r--r--libjava/javax/naming/directory/Attributes.java42
-rw-r--r--libjava/javax/naming/directory/BasicAttribute.java42
-rw-r--r--libjava/javax/naming/directory/BasicAttributes.java42
-rw-r--r--libjava/javax/naming/directory/DirContext.java42
-rw-r--r--libjava/javax/naming/directory/InitialDirContext.java42
-rw-r--r--libjava/javax/naming/directory/InvalidAttributeIdentifierException.java42
-rw-r--r--libjava/javax/naming/directory/InvalidAttributeValueException.java42
-rw-r--r--libjava/javax/naming/directory/InvalidAttributesException.java42
-rw-r--r--libjava/javax/naming/directory/InvalidSearchControlsException.java42
-rw-r--r--libjava/javax/naming/directory/InvalidSearchFilterException.java42
-rw-r--r--libjava/javax/naming/directory/ModificationItem.java42
-rw-r--r--libjava/javax/naming/directory/NoSuchAttributeException.java42
-rw-r--r--libjava/javax/naming/directory/SchemaViolationException.java42
-rw-r--r--libjava/javax/naming/directory/SearchControls.java42
-rw-r--r--libjava/javax/naming/directory/SearchResult.java42
-rw-r--r--libjava/javax/naming/event/EventContext.java42
-rw-r--r--libjava/javax/naming/event/EventDirContext.java42
-rw-r--r--libjava/javax/naming/event/NamespaceChangeListener.java42
-rw-r--r--libjava/javax/naming/event/NamingEvent.java42
-rw-r--r--libjava/javax/naming/event/NamingExceptionEvent.java42
-rw-r--r--libjava/javax/naming/event/NamingListener.java42
-rw-r--r--libjava/javax/naming/event/ObjectChangeListener.java42
-rw-r--r--libjava/javax/naming/ldap/Control.java42
-rw-r--r--libjava/javax/naming/ldap/ControlFactory.java42
-rw-r--r--libjava/javax/naming/ldap/ExtendedRequest.java42
-rw-r--r--libjava/javax/naming/ldap/ExtendedResponse.java42
-rw-r--r--libjava/javax/naming/ldap/HasControls.java42
-rw-r--r--libjava/javax/naming/ldap/InitialLdapContext.java42
-rw-r--r--libjava/javax/naming/ldap/LdapContext.java42
-rw-r--r--libjava/javax/naming/ldap/LdapReferralException.java42
-rw-r--r--libjava/javax/naming/ldap/UnsolicitedNotification.java42
-rw-r--r--libjava/javax/naming/ldap/UnsolicitedNotificationEvent.java42
-rw-r--r--libjava/javax/naming/ldap/UnsolicitedNotificationListener.java42
-rw-r--r--libjava/javax/naming/spi/DirObjectFactory.java42
-rw-r--r--libjava/javax/naming/spi/DirStateFactory.java42
-rw-r--r--libjava/javax/naming/spi/DirectoryManager.java44
-rw-r--r--libjava/javax/naming/spi/InitialContextFactory.java44
-rw-r--r--libjava/javax/naming/spi/InitialContextFactoryBuilder.java44
-rw-r--r--libjava/javax/naming/spi/NamingManager.java48
-rw-r--r--libjava/javax/naming/spi/ObjectFactory.java40
-rw-r--r--libjava/javax/naming/spi/ObjectFactoryBuilder.java42
-rw-r--r--libjava/javax/naming/spi/ResolveResult.java42
-rw-r--r--libjava/javax/naming/spi/Resolver.java42
-rw-r--r--libjava/javax/naming/spi/StateFactory.java42
-rw-r--r--libjava/jni.cc263
-rw-r--r--libjava/testsuite/ChangeLog13
-rw-r--r--libjava/testsuite/libjava.loader/loader.exp7
-rw-r--r--libstdc++-v3/ChangeLog191
-rw-r--r--libstdc++-v3/acconfig.h24
-rw-r--r--libstdc++-v3/acinclude.m471
-rw-r--r--libstdc++-v3/aclocal.m4113
-rw-r--r--libstdc++-v3/config.h.in24
-rw-r--r--libstdc++-v3/config/io/basic_file_stdio.cc43
-rw-r--r--libstdc++-v3/config/linker-map.gnu16
-rw-r--r--libstdc++-v3/config/os/hpux/os_defines.h5
-rwxr-xr-xlibstdc++-v3/configure2588
-rw-r--r--libstdc++-v3/configure.in16
-rw-r--r--libstdc++-v3/configure.target2
-rw-r--r--libstdc++-v3/docs/doxygen/TODO6
-rw-r--r--libstdc++-v3/docs/doxygen/run_doxygen2
-rw-r--r--libstdc++-v3/docs/doxygen/stdheader.cc7
-rw-r--r--libstdc++-v3/docs/doxygen/style.css45
-rw-r--r--libstdc++-v3/docs/doxygen/user.cfg.in157
-rw-r--r--libstdc++-v3/docs/html/17_intro/howto.html8
-rw-r--r--libstdc++-v3/docs/html/20_util/howto.html2
-rw-r--r--libstdc++-v3/docs/html/21_strings/howto.html52
-rw-r--r--libstdc++-v3/docs/html/22_locale/howto.html22
-rw-r--r--libstdc++-v3/docs/html/22_locale/locale.html3
-rw-r--r--libstdc++-v3/docs/html/22_locale/messages.html1
-rw-r--r--libstdc++-v3/docs/html/23_containers/howto.html1
-rw-r--r--libstdc++-v3/docs/html/24_iterators/howto.html1
-rw-r--r--libstdc++-v3/docs/html/25_algorithms/howto.html1
-rw-r--r--libstdc++-v3/docs/html/26_numerics/howto.html1
-rw-r--r--libstdc++-v3/docs/html/27_io/howto.html134
-rw-r--r--libstdc++-v3/docs/html/documentation.html3
-rw-r--r--libstdc++-v3/docs/html/ext/howto.html1
-rw-r--r--libstdc++-v3/docs/html/ext/lwg-active.html784
-rw-r--r--libstdc++-v3/docs/html/ext/lwg-defects.html264
-rw-r--r--libstdc++-v3/docs/html/ext/sgiexts.html3
-rw-r--r--libstdc++-v3/docs/html/faq/index.html24
-rw-r--r--libstdc++-v3/docs/html/faq/index.txt318
-rw-r--r--libstdc++-v3/docs/html/install.html3
-rw-r--r--libstdc++-v3/include/bits/basic_ios.h283
-rw-r--r--libstdc++-v3/include/bits/c++config2
-rw-r--r--libstdc++-v3/include/bits/fpos.h8
-rw-r--r--libstdc++-v3/include/bits/fstream.tcc10
-rw-r--r--libstdc++-v3/include/bits/ios_base.h268
-rw-r--r--libstdc++-v3/include/bits/stl_alloc.h138
-rw-r--r--libstdc++-v3/include/bits/stl_bvector.h4
-rw-r--r--libstdc++-v3/include/bits/stl_deque.h20
-rw-r--r--libstdc++-v3/include/bits/stl_iterator_base_types.h3
-rw-r--r--libstdc++-v3/include/bits/stl_tree.h4
-rw-r--r--libstdc++-v3/include/bits/stl_vector.h1539
-rw-r--r--libstdc++-v3/include/bits/streambuf.tcc12
-rw-r--r--libstdc++-v3/include/bits/vector.tcc144
-rw-r--r--libstdc++-v3/include/std/std_fstream.h334
-rw-r--r--libstdc++-v3/include/std/std_iomanip.h46
-rw-r--r--libstdc++-v3/include/std/std_iosfwd.h81
-rw-r--r--libstdc++-v3/include/std/std_iostream.h30
-rw-r--r--libstdc++-v3/include/std/std_istream.h516
-rw-r--r--libstdc++-v3/include/std/std_ostream.h270
-rw-r--r--libstdc++-v3/include/std/std_sstream.h277
-rw-r--r--libstdc++-v3/include/std/std_streambuf.h529
-rw-r--r--libstdc++-v3/src/ios.cc9
-rw-r--r--libstdc++-v3/src/locale.cc18
-rw-r--r--libstdc++-v3/testsuite/20_util/allocator_members.cc33
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector_capacity.cc79
-rw-r--r--libstdc++-v3/testsuite/27_io/istream_unformatted.cc53
-rw-r--r--libstdc++-v3/testsuite/27_io/ostream_inserter_other.cc30
-rw-r--r--libtool.m442
-rwxr-xr-xltconfig4
-rw-r--r--ltmain.sh2
445 files changed, 22051 insertions, 10354 deletions
diff --git a/ChangeLog b/ChangeLog
index a753065f704..df61247cdc0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,39 @@
+2002-11-19 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * ltconfig (osf[345]): Append $major to soname_spec.
+ Reflect this in library_names_spec.
+ * ltmain.sh (osf): Prefix $major with . for use as extension.
+
+2002-11-19 Andreas Jaeger <aj@suse.de>
+
+ * libtool.m4 (libtool_flags): Add patch from libtool CVS: Support
+ linking of 32-bit libraries with ld on the x86-64, ppc64, s390x
+ and sparc64 GNU/Linux systems.
+
+2002-11-19 Nathan Sidwell <nathan@codesourcery.com>
+
+ * MAINTAINERS: Update email.
+
+2002-11-18 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * MAINTAINERS: Complete James Dennett's entry.
+
+2002-11-15 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * MAINTAINERS (Write After Approval): Add myself.
+
+2002-11-13 Bruce Korb <bkorb@gnu.org>
+
+ * Makefile.tpl: syntactic cleanup
+
+2002-11-13 Stuart Hastings <stuart@apple.com>
+
+ * MAINTAINERS: Add myself to write-after-approval list.
+
+2002-11-11 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * MAINTAINERS (Write After Approval): Add myself.
+
2002-11-04 Adam Nemet <anemet@lnxw.com>
* MAINTAINERS (Write After Approval): Add myself.
@@ -1544,8 +1580,8 @@ Mon Apr 23 09:15:03 2001 Anthony Green <green@redhat.com>
2000-12-13 Anthony Green <green@redhat.com>
* configure.in: Disable libgcj for any target not specifically
- listed. Disable libgcj for x86 and Alpha Linux until compatible
- with g++ abi.
+ listed. Disable libgcj for x86 and Alpha Linux until compatible
+ with g++ abi.
2000-12-13 Mike Stump <mrs@wrs.com>
@@ -2049,7 +2085,7 @@ Tue May 16 09:57:35 2000 Andrew Cagney <cagney@b1.cygnus.com>
Wed Apr 26 17:03:53 2000 Andrew Cagney <cagney@b1.cygnus.com>:
* Makefile.in (do-djunpack): New target. Update djunpack.bat with
- current version information. Add to proto-toplev directory.
+ current version information. Add to proto-toplev directory.
(gdb-taz): Build do-djunpack.
2000-05-15 David Edelsohn <edelsohn@gnu.org>
@@ -2093,9 +2129,9 @@ Sat May 6 21:12:55 CDT 2000 Jason Eckhardt <jle@cygnus.com>
Wed Apr 19 12:46:26 2000 Andrew Cagney <cagney@b1.cygnus.com>
* 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.
+ 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 <dpitts@cozx.com>
@@ -2114,11 +2150,11 @@ Wed Apr 12 16:42:48 2000 Andrew Cagney <cagney@b1.cygnus.com>
(PACKAGE): Default to TOOL.
(VER): Default to a shell script.
(taz): Rewrite target. Move real work to do-proto-toplev. Include
- md5 checksum generation.
+ 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.
+ insight.tar.bz2): Use gdb-taz to create archive.
Fri Apr 7 18:10:29 2000 Andrew Cagney <cagney@b1.cygnus.com>
@@ -2163,7 +2199,7 @@ Fri Mar 3 18:44:08 2000 Andrew Cagney <cagney@b1.cygnus.com>
(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.
+ dejagnu.tar.bz2): New packages.
2000-02-27 Andreas Jaeger <aj@suse.de>
@@ -2181,7 +2217,7 @@ Fri Mar 3 18:44:08 2000 Andrew Cagney <cagney@b1.cygnus.com>
Thu Feb 24 16:15:56 2000 Andrew Cagney <cagney@b1.cygnus.com>
* config.guess, config.sub: Updated to match config's 2000-02-15
- version.
+ version.
2000-02-23 Linas Vepstas <linas@linas.org>
@@ -2542,7 +2578,7 @@ Wed Mar 10 18:35:07 1999 Jeff Johnston <jjohnstn@cygnus.com>
Wed Mar 10 17:39:09 1999 Drew Moseley <dmoseley@cygnus.com>
* configure.in: Added bsp support to arm-*-coff and arm-*-elf
- targets.
+ targets.
1999-03-02 Nick Clifton <nickc@cygnus.com>
@@ -2670,7 +2706,7 @@ Thu Dec 17 01:22:30 1998 Jeffrey A Law (law@cygnus.com)
Tue Dec 15 17:02:58 1998 Bob Manson <manson@charmed.cygnus.com>
* configure.in: Add cygmon for x86-coff and x86-elf. Configure
- cygmon for all sparclite targets, regardless of object format.
+ cygmon for all sparclite targets, regardless of object format.
1998-12-15 Mark Salter <msalter@cygnus.com>
@@ -3057,7 +3093,7 @@ Sat Jun 27 22:46:32 1998 Jeffrey A Law (law@cygnus.com)
Wed Jun 24 16:01:59 1998 John Metzler <jmetzler@cygnus.com>
* configure.in (noconfigdirs): Add configure pattern for mips tx39
- cygmon
+ cygmon
Tue Jun 23 22:42:32 1998 Mark Alexander <marka@cygnus.com>
@@ -3709,7 +3745,7 @@ Mon Sep 29 00:38:08 1997 Aaron Jackson <jackson@negril.msrce.howard.edu>
Wed Sep 24 18:06:27 1997 Stu Grossman <grossman@babylon-5.cygnus.com>
* configure.in (d30v): Remove tcl, tk, expect, gdb, itcl, tix, db,
- sn, and gnuserv from noconfigdirs.
+ sn, and gnuserv from noconfigdirs.
Wed Sep 24 15:18:32 1997 Ian Lance Taylor <ian@cygnus.com>
@@ -3729,7 +3765,7 @@ Thu Sep 18 21:43:23 1997 Alexandre Oliva <oliva@dcc.unicamp.br>
Thu Sep 18 15:37:42 1997 Andrew Cagney <cagney@b1.cygnus.com>
* configure (tooldir): enable_gdbtk=YES for cygwin32, NO for
- windows. Consistent with gdb/configure.
+ windows. Consistent with gdb/configure.
1997-09-15 02:37 Ulrich Drepper <drepper@cygnus.com>
@@ -3910,13 +3946,13 @@ Tue Aug 5 12:12:44 1997 Andrew Cagney <cagney@b1.cygnus.com>
Mon Aug 4 22:59:02 1997 Andrew Cagney <cagney@b1.cygnus.com>
* Makefile.in (CC_FOR_TARGET): When winsup/Makefile present,
- correctly specify the target build directory $(TARGET_SUBDIR)/winsup
- for libraries.
+ correctly specify the target build directory $(TARGET_SUBDIR)/winsup
+ for libraries.
Mon Aug 4 12:40:24 1997 Jason Merrill <jason@yorick.cygnus.com>
* Makefile.in (EXTRA_GCC_FLAGS): Fix handling of macros with values
- separated by spaces.
+ separated by spaces.
Thu Jul 31 19:49:49 1997 Ian Lance Taylor <ian@cygnus.com>
@@ -4047,7 +4083,7 @@ Mon Jun 16 11:11:10 1997 Ian Lance Taylor <ian@cygnus.com>
$(DEFAULT_YACC).
* configure.in: Build itl, db, sn, etc., when building for native
- cygwin32.
+ cygwin32.
* Makefile.in (LD): New variable.
(EXTRA_HOST_FLAGS): Pass down LD.
@@ -4060,7 +4096,7 @@ Mon Jun 16 11:10:35 1997 Philip Blundell <Philip.Blundell@pobox.com>
Fri Jun 13 10:22:56 1997 Bob Manson <manson@charmed.cygnus.com>
* configure.in (targargs): Strip out any supplied --build argument
- before adding our own. Always add --build.
+ before adding our own. Always add --build.
Thu Jun 12 21:12:28 1997 Bob Manson <manson@charmed.cygnus.com>
@@ -4255,7 +4291,7 @@ Tue Feb 25 18:46:14 1997 Stan Shebs <shebs@andros.cygnus.com>
Tue Feb 25 13:19:14 1997 Andrew Cagney <cagney@kremvax.tpgi.com.au>
* configure.in (noconfigdirs): Disable target-newlib,
- target-examples and target-libiberty for d30v.
+ target-examples and target-libiberty for d30v.
Fri Feb 21 17:56:25 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
@@ -4268,7 +4304,7 @@ Fri Feb 21 20:58:51 1997 Michael Meissner <meissner@cygnus.com>
Sun Feb 16 15:41:09 1997 Andrew Cagney <cagney@critters.cygnus.com>
* configure.in (d30v-*): Remove sim directory from list of
- unsupported d30v directories
+ unsupported d30v directories
Tue Feb 18 17:32:42 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
@@ -4451,7 +4487,7 @@ Fri Nov 8 11:34:58 1996 David J. MacKenzie <djm@geech.gnu.ai.mit.edu>
LynxOs is not a hardware supplier.
* config.guess: Contributions from bug-gnu-utils to add support for:
- OpenBSD like NetBSD.
+ OpenBSD like NetBSD.
Stratus systems.
More Pyramid systems.
i[n>4]86 Intel chips.
@@ -4592,7 +4628,7 @@ Wed Oct 2 15:52:36 1996 Klaus Kaempf <kkaempf@progis.de>
Tue Oct 1 01:28:41 1996 James G. Smith <jsmith@cygnus.co.uk>
* configure.in (noconfigdirs): Don't build libgloss for arm-coff
- targets.
+ targets.
Mon Sep 30 14:24:01 1996 Stan Shebs <shebs@andros.cygnus.com>
@@ -4819,7 +4855,7 @@ Sun Jun 23 22:41:54 1996 Geoffrey Noer <noer@cygnus.com>
Sat Jun 22 11:39:01 1996 Jason Merrill <jason@yorick.cygnus.com>
* Makefile.in (TARGET_SUBDIR): Move comment to previous line so we
- don't get ". ".
+ don't get ". ".
Fri Jun 21 17:24:48 1996 Jim Wilson <wilson@cygnus.com>
@@ -5266,7 +5302,7 @@ Fri Dec 29 07:56:11 1995 Michael Meissner <meissner@tiktok.cygnus.com>
* 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.
+ 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.
@@ -5346,7 +5382,7 @@ Mon Dec 4 12:38:15 1995 Ian Lance Taylor <ian@cygnus.com>
Thu Nov 30 14:45:25 1995 J.T. Conklin <jtc@rtl.cygnus.com>
* 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
+ 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 <bothner@wombat.gnu.ai.mit.edu>
@@ -5458,15 +5494,15 @@ Mon Nov 13 12:34:20 1995 Stan Shebs <shebs@andros.cygnus.com>
* 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.
+ 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 <jason@yorick.cygnus.com>
* configure: CXX defaults to gcc, not g++. If we find
- gcc in the path, set CC to gcc -O2.
+ gcc in the path, set CC to gcc -O2.
Tue Nov 7 15:45:17 1995 Ian Lance Taylor <ian@cygnus.com>
@@ -5516,8 +5552,8 @@ Wed Nov 1 12:23:20 1995 Ian Lance Taylor <ian@cygnus.com>
Tue Oct 31 17:52:39 1995 J.T. Conklin <jtc@slave.cygnus.com>
* configure.in (host_makefile_frag): Use m68k-sun-sunos* instead
- of m68k-sun-* when selecting mh-sun3 to avoid matching NetBSD/sun3
- systems.
+ of m68k-sun-* when selecting mh-sun3 to avoid matching NetBSD/sun3
+ systems.
Tue Oct 31 16:57:32 1995 Jim Wilson <wilson@chestnut.cygnus.com>
@@ -5795,7 +5831,7 @@ Thu Sep 7 20:03:41 1995 Ken Raeburn <raeburn@cygnus.com>
Fri Sep 1 08:06:58 1995 James G. Smith <jsmith@beauty.cygnus.com>
* config.sub: recognise mips64vr4300 and mips64vr4300el as valid
- targets.
+ targets.
Wed Aug 30 21:06:50 1995 Jason Molenda (crash@phydeaux.cygnus.com)
@@ -6789,8 +6825,8 @@ Tue Apr 26 18:11:33 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
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.
+ * 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)
@@ -8535,7 +8571,7 @@ Thu Aug 27 13:04:42 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
Mon Aug 24 14:05:14 1992 Ian Lance Taylor (ian@cygnus.com)
- * config.sub, configure.in: accept OSE68000 and OSE68k.
+ * 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 --git a/MAINTAINERS b/MAINTAINERS
index d144233d2e4..4adfbd93e3a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -136,7 +136,7 @@ web pages Janis Johnson janis187@us.ibm.com
config.sub/config.guess Ben Elliston config-patches@gnu.org
basic block reordering Jason Eckhardt jle@rice.edu
i18n Philipp Thomas pthomas@suse.de
-diagnostic messages Gabriel Dos Reis gdr@codesourcery.com
+diagnostic messages Gabriel Dos Reis gdr@integrable-solutions.net
windows, cygwin, mingw Christopher Faylor cgf@redhat.com
windows, cygwin, mingw DJ Delorie dj@redhat.com
DJGPP DJ Delorie dj@delorie.com
@@ -169,11 +169,11 @@ Eric Blake ericb@gcc.gnu.org
Jim Blandy jimb@redhat.com
Phil Blundell pb@futuretv.com
Hans Boehm hboehm@gcc.gnu.org
+Eric Botcazou ebotcazou@libertysurf.fr
Andrew Cagney cagney@redhat.com
Chandra Chavva cchavva@redhat.com
William Cohen wcohen@redhat.com
Chris Demetriou cgd@broadcom.com
-Gabriel Dos Reis gdr@integrable-solutions.net
*Paul Eggert eggert@twinsun.com
Steve Ellcey sje@cup.hp.com
Ben Elliston bje@redhat.com
@@ -185,6 +185,7 @@ Anthony Green green@redhat.com
Stu Grossman grossman@redhat.com
Laurent Guerby guerby@acm.org
Andrew Haley aph@redhat.com
+Stuart Hastings stuart@apple.com
Aldy Hernandez aldyh@redhat.com
Matthew Hiller hiller@redhat.com
Manfred Hollstein mhollstein@redhat.com
@@ -241,7 +242,7 @@ Roger Sayle roger@eyesopen.com
Bernd Schmidt bernds@redhat.com
Andreas Schwab schwab@suse.de
Stan Shebs shebs@apple.com
-Nathan Sidwell nathan@acm.org
+Nathan Sidwell nathan@codesourcery.com
Franz Sirl franz.sirl-kernel@lauterbach.com
Danny Smith dannysmith@users.sourceforge.net
Michael Sokolov msokolov@ivan.Harhan.ORG
@@ -253,6 +254,7 @@ Ian Taylor ian@zembu.com
Michael Tiemann tiemann@redhat.com
Philipp Thomas pthomas@suse.de
Kresten Krab Thorup krab@gcc.gnu.org
+Jonathan Wakely redi@gcc.gnu.org
Krister Walfridsson cato@df.lth.se
John Wehle john@feith.com
Florian Weimer fw@deneb.enyo.de
@@ -261,9 +263,9 @@ Mark Wielaard mark@gcc.gnu.org
GNATS only accounts
Wolfgang Bangerth bangerth bangerth@ticam.utexas.edu
+James Dennett jdennett jdennett@acm.org
Volker Reichelt reichelt reichelt@igpm.rwth-aachen.de
Peter Bienstman(?)
Benjamin Chelf(?)
-James Dennett(?)
Mark Galassi(?)
diff --git a/Makefile.tpl b/Makefile.tpl
index 58d50ce83ac..7428f412451 100644
--- a/Makefile.tpl
+++ b/Makefile.tpl
@@ -1,4 +1,4 @@
-[+ AutoGen5 template
+[+ AutoGen5 template -*- Mode: Makefile -*-
in
+]
@@ -522,8 +522,10 @@ CONFIGURE_BUILD_MODULES = \
# This is a list of the targets for all of the modules which are compiled
# using $(FLAGS_TO_PASS).
-ALL_MODULES = [+ FOR host_modules +]\
- all-[+module+] [+ ENDFOR host_modules +]\
+ALL_MODULES =[+
+ FOR host_modules +] \
+ all-[+module+][+
+ ENDFOR host_modules +] \
$(EXTRA_TARGET_HOST_ALL_MODULES)
# This is a list of the check targets for all of the modules which are
@@ -539,16 +541,25 @@ NATIVE_CHECK_MODULES = \
check-flex \
check-zip
-CROSS_CHECK_MODULES = [+ FOR host_modules +][+ IF no_check +][+ ELIF no_check_cross +][+ ELSE x +]\
- check-[+module+] [+ ENDIF no_check +][+ ENDFOR host_modules +]\
+CROSS_CHECK_MODULES =[+
+ FOR host_modules +][+
+ IF (not (or (exist? "no_check_cross") (exist? "no_check")))
+ +] \
+ check-[+module+][+
+ ENDIF no_check +][+
+ ENDFOR host_modules +] \
$(EXTRA_TARGET_HOST_CHECK_MODULES)
CHECK_MODULES=$(NATIVE_CHECK_MODULES) $(CROSS_CHECK_MODULES)
# This is a list of the install targets for all of the modules which are
# compiled using $(FLAGS_TO_PASS).
-INSTALL_MODULES = [+ FOR host_modules+][+ IF no_install +][+ ELSE no_install +]\
- install-[+module+] [+ ENDIF no_install +][+ ENDFOR host_modules +]\
+INSTALL_MODULES =[+
+ FOR host_modules+][+
+ IF (not (exist? "no_install")) +] \
+ install-[+module+][+
+ ENDIF no_install +][+
+ ENDFOR host_modules +] \
$(EXTRA_TARGET_HOST_INSTALL_MODULES)
# This is a list of the targets for all of the modules which are compiled
@@ -583,31 +594,51 @@ INSTALL_X11_MODULES = \
# This is a list of the targets for all of the modules which are compiled
# using $(TARGET_FLAGS_TO_PASS).
-ALL_TARGET_MODULES = [+ FOR target_modules +]\
- all-target-[+module+] [+ ENDFOR target_modules +]
+ALL_TARGET_MODULES =[+
+ FOR target_modules +] \
+ all-target-[+module+][+
+ ENDFOR target_modules +]
# This is a list of the configure targets for all of the modules which
# are compiled using the target tools.
-CONFIGURE_TARGET_MODULES = [+ FOR target_modules +]\
- configure-target-[+module+] [+ ENDFOR target_modules +]
+CONFIGURE_TARGET_MODULES =[+
+ FOR target_modules +] \
+ configure-target-[+module+][+
+ ENDFOR target_modules +]
# This is a list of the check targets for all of the modules which are
# compiled using $(TARGET_FLAGS_TO_PASS).
-CHECK_TARGET_MODULES = [+ FOR target_modules +][+ IF no_check +][+ ELSE check +]\
- check-target-[+module+] [+ ENDIF no_check +][+ ENDFOR target_modules +]
+CHECK_TARGET_MODULES =[+
+ FOR target_modules +][+
+ IF (not (exist? "no_check")) +] \
+ check-target-[+module+][+
+ ENDIF no_check +][+
+ ENDFOR target_modules +]
# This is a list of the install targets for all of the modules which are
# compiled using $(TARGET_FLAGS_TO_PASS).
-INSTALL_TARGET_MODULES = [+ FOR target_modules +][+ IF no_install +][+ ELSE install +]\
- install-target-[+module+] [+ ENDIF no_install +][+ ENDFOR target_modules +]
+INSTALL_TARGET_MODULES =[+
+ FOR target_modules +][+
+ IF (not (exist? "no_install")) +] \
+ install-target-[+module+][+
+ ENDIF no_install +][+
+ ENDFOR target_modules +]
# This is a list of the targets for which we can do a clean-{target}.
-CLEAN_MODULES = [+ FOR host_modules +][+ IF no_clean +][+ ELSE no_clean +]\
- clean-[+module+] [+ ENDIF no_clean +][+ ENDFOR host_modules +]
+CLEAN_MODULES =[+
+ FOR host_modules +][+
+ IF (not (exist? "no_clean")) +] \
+ clean-[+module+][+
+ ENDIF no_clean +][+
+ ENDFOR host_modules +]
# All of the target modules that can be cleaned
-CLEAN_TARGET_MODULES = [+ FOR target_modules +][+ IF no_clean +][+ ELSE clean +]\
- clean-target-[+module+] [+ ENDIF no_clean +][+ ENDFOR target_modules +]
+CLEAN_TARGET_MODULES =[+
+ FOR target_modules +][+
+ IF (not (exist? "no_clean")) +] \
+ clean-target-[+module+][+
+ ENDIF no_clean +][+
+ ENDFOR target_modules +]
# All of the x11 modules that can be cleaned
CLEAN_X11_MODULES = \
diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog
index a0d5917e56a..21d304df594 100644
--- a/boehm-gc/ChangeLog
+++ b/boehm-gc/ChangeLog
@@ -1,3 +1,9 @@
+2002-11-19 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * ltconfig (osf[345]): Append $major to soname_spec.
+ Reflect this in library_names_spec.
+ * ltmain.sh (osf): Prefix $major with . for use as extension.
+
2002-10-02 Andreas Jaeger <aj@suse.de>
* include/private/gcconfig.h (HBLKSIZE): Define for x86-64.
diff --git a/boehm-gc/ltconfig b/boehm-gc/ltconfig
index a01334f9212..b8eef56a916 100755
--- a/boehm-gc/ltconfig
+++ b/boehm-gc/ltconfig
@@ -2017,8 +2017,8 @@ os2*)
osf3* | osf4* | osf5*)
version_type=osf
need_version=no
- soname_spec='${libname}${release}.so'
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+ soname_spec='${libname}${release}.so$major'
+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
shlibpath_var=LD_LIBRARY_PATH
# this will be overridden with pass_all, but let us keep it just in case
deplibs_check_method='file_magic COFF format alpha shared library'
diff --git a/boehm-gc/ltmain.sh b/boehm-gc/ltmain.sh
index 50515ad0b9e..72699bea1c1 100644
--- a/boehm-gc/ltmain.sh
+++ b/boehm-gc/ltmain.sh
@@ -1715,7 +1715,7 @@ compiler."
;;
osf)
- major=`expr $current - $age`
+ major=.`expr $current - $age`
versuffix=".$current.$age.$revision"
verstring="$current.$age.$revision"
diff --git a/config/ChangeLog b/config/ChangeLog
index 129ce6168f3..3f985d32a07 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,9 @@
+2002-11-10 Stan Shebs <shebs@apple.com>
+
+ Retire common MPW configury bits.
+ * mpw-mh-mpw: Remove.
+ * mpw: Remove directory along with all of its files.
+
2002-05-16 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* acinclude.m4: Allow for PWDCMD to override hardcoded pwd.
diff --git a/config/mpw-mh-mpw b/config/mpw-mh-mpw
deleted file mode 100644
index 543ef4fb2a1..00000000000
--- a/config/mpw-mh-mpw
+++ /dev/null
@@ -1,157 +0,0 @@
-# This is an MPW makefile fragment.
-
-# Since there are a multiplicity of Mac compilers and two different
-# processors, this file is primarily a library of options for each
-# compiler. Somebody else (such as a configure or build script) will
-# make the actual choice.
-
-# Compiler to use for compiling.
-
-CC_MPW_C = C -d MPW_C -d ALMOST_STDC -d ANSI_PROTOTYPES -d MPW -mc68020 -model far -b -w
-
-CC_SC = SC -d ALMOST_STDC -d ANSI_PROTOTYPES -d MPW -mc68020 -model far -b -i '' -i :
-
-CC_MWC68K = MWC68K -d MPW -enum int -mpw_chars -sym on -w off -mc68020 -model far
-
-CC_PPCC = PPCC -d powerc=1 -d pascal= -d ALMOST_STDC -d ANSI_PROTOTYPES -d MPW -w
-
-CC_MRC = MrC -d powerc=1 -d pascal= -d ALMOST_STDC -d ANSI_PROTOTYPES -d MPW -i '' -i : -jm
-
-CC_SMrC = SMrC -d MPW
-
-# "-mpw_chars" is necessary because GNU sources often mix signed and
-# unsigned casually.
-# "-w off" is not a great idea, but CW7 is complaining about enum
-# assignments.
-# "-opt global,peep,l4,speed" is sometimes good, and sometimes bad.
-# We must use {CIncludes} so that MPW tools will work; {MWCIncludes}
-# defines stdout, islower, etc, in ways that are incompatible with MPW's
-# runtime. However, this cannot be done via -i "{CIncludes}", since
-# that does not affect how <>-type includes happen; instead, the variable
-# MWCIncludes must be set to point at {CIncludes}.
-
-CC_MWCPPC = MWCPPC -d MPW -enum int -mpw_chars -sym on -w off
-
-# Note that GCC does *not* wire in a definition of "pascal", so that
-# it can be handled in another way if desired.
-
-CC_68K_GCC = gC -Dpascal= -DANSI_PROTOTYPES -DMPW
-
-CC_PPC_GCC = gC -Dpowerc=1 -Dpascal= -DANSI_PROTOTYPES -DMPW
-
-# Nothing for the default CFLAGS.
-
-CFLAGS =
-
-# Tool to use for making libraries/archives.
-
-AR_LIB = Lib
-
-AR_MWLINK68K = MWLink68K -xm library
-
-AR_PPCLINK = PPCLink -xm library
-
-AR_MWLINKPPC = MWLinkPPC -xm library
-
-AR_AR = ar
-
-AR_FLAGS = -o
-
-RANLIB_NULL = null-command
-
-RANLIB_RANLIB = ranlib
-
-# Compiler and/or linker to use for linking.
-
-CC_LD_LINK = Link -w -d -model far {CC_LD_TOOL_FLAGS}
-
-CC_LD_MWLINK68K = MWLink68K -w {CC_LD_TOOL_FLAGS} -sym on -model far
-
-CC_LD_PPCLINK = PPCLink -main __start -outputformat xcoff
-
-CC_LD_MWLINKPPC = MWLinkPPC -w {CC_LD_TOOL_FLAGS} -sym on
-
-CC_LD_GLD = gC
-
-# Extension for linker output.
-
-PROG_EXT_68K =
-
-PROG_EXT_XCOFF = .xcoff
-
-# Nothing for the default LDFLAGS.
-
-LDFLAGS = -w
-
-CC_LD_TOOL_FLAGS = -c 'MPS ' -t MPST
-
-# Libraries to link against.
-
-# It would appear that the math libraries are not
-# needed except to provide a definition for scalb,
-# which is called from ldexp, which is referenced
-# in the m68k opcodes library.
-
-EXTRALIBS_C = \Option-d
- "{CLibraries}"StdClib.o \Option-d
- "{CLibraries}"Math.o \Option-d
- "{CLibraries}"CSANELib.o \Option-d
- "{Libraries}"Stubs.o \Option-d
- "{Libraries}"Runtime.o \Option-d
- "{Libraries}"Interface.o \Option-d
- "{Libraries}"ToolLibs.o
-
-EXTRALIBS_MWC68K = \Option-d
- "{CLibraries}"StdClib.o \Option-d
- "{CLibraries}"Math.o \Option-d
- "{CLibraries}"CSANELib.o \Option-d
- "{Libraries}"Stubs.o \Option-d
- "{Libraries}"Runtime.o \Option-d
- "{Libraries}"Interface.o \Option-d
- "{Libraries}"ToolLibs.o \Option-d
- "{MW68KLibraries}MPW ANSI (4i) C.68K.Lib"
-
-EXTRALIBS_PPC_XCOFF = \Option-d
- "{PPCLibraries}"StdCRuntime.o \Option-d
- "{PPCLibraries}"InterfaceLib.xcoff \Option-d
- "{PPCLibraries}"MathLib.xcoff \Option-d
- "{PPCLibraries}"StdCLib.xcoff \Option-d
- "{PPCLibraries}"PPCToolLibs.o \Option-d
- "{PPCLibraries}"PPCCRuntime.o \Option-d
- "{GCCPPCLibraries}"libgcc.xcoff
-
-EXTRALIBS_PPC = \Option-d
- "{PPCLibraries}"StdCRuntime.o \Option-d
- "{SharedLibraries}"InterfaceLib \Option-d
- "{SharedLibraries}"MathLib \Option-d
- "{SharedLibraries}"StdCLib \Option-d
- "{PPCLibraries}"PPCToolLibs.o \Option-d
- "{PPCLibraries}"PPCCRuntime.o \Option-d
- "{GCCPPCLibraries}"libgcc.xcoff
-
-EXTRALIBS_MWCPPC = \Option-d
- "{MWPPCLibraries}"MWStdCRuntime.Lib \Option-d
- "{MWPPCLibraries}"InterfaceLib \Option-d
- "{MWPPCLibraries}"StdCLib \Option-d
- "{MWPPCLibraries}"MathLib \Option-d
- "{MWPPCLibraries}"PPCToolLibs.o
-
-# Tool to make PEF with, if needed.
-
-MAKEPEF_NULL = null-command
-
-MAKEPEF_PPC = MakePEF
-
-MAKEPEF_FLAGS = \Option-d
- -l InterfaceLib.xcoff=InterfaceLib \Option-d
- -l MathLib.xcoff=MathLib \Option-d
- -l StdCLib.xcoff=StdCLib
-
-MAKEPEF_TOOL_FLAGS = -ft MPST -fc 'MPS '
-
-# Resource compiler to use.
-
-REZ_68K = Rez
-
-REZ_PPC = Rez -d WANT_CFRG
-
diff --git a/config/mpw/ChangeLog b/config/mpw/ChangeLog
deleted file mode 100644
index 3cdefbf7a75..00000000000
--- a/config/mpw/ChangeLog
+++ /dev/null
@@ -1,53 +0,0 @@
-Tue Nov 26 12:34:12 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * g-mpw-make.sed: Fix some comments.
-
-Mon Sep 16 14:42:52 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * g-mpw-make.sed (HLDENV): Edit out all references.
-
-Thu Aug 15 19:49:23 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * true: New script, identical to mpw-true.
- * g-mpw-make.sed: Add @DASH_C_FLAG@ and @SEGMENT_FLAG()@
- to the editors for compile commands.
-
-Thu Aug 1 15:01:42 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-true, mpw-touch, null-command: New scripts.
- * README: Describe usage in more detail.
-
-Tue Dec 12 14:51:51 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * g-mpw-make.sed: Don't edit out "version=" occurrences.
-
-Fri Dec 1 11:46:18 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * g-mpw-make.sed (bindir, libdir): Edit the positions of
- pathname separators to work with other pathnames better.
-
-Tue Nov 7 15:08:07 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * g-mpw-make.sed: Add comment about Duplicate vs Catenate,
- add additional pattern for editing link-compile commands.
-
-Tue Oct 24 14:28:51 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * g-mpw-make.sed: Add handling for *.tab.[hc] files.
- (CHILL_FOR_TARGET, CHILL_LIB): Edit out tricky definitions
- of these.
-
-Thu Sep 28 21:05:10 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * g-mpw-make.sed: New file, generic sed commands to translate
- Unix makefiles into MPW makefile syntax.
-
-Fri Mar 17 11:51:20 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * README: Clarify instructions.
- * fi: Remove.
-
-Wed Dec 21 15:45:53 1994 Stan Shebs <shebs@andros.cygnus.com>
-
- * MoveIfChange, README, fi, forward-include, open-brace,
- tr-7to8-src: New files.
diff --git a/config/mpw/MoveIfChange b/config/mpw/MoveIfChange
deleted file mode 100644
index 0dbc12582f5..00000000000
--- a/config/mpw/MoveIfChange
+++ /dev/null
@@ -1,19 +0,0 @@
-# Rename a file only if it is different from a previously existing
-# file of the same name. This is useful for keeping make from doing
-# too much work if the contents of a file haven't changed.
-
-# This is an MPW translation of the standard GNU sh script move-if-change.
-
-Set exit 0
-
-If "`exists -f "{2}"`"
- Compare "{1}" "{2}" >dev:null
- If {status} != 0
- Rename -y "{1}" "{2}"
- Else
- Echo "{2}" is unchanged
- Delete -i -y "{1}"
- End
-Else
- Rename -y "{1}" "{2}"
-End
diff --git a/config/mpw/README b/config/mpw/README
deleted file mode 100644
index 554700adc81..00000000000
--- a/config/mpw/README
+++ /dev/null
@@ -1,23 +0,0 @@
-This directory contains MPW scripts and related files that are needed to
-build Cygnus GNU tools for MPW. The scripts should be somewhere on the
-command path; our usual practice has been to have a separate directory
-for the scripts, and put the tools (byacc, flex, and sed at least) there
-also; then it's easier to drag the support bits around as a group, or to
-upgrade MPW versions. The complete package of scripts and tool binaries
-is usually available as pub/mac/buildtools.cpt.hqx on ftp.cygnus.com.
-
-"tr-7to8-src" is actually the source to an MPW script that transforms
-sequences like "\Option-d" into the actual 8-bit chars that MPW needs.
-It's only the source because it can't itself include any 8-bit chars.
-It *can* be processed into a genuine "tr-7to8" by using itself:
-
- tr-7to8 tr-7to8-src | sed -e 's/Src//' >new-tr-7to8
-
-Use this to verify:
-
- compare tr-7to8 new-tr-7to8
-
-If you don't have a working tr-7to8, then you will have to manually
-replace all occurrences of "\Option-d" with real Option-d (which looks
-like a delta), then do similarly with all the other "\Option-..."
-strings, and then change "\SrcOption-d" into the string "\Option-d".
diff --git a/config/mpw/forward-include b/config/mpw/forward-include
deleted file mode 100644
index ddd6bd71105..00000000000
--- a/config/mpw/forward-include
+++ /dev/null
@@ -1,3 +0,0 @@
-Echo '#include' ¶""{1}"¶" >"{2}".tem
-MoveIfChange "{2}".tem "{2}"
-
diff --git a/config/mpw/g-mpw-make.sed b/config/mpw/g-mpw-make.sed
deleted file mode 100644
index e7d3c770736..00000000000
--- a/config/mpw/g-mpw-make.sed
+++ /dev/null
@@ -1,293 +0,0 @@
-# Sed commands to translate Unix makefiles into MPW makefiles.
-# These are nominally generic, but work best on the makefiles used
-# for GNU programs.
-
-# Whack out any commented-out lines that are probably commands;
-# they can only cause trouble later on.
-/^# /d
-
-# Change dependency char.
-/:$/s/:/ \\Option-f/g
-/^[^ :#][^:]*:/s/\([ ]*\):\([ ]*\)/ \\Option-f /g
-
-# Change syntax of Makefile vars.
-/\$/s/\${\([a-zA-Z0-9_-]*\)}/{\1}/g
-/\$/s/\$(\([a-zA-Z0-9_-]*\))/{\1}/g
-/ $@/s/ $@/ {Targ}/
-
-# Double-$ are literals to Unix but not to MPW make.
-/\$\$/s/\$\$/$/g
-
-# Change pathname syntax.
-/\//s,\.\./\/\.\./,:::,g
-/\//s,\.\./,::,g
-/\.\//s,\./,:,g
-/\//s,/,:,g
-# Undo excess changes.
-/and/s,and:or$,and/or,
-/and/s,and:or ,and/or ,
-/want/s,want:need,want/need,
-# Fixing up sed commands.
-/-e/s_":\([^:]*\):d"_"/\1/d"_g
-/-e/s_":\([^:]*\):,:\([^:]*\):d"_"/\1/,/\2/d"_g
-
-/=/s/ = \.$/ = :/
-
-# Make these go away so that later edits not confused.
-/HLDENV/s/{HLDENV}//
-
-# Comment out any explicit srcdir setting.
-/srcdir/s/^srcdir/# srcdir/
-
-/BASEDIR/s/^BASEDIR =.*$/BASEDIR = "{srcroot}"/
-/{BASEDIR}:/s/{BASEDIR}:/{BASEDIR}/g
-/{srcdir}:/s/{srcdir}:/"{srcdir}"/g
-/"{srcdir}":/s/"{srcdir}":/"{srcdir}"/g
-
-# Tweak some conventions that are backwards for the Mac.
-/bindir/s/{exec_prefix}:bin/{exec_prefix}bin:/
-/libdir/s/{exec_prefix}:lib/{exec_prefix}lib:/
-
-# Comment out settings of anything set by mpw host config.
-/CC/s/^CC *=/#CC =/
-/CFLAGS/s/^CFLAGS *=/#CFLAGS =/
-/AR/s/^AR *=/#AR =/
-/AR_FLAGS/s/^AR_FLAGS *=/#AR_FLAGS =/
-/RANLIB/s/^RANLIB *=/#RANLIB =/
-/CC_LD/s/^CC_LD *=/#CC_LD =/
-/LDFLAGS/s/^LDFLAGS *=/#LDFLAGS =/
-
-# Change -I usages.
-/-I/s/-I\./-i :/g
-/-I/s/-I::bfd/-i ::bfd:/g
-/-I/s/-I::include/-i ::include:/g
-/-I/s/-I/-i /g
-
-# Change -D usage.
-/-D/s/\([ =]\)-D\([^ ]*\)/\1-d \2/g
-
-# Change continuation char.
-/\\$/s/\\$/\\Option-d/
-
-# Change wildcard char.
-/\*/s/\*/\\Option-x/g
-
-# Change path of various types of source files. This rule does not allow
-# for file names with multiple dots in the name.
-/\.[chly]/s/\([ ><=]\)\([-a-zA-Z0-9_${}:"]*\)\.\([chly]\)/\1"{s}"\2.\3/g
-/\.[chly]/s/^\([-a-zA-Z0-9_${}:"]*\)\.\([chly]\)/"{s}"\1.\2/
-# Allow files named *.tab.[ch] as a special case.
-/\.tab\.[ch]/s/\([ ><=]\)\([-a-zA-Z0-9_${}:"]*\.tab\)\.\([ch]\)/\1"{s}"\2.\3/g
-/\.tab\.[ch]/s/^\([-a-zA-Z0-9_${}:"]*\.tab\)\.\([ch]\)/"{s}"\1.\2/
-# Fix some overenthusiasms.
-/{s}/s/"{s}""{srcdir}"/"{srcdir}"/g
-/{s}/s/"{s}"{\([a-zA-Z0-9_]*\)dir}/"{\1dir}"/g
-/{s}/s/"{s}"{\([a-zA-Z0-9_]*\)DIR}/"{\1DIR}"/g
-/{s}/s/"{s}""{\([a-zA-Z0-9_]*\)dir}"/"{\1dir}"/g
-/{s}/s/"{s}""{\([a-zA-Z0-9_]*\)DIR}"/"{\1DIR}"/g
-/{s}/s/"{s}":/:/g
-/{s}/s/^"{s}"//g
-/{s}/s/"{s}""{s}"/"{s}"/g
-/{s}/s/"{s}""{srcdir}"/"{s}"/g
-/{s}/s/"{srcdir}""{s}"/"{s}"/g
-
-# The .def files are also typically source files.
-/\.def/s/\([ ><]\)\([-a-zA-Z0-9_${}:"]*\)\.def/\1"{s}"\2.def/g
-/\.def/s/^\([-a-zA-Z0-9_${}:"]*\)\.def/"{s}"\1.def/g
-
-# Change extension and path of objects.
-/\.o/s/\([ =]\)\([-a-zA-Z0-9_${}:"]*\)\.o/\1"{o}"\2.c.o/g
-/\.o/s/^\([-a-zA-Z0-9_${}:"]*\)\.o/"{o}"\1.c.o/
-# Allow *.tab.o files as a special case of a 2-dot-name file.
-/\.o/s/\([ =]\)\([-a-zA-Z0-9_${}:"]*\)\.tab\.o/\1"{o}"\2.tab.c.o/g
-/\.o/s/^\([-a-zA-Z0-9_${}:"]*\)\.tab\.o/"{o}"\1.tab.c.o/
-# Clean up.
-/"{o}"/s/"{o}""{o}"/"{o}"/g
-/"{o}"/s/^"{o}"\([a-zA-Z0-9_]*\)=/\1=/
-
-# Change extension of libs.
-/\.a/s/lib\([a-z]*\)\.a/lib\1.o/g
-
-# Remove non-fail option.
-/-/s/^\([ ]*\)-/\1/
-# Fix overeagernesses - assumes no one-letter commands.
-/^[ ]*[a-z] /s/^\([ ]*\)\([a-z]\) /\1-\2 /
-
-# Remove non-echo option. (watch out for autoconf things)
-/@/s/^\([ ]*\)@/\1/
-
-# Change cp to Duplicate.
-# Catenate is perhaps more accurate, but the pattern would have to
-# identify the output file and add a '>' redirection into it.
-/cp/s/^\([ ]*\)cp /\1Duplicate -d -y /
-# Change mv to Rename.
-/mv/s/^\([ ]*\)mv /\1Rename -y /
-/Rename/s/^\([ ]*\)Rename -y -f/\1Rename -y/
-# Change rm to Delete.
-/rm -rf/s/^\([ ]*\)rm -rf /\1Delete -i -y /
-/rm -f/s/^\([ ]*\)rm -f /\1Delete -i -y /
-/rm/s/^\([ ]*\)rm /\1Delete -i -y /
-# Note that we don't mess with ln - directory-specific scripts
-# must decide what to do with symlinks.
-# Change cat to Catenate.
-/cat/s/^\([ ]*\)cat /\1Catenate /
-# Change touch to mpw-touch.
-/touch/s/^\([ ]*\)touch /\1mpw-touch /
-# Change mkdir to NewFolder.
-/mkdir/s/^\([ ]*\)mkdir /\1NewFolder /
-# Change var setting to Set.
-/=/s/^\([ ]*\)\([-a-zA-Z0-9_]*\)=\([^;]*\); \\Option-d/\1Set \2 \3/
-
-# Change tests.
-/if /s/if \[ *-f \([^ ]*\) ] *; *\\Option-d/If "`Exists "\1"`" != ""/
-/if /s/if \[ *-f \([^ ]*\) ] *; *then *\\Option-d/If "`Exists "\1"`" != ""/
-/if /s/if \[ ! *-f \([^ ]*\) ] *; *\\Option-d/If "`Exists "\1"`" == ""/
-/if /s/if \[ ! *-f \([^ ]*\) ] *; *then \\Option-d/If "`Exists "\1"`" == ""/
-
-/if /s/if \[ *-d \([^ ]*\) ] *; *\\Option-d/If "`Exists "\1"`" != ""/
-/if /s/if \[ *-d \([^ ]*\) ] *; *then *\\Option-d/If "`Exists "\1"`" != ""/
-/if /s/if \[ ! *-d \([^ ]*\) ] *; *\\Option-d/If "`Exists "\1"`" == ""/
-/if /s/if \[ ! *-d \([^ ]*\) ] *; *then *\\Option-d/If "`Exists "\1"`" == ""/
-
-/if /s/if \[ -d \([^ ]*\) ] *; then true *; else mkdir \([^ ;]*\) *; fi/If "`Exists "\1"`" != "" NewFolder \2 End If/
-
-/if /s/if \[ \([^ ]*\) = \([^ ]*\) ] *; *\\Option-d/If "\1" == "\2"/
-/if /s/if \[ \([^ ]*\) = \([^ ]*\) ] *; *then *\\Option-d/If "\1" == "\2"/
-
-/if /s/if \[ \([^ ]*\) != \([^ ]*\) ] *; *\\Option-d/If "\1" != "\2"/
-/if /s/if \[ \([^ ]*\) != \([^ ]*\) ] *; *then *\\Option-d/If "\1" != "\2"/
-
-/if /s/if \[ \([^ ]*\) -eq \([^ ]*\) ] *; *\\Option-d/If "\1" != "\2"/
-/if /s/if \[ \([^ ]*\) -eq \([^ ]*\) ] *; *then *\\Option-d/If "\1" != "\2"/
-
-/^[ ]*else true$/c\
- Else\
- mpw-true\
-
-
-/else/s/^\([ ]*\)else[ ]*$/\1Else/
-/else/s/^\([ ]*\)else[; ]*\\Option-d$/\1Else/
-
-/^[ ]*else[ ]*true[ ]*$/c\
- Else\
- mpw-true
-
-/^[ ]*else[ ]*true[; ]*fi$/c\
- Else\
- mpw-true\
- End If
-
-/fi/s/^\([ ]*\)fi *$/\1End/
-/fi/s/^\([ ]*\)fi *; *\\Option-d/\1End/
-
-# Change looping.
-/for/s/^\([ ]*\)for \([-a-zA-Z0-9_]*\) in \([^;]*\); *do *\\Option-d/\1For \2 In \3/
-/^\([ ]*\)do *\\Option-d/d
-/done/s/^\([ ]*\)done *; *\\Option-d/\1End/
-/done/s/^\([ ]*\)done$/\1End/
-
-# Trailing semicolons and continued lines are unneeded sh syntax.
-/; \\Option-d/s/; \\Option-d//
-
-# Change move-if-change to MoveIfChange.
-/move-if-change/s/\([^ ]*\)move-if-change/MoveIfChange/g
-
-# Change $(SHELL) to the script name by itself.
-/SHELL/s/^\([ ]*\){SHELL} /\1/
-
-# Change syntax of default rule dependency.
-/^\.c\.o/s/^\.c\.o \\Option-f$/.c.o \\Option-f .c/
-
-# Change default rule's action.
-/{CC} -c/s/{CC} -c \(.*\) \$<$/{CC} @DASH_C_FLAG@ {DepDir}{Default}.c \1 @SEGMENT_FLAG({Default})@ -o {TargDir}{Default}.c.o/
-
-# This is pretty disgusting, but I can't seem to detect empty rules.
-/Option-f$/s/Option-f$/Option-f _oldest/g
-
-# Remove -c from explicit compiler calls. (but should not if GCC)
-# Handle the case of a source file that is "{xxx}"file.c.
-/ -c /s/{\([A-Z_]*\)CC}\(.*\) -c \(.*\)"\([^"]*\)"\([-a-z_]*\)\.c/{\1CC}\2 @DASH_C_FLAG@ \3"\4"\5.c -o "{o}"\5.c.o/
-# Handle the case of a source file that is "{xxx}"dir:file.c.
-/ -c /s/{\([A-Z_]*\)CC}\(.*\) -c \(.*\)"\([^"]*\)"\([-a-z_]*\):\([-a-z_]*\)\.c/{\1CC}\2 @DASH_C_FLAG@ \3"\4"\5:\6.c -o "{o}"\6.c.o/
-
-# Change linking cc to linking sequence.
-/-o/s/^\([ ]*\){CC} \(.*\){\([A-Z_]*\)CFLAGS} \(.*\){LDFLAGS} \(.*\)-o \([^ ]*\) \(.*\)$/\1{CC_LD} \2 {\3CFLAGS} \4 {LDFLAGS} \5 -o \6{PROG_EXT} \7\
-\1{MAKEPEF} \6{PROG_EXT} -o \6 {MAKEPEF_TOOL_FLAGS} {MAKEPEF_FLAGS}\
-\1{REZ} "{s}"\6.r -o \6 -append -d PROG_NAME='"'\6'"' -d VERSION_STRING='"'{version}'"'/
-/-o/s/^\([ ]*\){CC} \(.*\){\([A-Z_]*\)CFLAGS} \(.*\)-o \([^ ]*\) \(.*\){LDFLAGS} \(.*\)$/\1{CC_LD} \2 {\3CFLAGS} \4 {LDFLAGS} \6 -o \5{PROG_EXT} \7\
-\1{MAKEPEF} \5{PROG_EXT} -o \5 {MAKEPEF_TOOL_FLAGS} {MAKEPEF_FLAGS}\
-\1{REZ} "{s}"\5.r -o \5 -append -d PROG_NAME='"'\5'"' -d VERSION_STRING='"'{version}'"'/
-/-o/s/^\([ ]*\){HOST_CC} \(.*\)-o \([^ ]*\) \(.*\)$/\1{HOST_CC_LD} \2 -o \3{PROG_EXT} \4\
-\1{MAKEPEF} \3{PROG_EXT} -o \3 {MAKEPEF_TOOL_FLAGS} {MAKEPEF_FLAGS}\
-\1{REZ} "{s}"\3.r -o \3 -append -d PROG_NAME='"'\3'"' -d VERSION_STRING='"'{version}'"'/
-
-# Comment out .NOEXPORT rules.
-/\.NOEXPORT/s/^\.NOEXPORT/#\.NOEXPORT/
-# Comment out .PHONY rules.
-/\.PHONY/s/^\.PHONY/#\.PHONY/
-# Comment out .PRECIOUS rules.
-/\.PRECIOUS/s/^\.PRECIOUS/#\.PRECIOUS/
-# Comment out .SUFFIXES rules.
-/\.SUFFIXES/s/^\.SUFFIXES/#\.SUFFIXES/
-
-# Set the install program appropriately.
-/INSTALL/s/^INSTALL *= *`.*`:install.sh -c/INSTALL = Duplicate -y/
-
-# Don't try to decide whether to use the tree's own tools.
-/bison/s/`.*bison:bison.*`/bison -y/
-/byacc/s/`.*byacc:byacc.*`/byacc/
-/flex/s/`.*flex:flex.*`/flex/
-
-# Turn transformed C comments in echo commands back into comments.
-/echo/s,echo '\(.*\):\\Option-x\(.*\)\\Option-x:\(.*\)',echo '\1/*\2*/\3',
-
-# Whack out various clever expressions that search for tools, since
-# the clever code is too /bin/sh specific.
-
-/^AR_FOR_TARGET = `/,/`$/c\
-AR_FOR_TARGET = ::binutils:ar\
-
-
-/^RANLIB_FOR_TARGET = `/,/`$/c\
-RANLIB_FOR_TARGET = ::binutils:ranlib\
-
-
-/^RANLIB_TEST_FOR_TARGET = /,/ranlib ] )$/c\
-RANLIB_TEST_FOR_TARGET = \
-
-
-/^EXPECT = `/,/`$/c\
-EXPECT = \
-
-
-/^RUNTEST = `/,/`$/c\
-RUNTEST = \
-
-
-/^CC_FOR_TARGET = `/,/`$/c\
-CC_FOR_TARGET = \
-
-
-/^CXX_FOR_TARGET = `/,/`$/c\
-CXX_FOR_TARGET = \
-
-
-/^CHILL_FOR_TARGET = `/,/`$/c\
-CHILL_FOR_TARGET = \
-
-
-/^CHILL_LIB = `/,/`$/c\
-CHILL_LIB = \
-
-/sanit/s/{start-sanit...-[a-z0-9]*}//
-/sanit/s/{end-sanit...-[a-z0-9]*}//
-
-# Add standard defines and default rules.
-/^# srcdir/a\
-\
-s = "{srcdir}"\
-\
-o = :\
-\
-"{o}" \\Option-f : "{s}"
-
diff --git a/config/mpw/mpw-touch b/config/mpw/mpw-touch
deleted file mode 100644
index c743a5122b5..00000000000
--- a/config/mpw/mpw-touch
+++ /dev/null
@@ -1,7 +0,0 @@
-# "Touch" command.
-
-If "`Exists "{1}"`" != ""
- SetFile -m . "{1}"
-Else
- Echo ' ' > "{1}"
-End If
diff --git a/config/mpw/mpw-true b/config/mpw/mpw-true
deleted file mode 100644
index 0506530d3c6..00000000000
--- a/config/mpw/mpw-true
+++ /dev/null
@@ -1 +0,0 @@
-Exit 0
diff --git a/config/mpw/null-command b/config/mpw/null-command
deleted file mode 100644
index 4844c8ec553..00000000000
--- a/config/mpw/null-command
+++ /dev/null
@@ -1 +0,0 @@
-# This command does nothing.
diff --git a/config/mpw/open-brace b/config/mpw/open-brace
deleted file mode 100644
index 58465dcc18c..00000000000
--- a/config/mpw/open-brace
+++ /dev/null
@@ -1,4 +0,0 @@
-# MPW makefiles seem not to have any way to get a literal open
-# brace into a rule anywhere, so this does the job.
-
-Echo '{'
diff --git a/config/mpw/tr-7to8-src b/config/mpw/tr-7to8-src
deleted file mode 100644
index b20b649c895..00000000000
--- a/config/mpw/tr-7to8-src
+++ /dev/null
@@ -1,9 +0,0 @@
-StreamEdit -e \Option-d
- '/\Option-x/ \Option-d
- Replace /\Option-d\SrcOption-d/ "\Option-d\Option-d" -c \Option-5 ; \Option-d
- Replace /\Option-d\SrcOption-f/ "\Option-d\Option-f" -c \Option-5 ; \Option-d
- Replace /\Option-d\SrcOption-8/ "\Option-d\Option-8" -c \Option-5 ; \Option-d
- Replace /\Option-d\SrcOption-5/ "\Option-d\Option-5" -c \Option-5 ; \Option-d
- Replace /\Option-d\SrcOption-x/ "\Option-d\Option-x" -c \Option-5 ; \Option-d
- Replace /\Option-d\SrcOption-r/ "\Option-d\Option-r" -c \Option-5' \Option-d
- "{1}"
diff --git a/config/mpw/true b/config/mpw/true
deleted file mode 100644
index 0506530d3c6..00000000000
--- a/config/mpw/true
+++ /dev/null
@@ -1 +0,0 @@
-Exit 0
diff --git a/fastjar/ChangeLog b/fastjar/ChangeLog
index 9ca8ac821a8..db86fb37923 100644
--- a/fastjar/ChangeLog
+++ b/fastjar/ChangeLog
@@ -1,3 +1,23 @@
+2002-11-21 Ranjit Mathew <rmathew@hotmail.com>
+
+ * jartool.c (extract_jar): Use "open" with O_BINARY instead of
+ "creat" to create extracted files.
+
+2002-11-11 Tom Tromey <tromey@redhat.com>
+
+ * dostime.c (dos2unixtime): Mask for seconds is 0x1f. Correctly
+ compute month.
+ (unix2dostime): Handle years before 1980. Correctly compute month
+ and day of month.
+
+2002-11-10 Jakub Jelinek <jakub@redhat.com>
+
+ * jartool.c (add_to_jar): Only compare file to jarfile if jarfile is
+ non-NULL.
+
+ * configure.in (AC_CHECK_HEADERS): Add limits.h.
+ * configure, config.h.in: Rebuilt.
+
2002-11-07 Tom Tromey <tromey@redhat.com>
* dostime.c: Rewrote from scratch.
diff --git a/fastjar/config.h.in b/fastjar/config.h.in
index ae4fb96c5cb..05d0c6ec1f5 100644
--- a/fastjar/config.h.in
+++ b/fastjar/config.h.in
@@ -21,6 +21,9 @@
/* Define if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
+/* Define if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
+
/* Define if you have the <sys/dir.h> header file. */
#undef HAVE_SYS_DIR_H
diff --git a/fastjar/configure b/fastjar/configure
index 719d3e32b05..4cc1b926a70 100755
--- a/fastjar/configure
+++ b/fastjar/configure
@@ -1691,7 +1691,7 @@ EOF
fi
-for ac_hdr in fcntl.h unistd.h sys/param.h stdlib.h
+for ac_hdr in fcntl.h unistd.h sys/param.h stdlib.h limits.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
diff --git a/fastjar/configure.in b/fastjar/configure.in
index c2e686e0f8c..a1e4676a7dc 100644
--- a/fastjar/configure.in
+++ b/fastjar/configure.in
@@ -24,7 +24,7 @@ dnl Checks for header files.
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_STRUCT_TM
-AC_CHECK_HEADERS(fcntl.h unistd.h sys/param.h stdlib.h)
+AC_CHECK_HEADERS(fcntl.h unistd.h sys/param.h stdlib.h limits.h)
dnl Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_OFF_T
diff --git a/fastjar/dostime.c b/fastjar/dostime.c
index b3c76e52202..5117a82014e 100644
--- a/fastjar/dostime.c
+++ b/fastjar/dostime.c
@@ -49,11 +49,11 @@ dos2unixtime (unsigned long dostime)
ltime = *localtime (&now);
ltime.tm_year = (dostime >> 25) + 80;
- ltime.tm_mon = 1 + ((dostime >> 21) & 0x0f);
+ ltime.tm_mon = ((dostime >> 21) & 0x0f) - 1;
ltime.tm_mday = (dostime >> 16) & 0x1f;
ltime.tm_hour = (dostime >> 11) & 0x0f;
ltime.tm_min = (dostime >> 5) & 0x3f;
- ltime.tm_sec = (dostime & 0x0f) << 1;
+ ltime.tm_sec = (dostime & 0x1f) << 1;
ltime.tm_wday = -1;
ltime.tm_yday = -1;
@@ -66,10 +66,13 @@ unsigned long
unix2dostime (time_t *time)
{
struct tm *ltime = localtime (time);
+ int year = ltime->tm_year - 80;
+ if (year < 0)
+ year = 0;
- return ((ltime->tm_year - 80) << 25
- | ltime->tm_mon << 21
- | (ltime->tm_mday - 1) << 16
+ return (year << 25
+ | (ltime->tm_mon + 1) << 21
+ | ltime->tm_mday << 16
| ltime->tm_hour << 11
| ltime->tm_min << 5
| ltime->tm_sec >> 1);
diff --git a/fastjar/jartool.c b/fastjar/jartool.c
index 3048ee9c213..7cc06aaad5b 100644
--- a/fastjar/jartool.c
+++ b/fastjar/jartool.c
@@ -843,7 +843,7 @@ int add_to_jar(int fd, const char *new_dir, const char *file){
}
}
- if(!strcmp(file, jarfile)){
+ if(jarfile && !strcmp(file, jarfile)){
if(verbose)
printf("skipping: %s\n", file);
return 0; /* we don't want to add ourselves.. */
@@ -924,7 +924,8 @@ int add_to_jar(int fd, const char *new_dir, const char *file){
while(!use_explicit_list_only && (de = readdir(dir)) != NULL){
if(de->d_name[0] == '.')
continue;
- if(!strcmp(de->d_name, jarfile)){ /* we don't want to add ourselves. Believe me */
+ if(jarfile && !strcmp(de->d_name, jarfile)){
+ /* we don't want to add ourselves. Believe me */
if(verbose)
printf("skipping: %s\n", de->d_name);
continue;
@@ -1454,7 +1455,8 @@ int extract_jar(int fd, char **files, int file_num){
}
if(f_fd != -1 && handle){
- f_fd = creat((const char *)filename, 00644);
+ f_fd = open((const char *)filename,
+ O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0644);
if(f_fd < 0){
fprintf(stderr, "Error extracting JAR archive!\n");
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7558b58ec86..d1bf7077be6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -453,6 +453,594 @@
(dwarf2out_init): Don't call ggc_add_root.
*** End of unmerged pch-branch ChangeLog ***
+2002-11-24 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config/netbsd-elf.h (STARTFILE_SPEC): Rename to
+ NETBSD_STARTFILE_SPEC.
+ (STARTFILE_SPEC): Redefine in terms of NETBSD_STARTFILE_SPEC.
+ (ENDFILE_SPEC): Likewise.
+ * config/netbsd.h (LIB_SPEC, LIBGCC_SPEC): Likewise.
+
+2002-11-24 Andreas Schwab <schwab@suse.de>
+
+ * Makefile.in (install-driver): Remove versioned link before
+ trying to create it.
+
+ * config/m68k/m68k.c: Fix typo in last change defining
+ TARGET_ASM_CAN_OUTPUT_MI_THUNK.
+
+2002-11-23 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/h8300.c (print_operand): Update the use of
+ h8300_tiny_constant_address_p.
+ (h8300_adjust_insn_length): Likewise.
+ (h8300_tiny_constant_address_p): Check if the given rtx is a
+ variable declared with __attribute__ ((tiny_data)).
+
+2002-11-22 Dale Johannesen <dalej@apple.com>
+
+ * toplev.c (rest_of_compilation): Fix comments.
+
+2002-11-22 Geoffrey Keating <geoffk@apple.com>
+
+ * aclocal.m4 (ac_cv_func_mmap_dev_zero): Darwin does not
+ allow mmap from /dev/zero. Don't make decisions for the host
+ based on presence or absence of /dev/zero on the build machine.
+ (ac_cv_func_mmap_anon): Darwin does have working MMAP_ANON.
+ (AC_FUNC_MMAP_FILE): Darwin does have mmap of a file.
+ * configure: Regenerate.
+
+2002-11-22 Daniel Jacobowitz <drow@mvista.com>
+
+ * gcc.c (make_relative_prefix, split_directories)
+ (free_split_directories): Removed.
+
+2002-11-22 Daniel Jacobowitz <drow@mvista.com>
+
+ * configure.in: Set insn=nop for DWARF-2 tests on ARM.
+ * configure: Regenerated.
+
+2002-11-22 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/h8300.c (compute_a_shift_length): Fix the insn
+ length computation when xor.l is output.
+
+2002-11-21 Jim Wilson <wilson@redhat.com>
+
+ * config/rs6000/rs6000.c (function_arg): Set inner mode of SPE
+ vectors to SI.
+
+2002-11-21 Bob Wilson <bob.wilson@acm.org>
+
+ * config/xtensa/xtensa-protos.h (xtensa_copy_incoming_a7): Declare.
+ * config/xtensa/xtensa.c (struct machine_function): Add
+ incoming_a7_copied flag.
+ (xtensa_copy_incoming_a7): Define.
+ (xtensa_emit_move_sequence): Use xtensa_copy_incoming_a7.
+ * config/xtensa/xtensa.md (movdi, movsf, movdf): Ditto.
+
+Thu Nov 21 23:52:04 CET 2002 Jan Hubicka <jH@suse.cz>
+
+ * i386-protos.h (x86_64_sign_extended_value): Fix prototype.
+ * i386.c (x86_64_general_operand, x86_64_szext_general_operand,
+ x86_64_nonmemory_operand, x86_64_movabs_operand,
+ x86_64_szext_nonmemory_operand, x86_64_immediate_operand,
+ ix86_expand_int_movcc): Update call of x86_64_sign_extended_value.
+ (local_symbolic_operand): Do not care the 64bit limits.
+ (x86_64_sign_extended_value): Remove allow_rip support.
+ (legitimate_pic_address_disp_p): Handle all cases allowed
+ with RIP addressing.
+ (legitimate_address_p): Use legitimate_pic_address_disp_p for PIC.
+ (legitimize_pic_address): Reorganize.
+ * i386.h (EXTRA_CONSTRAINT): Update call of x86_64_sign_extended_value.
+
+2002-11-21 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config.gcc (arm*-*-netbsdelf*): Enable configuration.
+ * config/arm/netbsd-elf.h: New file.
+
+2002-11-21 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
+ subtarget_asm_float_spec.
+ (SUBTARGET_ASM_FLOAT_SPEC): Define, moving the
+ defaults from...
+ (ASM_SPEC): ...here. Use subtarget_asm_float_spec.
+
+2002-11-21 Nick Clifton <nickc@redhat.com>
+
+ * config/fr30/fr30.md (movsf_constant_store): Move code to
+ detect 0.0 into fr30.c.
+ * config/fr30/fr30-protos.h (fr30_const_double_is_zero):
+ Prototype.
+ * config/fr30/fr30.c (fr30_const_double_is_zero): New
+ function. Return true if the rtx is 0.0.
+
+2002-11-21 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config/arm/elf.h (ASM_SPEC, LINK_SPEC): Pass -EL
+ if -mlittle-endian is specified.
+
+2002-11-21 Richard Earnshaw <rearnsha@arm.com>
+
+ PR optimization/2903
+ * arm.md (anddi_notzesidi_di): Operand 2 is inverted not operand 1.
+ (anddi_notsesidi_di): Likewise.
+
+2002-11-21 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/h8300.c (print_operand): Use
+ h8300_eightbit_constant_address_p and
+ h8300_tiny_constant_address_p.
+ (h8300_adjust_insn_length): Likewise.
+ * config/h8300/h8300.h (EIGHTBIT_CONSTANT_ADDRESS_P): Remove.
+ (TINY_CONSTANT_ADDRESS_P): Likewise.
+ (OK_FOR_U): Use eightbit_constant_address_p.
+
+2002-11-21 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/libgcc-libc.ver: Add multilib support.
+ * config/s390/linux.h (MULTILIB_DEFAULT): Define.
+ * config/s390/t-linux64 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
+ MULTILIB_OSDIRNAMES, LIBGCC, INSTALL_LIBGCC,
+ EXTRA_MULTILIB_PARTS): Define.
+
+2002-11-21 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm.c (arm_get_frame_size): A leaf function does not need its
+ stack padding to an aligned boundary if it has no frame.
+ (thumb_get_frame_size): Likewise.
+
+2002-11-20 Steve Ellcey <sje@cup.hp.com>
+
+ * emit-rtl.c (gen_reg_rtx): Simplify mapping of Complex type
+ to component type using GET_MODE_INNER.
+ * expr.c (emit_move_insn_1): Ditto.
+ * optabs.c (expand_binop): Ditto.
+ (expand_unop): Ditto.
+ (expand_complex_abs): Ditto.
+
+2002-11-20 Douglas B Rupp <rupp@gnat.com>
+
+ * hwint.h (HAVE___INT64): Fix typo (was HAVE__INT64).
+
+2002-11-20 DJ Delorie <dj@redhat.com>
+
+ * config/stormy16/stormy16.c (s16builtins,
+ xstormy16_init_builtins, xstormy16_expand_builtin): New.
+ * config/stormy16/stormy16.md (divmodhi4, sdivlh, udivlh): New.
+
+2002-11-20 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * Makefile.in (RUN_GEN, VALGRIND_DRIVER_DEFINES): New variables.
+ (DRIVER_DEFINES): Add $(VALGRIND_DRIVER_DEFINES).
+ (executing gencheck, genconfigs, genconditions, genflags,
+ gencodes, genconstants, genemit, genrecog, genopinit, genextract,
+ genpeep, genattr, genattrtab, genoutput, gengenrtl, genpreds,
+ gengtype, genprotos): Prepend $(RUN_GEN).
+ * configure.in: Move host compiler tests before --enable-checking
+ tests.
+ (--enable-checking=valgrind): New.
+ * config.in, configure: Regenerate.
+ * cppfiles.c [!ENABLE_VALGRIND_CHECKING] (VALGRIND_DISCARD):
+ Define as empty.
+ (read_include_file): When doing the mmap+1 trick,
+ valgrind-annotate the byte after the mmap:ed area as readable.
+ (purge_cache): Remove above annotation.
+ * gcc.c (execute) [ENABLE_VALGRIND_CHECKING]: Arrange to prepend
+ VALGRIND_PATH -q to each command.
+
+ * ggc-common.c [!ENABLE_VALGRIND_CHECKING] (VALGRIND_DISCARD):
+ Define as empty.
+ (ggc_realloc): Update valgrind annotations.
+ * ggc-page.c [!ENABLE_VALGRIND_CHECKING] (VALGRIND_DISCARD):
+ Define as empty.
+ (alloc_anon, free_page, ggc_alloc, poison_pages): Add machinery to
+ valgrind-annotate memory.
+
+2002-11-20 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * recog.c (constrain_operands): Prefer exact match over reloadable
+ EXTRA_MEMORY_CONSTRAINT or EXTRA_ADDRESS_CONSTRAINT.
+
+ * reload.c (find_reloads): Always reload EXTRA_ADDRESS_CONSTRAINT
+ operands in Pmode.
+
+2002-11-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+ PR c/8518
+ * c-decl.c (duplicate_decls): Outline the second definition
+ of an extern inline function in all cases.
+
+2002-11-20 Richard Sandiford <rsandifo@redhat.com>
+
+ * stor-layout.c (place_field): Update rli->offset as well as
+ rli->bitpos.
+
+2002-11-20 Richard Sandiford <rsandifo@redhat.com>
+
+ * sched-deps.c (sched_analyze): Check HARD_REGNO_CALL_PART_CLOBBERED.
+
+2002-11-20 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/sh/sh.md (udivsi3): Don't put udivsi3_i4_media instructions
+ into a libcall block.
+ (divsi3): Likewise divsi3_i4_media.
+
+2002-11-20 Richard Sandiford <rsandifo@redhat.com>
+
+ * global.c (find_reg): Check HARD_REGNO_NREGS before kicking
+ out another register.
+
+2002-11-20 Jakub Jelinek <jakub@redhat.com>
+
+ * combine.c (force_to_mode): Only replace with (not Y) if all bits in fuller_mask
+ (not just mask) are set in C.
+
+2002-11-19 Andreas Jaeger <aj@suse.de>
+
+ * loop.c (record_giv): Initialize not_replaceable.
+ (check_final_value): Likewise.
+
+2002-11-19 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/h8300.c (h8300_init_once): Replace 1 with
+ MASK_H8300S.
+
+2002-11-19 Vijay L. Khuspe <vijayk1@kpit.com>
+
+ * config/h8300/h8300.c (h8300_init_once): Allow -mn switch
+ only if -mh or -ms present.
+ (h8300_eightbit_constant_address_p): Support the normal mode.
+ (h8300_tiny_constant_address_p): Likewise.
+ * config/h8300/h8300.h (TARGET_NORMAL_MODE): New.
+ (POINTER_SIZE): Add 16 bit pointer for the normal mode.
+ (Pmode): Evaluate to HImode for the normal mode.
+ (SIZE_TYPE): Evaluate to unsigned int for normal mode.
+ (PTRDIFF_TYPE): Evaluate to int for the normal mode.
+ (ASM_WORD_OP): Evaluate to word for the normal mode.
+ * config/h8300/h8300.md (tablejump_normal_mode): New.
+ (indirect_jump_normal_mode): New.
+ * config/h8300/t-h8300 (MULTILIB_OPTIONS): Pass -mn option to
+ directory.
+ (MULTILIB_DIRNAMES): Create target dependent directory
+ 'normal'.
+ (MULTILIB_EXCEPTIONS): Don't turn on -mn on H8/300.
+ * doc/invoke.texi (gccoptlist): Describe the new switch -mn.
+
+Tue Nov 19 23:50:56 CET 2002 Jan Hubicka <jh@suse.cz>
+
+ * i386.md (length_immediate): Do not refer to insn address.
+ (jcc*, jmp patterns): Compute length explicitly.
+
+2002-11-19 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR c/8588
+ * optabs.c (expand_binop): Convert CONST_INTs in shift
+ operations too.
+
+2002-11-19 Roger Sayle <roger@eyesopen.com>
+
+ * gcse.c (gcse_emit_move_after): Correct typo in REG_EQUAL note.
+
+2002-11-19 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/h8300.md (an anonymous pattern): Relax the
+ condition to accept the same operands and/or subregs.
+
+2002-11-19 Daniel Jacobowitz <drow@mvista.com>
+
+ * config/sh/sh.c (gen_shl_and): Revert previous patch.
+ * config/sh/sh.md (ashrdi3+1, ashrdi3+2): Predicate on
+ reload_completed.
+
+2002-11-19 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/h8300.c (print_operand): Update the use of
+ EIGHTBIT_CONSTANT_ADDRESS_P.
+ (h8300_adjust_insn_length): Likewise.
+ (h8300_eightbit_constant_address_p): Check if the given rtx is
+ a variable with __attribute__((eightbit_data)).
+ * config/h8300/h8300.h (OK_FOR_U): Update the use of
+ EIGHTBIT_CONSTANT_ADDRESS_P.
+
+2002-11-19 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * doc/contrib.texi (Contributors): Add self as second contact in
+ addition to Jeff Law.
+
+2002-11-19 Andreas Jaeger <aj@suse.de>
+
+ * tree-inline.c: Move prototpyes of find_alloca_call_1 and
+ find_alloca_call to right place.
+
+2002-11-19 Kazu Hirata <kazu@cs.umass.edu>
+
+ * cppfiles.c: Fix formatting.
+
+2002-11-19 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * gcc.c (The Specs Language): Document spec functions.
+ (static_spec_functions, lookup_spec_function)
+ (eval_spec_function, handle_spec_function)
+ (if_exists_spec_function, alloc_args): New.
+ (execute): Abort if processing_spec_function is true.
+ (do_spec_1): Hand off spec to handle_spec_function if %:
+ is encountered. If processing_spec_function is true,
+ end any pending argument when the end of the string is reached.
+ (main): Use alloc_args to allocate the initial argument vector.
+ * gcc.h (struct spec_function): New.
+ (lang_specific_spec_functions): New extern.
+
+ * config/netbsd-elf.h (STARTFILE_SPEC): Add if-exists(crti%O%s).
+ (ENDFILE_SPEC): Add if-exists(crtn%O%s).
+ * config/alpha/netbsd.h (ENDFILE_SPEC): Likewise.
+
+ * doc/invoke.texi: Document spec functions.
+
+ * cppspec.c (lang_specific_spec_functions): New.
+ * gccspec.c: Likewise.
+
+2002-11-18 Steve Ellcey <sje@cup.hp.com>
+
+ * config/ia64/hpux_longdouble.h (FIXUNS_TRUNCTFSI2_LIBCALL): New.
+ (FIXUNS_TRUNCTFDI2_LIBCALL): New.
+ (fixunstfsi_libfunc): Change.
+ (fixunstfdi_libfunc): Change.
+ (sdiv_optab): Don't zero out SImode handler.
+ (udiv_optab): Don't zero out SImode handler.
+ (smod_optab): Don't zero out SImode handler.
+ (umod_optab): Don't zero out SImode handler.
+
+2002-11-18 Neil Booth <neil@daikokuya.co.uk>
+
+ PR preprocessor/8524
+ * cpplib.c (run_directive): Remove previous kludge to _Pragma.
+ Add a new one in its place, which hopefully works.
+ (skip_rest_of_line): Change test for bottom-of-context-stack.
+
+Mon Nov 18 21:29:03 CET 2002 Jan Hubicka <jh@suse.cz>
+
+ * i386.md (addqi_1_slp): Fix output template.
+ (subqi_1_slp): Fix type.
+
+Sun Nov 17 00:01:28 CET 2002 Jan Hubicka <jh@suse.cz>
+
+ * calls.c (alloca_call_p): New global function.
+ * tree.h (alloca_call_p): New.
+ * tree-inline.c (inlinable_function_p): Do not inline when
+ function calls alloca.
+ (find_alloca_call, find_alloca_call_1): New functions.
+
+2002-11-18 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/h8300.md (*andorqi3): Use bor between bld and
+ bst. Update the insn length.
+ (*andorhi3): Likewise.
+ (*andorsi3): Likewise.
+
+2002-11-18 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/sh/sh-protos.h (sh_mark_label): Declare.
+ * config/sh/sh.c (sh_mark_label): New function, taken from
+ movdi_const, but fixing the case when the address has an addend.
+ * config/sh/sh.md (movdi_const, movdi_const_32bit): Use it.
+
+2002-11-18 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/sh/sh.c (pool_node): New field: part_of_sequence_p.
+ (add_constant): Set it.
+ (dump_table): Don't reorder a constant if part_of_sequence_p.
+ (machine_dependent_reorg): Assume that float constants will
+ stay in their original order if used as a sequence.
+
+2002-11-18 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/sh/sh.c (calc_live_regs): Update check for PIC liveness
+ in compact code.
+
+2002-11-18 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/sh/sh.md (initialize_trampoline): Do not force the
+ trampoline address into R0_REGS here.
+
+2002-11-17 Kazu Hirata <kazu@cs.umass.edu>
+
+ * df.c: Fix formatting.
+
+2002-11-17 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/h8300.md (two anonymous patterns): Fix insn
+ lengths.
+
+2002-11-17 Daniel Jacobowitz <drow@mvista.com>
+
+ * sh.c (gen_shl_and): Don't create a zero_extend if the operand
+ is not an arith_reg_operand.
+
+2002-11-17 Graham Stott <graham.stott@btinternet.com>
+
+ * real.c (real_to_decimal): Fix buffer overrun when buffer size
+ is smaller than representation.
+
+2002-11-17 Kazu Hirata <kazu@cs.umass.edu>
+
+ * builtins.c: Fix formatting.
+
+2002-11-16 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/h8300.md (two anonymous patterns): Fix typos.
+
+2002-11-16 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/h8300.md: Fix formatting.
+
+2002-11-16 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/h8300.md: Replace spaces with tabs.
+ * config/h8300/t-h8300: Remove a trailing empty line.
+
+2002-11-16 Kazu Hirata <kazu@cs.umass.edu>
+
+ * tlink.c: Fix formatting.
+
+2002-11-16 David Edelsohn <edelsohn@gnu.org>
+
+ PR 8362
+ * config/rs6000/rs6000.c (rs6000_outout_load_multiple): New function.
+ * config/rs6000/rs6000.md (movti_string): Remove output modifier
+ when scratch register never needed.
+ (ldmsi[3-8]): New patterns.
+
+2002-11-16 Kazu Hirata <kazu@cs.umass.edu>
+
+ * hard-reg-set.h: Follow spelling conventions.
+ * real.c: Likewise.
+ * target.h: Likewise.
+
+2002-11-16 Jakub Jelinek <jakub@redhat.com>
+
+ * config/i386/x86-64.h (MCOUNT_NAME): Change into string literal.
+
+2002-11-16 Kazu Hirata <kazu@cs.umass.edu>
+
+ * optabs.c: Fix formatting.
+
+Sat Nov 16 02:06:02 CET 2002 Jan Hubicka <jh@suse.cz>
+
+ * athlon.md, k6.md, pentium.md, ppro.md: Handle shift1, rotate1
+ * i386.md (attribute type): Add type shift1 and rotate1.
+ (*_slp): Rewrite to have just two operands to avoid reload problems.
+
+2002-11-15 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/h8300.md (4 anonymous patterns): New.
+
+2002-11-15 Geoffrey Keating <geoffk@apple.com>
+
+ * params.def (GGC_MIN_HEAPSIZE): Fix GGC_ALWAYS_COLLECT problem.
+ * doc/invoke.texi: Correct description of what needs to be done to
+ force collection at every ggc_collect call.
+
+2002-11-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/s390.c (optimization_options): Set
+ flag_asynchronous_unwind_tables to 1 by default.
+
+2002-11-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/s390.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
+
+Fri Nov 15 14:54:19 CET 2002 Jan Hubicka <jh@suse.cz>
+
+ * i386-protos.h (x86_function_profiler): New function
+ * i386.h (MCOUNT_NAME): New.
+ (PROFILE_COUNT_REGISTER): New.
+ (FUNCTION_PROFILER): Move offline to ...
+ * i386.c (x86_function_profiler) ... here; fix 64bit support
+ * beos-elf.h (FUNCTION_PROFILER): Kill.
+ (MCOUNT_NAME): New.
+ * freebsd-aout.h (FUNCTION_PROFILER): Kill.
+ (MCOUNT_NAME): New.
+ (PROFILE_COUNT_REGISTER): New.
+ * linux.h (FUNCTION_PROFILER): Kill.
+ (MCOUNT_NAME): New.
+ * x86-64.h (FUNCTION_PROFILER): Kill.
+ (MCOUNT_NAME): New.
+ * freebsd.h (FUNCTION_PROFILER): Kill.
+ (MCOUNT_NAME): New.
+
+2002-11-14 Jeroen Dobbelaere <jeroen.dobbelaere@acunia.com>
+
+ * config/arm/arm.h (EXPAND_BUILTIN_VA_ARG,
+ FUNCTION_ARG_PASS_BY_REFERENCE): Define.
+ * config/arm/arm.c (arm_va_arg,
+ arm_function_arg_pass_by_reference): New.
+ * config/arm/arm-protos.h: Add prototypes.
+
+2002-11-14 Kazu Hirata <kazu@cs.umass.edu>
+
+ * gthr-single.h: Fix formatting.
+
+2002-11-14 Zack Weinberg <zack@codesourcery.com>
+
+ * tree.c (tree_vec_elt_check_failed): New function.
+ * tree.h (TREE_VEC_ELT_CHECK): New checking macro.
+ (TREE_VEC_ELT): Use it.
+
+ * tree-inline.c (optimize_inline_calls): Don't copy a
+ zero-length vector.
+
+2002-11-14 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ * diagnostic.c (sorry): Don't repeat "sorry, unimplemented" text.
+
+2002-11-14 Jakub Jelinek <jakub@redhat.com>
+
+ * varasm.c (output_addressed_constants) [MINUS_EXPR]: Clear reloc if
+ both operands contain local relocations.
+ (categorize_decl_for_section): Don't use mergeable sections if
+ initializer has any relocations.
+
+2002-11-14 Kazu Hirata <kazu@cs.umass.edu>
+
+ * gthr-vxworks.h: Fix formatting.
+
+2002-11-13 Janis Johnson <janis187@us.ibm.com>
+
+ * doc/install.texi (Testing): Document extra Java testing.
+ * doc/sourcebuild.texi (Test Suites): Document libgcj testing.
+
+2002-11-13 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * pa64-hpux.h (LINK_SPEC): Move "+Accept TypeMismatch" switch to the
+ beginning of the spec.
+ (LDD_SUFFIX, PARSE_LDD_OUTPUT): Delete.
+ (LD_INIT_SWITCH, LD_FINI_SWITCH): Define but don't enable. Add comment
+ regarding problems with global constructors when using GNU ld.
+
+2002-11-13 Kazu Hirata <kazu@cs.umass.edu>
+
+ * gthr-solaris.h: Fix formatting.
+
+2002-11-13 Kazu Hirata <kazu@cs.umass.edu>
+
+ * gthr-posix.h: Fix formatting.
+
+2002-11-12 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/h8300.md (*andorsi3): New.
+
+2002-11-12 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
+
+ * doc/install.texi (powerpc-*-linux-gnu*): Update binutils requirement.
+
+2002-11-12 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/h8300.c (tiny_constant_address_p): Parenthesize
+ expressions appropriately.
+
+2002-11-12 Kazu Hirata <kazu@cs.umass.edu>
+
+ * gthr-win32.h: Fix formatting.
+
+2002-11-12 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/h8300.c (single_one_operand): Correctly compute
+ mask when mode is SImode.
+ (single_zero_operand): Likewise.
+ * config/h8300/h8300.md (two new anonymous insns): New.
+
+2002-11-12 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * doc/contrib.texi (Contributors): Use GCJ instead of gcj to refer
+ to that entire project.
+
+2002-11-12 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * config/mips/t-iris6 (MULTILIB_OSDIRNAMES): Restore old
+ directories.
+
2002-11-11 Zack Weinberg <zack@codesourcery.com>
* params.def (ggc-min-expand, ggc-min-heapsize): New parameters.
@@ -469,9 +1057,115 @@
* Makefile.in (ggc-common.o, ggc-simple.o): Add $(PARAMS_H) to
dependencies.
+2002-11-11 Kazu Hirata <kazu@cs.umass.edu>
+
+ * gthr-dce.h: Fix formatting.
+
+2002-11-11 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
+
+ PR c/8467
+ * stmt.c (tail_recursion_args): Handle DECL_MODE differing from the
+ mode of DECL_RTL case.
+
+2002-11-11 Janis Johnson <janis187@us.ibm.com>
+
+ * doc/contrib.texi: Merge in the list from the libstdc++ web pages.
+
+Mon Nov 11 12:06:08 CET 2002 Jan Hubicka <jh@suse.cz>
+
+ * i386.c (construct_container): Fix handling of SSE_CLASS.
+
+2002-11-10 Joel Sherrill <joel@gcc.gnu.org>
+
+ * config/m68k/t-crtstuff (crti.o): Use this...
+ ($(T)crti.o): ... instead.
+ (crtn.o): Use this...
+ ($(T)crtn.o): ... instead.
+
+2002-11-09 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR c/8439
+ * recog.c (validate_replace_rtx_1) [PLUS]: Simplify only
+ if there is something new to be simplified.
+
+2002-11-10 H.J. Lu <hjl@gnu.org>
+
+ * calls.c (PUSH_ARGS_REVERSED): Define only if not defined.
+ * expr.c (PUSH_ARGS_REVERSED): Likewise.
+
+ * config/i386/i386.h (PUSH_ARGS_REVERSED): Set to 1.
+
+2002-11-10 Zack Weinberg <zack@codesourcery.com>
+
+ * config/rs6000/sysv4.h: Define NO_IMPLICIT_EXTERN_C here...
+ * config/rs6000/linux.h, config/rs6000/linux64.h,
+ config/rs6000/windiss.h: ... not here.
+
+2002-11-10 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config/mips/netbsd.h (TARGET_OS_CPP_BUILTINS): Define
+ __ABICALLS__ if TARGET_ABICALLS.
+
+Sun Nov 10 18:49:21 CET 2002 Jan Hubicka <jh@suse.cz>
+
+ * i386.h (MIN_UNITS_PER_WORD): Define to 8 for x86-64 libgcc.
+
+2002-11-10 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * c-decl.c (grokdeclarator): Make error for duplicate type
+ qualifiers into a pedwarn, disabled for C99.
+
+2002-11-10 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * config/mmix/mmix.h (FUNCTION_ARG_CALLEE_COPIES): Define the same
+ as FUNCTION_ARG_PASS_BY_REFERENCE.
+
+2002-11-09 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * pa.h (STARTING_FRAME_OFFSET): Change offset for TARGET_64BIT to 16.
+
+ * config.gcc (hppa*64*-*-linux*): Shorten lines in tm_file define.
+ (hppa*64*-*-hpux11*): Likewise. Use elfos.h with gas.
+ * pa.c (output_millicode_call): Use symbol difference rather than
+ $PIC_pcrel$0 when using HP assembler.
+ * pa64-hpux.h (TARGET_GAS): Define to 1 or 0 depending on whether or
+ not elfos.h (i.e., gas) is being used.
+ (ASM_FILE_START, STRING_ASM_OP, TEXT_SECTION_ASM_OP,
+ DATA_SECTION_ASM_OP, BSS_SECTION_ASM_OP, ASM_OUTPUT_ALIGNED_COMMON,
+ ASM_OUTPUT_ALIGNED_LOCAL, GLOBAL_ASM_OP, ASM_DECLARE_FUNCTION_NAME,
+ ASM_OUTPUT_EXTERNAL, ASM_OUTPUT_EXTERNAL_LIBCALL,
+ ASM_OUTPUT_INTERNAL_LABEL, ASM_GENERATE_INTERNAL_LABEL): Define when
+ using elfos.h.
+ (TARGET_ASM_GLOBALIZE_LABEL): Undefine when using elfos.h.
+ (DWARF2_ASM_LINE_DEBUG_INFO): Delete.
+ (ASM_FILE_START): Add standard .SPACE and .SUBSPA defines when not
+ using elfos.h.
+ (TEXT_SECTION_ASM_OP, READONLY_DATA_SECTION_ASM_OP, DATA_SECTION_ASM_OP,
+ BSS_SECTION_ASM_OP): New HP style defines when not using elfos.h.
+ (TARGET_ASM_NAMED_SECTION, MAKE_DECL_ONE_ONLY, ASM_WEAKEN_LABEL):
+ Don't define when not using elfos.h.
+ (ASM_DECLARE_RESULT): Don't define.
+ * doc/install.texi (hppa*-hp-hpux*): Remove statement that HP assembler
+ doesn't work on hppa64-hp-hpux11.
+ (hppa*-hp-hpux11): Update.
+
+2002-11-09 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * config/mips/netbsd.h (SUBTARGET_ASM_SPEC): Don't pass -KPIC
+ to the assembler if -mno-abicalls was specified.
+
+2002-11-09 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * pa-linux.h (PREFERRED_DEBUGGING_TYPE, DWARF2_ASM_LINE_DEBUG_INFO,
+ ASM_OUTPUT_DEF): Delete.
+
+2002-11-09 Neil Booth <neil@daikokuya.co.uk>
+
+ * c-opts.c (COMMAND_LINE_OPTIONS): Fix -Wimplicit.
+
2002-11-08 Dale Johannesen <dalej@apple.com>
- * dbxout.c (dbxout_type): Fix stabs info for vector types.
+ * dbxout.c (dbxout_type): Fix stabs info for vector types.
2002-11-08 Neil Booth <neil@daikokuya.co.uk>
@@ -495,25 +1189,25 @@ Fri Nov 8 11:20:19 CET 2002 Jan Hubicka <jh@suse.cz>
2002-11-07 David Mosberger <davidm@hpl.hp.com>
- * config/ia64/crtend.asm: Include "auto-host.h".
- [HAVE_INITFINI_ARRAY]: Invoke __do_global_ctors_aux via .init_array.
- * config/ia64/crtbegin.asm: Similarly.
- * config/ia64/t-ia64 (crtbegin.o): Include from current directory.
- (crtend.o, crtbeginS.o, crtendS.o): Likewise.
+ * config/ia64/crtend.asm: Include "auto-host.h".
+ [HAVE_INITFINI_ARRAY]: Invoke __do_global_ctors_aux via .init_array.
+ * config/ia64/crtbegin.asm: Similarly.
+ * config/ia64/t-ia64 (crtbegin.o): Include from current directory.
+ (crtend.o, crtbeginS.o, crtendS.o): Likewise.
- * aclocal.m4 (gcc_AC_INITFINI_ARRAY): New.
- * configure.in: Use it if --enable-initfini-array not specified.
- * doc/install.texi (Configuration): Document --enable-initfini-array.
+ * aclocal.m4 (gcc_AC_INITFINI_ARRAY): New.
+ * configure.in: Use it if --enable-initfini-array not specified.
+ * doc/install.texi (Configuration): Document --enable-initfini-array.
* configure, config.in: Rebuild.
2002-11-07 Jason Thorpe <thorpej@wasabisystems.com>
-
+
* config/arm/arm-protos.h (arm_get_frame_size)
- (thumb_get_frame_size): New prototypes.
+ (thumb_get_frame_size): New prototypes.
* config/arm/arm.c (arm_get_frame_size)
- (thumb_get_frame_size): New functions.
- (use_return_insn, arm_output_epilogue, arm_output_function_epilogue)
- (arm_compute_initial_elimination_offset, arm_expand_prologue): Use
+ (thumb_get_frame_size): New functions.
+ (use_return_insn, arm_output_epilogue, arm_output_function_epilogue)
+ (arm_compute_initial_elimination_offset, arm_expand_prologue): Use
arm_get_frame_size.
(thumb_expand_prologue, thumb_expand_epilogue): Use
thumb_get_frame_size.
@@ -609,8 +1303,8 @@ Thu Nov 7 11:18:01 CET 2002 Jan Hubicka <jh@suse.cz>
2002-11-04 Dale Johannesen <dalej@apple.com>
- * doloop.c (doloop_modify_runtime): Fix loop count computation
- for unrolled loops.
+ * doloop.c (doloop_modify_runtime): Fix loop count computation
+ for unrolled loops.
* loop.c (loop_invariant_p): Support calling from unroller.
2002-11-04 Ulrich Weigand <uweigand@de.ibm.com>
@@ -639,7 +1333,7 @@ Thu Nov 7 11:18:01 CET 2002 Jan Hubicka <jh@suse.cz>
* config/pa/pa64-regs.h: Same.
* config/sh/sh-protos.h (sh_cannot_change_mode_class): Add prototype.
-
+
* config/sh/sh.c (sh_cannot_change_mode_class): New.
* config/mips/mips-protos.h (mips_cannot_change_mode_class): Add
@@ -695,7 +1389,7 @@ Thu Nov 7 11:18:01 CET 2002 Jan Hubicka <jh@suse.cz>
(simplify_set): Same.
(gen_lowpart_for_combine): Calculate subregs_of_mode. Remove
REG_CHANGES_MODE.
-
+
* regs.h: Add extern for subregs_of_mode;
Include hard-reg-set and basic-block.
(REG_CHANGES_MODE): Delete.
@@ -809,7 +1503,7 @@ Thu Nov 7 11:18:01 CET 2002 Jan Hubicka <jh@suse.cz>
(-minline-float-divide-max-throughput): New.
(-minline-int-divide-min-latency): New.
(-minline-int-divide-max-throughput): New.
-
+
2002-11-01 Richard Earnshaw (rearnsha@arm.com)
PR target/7856
@@ -829,7 +1523,7 @@ Fri Nov 1 10:33:15 CET 2002 Jan Hubicka <jh@suse.cz>
2002-10-31 Eric Christopher <echristo@redhat.com>
- * explow.c (convert_memory_address): Use shallow_copy_rtx.
+ * explow.c (convert_memory_address): Use shallow_copy_rtx.
2002-10-31 Steve Ellcey <sje@cup.hp.com>
@@ -854,7 +1548,7 @@ Thu Oct 31 18:08:00 CET 2002 Jan Hubicka <jh@suse.cz>
* i386.c (optimization_options): Set flag_omit_frame_pointer,
flag_asynchronous_unwind_tables, flag_pcc_struct_return to 2.
Do not clear -momit-leaf-frame-pointer when profiling.
- (ix86_frame_pointer_required): Frame pointer is allways required when
+ (ix86_frame_pointer_required): Frame pointer is always required when
profiling.
Thu Oct 31 16:09:44 CET 2002 Jan Hubicka <jh@suse.cz>
@@ -874,7 +1568,7 @@ Thu Oct 31 12:45:55 2002 J"orn Rennecke <joern.rennecke@superh.com>
2002-10-30 Aldy Hernandez <aldyh@redhat.com>
- * c-common.c: Add GTY to vector_type_node_list.
+ * c-common.c: Add GTY to vector_type_node_list.
2002-10-30 John David Anglin <dave@hiauly.hia.nrc.ca>
@@ -1016,8 +1710,8 @@ Tue Oct 29 15:37:39 CET 2002 Jan Hubicka <jh@suse.cz>
2002-10-29 Eric Botcazou <ebotcazou@libertysurf.fr>
- * expr.c (expand_expr) [PLUS]: Don't use simplify_binary_operation;
- check for zero operands explicitly.
+ * expr.c (expand_expr) [PLUS]: Don't use simplify_binary_operation;
+ check for zero operands explicitly.
2002-10-29 Richard Sandiford <rsandifo@redhat.com>
@@ -1157,7 +1851,7 @@ Sat Oct 26 01:44:46 CEST 2002 Jan Hubicka <jh@suse.cz>
2002-10-24 Igor Shevlyakov <igor@microunity.com>
- * varasm.c (struct rtx_const): Array size 16 for V16QImode.
+ * varasm.c (struct rtx_const): Array size 16 for V16QImode.
2002-10-24 Richard Henderson <rth@redhat.com>
@@ -4887,7 +5581,7 @@ Tue Sep 17 13:40:13 2002 Nicola Pero <n.pero@mi.flashnet.it>
* i386.c (index_register_operand): New.
* i386.h (predicate_codes): Add new predicate.
- * i386.md (lea_general_*): Use index_regsiter_operand
+ * i386.md (lea_general_*): Use index_register_operand
(ashift to lea splitter): Do not produce invalid leas
(ashift to mov+ashift split): New.
@@ -4984,7 +5678,7 @@ Tue Sep 17 13:40:13 2002 Nicola Pero <n.pero@mi.flashnet.it>
* emit-rtl.c (set_mem_attributes_minus_bitpos): Fix array_ref
handling.
- * loop.c (loop_gics_reduce): Emit addition after.
+ * loop.c (loop_givs_reduce): Emit addition after.
2002-09-08 Alan Modra <amodra@bigpond.net.au>
diff --git a/gcc/ChangeLog.7 b/gcc/ChangeLog.7
index 8c6e0390924..dc7282b839c 100644
--- a/gcc/ChangeLog.7
+++ b/gcc/ChangeLog.7
@@ -4511,10 +4511,10 @@ Fri May 31 13:37:54 CEST 2002 Jan Hubicka <jh@suse.cz>
* reload1.c (emit_input_reload_insns): Use constrain_operands
instead of constraint_accepts_reg_p to verify optimization.
- (constraint_accepts_reg_p): Kill
+ (constraint_accepts_reg_p): Kill.
* reload1.c (reload_cse_delete_noop_set): Kill.
- (reload_cse_simplify): use delte_insn_and_edges.
+ (reload_cse_simplify): Use delete_insn_and_edges.
2002-05-31 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index f7f9ff23256..4c20e846722 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -96,6 +96,10 @@ STRICT2_WARN = -Wtraditional -pedantic -Wno-long-long
# "extern" tags in header files.
NOCOMMON_FLAG = @nocommon_flag@
+# These are set by --enable-checking=valgrind.
+RUN_GEN = @valgrind_command@
+VALGRIND_DRIVER_DEFINES = @valgrind_path_defines@
+
# This is how we control whether or not the additional warnings are applied.
.-warn = $(STRICT_WARN)
GCC_WARN_CFLAGS = $(LOOSE_WARN) $($(@D)-warn) $(NOCOMMON_FLAG)
@@ -1264,6 +1268,7 @@ DRIVER_DEFINES = \
-DDEFAULT_TARGET_MACHINE=\"$(target_alias)\" \
-DSTANDARD_BINDIR_PREFIX=\"$(bindir)/\" \
-DTOOLDIR_BASE_PREFIX=\"$(unlibsubdir)/../\" \
+ $(VALGRIND_DRIVER_DEFINES) \
`test "X$${SHLIB_LINK}" = "X" || test "@enable_shared@" != "yes" || echo "-DENABLE_SHARED_LIBGCC"` \
`test "X$${SHLIB_MULTILIB}" = "X" || echo "-DNO_SHARED_LIBGCC_MULTILIB"`
@@ -1286,7 +1291,7 @@ cppspec.o: cppspec.c $(CONFIG_H) $(SYSTEM_H) $(GCC_H)
tree-check.h: s-check ; @true
s-check : gencheck$(build_exeext) $(srcdir)/move-if-change
- ./gencheck$(build_exeext) > tmp-check.h
+ $(RUN_GEN) ./gencheck$(build_exeext) > tmp-check.h
$(SHELL) $(srcdir)/move-if-change tmp-check.h tree-check.h
$(STAMP) s-check
@@ -1695,13 +1700,13 @@ mips-tdump.o : mips-tdump.c $(CONFIG_H) $(RTL_H) $(SYSTEM_H)
insn-config.h: s-config ; @true
s-config : $(md_file) genconfig$(build_exeext) $(srcdir)/move-if-change
- ./genconfig$(build_exeext) $(md_file) > tmp-config.h
+ $(RUN_GEN) ./genconfig$(build_exeext) $(md_file) > tmp-config.h
$(SHELL) $(srcdir)/move-if-change tmp-config.h insn-config.h
$(STAMP) s-config
insn-conditions.c: s-conditions ; @true
s-conditions : $(md_file) genconditions$(build_exeext) $(srcdir)/move-if-change
- ./genconditions$(build_exeext) $(md_file) > tmp-conditions.c
+ $(RUN_GEN) ./genconditions$(build_exeext) $(md_file) > tmp-conditions.c
$(SHELL) $(srcdir)/move-if-change tmp-conditions.c insn-conditions.c
$(STAMP) s-conditions
@@ -1716,19 +1721,19 @@ dummy-conditions.o : dummy-conditions.c $(HCONFIG_H) $(SYSTEM_H) gensupport.h
insn-flags.h: s-flags ; @true
s-flags : $(md_file) genflags$(build_exeext) $(srcdir)/move-if-change
- ./genflags$(build_exeext) $(md_file) > tmp-flags.h
+ $(RUN_GEN) ./genflags$(build_exeext) $(md_file) > tmp-flags.h
$(SHELL) $(srcdir)/move-if-change tmp-flags.h insn-flags.h
$(STAMP) s-flags
insn-codes.h: s-codes ; @true
s-codes : $(md_file) gencodes$(build_exeext) $(srcdir)/move-if-change
- ./gencodes$(build_exeext) $(md_file) > tmp-codes.h
+ $(RUN_GEN) ./gencodes$(build_exeext) $(md_file) > tmp-codes.h
$(SHELL) $(srcdir)/move-if-change tmp-codes.h insn-codes.h
$(STAMP) s-codes
insn-constants.h: s-constants ; @true
s-constants : $(md_file) genconstants$(build_exeext) $(srcdir)/move-if-change
- ./genconstants$(build_exeext) $(md_file) > tmp-constants.h
+ $(RUN_GEN) ./genconstants$(build_exeext) $(md_file) > tmp-constants.h
$(SHELL) $(srcdir)/move-if-change tmp-constants.h insn-constants.h
$(STAMP) s-constants
@@ -1740,7 +1745,7 @@ insn-emit.o : insn-emit.c $(CONFIG_H) $(RTL_H) $(EXPR_H) real.h output.h \
insn-emit.c: s-emit ; @true
s-emit : $(md_file) genemit$(build_exeext) $(srcdir)/move-if-change
- ./genemit$(build_exeext) $(md_file) > tmp-emit.c
+ $(RUN_GEN) ./genemit$(build_exeext) $(md_file) > tmp-emit.c
$(SHELL) $(srcdir)/move-if-change tmp-emit.c insn-emit.c
$(STAMP) s-emit
@@ -1752,7 +1757,7 @@ insn-recog.o : insn-recog.c $(CONFIG_H) $(RTL_H) insn-config.h $(RECOG_H) \
insn-recog.c: s-recog ; @true
s-recog : $(md_file) genrecog$(build_exeext) $(srcdir)/move-if-change
- ./genrecog$(build_exeext) $(md_file) > tmp-recog.c
+ $(RUN_GEN) ./genrecog$(build_exeext) $(md_file) > tmp-recog.c
$(SHELL) $(srcdir)/move-if-change tmp-recog.c insn-recog.c
$(STAMP) s-recog
@@ -1763,7 +1768,7 @@ insn-opinit.o : insn-opinit.c $(CONFIG_H) $(RTL_H) \
insn-opinit.c: s-opinit ; @true
s-opinit : $(md_file) genopinit$(build_exeext) $(srcdir)/move-if-change
- ./genopinit$(build_exeext) $(md_file) > tmp-opinit.c
+ $(RUN_GEN) ./genopinit$(build_exeext) $(md_file) > tmp-opinit.c
$(SHELL) $(srcdir)/move-if-change tmp-opinit.c insn-opinit.c
$(STAMP) s-opinit
@@ -1774,7 +1779,7 @@ insn-extract.o : insn-extract.c $(CONFIG_H) $(RTL_H) $(SYSTEM_H) toplev.h \
insn-extract.c: s-extract ; @true
s-extract : $(md_file) genextract$(build_exeext) $(srcdir)/move-if-change
- ./genextract$(build_exeext) $(md_file) > tmp-extract.c
+ $(RUN_GEN) ./genextract$(build_exeext) $(md_file) > tmp-extract.c
$(SHELL) $(srcdir)/move-if-change tmp-extract.c insn-extract.c
$(STAMP) s-extract
@@ -1785,7 +1790,7 @@ insn-peep.o : insn-peep.c $(CONFIG_H) $(RTL_H) $(REGS_H) output.h real.h \
insn-peep.c: s-peep ; @true
s-peep : $(md_file) genpeep$(build_exeext) $(srcdir)/move-if-change
- ./genpeep$(build_exeext) $(md_file) > tmp-peep.c
+ $(RUN_GEN) ./genpeep$(build_exeext) $(md_file) > tmp-peep.c
$(SHELL) $(srcdir)/move-if-change tmp-peep.c insn-peep.c
$(STAMP) s-peep
@@ -1797,13 +1802,13 @@ insn-attrtab.o : insn-attrtab.c $(CONFIG_H) $(RTL_H) $(REGS_H) real.h \
insn-attr.h: s-attr ; @true
s-attr : $(md_file) genattr$(build_exeext) $(srcdir)/move-if-change
- ./genattr$(build_exeext) $(md_file) > tmp-attr.h
+ $(RUN_GEN) ./genattr$(build_exeext) $(md_file) > tmp-attr.h
$(SHELL) $(srcdir)/move-if-change tmp-attr.h insn-attr.h
$(STAMP) s-attr
insn-attrtab.c: s-attrtab ; @true
s-attrtab : $(md_file) genattrtab$(build_exeext) $(srcdir)/move-if-change
- ./genattrtab$(build_exeext) $(md_file) > tmp-attrtab.c
+ $(RUN_GEN) ./genattrtab$(build_exeext) $(md_file) > tmp-attrtab.c
$(SHELL) $(srcdir)/move-if-change tmp-attrtab.c insn-attrtab.c
$(STAMP) s-attrtab
@@ -1816,7 +1821,7 @@ insn-output.o : insn-output.c $(CONFIG_H) $(RTL_H) $(GGC_H) $(REGS_H) real.h \
insn-output.c: s-output ; @true
s-output : $(md_file) genoutput$(build_exeext) $(srcdir)/move-if-change
- ./genoutput$(build_exeext) $(md_file) > tmp-output.c
+ $(RUN_GEN) ./genoutput$(build_exeext) $(md_file) > tmp-output.c
$(SHELL) $(srcdir)/move-if-change tmp-output.c insn-output.c
$(STAMP) s-output
@@ -1825,16 +1830,16 @@ genrtl.c genrtl.h : s-genrtl
@true # force gnu make to recheck modification times.
s-genrtl: gengenrtl$(build_exeext) $(srcdir)/move-if-change $(RTL_BASE_H)
- ./gengenrtl$(build_exeext) -h > tmp-genrtl.h
+ $(RUN_GEN) ./gengenrtl$(build_exeext) -h > tmp-genrtl.h
$(SHELL) $(srcdir)/move-if-change tmp-genrtl.h genrtl.h
- ./gengenrtl$(build_exeext) > tmp-genrtl.c
+ $(RUN_GEN) ./gengenrtl$(build_exeext) > tmp-genrtl.c
$(SHELL) $(srcdir)/move-if-change tmp-genrtl.c genrtl.c
$(STAMP) s-genrtl
tm-preds.h: s-preds; @true
s-preds: genpreds$(build_exeext) $(srcdir)/move-if-change
- ./genpreds$(build_exeext) > tmp-preds.h
+ $(RUN_GEN) ./genpreds$(build_exeext) > tmp-preds.h
$(SHELL) $(srcdir)/move-if-change tmp-preds.h tm-preds.h
$(STAMP) s-preds
@@ -1900,7 +1905,7 @@ gtyp-gen.h: Makefile
$(SHELL) $(srcdir)/move-if-change tmp-gtyp.h gtyp-gen.h
s-gtype: gengtype$(build_exeext) $(GTFILES)
- ./gengtype
+ $(RUN_GEN) ./gengtype
$(STAMP) s-gtype
#
@@ -2409,7 +2414,7 @@ xsys-protos.h: $(GCC_PASSES) $(srcdir)/sys-protos.h deduced.h gen-protos$(build_
mv tmp-fixtmp.c fixtmp.c
$(GCC_FOR_TARGET) fixtmp.c -w -U__SIZE_TYPE__ -U__PTRDIFF_TYPE__ -U__WCHAR_TYPE__ -E \
| sed -e 's/ / /g' -e 's/ *(/ (/g' -e 's/ [ ]*/ /g' -e 's/( )/()/' \
- | ./gen-protos >xsys-protos.hT
+ | $(RUN_GEN) ./gen-protos >xsys-protos.hT
mv xsys-protos.hT xsys-protos.h
rm -rf fixtmp.c
@@ -2841,6 +2846,7 @@ install-driver: installdirs xgcc$(exeext)
-if [ -f gcc-cross$(exeext) ] ; then \
rm -f $(bindir)/$(GCC_CROSS_NAME)$(exeext); \
$(INSTALL_PROGRAM) gcc-cross$(exeext) $(bindir)/$(GCC_CROSS_NAME)$(exeext); \
+ rm -f $(bindir)/$(target_alias)-gcc-$(version); \
$(LN) $(bindir)/$(GCC_CROSS_NAME)$(exeext) $(bindir)/$(target_alias)-gcc-$(version) ; \
if [ -d $(gcc_tooldir)/bin/. ] ; then \
rm -f $(gcc_tooldir)/bin/gcc$(exeext); \
@@ -2849,6 +2855,7 @@ install-driver: installdirs xgcc$(exeext)
else \
rm -f $(bindir)/$(GCC_INSTALL_NAME)$(exeext); \
$(INSTALL_PROGRAM) xgcc$(exeext) $(bindir)/$(GCC_INSTALL_NAME)$(exeext); \
+ rm -f $(bindir)/$(target_alias)-gcc-$(version); \
$(LN) $(bindir)/$(GCC_INSTALL_NAME)$(exeext) $(bindir)/$(target_alias)-gcc-$(version) ; \
rm -f $(bindir)/$(target_alias)-gcc-tmp$(exeext); \
$(LN) $(bindir)/$(GCC_INSTALL_NAME)$(exeext) $(bindir)/$(target_alias)-gcc-tmp$(exeext); \
diff --git a/gcc/aclocal.m4 b/gcc/aclocal.m4
index acfef120c71..0cec464e2aa 100644
--- a/gcc/aclocal.m4
+++ b/gcc/aclocal.m4
@@ -660,14 +660,13 @@ AC_CACHE_CHECK(for working mmap from /dev/zero,
then ac_cv_func_mmap_dev_zero=no
else ac_cv_func_mmap_dev_zero=buggy
fi],
- # If this is not cygwin, and /dev/zero is a character device, it's probably
- # safe to assume it works.
+ # When cross-building, assume that this works, unless we know it
+ # doesn't. Of course, we have no way of knowing if there even is a /dev/zero
+ # on the host, let alone whether mmap will work on it.
[case "$host_os" in
cygwin* | win32 | pe | mingw* ) ac_cv_func_mmap_dev_zero=buggy ;;
- * ) if test -c /dev/zero
- then ac_cv_func_mmap_dev_zero=yes
- else ac_cv_func_mmap_dev_zero=no
- fi ;;
+ darwin* ) ac_cv_func_mmap_dev_zero=no ;;
+ * ) ac_cv_func_mmap_dev_zero=yes ;;
esac])
])
if test $ac_cv_func_mmap_dev_zero = yes; then
@@ -687,7 +686,10 @@ AC_CACHE_CHECK([for working mmap with MAP_ANON(YMOUS)],
fi],
# Unlike /dev/zero, it is not safe to assume MAP_ANON(YMOUS) works
# just because it's there. Some SCO Un*xen define it but don't implement it.
- ac_cv_func_mmap_anon=no)
+ [case "$host_os" in
+ darwin* ) ac_cv_func_mmap_anon=yes ;;
+ * ) ac_cv_func_mmap_anon=no ;;
+ esac])
])
if test $ac_cv_func_mmap_anon = yes; then
AC_DEFINE(HAVE_MMAP_ANON, 1,
@@ -740,7 +742,10 @@ int main()
exit(0);
}], ac_cv_func_mmap_file=yes, ac_cv_func_mmap_file=no,
-ac_cv_func_mmap_file=no)])
+ [case "$host_os" in
+ darwin* ) ac_cv_func_mmap_file=yes ;;
+ * ) ac_cv_func_mmap_file=no ;;
+ esac])])
if test $ac_cv_func_mmap_file = yes; then
AC_DEFINE(HAVE_MMAP_FILE, 1,
[Define if read-only mmap of a plain file works.])
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 12ab6035bb7..a23ddc9fddf 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -2,6 +2,27 @@
* ada-tree.h (union lang_tree_node): Add chain_next option.
+2002-11-18 Nathanael Nerode <neroden@gcc.gnu.org>
+ * adaint.c (__gnat_tmp_name): Better, but good enough for now,
+ solution to buffer overflow bug on GNU/Linux.
+
+2002-11-14 Nathanael Nerode <neroden@gcc.gnu.org>
+ Closes PR ada/5856 and PR ada/6919 !
+ * bindgen.adb: Remove all references to Public_Version.
+ * comperr.adb: Remove all references to Public_Version and
+ GNATPRO_Version; correct bug reporting instructions.
+ * comperr.ads: Change to match bug box.
+ * gnatvsn.ads: Remove all references to Public version and
+ GNATPRO version.
+
+2002-11-13 Nathanael Nerode <neroden@gcc.gnu.org>
+ PR ada/6919
+ * adaint.c (__gnat_tmp_name): Remove buffer overflow bug on
+ GNU/Linux.
+
+ PR ada/6558
+ * config-lang.in: Remove diff_excludes.
+
2002-11-05 Graham Stott <graham.stott@btinternet.com>
PR ada/8358
* trans.c (gnu_pending_elaboration_lists): New GC root.
diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c
index 0511071d432..874f0916d21 100644
--- a/gcc/ada/adaint.c
+++ b/gcc/ada/adaint.c
@@ -709,7 +709,7 @@ __gnat_tmp_name (tmp_filename)
if (tmpdir == NULL)
strcpy (tmp_filename, "/tmp/gnat-XXXXXX");
else
- sprintf (tmp_filename, "%s/gnat-XXXXXX", tmpdir);
+ sprintf (tmp_filename, "%.200s/gnat-XXXXXX", tmpdir);
close (mkstemp(tmp_filename));
#else
diff --git a/gcc/ada/bindgen.adb b/gcc/ada/bindgen.adb
index 20765c72c11..ace6c2fbcaa 100644
--- a/gcc/ada/bindgen.adb
+++ b/gcc/ada/bindgen.adb
@@ -159,10 +159,6 @@ package body Bindgen is
procedure Move_Linker_Option (From : Natural; To : Natural);
-- Move routine for sorting linker options
- procedure Public_Version_Warning;
- -- Emit a warning concerning the use of the Public version under
- -- certain circumstances. See details in body.
-
procedure Set_Char (C : Character);
-- Set given character in Statement_Buffer at the Last + 1 position
-- and increment Last by one to reflect the stored character.
@@ -1682,8 +1678,6 @@ package body Bindgen is
---------------------
procedure Gen_Output_File (Filename : String) is
- Public_Version : constant Boolean := Gnat_Version_Type = "PUBLIC ";
- -- Set true if this is the public version of GNAT
begin
-- Override Ada_Bind_File and Bind_Main_Program for Java since
@@ -1711,12 +1705,6 @@ package body Bindgen is
end if;
end loop;
- -- Get the time stamp of the former bind for public version warning
-
- if Public_Version then
- Record_Time_From_Last_Bind;
- end if;
-
-- Generate output file in appropriate language
if Ada_Bind_File then
@@ -1725,12 +1713,6 @@ package body Bindgen is
Gen_Output_File_C (Filename);
end if;
- -- Periodically issue a warning when the public version is used on
- -- big projects
-
- if Public_Version then
- Public_Version_Warning;
- end if;
end Gen_Output_File;
-------------------------
@@ -2728,74 +2710,6 @@ package body Bindgen is
end Move_Linker_Option;
----------------------------
- -- Public_Version_Warning --
- ----------------------------
-
- procedure Public_Version_Warning is
-
- Time : Int := Time_From_Last_Bind;
-
- -- Constants to help defining periods
-
- Hour : constant := 60;
- Day : constant := 24 * Hour;
-
- Never : constant := Integer'Last;
- -- Special value indicating no warnings should be given
-
- -- Constants defining when the warning is issued. Programs with more
- -- than Large Units will issue a warning every Period_Large amount of
- -- time. Smaller programs will generate a warning every Period_Small
- -- amount of time.
-
- Large : constant := 20;
- -- Threshold for considering a program small or large
-
- Period_Large : constant := Day;
- -- Periodic warning time for large programs
-
- Period_Small : constant := Never;
- -- Periodic warning time for small programs
-
- Nb_Unit : Int;
-
- begin
- -- Compute the number of units that are not GNAT internal files
-
- Nb_Unit := 0;
- for A in ALIs.First .. ALIs.Last loop
- if not Is_Internal_File_Name (ALIs.Table (A).Sfile) then
- Nb_Unit := Nb_Unit + 1;
- end if;
- end loop;
-
- -- Do not emit the message if the last message was emitted in the
- -- specified period taking into account the number of units.
-
- if Nb_Unit < Large and then Time <= Period_Small then
- return;
-
- elsif Time <= Period_Large then
- return;
- end if;
-
- Write_Eol;
- Write_Str ("IMPORTANT NOTICE:");
- Write_Eol;
- Write_Str (" This version of GNAT is unsupported"
- & " and comes with absolutely no warranty.");
- Write_Eol;
- Write_Str (" If you intend to evaluate or use GNAT for building "
- & "commercial applications,");
- Write_Eol;
- Write_Str (" please consult http://www.gnat.com/ for information");
- Write_Eol;
- Write_Str (" on the GNAT Professional product line.");
- Write_Eol;
- Write_Eol;
- end Public_Version_Warning;
-
- ----------------------------
-- Resolve_Binder_Options --
----------------------------
diff --git a/gcc/ada/comperr.adb b/gcc/ada/comperr.adb
index 8d3eb512169..71368e68fa7 100644
--- a/gcc/ada/comperr.adb
+++ b/gcc/ada/comperr.adb
@@ -7,7 +7,7 @@
-- B o d y --
-- --
-- --
--- Copyright (C) 1992-2001 Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2002 Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -78,14 +78,7 @@ package body Comperr is
-- The procedures below output a "bug box" with information about
-- the cause of the compiler abort and about the preferred method
-- of reporting bugs. The default is a bug box appropriate for
- -- the FSF version of GNAT, but there are specializations for
- -- the GNATPRO and Public releases by Ada Core Technologies.
-
- Public_Version : constant Boolean := Gnat_Version_Type = "PUBLIC ";
- -- Set True for the public version of GNAT
-
- GNATPRO_Version : constant Boolean := Gnat_Version_Type = "GNATPRO";
- -- Set True for the GNATPRO version of GNAT
+ -- the FSF version of GNAT.
procedure End_Line;
-- Add blanks up to column 76, and then a final vertical bar
@@ -265,31 +258,11 @@ package body Comperr is
-- Otherwise we use the standard fixed text
else
- if Public_Version or GNATPRO_Version then
- Write_Str
- ("| Please submit bug report by email " &
- "to report@gnat.com.");
- End_Line;
-
- else
- Write_Str
- ("| Please submit bug report by email " &
- "to gcc-bugs@gcc.gnu.org.");
- End_Line;
- end if;
-
Write_Str
- ("| Use a subject line meaningful to you" &
- " and us to track the bug.");
+ ("| Please submit a bug report; see" &
+ " http://gcc.gnu.org/bugs.html.");
End_Line;
- if GNATPRO_Version then
- Write_Str
- ("| (include your customer number #nnn " &
- "in the subject line).");
- End_Line;
- end if;
-
Write_Str
("| Include the entire contents of this bug " &
"box in the report.");
@@ -305,30 +278,9 @@ package body Comperr is
End_Line;
Write_Str
- ("| (concatenated together with no headers between files).");
+ ("| concatenated together with no headers between files.");
End_Line;
- if not GNATPRO_Version then
- Write_Str
- ("| (use plain ASCII or MIME attachment).");
- End_Line;
-
- Write_Str
- ("| See gnatinfo.txt for full info on procedure " &
- "for submitting bugs.");
- End_Line;
-
- else
- Write_Str
- ("| (use plain ASCII or MIME attachment, or FTP "
- & "to your customer directory).");
- End_Line;
-
- Write_Str
- ("| See README.GNATPRO for full info on procedure " &
- "for submitting bugs.");
- End_Line;
- end if;
end if;
end;
diff --git a/gcc/ada/comperr.ads b/gcc/ada/comperr.ads
index ede0e274362..e235f01ff62 100644
--- a/gcc/ada/comperr.ads
+++ b/gcc/ada/comperr.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- --
--- Copyright (C) 1992-2000 Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2002 Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -55,30 +55,13 @@ package Comperr is
-- When comperr generates the "bug box". The first two lines contain
-- information on the version number, type of abort, and source location.
- -- Normally the remaining text is one of the following two forms
- -- depending on the version number (p identifies public versions):
+ -- Normally the remaining text is of the following form:
- -- Please submit bug report by email to report@gnat.com.
- -- Use a subject line meaningful to you and us to track the bug.
- -- (include your customer number #nnn in the subject line).
+ -- Please submit a bug report; see http://gcc.gnu.org/bugs.html.
-- Include the entire contents of this bug box in the report.
-- Include the exact gcc or gnatmake command that you entered.
-- Also include sources listed below in gnatchop format
- -- (concatenated together with no headers between files).
- -- (use plain ASCII or MIME attachment,
- -- or FTP to your customer directory).
- -- See README.GNATPRO for full info on procedure for submitting bugs.
-
- -- or (public version case)
-
- -- Please submit bug report by email to report@gnat.com.
- -- Use a subject line meaningful to you and us to track the bug.
- -- (include your customer number #nnn in the subject line).
- -- Include the entire contents of this bug box in the report.
- -- Include the exact gcc or gnatmake command that you entered.
- -- Also include sources listed below in gnatchop format
- -- (concatenated together with no headers between files).
- -- See gnatinfo.txt for full info on procedure for submitting bugs.
+ -- concatenated together with no headers between files.
-- However, an alternative mechanism exists for easily substituting
-- different text for this message. Compiler_Abort checks for the
diff --git a/gcc/ada/config-lang.in b/gcc/ada/config-lang.in
index b0fe156af13..445551eed8b 100644
--- a/gcc/ada/config-lang.in
+++ b/gcc/ada/config-lang.in
@@ -25,7 +25,6 @@
# boot_language - "yes" if we need to build this language in stage1
# compilers - value to add to $(COMPILERS)
# stagestuff - files to add to $(STAGESTUFF)
-# diff_excludes - files to ignore when building diffs between two versions.
language="ada"
boot_language=yes
@@ -37,6 +36,4 @@ stagestuff="gnatbind\$(exeext) gnat1\$(exeext)"
gtfiles="\$(srcdir)/ada/ada-tree.h \$(srcdir)/ada/gigi.h \$(srcdir)/ada/decl.c \$(srcdir)/ada/trans.c \$(srcdir)/ada/utils.c"
-diff_excludes="-x ada/a-einfo.h -x ada/a-sinfo.h -x ada/nmake.adb -x ada/nmake.ads -x ada/treeprs.ads -x ada/sysid.ads"
-
outputs=ada/Makefile
diff --git a/gcc/ada/gnatvsn.ads b/gcc/ada/gnatvsn.ads
index d82b79a351c..b15c10c403f 100644
--- a/gcc/ada/gnatvsn.ads
+++ b/gcc/ada/gnatvsn.ads
@@ -53,20 +53,6 @@ package Gnatvsn is
-- and the bug box generated by Comperr will give information on
-- how to report bugs and list the "no warranty" information.
--
- -- "GNATPRO"
- -- GNAT Professional version. This version of GNAT is supported
- -- by Ada Core Technologies. The binder will not output the
- -- usual "no warranty" messages, and the bug box generated by
- -- package Comperr will give instructions on bug submission
- -- that include references to customer number, ftp site etc.
- --
- -- "PUBLIC "
- -- GNAT Public version. This is a public version of GNAT, released
- -- by Ada Core Technologies and intended for educational use.
- -- The binder will output informational messages, and the bug box
- -- generated by the package Comperr will give appropriate bug
- -- submission instructions that do not reference customer number etc.
- --
-- These are the only allowable settings for this string
Ver_Len_Max : constant := 32;
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 25fadab0e21..7eea0365639 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -790,10 +790,10 @@ expand_builtin_prefetch (arglist)
#ifdef HAVE_prefetch
if (HAVE_prefetch)
{
- if ((! (*insn_data[(int)CODE_FOR_prefetch].operand[0].predicate)
+ if ((! (*insn_data[(int) CODE_FOR_prefetch].operand[0].predicate)
(op0,
- insn_data[(int)CODE_FOR_prefetch].operand[0].mode)) ||
- (GET_MODE(op0) != Pmode))
+ insn_data[(int) CODE_FOR_prefetch].operand[0].mode))
+ || (GET_MODE(op0) != Pmode))
{
#ifdef POINTERS_EXTEND_UNSIGNED
if (GET_MODE(op0) != Pmode)
@@ -806,10 +806,10 @@ expand_builtin_prefetch (arglist)
else
#endif
op0 = protect_from_queue (op0, 0);
- /* Don't do anything with direct references to volatile memory, but
- generate code to handle other side effects. */
- if (GET_CODE (op0) != MEM && side_effects_p (op0))
- emit_insn (op0);
+ /* Don't do anything with direct references to volatile memory, but
+ generate code to handle other side effects. */
+ if (GET_CODE (op0) != MEM && side_effects_p (op0))
+ emit_insn (op0);
}
/* Get a MEM rtx for expression EXP which is the address of an operand
@@ -833,7 +833,7 @@ get_memory_rtx (exp)
If it is an ADDR_EXPR, use the operand. Otherwise, dereference it if
we can. First remove any nops. */
while ((TREE_CODE (exp) == NOP_EXPR || TREE_CODE (exp) == CONVERT_EXPR
- || TREE_CODE (exp) == NON_LVALUE_EXPR)
+ || TREE_CODE (exp) == NON_LVALUE_EXPR)
&& POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (exp, 0))))
exp = TREE_OPERAND (exp, 0);
@@ -887,7 +887,7 @@ apply_args_register_offset (regno)
/* Arguments are always put in outgoing registers (in the argument
block) if such make sense. */
#ifdef OUTGOING_REGNO
- regno = OUTGOING_REGNO(regno);
+ regno = OUTGOING_REGNO (regno);
#endif
return apply_args_reg_offset[regno];
}
@@ -1014,7 +1014,7 @@ apply_result_size ()
mode = GET_MODE_WIDER_MODE (mode))
if (HARD_REGNO_MODE_OK (regno, mode)
&& have_insn_for (SET, mode))
- best_mode = mode;
+ best_mode = mode;
if (best_mode == VOIDmode)
for (mode = GET_CLASS_NARROWEST_MODE (MODE_VECTOR_INT);
@@ -1262,7 +1262,7 @@ expand_builtin_apply (function, arguments, argsize)
emit_move_insn (value, adjust_address (arguments, Pmode, size));
emit_move_insn (struct_value_rtx, value);
if (GET_CODE (struct_value_rtx) == REG)
- use_reg (&call_fusage, struct_value_rtx);
+ use_reg (&call_fusage, struct_value_rtx);
size += GET_MODE_SIZE (Pmode);
}
@@ -1652,7 +1652,7 @@ expand_builtin_strlen (exp, target)
/* Mark the beginning of the strlen sequence so we can emit the
source operand later. */
- before_strlen = get_last_insn();
+ before_strlen = get_last_insn ();
char_rtx = const0_rtx;
char_mode = insn_data[(int) icode].operand[2].mode;
@@ -2179,14 +2179,14 @@ builtin_memset_gen_str (data, offset, mode)
char *p;
size = GET_MODE_SIZE (mode);
- if (size==1)
- return (rtx)data;
+ if (size == 1)
+ return (rtx) data;
p = alloca (size);
memset (p, 1, size);
coeff = c_readstr (p, mode);
- target = convert_to_mode (mode, (rtx)data, 1);
+ target = convert_to_mode (mode, (rtx) data, 1);
target = expand_mult (mode, target, coeff, NULL_RTX, 1);
return force_reg (mode, target);
}
@@ -2257,7 +2257,7 @@ expand_builtin_memset (exp, target, mode)
dest_mem = get_memory_rtx (dest);
store_by_pieces (dest_mem, tree_low_cst (len, 1),
builtin_memset_gen_str,
- (PTR)val_rtx, dest_align);
+ (PTR) val_rtx, dest_align);
dest_mem = force_operand (XEXP (dest_mem, 0), NULL_RTX);
#ifdef POINTERS_EXTEND_UNSIGNED
if (GET_MODE (dest_mem) != ptr_mode)
@@ -3241,7 +3241,7 @@ expand_builtin_va_end (arglist)
#ifdef EXPAND_BUILTIN_VA_END
valist = stabilize_va_list (valist, 0);
- EXPAND_BUILTIN_VA_END(arglist);
+ EXPAND_BUILTIN_VA_END (arglist);
#else
/* Evaluate for side effects, if needed. I hate macros that don't
do that. */
@@ -4257,29 +4257,32 @@ validate_arglist VPARAMS ((tree arglist, ...))
VA_OPEN (ap, arglist);
VA_FIXEDARG (ap, tree, arglist);
- do {
- code = va_arg (ap, enum tree_code);
- switch (code)
+ do
{
- case 0:
- /* This signifies an ellipses, any further arguments are all ok. */
- res = 1;
- goto end;
- case VOID_TYPE:
- /* This signifies an endlink, if no arguments remain, return
- true, otherwise return false. */
- res = arglist == 0;
- goto end;
- default:
- /* If no parameters remain or the parameter's code does not
- match the specified code, return false. Otherwise continue
- checking any remaining arguments. */
- if (arglist == 0 || code != TREE_CODE (TREE_TYPE (TREE_VALUE (arglist))))
- goto end;
- break;
+ code = va_arg (ap, enum tree_code);
+ switch (code)
+ {
+ case 0:
+ /* This signifies an ellipses, any further arguments are all ok. */
+ res = 1;
+ goto end;
+ case VOID_TYPE:
+ /* This signifies an endlink, if no arguments remain, return
+ true, otherwise return false. */
+ res = arglist == 0;
+ goto end;
+ default:
+ /* If no parameters remain or the parameter's code does not
+ match the specified code, return false. Otherwise continue
+ checking any remaining arguments. */
+ if (arglist == 0
+ || code != TREE_CODE (TREE_TYPE (TREE_VALUE (arglist))))
+ goto end;
+ break;
+ }
+ arglist = TREE_CHAIN (arglist);
}
- arglist = TREE_CHAIN (arglist);
- } while (1);
+ while (1);
/* We need gotos here since we can only have one VA_CLOSE in a
function. */
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 6d53e70b65e..4df75411d1e 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -1474,9 +1474,10 @@ duplicate_decls (newdecl, olddecl, different_binding_level)
inline, make sure we emit debug info for the inline before we
throw it away, in case it was inlined into a function that hasn't
been written out yet. */
- if (new_is_definition && DECL_INITIAL (olddecl) && TREE_USED (olddecl))
+ if (new_is_definition && DECL_INITIAL (olddecl))
{
- (*debug_hooks->outlining_inline_function) (olddecl);
+ if (TREE_USED (olddecl))
+ (*debug_hooks->outlining_inline_function) (olddecl);
/* The new defn must not be inline. */
DECL_INLINE (newdecl) = 0;
@@ -3543,7 +3544,15 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
}
}
else if (specbits & (1 << (int) i))
- error ("duplicate `%s'", IDENTIFIER_POINTER (id));
+ {
+ if (i == RID_CONST || i == RID_VOLATILE || i == RID_RESTRICT)
+ {
+ if (!flag_isoc99)
+ pedwarn ("duplicate `%s'", IDENTIFIER_POINTER (id));
+ }
+ else
+ error ("duplicate `%s'", IDENTIFIER_POINTER (id));
+ }
/* Diagnose "__thread extern". Recall that this list
is in the reverse order seen in the text. */
diff --git a/gcc/c-opts.c b/gcc/c-opts.c
index 80837389bd8..67b1047968e 100644
--- a/gcc/c-opts.c
+++ b/gcc/c-opts.c
@@ -149,7 +149,7 @@ static void sanitize_cpp_opts PARAMS ((void));
OPT("Wformat-y2k", CL_ALL, OPT_Wformat_y2k) \
OPT("Wformat-zero-length", CL_C, OPT_Wformat_zero_length) \
OPT("Wformat=", CL_ALL | CL_JOINED, OPT_Wformat_eq) \
- OPT("Wimplicit", CL_CXX, OPT_Wimplicit) \
+ OPT("Wimplicit", CL_ALL, OPT_Wimplicit) \
OPT("Wimplicit-function-declaration", CL_C, OPT_Wimplicit_function_decl) \
OPT("Wimplicit-int", CL_C, OPT_Wimplicit_int) \
OPT("Wimport", CL_ALL, OPT_Wimport) \
diff --git a/gcc/calls.c b/gcc/calls.c
index abe3012a789..99722b5da2e 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -48,9 +48,11 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#ifdef PUSH_ROUNDING
+#ifndef PUSH_ARGS_REVERSED
#if defined (STACK_GROWS_DOWNWARD) != defined (ARGS_GROW_DOWNWARD)
#define PUSH_ARGS_REVERSED PUSH_ARGS
#endif
+#endif
#endif
@@ -799,6 +801,21 @@ setjmp_call_p (fndecl)
return special_function_p (fndecl, 0) & ECF_RETURNS_TWICE;
}
+/* Return true when exp contains alloca call. */
+bool
+alloca_call_p (exp)
+ tree exp;
+{
+ if (TREE_CODE (exp) == CALL_EXPR
+ && TREE_CODE (TREE_OPERAND (exp, 0)) == ADDR_EXPR
+ && (TREE_CODE (TREE_OPERAND (TREE_OPERAND (exp, 0), 0))
+ == FUNCTION_DECL)
+ && (special_function_p (TREE_OPERAND (TREE_OPERAND (exp, 0), 0),
+ 0) & ECF_MAY_BE_ALLOCA))
+ return true;
+ return false;
+}
+
/* Detect flags (function attributes) from the function decl or type node. */
static int
diff --git a/gcc/combine.c b/gcc/combine.c
index 8ce9d10eb1d..a0214d19567 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -6978,10 +6978,10 @@ force_to_mode (x, mode, mask, reg, just_select)
return force_to_mode (x, mode, mask, reg, next_select);
}
- /* Similarly, if C contains every bit in the mask, then we may
+ /* Similarly, if C contains every bit in the fuller_mask, then we may
replace with (not Y). */
if (GET_CODE (XEXP (x, 0)) == CONST_INT
- && ((INTVAL (XEXP (x, 0)) | (HOST_WIDE_INT) mask)
+ && ((INTVAL (XEXP (x, 0)) | (HOST_WIDE_INT) fuller_mask)
== INTVAL (XEXP (x, 0))))
{
x = simplify_gen_unary (NOT, GET_MODE (x),
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 5caf2cb1c35..994a21e3a9e 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -617,7 +617,8 @@ arm*-*-freebsd*|strongarm*-*-freebsd*)
tmake_file="${tmake_file} arm/t-strongarm-elf"
;;
arm*-*-netbsdelf*)
- echo "GCC does not yet support the ${machine} target"; exit 1
+ tm_file="dbxelf.h elfos.h netbsd.h netbsd-elf.h arm/elf.h arm/aout.h arm/arm.h arm/netbsd-elf.h"
+ tmake_file="${tmake_file} arm/t-netbsd"
;;
arm*-*-netbsd*)
tm_file="arm/aout.h arm/arm.h netbsd.h netbsd-aout.h arm/netbsd.h"
@@ -733,8 +734,8 @@ h8300-*-*)
;;
hppa*64*-*-linux* | parisc*64*-*-linux*)
target_cpu_default="(MASK_PA_11 | MASK_PA_20)"
- tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h svr4.h linux.h pa/pa-linux.h \
- pa/pa64-regs.h pa/pa-64.h pa/pa64-linux.h"
+ tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h svr4.h linux.h \
+ pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h pa/pa64-linux.h"
tmake_file=pa/t-linux64
gas=yes gnu_ld=yes
;;
@@ -867,7 +868,16 @@ hppa1.0-*-hpux10*)
;;
hppa*64*-*-hpux11*)
xm_defines=POSIX
- tm_file="pa/pa64-start.h ${tm_file} pa/pa64-regs.h pa/long_double.h pa/elf.h pa/pa-hpux.h pa/pa-hpux11.h pa/pa-64.h pa/pa64-hpux.h"
+ if test x$gas = xyes
+ then
+ tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h \
+ pa/pa64-regs.h pa/long_double.h pa/pa-hpux.h \
+ pa/pa-hpux11.h pa/pa-64.h pa/pa64-hpux.h"
+ else
+ tm_file="pa/pa64-start.h ${tm_file} dbxelf.h pa/elf.h \
+ pa/pa64-regs.h pa/long_double.h pa/pa-hpux.h \
+ pa/pa-hpux11.h pa/pa-64.h pa/pa64-hpux.h"
+ fi
tmake_file="pa/t-pa64 pa/t-pa-hpux"
xmake_file="pa/x-ada"
target_cpu_default="(MASK_PA_11|MASK_PA_20|MASK_GAS)"
diff --git a/gcc/config.in b/gcc/config.in
index 4493e882e89..6c6a74dffd9 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -279,6 +279,39 @@
/* Define to enable the use of a default assembler. */
#undef DEFAULT_ASSEMBLER
+/* Define if your compiler understands volatile. */
+#undef HAVE_VOLATILE
+
+/* Define if your compiler supports the `long double' type. */
+#undef HAVE_LONG_DOUBLE
+
+/* Define if your compiler supports the `long long' type. */
+#undef HAVE_LONG_LONG
+
+/* Define if your compiler supports the `__int64' type. */
+#undef HAVE___INT64
+
+/* Define if the `_Bool' type is built-in. */
+#undef HAVE__BOOL
+
+/* The number of bytes in type short */
+#undef SIZEOF_SHORT
+
+/* The number of bytes in type int */
+#undef SIZEOF_INT
+
+/* The number of bytes in type long */
+#undef SIZEOF_LONG
+
+/* The number of bytes in type long long */
+#undef SIZEOF_LONG_LONG
+
+/* The number of bytes in type __int64 */
+#undef SIZEOF___INT64
+
+/* Define if the host execution character set is EBCDIC. */
+#undef HOST_EBCDIC
+
/* Define if you want more run-time sanity checks. This one gets a grab
bag of miscellaneous but relatively cheap checks. */
#undef ENABLE_CHECKING
@@ -307,6 +340,10 @@
every opportunity. This is extremely expensive. */
#undef ENABLE_GC_ALWAYS_COLLECT
+/* Define if you want to run subprograms and generated programs
+ through valgrind (a memory checker). This is extremely expensive. */
+#undef ENABLE_VALGRIND_CHECKING
+
/* Define if you want to use __cxa_atexit, rather than atexit, to
register C++ destructors for local statics and global objects.
This is essential for fully standards-compliant handling of
@@ -317,39 +354,6 @@
character sets for source code. */
#undef MULTIBYTE_CHARS
-/* Define if your compiler understands volatile. */
-#undef HAVE_VOLATILE
-
-/* Define if your compiler supports the `long double' type. */
-#undef HAVE_LONG_DOUBLE
-
-/* Define if your compiler supports the `long long' type. */
-#undef HAVE_LONG_LONG
-
-/* Define if your compiler supports the `__int64' type. */
-#undef HAVE___INT64
-
-/* Define if the `_Bool' type is built-in. */
-#undef HAVE__BOOL
-
-/* The number of bytes in type short */
-#undef SIZEOF_SHORT
-
-/* The number of bytes in type int */
-#undef SIZEOF_INT
-
-/* The number of bytes in type long */
-#undef SIZEOF_LONG
-
-/* The number of bytes in type long long */
-#undef SIZEOF_LONG_LONG
-
-/* The number of bytes in type __int64 */
-#undef SIZEOF___INT64
-
-/* Define if the host execution character set is EBCDIC. */
-#undef HOST_EBCDIC
-
/* Always define this when using the GNU C Library */
#undef _GNU_SOURCE
diff --git a/gcc/config/alpha/netbsd.h b/gcc/config/alpha/netbsd.h
index 4dc713ba537..f56f7807bed 100644
--- a/gcc/config/alpha/netbsd.h
+++ b/gcc/config/alpha/netbsd.h
@@ -72,7 +72,8 @@ Boston, MA 02111-1307, USA. */
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
"%{ffast-math|funsafe-math-optimizations:crtfm%O%s} \
- %{!shared:crtend%O%s} %{shared:crtendS%O%s}"
+ %{!shared:crtend%O%s} %{shared:crtendS%O%s} \
+ %:if-exists(crtn%O%s)"
/* Attempt to enable execute permissions on the stack. */
diff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h
index 671fe9d3820..cae9bea4ce8 100644
--- a/gcc/config/arm/arm-protos.h
+++ b/gcc/config/arm/arm-protos.h
@@ -45,7 +45,8 @@ extern void arm_encode_call_attribute PARAMS ((tree, int));
extern int arm_function_ok_for_sibcall PARAMS ((tree));
#endif
#ifdef RTX_CODE
-extern int arm_hard_regno_mode_ok PARAMS ((unsigned int, enum machine_mode));
+extern int arm_hard_regno_mode_ok PARAMS ((unsigned int,
+ enum machine_mode));
extern int const_ok_for_arm PARAMS ((HOST_WIDE_INT));
extern int arm_split_constant PARAMS ((RTX_CODE, enum machine_mode,
HOST_WIDE_INT, rtx, rtx, int));
@@ -124,7 +125,8 @@ extern const char * output_move_double PARAMS ((rtx *));
extern const char * output_mov_immediate PARAMS ((rtx *));
extern const char * output_add_immediate PARAMS ((rtx *));
extern const char * arithmetic_instr PARAMS ((rtx, int));
-extern void output_ascii_pseudo_op PARAMS ((FILE *, const unsigned char *, int));
+extern void output_ascii_pseudo_op PARAMS ((FILE *, const unsigned char *,
+ int));
extern const char * output_return_instruction PARAMS ((rtx, int, int));
extern void arm_poke_function_name PARAMS ((FILE *, const char *));
extern void arm_print_operand PARAMS ((FILE *, rtx, int));
@@ -139,6 +141,11 @@ extern rtx arm_function_arg PARAMS ((CUMULATIVE_ARGS *,
enum machine_mode, tree, int));
extern void arm_init_cumulative_args PARAMS ((CUMULATIVE_ARGS *, tree, rtx,
int));
+extern rtx arm_va_arg PARAMS ((tree, tree));
+extern int arm_function_arg_pass_by_reference PARAMS ((CUMULATIVE_ARGS *,
+ enum machine_mode,
+ tree, int));
+
#endif
#if defined AOF_ASSEMBLER
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index a51b95c57d1..a6203c3fbe3 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -1952,6 +1952,35 @@ arm_function_arg (pcum, mode, type, named)
return gen_rtx_REG (mode, pcum->nregs);
}
+
+/* Variable sized types are passed by reference. This is a GCC
+ extension to the ARM ABI. */
+
+int
+arm_function_arg_pass_by_reference (cum, mode, type, named)
+ CUMULATIVE_ARGS *cum ATTRIBUTE_UNUSED;
+ enum machine_mode mode ATTRIBUTE_UNUSED;
+ tree type;
+ int named ATTRIBUTE_UNUSED;
+{
+ return type && TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST;
+}
+
+/* Implement va_arg. */
+
+rtx
+arm_va_arg (valist, type)
+ tree valist, type;
+{
+ /* Variable sized types are passed by reference. */
+ if (TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
+ {
+ rtx addr = std_expand_builtin_va_arg (valist, build_pointer_type (type));
+ return gen_rtx_MEM (ptr_mode, force_reg (Pmode, addr));
+ }
+
+ return std_expand_builtin_va_arg (valist, type);
+}
/* Encode the current state of the #pragma [no_]long_calls. */
typedef enum
@@ -8223,6 +8252,7 @@ arm_get_frame_size ()
int base_size = ROUND_UP (get_frame_size ());
int entry_size = 0;
unsigned long func_type = arm_current_func_type ();
+ int leaf;
if (! TARGET_ARM)
abort();
@@ -8230,6 +8260,31 @@ arm_get_frame_size ()
if (! TARGET_ATPCS)
return base_size;
+ /* We need to know if we are a leaf function. Unfortunately, it
+ is possible to be called after start_sequence has been called,
+ which causes get_insns to return the insns for the sequence,
+ not the function, which will cause leaf_function_p to return
+ the incorrect result.
+
+ To work around this, we cache the computed frame size. This
+ works because we will only be calling RTL expanders that need
+ to know about leaf functions once reload has completed, and the
+ frame size cannot be changed after that time, so we can safely
+ use the cached value. */
+
+ if (reload_completed)
+ return cfun->machine->frame_size;
+
+ leaf = leaf_function_p ();
+
+ /* A leaf function does not need any stack alignment if it has nothing
+ on the stack. */
+ if (leaf && base_size == 0)
+ {
+ cfun->machine->frame_size = 0;
+ return 0;
+ }
+
/* We know that SP will be word aligned on entry, and we must
preserve that condition at any subroutine call. But those are
the only constraints. */
@@ -8254,6 +8309,8 @@ arm_get_frame_size ()
if ((entry_size + base_size + current_function_outgoing_args_size) & 7)
abort ();
+ cfun->machine->frame_size = base_size;
+
return base_size;
}
@@ -10249,6 +10306,7 @@ thumb_get_frame_size ()
int base_size = ROUND_UP (get_frame_size ());
int count_regs = 0;
int entry_size = 0;
+ int leaf;
if (! TARGET_THUMB)
abort ();
@@ -10271,6 +10329,16 @@ thumb_get_frame_size ()
if (reload_completed)
return cfun->machine->frame_size;
+ leaf = leaf_function_p ();
+
+ /* A leaf function does not need any stack alignment if it has nothing
+ on the stack. */
+ if (leaf && base_size == 0)
+ {
+ cfun->machine->frame_size = 0;
+ return 0;
+ }
+
/* We know that SP will be word aligned on entry, and we must
preserve that condition at any subroutine call. But those are
the only constraints. */
@@ -10293,7 +10361,7 @@ thumb_get_frame_size ()
entry_size += 16;
}
- if (count_regs || !leaf_function_p () || thumb_far_jump_used_p (1))
+ if (count_regs || !leaf || thumb_far_jump_used_p (1))
count_regs++; /* LR */
entry_size += count_regs * 4;
diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
index 13da6f701fe..eda2d47feff 100644
--- a/gcc/config/arm/arm.h
+++ b/gcc/config/arm/arm.h
@@ -1487,6 +1487,14 @@ typedef struct
&& (NUM_ARG_REGS < ((CUM).nregs + ARM_NUM_REGS2 (MODE, TYPE))) \
? NUM_ARG_REGS - (CUM).nregs : 0)
+/* A C expression that indicates when an argument must be passed by
+ reference. If nonzero for an argument, a copy of that argument is
+ made in memory and a pointer to the argument is passed instead of
+ the argument itself. The pointer is passed in whatever way is
+ appropriate for passing a pointer to that type. */
+#define FUNCTION_ARG_PASS_BY_REFERENCE(CUM, MODE, TYPE, NAMED) \
+ arm_function_arg_pass_by_reference (&CUM, MODE, TYPE, NAMED)
+
/* 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.
@@ -1504,6 +1512,10 @@ typedef struct
On the ARM, r0-r3 are used to pass args. */
#define FUNCTION_ARG_REGNO_P(REGNO) (IN_RANGE ((REGNO), 0, 3))
+/* Implement `va_arg'. */
+#define EXPAND_BUILTIN_VA_ARG(valist, type) \
+ arm_va_arg (valist, type)
+
/* Tail calling. */
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index 1d57485b8ec..82fafa3f7fa 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -2036,7 +2036,7 @@
"TARGET_ARM
&& reload_completed
&& operands[0] != operands[1]"
- [(set (match_dup 0) (and:SI (not:SI (match_dup 1)) (match_dup 2)))
+ [(set (match_dup 0) (and:SI (not:SI (match_dup 2)) (match_dup 1)))
(set (match_dup 3) (match_dup 4))]
"
{
@@ -2053,11 +2053,11 @@
[(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
(and:DI (not:DI (sign_extend:DI
(match_operand:SI 2 "s_register_operand" "r,r")))
- (match_operand:DI 1 "s_register_operand" "?r,0")))]
+ (match_operand:DI 1 "s_register_operand" "0,r")))]
"TARGET_ARM"
"#"
"TARGET_ARM && reload_completed"
- [(set (match_dup 0) (and:SI (not:SI (match_dup 1)) (match_dup 2)))
+ [(set (match_dup 0) (and:SI (not:SI (match_dup 2)) (match_dup 1)))
(set (match_dup 3) (and:SI (not:SI
(ashiftrt:SI (match_dup 2) (const_int 31)))
(match_dup 4)))]
diff --git a/gcc/config/arm/elf.h b/gcc/config/arm/elf.h
index 6d86476457c..0ad23f8f5d0 100644
--- a/gcc/config/arm/elf.h
+++ b/gcc/config/arm/elf.h
@@ -36,21 +36,27 @@ Boston, MA 02111-1307, USA. */
#ifndef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \
- { "subtarget_extra_asm_spec", SUBTARGET_EXTRA_ASM_SPEC },
+ { "subtarget_extra_asm_spec", SUBTARGET_EXTRA_ASM_SPEC }, \
+ { "subtarget_asm_float_spec", SUBTARGET_ASM_FLOAT_SPEC },
#endif
#ifndef SUBTARGET_EXTRA_ASM_SPEC
#define SUBTARGET_EXTRA_ASM_SPEC ""
#endif
+#ifndef SUBTARGET_ASM_FLOAT_SPEC
+#define SUBTARGET_ASM_FLOAT_SPEC "\
+%{mapcs-float:-mfloat} %{msoft-float:-mno-fpu}"
+#endif
+
#ifndef ASM_SPEC
#define ASM_SPEC "\
%{mbig-endian:-EB} \
+%{mlittle-endian:-EL} \
%{mcpu=*:-mcpu=%*} \
%{march=*:-march=%*} \
%{mapcs-*:-mapcs-%*} \
-%{mapcs-float:-mfloat} \
-%{msoft-float:-mno-fpu} \
+%(subtarget_asm_float_spec) \
%{mthumb-interwork:-mthumb-interwork} \
%(subtarget_extra_asm_spec)"
#endif
@@ -91,7 +97,7 @@ Boston, MA 02111-1307, USA. */
#define JUMP_TABLES_IN_TEXT_SECTION (TARGET_ARM)
#ifndef LINK_SPEC
-#define LINK_SPEC "%{mbig-endian:-EB} -X"
+#define LINK_SPEC "%{mbig-endian:-EB} %{mlittle-endian:-EL} -X"
#endif
/* Run-time Target Specification. */
diff --git a/gcc/config/fr30/fr30-protos.h b/gcc/config/fr30/fr30-protos.h
index e6d31388767..4aab88c4842 100644
--- a/gcc/config/fr30/fr30-protos.h
+++ b/gcc/config/fr30/fr30-protos.h
@@ -1,5 +1,5 @@
/* Prototypes for fr30.c functions used in the md file & elsewhere.
- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -39,6 +39,7 @@ extern int low_register_operand PARAMS ((rtx, Mmode));
extern int call_operand PARAMS ((rtx, Mmode));
extern int di_operand PARAMS ((rtx, Mmode));
extern int nonimmediate_di_operand PARAMS ((rtx, Mmode));
+extern int fr30_const_double_is_zero PARAMS ((rtx));
#undef Mmode
#endif /* HAVE_MACHINE_MODES */
#endif /* RTX_CODE */
diff --git a/gcc/config/fr30/fr30.c b/gcc/config/fr30/fr30.c
index e163f926614..d01d6bd1610 100644
--- a/gcc/config/fr30/fr30.c
+++ b/gcc/config/fr30/fr30.c
@@ -951,6 +951,20 @@ fr30_check_multiple_regs (operands, num_operands, descending)
return 1;
}
+int
+fr30_const_double_is_zero (operand)
+ rtx operand;
+{
+ REAL_VALUE_TYPE d;
+
+ if (operand == NULL || GET_CODE (operand) != CONST_DOUBLE)
+ return 0;
+
+ REAL_VALUE_FROM_CONST_DOUBLE (d, operand);
+
+ return REAL_VALUES_EQUAL (d, dconst0);
+}
+
/*}}}*/
/*{{{ Instruction Output Routines */
diff --git a/gcc/config/fr30/fr30.md b/gcc/config/fr30/fr30.md
index b78e99d96a1..b19f6558057 100644
--- a/gcc/config/fr30/fr30.md
+++ b/gcc/config/fr30/fr30.md
@@ -1,5 +1,5 @@
;; FR30 machine description.
-;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
;; Contributed by Cygnus Solutions.
;; This file is part of GNU CC.
@@ -571,14 +571,9 @@
const char * ldi_instr;
const char * tmp_reg;
static char buffer[100];
- REAL_VALUE_TYPE d;
- REAL_VALUE_FROM_CONST_DOUBLE (d, operands[1]);
-
- if (REAL_VALUES_EQUAL (d, dconst0))
- ldi_instr = \"ldi:8\";
- else
- ldi_instr = \"ldi:32\";
+ ldi_instr = fr30_const_double_is_zero (operands[1])
+ ? ldi_instr = \"ldi:8\" : \"ldi:32\";
tmp_reg = reg_names [COMPILER_SCRATCH_REGISTER];
diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c
index 43a0c88ca30..9a516c4f068 100644
--- a/gcc/config/h8300/h8300.c
+++ b/gcc/config/h8300/h8300.c
@@ -312,7 +312,13 @@ h8300_init_once ()
if (!TARGET_H8300S && TARGET_MAC)
{
error ("-ms2600 is used without -ms");
- target_flags |= 1;
+ target_flags |= MASK_H8300S;
+ }
+
+ if (TARGET_H8300 && TARGET_NORMAL_MODE)
+ {
+ error ("-mn used without -mh or -ms");
+ target_flags ^= MASK_NORMAL_MODE;
}
/* Some of the shifts are optimized for speed by default.
@@ -763,7 +769,9 @@ single_one_operand (operand, mode)
/* We really need to do this masking because 0x80 in QImode is
represented as -128 for example. */
unsigned HOST_WIDE_INT mask =
- ((unsigned HOST_WIDE_INT) 1 << GET_MODE_BITSIZE (mode)) - 1;
+ (GET_MODE_BITSIZE (mode) < HOST_BITS_PER_WIDE_INT)
+ ? ((unsigned HOST_WIDE_INT) 1 << GET_MODE_BITSIZE (mode)) - 1
+ : ~0;
unsigned HOST_WIDE_INT value = INTVAL (operand);
if (exact_log2 (value & mask) >= 0)
@@ -786,7 +794,9 @@ single_zero_operand (operand, mode)
/* We really need to do this masking because 0x80 in QImode is
represented as -128 for example. */
unsigned HOST_WIDE_INT mask =
- ((unsigned HOST_WIDE_INT) 1 << GET_MODE_BITSIZE (mode)) - 1;
+ (GET_MODE_BITSIZE (mode) < HOST_BITS_PER_WIDE_INT)
+ ? ((unsigned HOST_WIDE_INT) 1 << GET_MODE_BITSIZE (mode)) - 1
+ : ~0;
unsigned HOST_WIDE_INT value = INTVAL (operand);
if (exact_log2 (~value & mask) >= 0)
@@ -1430,12 +1440,6 @@ print_operand (file, x, code)
case MEM:
{
rtx addr = XEXP (x, 0);
- int eightbit_ok = ((GET_CODE (addr) == SYMBOL_REF
- && SYMBOL_REF_FLAG (addr))
- || EIGHTBIT_CONSTANT_ADDRESS_P (addr));
- int tiny_ok = ((GET_CODE (addr) == SYMBOL_REF
- && TINY_DATA_NAME_P (XSTR (addr, 0)))
- || TINY_CONSTANT_ADDRESS_P (addr));
fprintf (file, "@");
output_address (addr);
@@ -1446,7 +1450,7 @@ print_operand (file, x, code)
{
case 'R':
/* Used for mov.b and bit operations. */
- if (eightbit_ok)
+ if (h8300_eightbit_constant_address_p (addr))
{
fprintf (file, ":8");
break;
@@ -1460,7 +1464,7 @@ print_operand (file, x, code)
case 'T':
case 'S':
/* Used for mov.w and mov.l. */
- if (tiny_ok)
+ if (h8300_tiny_constant_address_p (addr))
fprintf (file, ":16");
break;
default:
@@ -1635,6 +1639,10 @@ h8300_initial_elimination_offset (from, to)
if (from == ARG_POINTER_REGNUM && to == STACK_POINTER_REGNUM)
offset += UNITS_PER_WORD; /* Skip saved PC */
}
+
+ if ((TARGET_H8300H || TARGET_H8300S) && TARGET_NORMAL_MODE)
+ offset -= 2;
+
return offset;
}
@@ -3085,6 +3093,14 @@ compute_a_shift_length (insn, operands)
{
case SHIFT_SPECIAL:
wlength += h8300_asm_insn_count (info.special);
+
+ /* Every assembly instruction used in SHIFT_SPECIAL case
+ takes 2 bytes except xor.l, which takes 4 bytes, so if we
+ see xor.l, we just pretend that xor.l counts as two insns
+ so that the insn length will be computed correctly. */
+ if (strstr (info.special, "xor.l") != NULL)
+ wlength++;
+
/* Fall through. */
case SHIFT_INLINE:
@@ -3717,8 +3733,7 @@ h8300_adjust_insn_length (insn, length)
/* @aa:8 is 2 bytes shorter than the longest. */
if (GET_MODE (SET_SRC (pat)) == QImode
- && ((GET_CODE (addr) == SYMBOL_REF && SYMBOL_REF_FLAG (addr))
- || EIGHTBIT_CONSTANT_ADDRESS_P (addr)))
+ && h8300_eightbit_constant_address_p (addr))
return -2;
}
else
@@ -3741,14 +3756,11 @@ h8300_adjust_insn_length (insn, length)
/* @aa:8 is 6 bytes shorter than the longest. */
if (GET_MODE (SET_SRC (pat)) == QImode
- && ((GET_CODE (addr) == SYMBOL_REF && SYMBOL_REF_FLAG (addr))
- || EIGHTBIT_CONSTANT_ADDRESS_P (addr)))
+ && h8300_eightbit_constant_address_p (addr))
return -6;
/* @aa:16 is 4 bytes shorter than the longest. */
- if ((GET_CODE (addr) == SYMBOL_REF
- && TINY_DATA_NAME_P (XSTR (addr, 0)))
- || TINY_CONSTANT_ADDRESS_P (addr))
+ if (h8300_tiny_constant_address_p (addr))
return -4;
/* @aa:24 is 2 bytes shorter than the longest. */
@@ -3857,6 +3869,9 @@ h8300_asm_named_section (name, flags)
}
#endif /* ! OBJECT_FORMAT_ELF */
+/* Nonzero if X is a constant address suitable as an 8-bit absolute,
+ which is a special case of the 'R' operand. */
+
int
h8300_eightbit_constant_address_p (x)
rtx x;
@@ -3871,17 +3886,24 @@ h8300_eightbit_constant_address_p (x)
unsigned HOST_WIDE_INT addr;
+ /* We accept symbols declared with eightbit_data. */
+ if (GET_CODE (x) == SYMBOL_REF && SYMBOL_REF_FLAG (x))
+ return 1;
+
if (GET_CODE (x) != CONST_INT)
return 0;
addr = INTVAL (x);
return (0
- || (TARGET_H8300 && IN_RANGE (addr, n1, n2))
+ || ((TARGET_H8300 || TARGET_NORMAL_MODE) && IN_RANGE (addr, n1, n2))
|| (TARGET_H8300H && IN_RANGE (addr, h1, h2))
|| (TARGET_H8300S && IN_RANGE (addr, s1, s2)));
}
+/* Nonzero if X is a constant address suitable as an 16-bit absolute
+ on H8/300H and H8S. */
+
int
h8300_tiny_constant_address_p (x)
rtx x;
@@ -3898,14 +3920,18 @@ h8300_tiny_constant_address_p (x)
unsigned HOST_WIDE_INT addr;
+ /* We accept symbols declared with tiny_data. */
+ if (GET_CODE (x) == SYMBOL_REF && TINY_DATA_NAME_P (XSTR (x, 0)))
+ return 1;
+
if (GET_CODE (x) != CONST_INT)
return 0;
addr = INTVAL (x);
return (0
- || (TARGET_H8300H
- && IN_RANGE (addr, h1, h2) || IN_RANGE (addr, h3, h4))
- || (TARGET_H8300S
- && IN_RANGE (addr, s1, s2) || IN_RANGE (addr, s3, s4)));
+ || ((TARGET_H8300H && !TARGET_NORMAL_MODE)
+ && (IN_RANGE (addr, h1, h2) || IN_RANGE (addr, h3, h4)))
+ || ((TARGET_H8300S && !TARGET_NORMAL_MODE)
+ && (IN_RANGE (addr, s1, s2) || IN_RANGE (addr, s3, s4))));
}
diff --git a/gcc/config/h8300/h8300.h b/gcc/config/h8300/h8300.h
index 075ddb8bcb0..29a9ba49fa8 100644
--- a/gcc/config/h8300/h8300.h
+++ b/gcc/config/h8300/h8300.h
@@ -46,12 +46,20 @@ extern const char * const *h8_reg_names;
builtin_define ("__H8300H__"); \
builtin_assert ("cpu=h8300h"); \
builtin_assert ("machine=h8300h"); \
+ if (TARGET_NORMAL_MODE) \
+ { \
+ builtin_define ("__NORMAL_MODE__"); \
+ } \
} \
else if (TARGET_H8300S) \
{ \
builtin_define ("__H8300S__"); \
builtin_assert ("cpu=h8300s"); \
builtin_assert ("machine=h8300s"); \
+ if (TARGET_NORMAL_MODE) \
+ { \
+ builtin_define ("__NORMAL_MODE__"); \
+ } \
} \
else \
{ \
@@ -91,6 +99,7 @@ extern int target_flags;
#define MASK_ADDRESSES 0x00000040
#define MASK_QUICKCALL 0x00000080
#define MASK_SLOWBYTE 0x00000100
+#define MASK_NORMAL_MODE 0x00000200
#define MASK_RELAX 0x00000400
#define MASK_RTL_DUMP 0x00000800
#define MASK_H8300H 0x00001000
@@ -119,6 +128,7 @@ extern int target_flags;
#define TARGET_H8300 (! TARGET_H8300H && ! TARGET_H8300S)
#define TARGET_H8300H (target_flags & MASK_H8300H)
#define TARGET_H8300S (target_flags & MASK_H8300S)
+#define TARGET_NORMAL_MODE (target_flags & MASK_NORMAL_MODE)
/* mac register and relevant instructions are available. */
#define TARGET_MAC (target_flags & MASK_MAC)
@@ -152,6 +162,7 @@ extern int target_flags;
{"relax", MASK_RELAX, N_("Enable linker relaxing")}, \
{"rtl-dump", MASK_RTL_DUMP, NULL}, \
{"h", MASK_H8300H, N_("Generate H8/300H code")}, \
+ {"n", MASK_NORMAL_MODE, N_("Enable the normal mode")}, \
{"no-h", -MASK_H8300H, N_("Do not generate H8/300H code")}, \
{"align-300", MASK_ALIGN_300, N_("Use H8/300 alignment rules")}, \
{ "", TARGET_DEFAULT, NULL}}
@@ -159,6 +170,7 @@ extern int target_flags;
#ifdef IN_LIBGCC2
#undef TARGET_H8300H
#undef TARGET_H8300S
+#undef TARGET_NORMAL_MODE
/* If compiling libgcc2, make these compile time constants based on what
flags are we actually compiling with. */
#ifdef __H8300H__
@@ -171,6 +183,11 @@ extern int target_flags;
#else
#define TARGET_H8300S 0
#endif
+#ifdef __NORMAL_MODE__
+#define TARGET_NORMAL_MODE 1
+#else
+#define TARGET_NORMAL_MODE 0
+#endif
#endif /* !IN_LIBGCC2 */
/* Do things that must be done once at start up. */
@@ -841,18 +858,6 @@ struct cum_arg
? !h8300_shift_needs_scratch_p (INTVAL (OP), SImode) \
: 0)
-/* Nonzero if X is a constant address suitable as an 8-bit absolute,
- which is a special case of the 'R' operand. */
-
-#define EIGHTBIT_CONSTANT_ADDRESS_P(X) \
- h8300_eightbit_constant_address_p (X)
-
-/* Nonzero if X is a constant address suitable as an 16-bit absolute
- on H8/300H and H8S. */
-
-#define TINY_CONSTANT_ADDRESS_P(X) \
- h8300_tiny_constant_address_p (X)
-
/* 'U' if valid for a bset destination;
i.e. a register, register indirect, or the eightbit memory region
(a SYMBOL_REF with an SYMBOL_REF_FLAG set).
@@ -863,7 +868,7 @@ struct cum_arg
|| (GET_CODE (OP) == MEM && GET_CODE (XEXP (OP, 0)) == REG \
&& REG_OK_FOR_BASE_P (XEXP (OP, 0))) \
|| (GET_CODE (OP) == MEM && GET_CODE (XEXP (OP, 0)) == SYMBOL_REF \
- && (TARGET_H8300S || SYMBOL_REF_FLAG (XEXP (OP, 0)))) \
+ && TARGET_H8300S) \
|| ((GET_CODE (OP) == MEM && GET_CODE (XEXP (OP, 0)) == CONST \
&& GET_CODE (XEXP (XEXP (OP, 0), 0)) == PLUS \
&& GET_CODE (XEXP (XEXP (XEXP (OP, 0), 0), 0)) == SYMBOL_REF \
@@ -871,7 +876,7 @@ struct cum_arg
&& (TARGET_H8300S \
|| SYMBOL_REF_FLAG (XEXP (XEXP (XEXP (OP, 0), 0), 0)))) \
|| (GET_CODE (OP) == MEM \
- && EIGHTBIT_CONSTANT_ADDRESS_P (XEXP (OP, 0))) \
+ && h8300_eightbit_constant_address_p (XEXP (OP, 0))) \
|| (GET_CODE (OP) == MEM && TARGET_H8300S \
&& GET_CODE (XEXP (OP, 0)) == CONST_INT))
@@ -974,13 +979,19 @@ struct cum_arg
/* 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_H8300H || TARGET_H8300S ? SImode : HImode)
+#define Pmode \
+ ((TARGET_H8300H || TARGET_H8300S) && !TARGET_NORMAL_MODE ? SImode : HImode)
/* ANSI C types.
We use longs for the H8/300H and the H8S because ints can be 16 or 32.
GCC requires SIZE_TYPE to be the same size as pointers. */
-#define SIZE_TYPE (TARGET_H8300 ? "unsigned int" : "long unsigned int")
-#define PTRDIFF_TYPE (TARGET_H8300 ? "int" : "long int")
+#define SIZE_TYPE \
+ (TARGET_H8300 || TARGET_NORMAL_MODE ? "unsigned int" : "long unsigned int")
+#define PTRDIFF_TYPE \
+ (TARGET_H8300 || TARGET_NORMAL_MODE ? "int" : "long int")
+
+#define POINTER_SIZE \
+ ((TARGET_H8300H || TARGET_H8300S) && !TARGET_NORMAL_MODE ? 32 : 16)
#define WCHAR_TYPE "short unsigned int"
#define WCHAR_TYPE_SIZE 16
@@ -1068,7 +1079,8 @@ struct cum_arg
#define IDENT_ASM_OP "\t.ident\n"
/* The assembler op to get a word, 2 bytes for the H8/300, 4 for H8/300H. */
-#define ASM_WORD_OP (TARGET_H8300 ? "\t.word\t" : "\t.long\t")
+#define ASM_WORD_OP \
+ (TARGET_H8300 || TARGET_NORMAL_MODE ? "\t.word\t" : "\t.long\t")
#define TEXT_SECTION_ASM_OP "\t.section .text"
#define DATA_SECTION_ASM_OP "\t.section .data"
diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md
index f0b906810af..5e9f114d3ec 100644
--- a/gcc/config/h8300/h8300.md
+++ b/gcc/config/h8300/h8300.md
@@ -90,7 +90,7 @@
(define_attr "adjust_length" "yes,no"
(cond [(eq_attr "type" "branch") (const_string "no")]
- (const_string "yes")))
+ (const_string "yes")))
;; Condition code settings.
;;
@@ -114,9 +114,9 @@
(define_insn "pushqi1_h8300"
[(parallel [(set (reg:HI SP_REG)
- (plus:HI (reg:HI SP_REG) (const_int -2)))
- (set (mem:QI (plus:HI (reg:HI SP_REG) (const_int -1)))
- (match_operand:QI 0 "register_operand" "r"))])]
+ (plus:HI (reg:HI SP_REG) (const_int -2)))
+ (set (mem:QI (plus:HI (reg:HI SP_REG) (const_int -1)))
+ (match_operand:QI 0 "register_operand" "r"))])]
"TARGET_H8300"
"mov.w\\t%T0,@-r7"
[(set_attr "length" "2")
@@ -124,9 +124,9 @@
(define_insn "pushqi1_h8300hs"
[(parallel [(set (reg:SI SP_REG)
- (plus:SI (reg:SI SP_REG) (const_int -4)))
- (set (mem:QI (plus:SI (reg:SI SP_REG) (const_int -3)))
- (match_operand:QI 0 "register_operand" "r"))])]
+ (plus:SI (reg:SI SP_REG) (const_int -4)))
+ (set (mem:QI (plus:SI (reg:SI SP_REG) (const_int -3)))
+ (match_operand:QI 0 "register_operand" "r"))])]
"TARGET_H8300H || TARGET_H8300S"
"mov.l\\t%S0,@-er7"
[(set_attr "length" "4")
@@ -208,15 +208,15 @@
(define_expand "pushhi1_h8300"
[(set (mem:HI (pre_dec:HI (reg:HI SP_REG)))
- (match_operand:HI 0 "register_operand" ""))]
+ (match_operand:HI 0 "register_operand" ""))]
"TARGET_H8300"
"")
(define_insn "pushhi1_h8300hs"
[(parallel [(set (reg:SI SP_REG)
- (plus:SI (reg:SI SP_REG) (const_int -4)))
- (set (mem:HI (plus:SI (reg:SI SP_REG) (const_int -2)))
- (match_operand:HI 0 "register_operand" "r"))])]
+ (plus:SI (reg:SI SP_REG) (const_int -4)))
+ (set (mem:HI (plus:SI (reg:SI SP_REG) (const_int -2)))
+ (match_operand:HI 0 "register_operand" "r"))])]
"TARGET_H8300H || TARGET_H8300S"
"mov.l\\t%S0,@-er7"
[(set_attr "length" "4")
@@ -510,7 +510,7 @@
}
/* Look for constants that can be obtained by subs, inc, and
- dec to 0. */
+ dec to 0. */
switch (val & 0xffffffff)
{
case 0xffffffff:
@@ -599,6 +599,43 @@
[(set_attr "length" "2")
(set_attr "cc" "set_zn")])
+(define_insn ""
+ [(set (cc0)
+ (and:HI (match_operand:HI 0 "register_operand" "r")
+ (match_operand:HI 1 "single_one_operand" "n")))]
+ ""
+ "*
+{
+ operands[1] = GEN_INT (INTVAL (operands[1]) & 0xffff);
+ if (INTVAL (operands[1]) > 128)
+ {
+ operands[1] = GEN_INT (INTVAL (operands[1]) >> 8);
+ return \"btst\\t%V1,%t0\";
+ }
+ return \"btst\\t%V1,%s0\";
+}"
+ [(set_attr "length" "2")
+ (set_attr "cc" "set_zn")])
+
+(define_insn ""
+ [(set (cc0)
+ (and:SI (match_operand:SI 0 "register_operand" "r")
+ (match_operand:SI 1 "single_one_operand" "n")))]
+ "(TARGET_H8300H || TARGET_H8300S)
+ && (INTVAL (operands[1]) & 0xffff) != 0"
+ "*
+{
+ operands[1] = GEN_INT (INTVAL (operands[1]) & 0xffff);
+ if (INTVAL (operands[1]) > 128)
+ {
+ operands[1] = GEN_INT (INTVAL (operands[1]) >> 8);
+ return \"btst\\t%V1,%x0\";
+ }
+ return \"btst\\t%V1,%w0\";
+}"
+ [(set_attr "length" "2")
+ (set_attr "cc" "set_zn")])
+
(define_insn "tstqi"
[(set (cc0) (match_operand:QI 0 "register_operand" "r"))]
""
@@ -1058,15 +1095,15 @@
(match_operand:QI 3 "single_one_operand" "n"))
(match_operand:QI 1 "register_operand" "0")))]
""
- "bld\\t%V3,%X2\;bst\\t%V3,%X0"
- [(set_attr "length" "4")
+ "bld\\t%V3,%X2\;bor\\t%V3,%X0\;bst\\t%V3,%X0"
+ [(set_attr "length" "6")
(set_attr "cc" "clobber")])
(define_insn "*andorhi3"
[(set (match_operand:HI 0 "register_operand" "=r")
(ior:HI (and:HI (match_operand:HI 2 "register_operand" "r")
(match_operand:HI 3 "single_one_operand" "n"))
- (match_operand:HI 1 "register_operand" "0")))]
+ (match_operand:HI 1 "register_operand" "0")))]
""
"*
{
@@ -1074,11 +1111,30 @@
if (INTVAL (operands[3]) > 128)
{
operands[3] = GEN_INT (INTVAL (operands[3]) >> 8);
- return \"bld\\t%V3,%t2\;bst\\t%V3,%t0\";
+ return \"bld\\t%V3,%t2\;bor\\t%V3,%t0\;bst\\t%V3,%t0\";
}
- return \"bld\\t%V3,%s2\;bst\\t%V3,%s0\";
+ return \"bld\\t%V3,%s2\;bor\\t%V3,%s0\;bst\\t%V3,%s0\";
}"
- [(set_attr "length" "4")
+ [(set_attr "length" "6")
+ (set_attr "cc" "clobber")])
+
+(define_insn "*andorsi3"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (ior:SI (and:SI (match_operand:SI 2 "register_operand" "r")
+ (match_operand:SI 3 "single_one_operand" "n"))
+ (match_operand:SI 1 "register_operand" "0")))]
+ "(INTVAL (operands[3]) & 0xffff) != 0"
+ "*
+{
+ operands[3] = GEN_INT (INTVAL (operands[3]) & 0xffff);
+ if (INTVAL (operands[3]) > 128)
+ {
+ operands[3] = GEN_INT (INTVAL (operands[3]) >> 8);
+ return \"bld\\t%V3,%x2\;bor\\t%V3,%x0\;bst\\t%V3,%x0\";
+ }
+ return \"bld\\t%V3,%w2\;bor\\t%V3,%w0\;bst\\t%V3,%w0\";
+}"
+ [(set_attr "length" "6")
(set_attr "cc" "clobber")])
(define_expand "andsi3"
@@ -1435,9 +1491,9 @@
{
if ((cc_status.flags & CC_OVERFLOW_UNUSABLE) != 0
&& (GET_CODE (operands[1]) == GT
- || GET_CODE (operands[1]) == GE
- || GET_CODE (operands[1]) == LE
- || GET_CODE (operands[1]) == LT))
+ || GET_CODE (operands[1]) == GE
+ || GET_CODE (operands[1]) == LE
+ || GET_CODE (operands[1]) == LT))
{
cc_status.flags &= ~CC_OVERFLOW_UNUSABLE;
return 0;
@@ -1464,9 +1520,9 @@
{
if ((cc_status.flags & CC_OVERFLOW_UNUSABLE) != 0
&& (GET_CODE (operands[1]) == GT
- || GET_CODE (operands[1]) == GE
- || GET_CODE (operands[1]) == LE
- || GET_CODE (operands[1]) == LT))
+ || GET_CODE (operands[1]) == GE
+ || GET_CODE (operands[1]) == LE
+ || GET_CODE (operands[1]) == LT))
{
cc_status.flags &= ~CC_OVERFLOW_UNUSABLE;
return 0;
@@ -1524,6 +1580,14 @@
[(set_attr "cc" "none")
(set_attr "length" "2")])
+(define_insn "tablejump_normal_mode"
+ [(set (pc) (match_operand:HI 0 "register_operand" "r"))
+ (use (label_ref (match_operand 1 "" "")))]
+ "(TARGET_H8300H || TARGET_H8300S) && TARGET_NORMAL_MODE"
+ "jmp @%S0"
+ [(set_attr "cc" "none")
+ (set_attr "length" "2")])
+
;; This is a define expand, because pointers may be either 16 or 32 bits.
(define_expand "indirect_jump"
@@ -1545,6 +1609,13 @@
[(set_attr "cc" "none")
(set_attr "length" "2")])
+(define_insn "indirect_jump_normal_mode"
+ [(set (pc) (match_operand:HI 0 "jump_address_operand" "Vr"))]
+ "(TARGET_H8300H || TARGET_H8300S) && TARGET_NORMAL_MODE"
+ "jmp @%S0"
+ [(set_attr "cc" "none")
+ (set_attr "length" "2")])
+
;; Call subroutine with no return value.
;; ??? Even though we use HImode here, this works on the H8/300H and H8S.
@@ -2082,7 +2153,7 @@
(define_insn ""
[(set (match_operand:HI 0 "register_operand" "=r")
- (ior:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "r"))
+ (ior:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "r"))
(match_operand:HI 2 "register_operand" "0")))]
"REG_P (operands[0])
&& REG_P (operands[1])
@@ -2093,7 +2164,7 @@
(define_insn ""
[(set (match_operand:SI 0 "register_operand" "=r")
- (ior:SI (zero_extend:SI (match_operand:HI 1 "register_operand" "r"))
+ (ior:SI (zero_extend:SI (match_operand:HI 1 "register_operand" "r"))
(match_operand:SI 2 "register_operand" "0")))]
"(TARGET_H8300H || TARGET_H8300S)
&& REG_P (operands[0])
@@ -2105,18 +2176,16 @@
(define_insn ""
[(set (match_operand:SI 0 "register_operand" "=r")
- (ior:SI (zero_extend:SI (match_operand:QI 1 "register_operand" "r"))
+ (ior:SI (zero_extend:SI (match_operand:QI 1 "register_operand" "r"))
(match_operand:SI 2 "register_operand" "0")))]
- "REG_P (operands[0])
- && REG_P (operands[1])
- && REGNO (operands[0]) != REGNO (operands[1])"
- "or\\t%X1,%s0"
+ ""
+ "or\\t%X1,%w0"
[(set_attr "cc" "clobber")
(set_attr "length" "2")])
(define_insn ""
[(set (match_operand:HI 0 "register_operand" "=r")
- (xor:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "r"))
+ (xor:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "r"))
(match_operand:HI 2 "register_operand" "0")))]
"REG_P (operands[0])
&& REG_P (operands[1])
@@ -2127,7 +2196,7 @@
(define_insn ""
[(set (match_operand:SI 0 "register_operand" "=r")
- (xor:SI (zero_extend:SI (match_operand:HI 1 "register_operand" "r"))
+ (xor:SI (zero_extend:SI (match_operand:HI 1 "register_operand" "r"))
(match_operand:SI 2 "register_operand" "0")))]
"(TARGET_H8300H || TARGET_H8300S)
&& REG_P (operands[0])
@@ -2139,18 +2208,18 @@
(define_insn ""
[(set (match_operand:SI 0 "register_operand" "=r")
- (xor:SI (zero_extend:SI (match_operand:QI 1 "register_operand" "r"))
+ (xor:SI (zero_extend:SI (match_operand:QI 1 "register_operand" "r"))
(match_operand:SI 2 "register_operand" "0")))]
"REG_P (operands[0])
&& REG_P (operands[1])
&& REGNO (operands[0]) != REGNO (operands[1])"
- "xor\\t%X1,%s0"
+ "xor\\t%X1,%w0"
[(set_attr "cc" "clobber")
(set_attr "length" "2")])
(define_insn ""
[(set (match_operand:HI 0 "register_operand" "=r")
- (ior:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "0"))
+ (ior:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "0"))
(ashift:HI (match_operand:HI 2 "register_operand" "r")
(const_int 8))))]
"REG_P (operands[0])
@@ -2162,7 +2231,7 @@
(define_insn ""
[(set (match_operand:SI 0 "register_operand" "=r")
- (ior:SI (zero_extend:SI (match_operand:HI 1 "register_operand" "0"))
+ (ior:SI (zero_extend:SI (match_operand:HI 1 "register_operand" "0"))
(ashift:SI (match_operand:SI 2 "register_operand" "r")
(const_int 16))))]
"(TARGET_H8300H || TARGET_H8300S)
@@ -2173,6 +2242,48 @@
[(set_attr "cc" "clobber")
(set_attr "length" "2")])
+;; Storing a part of HImode to QImode.
+
+(define_insn ""
+ [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
+ (subreg:QI (lshiftrt:HI (match_operand:HI 1 "register_operand" "r")
+ (const_int 8)) 1))]
+ ""
+ "mov.b\\t%t1,%R0"
+ [(set_attr "cc" "set_znv")
+ (set_attr "length" "8")])
+
+;; Storing a part of SImode to QImode.
+
+(define_insn ""
+ [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
+ (subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ (const_int 8)) 3))]
+ ""
+ "mov.b\\t%x1,%R0"
+ [(set_attr "cc" "set_znv")
+ (set_attr "length" "8")])
+
+(define_insn ""
+ [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
+ (subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ (const_int 16)) 3))
+ (clobber (match_scratch:SI 2 "=&r"))]
+ "TARGET_H8300H || TARGET_H8300S"
+ "mov.w\\t%e1,%f2\;mov.b\\t%w2,%R0"
+ [(set_attr "cc" "set_znv")
+ (set_attr "length" "10")])
+
+(define_insn ""
+ [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
+ (subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ (const_int 24)) 3))
+ (clobber (match_scratch:SI 2 "=&r"))]
+ "TARGET_H8300H || TARGET_H8300S"
+ "mov.w\\t%e1,%f2\;mov.b\\t%x2,%R0"
+ [(set_attr "cc" "set_znv")
+ (set_attr "length" "10")])
+
(define_insn_and_split ""
[(set (pc)
(if_then_else (eq (zero_extract:SI (subreg:SI (match_operand:QI 0 "register_operand" "") 0)
diff --git a/gcc/config/h8300/t-h8300 b/gcc/config/h8300/t-h8300
index de59acb6367..d8cbd4f1293 100644
--- a/gcc/config/h8300/t-h8300
+++ b/gcc/config/h8300/t-h8300
@@ -25,10 +25,9 @@ fp-bit.c: $(srcdir)/config/fp-bit.c
echo '#endif' >> fp-bit.c
cat $(srcdir)/config/fp-bit.c >> fp-bit.c
-MULTILIB_OPTIONS = mh/ms mint32
-MULTILIB_DIRNAMES = h8300h h8300s int32
-MULTILIB_EXCEPTIONS = mint32
+MULTILIB_OPTIONS = mh/ms mn mint32
+MULTILIB_DIRNAMES = h8300h h8300s normal int32
+MULTILIB_EXCEPTIONS = mint32 mn mn/mint32
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
-
diff --git a/gcc/config/i386/athlon.md b/gcc/config/i386/athlon.md
index d6a52f2cbdd..548f2adf422 100644
--- a/gcc/config/i386/athlon.md
+++ b/gcc/config/i386/athlon.md
@@ -63,7 +63,7 @@
(define_function_unit "athlon_ieu" 3 0
(and (eq_attr "cpu" "athlon")
- (eq_attr "type" "alu1,negnot,alu,icmp,test,imov,imovx,lea,incdec,ishift,rotate,ibr,call,callv,icmov,cld,pop,setcc,push,pop"))
+ (eq_attr "type" "alu1,negnot,alu,icmp,test,imov,imovx,lea,incdec,ishift,ishift1,rotate,rotate1,ibr,call,callv,icmov,cld,pop,setcc,push,pop"))
1 1)
(define_function_unit "athlon_ieu" 3 0
diff --git a/gcc/config/i386/beos-elf.h b/gcc/config/i386/beos-elf.h
index 7f9c2e2edec..b84519f4d67 100644
--- a/gcc/config/i386/beos-elf.h
+++ b/gcc/config/i386/beos-elf.h
@@ -40,21 +40,8 @@ Boston, MA 02111-1307, USA. */
/* Output assembler code to FILE to increment profiler label # LABELNO
for profiling a function entry. */
-#undef FUNCTION_PROFILER
-#define FUNCTION_PROFILER(FILE, LABELNO) \
-{ \
- if (flag_pic) \
- { \
- fprintf (FILE, "\tleal %sP%d@GOTOFF(%%ebx),%%edx\n", \
- LPREFIX, (LABELNO)); \
- fprintf (FILE, "\tcall *mcount@GOT(%%ebx)\n"); \
- } \
- else \
- { \
- fprintf (FILE, "\tmovl $%sP%d,%%edx\n", LPREFIX, (LABELNO)); \
- fprintf (FILE, "\tcall mcount\n"); \
- } \
-}
+#undef MCOUNT_NAME
+#define MCOUNT_NAME "mcount"
#undef SIZE_TYPE
#define SIZE_TYPE "long unsigned int"
diff --git a/gcc/config/i386/freebsd-aout.h b/gcc/config/i386/freebsd-aout.h
index d5fab7c8f76..a2b616e700b 100644
--- a/gcc/config/i386/freebsd-aout.h
+++ b/gcc/config/i386/freebsd-aout.h
@@ -94,22 +94,10 @@ Boston, MA 02111-1307, USA. */
/* Profiling routines, partially copied from i386/osfrose.h. */
-/* Redefine this to use %eax instead of %edx. */
-#undef FUNCTION_PROFILER
-#define FUNCTION_PROFILER(FILE, LABELNO) \
-{ \
- if (flag_pic) \
- { \
- fprintf (FILE, "\tleal %sP%d@GOTOFF(%%ebx),%%eax\n", \
- LPREFIX, (LABELNO)); \
- fprintf (FILE, "\tcall *mcount@GOT(%%ebx)\n"); \
- } \
- else \
- { \
- fprintf (FILE, "\tmovl $%sP%d,%%eax\n", LPREFIX, (LABELNO)); \
- fprintf (FILE, "\tcall mcount\n"); \
- } \
-}
+#undef MCOUNT_NAME
+#define MCOUNT_NAME "mcount"
+#undef PROFILE_COUNT_REGISTER
+#define PROFILE_COUNT_REGISTER "eax"
/*
* Some imports from svr4.h in support of shared libraries.
diff --git a/gcc/config/i386/freebsd.h b/gcc/config/i386/freebsd.h
index f209a151cf4..e0160b1e048 100644
--- a/gcc/config/i386/freebsd.h
+++ b/gcc/config/i386/freebsd.h
@@ -47,14 +47,8 @@ Boston, MA 02111-1307, USA. */
/* Tell final.c that we don't need a label passed to mcount. */
-#undef FUNCTION_PROFILER
-#define FUNCTION_PROFILER(FILE, LABELNO) \
-{ \
- if (flag_pic) \
- fprintf ((FILE), "\tcall *.mcount@GOT(%%ebx)\n"); \
- else \
- fprintf ((FILE), "\tcall .mcount\n"); \
-}
+#undef MCOUNT_NAME
+#define MCOUNT_NAME ".mcount"
/* Make gcc agree with <machine/ansi.h>. */
diff --git a/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h
index 64dc7b0758d..4afdf668bd8 100644
--- a/gcc/config/i386/i386-protos.h
+++ b/gcc/config/i386/i386-protos.h
@@ -153,7 +153,7 @@ extern int ix86_attr_length_address_default PARAMS ((rtx));
extern enum machine_mode ix86_fp_compare_mode PARAMS ((enum rtx_code));
-extern int x86_64_sign_extended_value PARAMS ((rtx, int));
+extern int x86_64_sign_extended_value PARAMS ((rtx));
extern int x86_64_zero_extended_value PARAMS ((rtx));
extern rtx ix86_libcall_value PARAMS ((enum machine_mode));
extern bool ix86_function_value_regno_p PARAMS ((int));
@@ -184,6 +184,7 @@ extern void ix86_set_move_mem_attrs PARAMS ((rtx, rtx, rtx, rtx, rtx));
extern void emit_i387_cw_initialization PARAMS ((rtx, rtx));
extern bool ix86_fp_jump_nontrivial_p PARAMS ((enum rtx_code));
extern void x86_order_regs_for_local_alloc PARAMS ((void));
+extern void x86_function_profiler PARAMS ((FILE *, int));
#ifdef TREE_CODE
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 7eef256c41a..e379c4aa85f 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -2113,14 +2113,16 @@ construct_container (mode, type, in_return, nintregs, nsseregs, intreg, sse_regn
sse_regno++;
break;
case X86_64_SSE_CLASS:
- if (i < n && class[i + 1] == X86_64_SSEUP_CLASS)
- tmpmode = TImode, i++;
+ if (i < n - 1 && class[i + 1] == X86_64_SSEUP_CLASS)
+ tmpmode = TImode;
else
tmpmode = DImode;
exp [nexps++] = gen_rtx_EXPR_LIST (VOIDmode,
gen_rtx_REG (tmpmode,
SSE_REGNO (sse_regno)),
GEN_INT (i*8));
+ if (tmpmode == TImode)
+ i++;
sse_regno++;
break;
default:
@@ -2892,7 +2894,7 @@ x86_64_general_operand (op, mode)
return general_operand (op, mode);
if (nonimmediate_operand (op, mode))
return 1;
- return x86_64_sign_extended_value (op, 1);
+ return x86_64_sign_extended_value (op);
}
/* Return nonzero if OP is general operand representable on x86_64
@@ -2907,7 +2909,7 @@ x86_64_szext_general_operand (op, mode)
return general_operand (op, mode);
if (nonimmediate_operand (op, mode))
return 1;
- return x86_64_sign_extended_value (op, 1) || x86_64_zero_extended_value (op);
+ return x86_64_sign_extended_value (op) || x86_64_zero_extended_value (op);
}
/* Return nonzero if OP is nonmemory operand representable on x86_64. */
@@ -2921,7 +2923,7 @@ x86_64_nonmemory_operand (op, mode)
return nonmemory_operand (op, mode);
if (register_operand (op, mode))
return 1;
- return x86_64_sign_extended_value (op, 1);
+ return x86_64_sign_extended_value (op);
}
/* Return nonzero if OP is nonmemory operand acceptable by movabs patterns. */
@@ -2933,7 +2935,7 @@ x86_64_movabs_operand (op, mode)
{
if (!TARGET_64BIT || !flag_pic)
return nonmemory_operand (op, mode);
- if (register_operand (op, mode) || x86_64_sign_extended_value (op, 0))
+ if (register_operand (op, mode) || x86_64_sign_extended_value (op))
return 1;
if (CONSTANT_P (op) && !symbolic_reference_mentioned_p (op))
return 1;
@@ -2951,7 +2953,7 @@ x86_64_szext_nonmemory_operand (op, mode)
return nonmemory_operand (op, mode);
if (register_operand (op, mode))
return 1;
- return x86_64_sign_extended_value (op, 0) || x86_64_zero_extended_value (op);
+ return x86_64_sign_extended_value (op) || x86_64_zero_extended_value (op);
}
/* Return nonzero if OP is immediate operand representable on x86_64. */
@@ -2963,7 +2965,7 @@ x86_64_immediate_operand (op, mode)
{
if (!TARGET_64BIT)
return immediate_operand (op, mode);
- return x86_64_sign_extended_value (op, 0);
+ return x86_64_sign_extended_value (op);
}
/* Return nonzero if OP is immediate operand representable on x86_64. */
@@ -3083,10 +3085,7 @@ local_symbolic_operand (op, mode)
{
if (GET_CODE (op) == CONST
&& GET_CODE (XEXP (op, 0)) == PLUS
- && GET_CODE (XEXP (XEXP (op, 0), 1)) == CONST_INT
- && (ix86_cmodel != CM_SMALL_PIC
- || (INTVAL (XEXP (XEXP (op, 0), 1)) >= -16*1024*1024
- && INTVAL (XEXP (XEXP (op, 0), 1)) < 16*1024*1024)))
+ && GET_CODE (XEXP (XEXP (op, 0), 1)) == CONST_INT)
op = XEXP (XEXP (op, 0), 0);
if (GET_CODE (op) == LABEL_REF)
@@ -3837,9 +3836,8 @@ ix86_can_use_return_insn_p ()
/* Return 1 if VALUE can be stored in the sign extended immediate field. */
int
-x86_64_sign_extended_value (value, allow_rip)
+x86_64_sign_extended_value (value)
rtx value;
- int allow_rip;
{
switch (GET_CODE (value))
{
@@ -3861,17 +3859,12 @@ x86_64_sign_extended_value (value, allow_rip)
library. Don't count TLS SYMBOL_REFs here, since they should fit
only if inside of UNSPEC handled below. */
case SYMBOL_REF:
- return (ix86_cmodel == CM_SMALL || ix86_cmodel == CM_KERNEL
- || (allow_rip
- && ix86_cmodel == CM_SMALL_PIC
- && (CONSTANT_POOL_ADDRESS_P (value)
- || SYMBOL_REF_FLAG (value))
- && ! tls_symbolic_operand (value, GET_MODE (value))));
+ return (ix86_cmodel == CM_SMALL || ix86_cmodel == CM_KERNEL);
/* For certain code models, the code is near as well. */
case LABEL_REF:
- return ix86_cmodel != CM_LARGE
- && (allow_rip || ix86_cmodel != CM_SMALL_PIC);
+ return (ix86_cmodel == CM_SMALL || ix86_cmodel == CM_MEDIUM
+ || ix86_cmodel == CM_KERNEL);
/* We also may accept the offsetted memory references in certain special
cases. */
@@ -3917,26 +3910,11 @@ x86_64_sign_extended_value (value, allow_rip)
&& offset > 0
&& trunc_int_for_mode (offset, SImode) == offset)
return 1;
- /* For CM_SMALL_PIC, we can make similar assumptions
- as for CM_SMALL model, if we know the symbol is local
- to the shared library. Disallow any TLS symbols,
- since they should always be enclosed in an UNSPEC. */
- if (ix86_cmodel == CM_SMALL_PIC
- && allow_rip
- && (CONSTANT_POOL_ADDRESS_P (op1)
- || SYMBOL_REF_FLAG (op1))
- && ! tls_symbolic_operand (op1, GET_MODE (op1))
- && offset < 16*1024*1024
- && offset >= -16*1024*1024
- && trunc_int_for_mode (offset, SImode) == offset)
- return 1;
break;
case LABEL_REF:
/* These conditions are similar to SYMBOL_REF ones, just the
constraints for code models differ. */
- if ((ix86_cmodel == CM_SMALL || ix86_cmodel == CM_MEDIUM
- || (ix86_cmodel == CM_SMALL_PIC && allow_rip
- && offset >= -16*1024*1024))
+ if ((ix86_cmodel == CM_SMALL || ix86_cmodel == CM_MEDIUM)
&& offset < 16*1024*1024
&& trunc_int_for_mode (offset, SImode) == offset)
return 1;
@@ -5146,8 +5124,30 @@ legitimate_pic_address_disp_p (disp)
/* In 64bit mode we can allow direct addresses of symbols and labels
when they are not dynamic symbols. */
- if (TARGET_64BIT && local_symbolic_operand (disp, Pmode))
- return 1;
+ if (TARGET_64BIT)
+ {
+ /* TLS references should always be enclosed in UNSPEC. */
+ if (tls_symbolic_operand (disp, GET_MODE (disp)))
+ return 0;
+ if (GET_CODE (disp) == SYMBOL_REF
+ && ix86_cmodel == CM_SMALL_PIC
+ && (CONSTANT_POOL_ADDRESS_P (disp)
+ || SYMBOL_REF_FLAG (disp)))
+ return 1;
+ if (GET_CODE (disp) == LABEL_REF)
+ return 1;
+ if (GET_CODE (disp) == CONST
+ && GET_CODE (XEXP (disp, 0)) == PLUS
+ && ((GET_CODE (XEXP (XEXP (disp, 0), 0)) == SYMBOL_REF
+ && ix86_cmodel == CM_SMALL_PIC
+ && (CONSTANT_POOL_ADDRESS_P (XEXP (XEXP (disp, 0), 0))
+ || SYMBOL_REF_FLAG (XEXP (XEXP (disp, 0), 0))))
+ || GET_CODE (XEXP (XEXP (disp, 0), 0)) == LABEL_REF)
+ && GET_CODE (XEXP (XEXP (disp, 0), 1)) == CONST_INT
+ && INTVAL (XEXP (XEXP (disp, 0), 1)) < 16*1024*1024
+ && INTVAL (XEXP (XEXP (disp, 0), 1)) >= -16*1024*1024)
+ return 1;
+ }
if (GET_CODE (disp) != CONST)
return 0;
disp = XEXP (disp, 0);
@@ -5354,23 +5354,6 @@ legitimate_address_p (mode, addr, strict)
{
reason_rtx = disp;
- if (TARGET_64BIT)
- {
- if (!x86_64_sign_extended_value (disp, !(index || base)))
- {
- reason = "displacement is out of range";
- goto report_error;
- }
- }
- else
- {
- if (GET_CODE (disp) == CONST_DOUBLE)
- {
- reason = "displacement is a const_double";
- goto report_error;
- }
- }
-
if (GET_CODE (disp) == CONST
&& GET_CODE (XEXP (disp, 0)) == UNSPEC)
switch (XINT (XEXP (disp, 0), 1))
@@ -5448,6 +5431,16 @@ legitimate_address_p (mode, addr, strict)
reason = "displacement is not constant";
goto report_error;
}
+ else if (TARGET_64BIT && !x86_64_sign_extended_value (disp))
+ {
+ reason = "displacement is out of range";
+ goto report_error;
+ }
+ else if (!TARGET_64BIT && GET_CODE (disp) == CONST_DOUBLE)
+ {
+ reason = "displacement is a const_double";
+ goto report_error;
+ }
}
/* Everything looks valid. */
@@ -5509,28 +5502,24 @@ legitimize_pic_address (orig, reg)
return machopic_legitimize_pic_address (orig, GET_MODE (orig), reg);
#endif
- if (local_symbolic_operand (addr, Pmode))
+ if (TARGET_64BIT && legitimate_pic_address_disp_p (addr))
+ new = addr;
+ else if (!TARGET_64BIT && local_symbolic_operand (addr, Pmode))
{
- /* In 64bit mode we can address such objects directly. */
- if (TARGET_64BIT)
- new = addr;
- else
- {
- /* This symbol may be referenced via a displacement from the PIC
- base address (@GOTOFF). */
+ /* This symbol may be referenced via a displacement from the PIC
+ base address (@GOTOFF). */
- if (reload_in_progress)
- regs_ever_live[PIC_OFFSET_TABLE_REGNUM] = 1;
- new = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, addr), UNSPEC_GOTOFF);
- new = gen_rtx_CONST (Pmode, new);
- new = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, new);
+ if (reload_in_progress)
+ regs_ever_live[PIC_OFFSET_TABLE_REGNUM] = 1;
+ new = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, addr), UNSPEC_GOTOFF);
+ new = gen_rtx_CONST (Pmode, new);
+ new = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, new);
- if (reg != 0)
- {
- emit_move_insn (reg, new);
- new = reg;
- }
- }
+ if (reg != 0)
+ {
+ emit_move_insn (reg, new);
+ new = reg;
+ }
}
else if (GET_CODE (addr) == SYMBOL_REF)
{
@@ -9216,7 +9205,7 @@ ix86_expand_int_movcc (operands)
if ((diff == 1 || diff == 2 || diff == 4 || diff == 8
|| diff == 3 || diff == 5 || diff == 9)
- && (mode != DImode || x86_64_sign_extended_value (GEN_INT (cf), 0)))
+ && (mode != DImode || x86_64_sign_extended_value (GEN_INT (cf))))
{
/*
* xorl dest,dest
@@ -14295,6 +14284,46 @@ x86_field_alignment (field, computed)
return computed;
}
+/* Output assembler code to FILE to increment profiler label # LABELNO
+ for profiling a function entry. */
+void
+x86_function_profiler (file, labelno)
+ FILE *file;
+ int labelno;
+{
+ if (TARGET_64BIT)
+ if (flag_pic)
+ {
+#ifndef NO_PROFILE_COUNTERS
+ fprintf (file, "\tleaq\t%sP%d@(%%rip),%%r11\n", LPREFIX, labelno);
+#endif
+ fprintf (file, "\tcall\t*%s@GOTPCREL(%%rip)\n", MCOUNT_NAME);
+ }
+ else
+ {
+#ifndef NO_PROFILE_COUNTERS
+ fprintf (file, "\tmovq\t$%sP%d,%%r11\n", LPREFIX, labelno);
+#endif
+ fprintf (file, "\tcall\t%s\n", MCOUNT_NAME);
+ }
+ else if (flag_pic)
+ {
+#ifndef NO_PROFILE_COUNTERS
+ fprintf (file, "\tleal\t%sP%d@GOTOFF(%%ebx),%%%s\n",
+ LPREFIX, labelno, PROFILE_COUNT_REGISTER);
+#endif
+ fprintf (file, "\tcall\t*%s@GOT(%%ebx)\n", MCOUNT_NAME);
+ }
+ else
+ {
+#ifndef NO_PROFILE_COUNTERS
+ fprintf (file, "\tmovl\t$%sP%d,%%$s\n", LPREFIX, labelno,
+ PROFILE_COUNT_REGISTER);
+#endif
+ fprintf (file, "\tcall\t%s\n", MCOUNT_NAME);
+ }
+}
+
/* Implement machine specific optimizations.
At the moment we implement single transformation: AMD Athlon works faster
when RET is not destination of conditional jump or directly preceeded
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 87add77f18c..373e3373b64 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -691,7 +691,11 @@ extern int x86_prefetch_sse;
/* Width of a word, in units (bytes). */
#define UNITS_PER_WORD (TARGET_64BIT ? 8 : 4)
-#define MIN_UNITS_PER_WORD 4
+#ifdef IN_LIBGCC2
+#define MIN_UNITS_PER_WORD (TARGET_64BIT ? 8 : 4)
+#else
+#define MIN_UNITS_PER_WORD 4
+#endif
/* Allocation boundary (in *bits*) for storing arguments in argument list. */
#define PARM_BOUNDARY BITS_PER_WORD
@@ -1426,7 +1430,7 @@ enum reg_class
constraint, the value returned should be 0 regardless of VALUE. */
#define EXTRA_CONSTRAINT(VALUE, D) \
- ((D) == 'e' ? x86_64_sign_extended_value (VALUE, 0) \
+ ((D) == 'e' ? x86_64_sign_extended_value (VALUE) \
: (D) == 'Z' ? x86_64_zero_extended_value (VALUE) \
: (D) == 'C' ? standard_sse_constant_p (VALUE) \
: 0)
@@ -1570,6 +1574,10 @@ enum reg_class
#define PUSH_ARGS (TARGET_PUSH_ARGS && !ACCUMULATE_OUTGOING_ARGS)
+/* We want the stack and args grow in opposite directions, even if
+ PUSH_ARGS is 0. */
+#define PUSH_ARGS_REVERSED 1
+
/* Offset of first parameter from the argument pointer register value. */
#define FIRST_PARM_OFFSET(FNDECL) 0
@@ -1750,20 +1758,11 @@ typedef struct ix86_args {
/* Output assembler code to FILE to increment profiler label # LABELNO
for profiling a function entry. */
-#define FUNCTION_PROFILER(FILE, LABELNO) \
-do { \
- if (flag_pic) \
- { \
- fprintf ((FILE), "\tleal\t%sP%d@GOTOFF(%%ebx),%%edx\n", \
- LPREFIX, (LABELNO)); \
- fprintf ((FILE), "\tcall\t*_mcount@GOT(%%ebx)\n"); \
- } \
- else \
- { \
- fprintf ((FILE), "\tmovl\t$%sP%d,%%edx\n", LPREFIX, (LABELNO)); \
- fprintf ((FILE), "\tcall\t_mcount\n"); \
- } \
-} while (0)
+#define FUNCTION_PROFILER(FILE, LABELNO) x86_function_profiler (FILE, LABELNO)
+
+#define MCOUNT_NAME "_mcount"
+
+#define PROFILE_COUNT_REGISTER "edx"
/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
the stack pointer does not matter. The value is tested only in
@@ -2567,7 +2566,7 @@ do { \
case CONST: \
case LABEL_REF: \
case SYMBOL_REF: \
- if (TARGET_64BIT && !x86_64_sign_extended_value (RTX, 0)) \
+ if (TARGET_64BIT && !x86_64_sign_extended_value (RTX)) \
return 3; \
if (TARGET_64BIT && !x86_64_zero_extended_value (RTX)) \
return 2; \
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 4596cee7f9e..befbfe49569 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -140,7 +140,7 @@
(define_attr "type"
"other,multi,
alu,alu1,negnot,imov,imovx,lea,
- incdec,ishift,rotate,imul,idiv,
+ incdec,ishift,ishift1,rotate,rotate1,imul,idiv,
icmp,test,ibr,setcc,icmov,
push,pop,call,callv,
str,cld,
@@ -174,8 +174,8 @@
(const_int 0)
(eq_attr "unit" "i387,sse,mmx")
(const_int 0)
- (eq_attr "type" "alu,alu1,negnot,imovx,ishift,rotate,imul,
- icmp,push,pop")
+ (eq_attr "type" "alu,alu1,negnot,imovx,ishift,rotate,ishift1,rotate1,
+ imul,icmp,push,pop")
(symbol_ref "ix86_attr_length_immediate_default(insn,1)")
(eq_attr "type" "imov,test")
(symbol_ref "ix86_attr_length_immediate_default(insn,0)")
@@ -187,13 +187,10 @@
(if_then_else (match_operand 1 "constant_call_address_operand" "")
(const_int 4)
(const_int 0))
+ ;; We don't know the size before shorten_branches. Expect
+ ;; the instruction to fit for better scheduling.
(eq_attr "type" "ibr")
- (if_then_else (and (ge (minus (match_dup 0) (pc))
- (const_int -128))
- (lt (minus (match_dup 0) (pc))
- (const_int 124)))
- (const_int 1)
- (const_int 4))
+ (const_int 1)
]
(symbol_ref "/* Update immediate_length and other attributes! */
abort(),1")))
@@ -347,7 +344,7 @@
(define_attr "imm_disp" "false,true,unknown"
(cond [(eq_attr "type" "other,multi")
(const_string "unknown")
- (and (eq_attr "type" "icmp,test,imov")
+ (and (eq_attr "type" "icmp,test,imov,alu1,ishift1,rotate1")
(and (match_operand 0 "memory_displacement_operand" "")
(match_operand 1 "immediate_operand" "")))
(const_string "true")
@@ -6040,36 +6037,36 @@
(define_insn "*addqi_1_slp"
[(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm,q"))
- (plus:QI (match_operand:QI 1 "nonimmediate_operand" "%0,0")
- (match_operand:QI 2 "general_operand" "qn,qnm")))
+ (plus:QI (match_dup 0)
+ (match_operand:QI 1 "general_operand" "qn,qnm")))
(clobber (reg:CC 17))]
"(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && ix86_binary_operator_ok (PLUS, QImode, operands)"
+ && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
{
switch (get_attr_type (insn))
{
case TYPE_INCDEC:
- if (operands[2] == const1_rtx)
+ if (operands[1] == const1_rtx)
return "inc{b}\t%0";
- else if (operands[2] == constm1_rtx)
+ else if (operands[1] == constm1_rtx)
return "dec{b}\t%0";
abort();
default:
/* Make things pretty and `subl $4,%eax' rather than `addl $-4, %eax'. */
- if (GET_CODE (operands[2]) == CONST_INT
- && INTVAL (operands[2]) < 0)
+ if (GET_CODE (operands[1]) == CONST_INT
+ && INTVAL (operands[1]) < 0)
{
operands[2] = GEN_INT (-INTVAL (operands[2]));
- return "sub{b}\t{%2, %0|%0, %2}";
+ return "sub{b}\t{%1, %0|%0, %1}";
}
- return "add{b}\t{%2, %0|%0, %2}";
+ return "add{b}\t{%1, %0|%0, %1}";
}
}
[(set (attr "type")
(if_then_else (match_operand:QI 2 "incdec_operand" "")
(const_string "incdec")
- (const_string "alu")))
+ (const_string "alu1")))
(set_attr "mode" "QI")])
(define_insn "*addqi_2"
@@ -6605,13 +6602,13 @@
(define_insn "*subqi_1_slp"
[(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm,q"))
- (minus:QI (match_operand:QI 1 "nonimmediate_operand" "0,0")
- (match_operand:QI 2 "general_operand" "qn,qmn")))
+ (minus:QI (match_dup 0)
+ (match_operand:QI 1 "general_operand" "qn,qmn")))
(clobber (reg:CC 17))]
"(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && ix86_binary_operator_ok (MINUS, QImode, operands)"
- "sub{b}\t{%2, %0|%0, %2}"
- [(set_attr "type" "alu")
+ && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
+ "sub{b}\t{%1, %0|%0, %1}"
+ [(set_attr "type" "alu1")
(set_attr "mode" "QI")])
(define_insn "*subqi_2"
@@ -8067,7 +8064,8 @@
(and:QI (match_dup 0)
(match_operand:QI 1 "general_operand" "qi,qmi")))
(clobber (reg:CC 17))]
- "! TARGET_PARTIAL_REG_STALL || optimize_size"
+ "(! TARGET_PARTIAL_REG_STALL || optimize_size)
+ && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"and{b}\t{%1, %0|%0, %1}"
[(set_attr "type" "alu1")
(set_attr "mode" "QI")])
@@ -8104,7 +8102,8 @@
(set (strict_low_part (match_dup 0))
(and:QI (match_dup 0) (match_dup 1)))]
"(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && ix86_match_ccmode (insn, CCNOmode)"
+ && ix86_match_ccmode (insn, CCNOmode)
+ && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"and{b}\t{%1, %0|%0, %1}"
[(set_attr "type" "alu1")
(set_attr "mode" "QI")])
@@ -8474,7 +8473,8 @@
(ior:QI (match_dup 0)
(match_operand:QI 1 "general_operand" "qmi,qi")))
(clobber (reg:CC 17))]
- "! TARGET_PARTIAL_REG_STALL || optimize_size"
+ "(! TARGET_PARTIAL_REG_STALL || optimize_size)
+ && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"or{b}\t{%1, %0|%0, %1}"
[(set_attr "type" "alu1")
(set_attr "mode" "QI")])
@@ -8500,7 +8500,8 @@
(set (strict_low_part (match_dup 0))
(ior:QI (match_dup 0) (match_dup 1)))]
"(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && ix86_match_ccmode (insn, CCNOmode)"
+ && ix86_match_ccmode (insn, CCNOmode)
+ && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"or{b}\t{%1, %0|%0, %1}"
[(set_attr "type" "alu1")
(set_attr "mode" "QI")])
@@ -8849,7 +8850,8 @@
(xor:QI (match_dup 0)
(match_operand:QI 1 "general_operand" "qi,qmi")))
(clobber (reg:CC 17))]
- "! TARGET_PARTIAL_REG_STALL || optimize_size"
+ "(! TARGET_PARTIAL_REG_STALL || optimize_size)
+ && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"xor{b}\t{%1, %0|%0, %1}"
[(set_attr "type" "alu1")
(set_attr "mode" "QI")])
@@ -8949,7 +8951,8 @@
(set (strict_low_part (match_dup 0))
(xor:QI (match_dup 0) (match_dup 1)))]
"(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && ix86_match_ccmode (insn, CCNOmode)"
+ && ix86_match_ccmode (insn, CCNOmode)
+ && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"xor{b}\t{%1, %0|%0, %1}"
[(set_attr "type" "alu1")
(set_attr "mode" "QI")])
@@ -11511,14 +11514,14 @@
(define_insn "*ashrqi3_1_one_bit_slp"
[(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm"))
- (ashiftrt:QI (match_operand:QI 1 "nonimmediate_operand" "0")
- (match_operand:QI 2 "const_int_1_operand" "")))
+ (ashiftrt:QI (match_dup 0)
+ (match_operand:QI 1 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"ix86_binary_operator_ok (ASHIFTRT, QImode, operands)
&& (! TARGET_PARTIAL_REG_STALL || optimize_size)
&& (TARGET_SHIFT1 || optimize_size)"
"sar{b}\t%0"
- [(set_attr "type" "ishift")
+ [(set_attr "type" "ishift1")
(set (attr "length")
(if_then_else (match_operand 0 "register_operand" "")
(const_string "2")
@@ -11538,15 +11541,15 @@
(define_insn "*ashrqi3_1_slp"
[(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm,qm"))
- (ashiftrt:QI (match_operand:QI 1 "nonimmediate_operand" "0,0")
- (match_operand:QI 2 "nonmemory_operand" "I,c")))
+ (ashiftrt:QI (match_dup 0)
+ (match_operand:QI 1 "nonmemory_operand" "I,c")))
(clobber (reg:CC 17))]
"(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && ix86_binary_operator_ok (ASHIFTRT, QImode, operands)"
+ && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"@
- sar{b}\t{%2, %0|%0, %2}
- sar{b}\t{%b2, %0|%0, %b2}"
- [(set_attr "type" "ishift")
+ sar{b}\t{%1, %0|%0, %1}
+ sar{b}\t{%b1, %0|%0, %b1}"
+ [(set_attr "type" "ishift1")
(set_attr "mode" "QI")])
;; This pattern can't accept a variable shift count, since shifts by
@@ -11930,14 +11933,13 @@
(define_insn "*lshrqi3_1_one_bit_slp"
[(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm"))
- (lshiftrt:QI (match_operand:QI 1 "nonimmediate_operand" "0")
- (match_operand:QI 2 "const_int_1_operand" "")))
+ (lshiftrt:QI (match_dup 0)
+ (match_operand:QI 1 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && ix86_binary_operator_ok (LSHIFTRT, QImode, operands)
&& (TARGET_SHIFT1 || optimize_size)"
"shr{b}\t%0"
- [(set_attr "type" "ishift")
+ [(set_attr "type" "ishift1")
(set (attr "length")
(if_then_else (match_operand 0 "register_operand" "")
(const_string "2")
@@ -11957,15 +11959,15 @@
(define_insn "*lshrqi3_1_slp"
[(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm,qm"))
- (lshiftrt:QI (match_operand:QI 1 "nonimmediate_operand" "0,0")
- (match_operand:QI 2 "nonmemory_operand" "I,c")))
+ (lshiftrt:QI (match_dup 0)
+ (match_operand:QI 1 "nonmemory_operand" "I,c")))
(clobber (reg:CC 17))]
"(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && ix86_binary_operator_ok (LSHIFTRT, QImode, operands)"
+ && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"@
- shr{b}\t{%2, %0|%0, %2}
- shr{b}\t{%b2, %0|%0, %b2}"
- [(set_attr "type" "ishift")
+ shr{b}\t{%1, %0|%0, %1}
+ shr{b}\t{%b1, %0|%0, %b1}"
+ [(set_attr "type" "ishift1")
(set_attr "mode" "QI")])
;; This pattern can't accept a variable shift count, since shifts by
@@ -12145,14 +12147,13 @@
(define_insn "*rotlqi3_1_one_bit_slp"
[(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm"))
- (rotate:QI (match_operand:QI 1 "nonimmediate_operand" "0")
- (match_operand:QI 2 "const_int_1_operand" "")))
+ (rotate:QI (match_dup 0)
+ (match_operand:QI 1 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && ix86_binary_operator_ok (ROTATE, QImode, operands)
&& (TARGET_SHIFT1 || optimize_size)"
"rol{b}\t%0"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "rotate1")
(set (attr "length")
(if_then_else (match_operand 0 "register_operand" "")
(const_string "2")
@@ -12174,15 +12175,15 @@
(define_insn "*rotlqi3_1_slp"
[(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm,qm"))
- (rotate:QI (match_operand:QI 1 "nonimmediate_operand" "0,0")
- (match_operand:QI 2 "nonmemory_operand" "I,c")))
+ (rotate:QI (match_dup 0)
+ (match_operand:QI 1 "nonmemory_operand" "I,c")))
(clobber (reg:CC 17))]
"(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && ix86_binary_operator_ok (ROTATE, QImode, operands)"
+ && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"@
- rol{b}\t{%2, %0|%0, %2}
- rol{b}\t{%b2, %0|%0, %b2}"
- [(set_attr "type" "rotate")
+ rol{b}\t{%1, %0|%0, %1}
+ rol{b}\t{%b1, %0|%0, %b1}"
+ [(set_attr "type" "rotate1")
(set_attr "mode" "QI")])
(define_insn "*rotlqi3_1"
@@ -12351,14 +12352,13 @@
(define_insn "*rotrqi3_1_one_bit_slp"
[(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm"))
- (rotatert:QI (match_operand:QI 1 "nonimmediate_operand" "0")
- (match_operand:QI 2 "const_int_1_operand" "")))
+ (rotatert:QI (match_dup 0)
+ (match_operand:QI 1 "const_int_1_operand" "")))
(clobber (reg:CC 17))]
"(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && ix86_binary_operator_ok (ROTATERT, QImode, operands)
&& (TARGET_SHIFT1 || optimize_size)"
"ror{b}\t%0"
- [(set_attr "type" "rotate")
+ [(set_attr "type" "rotate1")
(set (attr "length")
(if_then_else (match_operand 0 "register_operand" "")
(const_string "2")
@@ -12378,15 +12378,15 @@
(define_insn "*rotrqi3_1_slp"
[(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+qm,qm"))
- (rotatert:QI (match_operand:QI 1 "nonimmediate_operand" "0,0")
- (match_operand:QI 2 "nonmemory_operand" "I,c")))
+ (rotatert:QI (match_dup 0)
+ (match_operand:QI 1 "nonmemory_operand" "I,c")))
(clobber (reg:CC 17))]
"(! TARGET_PARTIAL_REG_STALL || optimize_size)
- && ix86_binary_operator_ok (ROTATERT, QImode, operands)"
+ && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"@
- ror{b}\t{%2, %0|%0, %2}
- ror{b}\t{%b2, %0|%0, %b2}"
- [(set_attr "type" "rotate")
+ ror{b}\t{%1, %0|%0, %1}
+ ror{b}\t{%b1, %0|%0, %b1}"
+ [(set_attr "type" "rotate1")
(set_attr "mode" "QI")])
;; Bit set / bit test instructions
@@ -12837,13 +12837,13 @@
"%+j%C1\t%l0"
[(set_attr "type" "ibr")
(set_attr "modrm" "0")
- (set (attr "prefix_0f")
+ (set (attr "length")
(if_then_else (and (ge (minus (match_dup 0) (pc))
(const_int -128))
(lt (minus (match_dup 0) (pc))
(const_int 124)))
- (const_int 0)
- (const_int 1)))])
+ (const_int 2)
+ (const_int 6)))])
(define_insn "*jcc_2"
[(set (pc)
@@ -12855,13 +12855,13 @@
"%+j%c1\t%l0"
[(set_attr "type" "ibr")
(set_attr "modrm" "0")
- (set (attr "prefix_0f")
+ (set (attr "length")
(if_then_else (and (ge (minus (match_dup 0) (pc))
(const_int -128))
(lt (minus (match_dup 0) (pc))
(const_int 124)))
- (const_int 0)
- (const_int 1)))])
+ (const_int 2)
+ (const_int 6)))])
;; In general it is not safe to assume too much about CCmode registers,
;; so simplify-rtx stops when it sees a second one. Under certain
@@ -13122,6 +13122,13 @@
""
"jmp\t%l0"
[(set_attr "type" "ibr")
+ (set (attr "length")
+ (if_then_else (and (ge (minus (match_dup 0) (pc))
+ (const_int -128))
+ (lt (minus (match_dup 0) (pc))
+ (const_int 124)))
+ (const_int 2)
+ (const_int 5)))
(set_attr "modrm" "0")])
(define_expand "indirect_jump"
@@ -13248,14 +13255,9 @@
(const_int 124))))
(const_int 2)
(const_int 16)))
- (set (attr "type")
- (if_then_else (and (eq_attr "alternative" "0")
- (and (ge (minus (match_dup 0) (pc))
- (const_int -128))
- (lt (minus (match_dup 0) (pc))
- (const_int 124))))
- (const_string "ibr")
- (const_string "multi")))])
+ ;; We don't know the type before shorten branches. Optimistically expect
+ ;; the loop instruction to match.
+ (set (attr "type") (const_string "ibr"))])
(define_split
[(set (pc)
diff --git a/gcc/config/i386/k6.md b/gcc/config/i386/k6.md
index a68983a0d66..af128bfe037 100644
--- a/gcc/config/i386/k6.md
+++ b/gcc/config/i386/k6.md
@@ -42,7 +42,7 @@
;; Shift instructions and certain arithmetic are issued only to X pipe.
(define_function_unit "k6_alux" 1 0
(and (eq_attr "cpu" "k6")
- (eq_attr "type" "ishift,rotate,alu1,negnot,cld"))
+ (eq_attr "type" "ishift,ishift1,rotate,rotate1,alu1,negnot,cld"))
1 1)
;; The QI mode arithmetic is issued to X pipe only.
@@ -54,7 +54,7 @@
(define_function_unit "k6_alu" 2 0
(and (eq_attr "cpu" "k6")
- (eq_attr "type" "ishift,rotate,alu1,negnot,alu,icmp,test,imovx,incdec,setcc,lea"))
+ (eq_attr "type" "ishift,ishift1,rotate,rotate1,alu1,negnot,alu,icmp,test,imovx,incdec,setcc,lea"))
1 1)
(define_function_unit "k6_alu" 2 0
diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h
index 54479d2c87f..6b553cd4cb5 100644
--- a/gcc/config/i386/linux.h
+++ b/gcc/config/i386/linux.h
@@ -53,14 +53,8 @@ Boston, MA 02111-1307, USA. */
#define NO_PROFILE_COUNTERS
-#undef FUNCTION_PROFILER
-#define FUNCTION_PROFILER(FILE, LABELNO) \
-{ \
- if (flag_pic) \
- fprintf (FILE, "\tcall\t*mcount@GOT(%%ebx)\n"); \
- else \
- fprintf (FILE, "\tcall\tmcount\n"); \
-}
+#undef MCOUNT_NAME
+#define MCOUNT_NAME "mcount"
/* The GLIBC version of mcount for the x86 assumes that there is a
frame, so we cannot allow profiling without a frame pointer. */
diff --git a/gcc/config/i386/pentium.md b/gcc/config/i386/pentium.md
index 40789558458..b4c5ece3678 100644
--- a/gcc/config/i386/pentium.md
+++ b/gcc/config/i386/pentium.md
@@ -53,6 +53,12 @@
(and (eq_attr "type" "rotate")
(match_operand 2 "const_int_1_operand" ""))
(const_string "pu")
+ (and (eq_attr "type" "ishift1")
+ (match_operand 1 "const_int_operand" ""))
+ (const_string "pu")
+ (and (eq_attr "type" "rotate1")
+ (match_operand 1 "const_int_1_operand" ""))
+ (const_string "pu")
(and (eq_attr "type" "call")
(match_operand 0 "constant_call_address_operand" ""))
(const_string "pv")
diff --git a/gcc/config/i386/ppro.md b/gcc/config/i386/ppro.md
index f7afa4f644e..86906856469 100644
--- a/gcc/config/i386/ppro.md
+++ b/gcc/config/i386/ppro.md
@@ -60,7 +60,7 @@
(define_function_unit "ppro_p0" 1 0
(and (eq_attr "cpu" "pentiumpro")
- (eq_attr "type" "ishift,rotate,lea,ibr,cld"))
+ (eq_attr "type" "ishift,rotate,ishift1,rotate1,lea,ibr,cld"))
1 1)
(define_function_unit "ppro_p0" 1 0
diff --git a/gcc/config/i386/x86-64.h b/gcc/config/i386/x86-64.h
index 54efb8144f1..37a2a30216f 100644
--- a/gcc/config/i386/x86-64.h
+++ b/gcc/config/i386/x86-64.h
@@ -29,16 +29,8 @@ Boston, MA 02111-1307, USA. */
/* Output assembler code to FILE to call the profiler. */
#define NO_PROFILE_COUNTERS
-#undef FUNCTION_PROFILER
-#define FUNCTION_PROFILER(FILE, LABELNO) \
-{ \
- if (TARGET_64BIT && flag_pic) \
- fprintf (FILE, "\tcall\t*mcount@PLT\n"); \
- else if (flag_pic) \
- fprintf (FILE, "\tcall\t*mcount@GOT(%%ebx)\n"); \
- else \
- fprintf (FILE, "\tcall\tmcount\n"); \
-}
+#undef MCOUNT_NAME
+#define MCOUNT_NAME "mcount"
#undef SIZE_TYPE
#define SIZE_TYPE (TARGET_64BIT ? "long unsigned int" : "unsigned int")
diff --git a/gcc/config/ia64/hpux_longdouble.h b/gcc/config/ia64/hpux_longdouble.h
index d1af4a0d418..53330332be8 100644
--- a/gcc/config/ia64/hpux_longdouble.h
+++ b/gcc/config/ia64/hpux_longdouble.h
@@ -41,6 +41,8 @@ Boston, MA 02111-1307, USA. */
#define FLOATDITF2_LIBCALL "_U_Qfcnvxf_dbl_to_quad"
#define FIX_TRUNCTFSI2_LIBCALL "_U_Qfcnvfxt_quad_to_sgl"
#define FIX_TRUNCTFDI2_LIBCALL "_U_Qfcnvfxt_quad_to_dbl"
+#define FIXUNS_TRUNCTFSI2_LIBCALL "_U_Qfcnvfxut_quad_to_sgl"
+#define FIXUNS_TRUNCTFDI2_LIBCALL "_U_Qfcnvfxut_quad_to_dbl"
#define EQTF2_LIBCALL "_U_Qfeq"
#define NETF2_LIBCALL "_U_Qfne"
#define GTTF2_LIBCALL "_U_Qfgt"
@@ -76,8 +78,8 @@ Boston, MA 02111-1307, USA. */
floatditf_libfunc = gen_rtx_SYMBOL_REF (Pmode, FLOATDITF2_LIBCALL); \
fixtfsi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFSI2_LIBCALL);\
fixtfdi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFDI2_LIBCALL);\
- fixunstfsi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFSI2_LIBCALL); \
- fixunstfdi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFDI2_LIBCALL); \
+ fixunstfsi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIXUNS_TRUNCTFSI2_LIBCALL); \
+ fixunstfdi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIXUNS_TRUNCTFDI2_LIBCALL); \
eqtf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, EQTF2_LIBCALL); \
netf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, NETF2_LIBCALL); \
gttf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, GTTF2_LIBCALL); \
@@ -85,11 +87,6 @@ Boston, MA 02111-1307, USA. */
lttf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, LTTF2_LIBCALL); \
letf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, LETF2_LIBCALL); \
\
- sdiv_optab->handlers[(int) SImode].libfunc = 0; \
- udiv_optab->handlers[(int) SImode].libfunc = 0; \
- smod_optab->handlers[(int) SImode].libfunc = 0; \
- umod_optab->handlers[(int) SImode].libfunc = 0; \
- \
INIT_SUBTARGET_OPTABS; \
} while (0)
diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
index 11654d6c6dc..f29595b2cb1 100644
--- a/gcc/config/m68k/m68k.c
+++ b/gcc/config/m68k/m68k.c
@@ -126,8 +126,8 @@ int m68k_last_compare_had_fp_operands;
#undef TARGET_ASM_OUTPUT_MI_THUNK
#define TARGET_ASM_OUTPUT_MI_THUNK m68k_output_mi_thunk
-#undef TARGET_ASM_OUTPUT_MI_THUNK
-#define TARGET_ASM_OUTPUT_MI_THUNK default_can_output_mi_thunk_no_vcall
+#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
+#define TARGET_ASM_CAN_OUTPUT_MI_THUNK default_can_output_mi_thunk_no_vcall
struct gcc_target targetm = TARGET_INITIALIZER;
diff --git a/gcc/config/m68k/t-crtstuff b/gcc/config/m68k/t-crtstuff
index 74dd4e01349..b05764de726 100644
--- a/gcc/config/m68k/t-crtstuff
+++ b/gcc/config/m68k/t-crtstuff
@@ -1,11 +1,8 @@
-# from ../t-svr4
-EXTRA_PARTS=crtbegin.o crtend.o crti.o crtn.o
-
# Add flags here as required.
CRTSTUFF_T_CFLAGS =
# Assemble startup files.
-crti.o: $(srcdir)/config/m68k/crti.s $(GCC_PASSES)
- $(GCC_FOR_TARGET) -c -o crti.o $(srcdir)/config/m68k/crti.s
-crtn.o: $(srcdir)/config/m68k/crtn.s $(GCC_PASSES)
- $(GCC_FOR_TARGET) -c -o crtn.o $(srcdir)/config/m68k/crtn.s
+$(T)crti.o: $(srcdir)/config/m68k/crti.s $(GCC_PASSES)
+ $(GCC_FOR_TARGET) -c -o $(T)crti.o $(srcdir)/config/m68k/crti.s
+$(T)crtn.o: $(srcdir)/config/m68k/crtn.s $(GCC_PASSES)
+ $(GCC_FOR_TARGET) -c -o $(T)crtn.o $(srcdir)/config/m68k/crtn.s
diff --git a/gcc/config/mips/netbsd.h b/gcc/config/mips/netbsd.h
index 3ec054456ee..0d721bc2e26 100644
--- a/gcc/config/mips/netbsd.h
+++ b/gcc/config/mips/netbsd.h
@@ -39,6 +39,9 @@ Boston, MA 02111-1307, USA. */
if (TARGET_LONG64) \
builtin_define ("__LONG64"); \
\
+ if (TARGET_ABICALLS) \
+ builtin_define ("__ABICALLS__"); \
+ \
if (mips_abi == ABI_EABI) \
builtin_define ("__mips_eabi"); \
else if (mips_abi == ABI_N32) \
@@ -157,8 +160,9 @@ Boston, MA 02111-1307, USA. */
#define NETBSD_ENTRY_POINT "__start"
#undef SUBTARGET_ASM_SPEC
-#define SUBTARGET_ASM_SPEC \
- "%{!fno-PIC:%{!fno-pic:-KPIC}}"
+#define SUBTARGET_ASM_SPEC \
+ "%{!mno-abicalls: \
+ %{!fno-PIC:%{!fno-pic:-KPIC}}}"
/* -G is incompatible with -KPIC which is the default, so only allow objects
diff --git a/gcc/config/mips/t-iris6 b/gcc/config/mips/t-iris6
index b55bc36aca8..1d61c244bf1 100644
--- a/gcc/config/mips/t-iris6
+++ b/gcc/config/mips/t-iris6
@@ -4,7 +4,7 @@
MULTILIB_OPTIONS=mabi=n32/mabi=64
MULTILIB_DIRNAMES=
MULTILIB_MATCHES=
-MULTILIB_OSDIRNAMES=../lib32 ../lib64
+MULTILIB_OSDIRNAMES=. mabi=64
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/mmix/mmix.h b/gcc/config/mmix/mmix.h
index cfc6d93aa2e..a46a551897e 100644
--- a/gcc/config/mmix/mmix.h
+++ b/gcc/config/mmix/mmix.h
@@ -735,8 +735,13 @@ enum reg_class
/* This *sounds* good, but does not seem to be implemented correctly to
be a win; at least it wasn't in 2.7.2. FIXME: Check and perhaps
- replace with a big comment. */
-#define FUNCTION_ARG_CALLEE_COPIES(CUM, MODE, TYPE, NAMED) 1
+ replace with a big comment.
+ The definition needs to match or be a subset of
+ FUNCTION_ARG_PASS_BY_REFERENCE, since not all callers check that before
+ usage. Watch lots of C++ test-cases fail if set to 1, for example
+ g++.dg/init/byval1.C. */
+#define FUNCTION_ARG_CALLEE_COPIES(CUM, MODE, TYPE, NAMED) \
+ mmix_function_arg_pass_by_reference (&(CUM), MODE, TYPE, NAMED)
typedef struct { int regs; int lib; } CUMULATIVE_ARGS;
diff --git a/gcc/config/netbsd-elf.h b/gcc/config/netbsd-elf.h
index 40ed3aa0798..4846ba605bb 100644
--- a/gcc/config/netbsd-elf.h
+++ b/gcc/config/netbsd-elf.h
@@ -46,24 +46,29 @@ Boston, MA 02111-1307, USA. */
of the support for getting C++ file-scope static objects
constructed before entering "main". */
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC \
+#define NETBSD_STARTFILE_SPEC \
"%{!shared: \
%{pg:gcrt0%O%s} \
%{!pg: \
%{p:gcrt0%O%s} \
%{!p:crt0%O%s}}} \
+ %:if-exists(crti%O%s) \
%{!shared:crtbegin%O%s} %{shared:crtbeginS%O%s}"
+#undef STARTFILE_SPEC
+#define STARTFILE_SPEC NETBSD_STARTFILE_SPEC
+
/* Provide an ENDFILE_SPEC appropriate for NetBSD ELF. Here we
add crtend.o, which provides part of the support for getting
C++ file-scope static objects deconstructed after exiting "main". */
-#undef ENDFILE_SPEC
-#define ENDFILE_SPEC \
- "%{!shared:crtend%O%s} %{shared:crtendS%O%s}"
+#define NETBSD_ENDFILE_SPEC \
+ "%{!shared:crtend%O%s} %{shared:crtendS%O%s} \
+ %:if-exists(crtn%O%s)"
+#undef ENDFILE_SPEC
+#define ENDFILE_SPEC NETBSD_ENDFILE_SPEC
/* Provide a LINK_SPEC appropriate for NetBSD ELF. Here we provide
support for the special GCC options -assert, -R, -rpath, -shared,
diff --git a/gcc/config/netbsd.h b/gcc/config/netbsd.h
index f1f3589f48b..61b44aceac4 100644
--- a/gcc/config/netbsd.h
+++ b/gcc/config/netbsd.h
@@ -90,9 +90,8 @@ Boston, MA 02111-1307, USA. */
FIXME: Could eliminate the duplication here if we were allowed to
use string concatenation. */
-#undef LIB_SPEC
#ifdef NETBSD_ENABLE_PTHREADS
-#define LIB_SPEC \
+#define NETBSD_LIB_SPEC \
"%{pthread: \
%{!p: \
%{!pg:-lpthread}} \
@@ -110,7 +109,7 @@ Boston, MA 02111-1307, USA. */
%{p:-lc_p} \
%{pg:-lc_p}}}"
#else
-#define LIB_SPEC \
+#define NETBSD_LIB_SPEC \
"%{posix: \
%{!p: \
%{!pg:-lposix}} \
@@ -124,23 +123,28 @@ Boston, MA 02111-1307, USA. */
%{pg:-lc_p}}}"
#endif
+#undef LIB_SPEC
+#define LIB_SPEC NETBSD_LIB_SPEC
+
/* Provide a LIBGCC_SPEC appropriate for NetBSD. We also want to exclude
libgcc with -symbolic. */
-#undef LIBGCC_SPEC
#ifdef NETBSD_NATIVE
-#define LIBGCC_SPEC \
+#define NETBSD_LIBGCC_SPEC \
"%{!symbolic: \
%{!shared: \
%{!p: \
- %{!pg: -lgcc}}} \
+ %{!pg: -lgcc}}} \
%{shared: -lgcc_pic} \
%{p: -lgcc_p} \
%{pg: -lgcc_p}}"
#else
-#define LIBGCC_SPEC "%{!shared:%{!symbolic: -lgcc}}"
+#define NETBSD_LIBGCC_SPEC "%{!shared:%{!symbolic: -lgcc}}"
#endif
+#undef LIBGCC_SPEC
+#define LIBGCC_SPEC NETBSD_LIBGCC_SPEC
+
/* When building shared libraries, the initialization and finalization
functions for the library are .init and .fini respectively. */
diff --git a/gcc/config/pa/pa-linux.h b/gcc/config/pa/pa-linux.h
index 7f372faa8d3..5b3c7045165 100644
--- a/gcc/config/pa/pa-linux.h
+++ b/gcc/config/pa/pa-linux.h
@@ -18,10 +18,6 @@ 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. */
-/* Use DWARF2 debugging info and unwind. */
-#undef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
-#define DWARF2_ASM_LINE_DEBUG_INFO 1
/* A C expression whose value is RTL representing the location of the
incoming return address at the beginning of any function, before the
@@ -135,18 +131,6 @@ Boston, MA 02111-1307, USA. */
} \
while (0)
-/* Output a definition */
-#define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2) \
- do \
- { \
- fprintf ((FILE), "\t%s\t", SET_ASM_OP); \
- assemble_name (FILE, LABEL1); \
- fprintf (FILE, ","); \
- assemble_name (FILE, LABEL2); \
- fprintf (FILE, "\n"); \
- } \
- while (0)
-
/* We want local labels to start with period if made with asm_fprintf. */
#undef LOCAL_LABEL_PREFIX
#define LOCAL_LABEL_PREFIX "."
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index b51e946852c..034a647e9ba 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -6238,8 +6238,21 @@ output_millicode_call (insn, call_dest)
loaded objects. Using a pc-relative sequence also avoids
problems related to the implicit use of the gp register. */
output_asm_insn ("b,l .+8,%%r1", xoperands);
- output_asm_insn ("addil L'%0-$PIC_pcrel$0+4,%%r1", xoperands);
- output_asm_insn ("ldo R'%0-$PIC_pcrel$0+8(%%r1),%%r1", xoperands);
+
+ if (TARGET_GAS)
+ {
+ output_asm_insn ("addil L'%0-$PIC_pcrel$0+4,%%r1", xoperands);
+ output_asm_insn ("ldo R'%0-$PIC_pcrel$0+8(%%r1),%%r1", xoperands);
+ }
+ else
+ {
+ xoperands[1] = gen_label_rtx ();
+ output_asm_insn ("addil L'%0-%l1,%%r1", xoperands);
+ ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "L",
+ CODE_LABEL_NUMBER (xoperands[1]));
+ output_asm_insn ("ldo R'%0-%l1(%%r1),%%r1", xoperands);
+ }
+
output_asm_insn ("bve,l (%%r1),%%r2", xoperands);
}
else if (TARGET_PORTABLE_RUNTIME)
@@ -6269,6 +6282,9 @@ output_millicode_call (insn, call_dest)
}
else
{
+ output_asm_insn ("{bl|b,l} .+8,%%r1", xoperands);
+ output_asm_insn ("addi 16,%%r1,%%r31", xoperands);
+
if (TARGET_SOM || !TARGET_GAS)
{
/* The HP assembler can generate relocations for the
@@ -6276,8 +6292,6 @@ output_millicode_call (insn, call_dest)
millicode symbol but not an arbitrary external
symbol when generating SOM output. */
xoperands[1] = gen_label_rtx ();
- output_asm_insn ("{bl|b,l} .+8,%%r1", xoperands);
- output_asm_insn ("addi 16,%%r1,%%r31", xoperands);
ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "L",
CODE_LABEL_NUMBER (xoperands[1]));
output_asm_insn ("addil L'%0-%l1,%%r1", xoperands);
@@ -6285,8 +6299,6 @@ output_millicode_call (insn, call_dest)
}
else
{
- output_asm_insn ("{bl|b,l} .+8,%%r1", xoperands);
- output_asm_insn ("addi 16,%%r1,%%r31", xoperands);
output_asm_insn ("addil L'%0-$PIC_pcrel$0+8,%%r1", xoperands);
output_asm_insn ("ldo R'%0-$PIC_pcrel$0+12(%%r1),%%r1",
xoperands);
diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h
index a3f24b6d6e3..d01aedf0bff 100644
--- a/gcc/config/pa/pa.h
+++ b/gcc/config/pa/pa.h
@@ -672,8 +672,10 @@ extern struct rtx_def *hppa_pic_save_rtx PARAMS ((void));
/* 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 8
+ of the first local allocated. The start of the locals must lie on
+ a STACK_BOUNDARY or else the frame size of leaf functions will not
+ be zero. */
+#define STARTING_FRAME_OFFSET (TARGET_64BIT ? 16 : 8)
/* If we generate an insn to push BYTES bytes,
this says how many the stack pointer really advances by.
diff --git a/gcc/config/pa/pa64-hpux.h b/gcc/config/pa/pa64-hpux.h
index 6d9728d6bff..aa7dac75382 100644
--- a/gcc/config/pa/pa64-hpux.h
+++ b/gcc/config/pa/pa64-hpux.h
@@ -31,14 +31,16 @@ Boston, MA 02111-1307, USA. */
N_("Assume code will be linked by HP ld") },
/* We can debug dynamically linked executables on hpux11; we also
- want dereferencing of a NULL pointer to cause a SEGV. */
+ want dereferencing of a NULL pointer to cause a SEGV. Do not move
+ the "+Accept TypeMismatch" switch. We check for it in collect2
+ to determine which init/fini is needed. */
#undef LINK_SPEC
#if ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_GNU_LD)
#define LINK_SPEC \
- "-E %{mlinker-opt:-O} %{!shared:-u main} %{static:-a archive} %{shared:%{mhp-ld:-b}%{!mhp-ld:-shared}} %{mhp-ld:+Accept TypeMismatch}"
+ "%{mhp-ld:+Accept TypeMismatch} -E %{mlinker-opt:-O} %{!shared:-u main} %{static:-a archive} %{shared:%{mhp-ld:-b}%{!mhp-ld:-shared}}"
#else
#define LINK_SPEC \
- "-E %{mlinker-opt:-O} %{!shared:-u main} %{static:-a archive} %{shared:%{mgnu-ld:-shared}%{!mgnu-ld:-b}} %{!mgnu-ld:+Accept TypeMismatch}"
+ "%{!mgnu-ld:+Accept TypeMismatch} -E %{mlinker-opt:-O} %{!shared:-u main} %{static:-a archive} %{shared:%{mgnu-ld:-shared}%{!mgnu-ld:-b}}"
#endif
/* Like the default, except no -lg. */
@@ -72,50 +74,165 @@ Boston, MA 02111-1307, USA. */
#define MD_STARTFILE_PREFIX_1 "/opt/langtools/lib/pa20_64/"
#endif
-/* hpux11 has the new HP assembler. It's still lousy, but it's a whole lot
- better than the assembler shipped with older versions of hpux. */
-#undef NEW_HP_ASSEMBLER
-#define NEW_HP_ASSEMBLER 1
+/* Due to limitations in the target structure, it isn't currently possible
+ to dynamically switch between the GNU and HP assemblers. */
+#undef TARGET_GAS
+
+/* Configure selects the standard ELFOS defines for use with GAS. */
+#ifdef USING_ELFOS_H
+
+/* We are using GAS. */
+#define TARGET_GAS 1
#undef ASM_FILE_START
#define ASM_FILE_START(FILE) \
-do { \
- if (TARGET_64BIT) \
- fputs("\t.LEVEL 2.0w\n", FILE); \
- else if (TARGET_PA_20) \
- fputs("\t.LEVEL 2.0\n", FILE); \
- else if (TARGET_PA_11) \
- fputs("\t.LEVEL 1.1\n", FILE); \
- else \
- fputs("\t.LEVEL 1.0\n", FILE); \
- if (profile_flag)\
- fprintf (FILE, "\t.IMPORT _mcount, CODE\n");\
- if (write_symbols != NO_DEBUG) \
- output_file_directive ((FILE), main_input_filename); \
- } while (0)
+do { \
+ if (TARGET_64BIT) \
+ fputs("\t.LEVEL 2.0w\n", FILE); \
+ else if (TARGET_PA_20) \
+ fputs("\t.LEVEL 2.0\n", FILE); \
+ else if (TARGET_PA_11) \
+ fputs("\t.LEVEL 1.1\n", FILE); \
+ else \
+ fputs("\t.LEVEL 1.0\n", FILE); \
+ if (profile_flag) \
+ ASM_OUTPUT_TYPE_DIRECTIVE (FILE, "_mcount", "function"); \
+ if (write_symbols != NO_DEBUG) \
+ { \
+ output_file_directive ((FILE), main_input_filename); \
+ fputs ("\t.version\t\"01.01\"\n", FILE); \
+ } \
+} while (0)
+
+/* This is how we output a null terminated string. */
+#undef STRING_ASM_OP
+#define STRING_ASM_OP "\t.stringz\t"
+
+#define TEXT_SECTION_ASM_OP "\t.text"
+#define DATA_SECTION_ASM_OP "\t.data"
+#define BSS_SECTION_ASM_OP "\t.section\t.bss"
+
+#undef ASM_OUTPUT_ALIGNED_COMMON
+#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN) \
+do { \
+ bss_section (); \
+ assemble_name ((FILE), (NAME)); \
+ fputs ("\t.comm ", (FILE)); \
+ fprintf ((FILE), "%d\n", MAX ((SIZE), ((ALIGN) / BITS_PER_UNIT))); \
+} while (0)
+
+#undef ASM_OUTPUT_ALIGNED_LOCAL
+#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \
+do { \
+ bss_section (); \
+ fprintf ((FILE), "\t.align %d\n", ((ALIGN) / BITS_PER_UNIT)); \
+ assemble_name ((FILE), (NAME)); \
+ fprintf ((FILE), "\n\t.block %d\n", (SIZE)); \
+} while (0)
+
+/* The define in pa.h doesn't work with the alias attribute. The
+ default is ok with the following define for GLOBAL_ASM_OP. */
+#undef TARGET_ASM_GLOBALIZE_LABEL
+
+/* This is how we globalize a label. */
+#define GLOBAL_ASM_OP "\t.globl\t"
+
+/* Hacked version from elfos.h that doesn't output a label. */
+#undef ASM_DECLARE_FUNCTION_NAME
+#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
+do { \
+ ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "function"); \
+ ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL)); \
+} while (0)
+
+/* The type of external references must be set correctly for the
+ dynamic loader to work correctly. This is equivalent to the
+ HP assembler's .IMPORT directive but relates more directly to
+ ELF object file types. */
+#define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME) \
+do { \
+ int save_referenced; \
+ save_referenced = TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (DECL));\
+ if (FUNCTION_NAME_P (NAME)) \
+ ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "function"); \
+ else \
+ ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object"); \
+ TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (DECL)) = save_referenced;\
+} while (0)
+
+/* We need set the type for external libcalls. Also note that not all
+ libcall names are passed to targetm.encode_section_info (e.g., __main).
+ Thus, we also have to do the section encoding if it hasn't been done
+ already. */
+#undef ASM_OUTPUT_EXTERNAL_LIBCALL
+#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN) \
+do { \
+ if (!FUNCTION_NAME_P (XSTR (FUN, 0))) \
+ hppa_encode_label (FUN); \
+ ASM_OUTPUT_TYPE_DIRECTIVE (FILE, XSTR (FUN, 0), "function"); \
+} while (0)
+
+/* We need to use the HP style for internal labels. */
+#undef ASM_OUTPUT_INTERNAL_LABEL
+#define ASM_OUTPUT_INTERNAL_LABEL(FILE, PREFIX, NUM) \
+ fprintf (FILE, "%c$%s%04d\n", (PREFIX)[0], (PREFIX) + 1, NUM)
+
+#undef ASM_GENERATE_INTERNAL_LABEL
+#define ASM_GENERATE_INTERNAL_LABEL(LABEL, PREFIX, NUM) \
+ sprintf (LABEL, "*%c$%s%04ld", (PREFIX)[0], (PREFIX) + 1, (long)(NUM))
+
+#else /* USING_ELFOS_H */
+
+/* We are not using GAS. */
+#define TARGET_GAS 0
+
+/* HPUX 11 has the "new" HP assembler. It's still lousy, but it's a whole
+ lot better than the assembler shipped with older versions of hpux.
+ However, it doesn't support weak symbols and is a bad fit with ELF. */
+#undef NEW_HP_ASSEMBLER
+#define NEW_HP_ASSEMBLER 1
/* It looks like DWARF2 will be the easiest debug format to handle on this
platform. */
-#define OBJECT_FORMAT_ELF
#define DWARF2_DEBUGGING_INFO 1
#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
-/* This isn't quite ready yet. I'm seeing it mess up some line
- tables. For example, we're getting lines starting/ending at
- impossible addresses. */
-#define DWARF2_ASM_LINE_DEBUG_INFO 1
+/* This target uses the ELF object file format. */
+#define OBJECT_FORMAT_ELF
-/* The rest of this file is copied from the generic svr4.h. One day we
- would like to simply include svr4.h instead of copying all these
- definitions. */
+#undef ASM_FILE_START
+#define ASM_FILE_START(FILE) \
+do { \
+ if (TARGET_64BIT) \
+ fputs("\t.LEVEL 2.0w\n", FILE); \
+ else if (TARGET_PA_20) \
+ fputs("\t.LEVEL 2.0\n", FILE); \
+ else if (TARGET_PA_11) \
+ fputs("\t.LEVEL 1.1\n", FILE); \
+ else \
+ fputs("\t.LEVEL 1.0\n", FILE); \
+ fputs("\t.SPACE $PRIVATE$,SORT=16\n\
+\t.SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31\n\
+\t.SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82\n\
+\t.SPACE $TEXT$,SORT=8\n\
+\t.SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44\n\
+\t.SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY\n", FILE); \
+ if (profile_flag) \
+ fprintf (FILE, "\t.IMPORT _mcount, CODE\n"); \
+ if (write_symbols != NO_DEBUG) \
+ output_file_directive ((FILE), main_input_filename); \
+} while (0)
-#define READONLY_DATA_SECTION_ASM_OP "\t.section\t.rodata"
+#undef TEXT_SECTION_ASM_OP
+#define TEXT_SECTION_ASM_OP "\t.SUBSPA $CODE$\n"
+#undef READONLY_DATA_SECTION_ASM_OP
+#define READONLY_DATA_SECTION_ASM_OP "\t.SUBSPA $LIT$\n"
+#undef DATA_SECTION_ASM_OP
+#define DATA_SECTION_ASM_OP "\t.SUBSPA $DATA$\n"
+#undef BSS_SECTION_ASM_OP
+#define BSS_SECTION_ASM_OP "\t.SUBSPA $BSS$\n"
-/* On svr4, we *do* have support for the .init and .fini sections, and we
- can put stuff in there to be executed before and after `main'. We let
- crtstuff.c and other files know this by defining the following symbols.
- The definitions say how to change sections to the .init and .fini
- sections. This is the same for all known svr4 assemblers. */
+#endif /* USING_ELFOS_H */
/* For the time being, we aren't using init sections. `P' relocations
are currently used for function references. However, P relocations are
@@ -124,10 +241,9 @@ do { \
weak symbols in crtbegin.o (e.g., __register_frame_info). Possibly
Q relocations might avoid this problem but the GNU assembler doesn't
support them. */
-#if 0
-#define INIT_SECTION_ASM_OP "\t.section\t.init"
-#define FINI_SECTION_ASM_OP "\t.section\t.fini"
-#else
+#undef INIT_SECTION_ASM_OP
+#undef FINI_SECTION_ASM_OP
+
#define EH_FRAME_IN_DATA_SECTION 1
#undef ENDFILE_SPEC
@@ -138,37 +254,25 @@ do { \
/* Since we are not yet using .init and .fini sections, we need to
explicitly arrange to run the global constructors and destructors.
- HPUX 11 has ldd and we use it to determine the dependencies of
- dynamic objects. It might be possible to use the ld options for
- running initializers and terminators and thereby avoid the necessity
- of running ldd, but unfortunately the options are different for
- the two linkers. */
-#define LDD_SUFFIX "/usr/ccs/bin/ldd"
-/* Skip to first '>' then advance to '/' at the beginning of the filename. */
-#define PARSE_LDD_OUTPUT(PTR) \
-do { \
- while (*PTR != '>') PTR++; \
- while (*PTR != '/') PTR++; \
-} while (0)
-#endif
-
-/* Switch into a generic section. */
-#define TARGET_ASM_NAMED_SECTION default_elf_asm_named_section
+ We could use ldd for this but it depends on LD_LIBRARY_PATH being
+ correctly set. So, we use the ld init and fini switches. However,
+ we need to support different switches for the GNU and HP linkers.
+ We can't check TARGET_GNU_LD in collect2, so we need a different
+ test. The +Accept switch is always the first switch when we are
+ using the HP linker (see define for LINK_SPEC). Checking for it
+ is a somewhat fragile as it depends on internal details of the
+ collect2 program but it is better than testing ld_file_name.
-#define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
-
-/* This is how we tell the assembler that a symbol is weak. */
-
-#define ASM_WEAKEN_LABEL(FILE,NAME) \
- do { fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \
- fputc ('\n', FILE); } while (0)
-
-/* Write the extra assembler code needed to declare a function's result.
- Most svr4 assemblers don't require any special declaration of the
- result value, but there are exceptions. */
-
-#ifndef ASM_DECLARE_RESULT
-#define ASM_DECLARE_RESULT(FILE, RESULT)
+ FIXME: The GNU linker is broken. The -init/-fini switches don't
+ work and ldd can't determine the dynamic dependences of executables
+ linked with GNU ld. The init and fini routines are not executed
+ although DT_INIT and DT_FINI appear ok. As a result, defining
+ LD_INIT_SWITCH and LD_FINI_SWITCH causes more harm than good when
+ using GNU ld. However, the definitions appear to work fine with
+ the HP linker. */
+#if 0
+#define LD_INIT_SWITCH (strcmp ("+Accept", ld2_argv[1]) ? "-init" : "+init")
+#define LD_FINI_SWITCH (strcmp ("+Accept", ld2_argv[1]) ? "-fini" : "+fini")
#endif
/* If using HP ld do not call pxdb. Use size as a program that does nothing
diff --git a/gcc/config/rs6000/linux.h b/gcc/config/rs6000/linux.h
index 95a4dd5791b..1711354da76 100644
--- a/gcc/config/rs6000/linux.h
+++ b/gcc/config/rs6000/linux.h
@@ -21,9 +21,6 @@ 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. */
-/* Don't assume anything about the header files. */
-#define NO_IMPLICIT_EXTERN_C
-
#undef MD_EXEC_PREFIX
#undef MD_STARTFILE_PREFIX
diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h
index 77902c830c2..73fd5beed3d 100644
--- a/gcc/config/rs6000/linux64.h
+++ b/gcc/config/rs6000/linux64.h
@@ -106,9 +106,6 @@ Boston, MA 02111-1307, USA. */
So we have to squirrel it away with this. */
#define SETUP_FRAME_ADDRESSES() rs6000_aix_emit_builtin_unwind_init ()
-/* Don't assume anything about the header files. */
-#define NO_IMPLICIT_EXTERN_C
-
/* Override svr4.h */
#undef MD_EXEC_PREFIX
#undef MD_STARTFILE_PREFIX
diff --git a/gcc/config/rs6000/rs6000-protos.h b/gcc/config/rs6000/rs6000-protos.h
index 53d819202fe..a7ec02b03e2 100644
--- a/gcc/config/rs6000/rs6000-protos.h
+++ b/gcc/config/rs6000/rs6000-protos.h
@@ -84,6 +84,7 @@ extern int constant_pool_expr_p PARAMS ((rtx));
extern int toc_relative_expr_p PARAMS ((rtx));
extern int expand_block_move PARAMS ((rtx[]));
extern int load_multiple_operation PARAMS ((rtx, enum machine_mode));
+extern const char * rs6000_output_load_multiple PARAMS ((rtx[]));
extern int store_multiple_operation PARAMS ((rtx, enum machine_mode));
extern int branch_comparison_operator PARAMS ((rtx, enum machine_mode));
extern int branch_positive_comparison_operator
@@ -186,7 +187,7 @@ extern void rs6000_emit_load_toc_table PARAMS ((int));
extern void rs6000_aix_emit_builtin_unwind_init PARAMS ((void));
extern void rs6000_emit_epilogue PARAMS ((int));
extern void debug_stack_info PARAMS ((rs6000_stack_t *));
-extern const char *output_isel PARAMS ((rtx *));
+extern const char * output_isel PARAMS ((rtx *));
extern int vrsave_operation PARAMS ((rtx, enum machine_mode));
extern int rs6000_register_move_cost PARAMS ((enum machine_mode,
enum reg_class, enum reg_class));
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 801c8fa56cc..cf2da5ebd98 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -3180,10 +3180,7 @@ function_arg (cum, mode, type, named)
&& SPE_VECTOR_MODE (mode) && !named)
{
rtx r1, r2;
- enum machine_mode m = GET_MODE_INNER (mode);
-
- if (mode == V1DImode)
- m = SImode;
+ enum machine_mode m = SImode;
r1 = gen_rtx_REG (m, gregno);
r1 = gen_rtx_EXPR_LIST (m, r1, const0_rtx);
@@ -6397,6 +6394,64 @@ store_multiple_operation (op, mode)
return 1;
}
+/* Return a string to perform a load_multiple operation.
+ operands[0] is the vector.
+ operands[1] is the source address.
+ operands[2] is the first destination register. */
+
+const char *
+rs6000_output_load_multiple (operands)
+ rtx operands[2];
+{
+ /* We have to handle the case where the pseudo used to contain the address
+ is assigned to one of the output registers. */
+ int i, j;
+ int words = XVECLEN (operands[0], 0);
+ rtx xop[10];
+
+ if (XVECLEN (operands[0], 0) == 1)
+ return "{l|lwz} %2,0(%1)";
+
+ for (i = 0; i < words; i++)
+ if (refers_to_regno_p (REGNO (operands[2]) + i,
+ REGNO (operands[2]) + i + 1, operands[1], 0))
+ {
+ if (i == words-1)
+ {
+ xop[0] = GEN_INT (4 * (words-1));
+ xop[1] = operands[1];
+ xop[2] = operands[2];
+ output_asm_insn ("{lsi|lswi} %2,%1,%0\n\t{l|lwz} %1,%0(%1)", xop);
+ return "";
+ }
+ else if (i == 0)
+ {
+ xop[0] = GEN_INT (4 * (words-1));
+ xop[1] = operands[1];
+ xop[2] = gen_rtx_REG (SImode, REGNO (operands[2]) + 1);
+ output_asm_insn ("{cal %1,4(%1)|addi %1,%1,4}\n\t{lsi|lswi} %2,%1,%0\n\t{l|lwz} %1,-4(%1)", xop);
+ return "";
+ }
+ else
+ {
+ for (j = 0; j < words; j++)
+ if (j != i)
+ {
+ xop[0] = GEN_INT (j * 4);
+ xop[1] = operands[1];
+ xop[2] = gen_rtx_REG (SImode, REGNO (operands[2]) + j);
+ output_asm_insn ("{l|lwz} %2,%0(%1)", xop);
+ }
+ xop[0] = GEN_INT (i * 4);
+ xop[1] = operands[1];
+ output_asm_insn ("{l|lwz} %1,%0(%1)", xop);
+ return "";
+ }
+ }
+
+ return "{lsi|lswi} %2,%1,%N0";
+}
+
/* Return 1 for a parallel vrsave operation. */
int
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index f221c17b042..853dab23f88 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -9250,7 +9250,7 @@
(define_insn "*movti_string"
[(set (match_operand:TI 0 "reg_or_mem_operand" "=Q,m,????r,????r,????r")
(match_operand:TI 1 "reg_or_mem_operand" "r,r,r,Q,m"))
- (clobber (match_scratch:SI 2 "=X,X,X,X,X"))]
+ (clobber (match_scratch:SI 2 "X,X,X,X,X"))]
"TARGET_STRING && ! TARGET_POWER && ! TARGET_POWERPC64
&& (gpc_reg_operand (operands[0], TImode) || gpc_reg_operand (operands[1], TImode))"
"*
@@ -9371,65 +9371,120 @@
adjust_address (op1, SImode, i * 4));
}")
-(define_insn ""
+(define_insn "*ldmsi8"
[(match_parallel 0 "load_multiple_operation"
- [(set (match_operand:SI 1 "gpc_reg_operand" "=r")
- (mem:SI (match_operand:SI 2 "gpc_reg_operand" "b")))])]
- "TARGET_STRING"
+ [(set (match_operand:SI 2 "gpc_reg_operand" "")
+ (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b")))
+ (set (match_operand:SI 3 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 4))))
+ (set (match_operand:SI 4 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 8))))
+ (set (match_operand:SI 5 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 12))))
+ (set (match_operand:SI 6 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 16))))
+ (set (match_operand:SI 7 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 20))))
+ (set (match_operand:SI 8 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 24))))
+ (set (match_operand:SI 9 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 28))))])]
+ "TARGET_STRING && XVECLEN (operands[0], 0) == 8"
"*
-{
- /* We have to handle the case where the pseudo used to contain the address
- is assigned to one of the output registers. */
- int i, j;
- int words = XVECLEN (operands[0], 0);
- rtx xop[10];
+{ return rs6000_output_load_multiple (operands); }"
+ [(set_attr "type" "load")
+ (set_attr "length" "32")])
- if (XVECLEN (operands[0], 0) == 1)
- return \"{l|lwz} %1,0(%2)\";
+(define_insn "*ldmsi7"
+ [(match_parallel 0 "load_multiple_operation"
+ [(set (match_operand:SI 2 "gpc_reg_operand" "")
+ (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b")))
+ (set (match_operand:SI 3 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 4))))
+ (set (match_operand:SI 4 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 8))))
+ (set (match_operand:SI 5 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 12))))
+ (set (match_operand:SI 6 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 16))))
+ (set (match_operand:SI 7 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 20))))
+ (set (match_operand:SI 8 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 24))))])]
+ "TARGET_STRING && XVECLEN (operands[0], 0) == 7"
+ "*
+{ return rs6000_output_load_multiple (operands); }"
+ [(set_attr "type" "load")
+ (set_attr "length" "32")])
- for (i = 0; i < words; i++)
- if (refers_to_regno_p (REGNO (operands[1]) + i,
- REGNO (operands[1]) + i + 1, operands[2], 0))
- {
- if (i == words-1)
- {
- xop[0] = operands[1];
- xop[1] = operands[2];
- xop[2] = GEN_INT (4 * (words-1));
- output_asm_insn (\"{lsi|lswi} %0,%1,%2\;{l|lwz} %1,%2(%1)\", xop);
- return \"\";
- }
- else if (i == 0)
- {
- xop[0] = operands[1];
- xop[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1);
- xop[2] = GEN_INT (4 * (words-1));
- output_asm_insn (\"{cal %0,4(%0)|addi %0,%0,4}\;{lsi|lswi} %1,%0,%2\;{l|lwz} %0,-4(%0)\", xop);
- return \"\";
- }
- else
- {
- for (j = 0; j < words; j++)
- if (j != i)
- {
- xop[0] = gen_rtx_REG (SImode, REGNO (operands[1]) + j);
- xop[1] = operands[2];
- xop[2] = GEN_INT (j * 4);
- output_asm_insn (\"{l|lwz} %0,%2(%1)\", xop);
- }
- xop[0] = operands[2];
- xop[1] = GEN_INT (i * 4);
- output_asm_insn (\"{l|lwz} %0,%1(%0)\", xop);
- return \"\";
- }
- }
+(define_insn "*ldmsi6"
+ [(match_parallel 0 "load_multiple_operation"
+ [(set (match_operand:SI 2 "gpc_reg_operand" "")
+ (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b")))
+ (set (match_operand:SI 3 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 4))))
+ (set (match_operand:SI 4 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 8))))
+ (set (match_operand:SI 5 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 12))))
+ (set (match_operand:SI 6 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 16))))
+ (set (match_operand:SI 7 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 20))))])]
+ "TARGET_STRING && XVECLEN (operands[0], 0) == 6"
+ "*
+{ return rs6000_output_load_multiple (operands); }"
+ [(set_attr "type" "load")
+ (set_attr "length" "32")])
- return \"{lsi|lswi} %1,%2,%N0\";
-}"
+(define_insn "*ldmsi5"
+ [(match_parallel 0 "load_multiple_operation"
+ [(set (match_operand:SI 2 "gpc_reg_operand" "")
+ (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b")))
+ (set (match_operand:SI 3 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 4))))
+ (set (match_operand:SI 4 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 8))))
+ (set (match_operand:SI 5 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 12))))
+ (set (match_operand:SI 6 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 16))))])]
+ "TARGET_STRING && XVECLEN (operands[0], 0) == 5"
+ "*
+{ return rs6000_output_load_multiple (operands); }"
+ [(set_attr "type" "load")
+ (set_attr "length" "32")])
+
+(define_insn "*ldmsi4"
+ [(match_parallel 0 "load_multiple_operation"
+ [(set (match_operand:SI 2 "gpc_reg_operand" "")
+ (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b")))
+ (set (match_operand:SI 3 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 4))))
+ (set (match_operand:SI 4 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 8))))
+ (set (match_operand:SI 5 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 12))))])]
+ "TARGET_STRING && XVECLEN (operands[0], 0) == 4"
+ "*
+{ return rs6000_output_load_multiple (operands); }"
+ [(set_attr "type" "load")
+ (set_attr "length" "32")])
+
+(define_insn "*ldmsi3"
+ [(match_parallel 0 "load_multiple_operation"
+ [(set (match_operand:SI 2 "gpc_reg_operand" "")
+ (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b")))
+ (set (match_operand:SI 3 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 4))))
+ (set (match_operand:SI 4 "gpc_reg_operand" "")
+ (mem:SI (plus:SI (match_dup 1) (const_int 8))))])]
+ "TARGET_STRING && XVECLEN (operands[0], 0) == 3"
+ "*
+{ return rs6000_output_load_multiple (operands); }"
[(set_attr "type" "load")
(set_attr "length" "32")])
-
(define_expand "store_multiple"
[(match_par_dup 3 [(set (match_operand:SI 0 "" "")
(match_operand:SI 1 "" ""))
@@ -9474,7 +9529,7 @@
gen_rtx_REG (SImode, regno + i));
}")
-(define_insn ""
+(define_insn "*store_multiple_power"
[(match_parallel 0 "store_multiple_operation"
[(set (match_operand:SI 1 "indirect_operand" "=Q")
(match_operand:SI 2 "gpc_reg_operand" "r"))
@@ -9483,7 +9538,7 @@
"{stsi|stswi} %2,%P1,%O0"
[(set_attr "type" "store")])
-(define_insn ""
+(define_insn "*store_multiple_string"
[(match_parallel 0 "store_multiple_operation"
[(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b"))
(match_operand:SI 2 "gpc_reg_operand" "r"))
diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
index 4ea2c4f0d1c..68fa73f7997 100644
--- a/gcc/config/rs6000/sysv4.h
+++ b/gcc/config/rs6000/sysv4.h
@@ -21,6 +21,9 @@ the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+/* Header files should be C++ aware in general. */
+#define NO_IMPLICIT_EXTERN_C
+
/* Yes! We are ELF. */
#define TARGET_OBJECT_FORMAT OBJECT_ELF
diff --git a/gcc/config/rs6000/windiss.h b/gcc/config/rs6000/windiss.h
index 32f925aba35..7aacb233c1d 100644
--- a/gcc/config/rs6000/windiss.h
+++ b/gcc/config/rs6000/windiss.h
@@ -45,5 +45,3 @@ Boston, MA 02111-1307, USA. */
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 16
-
-#define NO_IMPLICIT_EXTERN_C
diff --git a/gcc/config/s390/libgcc-glibc.ver b/gcc/config/s390/libgcc-glibc.ver
index 9a421519d80..1d9e2290413 100644
--- a/gcc/config/s390/libgcc-glibc.ver
+++ b/gcc/config/s390/libgcc-glibc.ver
@@ -8,6 +8,25 @@
# because GLIBC_2.0 does not exist on this architecture, as the first
# ever glibc release on the platform was GLIBC_2.2.
+%ifndef __s390x__
+%inherit GCC_3.0 GLIBC_2.0
+GLIBC_2.0 {
+ __divdi3
+ __moddi3
+ __udivdi3
+ __umoddi3
+
+ __register_frame
+ __register_frame_table
+ __deregister_frame
+ __register_frame_info
+ __deregister_frame_info
+ __frame_state_for
+ __register_frame_info_table
+}
+%endif
+
+%ifdef __s390x__
%inherit GCC_3.0 GLIBC_2.2
GLIBC_2.2 {
__register_frame
@@ -18,4 +37,5 @@ GLIBC_2.2 {
__frame_state_for
__register_frame_info_table
}
+%endif
diff --git a/gcc/config/s390/linux.h b/gcc/config/s390/linux.h
index d3e88072254..cbb771099dc 100644
--- a/gcc/config/s390/linux.h
+++ b/gcc/config/s390/linux.h
@@ -81,6 +81,12 @@ Boston, MA 02111-1307, USA. */
/* Target specific linker settings. */
+#ifdef DEFAULT_TARGET_64BIT
+#define MULTILIB_DEFAULTS { "m64" }
+#else
+#define MULTILIB_DEFAULTS { "m31" }
+#endif
+
#define LINK_ARCH31_SPEC \
"-m elf_s390 \
%{shared:-shared} \
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 67f59d53b5a..c2828a57aa7 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -816,6 +816,10 @@ optimization_options (level, size)
{
/* ??? There are apparently still problems with -fcaller-saves. */
flag_caller_saves = 0;
+
+ /* By default, always emit DWARF-2 unwind info. This allows debugging
+ without maintaining a stack frame back-chain. */
+ flag_asynchronous_unwind_tables = 1;
}
void
diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h
index 268ee2f3445..23721588c0f 100644
--- a/gcc/config/s390/s390.h
+++ b/gcc/config/s390/s390.h
@@ -497,6 +497,12 @@ extern int current_function_outgoing_args_size;
gen_rtx_MEM (Pmode, plus_constant (arg_pointer_rtx, \
TARGET_64BIT? -48 : -40))
+/* Select a format to encode pointers in exception handling data. */
+#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \
+ (flag_pic \
+ ? ((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_sdata4 \
+ : DW_EH_PE_absptr)
+
/* Frame registers. */
diff --git a/gcc/config/s390/t-linux64 b/gcc/config/s390/t-linux64
index d5a92781450..db839c65ef1 100644
--- a/gcc/config/s390/t-linux64
+++ b/gcc/config/s390/t-linux64
@@ -1,3 +1,12 @@
+MULTILIB_OPTIONS = m64/m31
+MULTILIB_DIRNAMES = 64 32
+MULTILIB_OSDIRNAMES = ../lib64 ../lib
+
+LIBGCC = stmp-multilib
+INSTALL_LIBGCC = install-multilib
+
+EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
+
# Override t-slibgcc-elf-ver to export some libgcc symbols with
# the symbol versions that glibc used.
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver $(srcdir)/config/s390/libgcc-glibc.ver
diff --git a/gcc/config/sh/sh-protos.h b/gcc/config/sh/sh-protos.h
index a729462393e..c87000bceeb 100644
--- a/gcc/config/sh/sh-protos.h
+++ b/gcc/config/sh/sh-protos.h
@@ -128,6 +128,7 @@ extern int sh_cfun_interrupt_handler_p PARAMS ((void));
extern void sh_initialize_trampoline PARAMS ((rtx, rtx, rtx));
extern enum reg_class sh_cannot_change_mode_class
PARAMS ((enum machine_mode, enum machine_mode));
+extern void sh_mark_label PARAMS ((rtx, int));
#ifdef HARD_CONST
extern void fpscr_set_from_mem PARAMS ((int, HARD_REG_SET));
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index d2cc47186d9..70cb0c1f167 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -2244,6 +2244,10 @@ typedef struct
rtx label; /* Label of value. */
rtx wend; /* End of window. */
enum machine_mode mode; /* Mode of value. */
+
+ /* True if this constant is accessed as part of a post-increment
+ sequence. Note that HImode constants are never accessed in this way. */
+ bool part_of_sequence_p;
} pool_node;
/* The maximum number of constants that can fit into one pool, since
@@ -2317,12 +2321,16 @@ add_constant (x, mode, last_value)
/* Need a new one. */
pool_vector[pool_size].value = x;
if (last_value && rtx_equal_p (last_value, pool_vector[pool_size - 1].value))
- lab = 0;
+ {
+ lab = 0;
+ pool_vector[pool_size - 1].part_of_sequence_p = true;
+ }
else
lab = gen_label_rtx ();
pool_vector[pool_size].mode = mode;
pool_vector[pool_size].label = lab;
pool_vector[pool_size].wend = NULL_RTX;
+ pool_vector[pool_size].part_of_sequence_p = (lab == 0);
if (lab && pool_window_label)
{
newref = gen_rtx_LABEL_REF (VOIDmode, pool_window_label);
@@ -2395,7 +2403,7 @@ dump_table (scan)
break;
case SImode:
case SFmode:
- if (align_insn)
+ if (align_insn && !p->part_of_sequence_p)
{
for (lab = p->label; lab; lab = LABEL_REFS (lab))
emit_label_before (lab, align_insn);
@@ -3718,7 +3726,6 @@ machine_dependent_reorg (first)
behind. */
rtx barrier = find_barrier (num_mova, mova, insn);
rtx last_float_move, last_float = 0, *last_float_addr;
- int may_need_align = 1;
if (num_mova && ! mova_p (mova))
{
@@ -3776,27 +3783,11 @@ machine_dependent_reorg (first)
if (last_float
&& reg_set_between_p (r0_rtx, last_float_move, scan))
last_float = 0;
- if (TARGET_SHCOMPACT)
- {
- /* The first SFmode constant after a DFmode
- constant may be pulled before a sequence
- of DFmode constants, so the second SFmode
- needs a label, just in case. */
- if (GET_MODE_SIZE (mode) == 4)
- {
- if (last_float && may_need_align)
- last_float = 0;
- may_need_align = 0;
- }
- if (last_float
- && (GET_MODE_SIZE (GET_MODE (last_float))
- != GET_MODE_SIZE (mode)))
- {
- last_float = 0;
- if (GET_MODE_SIZE (mode) == 4)
- may_need_align = 1;
- }
- }
+ if (last_float
+ && TARGET_SHCOMPACT
+ && GET_MODE_SIZE (mode) != 4
+ && GET_MODE_SIZE (GET_MODE (last_float)) == 4)
+ last_float = 0;
lab = add_constant (src, mode, last_float);
if (lab)
emit_insn_before (gen_mova (lab), scan);
@@ -4442,7 +4433,11 @@ calc_live_regs (count_ptr, live_regs_mask)
&& reg != RETURN_ADDRESS_POINTER_REGNUM
&& reg != T_REG && reg != GBR_REG)
: (/* Only push those regs which are used and need to be saved. */
- regs_ever_live[reg] && ! call_used_regs[reg]))
+ (TARGET_SHCOMPACT
+ && flag_pic
+ && current_function_args_info.call_cookie
+ && reg == PIC_OFFSET_TABLE_REGNUM)
+ || (regs_ever_live[reg] && ! call_used_regs[reg])))
{
live_regs_mask[reg / 32] |= 1 << (reg % 32);
count += GET_MODE_SIZE (REGISTER_NATURAL_MODE (reg));
@@ -7755,4 +7750,26 @@ sh_cannot_change_mode_class (from, to)
return NO_REGS;
}
+
+/* If ADDRESS refers to a CODE_LABEL, add NUSES to the number of times
+ that label is used. */
+
+void
+sh_mark_label (address, nuses)
+ rtx address;
+ int nuses;
+{
+ if (GOTOFF_P (address))
+ {
+ /* Extract the label or symbol. */
+ address = XEXP (address, 0);
+ if (GET_CODE (address) == PLUS)
+ address = XEXP (address, 0);
+ address = XVECEXP (address, 0, 0);
+ }
+ if (GET_CODE (address) == LABEL_REF
+ && GET_CODE (XEXP (address, 0)) == CODE_LABEL)
+ LABEL_NUSES (XEXP (address, 0)) += nuses;
+}
+
#include "gt-sh.h"
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index 95b140658fe..956c2253b9b 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -1341,7 +1341,7 @@
""
"
{
- rtx first = 0, last;
+ rtx first, last;
operands[3] = gen_reg_rtx (Pmode);
/* Emit the move of the address to a pseudo outside of the libcall. */
@@ -1358,8 +1358,8 @@
{
operands[1] = force_reg (SImode, operands[1]);
operands[2] = force_reg (SImode, operands[2]);
- last = gen_udivsi3_i4_media (operands[0], operands[1], operands[2]);
- first = last;
+ emit_insn (gen_udivsi3_i4_media (operands[0], operands[1], operands[2]));
+ DONE;
}
else if (TARGET_SH5)
{
@@ -1386,11 +1386,8 @@
gen_rtx_SYMBOL_REF (SImode, \"__udivsi3\"));
last = gen_udivsi3_i1 (operands[0], operands[3]);
}
- if (! first)
- {
- first = emit_move_insn (gen_rtx_REG (SImode, 4), operands[1]);
- emit_move_insn (gen_rtx_REG (SImode, 5), operands[2]);
- }
+ first = emit_move_insn (gen_rtx_REG (SImode, 4), operands[1]);
+ emit_move_insn (gen_rtx_REG (SImode, 5), operands[2]);
last = emit_insn (last);
/* Wrap the sequence in REG_LIBCALL / REG_RETVAL notes so that loop
invariant code motion can move it. */
@@ -1494,7 +1491,7 @@
""
"
{
- rtx first = 0, last;
+ rtx first, last;
operands[3] = gen_reg_rtx (Pmode);
/* Emit the move of the address to a pseudo outside of the libcall. */
@@ -1511,8 +1508,8 @@
{
operands[1] = force_reg (SImode, operands[1]);
operands[2] = force_reg (SImode, operands[2]);
- last = gen_divsi3_i4_media (operands[0], operands[1], operands[2]);
- first = last;
+ emit_insn (gen_divsi3_i4_media (operands[0], operands[1], operands[2]));
+ DONE;
}
else if (TARGET_SH5)
{
@@ -1538,11 +1535,8 @@
emit_move_insn (operands[3], gen_rtx_SYMBOL_REF (SImode, \"__sdivsi3\"));
last = gen_divsi3_i1 (operands[0], operands[3]);
}
- if (! first)
- {
- first = emit_move_insn (gen_rtx_REG (SImode, 4), operands[1]);
- emit_move_insn (gen_rtx_REG (SImode, 5), operands[2]);
- }
+ first = emit_move_insn (gen_rtx_REG (SImode, 4), operands[1]);
+ emit_move_insn (gen_rtx_REG (SImode, 5), operands[2]);
last = emit_insn (last);
/* Wrap the sequence in REG_LIBCALL / REG_RETVAL notes so that loop
invariant code motion can move it. */
@@ -2694,7 +2688,7 @@
(and:SI (ashift:SI (match_operand:SI 1 "register_operand" "")
(match_operand:SI 2 "const_int_operand" ""))
(match_operand:SI 3 "const_int_operand" "")))]
- "TARGET_SH1 && (unsigned)INTVAL (operands[2]) < 32"
+ "TARGET_SH1 && reload_completed && (unsigned)INTVAL (operands[2]) < 32"
[(use (reg:SI R0_REG))]
"if (gen_shl_and (operands[0], operands[2], operands[3], operands[1])) FAIL;
DONE;")
@@ -2705,7 +2699,7 @@
(match_operand:SI 2 "const_int_operand" ""))
(match_operand:SI 3 "const_int_operand" "")))
(clobber (reg:SI T_REG))]
- "TARGET_SH1 && (unsigned)INTVAL (operands[2]) < 32"
+ "TARGET_SH1 && reload_completed && (unsigned)INTVAL (operands[2]) < 32"
[(use (reg:SI R0_REG))]
"if (gen_shl_and (operands[0], operands[2], operands[3], operands[1])) FAIL;
DONE;")
@@ -3572,9 +3566,8 @@
{
rtx sfun, tramp;
+ tramp = force_reg (Pmode, operands[0]);
sfun = force_reg (Pmode, gen_rtx_SYMBOL_REF (Pmode, \"__init_trampoline\"));
- tramp = gen_rtx_REG (SImode, R0_REG);
- emit_move_insn (tramp, operands[0]);
emit_move_insn (gen_rtx_REG (SImode, R2_REG), operands[1]);
emit_move_insn (gen_rtx_REG (SImode, R3_REG), operands[2]);
@@ -3868,14 +3861,7 @@
&& MOVI_SHORI_BASE_OPERAND_P (operands[1])"
"
{
- if (GET_CODE (operands[1]) == LABEL_REF
- && GET_CODE (XEXP (operands[1], 0)) == CODE_LABEL)
- LABEL_NUSES (XEXP (operands[1], 0)) += 4;
- else if (GOTOFF_P (operands[1])
- && GET_CODE (XVECEXP (XEXP (operands[1], 0), 0, 0)) == LABEL_REF
- && (GET_CODE (XEXP (XVECEXP (XEXP (operands[1], 0), 0, 0), 0))
- == CODE_LABEL))
- LABEL_NUSES (XEXP (XVECEXP (XEXP (operands[1], 0), 0, 0), 0)) += 4;
+ sh_mark_label (operands[1], 4);
}")
(define_expand "movdi_const_32bit"
@@ -3897,14 +3883,7 @@
&& MOVI_SHORI_BASE_OPERAND_P (operands[1])"
"
{
- if (GET_CODE (operands[1]) == LABEL_REF
- && GET_CODE (XEXP (operands[1], 0)) == CODE_LABEL)
- LABEL_NUSES (XEXP (operands[1], 0)) += 2;
- else if (GOTOFF_P (operands[1])
- && GET_CODE (XVECEXP (XEXP (operands[1], 0), 0, 0)) == LABEL_REF
- && (GET_CODE (XEXP (XVECEXP (XEXP (operands[1], 0), 0, 0), 0))
- == CODE_LABEL))
- LABEL_NUSES (XEXP (XVECEXP (XEXP (operands[1], 0), 0, 0), 0)) += 2;
+ sh_mark_label (operands[1], 2);
}")
(define_expand "movdi_const_16bit"
diff --git a/gcc/config/stormy16/stormy16.c b/gcc/config/stormy16/stormy16.c
index 5c54155f6d9..417a8dc03ab 100644
--- a/gcc/config/stormy16/stormy16.c
+++ b/gcc/config/stormy16/stormy16.c
@@ -53,6 +53,9 @@ static void xstormy16_encode_section_info PARAMS ((tree, int));
static void xstormy16_asm_output_mi_thunk PARAMS ((FILE *, tree, HOST_WIDE_INT,
HOST_WIDE_INT, tree));
+static void xstormy16_init_builtins PARAMS ((void));
+static rtx xstormy16_expand_builtin PARAMS ((tree, rtx, rtx, enum machine_mode, int));
+
/* Define the information needed to generate branch and scc insns. This is
stored from the compare operation. */
struct rtx_def * xstormy16_compare_op0;
@@ -2028,6 +2031,126 @@ xstormy16_handle_interrupt_attribute (node, name, args, flags, no_add_attrs)
return NULL_TREE;
}
+#undef TARGET_INIT_BUILTINS
+#define TARGET_INIT_BUILTINS xstormy16_init_builtins
+#undef TARGET_EXPAND_BUILTIN
+#define TARGET_EXPAND_BUILTIN xstormy16_expand_builtin
+
+static struct {
+ const char *name;
+ int md_code;
+ const char *arg_ops; /* 0..9, t for temp register, r for return value */
+ const char *arg_types; /* s=short,l=long, upper case for unsigned */
+} s16builtins[] = {
+ { "__sdivlh", CODE_FOR_sdivlh, "rt01", "sls" },
+ { "__smodlh", CODE_FOR_sdivlh, "tr01", "sls" },
+ { "__udivlh", CODE_FOR_udivlh, "rt01", "SLS" },
+ { "__umodlh", CODE_FOR_udivlh, "tr01", "SLS" },
+ { 0, 0, 0, 0 }
+};
+
+static void
+xstormy16_init_builtins ()
+{
+ tree args, ret_type, arg;
+ int i, a;
+
+ ret_type = void_type_node;
+
+ for (i=0; s16builtins[i].name; i++)
+ {
+ args = void_list_node;
+ for (a=strlen (s16builtins[i].arg_types)-1; a>=0; a--)
+ {
+ switch (s16builtins[i].arg_types[a])
+ {
+ case 's': arg = short_integer_type_node; break;
+ case 'S': arg = short_unsigned_type_node; break;
+ case 'l': arg = long_integer_type_node; break;
+ case 'L': arg = long_unsigned_type_node; break;
+ default: abort();
+ }
+ if (a == 0)
+ ret_type = arg;
+ else
+ args = tree_cons (NULL_TREE, arg, args);
+ }
+ builtin_function (s16builtins[i].name,
+ build_function_type (ret_type, args),
+ i, BUILT_IN_MD, NULL, NULL);
+ }
+}
+
+static rtx
+xstormy16_expand_builtin(exp, target, subtarget, mode, ignore)
+ tree exp;
+ rtx target;
+ rtx subtarget ATTRIBUTE_UNUSED;
+ enum machine_mode mode ATTRIBUTE_UNUSED;
+ int ignore ATTRIBUTE_UNUSED;
+{
+ rtx op[10], args[10], pat, copyto[10], retval = 0;
+ tree fndecl, argtree;
+ int i, a, o, code;
+
+ fndecl = TREE_OPERAND (TREE_OPERAND (exp, 0), 0);
+ argtree = TREE_OPERAND (exp, 1);
+ i = DECL_FUNCTION_CODE (fndecl);
+ code = s16builtins[i].md_code;
+
+ for (a = 0; a < 10 && argtree; a++)
+ {
+ args[a] = expand_expr (TREE_VALUE (argtree), NULL_RTX, VOIDmode, 0);
+ argtree = TREE_CHAIN (argtree);
+ }
+
+ for (o = 0; s16builtins[i].arg_ops[o]; o++)
+ {
+ char ao = s16builtins[i].arg_ops[o];
+ char c = insn_data[code].operand[o].constraint[0];
+ int omode;
+
+ copyto[o] = 0;
+
+ omode = insn_data[code].operand[o].mode;
+ if (ao == 'r')
+ op[o] = target ? target : gen_reg_rtx (omode);
+ else if (ao == 't')
+ op[o] = gen_reg_rtx (omode);
+ else
+ op[o] = args[(int) hex_value (ao)];
+
+ if (! (*insn_data[code].operand[o].predicate) (op[o], GET_MODE (op[o])))
+ {
+ if (c == '+' || c == '=')
+ {
+ copyto[o] = op[o];
+ op[o] = gen_reg_rtx (omode);
+ }
+ else
+ op[o] = copy_to_mode_reg (omode, op[o]);
+ }
+
+ if (ao == 'r')
+ retval = op[o];
+ }
+
+ pat = GEN_FCN (code) (op[0], op[1], op[2], op[3], op[4],
+ op[5], op[6], op[7], op[8], op[9]);
+ emit_insn (pat);
+
+ for (o = 0; s16builtins[i].arg_ops[o]; o++)
+ if (copyto[o])
+ {
+ emit_move_insn (copyto[o], op[o]);
+ if (op[o] == retval)
+ retval = copyto[o];
+ }
+
+ return retval;
+}
+
+
#undef TARGET_ASM_ALIGNED_HI_OP
#define TARGET_ASM_ALIGNED_HI_OP "\t.hword\t"
#undef TARGET_ASM_ALIGNED_SI_OP
diff --git a/gcc/config/stormy16/stormy16.md b/gcc/config/stormy16/stormy16.md
index 9283aafc661..56033d19694 100644
--- a/gcc/config/stormy16/stormy16.md
+++ b/gcc/config/stormy16/stormy16.md
@@ -435,6 +435,42 @@
"div"
[(set_attr "psw_operand" "nop")])
+;; Signed division giving both quotient and remainder
+(define_insn "divmodhi4"
+ [(set (match_operand:HI 0 "register_operand" "=a")
+ (div:HI (match_operand:HI 1 "register_operand" "a")
+ (match_operand:HI 2 "register_operand" "c")))
+ (set (match_operand:HI 3 "register_operand" "=b")
+ (mod:HI (match_dup 1)
+ (match_dup 2)))]
+ ""
+ "sdiv"
+ [(set_attr "psw_operand" "nop")])
+
+;; Signed 32/16 division
+(define_insn "sdivlh"
+ [(set (match_operand:HI 0 "register_operand" "=a")
+ (div:HI (match_operand:SI 2 "register_operand" "t")
+ (match_operand:HI 3 "register_operand" "c")))
+ (set (match_operand:HI 1 "register_operand" "=b")
+ (mod:HI (match_dup 2)
+ (match_dup 3)))]
+ ""
+ "sdivlh"
+ [(set_attr "psw_operand" "nop")])
+
+;; Unsigned 32/16 division
+(define_insn "udivlh"
+ [(set (match_operand:HI 0 "register_operand" "=a")
+ (udiv:HI (match_operand:SI 2 "register_operand" "t")
+ (match_operand:HI 3 "register_operand" "c")))
+ (set (match_operand:HI 1 "register_operand" "=b")
+ (umod:HI (match_dup 2)
+ (match_dup 3)))]
+ ""
+ "divlh"
+ [(set_attr "psw_operand" "nop")])
+
;; Negation
(define_expand "neghi2"
diff --git a/gcc/config/xtensa/xtensa-protos.h b/gcc/config/xtensa/xtensa-protos.h
index 051c81e6939..195d71da642 100644
--- a/gcc/config/xtensa/xtensa-protos.h
+++ b/gcc/config/xtensa/xtensa-protos.h
@@ -70,6 +70,7 @@ extern int xtensa_expand_conditional_move PARAMS ((rtx *, int));
extern int xtensa_expand_scc PARAMS ((rtx *));
extern int xtensa_expand_block_move PARAMS ((rtx *));
extern int xtensa_emit_move_sequence PARAMS ((rtx *, enum machine_mode));
+extern bool xtensa_copy_incoming_a7 PARAMS ((rtx *, enum machine_mode));
extern void xtensa_emit_block_move PARAMS ((rtx *, rtx *, int));
extern void xtensa_expand_nonlocal_goto PARAMS ((rtx *));
extern void xtensa_emit_loop_end PARAMS ((rtx, rtx *));
diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c
index ae7c994d9a8..babb5b06a51 100644
--- a/gcc/config/xtensa/xtensa.c
+++ b/gcc/config/xtensa/xtensa.c
@@ -90,6 +90,7 @@ const char *xtensa_st_opcodes[(int) MAX_MACHINE_MODE];
struct machine_function GTY(())
{
int accesses_prev_frame;
+ bool incoming_a7_copied;
};
/* Vector, indexed by hard register number, which contains 1 for a
@@ -1275,45 +1276,8 @@ xtensa_emit_move_sequence (operands, mode)
if (!xtensa_valid_move (mode, operands))
operands[1] = force_reg (mode, operands[1]);
- /* Check if this move is copying an incoming argument in a7. If
- so, emit the move, followed by the special "set_frame_ptr"
- unspec_volatile insn, at the very beginning of the function.
- This is necessary because the register allocator will ignore
- conflicts with a7 and may assign some other pseudo to a7. If
- that pseudo was assigned prior to this move, it would clobber
- the incoming argument in a7. By copying the argument out of
- a7 as the very first thing, and then immediately following
- that with an unspec_volatile to keep the scheduler away, we
- should avoid any problems. */
-
- if (a7_overlap_mentioned_p (operands[1]))
- {
- rtx mov;
- switch (mode)
- {
- case SImode:
- mov = gen_movsi_internal (operands[0], operands[1]);
- break;
- case HImode:
- mov = gen_movhi_internal (operands[0], operands[1]);
- break;
- case QImode:
- mov = gen_movqi_internal (operands[0], operands[1]);
- break;
- default:
- abort ();
- }
-
- /* Insert the instructions before any other argument copies.
- (The set_frame_ptr insn comes _after_ the move, so push it
- out first.) */
- push_topmost_sequence ();
- emit_insn_after (gen_set_frame_ptr (), get_insns ());
- emit_insn_after (mov, get_insns ());
- pop_topmost_sequence ();
-
- return 1;
- }
+ if (xtensa_copy_incoming_a7 (operands, mode))
+ return 1;
}
/* During reload we don't want to emit (subreg:X (mem:Y)) since that
@@ -1345,6 +1309,74 @@ fixup_subreg_mem (x)
}
+/* Check if this move is copying an incoming argument in a7. If so,
+ emit the move, followed by the special "set_frame_ptr"
+ unspec_volatile insn, at the very beginning of the function. This
+ is necessary because the register allocator will ignore conflicts
+ with a7 and may assign some other pseudo to a7. If that pseudo was
+ assigned prior to this move, it would clobber the incoming argument
+ in a7. By copying the argument out of a7 as the very first thing,
+ and then immediately following that with an unspec_volatile to keep
+ the scheduler away, we should avoid any problems. */
+
+bool
+xtensa_copy_incoming_a7 (operands, mode)
+ rtx *operands;
+ enum machine_mode mode;
+{
+ if (a7_overlap_mentioned_p (operands[1])
+ && !cfun->machine->incoming_a7_copied)
+ {
+ rtx mov;
+ switch (mode)
+ {
+ case DFmode:
+ mov = gen_movdf_internal (operands[0], operands[1]);
+ break;
+ case SFmode:
+ mov = gen_movsf_internal (operands[0], operands[1]);
+ break;
+ case DImode:
+ mov = gen_movdi_internal (operands[0], operands[1]);
+ break;
+ case SImode:
+ mov = gen_movsi_internal (operands[0], operands[1]);
+ break;
+ case HImode:
+ mov = gen_movhi_internal (operands[0], operands[1]);
+ break;
+ case QImode:
+ mov = gen_movqi_internal (operands[0], operands[1]);
+ break;
+ default:
+ abort ();
+ }
+
+ /* Insert the instructions before any other argument copies.
+ (The set_frame_ptr insn comes _after_ the move, so push it
+ out first.) */
+ push_topmost_sequence ();
+ emit_insn_after (gen_set_frame_ptr (), get_insns ());
+ emit_insn_after (mov, get_insns ());
+ pop_topmost_sequence ();
+
+ /* Ideally the incoming argument in a7 would only be copied
+ once, since propagating a7 into the body of a function
+ will almost certainly lead to errors. However, there is
+ at least one harmless case (in GCSE) where the original
+ copy from a7 is changed to copy into a new pseudo. Thus,
+ we use a flag to only do this special treatment for the
+ first copy of a7. */
+
+ cfun->machine->incoming_a7_copied = true;
+
+ return 1;
+ }
+
+ return 0;
+}
+
+
/* Try to expand a block move operation to an RTL block move instruction.
If not optimizing or if the block size is not a constant or if the
block is small, the expansion fails and GCC falls back to calling
diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md
index d4f8c84852e..5db5c0ca487 100644
--- a/gcc/config/xtensa/xtensa.md
+++ b/gcc/config/xtensa/xtensa.md
@@ -929,12 +929,8 @@
&& !register_operand (operands[1], DImode))
operands[1] = force_reg (DImode, operands[1]);
- if (a7_overlap_mentioned_p (operands[1]))
- {
- emit_insn (gen_movdi_internal (operands[0], operands[1]));
- emit_insn (gen_set_frame_ptr ());
- DONE;
- }
+ if (xtensa_copy_incoming_a7 (operands, DImode))
+ DONE;
}
}")
@@ -1107,12 +1103,8 @@
&& constantpool_mem_p (operands[1]))))
operands[1] = force_reg (SFmode, operands[1]);
- if (a7_overlap_mentioned_p (operands[1]))
- {
- emit_insn (gen_movsf_internal (operands[0], operands[1]));
- emit_insn (gen_set_frame_ptr ());
- DONE;
- }
+ if (xtensa_copy_incoming_a7 (operands, SFmode))
+ DONE;
}
}")
@@ -1193,12 +1185,8 @@
&& !register_operand (operands[1], DFmode))
operands[1] = force_reg (DFmode, operands[1]);
- if (a7_overlap_mentioned_p (operands[1]))
- {
- emit_insn (gen_movdf_internal (operands[0], operands[1]));
- emit_insn (gen_set_frame_ptr ());
- DONE;
- }
+ if (xtensa_copy_incoming_a7 (operands, DFmode))
+ DONE;
}
}")
diff --git a/gcc/configure b/gcc/configure
index 9980cdf9a86..8d75a25934c 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -791,368 +791,11 @@ if test x${gcc_gxx_include_dir} = x; then
fi
fi
-# Determine whether or not multilibs are enabled.
-# Check whether --enable-multilib or --disable-multilib was given.
-if test "${enable_multilib+set}" = set; then
- enableval="$enable_multilib"
- :
-else
- enable_multilib=yes
-fi
-
-
-
-# Enable expensive internal checks
-# Check whether --enable-checking or --disable-checking was given.
-if test "${enable_checking+set}" = set; then
- enableval="$enable_checking"
- ac_checking=
-ac_tree_checking=
-ac_rtl_checking=
-ac_rtlflag_checking=
-ac_gc_checking=
-ac_gc_always_collect=
-case "${enableval}" in
-yes) ac_checking=1 ; ac_tree_checking=1 ; ac_gc_checking=1 ;
- ac_rtlflag_checking=1 ;;
-no) ;;
-*) IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
- set fnord $enableval; shift
- IFS="$ac_save_IFS"
- for check
- do
- case $check in
- misc) ac_checking=1 ;;
- tree) ac_tree_checking=1 ;;
- rtlflag) ac_rtlflag_checking=1 ;;
- rtl) ac_rtl_checking=1 ;;
- gc) ac_gc_checking=1 ;;
- gcac) ac_gc_always_collect=1 ;;
- *) { echo "configure: error: unknown check category $check" 1>&2; exit 1; } ;;
- esac
- done
- ;;
-esac
-
-else
- # Enable some checks by default for development versions of GCC
-ac_checking=1; ac_tree_checking=1; ac_gc_checking=1; ac_rtlflag_checking=1;
-fi
-
-nocommon_flag=""
-if test x$ac_checking != x ; then
- cat >> confdefs.h <<\EOF
-#define ENABLE_CHECKING 1
-EOF
-
- nocommon_flag=-fno-common
-fi
-
-if test x$ac_tree_checking != x ; then
- cat >> confdefs.h <<\EOF
-#define ENABLE_TREE_CHECKING 1
-EOF
-
-fi
-if test x$ac_rtl_checking != x ; then
- cat >> confdefs.h <<\EOF
-#define ENABLE_RTL_CHECKING 1
-EOF
-
-fi
-if test x$ac_rtlflag_checking != x ; then
- cat >> confdefs.h <<\EOF
-#define ENABLE_RTL_FLAG_CHECKING 1
-EOF
-
-fi
-if test x$ac_gc_checking != x ; then
- cat >> confdefs.h <<\EOF
-#define ENABLE_GC_CHECKING 1
-EOF
-
-fi
-if test x$ac_gc_always_collect != x ; then
- cat >> confdefs.h <<\EOF
-#define ENABLE_GC_ALWAYS_COLLECT 1
-EOF
-
-fi
-
-# Enable code coverage collection
-# Check whether --enable-coverage or --disable-coverage was given.
-if test "${enable_coverage+set}" = set; then
- enableval="$enable_coverage"
- case "${enableval}" in
-yes|noopt)
- coverage_flags="-fprofile-arcs -ftest-coverage -O0"
- ;;
-opt)
- coverage_flags="-fprofile-arcs -ftest-coverage -O2"
- ;;
-*)
- { echo "configure: error: unknown coverage setting $enableval" 1>&2; exit 1; }
- ;;
-esac
-else
- coverage_flags=""
-fi
-
-
-
-# Check whether --with-cpp_install_dir or --without-cpp_install_dir was given.
-if test "${with_cpp_install_dir+set}" = set; then
- withval="$with_cpp_install_dir"
- if test x$withval = xyes; then
- { echo "configure: error: option --with-cpp-install-dir requires an argument" 1>&2; exit 1; }
-elif test x$withval != xno; then
- cpp_install_dir=$withval
-fi
-fi
-
-
-# Enable __cxa_atexit for C++.
-# Check whether --enable-__cxa_atexit or --disable-__cxa_atexit was given.
-if test "${enable___cxa_atexit+set}" = set; then
- enableval="$enable___cxa_atexit"
- :
-fi
-
-if test x$enable___cxa_atexit = xyes; then
- cat >> confdefs.h <<\EOF
-#define DEFAULT_USE_CXA_ATEXIT 1
-EOF
-
-fi
-
-# Enable Multibyte Characters for C/C++
-# Check whether --enable-c-mbchar or --disable-c-mbchar was given.
-if test "${enable_c_mbchar+set}" = set; then
- enableval="$enable_c_mbchar"
- if test x$enable_c_mbchar != xno; then
- cat >> confdefs.h <<\EOF
-#define MULTIBYTE_CHARS 1
-EOF
-
-fi
-fi
-
-
-# Enable threads
-# Pass with no value to take the default
-# Pass with a value to specify a thread package
-# Check whether --enable-threads or --disable-threads was given.
-if test "${enable_threads+set}" = set; then
- enableval="$enable_threads"
- :
-else
- enable_threads=''
-fi
-
-
-enable_threads_flag=$enable_threads
-# Check if a valid thread package
-case x${enable_threads_flag} in
- x | xno)
- # No threads
- target_thread_file='single'
- ;;
- xyes)
- # default
- target_thread_file=''
- ;;
- xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
- xsolaris | xwin32 | xdce | xrtems| xvxworks | xaix)
- target_thread_file=$enable_threads_flag
- ;;
- *)
- echo "$enable_threads is an unknown thread package" 1>&2
- exit 1
- ;;
-esac
-
-# Check whether --enable-objc-gc or --disable-objc-gc was given.
-if test "${enable_objc_gc+set}" = set; then
- enableval="$enable_objc_gc"
- if test x$enable_objc_gc = xno; then
- objc_boehm_gc=''
-else
- objc_boehm_gc=1
-fi
-else
- objc_boehm_gc=''
-fi
-
-
-# Check whether --with-dwarf2 or --without-dwarf2 was given.
-if test "${with_dwarf2+set}" = set; then
- withval="$with_dwarf2"
- dwarf2="$with_dwarf2"
-else
- dwarf2=no
-fi
-
-
-# Check whether --enable-shared or --disable-shared was given.
-if test "${enable_shared+set}" = set; then
- enableval="$enable_shared"
-
- case $enable_shared in
- yes | no) ;;
- *)
- enable_shared=no
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
- for pkg in $enableval; do
- if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
- enable_shared=yes
- fi
- done
- IFS="$ac_save_ifs"
- ;;
- esac
-
-else
- enable_shared=yes
-fi
-
-
-
-# Determine the host, build, and target systems
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
- if test -f $ac_dir/install-sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f $ac_dir/install.sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 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.
-
-
-# Do some error checking and defaulting for the host and target type.
-# The inputs are:
-# configure --host=HOST --target=TARGET --build=BUILD NONOPT
-#
-# The rules are:
-# 1. You are not allowed to specify --host, --target, and nonopt at the
-# same time.
-# 2. Host defaults to nonopt.
-# 3. If nonopt is not specified, then host defaults to the current host,
-# as determined by config.guess.
-# 4. Target and build default to nonopt.
-# 5. If nonopt is not specified, then target and build default to host.
-
-# The aliases save the names the user supplied, while $host etc.
-# will get canonicalized.
-case $host---$target---$nonopt in
-NONE---*---* | *---NONE---* | *---*---NONE) ;;
-*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;;
-esac
-
-
-# Make sure we can run config.sub.
-if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
-else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
-fi
-
-echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1069: checking host system type" >&5
-
-host_alias=$host
-case "$host_alias" in
-NONE)
- case $nonopt in
- NONE)
- if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
- else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
- fi ;;
- *) host_alias=$nonopt ;;
- esac ;;
-esac
-
-host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
-host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-echo "$ac_t""$host" 1>&6
-
-echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1090: checking target system type" >&5
-
-target_alias=$target
-case "$target_alias" in
-NONE)
- case $nonopt in
- NONE) target_alias=$host_alias ;;
- *) target_alias=$nonopt ;;
- esac ;;
-esac
-
-target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias`
-target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-echo "$ac_t""$target" 1>&6
-
-echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1108: checking build system type" >&5
-
-build_alias=$build
-case "$build_alias" in
-NONE)
- case $nonopt in
- NONE) build_alias=$host_alias ;;
- *) build_alias=$nonopt ;;
- esac ;;
-esac
-
-build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias`
-build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-echo "$ac_t""$build" 1>&6
-
-test "$host_alias" != "$target_alias" &&
- test "$program_prefix$program_suffix$program_transform_name" = \
- NONENONEs,x,x, &&
- program_prefix=${target_alias}-
-
-
-# Set program_transform_name
-if test "$program_transform_name" = s,x,x,; then
- program_transform_name=
-else
- # Double any \ or $. echo might interpret backslashes.
- cat <<\EOF_SED > conftestsed
-s,\\,\\\\,g; s,\$,$$,g
-EOF_SED
- program_transform_name="`echo $program_transform_name|sed -f conftestsed`"
- rm -f conftestsed
-fi
-test "$program_prefix" != NONE &&
- program_transform_name="s,^,${program_prefix},; $program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
- program_transform_name="s,\$\$,${program_suffix},; $program_transform_name"
-
-# sed with no file args requires a program.
-test "$program_transform_name" = "" && program_transform_name="s,x,x,"
-
-
# Find the native compiler
# 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:1156: checking for $ac_word" >&5
+echo "configure:799: 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
@@ -1182,7 +825,7 @@ if test -z "$CC"; then
# 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:1186: checking for $ac_word" >&5
+echo "configure:829: 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
@@ -1233,7 +876,7 @@ fi
# 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:1237: checking for $ac_word" >&5
+echo "configure:880: 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
@@ -1265,7 +908,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1269: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:912: 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.
@@ -1276,12 +919,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1280 "configure"
+#line 923 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:928: \"$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
@@ -1307,12 +950,12 @@ if test $ac_cv_prog_cc_works = no; then
{ 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:1311: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:954: 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:1316: checking whether we are using GNU C" >&5
+echo "configure:959: 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
@@ -1321,7 +964,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1325: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:968: \"$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
@@ -1340,7 +983,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1344: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:987: 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
@@ -1373,10 +1016,10 @@ fi
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:1377: checking whether $CC and cc understand -c and -o together" >&5
+echo "configure:1020: 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:1380: checking whether cc understands -c and -o together" >&5
+echo "configure:1023: 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]/_/'`"
@@ -1388,16 +1031,16 @@ else
# 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:1392: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
- test -f conftest.o && { (eval echo configure:1393: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
+if { (eval echo configure:1035: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
+ test -f conftest.o && { (eval echo configure:1036: \"$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:1398: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+ if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:1041: \"$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:1400: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
- test -f conftest.o && { (eval echo configure:1401: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
+ if { (eval echo configure:1043: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
+ test -f conftest.o && { (eval echo configure:1044: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
then
# cc works too.
:
@@ -1433,6 +1076,70 @@ fi
# See if GNAT has been installed
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+ if test -f $ac_dir/install-sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f $ac_dir/install.sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 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.
+
+
+# Make sure we can run config.sub.
+if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
+else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
+fi
+
+echo $ac_n "checking host system type""... $ac_c" 1>&6
+echo "configure:1106: checking host system type" >&5
+
+host_alias=$host
+case "$host_alias" in
+NONE)
+ case $nonopt in
+ NONE)
+ if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
+ else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
+ fi ;;
+ *) host_alias=$nonopt ;;
+ esac ;;
+esac
+
+host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$host" 1>&6
+
+echo $ac_n "checking build system type""... $ac_c" 1>&6
+echo "configure:1127: checking build system type" >&5
+
+build_alias=$build
+case "$build_alias" in
+NONE)
+ case $nonopt in
+ NONE) build_alias=$host_alias ;;
+ *) build_alias=$nonopt ;;
+ esac ;;
+esac
+
+build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias`
+build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$build" 1>&6
+
if test $host != $build; then
ac_tool_prefix=${host_alias}-
else
@@ -1443,7 +1150,7 @@ fi
# Extract the first word of "${ac_tool_prefix}gnatbind", so it can be a program name with args.
set dummy ${ac_tool_prefix}gnatbind; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1447: checking for $ac_word" >&5
+echo "configure:1154: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_GNATBIND'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1475,7 +1182,7 @@ if test -n "$ac_tool_prefix"; then
# 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:1479: checking for $ac_word" >&5
+echo "configure:1186: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_GNATBIND'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1508,7 +1215,7 @@ fi
fi
echo $ac_n "checking for compiler driver that understands Ada""... $ac_c" 1>&6
-echo "configure:1512: checking for compiler driver that understands Ada" >&5
+echo "configure:1219: checking for compiler driver that understands Ada" >&5
if eval "test \"`echo '$''{'gcc_cv_prog_adac'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1553,21 +1260,21 @@ fi
echo $ac_n "checking whether ${CC-cc} accepts -Wno-long-long""... $ac_c" 1>&6
-echo "configure:1557: checking whether ${CC-cc} accepts -Wno-long-long" >&5
+echo "configure:1264: 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 <<EOF
-#line 1564 "configure"
+#line 1271 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:1571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1278: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_prog_cc_no_long_long=yes
else
@@ -1584,7 +1291,7 @@ echo "$ac_t""$ac_cv_prog_cc_no_long_long" 1>&6
if test x$have_gnat != xno ; then
echo $ac_n "checking whether ${ADAC} accepts -Wno-long-long""... $ac_c" 1>&6
-echo "configure:1588: checking whether ${ADAC} accepts -Wno-long-long" >&5
+echo "configure:1295: checking whether ${ADAC} accepts -Wno-long-long" >&5
if eval "test \"`echo '$''{'ac_cv_prog_adac_no_long_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1612,7 +1319,7 @@ fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1616: checking how to run the C preprocessor" >&5
+echo "configure:1323: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -1627,13 +1334,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 1631 "configure"
+#line 1338 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1637: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1344: \"$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
:
@@ -1644,13 +1351,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 1648 "configure"
+#line 1355 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1654: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1361: \"$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
:
@@ -1661,13 +1368,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 1665 "configure"
+#line 1372 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1671: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1378: \"$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
:
@@ -1692,21 +1399,21 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:1696: checking for inline" >&5
+echo "configure:1403: 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 <<EOF
-#line 1703 "configure"
+#line 1410 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:1710: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1417: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1732,19 +1439,19 @@ EOF
esac
echo $ac_n "checking for volatile""... $ac_c" 1>&6
-echo "configure:1736: checking for volatile" >&5
+echo "configure:1443: 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 <<EOF
-#line 1741 "configure"
+#line 1448 "configure"
#include "confdefs.h"
int main() {
volatile int foo;
; return 0; }
EOF
-if { (eval echo configure:1748: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1455: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_c_volatile=yes
else
@@ -1766,7 +1473,7 @@ fi
echo $ac_n "checking for long double""... $ac_c" 1>&6
-echo "configure:1770: checking for long double" >&5
+echo "configure:1477: 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
@@ -1774,7 +1481,7 @@ else
gcc_cv_c_long_double=yes
else
cat > conftest.$ac_ext <<EOF
-#line 1778 "configure"
+#line 1485 "configure"
#include "confdefs.h"
int main() {
@@ -1784,7 +1491,7 @@ long double foo = 0.0;
switch (0) case 0: case (sizeof(long double) >= sizeof(double)):;
; return 0; }
EOF
-if { (eval echo configure:1788: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1495: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_c_long_double=yes
else
@@ -1806,19 +1513,19 @@ EOF
fi
echo $ac_n "checking for long long int""... $ac_c" 1>&6
-echo "configure:1810: checking for long long int" >&5
+echo "configure:1517: checking for long long int" >&5
if eval "test \"`echo '$''{'ac_cv_c_long_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1815 "configure"
+#line 1522 "configure"
#include "confdefs.h"
int main() {
long long int i;
; return 0; }
EOF
-if { (eval echo configure:1822: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1529: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_long_long=yes
else
@@ -1838,19 +1545,19 @@ EOF
fi
echo $ac_n "checking for __int64""... $ac_c" 1>&6
-echo "configure:1842: checking for __int64" >&5
+echo "configure:1549: checking for __int64" >&5
if eval "test \"`echo '$''{'ac_cv_c___int64'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1847 "configure"
+#line 1554 "configure"
#include "confdefs.h"
int main() {
__int64 i;
; return 0; }
EOF
-if { (eval echo configure:1854: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1561: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c___int64=yes
else
@@ -1871,19 +1578,19 @@ EOF
fi
echo $ac_n "checking for built-in _Bool""... $ac_c" 1>&6
-echo "configure:1875: checking for built-in _Bool" >&5
+echo "configure:1582: 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 <<EOF
-#line 1880 "configure"
+#line 1587 "configure"
#include "confdefs.h"
int main() {
_Bool foo;
; return 0; }
EOF
-if { (eval echo configure:1887: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_c__bool=yes
else
@@ -1907,13 +1614,13 @@ fi
# sizeof(char) is 1 by definition.
echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:1911: checking size of short" >&5
+echo "configure:1618: 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
for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
cat > conftest.$ac_ext <<EOF
-#line 1917 "configure"
+#line 1624 "configure"
#include "confdefs.h"
#include "confdefs.h"
#include <sys/types.h>
@@ -1923,7 +1630,7 @@ int main() {
switch (0) case 0: case (sizeof (short) == $ac_size):;
; return 0; }
EOF
-if { (eval echo configure:1927: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1634: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_sizeof_short=$ac_size
else
@@ -1946,13 +1653,13 @@ EOF
echo $ac_n "checking size of int""... $ac_c" 1>&6
-echo "configure:1950: checking size of int" >&5
+echo "configure:1657: 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
for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
cat > conftest.$ac_ext <<EOF
-#line 1956 "configure"
+#line 1663 "configure"
#include "confdefs.h"
#include "confdefs.h"
#include <sys/types.h>
@@ -1962,7 +1669,7 @@ int main() {
switch (0) case 0: case (sizeof (int) == $ac_size):;
; return 0; }
EOF
-if { (eval echo configure:1966: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1673: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_sizeof_int=$ac_size
else
@@ -1985,13 +1692,13 @@ EOF
echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:1989: checking size of long" >&5
+echo "configure:1696: 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
for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
cat > conftest.$ac_ext <<EOF
-#line 1995 "configure"
+#line 1702 "configure"
#include "confdefs.h"
#include "confdefs.h"
#include <sys/types.h>
@@ -2001,7 +1708,7 @@ int main() {
switch (0) case 0: case (sizeof (long) == $ac_size):;
; return 0; }
EOF
-if { (eval echo configure:2005: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1712: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_sizeof_long=$ac_size
else
@@ -2025,13 +1732,13 @@ EOF
if test $ac_cv_c_long_long = yes; then
echo $ac_n "checking size of long long""... $ac_c" 1>&6
-echo "configure:2029: checking size of long long" >&5
+echo "configure:1736: 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
for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
cat > conftest.$ac_ext <<EOF
-#line 2035 "configure"
+#line 1742 "configure"
#include "confdefs.h"
#include "confdefs.h"
#include <sys/types.h>
@@ -2041,7 +1748,7 @@ int main() {
switch (0) case 0: case (sizeof (long long) == $ac_size):;
; return 0; }
EOF
-if { (eval echo configure:2045: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1752: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_sizeof_long_long=$ac_size
else
@@ -2066,13 +1773,13 @@ EOF
fi
if test $ac_cv_c___int64 = yes; then
echo $ac_n "checking size of __int64""... $ac_c" 1>&6
-echo "configure:2070: checking size of __int64" >&5
+echo "configure:1777: checking size of __int64" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof___int64'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
cat > conftest.$ac_ext <<EOF
-#line 2076 "configure"
+#line 1783 "configure"
#include "confdefs.h"
#include "confdefs.h"
#include <sys/types.h>
@@ -2082,7 +1789,7 @@ int main() {
switch (0) case 0: case (sizeof (__int64) == $ac_size):;
; return 0; }
EOF
-if { (eval echo configure:2086: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1793: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_sizeof___int64=$ac_size
else
@@ -2107,12 +1814,12 @@ EOF
fi
echo $ac_n "checking execution character set""... $ac_c" 1>&6
-echo "configure:2111: checking execution character set" >&5
+echo "configure:1818: checking execution character set" >&5
if eval "test \"`echo '$''{'ac_cv_c_charset'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2116 "configure"
+#line 1823 "configure"
#include "confdefs.h"
#if '\n' == 0x0A && ' ' == 0x20 && '0' == 0x30 \
&& 'A' == 0x41 && 'a' == 0x61 && '!' == 0x21
@@ -2128,7 +1835,7 @@ rm -f conftest*
if test x${ac_cv_c_charset+set} != xset; then
cat > conftest.$ac_ext <<EOF
-#line 2132 "configure"
+#line 1839 "configure"
#include "confdefs.h"
#if '\n' == 0x15 && ' ' == 0x40 && '0' == 0xF0 \
&& 'A' == 0xC1 && 'a' == 0x81 && '!' == 0x5A
@@ -2167,6 +1874,429 @@ if test "x$GCC" = "xyes"; then
fi
+# Determine whether or not multilibs are enabled.
+# Check whether --enable-multilib or --disable-multilib was given.
+if test "${enable_multilib+set}" = set; then
+ enableval="$enable_multilib"
+ :
+else
+ enable_multilib=yes
+fi
+
+
+
+# Enable expensive internal checks
+# Check whether --enable-checking or --disable-checking was given.
+if test "${enable_checking+set}" = set; then
+ enableval="$enable_checking"
+ ac_checking=
+ac_tree_checking=
+ac_rtl_checking=
+ac_rtlflag_checking=
+ac_gc_checking=
+ac_gc_always_collect=
+case "${enableval}" in
+yes) ac_checking=1 ; ac_tree_checking=1 ; ac_gc_checking=1 ;
+ ac_rtlflag_checking=1 ;;
+no) ;;
+*) IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
+ set fnord $enableval; shift
+ IFS="$ac_save_IFS"
+ for check
+ do
+ case $check in
+ misc) ac_checking=1 ;;
+ tree) ac_tree_checking=1 ;;
+ rtlflag) ac_rtlflag_checking=1 ;;
+ rtl) ac_rtl_checking=1 ;;
+ gc) ac_gc_checking=1 ;;
+ gcac) ac_gc_always_collect=1 ;;
+ valgrind) ac_checking_valgrind=1 ;;
+ *) { echo "configure: error: unknown check category $check" 1>&2; exit 1; } ;;
+ esac
+ done
+ ;;
+esac
+
+else
+ # Enable some checks by default for development versions of GCC
+ac_checking=1; ac_tree_checking=1; ac_gc_checking=1; ac_rtlflag_checking=1;
+fi
+
+nocommon_flag=""
+if test x$ac_checking != x ; then
+ cat >> confdefs.h <<\EOF
+#define ENABLE_CHECKING 1
+EOF
+
+ nocommon_flag=-fno-common
+fi
+
+if test x$ac_tree_checking != x ; then
+ cat >> confdefs.h <<\EOF
+#define ENABLE_TREE_CHECKING 1
+EOF
+
+fi
+if test x$ac_rtl_checking != x ; then
+ cat >> confdefs.h <<\EOF
+#define ENABLE_RTL_CHECKING 1
+EOF
+
+fi
+if test x$ac_rtlflag_checking != x ; then
+ cat >> confdefs.h <<\EOF
+#define ENABLE_RTL_FLAG_CHECKING 1
+EOF
+
+fi
+if test x$ac_gc_checking != x ; then
+ cat >> confdefs.h <<\EOF
+#define ENABLE_GC_CHECKING 1
+EOF
+
+fi
+if test x$ac_gc_always_collect != x ; then
+ cat >> confdefs.h <<\EOF
+#define ENABLE_GC_ALWAYS_COLLECT 1
+EOF
+
+fi
+valgrind_path_defines=
+valgrind_command=
+if test x$ac_checking_valgrind != x ; then
+ # It is certainly possible that there's valgrind but no valgrind.h.
+ # GCC relies on making annotations so we must have both.
+ ac_safe=`echo "valgrind.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for valgrind.h""... $ac_c" 1>&6
+echo "configure:1973: checking for valgrind.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
+#line 1978 "configure"
+#include "confdefs.h"
+#include <valgrind.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1983: \"$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*
+ eval "ac_cv_header_$ac_safe=yes"
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ have_valgrind_h=yes
+else
+ echo "$ac_t""no" 1>&6
+have_valgrind_h=no
+fi
+
+ # Extract the first word of "valgrind", so it can be a program name with args.
+set dummy valgrind; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:2008: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_valgrind_path'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ case "$valgrind_path" in
+ /*)
+ ac_cv_path_valgrind_path="$valgrind_path" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if $ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1; then
+ ac_cv_path_valgrind_path="$ac_dir/$ac_word"
+ break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+ ;;
+esac
+fi
+valgrind_path="$ac_cv_path_valgrind_path"
+if test -n "$valgrind_path"; then
+ echo "$ac_t""$valgrind_path" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ if test "x$valgrind_path" = "x" || test $have_valgrind_h = no; then
+ { echo "configure: error: *** Can't find both valgrind and valgrind.h" 1>&2; exit 1; }
+ fi
+ valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
+ valgrind_command="$valgrind_path -q"
+ cat >> confdefs.h <<\EOF
+#define ENABLE_VALGRIND_CHECKING 1
+EOF
+
+fi
+
+
+
+# Enable code coverage collection
+# Check whether --enable-coverage or --disable-coverage was given.
+if test "${enable_coverage+set}" = set; then
+ enableval="$enable_coverage"
+ case "${enableval}" in
+yes|noopt)
+ coverage_flags="-fprofile-arcs -ftest-coverage -O0"
+ ;;
+opt)
+ coverage_flags="-fprofile-arcs -ftest-coverage -O2"
+ ;;
+*)
+ { echo "configure: error: unknown coverage setting $enableval" 1>&2; exit 1; }
+ ;;
+esac
+else
+ coverage_flags=""
+fi
+
+
+
+# Check whether --with-cpp_install_dir or --without-cpp_install_dir was given.
+if test "${with_cpp_install_dir+set}" = set; then
+ withval="$with_cpp_install_dir"
+ if test x$withval = xyes; then
+ { echo "configure: error: option --with-cpp-install-dir requires an argument" 1>&2; exit 1; }
+elif test x$withval != xno; then
+ cpp_install_dir=$withval
+fi
+fi
+
+
+# Enable __cxa_atexit for C++.
+# Check whether --enable-__cxa_atexit or --disable-__cxa_atexit was given.
+if test "${enable___cxa_atexit+set}" = set; then
+ enableval="$enable___cxa_atexit"
+ :
+fi
+
+if test x$enable___cxa_atexit = xyes; then
+ cat >> confdefs.h <<\EOF
+#define DEFAULT_USE_CXA_ATEXIT 1
+EOF
+
+fi
+
+# Enable Multibyte Characters for C/C++
+# Check whether --enable-c-mbchar or --disable-c-mbchar was given.
+if test "${enable_c_mbchar+set}" = set; then
+ enableval="$enable_c_mbchar"
+ if test x$enable_c_mbchar != xno; then
+ cat >> confdefs.h <<\EOF
+#define MULTIBYTE_CHARS 1
+EOF
+
+fi
+fi
+
+
+# Enable threads
+# Pass with no value to take the default
+# Pass with a value to specify a thread package
+# Check whether --enable-threads or --disable-threads was given.
+if test "${enable_threads+set}" = set; then
+ enableval="$enable_threads"
+ :
+else
+ enable_threads=''
+fi
+
+
+enable_threads_flag=$enable_threads
+# Check if a valid thread package
+case x${enable_threads_flag} in
+ x | xno)
+ # No threads
+ target_thread_file='single'
+ ;;
+ xyes)
+ # default
+ target_thread_file=''
+ ;;
+ xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
+ xsolaris | xwin32 | xdce | xrtems| xvxworks | xaix)
+ target_thread_file=$enable_threads_flag
+ ;;
+ *)
+ echo "$enable_threads is an unknown thread package" 1>&2
+ exit 1
+ ;;
+esac
+
+# Check whether --enable-objc-gc or --disable-objc-gc was given.
+if test "${enable_objc_gc+set}" = set; then
+ enableval="$enable_objc_gc"
+ if test x$enable_objc_gc = xno; then
+ objc_boehm_gc=''
+else
+ objc_boehm_gc=1
+fi
+else
+ objc_boehm_gc=''
+fi
+
+
+# Check whether --with-dwarf2 or --without-dwarf2 was given.
+if test "${with_dwarf2+set}" = set; then
+ withval="$with_dwarf2"
+ dwarf2="$with_dwarf2"
+else
+ dwarf2=no
+fi
+
+
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+ enableval="$enable_shared"
+
+ case $enable_shared in
+ yes | no) ;;
+ *)
+ enable_shared=no
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+ for pkg in $enableval; do
+ if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$ac_save_ifs"
+ ;;
+ esac
+
+else
+ enable_shared=yes
+fi
+
+
+
+# Determine the host, build, and target systems
+
+# Do some error checking and defaulting for the host and target type.
+# The inputs are:
+# configure --host=HOST --target=TARGET --build=BUILD NONOPT
+#
+# The rules are:
+# 1. You are not allowed to specify --host, --target, and nonopt at the
+# same time.
+# 2. Host defaults to nonopt.
+# 3. If nonopt is not specified, then host defaults to the current host,
+# as determined by config.guess.
+# 4. Target and build default to nonopt.
+# 5. If nonopt is not specified, then target and build default to host.
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+case $host---$target---$nonopt in
+NONE---*---* | *---NONE---* | *---*---NONE) ;;
+*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;;
+esac
+
+
+# Make sure we can run config.sub.
+if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
+else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
+fi
+
+echo $ac_n "checking host system type""... $ac_c" 1>&6
+echo "configure:2218: checking host system type" >&5
+
+host_alias=$host
+case "$host_alias" in
+NONE)
+ case $nonopt in
+ NONE)
+ if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
+ else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
+ fi ;;
+ *) host_alias=$nonopt ;;
+ esac ;;
+esac
+
+host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$host" 1>&6
+
+echo $ac_n "checking target system type""... $ac_c" 1>&6
+echo "configure:2239: checking target system type" >&5
+
+target_alias=$target
+case "$target_alias" in
+NONE)
+ case $nonopt in
+ NONE) target_alias=$host_alias ;;
+ *) target_alias=$nonopt ;;
+ esac ;;
+esac
+
+target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias`
+target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$target" 1>&6
+
+echo $ac_n "checking build system type""... $ac_c" 1>&6
+echo "configure:2257: checking build system type" >&5
+
+build_alias=$build
+case "$build_alias" in
+NONE)
+ case $nonopt in
+ NONE) build_alias=$host_alias ;;
+ *) build_alias=$nonopt ;;
+ esac ;;
+esac
+
+build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias`
+build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$build" 1>&6
+
+test "$host_alias" != "$target_alias" &&
+ test "$program_prefix$program_suffix$program_transform_name" = \
+ NONENONEs,x,x, &&
+ program_prefix=${target_alias}-
+
+
+# Set program_transform_name
+if test "$program_transform_name" = s,x,x,; then
+ program_transform_name=
+else
+ # Double any \ or $. echo might interpret backslashes.
+ cat <<\EOF_SED > conftestsed
+s,\\,\\\\,g; s,\$,$$,g
+EOF_SED
+ program_transform_name="`echo $program_transform_name|sed -f conftestsed`"
+ rm -f conftestsed
+fi
+test "$program_prefix" != NONE &&
+ program_transform_name="s,^,${program_prefix},; $program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s,\$\$,${program_suffix},; $program_transform_name"
+
+# sed with no file args requires a program.
+test "$program_transform_name" = "" && program_transform_name="s,x,x,"
+
+
# Stage specific cflags for build.
stage1_cflags=
case $build in
@@ -2189,7 +2319,7 @@ esac
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:2193: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:2323: 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
@@ -2217,7 +2347,7 @@ fi
echo $ac_n "checking whether a default assembler was specified""... $ac_c" 1>&6
-echo "configure:2221: checking whether a default assembler was specified" >&5
+echo "configure:2351: 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
@@ -2229,7 +2359,7 @@ else
fi
echo $ac_n "checking whether a default linker was specified""... $ac_c" 1>&6
-echo "configure:2233: checking whether a default linker was specified" >&5
+echo "configure:2363: 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
@@ -2241,12 +2371,12 @@ else
fi
echo $ac_n "checking for GNU C library""... $ac_c" 1>&6
-echo "configure:2245: checking for GNU C library" >&5
+echo "configure:2375: 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 <<EOF
-#line 2250 "configure"
+#line 2380 "configure"
#include "confdefs.h"
#include <features.h>
int main() {
@@ -2256,7 +2386,7 @@ int main() {
#endif
; return 0; }
EOF
-if { (eval echo configure:2260: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2390: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_glibc=yes
else
@@ -2277,12 +2407,12 @@ EOF
fi
# Find some useful tools
-for ac_prog in gawk mawk nawk awk
+for ac_prog in mawk gawk nawk awk
do
# 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:2286: checking for $ac_word" >&5
+echo "configure:2416: 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
@@ -2312,7 +2442,7 @@ test -n "$AWK" && break
done
echo $ac_n "checking whether ln works""... $ac_c" 1>&6
-echo "configure:2316: checking whether ln works" >&5
+echo "configure:2446: 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
@@ -2344,7 +2474,7 @@ else
fi
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:2348: checking whether ln -s works" >&5
+echo "configure:2478: 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
@@ -2378,7 +2508,7 @@ fi
# 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:2382: checking for $ac_word" >&5
+echo "configure:2512: 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
@@ -2416,7 +2546,7 @@ fi
# 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:2420: checking for a BSD compatible install" >&5
+echo "configure:2550: 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
@@ -2467,12 +2597,12 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:2471: checking for ANSI C header files" >&5
+echo "configure:2601: 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 <<EOF
-#line 2476 "configure"
+#line 2606 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -2480,7 +2610,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2484: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2614: \"$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*
@@ -2497,7 +2627,7 @@ rm -f conftest*
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
-#line 2501 "configure"
+#line 2631 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -2515,7 +2645,7 @@ fi
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
-#line 2519 "configure"
+#line 2649 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -2536,7 +2666,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 2540 "configure"
+#line 2670 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -2547,7 +2677,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:2551: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -2571,12 +2701,12 @@ EOF
fi
echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:2575: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:2705: 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 <<EOF
-#line 2580 "configure"
+#line 2710 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
@@ -2585,7 +2715,7 @@ int main() {
struct tm *tp;
; return 0; }
EOF
-if { (eval echo configure:2589: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2719: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_time=yes
else
@@ -2606,19 +2736,19 @@ EOF
fi
echo $ac_n "checking for working stdbool.h""... $ac_c" 1>&6
-echo "configure:2610: checking for working stdbool.h" >&5
+echo "configure:2740: 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 <<EOF
-#line 2615 "configure"
+#line 2745 "configure"
#include "confdefs.h"
#include <stdbool.h>
int main() {
bool foo = false;
; return 0; }
EOF
-if { (eval echo configure:2622: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2752: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_stdbool_h=yes
else
@@ -2639,12 +2769,12 @@ EOF
fi
echo $ac_n "checking whether string.h and strings.h may both be included""... $ac_c" 1>&6
-echo "configure:2643: checking whether string.h and strings.h may both be included" >&5
+echo "configure:2773: 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 <<EOF
-#line 2648 "configure"
+#line 2778 "configure"
#include "confdefs.h"
#include <string.h>
#include <strings.h>
@@ -2652,7 +2782,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:2656: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2786: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_header_string=yes
else
@@ -2673,12 +2803,12 @@ EOF
fi
echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:2677: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:2807: 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 <<EOF
-#line 2682 "configure"
+#line 2812 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/wait.h>
@@ -2694,7 +2824,7 @@ wait (&s);
s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
; return 0; }
EOF
-if { (eval echo configure:2698: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2828: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_sys_wait_h=yes
else
@@ -2721,17 +2851,17 @@ for ac_hdr in limits.h stddef.h string.h strings.h stdlib.h time.h \
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2725: checking for $ac_hdr" >&5
+echo "configure:2855: 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
-#line 2730 "configure"
+#line 2860 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2735: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2865: \"$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*
@@ -2761,17 +2891,17 @@ done
# 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:2765: checking for thread.h" >&5
+echo "configure:2895: 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
-#line 2770 "configure"
+#line 2900 "configure"
#include "confdefs.h"
#include <thread.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2775: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2905: \"$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*
@@ -2795,17 +2925,17 @@ fi
ac_safe=`echo "pthread.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for pthread.h""... $ac_c" 1>&6
-echo "configure:2799: checking for pthread.h" >&5
+echo "configure:2929: 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
-#line 2804 "configure"
+#line 2934 "configure"
#include "confdefs.h"
#include <pthread.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2809: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2939: \"$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*
@@ -2830,12 +2960,12 @@ fi
# These tests can't be done till we know if we have limits.h.
echo $ac_n "checking for CHAR_BIT""... $ac_c" 1>&6
-echo "configure:2834: checking for CHAR_BIT" >&5
+echo "configure:2964: checking for CHAR_BIT" >&5
if eval "test \"`echo '$''{'gcc_cv_decl_char_bit'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2839 "configure"
+#line 2969 "configure"
#include "confdefs.h"
#ifdef HAVE_LIMITS_H
#include <limits.h>
@@ -2860,7 +2990,7 @@ fi
echo "$ac_t""$gcc_cv_decl_char_bit" 1>&6
if test $gcc_cv_decl_char_bit = no; then
echo $ac_n "checking number of bits in a byte""... $ac_c" 1>&6
-echo "configure:2864: checking number of bits in a byte" >&5
+echo "configure:2994: checking number of bits in a byte" >&5
if eval "test \"`echo '$''{'gcc_cv_c_nbby'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2868,7 +2998,7 @@ else
gcc_cv_c_nbby=
while test $i -lt 65; do
cat > conftest.$ac_ext <<EOF
-#line 2872 "configure"
+#line 3002 "configure"
#include "confdefs.h"
int main() {
@@ -2878,7 +3008,7 @@ switch(0) {
; }
; return 0; }
EOF
-if { (eval echo configure:2882: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3012: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_c_nbby=$i; break
else
@@ -2903,7 +3033,7 @@ EOF
fi
fi
echo $ac_n "checking byte ordering""... $ac_c" 1>&6
-echo "configure:2907: checking byte ordering" >&5
+echo "configure:3037: checking byte ordering" >&5
if eval "test \"`echo '$''{'ac_cv_c_compile_endian'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2917,7 +3047,7 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a
cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext <<EOF
-#line 2921 "configure"
+#line 3051 "configure"
#include "confdefs.h"
#ifdef HAVE_LIMITS_H
@@ -2937,7 +3067,7 @@ cat > conftest.$ac_ext <<EOF
'X', '\n'
};
EOF
-if { (eval echo configure:2941: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3071: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
od -c conftest.o |
sed 's/^[0-7]*[ ]*/ /
s/\*/./g
@@ -2976,7 +3106,7 @@ EOF
fi
echo $ac_n "checking floating point format""... $ac_c" 1>&6
-echo "configure:2980: checking floating point format" >&5
+echo "configure:3110: checking floating point format" >&5
if eval "test \"`echo '$''{'ac_cv_c_float_format'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2989,7 +3119,7 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a
cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext <<EOF
-#line 2993 "configure"
+#line 3123 "configure"
#include "confdefs.h"
/* This will not work unless sizeof(double) == 8. */
extern char sizeof_double_must_be_8 [sizeof(double) == 8 ? 1 : -1];
@@ -3011,7 +3141,7 @@ struct possibility table [] =
C(-5.22995989424860458374e+10) /* IBMHEXFP - s/390 format, EBCDIC */
};
EOF
-if { (eval echo configure:3015: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3145: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
od -c conftest.o |
sed 's/^[0-7]*[ ]*/ /
s/\*/./g
@@ -3100,7 +3230,7 @@ fi
# 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:3104: checking for $ac_word" >&5
+echo "configure:3234: 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
@@ -3139,7 +3269,7 @@ else
# 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:3143: checking for $ac_word" >&5
+echo "configure:3273: 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
@@ -3168,13 +3298,13 @@ fi
if test -n "$MAKEINFO"; then
# Found it, now check the version.
echo $ac_n "checking for modern makeinfo""... $ac_c" 1>&6
-echo "configure:3172: checking for modern makeinfo" >&5
+echo "configure:3302: 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:3178: version of makeinfo is $ac_prog_version" >&5
+ echo "configure:3308: version of makeinfo is $ac_prog_version" >&5
case $ac_prog_version in
'') gcc_cv_prog_makeinfo_modern=no;;
4.[1-9]*)
@@ -3202,7 +3332,7 @@ fi
# Is pod2man recent enough to regenerate manpages?
echo $ac_n "checking for recent Pod::Man""... $ac_c" 1>&6
-echo "configure:3206: checking for recent Pod::Man" >&5
+echo "configure:3336: 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
@@ -3218,7 +3348,7 @@ else
# 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:3222: checking for $ac_word" >&5
+echo "configure:3352: 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
@@ -3255,7 +3385,7 @@ else
# 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:3259: checking for $ac_word" >&5
+echo "configure:3389: 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
@@ -3287,7 +3417,7 @@ fi
# These libraries may be used by collect2.
# We may need a special search path to get them linked.
echo $ac_n "checking for collect2 libraries""... $ac_c" 1>&6
-echo "configure:3291: checking for collect2 libraries" >&5
+echo "configure:3421: checking for collect2 libraries" >&5
if eval "test \"`echo '$''{'gcc_cv_collect2_libs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3298,7 +3428,7 @@ for libs in '' -lld -lmld \
do
LIBS="$libs"
cat > conftest.$ac_ext <<EOF
-#line 3302 "configure"
+#line 3432 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3309,7 +3439,7 @@ int main() {
ldopen()
; return 0; }
EOF
-if { (eval echo configure:3313: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gcc_cv_collect2_libs="$libs"; break
else
@@ -3335,14 +3465,14 @@ save_LIBS="$LIBS"
LIBS=
echo $ac_n "checking for library containing exc_resume""... $ac_c" 1>&6
-echo "configure:3339: checking for library containing exc_resume" >&5
+echo "configure:3469: checking for library containing exc_resume" >&5
if eval "test \"`echo '$''{'ac_cv_search_exc_resume'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_exc_resume="no"
cat > conftest.$ac_ext <<EOF
-#line 3346 "configure"
+#line 3476 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3353,7 +3483,7 @@ int main() {
exc_resume()
; return 0; }
EOF
-if { (eval echo configure:3357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_exc_resume="none required"
else
@@ -3364,7 +3494,7 @@ rm -f conftest*
test "$ac_cv_search_exc_resume" = "no" && for i in exc; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3368 "configure"
+#line 3498 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3375,7 +3505,7 @@ int main() {
exc_resume()
; return 0; }
EOF
-if { (eval echo configure:3379: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3509: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_exc_resume="-l$i"
break
@@ -3404,12 +3534,12 @@ LIBS="$save_LIBS"
echo $ac_n "checking for preprocessor stringizing operator""... $ac_c" 1>&6
-echo "configure:3408: checking for preprocessor stringizing operator" >&5
+echo "configure:3538: 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 <<EOF
-#line 3413 "configure"
+#line 3543 "configure"
#include "confdefs.h"
#define x(y) #y
@@ -3442,12 +3572,12 @@ echo "$ac_t""${ac_cv_c_stringize}" 1>&6
# Use <inttypes.h> only if it exists,
# doesn't clash with <sys/types.h>, and declares intmax_t.
echo $ac_n "checking for inttypes.h""... $ac_c" 1>&6
-echo "configure:3446: checking for inttypes.h" >&5
+echo "configure:3576: 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 <<EOF
-#line 3451 "configure"
+#line 3581 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <inttypes.h>
@@ -3455,7 +3585,7 @@ int main() {
intmax_t i = -1;
; return 0; }
EOF
-if { (eval echo configure:3459: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3589: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_header_inttypes_h=yes
else
@@ -3482,12 +3612,12 @@ for ac_func in times clock dup2 kill getrlimit setrlimit atoll atoq \
scandir alphasort
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3486: checking for $ac_func" >&5
+echo "configure:3616: 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 <<EOF
-#line 3491 "configure"
+#line 3621 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3510,7 +3640,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3644: \"$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
@@ -3536,12 +3666,12 @@ done
echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:3540: checking for ssize_t" >&5
+echo "configure:3670: 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 <<EOF
-#line 3545 "configure"
+#line 3675 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -3572,12 +3702,12 @@ fi
# 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:3576: checking for uid_t in sys/types.h" >&5
+echo "configure:3706: 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
-#line 3581 "configure"
+#line 3711 "configure"
#include "confdefs.h"
#include <sys/types.h>
EOF
@@ -3606,7 +3736,7 @@ EOF
fi
echo $ac_n "checking type of array argument to getgroups""... $ac_c" 1>&6
-echo "configure:3610: checking type of array argument to getgroups" >&5
+echo "configure:3740: 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
@@ -3614,7 +3744,7 @@ else
ac_cv_type_getgroups=cross
else
cat > conftest.$ac_ext <<EOF
-#line 3618 "configure"
+#line 3748 "configure"
#include "confdefs.h"
/* Thanks to Mike Rendell for this test. */
@@ -3639,7 +3769,7 @@ main()
}
EOF
-if { (eval echo configure:3643: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3773: \"$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
@@ -3653,7 +3783,7 @@ fi
if test $ac_cv_type_getgroups = cross; then
cat > conftest.$ac_ext <<EOF
-#line 3657 "configure"
+#line 3787 "configure"
#include "confdefs.h"
#include <unistd.h>
EOF
@@ -3694,7 +3824,7 @@ fi
echo $ac_n "checking whether the printf functions support %p""... $ac_c" 1>&6
-echo "configure:3698: checking whether the printf functions support %p" >&5
+echo "configure:3828: 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
@@ -3702,7 +3832,7 @@ else
gcc_cv_func_printf_ptr=no
else
cat > conftest.$ac_ext <<EOF
-#line 3706 "configure"
+#line 3836 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -3715,7 +3845,7 @@ int main()
return (p != q);
}
EOF
-if { (eval echo configure:3719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3849: \"$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
@@ -3753,12 +3883,12 @@ case "${host}" in
;;
esac
echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:3757: checking for pid_t" >&5
+echo "configure:3887: 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 <<EOF
-#line 3762 "configure"
+#line 3892 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -3787,17 +3917,17 @@ fi
ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for vfork.h""... $ac_c" 1>&6
-echo "configure:3791: checking for vfork.h" >&5
+echo "configure:3921: 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
-#line 3796 "configure"
+#line 3926 "configure"
#include "confdefs.h"
#include <vfork.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3801: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3931: \"$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*
@@ -3822,18 +3952,18 @@ else
fi
echo $ac_n "checking for working vfork""... $ac_c" 1>&6
-echo "configure:3826: checking for working vfork" >&5
+echo "configure:3956: 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:3832: checking for vfork" >&5
+echo "configure:3962: 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 <<EOF
-#line 3837 "configure"
+#line 3967 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char vfork(); below. */
@@ -3856,7 +3986,7 @@ vfork();
; return 0; }
EOF
-if { (eval echo configure:3860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3990: \"$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
@@ -3878,7 +4008,7 @@ fi
ac_cv_func_vfork_works=$ac_cv_func_vfork
else
cat > conftest.$ac_ext <<EOF
-#line 3882 "configure"
+#line 4012 "configure"
#include "confdefs.h"
/* Thanks to Paul Eggert for this test. */
#include <stdio.h>
@@ -3973,7 +4103,7 @@ main() {
}
}
EOF
-if { (eval echo configure:3977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4107: \"$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
@@ -3998,12 +4128,12 @@ fi
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4002: checking for $ac_func" >&5
+echo "configure:4132: 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 <<EOF
-#line 4007 "configure"
+#line 4137 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4026,7 +4156,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4030: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4160: \"$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
@@ -4297,27 +4427,26 @@ main ()
EOF
echo $ac_n "checking for working mmap from /dev/zero""... $ac_c" 1>&6
-echo "configure:4301: checking for working mmap from /dev/zero" >&5
+echo "configure:4431: 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
if test "$cross_compiling" = yes; then
- # If this is not cygwin, and /dev/zero is a character device, it's probably
- # safe to assume it works.
+ # When cross-building, assume that this works, unless we know it
+ # doesn't. Of course, we have no way of knowing if there even is a /dev/zero
+ # on the host, let alone whether mmap will work on it.
case "$host_os" in
cygwin* | win32 | pe | mingw* ) ac_cv_func_mmap_dev_zero=buggy ;;
- * ) if test -c /dev/zero
- then ac_cv_func_mmap_dev_zero=yes
- else ac_cv_func_mmap_dev_zero=no
- fi ;;
+ darwin* ) ac_cv_func_mmap_dev_zero=no ;;
+ * ) ac_cv_func_mmap_dev_zero=yes ;;
esac
else
cat > conftest.$ac_ext <<EOF
-#line 4317 "configure"
+#line 4446 "configure"
#include "confdefs.h"
#include "ct-mmap.inc"
EOF
-if { (eval echo configure:4321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4450: \"$ac_link\") 1>&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
@@ -4344,22 +4473,25 @@ EOF
fi
echo $ac_n "checking for working mmap with MAP_ANON(YMOUS)""... $ac_c" 1>&6
-echo "configure:4348: checking for working mmap with MAP_ANON(YMOUS)" >&5
+echo "configure:4477: 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
if test "$cross_compiling" = yes; then
# Unlike /dev/zero, it is not safe to assume MAP_ANON(YMOUS) works
# just because it's there. Some SCO Un*xen define it but don't implement it.
- ac_cv_func_mmap_anon=no
+ case "$host_os" in
+ darwin* ) ac_cv_func_mmap_anon=yes ;;
+ * ) ac_cv_func_mmap_anon=no ;;
+ esac
else
cat > conftest.$ac_ext <<EOF
-#line 4358 "configure"
+#line 4490 "configure"
#include "confdefs.h"
#define USE_MAP_ANON
#include "ct-mmap.inc"
EOF
-if { (eval echo configure:4363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_anon=yes
else
@@ -4387,7 +4519,7 @@ fi
rm -f ct-mmap.inc
echo $ac_n "checking for working mmap of a file""... $ac_c" 1>&6
-echo "configure:4391: checking for working mmap of a file" >&5
+echo "configure:4523: 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
@@ -4399,10 +4531,13 @@ done
done > conftestdata$$
if test "$cross_compiling" = yes; then
- ac_cv_func_mmap_file=no
+ case "$host_os" in
+ darwin* ) ac_cv_func_mmap_file=yes ;;
+ * ) ac_cv_func_mmap_file=no ;;
+ esac
else
cat > conftest.$ac_ext <<EOF
-#line 4406 "configure"
+#line 4541 "configure"
#include "confdefs.h"
/* Test by Zack Weinberg. Modified from MMAP_ANYWHERE test by
@@ -4439,7 +4574,7 @@ int main()
exit(0);
}
EOF
-if { (eval echo configure:4443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4578: \"$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
@@ -4478,7 +4613,7 @@ fi
echo $ac_n "checking for iconv""... $ac_c" 1>&6
-echo "configure:4482: checking for iconv" >&5
+echo "configure:4617: checking for iconv" >&5
if eval "test \"`echo '$''{'am_cv_func_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4486,7 +4621,7 @@ else
am_cv_func_iconv="no, consider installing GNU libiconv"
am_cv_lib_iconv=no
cat > conftest.$ac_ext <<EOF
-#line 4490 "configure"
+#line 4625 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@@ -4496,7 +4631,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:4500: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4635: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_func_iconv=yes
else
@@ -4508,7 +4643,7 @@ rm -f conftest*
am_save_LIBS="$LIBS"
LIBS="$LIBS $am_cv_libiconv_ldpath -liconv"
cat > conftest.$ac_ext <<EOF
-#line 4512 "configure"
+#line 4647 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@@ -4518,7 +4653,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:4522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4657: \"$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
@@ -4539,13 +4674,13 @@ echo "$ac_t""$am_cv_func_iconv" 1>&6
EOF
echo $ac_n "checking for iconv declaration""... $ac_c" 1>&6
-echo "configure:4543: checking for iconv declaration" >&5
+echo "configure:4678: 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 <<EOF
-#line 4549 "configure"
+#line 4684 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -4564,7 +4699,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:4568: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4703: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
am_cv_proto_iconv_arg1=""
else
@@ -4602,12 +4737,12 @@ for ac_func in getenv atol sbrk abort atof getcwd getwd \
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:4606: checking whether $ac_func is declared" >&5
+echo "configure:4741: 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 <<EOF
-#line 4611 "configure"
+#line 4746 "configure"
#include "confdefs.h"
#undef $ac_tr_decl
#define $ac_tr_decl 1
@@ -4621,7 +4756,7 @@ char *(*pfn) = (char *(*)) $ac_func ;
#endif
; return 0; }
EOF
-if { (eval echo configure:4625: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4760: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "gcc_cv_have_decl_$ac_func=yes"
else
@@ -4723,12 +4858,12 @@ for ac_func in getrlimit setrlimit getrusage
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:4727: checking whether $ac_func is declared" >&5
+echo "configure:4862: 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 <<EOF
-#line 4732 "configure"
+#line 4867 "configure"
#include "confdefs.h"
#undef $ac_tr_decl
#define $ac_tr_decl 1
@@ -4746,7 +4881,7 @@ char *(*pfn) = (char *(*)) $ac_func ;
#endif
; return 0; }
EOF
-if { (eval echo configure:4750: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4885: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "gcc_cv_have_decl_$ac_func=yes"
else
@@ -4788,12 +4923,12 @@ for ac_func in times
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:4792: checking whether $ac_func is declared" >&5
+echo "configure:4927: 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 <<EOF
-#line 4797 "configure"
+#line 4932 "configure"
#include "confdefs.h"
#undef $ac_tr_decl
#define $ac_tr_decl 1
@@ -4811,7 +4946,7 @@ char *(*pfn) = (char *(*)) $ac_func ;
#endif
; return 0; }
EOF
-if { (eval echo configure:4815: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4950: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "gcc_cv_have_decl_$ac_func=yes"
else
@@ -4845,13 +4980,13 @@ fi
# More time-related stuff.
echo $ac_n "checking for struct tms""... $ac_c" 1>&6
-echo "configure:4849: checking for struct tms" >&5
+echo "configure:4984: checking for struct tms" >&5
if eval "test \"`echo '$''{'ac_cv_struct_tms'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4855 "configure"
+#line 4990 "configure"
#include "confdefs.h"
#include "ansidecl.h"
@@ -4864,7 +4999,7 @@ int main() {
struct tms tms;
; return 0; }
EOF
-if { (eval echo configure:4868: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5003: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_tms=yes
else
@@ -4887,13 +5022,13 @@ fi
# use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
# revisit after autoconf 2.50.
echo $ac_n "checking for clock_t""... $ac_c" 1>&6
-echo "configure:4891: checking for clock_t" >&5
+echo "configure:5026: checking for clock_t" >&5
if eval "test \"`echo '$''{'gcc_cv_type_clock_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4897 "configure"
+#line 5032 "configure"
#include "confdefs.h"
#include "ansidecl.h"
@@ -4903,7 +5038,7 @@ int main() {
clock_t x;
; return 0; }
EOF
-if { (eval echo configure:4907: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5042: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_type_clock_t=yes
else
@@ -4929,7 +5064,7 @@ if test "${enable_initfini_array+set}" = set; then
gcc_cv_initfinit_array=$enableval
else
echo $ac_n "checking for .preinit_array/.init_array/.fini_array support""... $ac_c" 1>&6
-echo "configure:4933: checking for .preinit_array/.init_array/.fini_array support" >&5
+echo "configure:5068: checking for .preinit_array/.init_array/.fini_array support" >&5
if eval "test \"`echo '$''{'gcc_cv_initfinit_array'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4939,7 +5074,7 @@ int main (void) { return x; }
int foo (void) { x = 0; }
int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
EOF
- if { ac_try='${CC-cc} -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD'; { (eval echo configure:4943: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
+ if { ac_try='${CC-cc} -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD'; { (eval echo configure:5078: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
then
if ./conftest; then
gcc_cv_initfinit_array=yes
@@ -4968,12 +5103,12 @@ CFLAGS="$saved_CFLAGS"
# mkdir takes a single argument on some systems.
echo $ac_n "checking if mkdir takes one argument""... $ac_c" 1>&6
-echo "configure:4972: checking if mkdir takes one argument" >&5
+echo "configure:5107: 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 <<EOF
-#line 4977 "configure"
+#line 5112 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -4990,7 +5125,7 @@ int main() {
mkdir ("foo", 0);
; return 0; }
EOF
-if { (eval echo configure:4994: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5129: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_mkdir_takes_one_arg=no
else
@@ -5258,14 +5393,14 @@ fi
echo $ac_n "checking for library containing strerror""... $ac_c" 1>&6
-echo "configure:5262: checking for library containing strerror" >&5
+echo "configure:5397: checking for library containing strerror" >&5
if eval "test \"`echo '$''{'ac_cv_search_strerror'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_strerror="no"
cat > conftest.$ac_ext <<EOF
-#line 5269 "configure"
+#line 5404 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5276,7 +5411,7 @@ int main() {
strerror()
; return 0; }
EOF
-if { (eval echo configure:5280: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_strerror="none required"
else
@@ -5287,7 +5422,7 @@ rm -f conftest*
test "$ac_cv_search_strerror" = "no" && for i in cposix; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5291 "configure"
+#line 5426 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5298,7 +5433,7 @@ int main() {
strerror()
; return 0; }
EOF
-if { (eval echo configure:5302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5437: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_strerror="-l$i"
break
@@ -5321,12 +5456,12 @@ fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:5325: checking for working const" >&5
+echo "configure:5460: 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 <<EOF
-#line 5330 "configure"
+#line 5465 "configure"
#include "confdefs.h"
int main() {
@@ -5375,7 +5510,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:5379: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5514: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -5396,12 +5531,12 @@ EOF
fi
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:5400: checking for off_t" >&5
+echo "configure:5535: 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 <<EOF
-#line 5405 "configure"
+#line 5540 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -5429,12 +5564,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:5433: checking for size_t" >&5
+echo "configure:5568: 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 <<EOF
-#line 5438 "configure"
+#line 5573 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -5464,19 +5599,19 @@ fi
# 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:5468: checking for working alloca.h" >&5
+echo "configure:5603: 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 <<EOF
-#line 5473 "configure"
+#line 5608 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:5480: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5615: \"$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
@@ -5497,12 +5632,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:5501: checking for alloca" >&5
+echo "configure:5636: 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 <<EOF
-#line 5506 "configure"
+#line 5641 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -5530,7 +5665,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:5534: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5669: \"$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
@@ -5562,12 +5697,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:5566: checking whether alloca needs Cray hooks" >&5
+echo "configure:5701: 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 <<EOF
-#line 5571 "configure"
+#line 5706 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -5592,12 +5727,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
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:5596: checking for $ac_func" >&5
+echo "configure:5731: 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 <<EOF
-#line 5601 "configure"
+#line 5736 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5620,7 +5755,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5759: \"$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
@@ -5647,7 +5782,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:5651: checking stack direction for C alloca" >&5
+echo "configure:5786: 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
@@ -5655,7 +5790,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 5659 "configure"
+#line 5794 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -5674,7 +5809,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:5678: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5813: \"$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
@@ -5697,12 +5832,12 @@ fi
echo $ac_n "checking whether we are using the GNU C Library 2.1 or newer""... $ac_c" 1>&6
-echo "configure:5701: checking whether we are using the GNU C Library 2.1 or newer" >&5
+echo "configure:5836: checking whether we are using the GNU C Library 2.1 or newer" >&5
if eval "test \"`echo '$''{'ac_cv_gnu_library_2_1'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5706 "configure"
+#line 5841 "configure"
#include "confdefs.h"
#include <features.h>
@@ -5738,17 +5873,17 @@ stdlib.h string.h unistd.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5742: checking for $ac_hdr" >&5
+echo "configure:5877: 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
-#line 5747 "configure"
+#line 5882 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5752: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5887: \"$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*
@@ -5779,12 +5914,12 @@ getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \
strdup strtoul tsearch __argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5783: checking for $ac_func" >&5
+echo "configure:5918: 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 <<EOF
-#line 5788 "configure"
+#line 5923 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5807,7 +5942,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5811: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5946: \"$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
@@ -5848,7 +5983,7 @@ fi
echo $ac_n "checking for iconv""... $ac_c" 1>&6
-echo "configure:5852: checking for iconv" >&5
+echo "configure:5987: checking for iconv" >&5
if eval "test \"`echo '$''{'am_cv_func_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5856,7 +5991,7 @@ else
am_cv_func_iconv="no, consider installing GNU libiconv"
am_cv_lib_iconv=no
cat > conftest.$ac_ext <<EOF
-#line 5860 "configure"
+#line 5995 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@@ -5866,7 +6001,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:5870: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6005: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_func_iconv=yes
else
@@ -5878,7 +6013,7 @@ rm -f conftest*
am_save_LIBS="$LIBS"
LIBS="$LIBS $am_cv_libiconv_ldpath -liconv"
cat > conftest.$ac_ext <<EOF
-#line 5882 "configure"
+#line 6017 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@@ -5888,7 +6023,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:5892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6027: \"$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
@@ -5909,13 +6044,13 @@ echo "$ac_t""$am_cv_func_iconv" 1>&6
EOF
echo $ac_n "checking for iconv declaration""... $ac_c" 1>&6
-echo "configure:5913: checking for iconv declaration" >&5
+echo "configure:6048: 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 <<EOF
-#line 5919 "configure"
+#line 6054 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -5934,7 +6069,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:5938: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6073: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
am_cv_proto_iconv_arg1=""
else
@@ -5963,19 +6098,19 @@ EOF
echo $ac_n "checking for nl_langinfo and CODESET""... $ac_c" 1>&6
-echo "configure:5967: checking for nl_langinfo and CODESET" >&5
+echo "configure:6102: checking for nl_langinfo and CODESET" >&5
if eval "test \"`echo '$''{'am_cv_langinfo_codeset'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5972 "configure"
+#line 6107 "configure"
#include "confdefs.h"
#include <langinfo.h>
int main() {
char* cs = nl_langinfo(CODESET);
; return 0; }
EOF
-if { (eval echo configure:5979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6114: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_langinfo_codeset=yes
else
@@ -5998,19 +6133,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:6002: checking for LC_MESSAGES" >&5
+echo "configure:6137: 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 <<EOF
-#line 6007 "configure"
+#line 6142 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:6014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6149: \"$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
@@ -6031,7 +6166,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:6035: checking whether NLS is requested" >&5
+echo "configure:6170: 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"
@@ -6054,7 +6189,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:6058: checking whether included gettext is requested" >&5
+echo "configure:6193: 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"
@@ -6074,17 +6209,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:6078: checking for libintl.h" >&5
+echo "configure:6213: 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
-#line 6083 "configure"
+#line 6218 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6088: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6223: \"$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*
@@ -6105,12 +6240,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
EOF
echo $ac_n "checking for GNU gettext in libc""... $ac_c" 1>&6
-echo "configure:6109: checking for GNU gettext in libc" >&5
+echo "configure:6244: checking for GNU gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gnugettext1_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6114 "configure"
+#line 6249 "configure"
#include "confdefs.h"
#include <libintl.h>
extern int _nl_msg_cat_cntr;
@@ -6119,7 +6254,7 @@ bindtextdomain ("", "");
return (int) gettext ("") + _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:6123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6258: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gnugettext1_libc=yes
else
@@ -6135,14 +6270,14 @@ echo "$ac_t""$gt_cv_func_gnugettext1_libc" 1>&6
if test "$gt_cv_func_gnugettext1_libc" != "yes"; then
echo $ac_n "checking for GNU gettext in libintl""... $ac_c" 1>&6
-echo "configure:6139: checking for GNU gettext in libintl" >&5
+echo "configure:6274: checking for GNU gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gnugettext1_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
gt_save_LIBS="$LIBS"
LIBS="$LIBS -lintl $LIBICONV"
cat > conftest.$ac_ext <<EOF
-#line 6146 "configure"
+#line 6281 "configure"
#include "confdefs.h"
#include <libintl.h>
extern int _nl_msg_cat_cntr;
@@ -6151,7 +6286,7 @@ bindtextdomain ("", "");
return (int) gettext ("") + _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:6155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6290: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gnugettext1_libintl=yes
else
@@ -6184,12 +6319,12 @@ EOF
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6188: checking for $ac_func" >&5
+echo "configure:6323: 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 <<EOF
-#line 6193 "configure"
+#line 6328 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6212,7 +6347,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6351: \"$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
@@ -6241,7 +6376,7 @@ done
# 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:6245: checking for $ac_word" >&5
+echo "configure:6380: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6275,7 +6410,7 @@ fi
# 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:6279: checking for $ac_word" >&5
+echo "configure:6414: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6312,7 +6447,7 @@ fi
# 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:6316: checking for $ac_word" >&5
+echo "configure:6451: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6362,7 +6497,7 @@ fi
# 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:6366: checking for $ac_word" >&5
+echo "configure:6501: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6396,7 +6531,7 @@ fi
# 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:6400: checking for $ac_word" >&5
+echo "configure:6535: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6432,7 +6567,7 @@ fi
# 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:6436: checking for $ac_word" >&5
+echo "configure:6571: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6504,7 +6639,7 @@ do
# 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:6508: checking for $ac_word" >&5
+echo "configure:6643: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_INTLBISON'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6537,7 +6672,7 @@ done
ac_verc_fail=yes
else
echo $ac_n "checking version of bison""... $ac_c" 1>&6
-echo "configure:6541: checking version of bison" >&5
+echo "configure:6676: checking version of bison" >&5
ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
@@ -6582,7 +6717,7 @@ EOF
if test "x$CATOBJEXT" != x; then
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:6586: checking for catalogs to be installed" >&5
+echo "configure:6721: checking for catalogs to be installed" >&5
# Look for .po and .gmo files in the source directory.
CATALOGS=
XLINGUAS=
@@ -6640,7 +6775,7 @@ fi
case $host_os in
win32 | pe | cygwin* | mingw32* | uwin*)
echo $ac_n "checking whether windows registry support is requested""... $ac_c" 1>&6
-echo "configure:6644: checking whether windows registry support is requested" >&5
+echo "configure:6779: 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
@@ -6649,14 +6784,14 @@ EOF
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for library containing RegOpenKeyExA""... $ac_c" 1>&6
-echo "configure:6653: checking for library containing RegOpenKeyExA" >&5
+echo "configure:6788: checking for library containing RegOpenKeyExA" >&5
if eval "test \"`echo '$''{'ac_cv_search_RegOpenKeyExA'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_RegOpenKeyExA="no"
cat > conftest.$ac_ext <<EOF
-#line 6660 "configure"
+#line 6795 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -6667,7 +6802,7 @@ int main() {
RegOpenKeyExA()
; return 0; }
EOF
-if { (eval echo configure:6671: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6806: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_RegOpenKeyExA="none required"
else
@@ -6678,7 +6813,7 @@ rm -f conftest*
test "$ac_cv_search_RegOpenKeyExA" = "no" && for i in advapi32; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 6682 "configure"
+#line 6817 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -6689,7 +6824,7 @@ int main() {
RegOpenKeyExA()
; return 0; }
EOF
-if { (eval echo configure:6693: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6828: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_RegOpenKeyExA="-l$i"
break
@@ -6731,7 +6866,7 @@ esac
if test "x$enable_win32_registry" != xno; then
echo $ac_n "checking registry key on windows hosts""... $ac_c" 1>&6
-echo "configure:6735: checking registry key on windows hosts" >&5
+echo "configure:6870: checking registry key on windows hosts" >&5
cat >> confdefs.h <<EOF
#define WIN32_REGISTRY_KEY "$gcc_cv_win32_registry_key"
EOF
@@ -6945,7 +7080,7 @@ fi
# Figure out what assembler we will be using.
echo $ac_n "checking what assembler to use""... $ac_c" 1>&6
-echo "configure:6949: checking what assembler to use" >&5
+echo "configure:7084: checking what assembler to use" >&5
gcc_cv_as=
gcc_cv_gas_major_version=
gcc_cv_gas_minor_version=
@@ -7039,7 +7174,7 @@ fi
# Figure out what linker we will be using.
echo $ac_n "checking what linker to use""... $ac_c" 1>&6
-echo "configure:7043: checking what linker to use" >&5
+echo "configure:7178: checking what linker to use" >&5
gcc_cv_ld=
gcc_cv_gld_major_version=
gcc_cv_gld_minor_version=
@@ -7132,7 +7267,7 @@ fi
# Figure out what nm we will be using.
echo $ac_n "checking what nm to use""... $ac_c" 1>&6
-echo "configure:7136: checking what nm to use" >&5
+echo "configure:7271: checking what nm to use" >&5
if test -x nm$host_exeext; then
gcc_cv_nm=./nm$host_exeext
elif test "x$program_prefix" != xNONE; then
@@ -7144,7 +7279,7 @@ echo "$ac_t""$gcc_cv_nm" 1>&6
# Figure out what objdump we will be using.
echo $ac_n "checking what objdump to use""... $ac_c" 1>&6
-echo "configure:7148: checking what objdump to use" >&5
+echo "configure:7283: checking what objdump to use" >&5
if test -x objdump$host_exeext; then
gcc_cv_objdump=./objdump$host_exeext
elif test "x$program_prefix" != xNONE; then
@@ -7156,7 +7291,7 @@ echo "$ac_t""$gcc_cv_objdump" 1>&6
# Figure out what assembler alignment features are present.
echo $ac_n "checking assembler alignment features""... $ac_c" 1>&6
-echo "configure:7160: checking assembler alignment features" >&5
+echo "configure:7295: 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.
@@ -7204,7 +7339,7 @@ fi
echo "$ac_t""$gcc_cv_as_alignment_features" 1>&6
echo $ac_n "checking assembler subsection support""... $ac_c" 1>&6
-echo "configure:7208: checking assembler subsection support" >&5
+echo "configure:7343: 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
@@ -7244,7 +7379,7 @@ fi
echo "$ac_t""$gcc_cv_as_subsections" 1>&6
echo $ac_n "checking assembler weak support""... $ac_c" 1>&6
-echo "configure:7248: checking assembler weak support" >&5
+echo "configure:7383: 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
@@ -7267,7 +7402,7 @@ fi
echo "$ac_t""$gcc_cv_as_weak" 1>&6
echo $ac_n "checking assembler hidden support""... $ac_c" 1>&6
-echo "configure:7271: checking assembler hidden support" >&5
+echo "configure:7406: 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 \
@@ -7339,7 +7474,7 @@ esac
echo $ac_n "checking assembler leb128 support""... $ac_c" 1>&6
-echo "configure:7343: checking assembler leb128 support" >&5
+echo "configure:7478: 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
@@ -7384,7 +7519,7 @@ fi
echo "$ac_t""$gcc_cv_as_leb128" 1>&6
echo $ac_n "checking assembler eh_frame optimization""... $ac_c" 1>&6
-echo "configure:7388: checking assembler eh_frame optimization" >&5
+echo "configure:7523: 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
@@ -7465,7 +7600,7 @@ fi
echo "$ac_t""$gcc_cv_as_eh_frame" 1>&6
echo $ac_n "checking assembler section merging support""... $ac_c" 1>&6
-echo "configure:7469: checking assembler section merging support" >&5
+echo "configure:7604: checking assembler section merging support" >&5
gcc_cv_as_shf_merge=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
@@ -7488,7 +7623,7 @@ fi
echo "$ac_t""$gcc_cv_as_shf_merge" 1>&6
echo $ac_n "checking assembler thread-local storage support""... $ac_c" 1>&6
-echo "configure:7492: checking assembler thread-local storage support" >&5
+echo "configure:7627: checking assembler thread-local storage support" >&5
gcc_cv_as_tls=no
conftest_s=
tls_first_major=
@@ -7596,7 +7731,7 @@ case "$target" in
# All TARGET_ABI_OSF targets.
alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
echo $ac_n "checking assembler supports explicit relocations""... $ac_c" 1>&6
-echo "configure:7600: checking assembler supports explicit relocations" >&5
+echo "configure:7735: checking assembler supports explicit relocations" >&5
if eval "test \"`echo '$''{'gcc_cv_as_explicit_relocs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7646,7 +7781,7 @@ EOF
;;
sparc*-*-*)
echo $ac_n "checking assembler .register pseudo-op support""... $ac_c" 1>&6
-echo "configure:7650: checking assembler .register pseudo-op support" >&5
+echo "configure:7785: 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
@@ -7674,7 +7809,7 @@ EOF
fi
echo $ac_n "checking assembler supports -relax""... $ac_c" 1>&6
-echo "configure:7678: checking assembler supports -relax" >&5
+echo "configure:7813: 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
@@ -7702,7 +7837,7 @@ EOF
fi
echo $ac_n "checking assembler and linker support unaligned pc related relocs""... $ac_c" 1>&6
-echo "configure:7706: checking assembler and linker support unaligned pc related relocs" >&5
+echo "configure:7841: checking assembler and linker support unaligned pc related relocs" >&5
if eval "test \"`echo '$''{'gcc_cv_as_sparc_ua_pcrel'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7729,7 +7864,7 @@ EOF
fi
echo $ac_n "checking assembler and linker support unaligned pc related relocs against hidden symbols""... $ac_c" 1>&6
-echo "configure:7733: checking assembler and linker support unaligned pc related relocs against hidden symbols" >&5
+echo "configure:7868: checking assembler and linker support unaligned pc related relocs against hidden symbols" >&5
if eval "test \"`echo '$''{'gcc_cv_as_sparc_ua_pcrel_hidden'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7769,7 +7904,7 @@ EOF
fi
echo $ac_n "checking for assembler offsetable %lo() support""... $ac_c" 1>&6
-echo "configure:7773: checking for assembler offsetable %lo() support" >&5
+echo "configure:7908: 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
@@ -7808,7 +7943,7 @@ EOF
i[34567]86-*-* | x86_64-*-*)
echo $ac_n "checking assembler instructions""... $ac_c" 1>&6
-echo "configure:7812: checking assembler instructions" >&5
+echo "configure:7947: 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
@@ -7835,7 +7970,7 @@ EOF
echo "$ac_t""$gcc_cv_as_instructions" 1>&6
echo $ac_n "checking assembler GOTOFF in data directives""... $ac_c" 1>&6
-echo "configure:7839: checking assembler GOTOFF in data directives" >&5
+echo "configure:7974: checking assembler GOTOFF in data directives" >&5
gcc_cv_as_gotoff_in_data=no
if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x
then
@@ -7865,7 +8000,7 @@ EOF
esac
echo $ac_n "checking assembler dwarf2 debug_line support""... $ac_c" 1>&6
-echo "configure:7869: checking assembler dwarf2 debug_line support" >&5
+echo "configure:8004: 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
@@ -7874,7 +8009,8 @@ gcc_cv_as_dwarf2_debug_line=no
# ??? 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*-*-* | x86_64*-*-* | hppa*-*-*)
+ i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \
+ | x86_64*-*-* | hppa*-*-* | arm*-*-* | strongarm*-*-* | xscale*-*-*)
insn="nop"
;;
ia64*-*-*)
@@ -7921,7 +8057,7 @@ fi
echo "$ac_t""$gcc_cv_as_dwarf2_debug_line" 1>&6
echo $ac_n "checking assembler --gdwarf2 support""... $ac_c" 1>&6
-echo "configure:7925: checking assembler --gdwarf2 support" >&5
+echo "configure:8061: checking assembler --gdwarf2 support" >&5
gcc_cv_as_gdwarf2_flag=no
if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
then
@@ -7950,7 +8086,7 @@ fi
echo "$ac_t""$gcc_cv_as_gdwarf2_flag" 1>&6
echo $ac_n "checking assembler --gstabs support""... $ac_c" 1>&6
-echo "configure:7954: checking assembler --gstabs support" >&5
+echo "configure:8090: checking assembler --gstabs support" >&5
gcc_cv_as_gstabs_flag=no
if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
then
@@ -7978,7 +8114,7 @@ fi
echo "$ac_t""$gcc_cv_as_gstabs_flag" 1>&6
echo $ac_n "checking linker PT_GNU_EH_FRAME support""... $ac_c" 1>&6
-echo "configure:7982: checking linker PT_GNU_EH_FRAME support" >&5
+echo "configure:8118: checking linker PT_GNU_EH_FRAME support" >&5
gcc_cv_ld_eh_frame_hdr=no
if test x$gcc_cv_gld_major_version != x -a x$gcc_cv_gld_minor_version != x; then
if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 12 -o "$gcc_cv_gld_major_version" -gt 2 && grep 'EMUL = elf' ../ld/Makefile > /dev/null; then
@@ -8002,7 +8138,7 @@ echo "$ac_t""$gcc_cv_ld_eh_frame_hdr" 1>&6
case "$target" in
mips*-*-*)
echo $ac_n "checking whether libgloss uses STARTUP directives consistently""... $ac_c" 1>&6
-echo "configure:8006: checking whether libgloss uses STARTUP directives consistently" >&5
+echo "configure:8142: checking whether libgloss uses STARTUP directives consistently" >&5
gcc_cv_mips_libgloss_startup=no
gcc_cv_libgloss_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/libgloss
if test "x$exec_prefix" = xNONE; then
@@ -8206,7 +8342,7 @@ fi
echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
-echo "configure:8210: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:8346: 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"
@@ -8715,33 +8851,36 @@ s%@includedir@%$includedir%g
s%@oldincludedir@%$oldincludedir%g
s%@infodir@%$infodir%g
s%@mandir@%$mandir%g
-s%@enable_multilib@%$enable_multilib%g
-s%@nocommon_flag@%$nocommon_flag%g
-s%@coverage_flags@%$coverage_flags%g
-s%@enable_shared@%$enable_shared%g
+s%@CC@%$CC%g
+s%@NO_MINUS_C_MINUS_O@%$NO_MINUS_C_MINUS_O%g
+s%@OUTPUT_OPTION@%$OUTPUT_OPTION%g
s%@host@%$host%g
s%@host_alias@%$host_alias%g
s%@host_cpu@%$host_cpu%g
s%@host_vendor@%$host_vendor%g
s%@host_os@%$host_os%g
-s%@target@%$target%g
-s%@target_alias@%$target_alias%g
-s%@target_cpu@%$target_cpu%g
-s%@target_vendor@%$target_vendor%g
-s%@target_os@%$target_os%g
s%@build@%$build%g
s%@build_alias@%$build_alias%g
s%@build_cpu@%$build_cpu%g
s%@build_vendor@%$build_vendor%g
s%@build_os@%$build_os%g
-s%@CC@%$CC%g
-s%@NO_MINUS_C_MINUS_O@%$NO_MINUS_C_MINUS_O%g
-s%@OUTPUT_OPTION@%$OUTPUT_OPTION%g
s%@GNATBIND@%$GNATBIND%g
s%@ADAC@%$ADAC%g
s%@strict1_warn@%$strict1_warn%g
s%@CPP@%$CPP%g
s%@warn_cflags@%$warn_cflags%g
+s%@enable_multilib@%$enable_multilib%g
+s%@nocommon_flag@%$nocommon_flag%g
+s%@valgrind_path@%$valgrind_path%g
+s%@valgrind_path_defines@%$valgrind_path_defines%g
+s%@valgrind_command@%$valgrind_command%g
+s%@coverage_flags@%$coverage_flags%g
+s%@enable_shared@%$enable_shared%g
+s%@target@%$target%g
+s%@target_alias@%$target_alias%g
+s%@target_cpu@%$target_cpu%g
+s%@target_vendor@%$target_vendor%g
+s%@target_os@%$target_os%g
s%@stage1_cflags@%$stage1_cflags%g
s%@SET_MAKE@%$SET_MAKE%g
s%@AWK@%$AWK%g
diff --git a/gcc/configure.in b/gcc/configure.in
index 773b2208b73..efc99240706 100644
--- a/gcc/configure.in
+++ b/gcc/configure.in
@@ -176,6 +176,82 @@ changequote([, ])dnl
fi
fi
+# Find the native compiler
+AC_PROG_CC
+AC_PROG_CC_C_O
+# autoconf is lame and doesn't give us any substitution variable for this.
+if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
+ NO_MINUS_C_MINUS_O=yes
+else
+ OUTPUT_OPTION='-o $@'
+fi
+AC_SUBST(NO_MINUS_C_MINUS_O)
+AC_SUBST(OUTPUT_OPTION)
+
+# See if GNAT has been installed
+gcc_AC_PROG_GNAT
+
+AC_CACHE_CHECK(whether ${CC-cc} accepts -Wno-long-long,
+ac_cv_prog_cc_no_long_long,
+[save_CFLAGS="$CFLAGS"
+CFLAGS="-Wno-long-long"
+AC_TRY_COMPILE(,,ac_cv_prog_cc_no_long_long=yes,
+ ac_cv_prog_cc_no_long_long=no)
+CFLAGS="$save_CFLAGS"])
+
+if test x$have_gnat != xno ; then
+AC_CACHE_CHECK(whether ${ADAC} accepts -Wno-long-long,
+ac_cv_prog_adac_no_long_long,
+[cat >conftest.adb <<EOF
+procedure conftest is begin null; end conftest;
+EOF
+if $ADAC -Wno-long-long -c conftest.adb 1>&5 2>&5 ; then
+ ac_cv_prog_adac_no_long_long=yes
+else
+ ac_cv_prog_adac_no_long_long=no
+fi
+rm -f conftest*])
+else
+ ac_cv_prog_adac_no_long_long=yes
+fi
+
+strict1_warn=
+if test $ac_cv_prog_cc_no_long_long = yes && \
+ test $ac_cv_prog_adac_no_long_long = yes ; then
+ strict1_warn="-pedantic -Wno-long-long"
+fi
+AC_SUBST(strict1_warn)
+
+AC_PROG_CPP
+AC_C_INLINE
+gcc_AC_C_VOLATILE
+
+gcc_AC_C_LONG_DOUBLE
+gcc_AC_C_LONG_LONG
+gcc_AC_C__BOOL
+
+# sizeof(char) is 1 by definition.
+gcc_AC_COMPILE_CHECK_SIZEOF(short)
+gcc_AC_COMPILE_CHECK_SIZEOF(int)
+gcc_AC_COMPILE_CHECK_SIZEOF(long)
+if test $ac_cv_c_long_long = yes; then
+ gcc_AC_COMPILE_CHECK_SIZEOF(long long)
+fi
+if test $ac_cv_c___int64 = yes; then
+ gcc_AC_COMPILE_CHECK_SIZEOF(__int64)
+fi
+
+gcc_AC_C_CHARSET
+
+# If the native compiler is GCC, we can enable warnings even in stage1.
+# That's useful for people building cross-compilers, or just running a
+# quick `make'.
+warn_cflags=
+if test "x$GCC" = "xyes"; then
+ warn_cflags='$(GCC_WARN_CFLAGS)'
+fi
+AC_SUBST(warn_cflags)
+
# Determine whether or not multilibs are enabled.
AC_ARG_ENABLE(multilib,
[ --enable-multilib enable library support for multiple ABIs],
@@ -211,6 +287,7 @@ no) ;;
rtl) ac_rtl_checking=1 ;;
gc) ac_gc_checking=1 ;;
gcac) ac_gc_always_collect=1 ;;
+ valgrind) ac_checking_valgrind=1 ;;
*) AC_MSG_ERROR(unknown check category $check) ;;
esac
done
@@ -256,6 +333,25 @@ if test x$ac_gc_always_collect != x ; then
paranoid mode, validating the entire heap and collecting garbage at
every opportunity. This is extremely expensive.])
fi
+valgrind_path_defines=
+valgrind_command=
+if test x$ac_checking_valgrind != x ; then
+ # It is certainly possible that there's valgrind but no valgrind.h.
+ # GCC relies on making annotations so we must have both.
+ AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
+ AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
+ [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
+ if test "x$valgrind_path" = "x" || test $have_valgrind_h = no; then
+ AC_MSG_ERROR([*** Can't find both valgrind and valgrind.h])
+ fi
+ valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
+ valgrind_command="$valgrind_path -q"
+ AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
+[Define if you want to run subprograms and generated programs
+ through valgrind (a memory checker). This is extremely expensive.])
+fi
+AC_SUBST(valgrind_path_defines)
+AC_SUBST(valgrind_command)
# Enable code coverage collection
AC_ARG_ENABLE(coverage,
@@ -379,82 +475,6 @@ AC_CANONICAL_SYSTEM
# Set program_transform_name
AC_ARG_PROGRAM
-# Find the native compiler
-AC_PROG_CC
-AC_PROG_CC_C_O
-# autoconf is lame and doesn't give us any substitution variable for this.
-if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
- NO_MINUS_C_MINUS_O=yes
-else
- OUTPUT_OPTION='-o $@'
-fi
-AC_SUBST(NO_MINUS_C_MINUS_O)
-AC_SUBST(OUTPUT_OPTION)
-
-# See if GNAT has been installed
-gcc_AC_PROG_GNAT
-
-AC_CACHE_CHECK(whether ${CC-cc} accepts -Wno-long-long,
-ac_cv_prog_cc_no_long_long,
-[save_CFLAGS="$CFLAGS"
-CFLAGS="-Wno-long-long"
-AC_TRY_COMPILE(,,ac_cv_prog_cc_no_long_long=yes,
- ac_cv_prog_cc_no_long_long=no)
-CFLAGS="$save_CFLAGS"])
-
-if test x$have_gnat != xno ; then
-AC_CACHE_CHECK(whether ${ADAC} accepts -Wno-long-long,
-ac_cv_prog_adac_no_long_long,
-[cat >conftest.adb <<EOF
-procedure conftest is begin null; end conftest;
-EOF
-if $ADAC -Wno-long-long -c conftest.adb 1>&5 2>&5 ; then
- ac_cv_prog_adac_no_long_long=yes
-else
- ac_cv_prog_adac_no_long_long=no
-fi
-rm -f conftest*])
-else
- ac_cv_prog_adac_no_long_long=yes
-fi
-
-strict1_warn=
-if test $ac_cv_prog_cc_no_long_long = yes && \
- test $ac_cv_prog_adac_no_long_long = yes ; then
- strict1_warn="-pedantic -Wno-long-long"
-fi
-AC_SUBST(strict1_warn)
-
-AC_PROG_CPP
-AC_C_INLINE
-gcc_AC_C_VOLATILE
-
-gcc_AC_C_LONG_DOUBLE
-gcc_AC_C_LONG_LONG
-gcc_AC_C__BOOL
-
-# sizeof(char) is 1 by definition.
-gcc_AC_COMPILE_CHECK_SIZEOF(short)
-gcc_AC_COMPILE_CHECK_SIZEOF(int)
-gcc_AC_COMPILE_CHECK_SIZEOF(long)
-if test $ac_cv_c_long_long = yes; then
- gcc_AC_COMPILE_CHECK_SIZEOF(long long)
-fi
-if test $ac_cv_c___int64 = yes; then
- gcc_AC_COMPILE_CHECK_SIZEOF(__int64)
-fi
-
-gcc_AC_C_CHARSET
-
-# If the native compiler is GCC, we can enable warnings even in stage1.
-# That's useful for people building cross-compilers, or just running a
-# quick `make'.
-warn_cflags=
-if test "x$GCC" = "xyes"; then
- warn_cflags='$(GCC_WARN_CFLAGS)'
-fi
-AC_SUBST(warn_cflags)
-
# Stage specific cflags for build.
stage1_cflags=
case $build in
@@ -2092,7 +2112,8 @@ gcc_cv_as_dwarf2_debug_line=no
# ??? 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*-*-* | x86_64*-*-* | hppa*-*-*)
+ i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \
+ | x86_64*-*-* | hppa*-*-* | arm*-*-* | strongarm*-*-* | xscale*-*-*)
insn="nop"
;;
ia64*-*-*)
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 232aded2388..6e5c542ef6d 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -26,6 +26,58 @@
* lang-specs.h: Handle compiling C++ header files.
*** End of unmerged pch-branch ChangeLog ***
+2002-11-22 Mark Mitchell <mark@codesourcery.com>
+
+ * rtti.c (qualifier_flags): Fix thinko.
+
+2002-11-21 Glen Nakamura <glen@imodulo.com>
+
+ PR c++/8342
+ * typeck.c (get_member_function_from_ptrfunc): Make sure that a
+ SAVE_EXPR for instance_ptr doesn't get evaluated first inside one
+ of the branches of a COND_EXPR.
+
+2002-11-19 Mark Mitchell <mark@codesourcery.com>
+
+ * pt.c (for_each_template_parm): Free allocated memory.
+ * search.c (is_subobject_of_p_1): New function.
+ (is_subobject_of_p): Avoid walking virtual bases multiple times.
+
+2002-11-19 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * g++spec.c (lang_specific_spec_functions): New.
+
+2002-11-15 Kazu Hirata <kazu@cs.umass.edu>
+
+ * ChangeLog: Follow spelling conventions.
+ * class.c: Likewise.
+ * decl2.c: Likewise.
+
+2002-11-14 Zack Weinberg <zack@codesourcery.com>
+
+ * search.c (dfs_push_decls): Do not try to reorder elements
+ 3..n of method_vec if method_vec has only two elements.
+ Reverse order of two tests to avoid accessing unallocated
+ memory.
+
+2002-11-14 Mark Mitchell <mark@codesourcery.com>
+
+ * class.c (dfs_find_final_overrider): Adjust so that the most
+ derived object is a binfo, rather than a class type.
+ (find_final_overrider): Likewise.
+ (add_vcall_offset_vtbl_entries_1): Simplify accordingly.
+ (add_vcall_offset): Likewise.
+
+2002-11-09 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/8389
+ * pt.c (instantiate_template): Push class scope for member
+ functions.
+ (get_mostly_instantiated_function_type): Likewise. Don't call
+ tsubst on context. Remove CONTEXTP and TPARMSP parameters.
+ * cp-tree.h (get_mostly_instantiated_function_type): Adjust.
+ * mangle.c (write_encoding, write_unqualified_name): Adjust.
+
2002-11-07 Mark Mitchell <mark@codesourcery.com>
* class.c (add_vcall_offset_vtbl_entries_1): Correct ordering of
@@ -240,7 +292,7 @@
(layout_nonempty_base_or_field): Do not check for conflicts when
laying out a virtual base using the GCC 3.2 ABI.
(build_base_field): Correct checking for presence of empty classes
- at non-zero offsets when clearing CLASSTYPE_NEARLY_EMPTY_P.
+ at nonzero offsets when clearing CLASSTYPE_NEARLY_EMPTY_P.
* class.c (include_empty_classes): Use normalize_rli.
(layout_class_type): Likewise.
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index 2ca45a67f84..a36b981e6e8 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -2220,9 +2220,11 @@ dfs_find_final_overrider (binfo, data)
method = NULL_TREE;
/* We've found a path to the declaring base. Walk down the path
looking for an overrider for FN. */
- for (path = reverse_path (binfo);
- path;
- path = TREE_CHAIN (path))
+ path = reverse_path (binfo);
+ while (!same_type_p (BINFO_TYPE (TREE_VALUE (path)),
+ ffod->most_derived_type))
+ path = TREE_CHAIN (path);
+ while (path)
{
method = look_for_overrides_here (BINFO_TYPE (TREE_VALUE (path)),
ffod->fn);
@@ -2231,6 +2233,8 @@ dfs_find_final_overrider (binfo, data)
path = TREE_VALUE (path);
break;
}
+
+ path = TREE_CHAIN (path);
}
/* If we found an overrider, record the overriding function, and
@@ -2264,12 +2268,12 @@ dfs_find_final_overrider (binfo, data)
/* Returns a TREE_LIST whose TREE_PURPOSE is the final overrider for
FN and whose TREE_VALUE is the binfo for the base where the
- overriding occurs. BINFO (in the hierarchy dominated by T) is the
- base object in which FN is declared. */
+ overriding occurs. BINFO (in the hierarchy dominated by the binfo
+ DERIVED) is the base object in which FN is declared. */
static tree
-find_final_overrider (t, binfo, fn)
- tree t;
+find_final_overrider (derived, binfo, fn)
+ tree derived;
tree binfo;
tree fn;
{
@@ -2295,10 +2299,10 @@ find_final_overrider (t, binfo, fn)
different overriders along any two, then there is a problem. */
ffod.fn = fn;
ffod.declaring_base = binfo;
- ffod.most_derived_type = t;
+ ffod.most_derived_type = BINFO_TYPE (derived);
ffod.candidates = NULL_TREE;
- dfs_walk (TYPE_BINFO (t),
+ dfs_walk (derived,
dfs_find_final_overrider,
NULL,
&ffod);
@@ -2306,7 +2310,8 @@ find_final_overrider (t, binfo, fn)
/* If there was no winner, issue an error message. */
if (!ffod.candidates || TREE_CHAIN (ffod.candidates))
{
- error ("no unique final overrider for `%D' in `%T'", fn, t);
+ error ("no unique final overrider for `%D' in `%T'", fn,
+ BINFO_TYPE (derived));
return error_mark_node;
}
@@ -2365,7 +2370,7 @@ update_vtable_entry_for_fn (t, binfo, fn, virtuals)
first_defn = b;
/* Find the final overrider. */
- overrider = find_final_overrider (t, b, fn);
+ overrider = find_final_overrider (TYPE_BINFO (t), b, fn);
if (overrider == error_mark_node)
return;
@@ -3668,7 +3673,7 @@ layout_nonempty_base_or_field (record_layout_info rli,
/* Now that we know where it will be placed, update its
BINFO_OFFSET. */
if (binfo && CLASS_TYPE_P (BINFO_TYPE (binfo)))
- /* Indirect virtual bases may have a non-zero BINFO_OFFSET at
+ /* Indirect virtual bases may have a nonzero BINFO_OFFSET at
this point because their BINFO_OFFSET is copied from another
hierarchy. Therefore, we may not need to add the entire
OFFSET. */
@@ -3679,7 +3684,7 @@ layout_nonempty_base_or_field (record_layout_info rli,
t);
}
-/* Returns true if TYPE is empty and OFFSET is non-zero. */
+/* Returns true if TYPE is empty and OFFSET is nonzero. */
static int
empty_base_at_nonzero_offset_p (tree type,
@@ -3812,7 +3817,7 @@ build_base_field (record_layout_info rli, tree binfo,
CLASSTYPE_NEARLY_EMPTY_P (t) = 0;
/* The check above (used in G++ 3.2) is insufficient because
an empty class placed at offset zero might itself have an
- empty base at a non-zero offset. */
+ empty base at a nonzero offset. */
else if (walk_subobject_offsets (basetype,
empty_base_at_nonzero_offset_p,
size_zero_node,
@@ -7909,14 +7914,6 @@ add_vcall_offset_vtbl_entries_1 (binfo, vid)
tree binfo;
vtbl_init_data* vid;
{
- tree binfo_in_rtti;
-
- if (vid->ctor_vtbl_p)
- binfo_in_rtti = (get_original_base
- (binfo, TYPE_BINFO (BINFO_TYPE (vid->rtti_binfo))));
- else
- binfo_in_rtti = binfo;
-
/* Make entries for the rest of the virtuals. */
if (abi_version_at_least (2))
{
@@ -7928,7 +7925,7 @@ add_vcall_offset_vtbl_entries_1 (binfo, vid)
orig_fn;
orig_fn = TREE_CHAIN (orig_fn))
if (DECL_VINDEX (orig_fn))
- add_vcall_offset (orig_fn, binfo_in_rtti, vid);
+ add_vcall_offset (orig_fn, binfo, vid);
}
else
{
@@ -7993,18 +7990,15 @@ add_vcall_offset_vtbl_entries_1 (binfo, vid)
if (!same_type_p (DECL_CONTEXT (orig_fn), BINFO_TYPE (binfo)))
continue;
- add_vcall_offset (orig_fn, binfo_in_rtti, vid);
+ add_vcall_offset (orig_fn, binfo, vid);
}
}
}
-/* Add a vcall offset entry for ORIG_FN to the vtable. In a
- construction vtable, BINFO_IN_RTTI is the base corresponding to the
- vtable base in VID->RTTI_BINFO. */
+/* Add a vcall offset entry for ORIG_FN to the vtable. */
static void
-add_vcall_offset (tree orig_fn, tree binfo_in_rtti,
- vtbl_init_data *vid)
+add_vcall_offset (tree orig_fn, tree binfo, vtbl_init_data *vid)
{
size_t i;
tree vcall_offset;
@@ -8045,35 +8039,23 @@ add_vcall_offset (tree orig_fn, tree binfo_in_rtti,
if (vid->generate_vcall_entries)
{
tree base;
- tree base_binfo;
tree fn;
/* Find the overriding function. */
- fn = find_final_overrider (BINFO_TYPE (vid->rtti_binfo),
- binfo_in_rtti, orig_fn);
+ fn = find_final_overrider (vid->rtti_binfo, binfo, orig_fn);
if (fn == error_mark_node)
vcall_offset = build1 (NOP_EXPR, vtable_entry_type,
integer_zero_node);
else
{
- fn = TREE_PURPOSE (fn);
- /* The FN comes from BASE. So, we must calculate the
- adjustment from vid->vbase to BASE. We can just look for
- BASE in the complete object because we are converting
- from a virtual base, so if there were multiple copies,
- there would not be a unique final overrider and
- vid->derived would be ill-formed. */
- base = DECL_CONTEXT (fn);
- base_binfo = lookup_base (vid->derived, base, ba_any, NULL);
-
- /* Compute the vcall offset. */
- /* As mentioned above, the vbase we're working on is a
- primary base of vid->binfo. But it might be a lost
- primary, so its BINFO_OFFSET might be wrong, so we just
- use the BINFO_OFFSET from vid->binfo. */
- vcall_offset = BINFO_OFFSET (vid->binfo);
- vcall_offset = size_diffop (BINFO_OFFSET (base_binfo),
- vcall_offset);
+ base = TREE_VALUE (fn);
+
+ /* The vbase we're working on is a primary base of
+ vid->binfo. But it might be a lost primary, so its
+ BINFO_OFFSET might be wrong, so we just use the
+ BINFO_OFFSET from vid->binfo. */
+ vcall_offset = size_diffop (BINFO_OFFSET (base),
+ BINFO_OFFSET (vid->binfo));
vcall_offset = fold (build1 (NOP_EXPR, vtable_entry_type,
vcall_offset));
}
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 6dbefe78f7e..060a3b4afde 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -4013,7 +4013,7 @@ extern void print_candidates PARAMS ((tree));
extern int instantiate_pending_templates PARAMS ((void));
extern tree tsubst_default_argument PARAMS ((tree, tree, tree));
extern tree most_general_template PARAMS ((tree));
-extern tree get_mostly_instantiated_function_type PARAMS ((tree, tree *, tree *));
+extern tree get_mostly_instantiated_function_type PARAMS ((tree));
extern int problematic_instantiation_changed PARAMS ((void));
extern void record_last_problematic_instantiation PARAMS ((void));
extern tree current_instantiation PARAMS ((void));
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 429c9e4e03c..a28cb9caac8 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -1801,7 +1801,7 @@ output_vtable_inherit (vars)
}
/* If necessary, write out the vtables for the dynamic class CTYPE.
- Returns non-zero if any vtables were emitted. */
+ Returns nonzero if any vtables were emitted. */
static int
maybe_emit_vtables (tree ctype)
diff --git a/gcc/cp/g++spec.c b/gcc/cp/g++spec.c
index 47ed6952f56..b163f5a2fe3 100644
--- a/gcc/cp/g++spec.c
+++ b/gcc/cp/g++spec.c
@@ -337,3 +337,9 @@ int lang_specific_pre_link () /* Not used for C++. */
/* Number of extra output files that lang_specific_pre_link may generate. */
int lang_specific_extra_outfiles = 0; /* Not used for C++. */
+
+/* Table of language-specific spec functions. */
+const struct spec_function lang_specific_spec_functions[] =
+{
+ { 0, 0 }
+};
diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c
index bc7e970cdd9..523db85ab38 100644
--- a/gcc/cp/mangle.c
+++ b/gcc/cp/mangle.c
@@ -656,7 +656,7 @@ write_encoding (decl)
tree fn_type;
if (decl_is_template_id (decl, NULL))
- fn_type = get_mostly_instantiated_function_type (decl, NULL, NULL);
+ fn_type = get_mostly_instantiated_function_type (decl);
else
fn_type = TREE_TYPE (decl);
@@ -1011,8 +1011,7 @@ write_unqualified_name (decl)
tree type;
if (decl_is_template_id (decl, NULL))
{
- tree fn_type = get_mostly_instantiated_function_type (decl, NULL,
- NULL);
+ tree fn_type = get_mostly_instantiated_function_type (decl);
type = TREE_TYPE (fn_type);
}
else
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 62eef7ac982..67252f939a9 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -4534,6 +4534,7 @@ for_each_template_parm (t, fn, data, visited)
htab_t visited;
{
struct pair_fn_data pfd;
+ int result;
/* Set up. */
pfd.fn = fn;
@@ -4549,10 +4550,16 @@ for_each_template_parm (t, fn, data, visited)
else
pfd.visited = htab_create (37, htab_hash_pointer, htab_eq_pointer,
NULL);
- return walk_tree (&t,
- for_each_template_parm_r,
- &pfd,
- NULL) != NULL_TREE;
+ result = walk_tree (&t,
+ for_each_template_parm_r,
+ &pfd,
+ NULL) != NULL_TREE;
+
+ /* Clean up. */
+ if (!visited)
+ htab_delete (pfd.visited);
+
+ return result;
}
int
@@ -7786,9 +7793,19 @@ instantiate_template (tmpl, targ_ptr)
}
}
+ /* Make sure that we can see identifiers, and compute access
+ correctly. */
+ if (DECL_CLASS_SCOPE_P (gen_tmpl))
+ pushclass (tsubst (DECL_CONTEXT (gen_tmpl), targ_ptr, tf_error,
+ gen_tmpl), 1);
+
/* substitute template parameters */
fndecl = tsubst (DECL_TEMPLATE_RESULT (gen_tmpl),
targ_ptr, tf_error, gen_tmpl);
+
+ if (DECL_CLASS_SCOPE_P (gen_tmpl))
+ popclass ();
+
/* The DECL_TI_TEMPLATE should always be the immediate parent
template, not the most general template. */
DECL_TI_TEMPLATE (fndecl) = tmpl;
@@ -10414,18 +10431,12 @@ tsubst_enum (tag, newtag, args)
/* DECL is a FUNCTION_DECL that is a template specialization. Return
its type -- but without substituting the innermost set of template
arguments. So, innermost set of template parameters will appear in
- the type. If CONTEXTP is non-NULL, then the partially substituted
- DECL_CONTEXT (if any) will also be filled in. Similarly, TPARMSP
- will be filled in with the substituted template parameters, if it
- is non-NULL. */
+ the type. */
tree
-get_mostly_instantiated_function_type (decl, contextp, tparmsp)
+get_mostly_instantiated_function_type (decl)
tree decl;
- tree *contextp;
- tree *tparmsp;
{
- tree context = NULL_TREE;
tree fn_type;
tree tmpl;
tree targs;
@@ -10442,8 +10453,6 @@ get_mostly_instantiated_function_type (decl, contextp, tparmsp)
my_friendly_assert (parm_depth == TMPL_ARGS_DEPTH (targs), 0);
fn_type = TREE_TYPE (tmpl);
- if (DECL_STATIC_FUNCTION_P (decl))
- context = DECL_CONTEXT (decl);
if (parm_depth == 1)
/* No substitution is necessary. */
@@ -10463,11 +10472,17 @@ get_mostly_instantiated_function_type (decl, contextp, tparmsp)
TMPL_ARGS_DEPTH (targs),
make_tree_vec (DECL_NTPARMS (tmpl)));
+ /* Make sure that we can see identifiers, and compute access
+ correctly. We can just use the context of DECL for the
+ partial substitution here. It depends only on outer template
+ parameters, regardless of whether the innermost level is
+ specialized or not. */
+ if (DECL_CLASS_SCOPE_P (decl))
+ pushclass (DECL_CONTEXT (decl), 1);
+
/* Now, do the (partial) substitution to figure out the
appropriate function type. */
fn_type = tsubst (fn_type, partial_args, tf_error, NULL_TREE);
- if (DECL_STATIC_FUNCTION_P (decl))
- context = tsubst (context, partial_args, tf_error, NULL_TREE);
/* Substitute into the template parameters to obtain the real
innermost set of parameters. This step is important if the
@@ -10475,12 +10490,10 @@ get_mostly_instantiated_function_type (decl, contextp, tparmsp)
parameters whose types depend on outer template parameters. */
TREE_VEC_LENGTH (partial_args)--;
tparms = tsubst_template_parms (tparms, partial_args, tf_error);
- }
- if (contextp)
- *contextp = context;
- if (tparmsp)
- *tparmsp = tparms;
+ if (DECL_CLASS_SCOPE_P (decl))
+ popclass ();
+ }
return fn_type;
}
diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c
index d6ddf131bc1..17942c30fd6 100644
--- a/gcc/cp/rtti.c
+++ b/gcc/cp/rtti.c
@@ -685,8 +685,7 @@ qualifier_flags (type)
tree type;
{
int flags = 0;
- /* we want the qualifiers on this type, not any array core, it might have */
- int quals = TYPE_QUALS (type);
+ int quals = cp_type_quals (type);
if (quals & TYPE_QUAL_CONST)
flags |= 1;
diff --git a/gcc/cp/search.c b/gcc/cp/search.c
index c14287b0202..4170c161ca7 100644
--- a/gcc/cp/search.c
+++ b/gcc/cp/search.c
@@ -82,6 +82,7 @@ struct vbase_info
static tree lookup_field_1 PARAMS ((tree, tree));
static int is_subobject_of_p PARAMS ((tree, tree, tree));
+static int is_subobject_of_p_1 PARAMS ((tree, tree, tree));
static tree dfs_check_overlap PARAMS ((tree, void *));
static tree dfs_no_overlap_yet PARAMS ((tree, void *));
static base_kind lookup_base_r
@@ -1099,13 +1100,11 @@ accessible_p (type, decl)
return t != NULL_TREE;
}
-/* Routine to see if the sub-object denoted by the binfo PARENT can be
- found as a base class and sub-object of the object denoted by
- BINFO. MOST_DERIVED is the most derived type of the hierarchy being
- searched. */
+/* Recursive helper funciton for is_subobject_of_p; see that routine
+ for documentation of the parameters. */
static int
-is_subobject_of_p (parent, binfo, most_derived)
+is_subobject_of_p_1 (parent, binfo, most_derived)
tree parent, binfo, most_derived;
{
tree binfos;
@@ -1121,19 +1120,50 @@ is_subobject_of_p (parent, binfo, most_derived)
for (i = 0; i < n_baselinks; i++)
{
tree base_binfo = TREE_VEC_ELT (binfos, i);
- if (!CLASS_TYPE_P (TREE_TYPE (base_binfo)))
+ tree base_type;
+
+ base_type = TREE_TYPE (base_binfo);
+ if (!CLASS_TYPE_P (base_type))
/* If we see a TEMPLATE_TYPE_PARM, or some such, as a base
class there's no way to descend into it. */
continue;
- if (is_subobject_of_p (parent,
- CANONICAL_BINFO (base_binfo, most_derived),
- most_derived))
+ /* Avoid walking into the same virtual base more than once. */
+ if (TREE_VIA_VIRTUAL (base_binfo))
+ {
+ if (CLASSTYPE_MARKED4 (base_type))
+ return 0;
+ SET_CLASSTYPE_MARKED4 (base_type);
+ base_binfo = binfo_for_vbase (base_type, most_derived);
+ }
+
+ if (is_subobject_of_p_1 (parent, base_binfo, most_derived))
return 1;
}
return 0;
}
+/* Routine to see if the sub-object denoted by the binfo PARENT can be
+ found as a base class and sub-object of the object denoted by
+ BINFO. MOST_DERIVED is the most derived type of the hierarchy being
+ searched. */
+
+static int
+is_subobject_of_p (tree parent, tree binfo, tree most_derived)
+{
+ int result;
+ tree vbase;
+
+ result = is_subobject_of_p_1 (parent, binfo, most_derived);
+ /* Clear the mark bits on virtual bases. */
+ for (vbase = CLASSTYPE_VBASECLASSES (most_derived);
+ vbase;
+ vbase = TREE_CHAIN (vbase))
+ CLEAR_CLASSTYPE_MARKED4 (TREE_TYPE (TREE_VALUE (vbase)));
+
+ return result;
+}
+
struct lookup_field_info {
/* The type in which we're looking. */
tree type;
@@ -2544,7 +2574,8 @@ dfs_push_decls (binfo, data)
method_vec = (CLASS_TYPE_P (type)
? CLASSTYPE_METHOD_VEC (type) : NULL_TREE);
- if (method_vec)
+
+ if (method_vec && TREE_VEC_LENGTH (method_vec) >= 3)
{
tree *methods;
tree *end;
@@ -2553,7 +2584,7 @@ dfs_push_decls (binfo, data)
end = TREE_VEC_END (method_vec);
for (methods = &TREE_VEC_ELT (method_vec, 2);
- *methods && methods != end;
+ methods < end && *methods;
methods++)
setup_class_bindings (DECL_NAME (OVL_CURRENT (*methods)),
/*type_binding_p=*/0);
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 55b6dbda87c..c0e3fa66472 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -2541,6 +2541,7 @@ get_member_function_from_ptrfunc (instance_ptrptr, function)
tree fntype = TYPE_PTRMEMFUNC_FN_TYPE (TREE_TYPE (function));
tree instance_ptr = *instance_ptrptr;
+ tree instance_save_expr = 0;
if (instance_ptr == error_mark_node)
{
if (TREE_CODE (function) == PTRMEM_CST)
@@ -2560,7 +2561,7 @@ get_member_function_from_ptrfunc (instance_ptrptr, function)
}
if (TREE_SIDE_EFFECTS (instance_ptr))
- instance_ptr = save_expr (instance_ptr);
+ instance_ptr = instance_save_expr = save_expr (instance_ptr);
if (TREE_SIDE_EFFECTS (function))
function = save_expr (function);
@@ -2621,9 +2622,9 @@ get_member_function_from_ptrfunc (instance_ptrptr, function)
/* Make sure this doesn't get evaluated first inside one of the
branches of the COND_EXPR. */
- if (TREE_CODE (instance_ptr) == SAVE_EXPR)
+ if (instance_save_expr)
e1 = build (COMPOUND_EXPR, TREE_TYPE (e1),
- instance_ptr, e1);
+ instance_save_expr, e1);
function = e1;
}
diff --git a/gcc/cppfiles.c b/gcc/cppfiles.c
index 9cf5593ac0f..4e8aba56427 100644
--- a/gcc/cppfiles.c
+++ b/gcc/cppfiles.c
@@ -27,6 +27,12 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "intl.h"
#include "mkdeps.h"
#include "splay-tree.h"
+#ifdef ENABLE_VALGRIND_CHECKING
+#include <valgrind.h>
+#else
+/* Avoid #ifdef:s when we can help it. */
+#define VALGRIND_DISCARD(x)
+#endif
#ifdef HAVE_MMAP_FILE
# include <sys/mman.h>
@@ -77,8 +83,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#undef strcmp
/* This structure is used for the table of all includes. */
-struct include_file
-{
+struct include_file {
const char *name; /* actual path name of file */
const char *header_name; /* the original header found */
const cpp_hashnode *cmacro; /* macro, if any, preventing reinclusion. */
@@ -114,7 +119,7 @@ struct include_file
included again. If it's NEVER_REREAD, the file is never to be
included again. Otherwise it is a macro hashnode, and the file is
to be included again if the macro is defined. */
-#define NEVER_REREAD ((const cpp_hashnode *)-1)
+#define NEVER_REREAD ((const cpp_hashnode *) -1)
#define DO_NOT_REREAD(inc) \
((inc)->cmacro && ((inc)->cmacro == NEVER_REREAD \
|| (inc)->cmacro->type == NT_MACRO))
@@ -179,7 +184,7 @@ static void
destroy_node (v)
splay_tree_value v;
{
- struct include_file *f = (struct include_file *)v;
+ struct include_file *f = (struct include_file *) v;
if (f)
{
@@ -469,8 +474,13 @@ read_include_file (pfile, inc)
if (SHOULD_MMAP (size, pagesize))
{
buf = (uchar *) mmap (0, size, PROT_READ, MAP_PRIVATE, inc->fd, 0);
- if (buf == (uchar *)-1)
+ if (buf == (uchar *) -1)
goto perror_fail;
+
+ /* We must tell Valgrind that the byte at buf[size] is actually
+ readable. Discard the handle to avoid handle leak. */
+ VALGRIND_DISCARD (VALGRIND_MAKE_READABLE (buf + size, 1));
+
inc->mapped = 1;
}
else
@@ -551,7 +561,14 @@ purge_cache (inc)
{
#if MMAP_THRESHOLD
if (inc->mapped)
- munmap ((PTR) inc->buffer, inc->st.st_size);
+ {
+ /* Undo the previous annotation for the
+ known-zero-byte-after-mmap. Discard the handle to avoid
+ handle leak. */
+ VALGRIND_DISCARD (VALGRIND_MAKE_NOACCESS (inc->buffer
+ + inc->st.st_size, 1));
+ munmap ((PTR) inc->buffer, inc->st.st_size);
+ }
else
#endif
free ((PTR) inc->buffer);
@@ -695,7 +712,7 @@ report_missing_guard (n, b)
void *b;
{
struct include_file *f = (struct include_file *) n->value;
- int *bannerp = (int *)b;
+ int *bannerp = (int *) b;
if (f && f->cmacro == 0 && f->include_count == 1)
{
@@ -721,7 +738,7 @@ handle_missing_header (pfile, fname, angle_brackets)
{
bool print_dep
= CPP_OPTION (pfile, deps.style) > (angle_brackets || pfile->map->sysp);
-
+
if (CPP_OPTION (pfile, deps.missing_files) && print_dep)
deps_add_dep (pfile->deps, fname);
/* If -M was specified, then don't count this as an error, because
@@ -886,8 +903,7 @@ search_from (pfile, type)
such as DOS. The format of the file name map file is just a series
of lines with two tokens on each line. The first token is the name
to map, and the second token is the actual name to use. */
-struct file_name_map
-{
+struct file_name_map {
struct file_name_map *map_next;
char *map_from;
char *map_to;
@@ -907,10 +923,10 @@ read_filename_string (ch, f)
len = 20;
set = alloc = xmalloc (len + 1);
- if (! is_space(ch))
+ if (! is_space (ch))
{
*set++ = ch;
- while ((ch = getc (f)) != EOF && ! is_space(ch))
+ while ((ch = getc (f)) != EOF && ! is_space (ch))
{
if (set - alloc == len)
{
@@ -927,8 +943,7 @@ read_filename_string (ch, f)
}
/* This structure holds a linked list of file name maps, one per directory. */
-struct file_name_map_list
-{
+struct file_name_map_list {
struct file_name_map_list *map_list_next;
char *map_list_name;
struct file_name_map *map_list_map;
@@ -974,10 +989,10 @@ read_name_map (pfile, dirname)
char *from, *to;
struct file_name_map *ptr;
- if (is_space(ch))
+ if (is_space (ch))
continue;
from = read_filename_string (ch, f);
- while ((ch = getc (f)) != EOF && is_hspace(ch))
+ while ((ch = getc (f)) != EOF && is_hspace (ch))
;
to = read_filename_string (ch, f);
diff --git a/gcc/cpplib.c b/gcc/cpplib.c
index c954448cbd3..7092cc002f8 100644
--- a/gcc/cpplib.c
+++ b/gcc/cpplib.c
@@ -207,7 +207,7 @@ skip_rest_of_line (pfile)
cpp_reader *pfile;
{
/* Discard all stacked contexts. */
- while (pfile->context != &pfile->base_context)
+ while (pfile->context->prev)
_cpp_pop_context (pfile);
/* Sweep up all tokens remaining on the line. */
@@ -1277,9 +1277,6 @@ destringize_and_run (pfile, in)
{
const unsigned char *src, *limit;
char *dest, *result;
- cpp_context saved_context;
- cpp_context *saved_cur_context;
- unsigned int saved_line;
dest = result = alloca (in->len + 1);
for (src = in->text, limit = src + in->len; src < limit;)
@@ -1291,24 +1288,29 @@ destringize_and_run (pfile, in)
}
*dest = '\0';
- /* FIXME. All this saving is a horrible kludge to handle the case
- when we're in a macro expansion.
-
- A better strategy it to not convert _Pragma to #pragma if doing
- preprocessed output, but to just pass it through as-is, unless it
- is a CPP pragma in which case is should be processed normally.
- When compiling the preprocessed output the _Pragma should be
- handled. This will be become necessary when we move to
- line-at-a-time lexing since we will be macro-expanding the line
- before outputting / compiling it. */
- saved_line = pfile->line;
- saved_context = pfile->base_context;
- saved_cur_context = pfile->context;
- pfile->context = &pfile->base_context;
- run_directive (pfile, T_PRAGMA, result, dest - result);
- pfile->context = saved_cur_context;
- pfile->base_context = saved_context;
- pfile->line = saved_line;
+ /* Ugh; an awful kludge. We are really not set up to be lexing
+ tokens when in the middle of a macro expansion. Use a new
+ context to force cpp_get_token to lex, and so skip_rest_of_line
+ doesn't go beyond the end of the text. Also, remember the
+ current lexing position so we can return to it later.
+
+ Something like line-at-a-time lexing should remove the need for
+ this. */
+ {
+ cpp_context *saved_context = pfile->context;
+ cpp_token *saved_cur_token = pfile->cur_token;
+ tokenrun *saved_cur_run = pfile->cur_run;
+
+ pfile->context = xnew (cpp_context);
+ pfile->context->macro = 0;
+ pfile->context->prev = 0;
+ run_directive (pfile, T_PRAGMA, result, dest - result);
+ free (pfile->context);
+ pfile->context = saved_context;
+ pfile->cur_token = saved_cur_token;
+ pfile->cur_run = saved_cur_run;
+ pfile->line--;
+ }
/* See above comment. For the moment, we'd like
diff --git a/gcc/cppspec.c b/gcc/cppspec.c
index ee19b722635..e79968ab510 100644
--- a/gcc/cppspec.c
+++ b/gcc/cppspec.c
@@ -238,3 +238,9 @@ int lang_specific_pre_link ()
/* Number of extra output files that lang_specific_pre_link may generate. */
int lang_specific_extra_outfiles = 0; /* Not used for cpp. */
+
+/* Table of language-specific spec functions. */
+const struct spec_function lang_specific_spec_functions[] =
+{
+ { 0, 0 }
+};
diff --git a/gcc/df.c b/gcc/df.c
index 6a08e4725db..4228e0d6ebd 100644
--- a/gcc/df.c
+++ b/gcc/df.c
@@ -169,11 +169,14 @@ Perhaps there should be a bitmap argument to df_analyse to specify
#include "df.h"
#include "fibheap.h"
-#define FOR_EACH_BB_IN_BITMAP(BITMAP, MIN, BB, CODE) \
-do { \
- unsigned int node_; \
- EXECUTE_IF_SET_IN_BITMAP (BITMAP, MIN, node_, \
- {(BB) = BASIC_BLOCK (node_); CODE;});} while (0)
+#define FOR_EACH_BB_IN_BITMAP(BITMAP, MIN, BB, CODE) \
+ do \
+ { \
+ unsigned int node_; \
+ EXECUTE_IF_SET_IN_BITMAP (BITMAP, MIN, node_, \
+ {(BB) = BASIC_BLOCK (node_); CODE;}); \
+ } \
+ while (0)
static struct obstack df_ref_obstack;
static struct df *ddf;
@@ -375,7 +378,7 @@ df_def_table_realloc (df, size)
/* Link all the new refs together, overloading the chain field. */
for (i = 0; i < size - 1; i++)
- refs[i].chain = (struct df_link *)(refs + i + 1);
+ refs[i].chain = (struct df_link *) (refs + i + 1);
refs[size - 1].chain = 0;
}
#endif
@@ -392,7 +395,7 @@ df_bitmaps_alloc (df, flags)
basic_block bb;
/* Free the bitmaps if they need resizing. */
- if ((flags & DF_LR) && df->n_regs < (unsigned int)max_reg_num ())
+ if ((flags & DF_LR) && df->n_regs < (unsigned int) max_reg_num ())
dflags |= DF_LR | DF_RU;
if ((flags & DF_RU) && df->n_uses < df->use_id)
dflags |= DF_RU;
@@ -936,7 +939,7 @@ df_def_record_1 (df, x, bb, insn)
int i;
for (i = XVECLEN (dst, 0) - 1; i >= 0; i--)
- df_def_record_1 (df, XVECEXP (dst, 0, i), bb, insn);
+ df_def_record_1 (df, XVECEXP (dst, 0, i), bb, insn);
return;
}
@@ -972,9 +975,9 @@ df_def_record_1 (df, x, bb, insn)
flags |= DF_REF_READ_WRITE;
}
- if (GET_CODE (dst) == REG
- || (GET_CODE (dst) == SUBREG && GET_CODE (SUBREG_REG (dst)) == REG))
- df_ref_record (df, dst, loc, insn, DF_REF_REG_DEF, flags);
+ if (GET_CODE (dst) == REG
+ || (GET_CODE (dst) == SUBREG && GET_CODE (SUBREG_REG (dst)) == REG))
+ df_ref_record (df, dst, loc, insn, DF_REF_REG_DEF, flags);
}
@@ -1236,12 +1239,12 @@ df_insn_refs_record (df, bb, insn)
{
switch (REG_NOTE_KIND (note))
{
- case REG_EQUIV:
- case REG_EQUAL:
- df_uses_record (df, &XEXP (note, 0), DF_REF_REG_USE,
- bb, insn, 0);
- default:
- break;
+ case REG_EQUIV:
+ case REG_EQUAL:
+ df_uses_record (df, &XEXP (note, 0), DF_REF_REG_USE,
+ bb, insn, 0);
+ default:
+ break;
}
}
@@ -1992,7 +1995,7 @@ df_analyse_1 (df, blocks, flags, update)
aflags |= DF_LR;
if (! blocks)
- blocks = df->all_blocks;
+ blocks = df->all_blocks;
df->flags = flags;
if (update)
@@ -2040,21 +2043,21 @@ df_analyse_1 (df, blocks, flags, update)
df_reg_use_chain_create (df, blocks);
}
- df->dfs_order = xmalloc (sizeof(int) * n_basic_blocks);
- df->rc_order = xmalloc (sizeof(int) * n_basic_blocks);
- df->rts_order = xmalloc (sizeof(int) * n_basic_blocks);
- df->inverse_dfs_map = xmalloc (sizeof(int) * last_basic_block);
- df->inverse_rc_map = xmalloc (sizeof(int) * last_basic_block);
- df->inverse_rts_map = xmalloc (sizeof(int) * last_basic_block);
+ df->dfs_order = xmalloc (sizeof (int) * n_basic_blocks);
+ df->rc_order = xmalloc (sizeof (int) * n_basic_blocks);
+ df->rts_order = xmalloc (sizeof (int) * n_basic_blocks);
+ df->inverse_dfs_map = xmalloc (sizeof (int) * last_basic_block);
+ df->inverse_rc_map = xmalloc (sizeof (int) * last_basic_block);
+ df->inverse_rts_map = xmalloc (sizeof (int) * last_basic_block);
flow_depth_first_order_compute (df->dfs_order, df->rc_order);
flow_reverse_top_sort_order_compute (df->rts_order);
- for (i = 0; i < n_basic_blocks; i ++)
- {
- df->inverse_dfs_map[df->dfs_order[i]] = i;
- df->inverse_rc_map[df->rc_order[i]] = i;
- df->inverse_rts_map[df->rts_order[i]] = i;
- }
+ for (i = 0; i < n_basic_blocks; i++)
+ {
+ df->inverse_dfs_map[df->dfs_order[i]] = i;
+ df->inverse_rc_map[df->rc_order[i]] = i;
+ df->inverse_rts_map[df->rts_order[i]] = i;
+ }
if (aflags & DF_RD)
{
/* Compute the sets of gens and kills for the defs of each bb. */
@@ -2128,7 +2131,7 @@ df_analyse_1 (df, blocks, flags, update)
/* Free up bitmaps that are no longer required. */
if (dflags)
- df_bitmaps_free (df, dflags);
+ df_bitmaps_free (df, dflags);
if (aflags & DF_LR)
{
@@ -2274,7 +2277,7 @@ df_refs_update (df)
basic_block bb;
int count = 0;
- if ((unsigned int)max_reg_num () >= df->reg_size)
+ if ((unsigned int) max_reg_num () >= df->reg_size)
df_reg_table_realloc (df, 0);
df_refs_queue (df);
@@ -2497,8 +2500,7 @@ df_insn_modify (df, bb, insn)
}
-typedef struct replace_args
-{
+typedef struct replace_args {
rtx match;
rtx replacement;
rtx insn;
@@ -3427,42 +3429,42 @@ df_dump (df, flags, file)
&& (reg_info[j].n_uses || reg_info[j].n_defs))
|| ((flags & DF_RD_CHAIN) && reg_info[j].defs)
|| ((flags & DF_RU_CHAIN) && reg_info[j].uses))
- {
- fprintf (file, "reg %d", j);
- if ((flags & DF_RD_CHAIN) && (flags & DF_RU_CHAIN))
- {
- basic_block bb = df_regno_bb (df, j);
+ {
+ fprintf (file, "reg %d", j);
+ if ((flags & DF_RD_CHAIN) && (flags & DF_RU_CHAIN))
+ {
+ basic_block bb = df_regno_bb (df, j);
- if (bb)
- fprintf (file, " bb %d", bb->index);
- else
- fprintf (file, " bb ?");
- }
- if (flags & DF_REG_INFO)
- {
- fprintf (file, " life %d", reg_info[j].lifetime);
- }
+ if (bb)
+ fprintf (file, " bb %d", bb->index);
+ else
+ fprintf (file, " bb ?");
+ }
+ if (flags & DF_REG_INFO)
+ {
+ fprintf (file, " life %d", reg_info[j].lifetime);
+ }
- if ((flags & DF_REG_INFO) || (flags & DF_RD_CHAIN))
- {
- fprintf (file, " defs ");
- if (flags & DF_REG_INFO)
- fprintf (file, "%d ", reg_info[j].n_defs);
- if (flags & DF_RD_CHAIN)
- df_chain_dump (reg_info[j].defs, file);
- }
+ if ((flags & DF_REG_INFO) || (flags & DF_RD_CHAIN))
+ {
+ fprintf (file, " defs ");
+ if (flags & DF_REG_INFO)
+ fprintf (file, "%d ", reg_info[j].n_defs);
+ if (flags & DF_RD_CHAIN)
+ df_chain_dump (reg_info[j].defs, file);
+ }
- if ((flags & DF_REG_INFO) || (flags & DF_RU_CHAIN))
- {
- fprintf (file, " uses ");
- if (flags & DF_REG_INFO)
- fprintf (file, "%d ", reg_info[j].n_uses);
- if (flags & DF_RU_CHAIN)
- df_chain_dump (reg_info[j].uses, file);
- }
+ if ((flags & DF_REG_INFO) || (flags & DF_RU_CHAIN))
+ {
+ fprintf (file, " uses ");
+ if (flags & DF_REG_INFO)
+ fprintf (file, "%d ", reg_info[j].n_uses);
+ if (flags & DF_RU_CHAIN)
+ df_chain_dump (reg_info[j].uses, file);
+ }
- fprintf (file, "\n");
- }
+ fprintf (file, "\n");
+ }
}
}
fprintf (file, "\n");
@@ -3484,7 +3486,7 @@ df_insn_debug (df, insn, file)
if (df->insns[uid].defs)
bbi = DF_REF_BBNO (df->insns[uid].defs->ref);
- else if (df->insns[uid].uses)
+ else if (df->insns[uid].uses)
bbi = DF_REF_BBNO (df->insns[uid].uses->ref);
else
bbi = -1;
@@ -3512,7 +3514,7 @@ df_insn_debug_regno (df, insn, file)
if (df->insns[uid].defs)
bbi = DF_REF_BBNO (df->insns[uid].defs->ref);
- else if (df->insns[uid].uses)
+ else if (df->insns[uid].uses)
bbi = DF_REF_BBNO (df->insns[uid].uses->ref);
else
bbi = -1;
@@ -3637,7 +3639,7 @@ hybrid_search_bitmap (block, in, out, gen, kill, dir,
int changed;
int i = block->index;
edge e;
- basic_block bb= block;
+ basic_block bb = block;
SET_BIT (visited, block->index);
if (TEST_BIT (pending, block->index))
{
@@ -3663,7 +3665,7 @@ hybrid_search_bitmap (block, in, out, gen, kill, dir,
else
{
/* Calculate <conf_op> of successor ins */
- bitmap_zero(out[i]);
+ bitmap_zero (out[i]);
for (e = bb->succ; e != 0; e = e->succ_next)
{
if (e->dest == EXIT_BLOCK_PTR)
@@ -3748,7 +3750,7 @@ hybrid_search_sbitmap (block, in, out, gen, kill, dir,
int changed;
int i = block->index;
edge e;
- basic_block bb= block;
+ basic_block bb = block;
SET_BIT (visited, block->index);
if (TEST_BIT (pending, block->index))
{
@@ -3774,7 +3776,7 @@ hybrid_search_sbitmap (block, in, out, gen, kill, dir,
else
{
/* Calculate <conf_op> of successor ins */
- sbitmap_zero(out[i]);
+ sbitmap_zero (out[i]);
for (e = bb->succ; e != 0; e = e->succ_next)
{
if (e->dest == EXIT_BLOCK_PTR)
diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c
index 2596d03260e..b6794b80ff8 100644
--- a/gcc/diagnostic.c
+++ b/gcc/diagnostic.c
@@ -1023,7 +1023,6 @@ sorry VPARAMS ((const char *msgid, ...))
output_set_prefix
(&global_dc->buffer, diagnostic_build_prefix (&diagnostic));
- output_printf (&global_dc->buffer, "sorry, not implemented: ");
output_format (&global_dc->buffer, &diagnostic.message);
output_flush (&global_dc->buffer);
VA_CLOSE (ap);
diff --git a/gcc/doc/contrib.texi b/gcc/doc/contrib.texi
index 8e29e98fdd8..99f3b308b3b 100644
--- a/gcc/doc/contrib.texi
+++ b/gcc/doc/contrib.texi
@@ -10,14 +10,10 @@
The GCC project would like to thank its many contributors. Without them the
project would not have been nearly as successful as it has been. Any omissions
in this list are accidental. Feel free to contact
-@email{law@@redhat.com} if you have been left out
-or some of your contributions are not listed. Please keep this list in
+@email{law@@redhat.com} or @email{gerald@@pfeifer.com} if you have been left
+out or some of your contributions are not listed. Please keep this list in
alphabetical order.
-Some projects operating under the GCC project maintain their own list
-of contributors, such as
-@uref{http://gcc.gnu.org/libstdc++/,the C++ library}.
-
@itemize @bullet
@item
@@ -25,7 +21,8 @@ Analog Devices helped implement the support for complex data types
and iterators.
@item
-John David Anglin for improvements to libstdc++-v3 and the HP-UX port.
+John David Anglin for threading-related fixes and improvements to
+libstdc++-v3, and the HP-UX port.
@item
James van Artsdalen wrote the code that makes efficient use of
@@ -50,7 +47,7 @@ Jon Beniston for his Win32 port of Java.
Geoff Berry for his Java object serialization work and various patches.
@item
-Eric Blake for helping to make gcj and libgcj conform to the
+Eric Blake for helping to make GCJ and libgcj conform to the
specifications.
@item
@@ -66,7 +63,7 @@ Per Bothner for his direction via the steering committee and various
improvements to our infrastructure for supporting new languages. Chill
front end implementation. Initial implementations of
cpplib, fix-header, config.guess, libio, and past C++ library (libg++)
-maintainer. Dreaming up, designing and implementing much of gcj.
+maintainer. Dreaming up, designing and implementing much of GCJ.
@item
Devon Bowen helped port GCC to the Tahoe.
@@ -96,7 +93,12 @@ Joe Buck for his direction via the steering committee.
Craig Burley for leadership of the Fortran effort.
@item
-Paolo Carlini for his work on libstdc++-v3.
+Stephan Buys for contributing Doxygen notes for libstdc++.
+
+@item
+Paolo Carlini for libstdc++ work: lots of efficiency improvements to
+the string class, hard detective work on the frustrating localization
+issues, and keeping up with the problem reports.
@item
John Carr for his alias work, SPARC hacking, infrastructure improvements,
@@ -126,8 +128,11 @@ The @uref{http://www.classpath.org,,GNU Classpath project}
for all of their merged runtime code.
@item
-Nick Clifton for arm, mcore, fr30, v850, m32r work, @option{--help}, and other random
-hacking.
+Nick Clifton for arm, mcore, fr30, v850, m32r work, @option{--help}, and
+other random hacking.
+
+@item
+Michael Cook for libstdc++ cleanup patches to reduce warnings.
@item
Ralf Corsepius for SH testing and minor bugfixing.
@@ -147,25 +152,51 @@ Dario Dariol contributed the four varieties of sample programs
that print a copy of their source.
@item
-Mo DeJong for gcj and libgcj bug fixes.
+Russell Davidson for fstream and stringstream fixes in libstdc++.
+
+@item
+Mo DeJong for GCJ and libgcj bug fixes.
+
+@item
+Gabriel Dos Reis for contributions to g++, contributions and
+maintenance of GCC diagnostics infrastructure, libstdc++-v3,
+including valarray<>, complex<>, maintaining the numerics library
+(including that pesky <limits> :-) and keeping up-to-date anything
+to do with numbers.
@item
-Ulrich Drepper for his work on the C++ runtime libraries, glibc,
- testing of GCC using glibc, ISO C99 support, CFG dumping support, etc.
+Ulrich Drepper for his work on glibc, testing of GCC using glibc, ISO C99
+support, CFG dumping support, etc., plus support of the C++ runtime
+libraries including for all kinds of C interface issues, contributing and
+maintaining complex<>, sanity checking and disbursement, configuration
+architecture, libio maintenance, and early math work.
@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 port, and help cleaning up Haifa
-loop changes.
+David Edelsohn for his direction via the steering committee, ongoing work
+with the RS6000/PowerPC port, help cleaning up Haifa loop changes, and
+for doing the entire AIX port of libstdc++ with his bare hands.
+
+@item
+Kevin Ediger for the floating point formatting of num_put::do_put in
+libstdc++.
+
+@item
+Phil Edwards for libstdc++ work including configuration hackery,
+documentation maintainer, chief breaker of the web pages, the occasional
+iostream bugfix, and work on shared library symbol versioning.
@item
Paul Eggert for random hacking all over GCC@.
@item
-Mark Elbrecht for various DJGPP improvements.
+Mark Elbrecht for various DJGPP improvements, and for libstdc++
+configuration support for locales and fstream-related fixes.
+
+@item
+Vadim Egorov for libstdc++ fixes in strings, streambufs, and iostreams.
@item
Ben Elliston for his work to move the Objective-C runtime into its
@@ -285,17 +316,25 @@ Tim Josling for the sample language treelang based originally on Richard
Kenner's "``toy'' language".
@item
+Nicolai Josuttis for additional libstdc++ documentation.
+
+@item
Klaus Kaempf for his ongoing work to make alpha-vms a viable target.
@item
David Kashtan of SRI adapted GCC to VMS@.
@item
+Ryszard Kabatek for many, many libstdc++ bugfixes and optimizations of
+strings, especially member functions, and for auto_ptr fixes.
+
+@item
Geoffrey Keating for his ongoing work to make the PPC work for GNU/Linux
and his automatic regression tester.
@item
-Brendan Kehoe for his ongoing work with g++.
+Brendan Kehoe for his ongoing work with g++ and for a lot of early work
+in just about every part of libstdc++.
@item
Oliver M. Kellogg of Deutsche Aerospace contributed the port to the
@@ -313,8 +352,9 @@ elimination and delay slot scheduling. Richard Kenner was also the
head maintainer of GCC for several years.
@item
-Mumit Khan for various contributions to the cygwin and mingw32 ports and
-maintaining binary releases for Windows hosts.
+Mumit Khan for various contributions to the Cygwin and Mingw32 ports and
+maintaining binary releases for Windows hosts, and for massive libstdc++
+porting work to Cygwin/Mingw32.
@item
Robin Kirkham for cpu32 support.
@@ -374,7 +414,8 @@ runtime libraries.
@item
Martin von L@"owis for internal consistency checking infrastructure,
-and various C++ improvements including namespace support.
+various C++ improvements including namespace support, and tons of
+assistance with libstdc++/compiler merges.
@item
H.J. Lu for his previous contributions to the steering committee, many x86
@@ -397,12 +438,16 @@ implementation of the automaton based instruction scheduler.
Bob Manson for his behind the scenes work on dejagnu.
@item
+Philip Martin for lots of libstdc++ string and vector iterator fixes and
+improvements, and string clean up and testsuites.
+
+@item
All of the Mauve project
@uref{http://sources.redhat.com/cgi-bin/cvsweb.cgi/~checkout~/mauve/THANKS?rev=1.2&cvsroot=mauve&only_with_tag=HEAD,,contributors},
for Java test code.
@item
-Bryce McKinlay for numerous gcj and libgcj fixes and improvements.
+Bryce McKinlay for numerous GCJ and libgcj fixes and improvements.
@item
Adam Megacz for his work on the Win32 port of GCJ.
@@ -424,6 +469,10 @@ developers.
Gary Miller ported GCC to Charles River Data Systems machines.
@item
+Alfred Minarik for libstdc++ string and ios bugfixes, and turning the
+entire libstdc++ testsuite namespace-compatible.
+
+@item
Mark Mitchell for his direction via the steering committee, mountains of
C++ work, load/store hoisting out of loops, alias analysis improvements,
ISO C @code{restrict} support, and serving as release manager for GCC 3.x.
@@ -438,7 +487,8 @@ maintenance, and his ongoing work to make us make Fortran run fast.
@item
Jason Molenda for major help in the care and feeding of all the services
on the gcc.gnu.org (formerly egcs.cygnus.com) machine---mail, web
-services, ftp services, etc etc.
+services, ftp services, etc etc. Doing all this work on scrap paper and
+the backs of envelopes would have been... difficult.
@item
Catherine Moore for fixing various ugly problems we have sent her
@@ -467,7 +517,14 @@ Joseph S. Myers for his work on the PDP-11 port, format checking and ISO
C99 support, and continuous emphasis on (and contributions to) documentation.
@item
-Nathan Myers for his work on libstdc++-v3.
+Nathan Myers for his work on libstdc++-v3: architecture and authorship
+through the first three snapshots, including implementation of locale
+infrastructure, string, shadow C headers, and the initial project
+documentation (DESIGN, CHECKLIST, and so forth). Later, more work on
+MT-safe string and shadow headers.
+
+@item
+Felix Natter for documentation on porting libstdc++.
@item
NeXT, Inc.@: donated the front end that supports the Objective-C
@@ -487,7 +544,7 @@ improvements.
@item
Alexandre Oliva for various build infrastructure improvements, scripts and
-amazing testing work.
+amazing testing work, including keeping libtool issues sane and happy.
@item
Melissa O'Neill for various NeXT fixes.
@@ -528,15 +585,13 @@ David Reese of Sun Microsystems contributed to the Solaris on PowerPC
port.
@item
-Gabriel Dos Reis for contributions and maintenance of libstdc++-v3,
-including valarray implementation and limits support.
-
-@item
Joern Rennecke for maintaining the sh port, loop, regmove & reload
hacking.
@item
-Loren J. Rittle for improvements to libstdc++-v3 and the FreeBSD port.
+Loren J. Rittle for improvements to libstdc++-v3 including the FreeBSD
+port, threading fixes, thread-related configury changes, critical
+threading documentation, and solutions to really tricky I/O problems.
@item
Craig Rodrigues for processing tons of bug reports.
@@ -551,6 +606,10 @@ Ken Rose for fixes to our delay slot filling code.
Paul Rubin wrote most of the preprocessor.
@item
+Chip Salzenberg for libstdc++ patches and improvements to locales, traits,
+Makefiles, libio, libtool hackery, and ``long long'' support.
+
+@item
Juha Sarlin for improvements to the H8 code generator.
@item
@@ -571,6 +630,11 @@ work in the reload pass as well a serving as release manager for
GCC 2.95.3.
@item
+Peter Schmid for constant testing of libstdc++ -- especially application
+testing, going above and beyond what was requested for the release
+criteria -- and libstdc++ header file tweaks.
+
+@item
Jason Schroeder for jcf-dump patches.
@item
@@ -589,6 +653,10 @@ code which handles the parse tree and RTL data structures, constant
folding and help with the original VAX & m68k ports.
@item
+Kenny Simpson for prompting libstdc++ fixes due to defect reports from
+the LWG (thereby keeping us in line with updates from the ISO).
+
+@item
Franz Sirl for his ongoing work with making the PPC port stable
for linux.
@@ -602,7 +670,11 @@ Christopher Smith did the port for Convex machines.
Randy Smith finished the Sun FPA support.
@item
-Scott Snyder for various fixes.
+Scott Snyder for queue, iterator, istream, and string fixes and libstdc++
+testsuite entries.
+
+@item
+Brad Spencer for contributions to the GLIBCPP_FORCE_NEW technique.
@item
Richard Stallman, for writing the original gcc and launching the GNU project.
@@ -647,6 +719,9 @@ Gary Thomas for his ongoing work to make the PPC work for GNU/Linux.
Philipp Thomas for random bugfixes throughout the compiler
@item
+Jason Thorpe for thread support in libstdc++ on NetBSD.
+
+@item
Kresten Krab Thorup wrote the run time support for the Objective-C
language and the fantastic Java bytecode interpreter.
@@ -674,9 +749,20 @@ Lassi Tuura for improvements to config.guess to determine HP processor
types.
@item
+Petter Urkedal for libstdc++ CXXFLAGS, math, and algorithms fixes.
+
+@item
+Brent Verner for work with the libstdc++ cshadow files and their
+associated configure steps.
+
+@item
Todd Vierling for contributions for NetBSD ports.
@item
+Jonathan Wakely for contributing libstdc++ Doxygen notes and XHTML
+guidance.
+
+@item
Dean Wakerley for converting the install documentation from HTML to texinfo
in time for GCC 3.0.
@@ -684,6 +770,11 @@ in time for GCC 3.0.
Krister Walfridsson for random bugfixes.
@item
+Stephen M. Webb for time and effort on making libstdc++ shadow files
+work with the tricky Solaris 8+ headers, and for pushing the build-time
+header tree.
+
+@item
John Wehle for various improvements for the x86 code generator,
related infrastructure improvements to help x86 code generation,
value range propagation and other work, WE32k port.
@@ -793,12 +884,18 @@ David Edelsohn
Richard Emberson
@item
+Levente Farkas
+
+@item
Graham Fawcett
@item
Robert A. French
@item
+J@"orgen Freyh
+
+@item
Mark K. Gardner
@item
@@ -811,6 +908,9 @@ Yung Shing Gene
Kaveh Ghazi
@item
+David Gilbert
+
+@item
Simon Gornall
@item
@@ -868,6 +968,9 @@ Jeff Law
Robert Lipe
@item
+llewelly
+
+@item
Damon Love
@item
@@ -967,6 +1070,9 @@ Mike Stump
Adam Sulmicki
@item
+George Talbot
+
+@item
Gregory Warnes
@item
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index 2c042c711f2..09b29f3e8f4 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -1264,6 +1264,19 @@ To get a list of the possible @file{*.exp} files, pipe the
output of @samp{make check} into a file and look at the
@samp{Running @dots{} .exp} lines.
+To run only the tests for a library, run @samp{make check} from the
+the library's testsuite in a subdirectory of the object directory:
+@file{libstdc++-v3/testsuite} or @file{libcgj/testsuite}.
+
+@section Additional testing for Java Class Libraries
+
+The @uref{http://sources.redhat.com/mauve/,,Mauve Project} provides
+a suite of tests for the Java Class Libraries. This suite can be run
+as part of libgcj testing by placing the Mauve tree within the libjava
+testsuite at @file{libjava/testsuite/libjava.mauve/mauve}, or by
+specifying the location of that tree when invoking @samp{make}, as in
+@samp{make MAUVEDIR=~/mauve check}.
+
@section How to interpret test results
After the testsuite has run you'll find various @file{*.sum} and @file{*.log}
@@ -2059,8 +2072,7 @@ longer a multiple of 2 bytes.
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. The HP assembler does not work with the @samp{hppa64-hp-hpux11*}
-port.
+assembler.
Specifically, @option{-g} does not work on HP-UX (since that system
uses a peculiar debugging format which GCC does not know about), unless you
@@ -2162,16 +2174,27 @@ compile GCC 3.0 and up. Refer to @uref{binaries.html,,binaries} for
information about obtaining precompiled GCC binaries for HP-UX.
GNU binutils 2.13 or later is recommended with the 64-bit port.
-The HP assembler is not supported. It is @emph{highly} recommended
-that the GNU linker be used as well. Either binutils must be built
-prior to gcc, or a binary distribution of gcc or binutils must be
-obtained for the initial builds. When starting with a HP compiler,
-it is preferable to use the ANSI compiler as the bundled compiler
-only supports traditional C. Bootstrapping with the bundled compiler
-is tested infrequently and problems often arise because of the subtle
-differences in semantics between traditional and ISO C. There also
-have been problems reported with various binary distributions. This
-port still is undergoing significant development.
+The HP assembler has many limitations and is not recommended. For
+example, it does not support weak symbols or alias definitions.
+As a result, explicit template instantiations are required when
+using C++. Either the HP or GNU linker can be used but it may be
+necessary to use the GNU linker when dwarf2 exception support is
+implemented.
+
+There are several possible approaches to building the distribution.
+Binutils can be built first using the HP tools. Then, the GCC
+distribution can be built. The second approach is to build GCC
+first using the HP tools, then build binutils, then rebuild GCC.
+There have been problems with various binary distributions, so
+it is best not to start from a binary distribution.
+
+When starting with a HP compiler, it is preferable to use the ANSI
+compiler as the bundled compiler only supports traditional C.
+Bootstrapping with the bundled compiler is tested infrequently and
+problems often arise because of the subtle differences in semantics
+between traditional and ISO C.
+
+This port still is undergoing significant development.
@html
<hr />
@@ -2878,7 +2901,7 @@ PowerPC system in big endian mode, running System V.4.
@heading @anchor{powerpc-*-linux-gnu*}powerpc-*-linux-gnu*
You will need
-@uref{ftp://ftp.kernel.org/pub/linux/devel/binutils,,binutils 2.12.90.0.7}
+@uref{ftp://ftp.kernel.org/pub/linux/devel/binutils,,binutils 2.13.90.0.10}
or newer for a working GCC@.
@html
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index d58bc6982ea..9d6e645053f 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -551,7 +551,7 @@ in the following sections.
@emph{H8/300 Options}
@gccoptlist{
--mrelax -mh -ms -mint32 -malign-300}
+-mrelax -mh -ms -mn -mint32 -malign-300}
@emph{SH Options}
@gccoptlist{
@@ -4252,9 +4252,10 @@ collector's heap should be allowed to expand between collections.
Tuning this may improve compilation speed; it has no effect on code
generation.
-The default is 30%. Setting this parameter to zero causes a full
-collection to occur at every opportunity. This is extremely slow, but
-can be useful for debugging.
+The default is 30%. Setting this parameter and
+@option{ggc-min-heapsize} to zero causes a full collection to occur at
+every opportunity. This is extremely slow, but can be useful for
+debugging.
@item ggc-min-heapsize
@@ -4265,7 +4266,9 @@ tuning this may improve compilation speed, and has no effect on code
generation.
The default is 4096 (four megabytes). Setting this parameter very large
-effectively disables garbage collection.
+effectively disables garbage collection. Setting this parameter and
+@option{ggc-min-expand} to zero causes a full collection to occur at
+every opportunity.
@end table
@end table
@@ -4975,6 +4978,27 @@ Substitute the variable part of a matched option. See below.
Note that each comma in the substituted string is replaced by
a single space.
+@item %:@var{function}(@var{args})
+Call the named function @var{function}, passing it @var{args}.
+@var{args} is first processed as a nested spec string, then split
+into an argument vector in the usual fashion. The function returns
+a string which is processed as if it had appeared literally as part
+of the current spec.
+
+The following built-in spec functions are provided:
+
+@table @code
+@item @code{if-exists}
+The @code{if-exists} spec function takes one argument, an absolute
+pathname to a file. If the file exists, @code{if-exists} returns the
+pathname. Here is a small example of its usage:
+
+@smallexample
+*startfile:
+crt0%O%s %:if-exists(crti%O%s) crtbegin%O%s
+@end smallexample
+@end table
+
@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
@@ -8619,6 +8643,11 @@ Generate code for the H8/300H@.
@opindex ms
Generate code for the H8S@.
+@item -mn
+@opindex mn
+Generate code for the H8S and H8/300H in the normal mode. This switch
+must be used either with -mh or -ms.
+
@item -ms2600
@opindex ms2600
Generate code for the H8S/2600. This switch must be used with @option{-ms}.
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index 275a1042be5..e337a50ac51 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -753,6 +753,7 @@ here; FIXME: document the others.
@menu
* Test Idioms:: Idioms used in test suite code.
* C Tests:: The C language test suites.
+* libgcj Tests:: The Java library test suites.
@end menu
@node Test Idioms
@@ -903,3 +904,32 @@ shouldn't.
FIXME: merge in @file{testsuite/README.gcc} and discuss the format of
test cases and magic comments more.
+
+@node libgcj Tests
+@subsection The Java library test suites.
+
+Runtime tests are executed via @samp{make check} from the @samp{testsuite}
+directory of the libjava hierarchy in the build tree. Additional runtime
+tests can be checked into this testsuite.
+
+Regression testing of the core packages in libgcj is also covered by the
+Mauve test suite. The @uref{http://sources.redhat.com/mauve/,,Mauve Project}
+develops tests for the Java Class Libraries. These tests are run as part
+of libgcj testing by placing the Mauve tree within the libjava testsuite
+sources at @file{libjava/testsuite/libjava.mauve/mauve}, or by specifying
+the location of that tree when invoking @samp{make}, as in
+@samp{make MAUVEDIR=~/mauve check}.
+
+To detect regressions, a mechanism in @file{mauve.exp} compares the
+failures for a test run against the list of expected failures in
+@file{libjava/testsuite/libjava.mauve/xfails} from the source hierarchy.
+Update this file when adding new failing tests to Mauve, or when fixing
+bugs in libgcj that had caused Mauve test failures.
+
+The @uref{http://oss.software.ibm.com/developerworks/opensource/jacks/,,
+Jacks} project provides a test suite for Java compilers that can be used
+to test changes that affect the GCJ front end. This test suite is run as
+part of Java testing by placing the Jacks tree within the the libjava
+testsuite sources at @file{libjava/testsuite/libjava.jacks/jacks}.
+
+We encourage developers to contribute test cases to Mauve and Jacks.
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index b5078c1fa30..9678aa0ca88 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -802,12 +802,7 @@ gen_reg_rtx (mode)
which makes much better code. Besides, allocating DCmode
pseudos overstrains reload on some machines like the 386. */
rtx realpart, imagpart;
- int size = GET_MODE_UNIT_SIZE (mode);
- enum machine_mode partmode
- = mode_for_size (size * BITS_PER_UNIT,
- (GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT
- ? MODE_FLOAT : MODE_INT),
- 0);
+ enum machine_mode partmode = GET_MODE_INNER (mode);
realpart = gen_reg_rtx (partmode);
imagpart = gen_reg_rtx (partmode);
diff --git a/gcc/expr.c b/gcc/expr.c
index e4d97772cc8..8dd9a8678b5 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -54,9 +54,11 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#ifdef PUSH_ROUNDING
+#ifndef PUSH_ARGS_REVERSED
#if defined (STACK_GROWS_DOWNWARD) != defined (ARGS_GROW_DOWNWARD)
#define PUSH_ARGS_REVERSED /* If it's last to first. */
#endif
+#endif
#endif
@@ -3150,11 +3152,7 @@ emit_move_insn_1 (x, y)
/* Expand complex moves by moving real part and imag part, if possible. */
else if ((class == MODE_COMPLEX_FLOAT || class == MODE_COMPLEX_INT)
- && BLKmode != (submode = mode_for_size ((GET_MODE_UNIT_SIZE (mode)
- * BITS_PER_UNIT),
- (class == MODE_COMPLEX_INT
- ? MODE_INT : MODE_FLOAT),
- 0))
+ && BLKmode != (submode = GET_MODE_INNER (mode))
&& (mov_optab->handlers[(int) submode].insn_code
!= CODE_FOR_nothing))
{
diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog
index cd79362e383..8b378cf0f1a 100644
--- a/gcc/f/ChangeLog
+++ b/gcc/f/ChangeLog
@@ -1,3 +1,17 @@
+2002-11-20 Toon Moene <toon@moene.indiv.nluug.nl>
+
+ * invoke.texi: Explain the purpose of -fmove-all-movables,
+ -freduce-all-givs and -frerun-loop-opts better.
+
+2002-11-19 Toon Moene <toon@moene.indiv.nluug.nl>
+
+ PR fortran/8587
+ * news.texi: Show PR fortran/8587 fixed.
+
+2002-11-19 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * g77spec.c (lang_specific_spec_functions): New.
+
2002-11-02 Toon Moene <toon@moene.indiv.nluug.nl>
* g77.texi: Correct documentation on generating C++ prototypes
diff --git a/gcc/f/g77spec.c b/gcc/f/g77spec.c
index 6aea81b3c47..1bf20d266b4 100644
--- a/gcc/f/g77spec.c
+++ b/gcc/f/g77spec.c
@@ -562,3 +562,9 @@ int lang_specific_pre_link () /* Not used for F77. */
/* Number of extra output files that lang_specific_pre_link may generate. */
int lang_specific_extra_outfiles = 0; /* Not used for F77. */
+
+/* Table of language-specific spec functions. */
+const struct spec_function lang_specific_spec_functions[] =
+{
+ { 0, 0 }
+};
diff --git a/gcc/f/invoke.texi b/gcc/f/invoke.texi
index f07df02cc5c..58710ce0eb1 100644
--- a/gcc/f/invoke.texi
+++ b/gcc/f/invoke.texi
@@ -1656,26 +1656,21 @@ but possibly slower.
@item -fno-rerun-loop-opt
@cindex -fno-rerun-loop-opt option
@cindex options, -fno-rerun-loop-opt
-@emph{Version info:}
-These options are not supported by
-versions of @command{g77} based on @command{gcc} version 2.8.
+In general, the optimizations enabled with these options will lead to
+faster code being generated by GNU Fortran; hence they are enabled by default
+when issuing the @command{g77} command.
-Each of these might improve performance on some code.
+@option{-fmove-all-movables} and @option{-freduce-all-givs} will enable
+loop optimization to move all loop-invariant index computations in nested
+loops over multi-rank array dummy arguments out of these loops.
-Analysis of Fortran code optimization and the resulting
-optimizations triggered by the above options were
-contributed by Toon Moene (@email{toon@@moene.indiv.nluug.nl}).
+@option{-frerun-loop-opt} will move offset calculations resulting
+from the fact that Fortran arrays by default have a lower bound of 1
+out of the loops.
These three options are intended to be removed someday, once
-they have helped determine the efficacy of various
-approaches to improving the performance of Fortran code.
-
-Please let us know how use of these options affects
-the performance of your production code.
-We're particularly interested in code that runs faster
-when these options are @emph{disabled}, and in
-non-Fortran code that benefits when they are
-@emph{enabled} via the above @command{gcc} command-line options.
+loop optimization is sufficiently advanced to perform all those
+transformations without help from these options.
@end table
@xref{Optimize Options,,Options That Control Optimization,
diff --git a/gcc/f/news.texi b/gcc/f/news.texi
index 24cec0aded5..2d0dc0f49ef 100644
--- a/gcc/f/news.texi
+++ b/gcc/f/news.texi
@@ -10,7 +10,7 @@
@c in the standalone derivations of this file (e.g. NEWS).
@set copyrights-news 1995,1996,1997,1998,1999,2000,2001,2002
-@set last-update-news 2002-11-02
+@set last-update-news 2002-11-19
@include root.texi
@@ -181,6 +181,8 @@ gave wrong results)
(libf2c) DATE_AND_TIME milliseconds field inactive on Windows
@item 7388
Incorrect output with 0-based array of characters
+@item 8587
+Double complex zero ** double precision number -> NaN instead of zero
@end table
@item
Richard Henderson (@email{rth@@redhat.com}) analysed and improved the handling
diff --git a/gcc/gcc.c b/gcc/gcc.c
index e1422553ef7..5332e875dc9 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -267,11 +267,6 @@ static struct rusage rus, prus;
struct path_prefix;
static void init_spec PARAMS ((void));
-#ifndef VMS
-static char **split_directories PARAMS ((const char *, int *));
-static void free_split_directories PARAMS ((char **));
-static char *make_relative_prefix PARAMS ((const char *, const char *, const char *));
-#endif /* VMS */
static void store_arg PARAMS ((const char *, int, int));
static char *load_specs PARAMS ((const char *));
static void read_specs PARAMS ((const char *, int));
@@ -292,6 +287,9 @@ static void delete_failure_queue PARAMS ((void));
static void clear_failure_queue PARAMS ((void));
static int check_live_switch PARAMS ((int, int));
static const char *handle_braces PARAMS ((const char *));
+static const struct spec_function *lookup_spec_function PARAMS ((const char *));
+static const char *eval_spec_function PARAMS ((const char *, const char *));
+static const char *handle_spec_function PARAMS ((const char *));
static char *save_string PARAMS ((const char *, int));
static void set_collect_gcc_options PARAMS ((void));
static int do_spec_1 PARAMS ((const char *, int, const char *));
@@ -317,6 +315,7 @@ static void add_assembler_option PARAMS ((const char *, int));
static void add_linker_option PARAMS ((const char *, int));
static void process_command PARAMS ((int, const char *const *));
static int execute PARAMS ((void));
+static void alloc_args PARAMS ((void));
static void clear_args PARAMS ((void));
static void fatal_error PARAMS ((int));
#ifdef ENABLE_SHARED_LIBGCC
@@ -327,6 +326,8 @@ static void init_gcc_specs PARAMS ((struct obstack *,
#if defined(HAVE_TARGET_OBJECT_SUFFIX) || defined(HAVE_TARGET_EXECUTABLE_SUFFIX)
static const char *convert_filename PARAMS ((const char *, int, int));
#endif
+
+static const char *if_exists_spec_function PARAMS ((int, const char **));
/* The Specs Language
@@ -451,6 +452,12 @@ or with constant text in a single argument.
%* substitute the variable part of a matched option. (See below.)
Note that each comma in the substituted string is replaced by
a single space.
+ %:function(args)
+ Call the named function FUNCTION, passing it ARGS. ARGS is
+ first processed as a nested spec string, then split into an
+ argument vector in the usual fashion. The function returns
+ a string which is processed as if it had appeared literally
+ as part of the current spec.
%{S} substitutes the -S switch, if that switch was given to CC.
If that switch was not specified, this substitutes nothing.
Here S is a metasyntactic variable.
@@ -1450,6 +1457,16 @@ static struct spec_list *extra_specs = (struct spec_list *) 0;
static struct spec_list *specs = (struct spec_list *) 0;
+/* List of static spec functions. */
+
+static const struct spec_function static_spec_functions[] =
+{
+ { "if-exists", if_exists_spec_function },
+ { 0, 0 }
+};
+
+static int processing_spec_function;
+
/* Add appropriate libgcc specs to OBSTACK, taking into account
various permutations of -shared-libgcc, -shared, and such. */
@@ -1721,6 +1738,15 @@ static int signal_count;
static const char *programname;
+/* Allocate the argument vector. */
+
+static void
+alloc_args ()
+{
+ argbuf_length = 10;
+ argbuf = (const char **) xmalloc (argbuf_length * sizeof (const char *));
+}
+
/* Clear out the vector of arguments (after a command is executed). */
static void
@@ -2261,246 +2287,6 @@ putenv_from_prefixes (paths, env_var)
putenv (build_search_list (paths, env_var, 1));
}
-#ifndef VMS
-
-/* FIXME: the location independence code for VMS is hairier than this,
- and hasn't been written. */
-
-/* Split a filename into component directories. */
-
-static char **
-split_directories (name, ptr_num_dirs)
- const char *name;
- int *ptr_num_dirs;
-{
- int num_dirs = 0;
- char **dirs;
- const char *p, *q;
- int ch;
-
- /* Count the number of directories. Special case MSDOS disk names as part
- of the initial directory. */
- p = name;
-#ifdef HAVE_DOS_BASED_FILE_SYSTEM
- if (name[1] == ':' && IS_DIR_SEPARATOR (name[2]))
- {
- p += 3;
- num_dirs++;
- }
-#endif /* HAVE_DOS_BASED_FILE_SYSTEM */
-
- while ((ch = *p++) != '\0')
- {
- if (IS_DIR_SEPARATOR (ch))
- {
- num_dirs++;
- while (IS_DIR_SEPARATOR (*p))
- p++;
- }
- }
-
- dirs = (char **) xmalloc (sizeof (char *) * (num_dirs + 2));
-
- /* Now copy the directory parts. */
- num_dirs = 0;
- p = name;
-#ifdef HAVE_DOS_BASED_FILE_SYSTEM
- if (name[1] == ':' && IS_DIR_SEPARATOR (name[2]))
- {
- dirs[num_dirs++] = save_string (p, 3);
- p += 3;
- }
-#endif /* HAVE_DOS_BASED_FILE_SYSTEM */
-
- q = p;
- while ((ch = *p++) != '\0')
- {
- if (IS_DIR_SEPARATOR (ch))
- {
- while (IS_DIR_SEPARATOR (*p))
- p++;
-
- dirs[num_dirs++] = save_string (q, p - q);
- q = p;
- }
- }
-
- if (p - 1 - q > 0)
- dirs[num_dirs++] = save_string (q, p - 1 - q);
-
- dirs[num_dirs] = NULL;
- if (ptr_num_dirs)
- *ptr_num_dirs = num_dirs;
-
- return dirs;
-}
-
-/* Release storage held by split directories. */
-
-static void
-free_split_directories (dirs)
- char **dirs;
-{
- int i = 0;
-
- while (dirs[i] != NULL)
- free (dirs[i++]);
-
- free ((char *) dirs);
-}
-
-/* Given three strings PROGNAME, BIN_PREFIX, PREFIX, return a string that gets
- to PREFIX starting with the directory portion of PROGNAME and a relative
- pathname of the difference between BIN_PREFIX and PREFIX.
-
- For example, if BIN_PREFIX is /alpha/beta/gamma/gcc/delta, PREFIX is
- /alpha/beta/gamma/omega/, and PROGNAME is /red/green/blue/gcc, then this
- function will return /red/green/blue/../omega.
-
- If no relative prefix can be found, return NULL. */
-
-static char *
-make_relative_prefix (progname, bin_prefix, prefix)
- const char *progname;
- const char *bin_prefix;
- const char *prefix;
-{
- char **prog_dirs, **bin_dirs, **prefix_dirs;
- int prog_num, bin_num, prefix_num, std_loc_p;
- int i, n, common;
-
- prog_dirs = split_directories (progname, &prog_num);
- bin_dirs = split_directories (bin_prefix, &bin_num);
-
- /* If there is no full pathname, try to find the program by checking in each
- of the directories specified in the PATH environment variable. */
- if (prog_num == 1)
- {
- char *temp;
-
- GET_ENVIRONMENT (temp, "PATH");
- if (temp)
- {
- char *startp, *endp, *nstore;
- size_t prefixlen = strlen (temp) + 1;
- if (prefixlen < 2)
- prefixlen = 2;
-
- nstore = (char *) alloca (prefixlen + strlen (progname) + 1);
-
- startp = endp = temp;
- while (1)
- {
- if (*endp == PATH_SEPARATOR || *endp == 0)
- {
- if (endp == startp)
- {
- nstore[0] = '.';
- nstore[1] = DIR_SEPARATOR;
- nstore[2] = '\0';
- }
- else
- {
- strncpy (nstore, startp, endp - startp);
- if (! IS_DIR_SEPARATOR (endp[-1]))
- {
- nstore[endp - startp] = DIR_SEPARATOR;
- nstore[endp - startp + 1] = 0;
- }
- else
- nstore[endp - startp] = 0;
- }
- strcat (nstore, progname);
- if (! access (nstore, X_OK)
-#ifdef HAVE_HOST_EXECUTABLE_SUFFIX
- || ! access (strcat (nstore, HOST_EXECUTABLE_SUFFIX), X_OK)
-#endif
- )
- {
- free_split_directories (prog_dirs);
- progname = nstore;
- prog_dirs = split_directories (progname, &prog_num);
- break;
- }
-
- if (*endp == 0)
- break;
- endp = startp = endp + 1;
- }
- else
- endp++;
- }
- }
- }
-
- /* Remove the program name from comparison of directory names. */
- prog_num--;
-
- /* Determine if the compiler is installed in the standard location, and if
- so, we don't need to specify relative directories. Also, if argv[0]
- doesn't contain any directory specifiers, there is not much we can do. */
- std_loc_p = 0;
- if (prog_num == bin_num)
- {
- for (i = 0; i < bin_num; i++)
- {
- if (strcmp (prog_dirs[i], bin_dirs[i]) != 0)
- break;
- }
-
- if (prog_num <= 0 || i == bin_num)
- {
- std_loc_p = 1;
- free_split_directories (prog_dirs);
- free_split_directories (bin_dirs);
- prog_dirs = bin_dirs = (char **) 0;
- return NULL;
- }
- }
-
- prefix_dirs = split_directories (prefix, &prefix_num);
-
- /* Find how many directories are in common between bin_prefix & prefix. */
- n = (prefix_num < bin_num) ? prefix_num : bin_num;
- for (common = 0; common < n; common++)
- {
- if (strcmp (bin_dirs[common], prefix_dirs[common]) != 0)
- break;
- }
-
- /* If there are no common directories, there can be no relative prefix. */
- if (common == 0)
- {
- free_split_directories (prog_dirs);
- free_split_directories (bin_dirs);
- free_split_directories (prefix_dirs);
- return NULL;
- }
-
- /* Build up the pathnames in argv[0]. */
- for (i = 0; i < prog_num; i++)
- obstack_grow (&obstack, prog_dirs[i], strlen (prog_dirs[i]));
-
- /* Now build up the ..'s. */
- for (i = common; i < n; i++)
- {
- obstack_grow (&obstack, DIR_UP, sizeof (DIR_UP) - 1);
- obstack_1grow (&obstack, DIR_SEPARATOR);
- }
-
- /* Put in directories to move over to prefix. */
- for (i = common; i < prefix_num; i++)
- obstack_grow (&obstack, prefix_dirs[i], strlen (prefix_dirs[i]));
-
- free_split_directories (prog_dirs);
- free_split_directories (bin_dirs);
- free_split_directories (prefix_dirs);
-
- obstack_1grow (&obstack, '\0');
- return obstack_finish (&obstack);
-}
-#endif /* VMS */
-
/* Check whether NAME can be accessed in MODE. This is like access,
except that it never considers directories to be executable. */
@@ -2764,6 +2550,9 @@ execute ()
struct command *commands; /* each command buffer with above info. */
+ if (processing_spec_function)
+ abort ();
+
/* Count # of piped commands. */
for (n_commands = 1, i = 0; i < argbuf_index; i++)
if (strcmp (argbuf[i], "|") == 0)
@@ -2854,6 +2643,33 @@ execute ()
#endif /* DEBUG */
}
+#ifdef ENABLE_VALGRIND_CHECKING
+ /* Run the each command through valgrind. To simplifiy prepending the
+ path to valgrind and the option "-q" (for quiet operation unless
+ something triggers), we allocate a separate argv array. */
+
+ for (i = 0; i < n_commands; i++)
+ {
+ const char **argv;
+ int argc;
+ int j;
+
+ for (argc = 0; commands[i].argv[argc] != NULL; argc++)
+ ;
+
+ argv = alloca ((argc + 3) * sizeof (char *));
+
+ argv[0] = VALGRIND_PATH;
+ argv[1] = "-q";
+ for (j = 2; j < argc + 2; j++)
+ argv[j] = commands[i].argv[j - 2];
+ argv[j] = NULL;
+
+ commands[i].argv = argv;
+ commands[i].prog = argv[0];
+ }
+#endif
+
/* Run each piped subprocess. */
for (i = 0; i < n_commands; i++)
@@ -5133,6 +4949,12 @@ do_spec_1 (spec, inswitch, soft_matched_part)
return -1;
break;
+ case ':':
+ p = handle_spec_function (p);
+ if (p == 0)
+ return -1;
+ break;
+
case '%':
obstack_1grow (&obstack, '%');
break;
@@ -5326,10 +5148,179 @@ do_spec_1 (spec, inswitch, soft_matched_part)
arg_going = 1;
}
- /* End of string. */
+ /* End of string. If we are processing a spec function, we need to
+ end any pending argument. */
+ if (processing_spec_function && arg_going)
+ {
+ obstack_1grow (&obstack, 0);
+ string = obstack_finish (&obstack);
+ if (this_is_library_file)
+ string = find_file (string);
+ store_arg (string, delete_this_arg, this_is_output_file);
+ if (this_is_output_file)
+ outfiles[input_file_number] = string;
+ arg_going = 0;
+ }
+
return 0;
}
+/* Look up a spec function. */
+
+static const struct spec_function *
+lookup_spec_function (name)
+ const char *name;
+{
+ static const struct spec_function * const spec_function_tables[] =
+ {
+ static_spec_functions,
+ lang_specific_spec_functions,
+ };
+ const struct spec_function *sf;
+ unsigned int i;
+
+ for (i = 0; i < ARRAY_SIZE (spec_function_tables); i++)
+ {
+ for (sf = spec_function_tables[i]; sf->name != NULL; sf++)
+ if (strcmp (sf->name, name) == 0)
+ return sf;
+ }
+
+ return NULL;
+}
+
+/* Evaluate a spec function. */
+
+static const char *
+eval_spec_function (func, args)
+ const char *func, *args;
+{
+ const struct spec_function *sf;
+ const char *funcval;
+
+ /* Saved spec processing context. */
+ int save_argbuf_index;
+ int save_argbuf_length;
+ const char **save_argbuf;
+
+ int save_arg_going;
+ int save_delete_this_arg;
+ int save_this_is_output_file;
+ int save_this_is_library_file;
+ int save_input_from_pipe;
+ const char *save_suffix_subst;
+
+
+ sf = lookup_spec_function (func);
+ if (sf == NULL)
+ fatal ("unknown spec function `%s'", func);
+
+ /* Push the spec processing context. */
+ save_argbuf_index = argbuf_index;
+ save_argbuf_length = argbuf_length;
+ save_argbuf = argbuf;
+
+ save_arg_going = arg_going;
+ save_delete_this_arg = delete_this_arg;
+ save_this_is_output_file = this_is_output_file;
+ save_this_is_library_file = this_is_library_file;
+ save_input_from_pipe = input_from_pipe;
+ save_suffix_subst = suffix_subst;
+
+ /* Create a new spec processing context, and build the function
+ arguments. */
+
+ alloc_args ();
+ if (do_spec_2 (args) < 0)
+ fatal ("error in args to spec function `%s'", func);
+
+ /* argbuf_index is an index for the next argument to be inserted, and
+ so contains the count of the args already inserted. */
+
+ funcval = (*sf->func) (argbuf_index, argbuf);
+
+ /* Pop the spec processing context. */
+ argbuf_index = save_argbuf_index;
+ argbuf_length = save_argbuf_length;
+ free (argbuf);
+ argbuf = save_argbuf;
+
+ arg_going = save_arg_going;
+ delete_this_arg = save_delete_this_arg;
+ this_is_output_file = save_this_is_output_file;
+ this_is_library_file = save_this_is_library_file;
+ input_from_pipe = save_input_from_pipe;
+ suffix_subst = save_suffix_subst;
+
+ return funcval;
+}
+
+/* Handle a spec function call of the form:
+
+ %:function(args)
+
+ ARGS is processed as a spec in a separate context and split into an
+ argument vector in the normal fashion. The function returns a string
+ containing a spec which we then process in the caller's context, or
+ NULL if no processing is required. */
+
+static const char *
+handle_spec_function (p)
+ const char *p;
+{
+ char *func, *args;
+ const char *endp, *funcval;
+ int count;
+
+ processing_spec_function++;
+
+ /* Get the function name. */
+ for (endp = p; *endp != '\0'; endp++)
+ {
+ if (*endp == '(') /* ) */
+ break;
+ /* Only allow [A-Za-z0-9], -, and _ in function names. */
+ if (!ISALNUM (*endp) && !(*endp == '-' || *endp == '_'))
+ fatal ("malformed spec function name");
+ }
+ if (*endp != '(') /* ) */
+ fatal ("no arguments for spec function");
+ func = save_string (p, endp - p);
+ p = ++endp;
+
+ /* Get the arguments. */
+ for (count = 0; *endp != '\0'; endp++)
+ {
+ /* ( */
+ if (*endp == ')')
+ {
+ if (count == 0)
+ break;
+ count--;
+ }
+ else if (*endp == '(') /* ) */
+ count++;
+ }
+ /* ( */
+ if (*endp != ')')
+ fatal ("malformed spec function arguments");
+ args = save_string (p, endp - p);
+ p = ++endp;
+
+ /* p now points to just past the end of the spec function expression. */
+
+ funcval = eval_spec_function (func, args);
+ if (funcval != NULL && do_spec_1 (funcval, 0, NULL) < 0)
+ p = NULL;
+
+ free (func);
+ free (args);
+
+ processing_spec_function--;
+
+ return p;
+}
+
/* Return 0 if we call do_spec_1 and that returns -1. */
static const char *
@@ -5913,8 +5904,8 @@ main (argc, argv)
signal (SIGCHLD, SIG_DFL);
#endif
- argbuf_length = 10;
- argbuf = (const char **) xmalloc (argbuf_length * sizeof (const char *));
+ /* Allocate the argument vector. */
+ alloc_args ();
obstack_init (&obstack);
@@ -7275,3 +7266,23 @@ print_multilib_info ()
++p;
}
}
+
+/* if-exists built-in spec function.
+
+ Checks to see if the file specified by the absolute pathname in
+ ARGS exists. Returns that pathname if found.
+
+ The usual use for this function is to check for a library file
+ (whose name has been expanded with %s). */
+
+static const char *
+if_exists_spec_function (argc, argv)
+ int argc;
+ const char **argv;
+{
+ /* Must have only one argument. */
+ if (argc == 1 && IS_ABSOLUTE_PATHNAME (argv[0]) && ! access (argv[0], R_OK))
+ return argv[0];
+
+ return NULL;
+}
diff --git a/gcc/gcc.h b/gcc/gcc.h
index 77033879631..feab0ef0710 100644
--- a/gcc/gcc.h
+++ b/gcc/gcc.h
@@ -23,6 +23,14 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "version.h"
+/* The mapping of a spec function name to the C function that
+ implements it. */
+struct spec_function
+{
+ const char *name;
+ const char *(*func) PARAMS ((int, const char **));
+};
+
/* These are exported by gcc.c. */
extern int do_spec PARAMS ((const char *));
extern void record_temp_file PARAMS ((const char *, int, int));
@@ -48,6 +56,9 @@ extern int n_infiles;
/* Number of extra output files that lang_specific_pre_link may generate. */
extern int lang_specific_extra_outfiles;
+/* Table of language-specific spec functions. */
+extern const struct spec_function lang_specific_spec_functions[];
+
/* A vector of corresponding output files is made up later. */
extern const char **outfiles;
diff --git a/gcc/gccspec.c b/gcc/gccspec.c
index 79f3d667d5e..6e538b1b744 100644
--- a/gcc/gccspec.c
+++ b/gcc/gccspec.c
@@ -101,3 +101,9 @@ lang_specific_pre_link ()
/* Number of extra output files that lang_specific_pre_link may generate. */
int lang_specific_extra_outfiles = 0; /* Not used for C. */
+
+/* Table of language-specific spec functions. */
+const struct spec_function lang_specific_spec_functions[] =
+{
+ { 0, 0 }
+};
diff --git a/gcc/gcse.c b/gcc/gcse.c
index bb738e2dd8f..9e4cccb136e 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -5294,7 +5294,7 @@ gcse_emit_move_after (src, dest, insn)
else
eqv = SET_SRC (set);
- set_unique_reg_note (new, REG_EQUAL, copy_insn_1 (src));
+ set_unique_reg_note (new, REG_EQUAL, copy_insn_1 (eqv));
return new;
}
diff --git a/gcc/ggc-common.c b/gcc/ggc-common.c
index db7cece5e2d..007bf4666cf 100644
--- a/gcc/ggc-common.c
+++ b/gcc/ggc-common.c
@@ -31,6 +31,13 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
# include <sys/mman.h>
#endif
+#ifdef ENABLE_VALGRIND_CHECKING
+#include <valgrind.h>
+#else
+/* Avoid #ifdef:s when we can help it. */
+#define VALGRIND_DISCARD(x)
+#endif
+
/* Statistics about the allocation. */
static ggc_statistics *ggc_stats;
@@ -123,10 +130,36 @@ ggc_realloc (x, size)
old_size = ggc_get_size (x);
if (size <= old_size)
- return x;
+ {
+ /* Mark the unwanted memory as unaccessible. We also need to make
+ the "new" size accessible, since ggc_get_size returns the size of
+ the pool, not the size of the individually allocated object, the
+ size which was previously made accessible. Unfortunately, we
+ don't know that previously allocated size. Without that
+ knowledge we have to lose some initialization-tracking for the
+ old parts of the object. An alternative is to mark the whole
+ old_size as reachable, but that would lose tracking of writes
+ after the end of the object (by small offsets). Discard the
+ handle to avoid handle leak. */
+ VALGRIND_DISCARD (VALGRIND_MAKE_NOACCESS ((char *) x + size,
+ old_size - size));
+ VALGRIND_DISCARD (VALGRIND_MAKE_READABLE (x, size));
+ return x;
+ }
r = ggc_alloc (size);
+
+ /* Since ggc_get_size returns the size of the pool, not the size of the
+ individually allocated object, we'd access parts of the old object
+ that were marked invalid with the memcpy below. We lose a bit of the
+ initialization-tracking since some of it may be uninitialized. */
+ VALGRIND_DISCARD (VALGRIND_MAKE_READABLE (x, old_size));
+
memcpy (r, x, old_size);
+
+ /* The old object is not supposed to be used anymore. */
+ VALGRIND_DISCARD (VALGRIND_MAKE_NOACCESS (x, old_size));
+
return r;
}
diff --git a/gcc/ggc-page.c b/gcc/ggc-page.c
index 188b19639f2..aaab37c38c7 100644
--- a/gcc/ggc-page.c
+++ b/gcc/ggc-page.c
@@ -29,6 +29,12 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "ggc.h"
#include "timevar.h"
#include "params.h"
+#ifdef ENABLE_VALGRIND_CHECKING
+#include <valgrind.h>
+#else
+/* Avoid #ifdef:s when we can help it. */
+#define VALGRIND_DISCARD(x)
+#endif
/* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a
file open. Prefer either to valloc. */
@@ -536,6 +542,11 @@ alloc_anon (pref, size)
/* Remember that we allocated this memory. */
G.bytes_mapped += size;
+ /* Pretend we don't have access to the allocated pages. We'll enable
+ access to smaller pieces of the area in ggc_alloc. Discard the
+ handle to avoid handle leak. */
+ VALGRIND_DISCARD (VALGRIND_MAKE_NOACCESS (page, size));
+
return page;
}
#endif
@@ -762,6 +773,10 @@ free_page (entry)
"Deallocating page at %p, data %p-%p\n", (PTR) entry,
entry->page, entry->page + entry->bytes - 1);
+ /* Mark the page as inaccessible. Discard the handle to avoid handle
+ leak. */
+ VALGRIND_DISCARD (VALGRIND_MAKE_NOACCESS (entry->page, entry->bytes));
+
set_page_table_entry (entry->page, NULL);
#ifdef USING_MALLOC_PAGE_GROUPS
@@ -955,11 +970,27 @@ ggc_alloc (size)
result = entry->page + object_offset;
#ifdef ENABLE_GC_CHECKING
+ /* Keep poisoning-by-writing-0xaf the object, in an attempt to keep the
+ exact same semantics in presence of memory bugs, regardless of
+ ENABLE_VALGRIND_CHECKING. We override this request below. Drop the
+ handle to avoid handle leak. */
+ VALGRIND_DISCARD (VALGRIND_MAKE_WRITABLE (result, OBJECT_SIZE (order)));
+
/* `Poison' the entire allocated object, including any padding at
the end. */
memset (result, 0xaf, OBJECT_SIZE (order));
+
+ /* Make the bytes after the end of the object unaccessible. Discard the
+ handle to avoid handle leak. */
+ VALGRIND_DISCARD (VALGRIND_MAKE_NOACCESS ((char *) result + size,
+ OBJECT_SIZE (order) - size));
#endif
+ /* Tell Valgrind that the memory is there, but its content isn't
+ defined. The bytes at the end of the object are still marked
+ unaccessible. */
+ VALGRIND_DISCARD (VALGRIND_MAKE_WRITABLE (result, size));
+
/* Keep track of how many bytes are being allocated. This
information is used in deciding when to collect. */
G.allocated += OBJECT_SIZE (order);
@@ -1449,7 +1480,19 @@ poison_pages ()
word = i / HOST_BITS_PER_LONG;
bit = i % HOST_BITS_PER_LONG;
if (((p->in_use_p[word] >> bit) & 1) == 0)
- memset (p->page + i * size, 0xa5, size);
+ {
+ char *object = p->page + i * size;
+
+ /* Keep poison-by-write when we expect to use Valgrind,
+ so the exact same memory semantics is kept, in case
+ there are memory errors. We override this request
+ below. */
+ VALGRIND_DISCARD (VALGRIND_MAKE_WRITABLE (object, size));
+ memset (object, 0xa5, size);
+
+ /* Drop the handle to avoid handle leak. */
+ VALGRIND_DISCARD (VALGRIND_MAKE_NOACCESS (object, size));
+ }
}
}
}
diff --git a/gcc/global.c b/gcc/global.c
index dfbe0388d01..471e42e8fd9 100644
--- a/gcc/global.c
+++ b/gcc/global.c
@@ -1192,6 +1192,11 @@ find_reg (num, losers, alt_regs_p, accept_call_clobbered, retrying)
/* Don't use a reg no good for this pseudo. */
&& ! TEST_HARD_REG_BIT (used2, regno)
&& HARD_REGNO_MODE_OK (regno, mode)
+ /* The code below assumes that we need only a single
+ register, but the check of allocno[num].size above
+ was not enough. Sometimes we need more than one
+ register for a single-word value. */
+ && HARD_REGNO_NREGS (regno, mode) == 1
&& (allocno[num].calls_crossed == 0
|| accept_call_clobbered
|| ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode))
diff --git a/gcc/gthr-dce.h b/gcc/gthr-dce.h
index 3577ce5ec91..622e465a795 100644
--- a/gcc/gthr-dce.h
+++ b/gcc/gthr-dce.h
@@ -116,7 +116,7 @@ static void *thread_local_storage = NULL;
/* Initialize the threads subsystem. */
static inline int
-__gthread_objc_init_thread_system(void)
+__gthread_objc_init_thread_system (void)
{
if (__gthread_active_p ())
/* Initialize the thread storage key */
@@ -127,7 +127,7 @@ __gthread_objc_init_thread_system(void)
/* Close the threads subsystem. */
static inline int
-__gthread_objc_close_thread_system(void)
+__gthread_objc_close_thread_system (void)
{
if (__gthread_active_p ())
return 0;
@@ -139,7 +139,7 @@ __gthread_objc_close_thread_system(void)
/* Create a new thread of execution. */
static inline objc_thread_t
-__gthread_objc_thread_detach(void (*func)(void *), void *arg)
+__gthread_objc_thread_detach (void (*func)(void *), void *arg)
{
objc_thread_t thread_id;
pthread_t new_thread_handle;
@@ -147,12 +147,12 @@ __gthread_objc_thread_detach(void (*func)(void *), void *arg)
if (!__gthread_active_p ())
return NULL;
- if ( !(pthread_create(&new_thread_handle, pthread_attr_default,
- (void *)func, arg)) )
+ if (!(pthread_create (&new_thread_handle, pthread_attr_default,
+ (void *) func, arg)))
{
/* ??? May not work! (64bit) */
- thread_id = *(objc_thread_t *)&new_thread_handle;
- pthread_detach(&new_thread_handle); /* Fully detach thread. */
+ thread_id = *(objc_thread_t *) &new_thread_handle;
+ pthread_detach (&new_thread_handle); /* Fully detach thread. */
}
else
thread_id = NULL;
@@ -162,7 +162,7 @@ __gthread_objc_thread_detach(void (*func)(void *), void *arg)
/* Set the current thread's priority. */
static inline int
-__gthread_objc_thread_set_priority(int priority)
+__gthread_objc_thread_set_priority (int priority)
{
int sys_priority = 0;
@@ -184,7 +184,7 @@ __gthread_objc_thread_set_priority(int priority)
}
/* Change the priority. */
- if (pthread_setprio(pthread_self(), sys_priority) >= 0)
+ if (pthread_setprio (pthread_self (), sys_priority) >= 0)
return 0;
else
/* Failed */
@@ -193,13 +193,13 @@ __gthread_objc_thread_set_priority(int priority)
/* Return the current thread's priority. */
static inline int
-__gthread_objc_thread_get_priority(void)
+__gthread_objc_thread_get_priority (void)
{
int sys_priority;
if (__gthread_active_p ())
{
- if ((sys_priority = pthread_getprio(pthread_self())) >= 0)
+ if ((sys_priority = pthread_getprio (pthread_self ())) >= 0)
{
if (sys_priority >= PRI_FG_MIN_NP
&& sys_priority <= PRI_FG_MAX_NP)
@@ -219,19 +219,19 @@ __gthread_objc_thread_get_priority(void)
/* Yield our process time to another thread. */
static inline void
-__gthread_objc_thread_yield(void)
+__gthread_objc_thread_yield (void)
{
if (__gthread_active_p ())
- pthread_yield();
+ pthread_yield ();
}
/* Terminate the current thread. */
static inline int
-__gthread_objc_thread_exit(void)
+__gthread_objc_thread_exit (void)
{
if (__gthread_active_p ())
/* exit the thread */
- pthread_exit(&__objc_thread_exit_status);
+ pthread_exit (&__objc_thread_exit_status);
/* Failed if we reached here */
return -1;
@@ -239,24 +239,24 @@ __gthread_objc_thread_exit(void)
/* Returns an integer value which uniquely describes a thread. */
static inline objc_thread_t
-__gthread_objc_thread_id(void)
+__gthread_objc_thread_id (void)
{
if (__gthread_active_p ())
{
- pthread_t self = pthread_self();
+ pthread_t self = pthread_self ();
return (objc_thread_t) pthread_getunique_np (&self);
}
else
- return (objc_thread_t)1;
+ return (objc_thread_t) 1;
}
/* Sets the thread's local storage pointer. */
static inline int
-__gthread_objc_thread_set_data(void *value)
+__gthread_objc_thread_set_data (void *value)
{
if (__gthread_active_p ())
- return pthread_setspecific(_objc_thread_storage, value);
+ return pthread_setspecific (_objc_thread_storage, value);
else
{
thread_local_storage = value;
@@ -266,13 +266,13 @@ __gthread_objc_thread_set_data(void *value)
/* Returns the thread's local storage pointer. */
static inline void *
-__gthread_objc_thread_get_data(void)
+__gthread_objc_thread_get_data (void)
{
void *value = NULL;
if (__gthread_active_p ())
{
- if ( !(pthread_getspecific(_objc_thread_storage, &value)) )
+ if (!(pthread_getspecific (_objc_thread_storage, &value)))
return value;
return NULL;
@@ -285,16 +285,16 @@ __gthread_objc_thread_get_data(void)
/* Allocate a mutex. */
static inline int
-__gthread_objc_mutex_allocate(objc_mutex_t mutex)
+__gthread_objc_mutex_allocate (objc_mutex_t mutex)
{
if (__gthread_active_p ())
{
- mutex->backend = objc_malloc(sizeof(pthread_mutex_t));
+ mutex->backend = objc_malloc (sizeof (pthread_mutex_t));
- if (pthread_mutex_init((pthread_mutex_t *)mutex->backend,
- pthread_mutexattr_default))
+ if (pthread_mutex_init ((pthread_mutex_t *) mutex->backend,
+ pthread_mutexattr_default))
{
- objc_free(mutex->backend);
+ objc_free (mutex->backend);
mutex->backend = NULL;
return -1;
}
@@ -305,14 +305,14 @@ __gthread_objc_mutex_allocate(objc_mutex_t mutex)
/* Deallocate a mutex. */
static inline int
-__gthread_objc_mutex_deallocate(objc_mutex_t mutex)
+__gthread_objc_mutex_deallocate (objc_mutex_t mutex)
{
if (__gthread_active_p ())
{
- if (pthread_mutex_destroy((pthread_mutex_t *)mutex->backend))
+ if (pthread_mutex_destroy ((pthread_mutex_t *) mutex->backend))
return -1;
- objc_free(mutex->backend);
+ objc_free (mutex->backend);
mutex->backend = NULL;
}
@@ -321,20 +321,20 @@ __gthread_objc_mutex_deallocate(objc_mutex_t mutex)
/* Grab a lock on a mutex. */
static inline int
-__gthread_objc_mutex_lock(objc_mutex_t mutex)
+__gthread_objc_mutex_lock (objc_mutex_t mutex)
{
if (__gthread_active_p ())
- return pthread_mutex_lock((pthread_mutex_t *)mutex->backend);
+ 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)
+__gthread_objc_mutex_trylock (objc_mutex_t mutex)
{
if (__gthread_active_p ()
- && pthread_mutex_trylock((pthread_mutex_t *)mutex->backend) != 1)
+ && pthread_mutex_trylock ((pthread_mutex_t *) mutex->backend) != 1)
return -1;
return 0;
@@ -342,10 +342,10 @@ __gthread_objc_mutex_trylock(objc_mutex_t mutex)
/* Unlock the mutex */
static inline int
-__gthread_objc_mutex_unlock(objc_mutex_t mutex)
+__gthread_objc_mutex_unlock (objc_mutex_t mutex)
{
if (__gthread_active_p ())
- return pthread_mutex_unlock((pthread_mutex_t *)mutex->backend);
+ return pthread_mutex_unlock ((pthread_mutex_t *) mutex->backend);
else
return 0;
}
@@ -354,7 +354,7 @@ __gthread_objc_mutex_unlock(objc_mutex_t mutex)
/* Allocate a condition. */
static inline int
-__gthread_objc_condition_allocate(objc_condition_t condition)
+__gthread_objc_condition_allocate (objc_condition_t condition)
{
if (__gthread_active_p ())
/* Unimplemented. */
@@ -365,7 +365,7 @@ __gthread_objc_condition_allocate(objc_condition_t condition)
/* Deallocate a condition. */
static inline int
-__gthread_objc_condition_deallocate(objc_condition_t condition)
+__gthread_objc_condition_deallocate (objc_condition_t condition)
{
if (__gthread_active_p ())
/* Unimplemented. */
@@ -376,7 +376,7 @@ __gthread_objc_condition_deallocate(objc_condition_t condition)
/* Wait on the condition */
static inline int
-__gthread_objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex)
+__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex)
{
if (__gthread_active_p ())
/* Unimplemented. */
@@ -387,7 +387,7 @@ __gthread_objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex)
/* Wake up all threads waiting on this condition. */
static inline int
-__gthread_objc_condition_broadcast(objc_condition_t condition)
+__gthread_objc_condition_broadcast (objc_condition_t condition)
{
if (__gthread_active_p ())
/* Unimplemented. */
@@ -398,7 +398,7 @@ __gthread_objc_condition_broadcast(objc_condition_t condition)
/* Wake up one thread waiting on this condition. */
static inline int
-__gthread_objc_condition_signal(objc_condition_t condition)
+__gthread_objc_condition_signal (objc_condition_t condition)
{
if (__gthread_active_p ())
/* Unimplemented. */
diff --git a/gcc/gthr-posix.h b/gcc/gthr-posix.h
index 463cae07054..9149e645ceb 100644
--- a/gcc/gthr-posix.h
+++ b/gcc/gthr-posix.h
@@ -121,19 +121,19 @@ static void *thread_local_storage = NULL;
/* Initialize the threads subsystem. */
static inline int
-__gthread_objc_init_thread_system(void)
+__gthread_objc_init_thread_system (void)
{
if (__gthread_active_p ())
{
/* Initialize the thread storage key */
- if (pthread_key_create(&_objc_thread_storage, NULL) == 0)
+ if (pthread_key_create (&_objc_thread_storage, NULL) == 0)
{
/* The normal default detach state for threads is
* PTHREAD_CREATE_JOINABLE which causes threads to not die
* when you think they should. */
- if (pthread_attr_init(&_objc_thread_attribs) == 0
- && pthread_attr_setdetachstate(&_objc_thread_attribs,
- PTHREAD_CREATE_DETACHED) == 0)
+ if (pthread_attr_init (&_objc_thread_attribs) == 0
+ && pthread_attr_setdetachstate (&_objc_thread_attribs,
+ PTHREAD_CREATE_DETACHED) == 0)
return 0;
}
}
@@ -143,11 +143,11 @@ __gthread_objc_init_thread_system(void)
/* Close the threads subsystem. */
static inline int
-__gthread_objc_close_thread_system(void)
+__gthread_objc_close_thread_system (void)
{
if (__gthread_active_p ()
- && pthread_key_delete(_objc_thread_storage) == 0
- && pthread_attr_destroy(&_objc_thread_attribs) == 0)
+ && pthread_key_delete (_objc_thread_storage) == 0
+ && pthread_attr_destroy (&_objc_thread_attribs) == 0)
return 0;
return -1;
@@ -157,7 +157,7 @@ __gthread_objc_close_thread_system(void)
/* Create a new thread of execution. */
static inline objc_thread_t
-__gthread_objc_thread_detach(void (*func)(void *), void *arg)
+__gthread_objc_thread_detach (void (*func)(void *), void *arg)
{
objc_thread_t thread_id;
pthread_t new_thread_handle;
@@ -165,7 +165,7 @@ __gthread_objc_thread_detach(void (*func)(void *), void *arg)
if (!__gthread_active_p ())
return NULL;
- if ( !(pthread_create(&new_thread_handle, NULL, (void *)func, arg)) )
+ if (!(pthread_create (&new_thread_handle, NULL, (void *) func, arg)))
thread_id = (objc_thread_t) new_thread_handle;
else
thread_id = NULL;
@@ -175,47 +175,48 @@ __gthread_objc_thread_detach(void (*func)(void *), void *arg)
/* Set the current thread's priority. */
static inline int
-__gthread_objc_thread_set_priority(int priority)
+__gthread_objc_thread_set_priority (int priority)
{
- if (!__gthread_active_p())
+ if (!__gthread_active_p ())
return -1;
- else {
+ else
+ {
#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
- pthread_t thread_id = pthread_self();
- int policy;
- struct sched_param params;
- int priority_min, priority_max;
-
- if (pthread_getschedparam(thread_id, &policy, &params) == 0)
- {
- if ((priority_max = sched_get_priority_max(policy)) == -1)
- return -1;
+ pthread_t thread_id = pthread_self ();
+ int policy;
+ struct sched_param params;
+ int priority_min, priority_max;
- if ((priority_min = sched_get_priority_min(policy)) == -1)
- return -1;
+ if (pthread_getschedparam (thread_id, &policy, &params) == 0)
+ {
+ if ((priority_max = sched_get_priority_max (policy)) == -1)
+ return -1;
+
+ if ((priority_min = sched_get_priority_min (policy)) == -1)
+ return -1;
- if (priority > priority_max)
- priority = priority_max;
- else if (priority < priority_min)
- priority = priority_min;
- params.sched_priority = priority;
-
- /*
- * The solaris 7 and several other man pages incorrectly state that
- * this should be a pointer to policy but pthread.h is universally
- * at odds with this.
- */
- if (pthread_setschedparam(thread_id, policy, &params) == 0)
- return 0;
- }
+ if (priority > priority_max)
+ priority = priority_max;
+ else if (priority < priority_min)
+ priority = priority_min;
+ params.sched_priority = priority;
+
+ /*
+ * The solaris 7 and several other man pages incorrectly state that
+ * this should be a pointer to policy but pthread.h is universally
+ * at odds with this.
+ */
+ if (pthread_setschedparam (thread_id, policy, &params) == 0)
+ return 0;
+ }
#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
- return -1;
- }
+ return -1;
+ }
}
/* Return the current thread's priority. */
static inline int
-__gthread_objc_thread_get_priority(void)
+__gthread_objc_thread_get_priority (void)
{
#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
if (__gthread_active_p ())
@@ -223,7 +224,7 @@ __gthread_objc_thread_get_priority(void)
int policy;
struct sched_param params;
- if (pthread_getschedparam(pthread_self(), &policy, &params) == 0)
+ if (pthread_getschedparam (pthread_self (), &policy, &params) == 0)
return params.sched_priority;
else
return -1;
@@ -235,19 +236,19 @@ __gthread_objc_thread_get_priority(void)
/* Yield our process time to another thread. */
static inline void
-__gthread_objc_thread_yield(void)
+__gthread_objc_thread_yield (void)
{
if (__gthread_active_p ())
- sched_yield();
+ sched_yield ();
}
/* Terminate the current thread. */
static inline int
-__gthread_objc_thread_exit(void)
+__gthread_objc_thread_exit (void)
{
if (__gthread_active_p ())
/* exit the thread */
- pthread_exit(&__objc_thread_exit_status);
+ pthread_exit (&__objc_thread_exit_status);
/* Failed if we reached here */
return -1;
@@ -255,20 +256,20 @@ __gthread_objc_thread_exit(void)
/* Returns an integer value which uniquely describes a thread. */
static inline objc_thread_t
-__gthread_objc_thread_id(void)
+__gthread_objc_thread_id (void)
{
if (__gthread_active_p ())
- return (objc_thread_t) pthread_self();
+ return (objc_thread_t) pthread_self ();
else
return (objc_thread_t) 1;
}
/* Sets the thread's local storage pointer. */
static inline int
-__gthread_objc_thread_set_data(void *value)
+__gthread_objc_thread_set_data (void *value)
{
if (__gthread_active_p ())
- return pthread_setspecific(_objc_thread_storage, value);
+ return pthread_setspecific (_objc_thread_storage, value);
else
{
thread_local_storage = value;
@@ -278,10 +279,10 @@ __gthread_objc_thread_set_data(void *value)
/* Returns the thread's local storage pointer. */
static inline void *
-__gthread_objc_thread_get_data(void)
+__gthread_objc_thread_get_data (void)
{
if (__gthread_active_p ())
- return pthread_getspecific(_objc_thread_storage);
+ return pthread_getspecific (_objc_thread_storage);
else
return thread_local_storage;
}
@@ -290,15 +291,15 @@ __gthread_objc_thread_get_data(void)
/* Allocate a mutex. */
static inline int
-__gthread_objc_mutex_allocate(objc_mutex_t mutex)
+__gthread_objc_mutex_allocate (objc_mutex_t mutex)
{
if (__gthread_active_p ())
{
- mutex->backend = objc_malloc(sizeof(pthread_mutex_t));
+ mutex->backend = objc_malloc (sizeof (pthread_mutex_t));
- if (pthread_mutex_init((pthread_mutex_t *)mutex->backend, NULL))
+ if (pthread_mutex_init ((pthread_mutex_t *) mutex->backend, NULL))
{
- objc_free(mutex->backend);
+ objc_free (mutex->backend);
mutex->backend = NULL;
return -1;
}
@@ -309,7 +310,7 @@ __gthread_objc_mutex_allocate(objc_mutex_t mutex)
/* Deallocate a mutex. */
static inline int
-__gthread_objc_mutex_deallocate(objc_mutex_t mutex)
+__gthread_objc_mutex_deallocate (objc_mutex_t mutex)
{
if (__gthread_active_p ())
{
@@ -322,16 +323,16 @@ __gthread_objc_mutex_deallocate(objc_mutex_t mutex)
do
{
- count = pthread_mutex_unlock((pthread_mutex_t *)mutex->backend);
+ count = pthread_mutex_unlock ((pthread_mutex_t *) mutex->backend);
if (count < 0)
return -1;
}
while (count);
- if (pthread_mutex_destroy((pthread_mutex_t *)mutex->backend))
+ if (pthread_mutex_destroy ((pthread_mutex_t *) mutex->backend))
return -1;
- objc_free(mutex->backend);
+ objc_free (mutex->backend);
mutex->backend = NULL;
}
return 0;
@@ -339,10 +340,10 @@ __gthread_objc_mutex_deallocate(objc_mutex_t mutex)
/* Grab a lock on a mutex. */
static inline int
-__gthread_objc_mutex_lock(objc_mutex_t mutex)
+__gthread_objc_mutex_lock (objc_mutex_t mutex)
{
if (__gthread_active_p ()
- && pthread_mutex_lock((pthread_mutex_t *)mutex->backend) != 0)
+ && pthread_mutex_lock ((pthread_mutex_t *) mutex->backend) != 0)
{
return -1;
}
@@ -352,10 +353,10 @@ __gthread_objc_mutex_lock(objc_mutex_t mutex)
/* Try to grab a lock on a mutex. */
static inline int
-__gthread_objc_mutex_trylock(objc_mutex_t mutex)
+__gthread_objc_mutex_trylock (objc_mutex_t mutex)
{
if (__gthread_active_p ()
- && pthread_mutex_trylock((pthread_mutex_t *)mutex->backend) != 0)
+ && pthread_mutex_trylock ((pthread_mutex_t *) mutex->backend) != 0)
{
return -1;
}
@@ -365,10 +366,10 @@ __gthread_objc_mutex_trylock(objc_mutex_t mutex)
/* Unlock the mutex */
static inline int
-__gthread_objc_mutex_unlock(objc_mutex_t mutex)
+__gthread_objc_mutex_unlock (objc_mutex_t mutex)
{
if (__gthread_active_p ()
- && pthread_mutex_unlock((pthread_mutex_t *)mutex->backend) != 0)
+ && pthread_mutex_unlock ((pthread_mutex_t *) mutex->backend) != 0)
{
return -1;
}
@@ -380,15 +381,15 @@ __gthread_objc_mutex_unlock(objc_mutex_t mutex)
/* Allocate a condition. */
static inline int
-__gthread_objc_condition_allocate(objc_condition_t condition)
+__gthread_objc_condition_allocate (objc_condition_t condition)
{
if (__gthread_active_p ())
{
- condition->backend = objc_malloc(sizeof(pthread_cond_t));
+ condition->backend = objc_malloc (sizeof (pthread_cond_t));
- if (pthread_cond_init((pthread_cond_t *)condition->backend, NULL))
+ if (pthread_cond_init ((pthread_cond_t *) condition->backend, NULL))
{
- objc_free(condition->backend);
+ objc_free (condition->backend);
condition->backend = NULL;
return -1;
}
@@ -399,14 +400,14 @@ __gthread_objc_condition_allocate(objc_condition_t condition)
/* Deallocate a condition. */
static inline int
-__gthread_objc_condition_deallocate(objc_condition_t condition)
+__gthread_objc_condition_deallocate (objc_condition_t condition)
{
if (__gthread_active_p ())
{
- if (pthread_cond_destroy((pthread_cond_t *)condition->backend))
+ if (pthread_cond_destroy ((pthread_cond_t *) condition->backend))
return -1;
- objc_free(condition->backend);
+ objc_free (condition->backend);
condition->backend = NULL;
}
return 0;
@@ -414,31 +415,31 @@ __gthread_objc_condition_deallocate(objc_condition_t condition)
/* Wait on the condition */
static inline int
-__gthread_objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex)
+__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex)
{
if (__gthread_active_p ())
- return pthread_cond_wait((pthread_cond_t *)condition->backend,
- (pthread_mutex_t *)mutex->backend);
+ return pthread_cond_wait ((pthread_cond_t *) condition->backend,
+ (pthread_mutex_t *) mutex->backend);
else
return 0;
}
/* Wake up all threads waiting on this condition. */
static inline int
-__gthread_objc_condition_broadcast(objc_condition_t condition)
+__gthread_objc_condition_broadcast (objc_condition_t condition)
{
if (__gthread_active_p ())
- return pthread_cond_broadcast((pthread_cond_t *)condition->backend);
+ return pthread_cond_broadcast ((pthread_cond_t *) condition->backend);
else
return 0;
}
/* Wake up one thread waiting on this condition. */
static inline int
-__gthread_objc_condition_signal(objc_condition_t condition)
+__gthread_objc_condition_signal (objc_condition_t condition)
{
if (__gthread_active_p ())
- return pthread_cond_signal((pthread_cond_t *)condition->backend);
+ return pthread_cond_signal ((pthread_cond_t *) condition->backend);
else
return 0;
}
diff --git a/gcc/gthr-single.h b/gcc/gthr-single.h
index 64ff354131d..0bb4682615d 100644
--- a/gcc/gthr-single.h
+++ b/gcc/gthr-single.h
@@ -50,7 +50,7 @@ static void *thread_local_storage = NULL;
/* Initialize the threads subsystem. */
static inline int
-__gthread_objc_init_thread_system(void)
+__gthread_objc_init_thread_system (void)
{
/* No thread support available */
return -1;
@@ -58,7 +58,7 @@ __gthread_objc_init_thread_system(void)
/* Close the threads subsystem. */
static inline int
-__gthread_objc_close_thread_system(void)
+__gthread_objc_close_thread_system (void)
{
/* No thread support available */
return -1;
@@ -68,7 +68,7 @@ __gthread_objc_close_thread_system(void)
/* Create a new thread of execution. */
static inline objc_thread_t
-__gthread_objc_thread_detach(void (* func)(void *), void * UNUSED(arg))
+__gthread_objc_thread_detach (void (* func)(void *), void * UNUSED(arg))
{
/* No thread support available */
return NULL;
@@ -76,7 +76,7 @@ __gthread_objc_thread_detach(void (* func)(void *), void * UNUSED(arg))
/* Set the current thread's priority. */
static inline int
-__gthread_objc_thread_set_priority(int UNUSED(priority))
+__gthread_objc_thread_set_priority (int UNUSED(priority))
{
/* No thread support available */
return -1;
@@ -84,39 +84,39 @@ __gthread_objc_thread_set_priority(int UNUSED(priority))
/* Return the current thread's priority. */
static inline int
-__gthread_objc_thread_get_priority(void)
+__gthread_objc_thread_get_priority (void)
{
return OBJC_THREAD_INTERACTIVE_PRIORITY;
}
/* Yield our process time to another thread. */
static inline void
-__gthread_objc_thread_yield(void)
+__gthread_objc_thread_yield (void)
{
return;
}
/* Terminate the current thread. */
static inline int
-__gthread_objc_thread_exit(void)
+__gthread_objc_thread_exit (void)
{
/* No thread support available */
/* Should we really exit the program */
- /* exit(&__objc_thread_exit_status); */
+ /* exit (&__objc_thread_exit_status); */
return -1;
}
/* Returns an integer value which uniquely describes a thread. */
static inline objc_thread_t
-__gthread_objc_thread_id(void)
+__gthread_objc_thread_id (void)
{
/* No thread support, use 1. */
- return (objc_thread_t)1;
+ return (objc_thread_t) 1;
}
/* Sets the thread's local storage pointer. */
static inline int
-__gthread_objc_thread_set_data(void *value)
+__gthread_objc_thread_set_data (void *value)
{
thread_local_storage = value;
return 0;
@@ -124,7 +124,7 @@ __gthread_objc_thread_set_data(void *value)
/* Returns the thread's local storage pointer. */
static inline void *
-__gthread_objc_thread_get_data(void)
+__gthread_objc_thread_get_data (void)
{
return thread_local_storage;
}
@@ -133,21 +133,21 @@ __gthread_objc_thread_get_data(void)
/* Allocate a mutex. */
static inline int
-__gthread_objc_mutex_allocate(objc_mutex_t UNUSED(mutex))
+__gthread_objc_mutex_allocate (objc_mutex_t UNUSED(mutex))
{
return 0;
}
/* Deallocate a mutex. */
static inline int
-__gthread_objc_mutex_deallocate(objc_mutex_t UNUSED(mutex))
+__gthread_objc_mutex_deallocate (objc_mutex_t UNUSED(mutex))
{
return 0;
}
/* Grab a lock on a mutex. */
static inline int
-__gthread_objc_mutex_lock(objc_mutex_t UNUSED(mutex))
+__gthread_objc_mutex_lock (objc_mutex_t UNUSED(mutex))
{
/* There can only be one thread, so we always get the lock */
return 0;
@@ -155,7 +155,7 @@ __gthread_objc_mutex_lock(objc_mutex_t UNUSED(mutex))
/* Try to grab a lock on a mutex. */
static inline int
-__gthread_objc_mutex_trylock(objc_mutex_t UNUSED(mutex))
+__gthread_objc_mutex_trylock (objc_mutex_t UNUSED(mutex))
{
/* There can only be one thread, so we always get the lock */
return 0;
@@ -163,7 +163,7 @@ __gthread_objc_mutex_trylock(objc_mutex_t UNUSED(mutex))
/* Unlock the mutex */
static inline int
-__gthread_objc_mutex_unlock(objc_mutex_t UNUSED(mutex))
+__gthread_objc_mutex_unlock (objc_mutex_t UNUSED(mutex))
{
return 0;
}
@@ -172,36 +172,36 @@ __gthread_objc_mutex_unlock(objc_mutex_t UNUSED(mutex))
/* Allocate a condition. */
static inline int
-__gthread_objc_condition_allocate(objc_condition_t UNUSED(condition))
+__gthread_objc_condition_allocate (objc_condition_t UNUSED(condition))
{
return 0;
}
/* Deallocate a condition. */
static inline int
-__gthread_objc_condition_deallocate(objc_condition_t UNUSED(condition))
+__gthread_objc_condition_deallocate (objc_condition_t UNUSED(condition))
{
return 0;
}
/* Wait on the condition */
static inline int
-__gthread_objc_condition_wait(objc_condition_t UNUSED(condition),
- objc_mutex_t UNUSED(mutex))
+__gthread_objc_condition_wait (objc_condition_t UNUSED(condition),
+ objc_mutex_t UNUSED(mutex))
{
return 0;
}
/* Wake up all threads waiting on this condition. */
static inline int
-__gthread_objc_condition_broadcast(objc_condition_t UNUSED(condition))
+__gthread_objc_condition_broadcast (objc_condition_t UNUSED(condition))
{
return 0;
}
/* Wake up one thread waiting on this condition. */
static inline int
-__gthread_objc_condition_signal(objc_condition_t UNUSED(condition))
+__gthread_objc_condition_signal (objc_condition_t UNUSED(condition))
{
return 0;
}
diff --git a/gcc/gthr-solaris.h b/gcc/gthr-solaris.h
index 0ad6194081b..726223dbb7d 100644
--- a/gcc/gthr-solaris.h
+++ b/gcc/gthr-solaris.h
@@ -39,8 +39,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include <errno.h>
typedef thread_key_t __gthread_key_t;
-typedef struct
-{
+typedef struct {
mutex_t mutex;
int once;
} __gthread_once_t;
@@ -110,11 +109,11 @@ static void *thread_local_storage = NULL;
/* Initialize the threads subsystem. */
static inline int
-__gthread_objc_init_thread_system(void)
+__gthread_objc_init_thread_system (void)
{
/* Initialize the thread storage key */
if (__gthread_active_p ()
- && thr_keycreate(&_objc_thread_storage, NULL) == 0)
+ && thr_keycreate (&_objc_thread_storage, NULL) == 0)
return 0;
return -1;
@@ -122,7 +121,7 @@ __gthread_objc_init_thread_system(void)
/* Close the threads subsystem. */
static inline int
-__gthread_objc_close_thread_system(void)
+__gthread_objc_close_thread_system (void)
{
if (__gthread_active_p ())
return 0;
@@ -134,7 +133,7 @@ __gthread_objc_close_thread_system(void)
/* Create a new thread of execution. */
static inline objc_thread_t
-__gthread_objc_thread_detach(void (*func)(void *), void *arg)
+__gthread_objc_thread_detach (void (*func)(void *), void *arg)
{
objc_thread_t thread_id;
thread_t new_thread_id = 0;
@@ -142,10 +141,10 @@ __gthread_objc_thread_detach(void (*func)(void *), void *arg)
if (!__gthread_active_p ())
return NULL;
- if (thr_create(NULL, 0, (void *)func, arg,
- THR_DETACHED | THR_NEW_LWP,
- &new_thread_id) == 0)
- thread_id = *(objc_thread_t *)&new_thread_id;
+ if (thr_create (NULL, 0, (void *) func, arg,
+ THR_DETACHED | THR_NEW_LWP,
+ &new_thread_id) == 0)
+ thread_id = *(objc_thread_t *) &new_thread_id;
else
thread_id = NULL;
@@ -154,7 +153,7 @@ __gthread_objc_thread_detach(void (*func)(void *), void *arg)
/* Set the current thread's priority. */
static inline int
-__gthread_objc_thread_set_priority(int priority)
+__gthread_objc_thread_set_priority (int priority)
{
int sys_priority = 0;
@@ -176,7 +175,7 @@ __gthread_objc_thread_set_priority(int priority)
}
/* Change priority */
- if (thr_setprio(thr_self(), sys_priority) == 0)
+ if (thr_setprio (thr_self (), sys_priority) == 0)
return 0;
else
return -1;
@@ -184,14 +183,14 @@ __gthread_objc_thread_set_priority(int priority)
/* Return the current thread's priority. */
static inline int
-__gthread_objc_thread_get_priority(void)
+__gthread_objc_thread_get_priority (void)
{
int sys_priority;
if (!__gthread_active_p ())
return OBJC_THREAD_INTERACTIVE_PRIORITY;
- if (thr_getprio(thr_self(), &sys_priority) == 0)
+ if (thr_getprio (thr_self (), &sys_priority) == 0)
{
if (sys_priority >= 250)
return OBJC_THREAD_INTERACTIVE_PRIORITY;
@@ -206,19 +205,19 @@ __gthread_objc_thread_get_priority(void)
/* Yield our process time to another thread. */
static inline void
-__gthread_objc_thread_yield(void)
+__gthread_objc_thread_yield (void)
{
if (__gthread_active_p ())
- thr_yield();
+ thr_yield ();
}
/* Terminate the current thread. */
static inline int
-__gthread_objc_thread_exit(void)
+__gthread_objc_thread_exit (void)
{
if (__gthread_active_p ())
/* exit the thread */
- thr_exit(&__objc_thread_exit_status);
+ thr_exit (&__objc_thread_exit_status);
/* Failed if we reached here */
return -1;
@@ -226,21 +225,21 @@ __gthread_objc_thread_exit(void)
/* Returns an integer value which uniquely describes a thread. */
static inline objc_thread_t
-__gthread_objc_thread_id(void)
+__gthread_objc_thread_id (void)
{
if (__gthread_active_p ())
- return (objc_thread_t)thr_self();
+ return (objc_thread_t) thr_self ();
else
- return (objc_thread_t)1;
+ return (objc_thread_t) 1;
}
/* Sets the thread's local storage pointer. */
static inline int
-__gthread_objc_thread_set_data(void *value)
+__gthread_objc_thread_set_data (void *value)
{
if (__gthread_active_p ())
{
- if (thr_setspecific(_objc_thread_storage, value) == 0)
+ if (thr_setspecific (_objc_thread_storage, value) == 0)
return 0;
else
return -1;
@@ -254,13 +253,13 @@ __gthread_objc_thread_set_data(void *value)
/* Returns the thread's local storage pointer. */
static inline void *
-__gthread_objc_thread_get_data(void)
+__gthread_objc_thread_get_data (void)
{
void *value = NULL;
if (__gthread_active_p ())
{
- if (thr_getspecific(_objc_thread_storage, &value) == 0)
+ if (thr_getspecific (_objc_thread_storage, &value) == 0)
return value;
else
return NULL;
@@ -273,10 +272,10 @@ __gthread_objc_thread_get_data(void)
/* Allocate a mutex. */
static inline int
-__gthread_objc_mutex_allocate(objc_mutex_t mutex)
+__gthread_objc_mutex_allocate (objc_mutex_t mutex)
{
if (__gthread_active_p ()
- && mutex_init( (mutex_t *)(&(mutex->backend)), USYNC_THREAD, 0))
+ && mutex_init ((mutex_t *) (&(mutex->backend)), USYNC_THREAD, 0))
return -1;
return 0;
@@ -284,20 +283,20 @@ __gthread_objc_mutex_allocate(objc_mutex_t mutex)
/* Deallocate a mutex. */
static inline int
-__gthread_objc_mutex_deallocate(objc_mutex_t mutex)
+__gthread_objc_mutex_deallocate (objc_mutex_t mutex)
{
if (__gthread_active_p ())
- mutex_destroy((mutex_t *)(&(mutex->backend)));
+ mutex_destroy ((mutex_t *) (&(mutex->backend)));
return 0;
}
/* Grab a lock on a mutex. */
static inline int
-__gthread_objc_mutex_lock(objc_mutex_t mutex)
+__gthread_objc_mutex_lock (objc_mutex_t mutex)
{
if (__gthread_active_p ()
- && mutex_lock((mutex_t *)(&(mutex->backend))) != 0)
+ && mutex_lock ((mutex_t *) (&(mutex->backend))) != 0)
return -1;
return 0;
@@ -305,10 +304,10 @@ __gthread_objc_mutex_lock(objc_mutex_t mutex)
/* Try to grab a lock on a mutex. */
static inline int
-__gthread_objc_mutex_trylock(objc_mutex_t mutex)
+__gthread_objc_mutex_trylock (objc_mutex_t mutex)
{
if (__gthread_active_p ()
- && mutex_trylock((mutex_t *)(&(mutex->backend))) != 0)
+ && mutex_trylock ((mutex_t *) (&(mutex->backend))) != 0)
return -1;
return 0;
@@ -316,10 +315,10 @@ __gthread_objc_mutex_trylock(objc_mutex_t mutex)
/* Unlock the mutex */
static inline int
-__gthread_objc_mutex_unlock(objc_mutex_t mutex)
+__gthread_objc_mutex_unlock (objc_mutex_t mutex)
{
if (__gthread_active_p ()
- && mutex_unlock((mutex_t *)(&(mutex->backend))) != 0)
+ && mutex_unlock ((mutex_t *) (&(mutex->backend))) != 0)
return -1;
return 0;
@@ -329,52 +328,52 @@ __gthread_objc_mutex_unlock(objc_mutex_t mutex)
/* Allocate a condition. */
static inline int
-__gthread_objc_condition_allocate(objc_condition_t condition)
+__gthread_objc_condition_allocate (objc_condition_t condition)
{
if (__gthread_active_p ())
- return cond_init((cond_t *)(&(condition->backend)), USYNC_THREAD,
- NULL);
+ return cond_init ((cond_t *) (&(condition->backend)), USYNC_THREAD,
+ NULL);
else
return 0;
}
/* Deallocate a condition. */
static inline int
-__gthread_objc_condition_deallocate(objc_condition_t condition)
+__gthread_objc_condition_deallocate (objc_condition_t condition)
{
if (__gthread_active_p ())
- return cond_destroy((cond_t *)(&(condition->backend)));
+ return cond_destroy ((cond_t *) (&(condition->backend)));
else
return 0;
}
/* Wait on the condition */
static inline int
-__gthread_objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex)
+__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex)
{
if (__gthread_active_p ())
- return cond_wait((cond_t *)(&(condition->backend)),
- (mutex_t *)(&(mutex->backend)));
+ return cond_wait ((cond_t *) (&(condition->backend)),
+ (mutex_t *) (&(mutex->backend)));
else
return 0;
}
/* Wake up all threads waiting on this condition. */
static inline int
-__gthread_objc_condition_broadcast(objc_condition_t condition)
+__gthread_objc_condition_broadcast (objc_condition_t condition)
{
if (__gthread_active_p ())
- return cond_broadcast((cond_t *)(&(condition->backend)));
+ return cond_broadcast ((cond_t *) (&(condition->backend)));
else
return 0;
}
/* Wake up one thread waiting on this condition. */
static inline int
-__gthread_objc_condition_signal(objc_condition_t condition)
+__gthread_objc_condition_signal (objc_condition_t condition)
{
if (__gthread_active_p ())
- return cond_signal((cond_t *)(&(condition->backend)));
+ return cond_signal ((cond_t *) (&(condition->backend)));
else
return 0;
}
@@ -398,7 +397,7 @@ __gthread_once (__gthread_once_t *once, void (*func) (void))
if (once->once == 0)
{
(*func) ();
- once->once ++;
+ once->once++;
}
mutex_unlock (&once->mutex);
}
diff --git a/gcc/gthr-vxworks.h b/gcc/gthr-vxworks.h
index 1474853edb3..c85b5e535f3 100644
--- a/gcc/gthr-vxworks.h
+++ b/gcc/gthr-vxworks.h
@@ -39,7 +39,7 @@ static void *thread_local_storage = NULL;
/* Initialize the threads subsystem. */
int
-__gthread_objc_init_thread_system(void)
+__gthread_objc_init_thread_system (void)
{
/* No thread support available */
return -1;
@@ -47,7 +47,7 @@ __gthread_objc_init_thread_system(void)
/* Close the threads subsystem. */
int
-__gthread_objc_close_thread_system(void)
+__gthread_objc_close_thread_system (void)
{
/* No thread support available */
return -1;
@@ -57,7 +57,7 @@ __gthread_objc_close_thread_system(void)
/* Create a new thread of execution. */
objc_thread_t
-__gthread_objc_thread_detach(void (*func)(void *arg), void *arg)
+__gthread_objc_thread_detach (void (*func)(void *arg), void *arg)
{
/* No thread support available */
return NULL;
@@ -65,7 +65,7 @@ __gthread_objc_thread_detach(void (*func)(void *arg), void *arg)
/* Set the current thread's priority. */
int
-__gthread_objc_thread_set_priority(int priority)
+__gthread_objc_thread_set_priority (int priority)
{
/* No thread support available */
return -1;
@@ -73,39 +73,39 @@ __gthread_objc_thread_set_priority(int priority)
/* Return the current thread's priority. */
int
-__gthread_objc_thread_get_priority(void)
+__gthread_objc_thread_get_priority (void)
{
return OBJC_THREAD_INTERACTIVE_PRIORITY;
}
/* Yield our process time to another thread. */
void
-__gthread_objc_thread_yield(void)
+__gthread_objc_thread_yield (void)
{
return;
}
/* Terminate the current thread. */
int
-__gthread_objc_thread_exit(void)
+__gthread_objc_thread_exit (void)
{
/* No thread support available */
/* Should we really exit the program */
- /* exit(&__objc_thread_exit_status); */
+ /* exit (&__objc_thread_exit_status); */
return -1;
}
/* Returns an integer value which uniquely describes a thread. */
objc_thread_t
-__gthread_objc_thread_id(void)
+__gthread_objc_thread_id (void)
{
/* No thread support, use 1. */
- return (objc_thread_t)1;
+ return (objc_thread_t) 1;
}
/* Sets the thread's local storage pointer. */
int
-__gthread_objc_thread_set_data(void *value)
+__gthread_objc_thread_set_data (void *value)
{
thread_local_storage = value;
return 0;
@@ -113,7 +113,7 @@ __gthread_objc_thread_set_data(void *value)
/* Returns the thread's local storage pointer. */
void *
-__gthread_objc_thread_get_data(void)
+__gthread_objc_thread_get_data (void)
{
return thread_local_storage;
}
@@ -122,21 +122,21 @@ __gthread_objc_thread_get_data(void)
/* Allocate a mutex. */
int
-__gthread_objc_mutex_allocate(objc_mutex_t mutex)
+__gthread_objc_mutex_allocate (objc_mutex_t mutex)
{
return 0;
}
/* Deallocate a mutex. */
int
-__gthread_objc_mutex_deallocate(objc_mutex_t mutex)
+__gthread_objc_mutex_deallocate (objc_mutex_t mutex)
{
return 0;
}
/* Grab a lock on a mutex. */
int
-__gthread_objc_mutex_lock(objc_mutex_t mutex)
+__gthread_objc_mutex_lock (objc_mutex_t mutex)
{
/* There can only be one thread, so we always get the lock */
return 0;
@@ -144,7 +144,7 @@ __gthread_objc_mutex_lock(objc_mutex_t mutex)
/* Try to grab a lock on a mutex. */
int
-__gthread_objc_mutex_trylock(objc_mutex_t mutex)
+__gthread_objc_mutex_trylock (objc_mutex_t mutex)
{
/* There can only be one thread, so we always get the lock */
return 0;
@@ -152,7 +152,7 @@ __gthread_objc_mutex_trylock(objc_mutex_t mutex)
/* Unlock the mutex */
int
-__gthread_objc_mutex_unlock(objc_mutex_t mutex)
+__gthread_objc_mutex_unlock (objc_mutex_t mutex)
{
return 0;
}
@@ -161,35 +161,35 @@ __gthread_objc_mutex_unlock(objc_mutex_t mutex)
/* Allocate a condition. */
int
-__gthread_objc_condition_allocate(objc_condition_t condition)
+__gthread_objc_condition_allocate (objc_condition_t condition)
{
return 0;
}
/* Deallocate a condition. */
int
-__gthread_objc_condition_deallocate(objc_condition_t condition)
+__gthread_objc_condition_deallocate (objc_condition_t condition)
{
return 0;
}
/* Wait on the condition */
int
-__gthread_objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex)
+__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex)
{
return 0;
}
/* Wake up all threads waiting on this condition. */
int
-__gthread_objc_condition_broadcast(objc_condition_t condition)
+__gthread_objc_condition_broadcast (objc_condition_t condition)
{
return 0;
}
/* Wake up one thread waiting on this condition. */
int
-__gthread_objc_condition_signal(objc_condition_t condition)
+__gthread_objc_condition_signal (objc_condition_t condition)
{
return 0;
}
@@ -229,12 +229,12 @@ static void
__ehdtor (void *pTcb)
{
int tid = (int) pTcb;
- void *p = (void*)taskVarGet(tid, &eh_context_key);
- if (p != (void*)-1)
+ void *p = (void *) taskVarGet (tid, &eh_context_key);
+ if (p != (void *) -1)
{
if (p)
free (p);
- taskVarSet(tid, &eh_context_key, 0);
+ taskVarSet (tid, &eh_context_key, 0);
}
}
@@ -248,7 +248,7 @@ __gthread_key_create (__gthread_key_t *key, void (*dtor) (void *))
/* Do this first so that the task variables are visible during the
running of the delete hook. */
- taskVarInit();
+ taskVarInit ();
/* We don't have a way to track dtor here, so instead, we
register a generic routine that can cleanup any task. */
@@ -277,9 +277,9 @@ __gthread_key_dtor (__gthread_key_t key, void *ptr)
#define __gthread_getspecific(key) \
((key == 0) \
? ((taskVarAdd (taskIdSelf (), &key) != OK) \
- ? (__terminate (), (void*)0) \
- : (void*)0) \
- : (void*)key)
+ ? (__terminate (), (void *) 0) \
+ : (void *) 0) \
+ : (void *) key)
#endif
static inline int
diff --git a/gcc/gthr-win32.h b/gcc/gthr-win32.h
index 113fa5b7901..38b8f04a12a 100644
--- a/gcc/gthr-win32.h
+++ b/gcc/gthr-win32.h
@@ -81,16 +81,16 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#undef BOOL
/* Key structure for maintaining thread specific storage */
-static DWORD __gthread_objc_data_tls = (DWORD)-1;
+static DWORD __gthread_objc_data_tls = (DWORD) -1;
/* Backend initialization functions */
/* Initialize the threads subsystem. */
int
-__gthread_objc_init_thread_system(void)
+__gthread_objc_init_thread_system (void)
{
/* Initialize the thread storage key */
- if ((__gthread_objc_data_tls = TlsAlloc()) != (DWORD)-1)
+ if ((__gthread_objc_data_tls = TlsAlloc ()) != (DWORD) -1)
return 0;
else
return -1;
@@ -98,10 +98,10 @@ __gthread_objc_init_thread_system(void)
/* Close the threads subsystem. */
int
-__gthread_objc_close_thread_system(void)
+__gthread_objc_close_thread_system (void)
{
- if (__gthread_objc_data_tls != (DWORD)-1)
- TlsFree(__gthread_objc_data_tls);
+ if (__gthread_objc_data_tls != (DWORD) -1)
+ TlsFree (__gthread_objc_data_tls);
return 0;
}
@@ -109,21 +109,21 @@ __gthread_objc_close_thread_system(void)
/* Create a new thread of execution. */
objc_thread_t
-__gthread_objc_thread_detach(void (*func)(void *arg), void *arg)
+__gthread_objc_thread_detach (void (*func)(void *arg), void *arg)
{
DWORD thread_id = 0;
HANDLE win32_handle;
- if (!(win32_handle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)func,
- arg, 0, &thread_id)))
+ if (!(win32_handle = CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE) func,
+ arg, 0, &thread_id)))
thread_id = 0;
- return (objc_thread_t)thread_id;
+ return (objc_thread_t) thread_id;
}
/* Set the current thread's priority. */
int
-__gthread_objc_thread_set_priority(int priority)
+__gthread_objc_thread_set_priority (int priority)
{
int sys_priority = 0;
@@ -142,7 +142,7 @@ __gthread_objc_thread_set_priority(int priority)
}
/* Change priority */
- if (SetThreadPriority(GetCurrentThread(), sys_priority))
+ if (SetThreadPriority (GetCurrentThread (), sys_priority))
return 0;
else
return -1;
@@ -150,11 +150,11 @@ __gthread_objc_thread_set_priority(int priority)
/* Return the current thread's priority. */
int
-__gthread_objc_thread_get_priority(void)
+__gthread_objc_thread_get_priority (void)
{
int sys_priority;
- sys_priority = GetThreadPriority(GetCurrentThread());
+ sys_priority = GetThreadPriority (GetCurrentThread ());
switch (sys_priority)
{
@@ -179,17 +179,17 @@ __gthread_objc_thread_get_priority(void)
/* Yield our process time to another thread. */
void
-__gthread_objc_thread_yield(void)
+__gthread_objc_thread_yield (void)
{
- Sleep(0);
+ Sleep (0);
}
/* Terminate the current thread. */
int
-__gthread_objc_thread_exit(void)
+__gthread_objc_thread_exit (void)
{
/* exit the thread */
- ExitThread(__objc_thread_exit_status);
+ ExitThread (__objc_thread_exit_status);
/* Failed if we reached here */
return -1;
@@ -197,16 +197,16 @@ __gthread_objc_thread_exit(void)
/* Returns an integer value which uniquely describes a thread. */
objc_thread_t
-__gthread_objc_thread_id(void)
+__gthread_objc_thread_id (void)
{
- return (objc_thread_t)GetCurrentThreadId();
+ return (objc_thread_t) GetCurrentThreadId ();
}
/* Sets the thread's local storage pointer. */
int
-__gthread_objc_thread_set_data(void *value)
+__gthread_objc_thread_set_data (void *value)
{
- if (TlsSetValue(__gthread_objc_data_tls, value))
+ if (TlsSetValue (__gthread_objc_data_tls, value))
return 0;
else
return -1;
@@ -214,16 +214,16 @@ __gthread_objc_thread_set_data(void *value)
/* Returns the thread's local storage pointer. */
void *
-__gthread_objc_thread_get_data(void)
+__gthread_objc_thread_get_data (void)
{
DWORD lasterror;
void *ptr;
- lasterror = GetLastError();
+ lasterror = GetLastError ();
- ptr = TlsGetValue(__gthread_objc_data_tls); /* Return thread data. */
+ ptr = TlsGetValue (__gthread_objc_data_tls); /* Return thread data. */
- SetLastError( lasterror );
+ SetLastError (lasterror);
return ptr;
}
@@ -232,9 +232,9 @@ __gthread_objc_thread_get_data(void)
/* Allocate a mutex. */
int
-__gthread_objc_mutex_allocate(objc_mutex_t mutex)
+__gthread_objc_mutex_allocate (objc_mutex_t mutex)
{
- if ((mutex->backend = (void *)CreateMutex(NULL, 0, NULL)) == NULL)
+ if ((mutex->backend = (void *) CreateMutex (NULL, 0, NULL)) == NULL)
return -1;
else
return 0;
@@ -242,19 +242,19 @@ __gthread_objc_mutex_allocate(objc_mutex_t mutex)
/* Deallocate a mutex. */
int
-__gthread_objc_mutex_deallocate(objc_mutex_t mutex)
+__gthread_objc_mutex_deallocate (objc_mutex_t mutex)
{
- CloseHandle((HANDLE)(mutex->backend));
+ CloseHandle ((HANDLE) (mutex->backend));
return 0;
}
/* Grab a lock on a mutex. */
int
-__gthread_objc_mutex_lock(objc_mutex_t mutex)
+__gthread_objc_mutex_lock (objc_mutex_t mutex)
{
int status;
- status = WaitForSingleObject((HANDLE)(mutex->backend), INFINITE);
+ status = WaitForSingleObject ((HANDLE) (mutex->backend), INFINITE);
if (status != WAIT_OBJECT_0 && status != WAIT_ABANDONED)
return -1;
else
@@ -263,11 +263,11 @@ __gthread_objc_mutex_lock(objc_mutex_t mutex)
/* Try to grab a lock on a mutex. */
int
-__gthread_objc_mutex_trylock(objc_mutex_t mutex)
+__gthread_objc_mutex_trylock (objc_mutex_t mutex)
{
int status;
- status = WaitForSingleObject((HANDLE)(mutex->backend), 0);
+ status = WaitForSingleObject ((HANDLE) (mutex->backend), 0);
if (status != WAIT_OBJECT_0 && status != WAIT_ABANDONED)
return -1;
else
@@ -276,9 +276,9 @@ __gthread_objc_mutex_trylock(objc_mutex_t mutex)
/* Unlock the mutex */
int
-__gthread_objc_mutex_unlock(objc_mutex_t mutex)
+__gthread_objc_mutex_unlock (objc_mutex_t mutex)
{
- if (ReleaseMutex((HANDLE)(mutex->backend)) == 0)
+ if (ReleaseMutex ((HANDLE) (mutex->backend)) == 0)
return -1;
else
return 0;
@@ -288,7 +288,7 @@ __gthread_objc_mutex_unlock(objc_mutex_t mutex)
/* Allocate a condition. */
int
-__gthread_objc_condition_allocate(objc_condition_t condition)
+__gthread_objc_condition_allocate (objc_condition_t condition)
{
/* Unimplemented. */
return -1;
@@ -296,7 +296,7 @@ __gthread_objc_condition_allocate(objc_condition_t condition)
/* Deallocate a condition. */
int
-__gthread_objc_condition_deallocate(objc_condition_t condition)
+__gthread_objc_condition_deallocate (objc_condition_t condition)
{
/* Unimplemented. */
return -1;
@@ -304,7 +304,7 @@ __gthread_objc_condition_deallocate(objc_condition_t condition)
/* Wait on the condition */
int
-__gthread_objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex)
+__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex)
{
/* Unimplemented. */
return -1;
@@ -312,7 +312,7 @@ __gthread_objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex)
/* Wake up all threads waiting on this condition. */
int
-__gthread_objc_condition_broadcast(objc_condition_t condition)
+__gthread_objc_condition_broadcast (objc_condition_t condition)
{
/* Unimplemented. */
return -1;
@@ -320,7 +320,7 @@ __gthread_objc_condition_broadcast(objc_condition_t condition)
/* Wake up one thread waiting on this condition. */
int
-__gthread_objc_condition_signal(objc_condition_t condition)
+__gthread_objc_condition_signal (objc_condition_t condition)
{
/* Unimplemented. */
return -1;
@@ -384,10 +384,10 @@ extern int __gthr_win32_mutex_unlock (__gthread_mutex_t *);
static inline int
__gthread_once (__gthread_once_t *once, void (*func) (void))
{
- if ( __gthread_active_p ())
+ if (__gthread_active_p ())
return __gthr_win32_once (once, func);
else
- return -1;
+ return -1;
}
static inline int
@@ -402,11 +402,11 @@ __gthread_key_dtor (__gthread_key_t key, void *ptr)
/* Nothing needed. */
return 0;
}
-
- static inline int
+
+static inline int
__gthread_key_delete (__gthread_key_t key)
{
- return __gthr_win32_key_delete (key);
+ return __gthr_win32_key_delete (key);
}
static inline void *
@@ -442,7 +442,7 @@ __gthread_mutex_trylock (__gthread_mutex_t *mutex)
if (__gthread_active_p ())
return __gthr_win32_mutex_trylock (mutex);
else
- return 0;
+ return 0;
}
static inline int
@@ -451,7 +451,7 @@ __gthread_mutex_unlock (__gthread_mutex_t *mutex)
if (__gthread_active_p ())
return __gthr_win32_mutex_unlock (mutex);
else
- return 0;
+ return 0;
}
#else /* ! __GTHREAD_HIDE_WIN32API */
@@ -532,11 +532,11 @@ __gthread_getspecific (__gthread_key_t key)
DWORD lasterror;
void *ptr;
- lasterror = GetLastError();
+ lasterror = GetLastError ();
- ptr = TlsGetValue(key);
+ ptr = TlsGetValue (key);
- SetLastError( lasterror );
+ SetLastError (lasterror);
return ptr;
}
diff --git a/gcc/hard-reg-set.h b/gcc/hard-reg-set.h
index 712a26791f3..0574738fbe5 100644
--- a/gcc/hard-reg-set.h
+++ b/gcc/hard-reg-set.h
@@ -488,7 +488,7 @@ extern int n_non_fixed_regs;
extern const char * reg_names[FIRST_PSEUDO_REGISTER];
-/* Given a hard REGN a FROM mode and a TO mode, return non-zero if
+/* Given a hard REGN a FROM mode and a TO mode, return nonzero if
REGN cannot change modes between the specified modes. */
#define REG_CANNOT_CHANGE_MODE_P(REGN, FROM, TO) \
(TEST_HARD_REG_BIT \
diff --git a/gcc/hwint.h b/gcc/hwint.h
index 2c143799018..6d645a00ea7 100644
--- a/gcc/hwint.h
+++ b/gcc/hwint.h
@@ -1,5 +1,5 @@
/* HOST_WIDE_INT definitions for the GNU compiler.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2002 Free Software Foundation, Inc.
This file is part of GCC.
@@ -18,7 +18,7 @@
#ifdef HAVE_LONG_LONG
# define HOST_BITS_PER_LONGLONG (CHAR_BIT * SIZEOF_LONG_LONG)
#else
-#ifdef HAVE__INT64
+#ifdef HAVE___INT64
# define HOST_BITS_PER_LONGLONG (CHAR_BIT * SIZEOF___INT64)
#else
/* If we're here and we're GCC, assume this is stage 2+ of a bootstrap
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index d2d1d0d6dff..0580514ab44 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -63,6 +63,56 @@
(java_lexer): Rearrange for gengtype.
* config-lang.in (gtfiles): Add lex.h, parse.h.
+2002-11-22 Tom Tromey <tromey@redhat.com>
+
+ * parse.y (patch_binop): Cast right hand side of shift expression
+ to `int'. Fixes PR java/8676.
+
+2002-11-22 Ranjit Mathew <rmathew@hotmail.com>
+ Andrew Haley <aph@redhat.com>
+
+ * gcc/java/jcf-write.c (write_classfile): Remove target
+ class file, if it exists, before renaming the temporary
+ class file to it.
+
+2002-11-19 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * jvspec.c (lang_specific_spec_functions): New.
+
+2002-11-18 Tom Tromey <tromey@redhat.com>
+
+ Fix for PR java/7912:
+ * expr.c (can_widen_reference_to): Allow cast of array to
+ Cloneable or Serializable.
+ * java-tree.h (java_lang_cloneable_identifier_node): Declare.
+ (java_io_serializable_identifier_node): Likewise.
+ * parse.y (java_lang_cloneable, java_io_serializable): Removed.
+ (valid_ref_assignconv_cast_p): Use new identifier nodes.
+ * lex.c (java_init_lex): Don't initialize java_lang_cloneable and
+ java_io_serializable.
+ * decl.c (java_init_decl_processing): Initialize
+ java_lang_cloneable_identifier_node and
+ java_io_serializable_identifier_node.
+ (java_lang_cloneable_identifier_node): New global.
+ (java_io_serializable_identifier_node): Likewise.
+
+2002-11-14 Jens-Michael Hoffmann <jensmh@gmx.de>
+
+ * buffer.c: Remove unnecessary casts.
+ * check-init.c: Likewise.
+ * class.c: Likewise.
+ * constants.c: Likewise.
+ * decl.c: Likewise.
+ * except.c: Likewise.
+ * gjavah.c: Likewise.
+ * jcf-io.c: Likewise.
+ * jcf-parse.c: Likewise.
+ * jcf-path.c: Likewise.
+ * jvspec.c: Likewise.
+ * lang.c: Likewise.
+ * lex.c: Likewise.
+ * verify.c: Likewise.
+
2002-11-06 Tom Tromey <tromey@redhat.com>
* gjavah.c (print_stub_or_jni): Include JNIEXPORT and JNICALL in
diff --git a/gcc/java/buffer.c b/gcc/java/buffer.c
index 74bd5adcd15..170cc04540a 100644
--- a/gcc/java/buffer.c
+++ b/gcc/java/buffer.c
@@ -37,14 +37,14 @@ buffer_grow (bufp, size)
{
if (size < 120)
size = 120;
- bufp->data = (unsigned char*) xmalloc (size);
+ bufp->data = xmalloc (size);
bufp->ptr = bufp->data;
}
else
{
int index = bufp->ptr - bufp->data;
size += 2 * (bufp->limit - bufp->data);
- bufp->data = (unsigned char *) xrealloc (bufp->data, size);
+ bufp->data = xrealloc (bufp->data, size);
bufp->ptr = bufp->data + index;
}
bufp->limit = bufp->data + size;
diff --git a/gcc/java/check-init.c b/gcc/java/check-init.c
index e02237664bd..6495a78d85a 100644
--- a/gcc/java/check-init.c
+++ b/gcc/java/check-init.c
@@ -108,7 +108,7 @@ static tree get_variable_decl PARAMS ((tree));
static void final_assign_error PARAMS ((tree));
static void check_final_reassigned PARAMS ((tree, words));
-#define ALLOC_WORDS(NUM) ((word*) xmalloc ((NUM) * sizeof (word)))
+#define ALLOC_WORDS(NUM) (xmalloc ((NUM) * sizeof (word)))
#define FREE_WORDS(PTR) (free (PTR))
/* DECLARE_BUFFERS is used to allocate NUMBUFFER bit sets, each of
diff --git a/gcc/java/class.c b/gcc/java/class.c
index db4470cff98..5df0ffc688d 100644
--- a/gcc/java/class.c
+++ b/gcc/java/class.c
@@ -150,7 +150,7 @@ add_assume_compiled (ident, excludep)
{
assume_compiled_node *parent;
assume_compiled_node *node =
- (assume_compiled_node *) xmalloc (sizeof (assume_compiled_node));
+ xmalloc (sizeof (assume_compiled_node));
node->ident = xstrdup (ident);
node->excludep = excludep;
@@ -160,8 +160,7 @@ add_assume_compiled (ident, excludep)
if (NULL == assume_compiled_tree)
{
- assume_compiled_tree =
- (assume_compiled_node *) xmalloc (sizeof (assume_compiled_node));
+ assume_compiled_tree = xmalloc (sizeof (assume_compiled_node));
assume_compiled_tree->ident = "";
assume_compiled_tree->excludep = 0;
assume_compiled_tree->sibling = NULL;
@@ -232,7 +231,7 @@ ident_subst (old_name, old_length, prefix, old_char, new_char, suffix)
#ifdef __GNUC__
char buffer[i];
#else
- char *buffer = (char *)alloca (i);
+ char *buffer = alloca (i);
#endif
strcpy (buffer, prefix);
for (i = 0; i < old_length; i++)
@@ -613,7 +612,7 @@ add_method_1 (this_class, access_flags, name, function_type)
DECL_CONTEXT (fndecl) = this_class;
DECL_LANG_SPECIFIC (fndecl)
- = (struct lang_decl *) ggc_alloc_cleared (sizeof (struct lang_decl));
+ = ggc_alloc_cleared (sizeof (struct lang_decl));
DECL_LANG_SPECIFIC (fndecl)->desc = LANG_DECL_FUNC;
/* Initialize the static initializer test table. */
diff --git a/gcc/java/constants.c b/gcc/java/constants.c
index 2df5f903b7a..7b40f7934b9 100644
--- a/gcc/java/constants.c
+++ b/gcc/java/constants.c
@@ -48,8 +48,8 @@ set_constant_entry (cpool, index, tag, value)
if (cpool->data == NULL)
{
cpool->capacity = 100;
- cpool->tags = (uint8*) ggc_alloc (sizeof(uint8) * cpool->capacity);
- cpool->data = ggc_alloc (sizeof (union cpool_entry) * cpool->capacity);
+ cpool->tags = ggc_alloc (sizeof(uint8) * cpool->capacity);
+ cpool->data = ggc_alloc (sizeof(union cpool_entry) * cpool->capacity);
cpool->count = 1;
}
if (index >= cpool->capacity)
@@ -57,10 +57,10 @@ set_constant_entry (cpool, index, tag, value)
cpool->capacity *= 2;
if (index >= cpool->capacity)
cpool->capacity = index + 10;
- cpool->tags = (uint8*) ggc_realloc (cpool->tags,
- sizeof(uint8) * cpool->capacity);
+ cpool->tags = ggc_realloc (cpool->tags,
+ sizeof(uint8) * cpool->capacity);
cpool->data = ggc_realloc (cpool->data,
- sizeof (union cpool_entry) * cpool->capacity);
+ sizeof(union cpool_entry) * cpool->capacity);
}
if (index >= cpool->count)
cpool->count = index + 1;
diff --git a/gcc/java/decl.c b/gcc/java/decl.c
index 3d3665bc703..9e8efefca90 100644
--- a/gcc/java/decl.c
+++ b/gcc/java/decl.c
@@ -57,6 +57,12 @@ static tree check_local_named_variable PARAMS ((tree, tree, int, int *));
static tree check_local_unnamed_variable PARAMS ((tree, tree, tree));
static void dump_function PARAMS ((enum tree_dump_index, tree));
+/* Name of the Cloneable class. */
+tree java_lang_cloneable_identifier_node;
+
+/* Name of the Serializable class. */
+tree java_io_serializable_identifier_node;
+
/* Set to nonzero value in order to emit class initilization code
before static field references. */
extern int always_initialize_class_p;
@@ -601,6 +607,10 @@ java_init_decl_processing ()
access0_identifier_node = get_identifier ("access$0");
classdollar_identifier_node = get_identifier ("class$");
+ java_lang_cloneable_identifier_node = get_identifier ("java.lang.Cloneable");
+ java_io_serializable_identifier_node =
+ get_identifier ("java.io.Serializable");
+
/* for lack of a better place to put this stub call */
init_expr_processing();
@@ -1183,7 +1193,7 @@ static struct binding_level *
make_binding_level ()
{
/* NOSTRICT */
- return (struct binding_level *) xmalloc (sizeof (struct binding_level));
+ return xmalloc (sizeof (struct binding_level));
}
void
@@ -1778,7 +1788,7 @@ start_java_method (fndecl)
i = DECL_MAX_LOCALS(fndecl) + DECL_MAX_STACK(fndecl);
decl_map = make_tree_vec (i);
- type_map = (tree *) xrealloc (type_map, i * sizeof (tree));
+ type_map = xrealloc (type_map, i * sizeof (tree));
#if defined(DEBUG_JAVA_BINDING_LEVELS)
fprintf (stderr, "%s:\n", lang_printable_name (fndecl, 2));
diff --git a/gcc/java/except.c b/gcc/java/except.c
index 614587d3362..0de4c8af0b3 100644
--- a/gcc/java/except.c
+++ b/gcc/java/except.c
@@ -153,8 +153,7 @@ link_handler (range, outer)
/* Handle overlapping ranges by splitting the new range. */
if (range->start_pc < outer->start_pc || range->end_pc > outer->end_pc)
{
- struct eh_range *h
- = (struct eh_range *) xmalloc (sizeof (struct eh_range));
+ struct eh_range *h = xmalloc (sizeof (struct eh_range));
if (range->start_pc < outer->start_pc)
{
h->start_pc = range->start_pc;
@@ -286,7 +285,7 @@ add_handler (start_pc, end_pc, handler, type)
prev = ptr;
}
- h = (struct eh_range *) xmalloc (sizeof (struct eh_range));
+ h = xmalloc (sizeof (struct eh_range));
h->start_pc = start_pc;
h->end_pc = end_pc;
h->first_child = NULL;
diff --git a/gcc/java/expr.c b/gcc/java/expr.c
index 0c434e96d5f..8db2670d0f9 100644
--- a/gcc/java/expr.c
+++ b/gcc/java/expr.c
@@ -1,5 +1,5 @@
/* Process expressions for the GNU compiler for the Java(TM) language.
- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -391,7 +391,12 @@ can_widen_reference_to (source_type, target_type)
{
HOST_WIDE_INT source_length, target_length;
if (TYPE_ARRAY_P (source_type) != TYPE_ARRAY_P (target_type))
- return 0;
+ {
+ /* An array implements Cloneable and Serializable. */
+ tree name = DECL_NAME (TYPE_NAME (target_type));
+ return (name == java_lang_cloneable_identifier_node
+ || name == java_io_serializable_identifier_node);
+ }
target_length = java_array_type_length (target_type);
if (target_length >= 0)
{
diff --git a/gcc/java/gjavah.c b/gcc/java/gjavah.c
index 1e8c701e24e..0c9d24990b7 100644
--- a/gcc/java/gjavah.c
+++ b/gcc/java/gjavah.c
@@ -834,13 +834,13 @@ DEFUN(print_method_info, (stream, jcf, name_index, sig_index, flags),
{
struct method_name *nn;
- nn = (struct method_name *) xmalloc (sizeof (struct method_name));
- nn->name = (char *) xmalloc (length);
+ nn = xmalloc (sizeof (struct method_name));
+ nn->name = xmalloc (length);
memcpy (nn->name, str, length);
nn->length = length;
nn->next = method_name_list;
nn->sig_length = JPOOL_UTF_LENGTH (jcf, sig_index);
- nn->signature = (char *) xmalloc (nn->sig_length);
+ nn->signature = xmalloc (nn->sig_length);
memcpy (nn->signature, JPOOL_UTF_DATA (jcf, sig_index),
nn->sig_length);
method_name_list = nn;
@@ -1151,7 +1151,7 @@ throwable_p (clname)
for (length = 0; clname[length] != ';' && clname[length] != '\0'; ++length)
;
- current = (unsigned char *) ALLOC (length);
+ current = ALLOC (length);
for (i = 0; i < length; ++i)
current[i] = clname[i] == '/' ? '.' : clname[i];
current[length] = '\0';
@@ -1189,7 +1189,7 @@ throwable_p (clname)
jcf_parse_class (&jcf);
tmp = (unsigned char *) super_class_name (&jcf, &super_length);
- super = (unsigned char *) ALLOC (super_length + 1);
+ super = ALLOC (super_length + 1);
memcpy (super, tmp, super_length);
super[super_length] = '\0';
@@ -1733,7 +1733,7 @@ print_include (out, utf8, len)
return;
}
- incl = (struct include *) xmalloc (sizeof (struct include));
+ incl = xmalloc (sizeof (struct include));
incl->name = xmalloc (len + 1);
strncpy (incl->name, utf8, len);
incl->name[len] = '\0';
@@ -1820,7 +1820,7 @@ add_namelet (name, name_limit, parent)
if (n == NULL)
{
- n = (struct namelet *) xmalloc (sizeof (struct namelet));
+ n = xmalloc (sizeof (struct namelet));
n->name = xmalloc (p - name + 1);
strncpy (n->name, name, p - name);
n->name[p - name] = '\0';
@@ -2376,25 +2376,25 @@ DEFUN(main, (argc, argv),
case OPT_PREPEND:
if (prepend_count == 0)
- prepend_specs = (char**) ALLOC (argc * sizeof (char*));
+ prepend_specs = ALLOC (argc * sizeof (char*));
prepend_specs[prepend_count++] = optarg;
break;
case OPT_FRIEND:
if (friend_count == 0)
- friend_specs = (char**) ALLOC (argc * sizeof (char*));
+ friend_specs = ALLOC (argc * sizeof (char*));
friend_specs[friend_count++] = optarg;
break;
case OPT_ADD:
if (add_count == 0)
- add_specs = (char**) ALLOC (argc * sizeof (char*));
+ add_specs = ALLOC (argc * sizeof (char*));
add_specs[add_count++] = optarg;
break;
case OPT_APPEND:
if (append_count == 0)
- append_specs = (char**) ALLOC (argc * sizeof (char*));
+ append_specs = ALLOC (argc * sizeof (char*));
append_specs[append_count++] = optarg;
break;
@@ -2481,7 +2481,7 @@ DEFUN(main, (argc, argv),
{
int dir_len = strlen (output_directory);
int i, classname_length = strlen (classname);
- current_output_file = (char*) ALLOC (dir_len + classname_length + 5);
+ current_output_file = ALLOC (dir_len + classname_length + 5);
strcpy (current_output_file, output_directory);
if (dir_len > 0 && output_directory[dir_len-1] != '/')
current_output_file[dir_len++] = '/';
diff --git a/gcc/java/java-tree.h b/gcc/java/java-tree.h
index e6c27e40484..964cb1d720c 100644
--- a/gcc/java/java-tree.h
+++ b/gcc/java/java-tree.h
@@ -258,6 +258,9 @@ typedef struct CPool constant_pool;
#define COMPONENT_REF_SIGNATURE(CPOOL, IDX) \
NAME_AND_TYPE_SIGNATURE (CPOOL, COMPONENT_REF_NAME_AND_TYPE(CPOOL, IDX))
+extern GTY(()) tree java_lang_cloneable_identifier_node;
+extern GTY(()) tree java_io_serializable_identifier_node;
+
enum java_tree_index
{
JTI_PROMOTED_BYTE_TYPE_NODE,
diff --git a/gcc/java/jcf-io.c b/gcc/java/jcf-io.c
index a1af70ad50d..7b0eacacc2f 100644
--- a/gcc/java/jcf-io.c
+++ b/gcc/java/jcf-io.c
@@ -455,10 +455,10 @@ DEFUN(find_class, (classname, classname_length, jcf, source_ok),
/* Allocate and zero out the buffer, since we don't explicitly put a
null pointer when we're copying it below. */
buflen = jcf_path_max_len () + classname_length + 10;
- buffer = (char *) ALLOC (buflen);
+ buffer = ALLOC (buflen);
memset (buffer, 0, buflen);
- java_buffer = (char *) alloca (buflen);
+ java_buffer = alloca (buflen);
jcf->java_source = 0;
diff --git a/gcc/java/jcf-parse.c b/gcc/java/jcf-parse.c
index 89c4b9692e5..f972659ae78 100644
--- a/gcc/java/jcf-parse.c
+++ b/gcc/java/jcf-parse.c
@@ -684,7 +684,7 @@ void
init_outgoing_cpool ()
{
current_constant_pool_data_ref = NULL_TREE;
- outgoing_cpool = (struct CPool *) ggc_alloc_cleared (sizeof (struct CPool));
+ outgoing_cpool = ggc_alloc_cleared (sizeof (struct CPool));
}
static void
@@ -1034,7 +1034,7 @@ java_parse_file (set_yydebug)
fatal_io_error ("can't open %s", IDENTIFIER_POINTER (name));
#ifdef IO_BUFFER_SIZE
- setvbuf (finput, (char *) xmalloc (IO_BUFFER_SIZE),
+ setvbuf (finput, xmalloc (IO_BUFFER_SIZE),
_IOFBF, IO_BUFFER_SIZE);
#endif
input_filename = IDENTIFIER_POINTER (name);
diff --git a/gcc/java/jcf-path.c b/gcc/java/jcf-path.c
index ce05088ba81..c9ed323dea4 100644
--- a/gcc/java/jcf-path.c
+++ b/gcc/java/jcf-path.c
@@ -143,7 +143,7 @@ add_entry (entp, filename, is_system)
int len;
struct entry *n;
- n = (struct entry *) ALLOC (sizeof (struct entry));
+ n = ALLOC (sizeof (struct entry));
n->flags = is_system ? FLAG_SYSTEM : 0;
n->next = NULL;
@@ -165,7 +165,7 @@ add_entry (entp, filename, is_system)
work more easily. Eww. */
if (filename[len - 1] != '/' && filename[len - 1] != DIR_SEPARATOR)
{
- char *f2 = (char *) alloca (len + 2);
+ char *f2 = alloca (len + 2);
strcpy (f2, filename);
f2[len] = DIR_SEPARATOR;
f2[len + 1] = '\0';
@@ -191,7 +191,7 @@ add_path (entp, cp, is_system)
if (cp)
{
- char *buf = (char *) alloca (strlen (cp) + 3);
+ char *buf = alloca (strlen (cp) + 3);
startp = endp = cp;
while (1)
{
@@ -299,7 +299,7 @@ jcf_path_init ()
/* Desperation: use the installed one. */
char *extdirs;
add_entry (&sys_dirs, LIBGCJ_ZIP_FILE, 1);
- extdirs = (char *) alloca (strlen (LIBGCJ_ZIP_FILE) + 1);
+ extdirs = alloca (strlen (LIBGCJ_ZIP_FILE) + 1);
strcpy (extdirs, LIBGCJ_ZIP_FILE);
strcpy (&extdirs[strlen (LIBGCJ_ZIP_FILE)
- strlen ("libgcj-" DEFAULT_TARGET_VERSION ".jar")],
@@ -346,7 +346,7 @@ jcf_path_extdirs_arg (cp)
if (cp)
{
- char *buf = (char *) alloca (strlen (cp) + 3);
+ char *buf = alloca (strlen (cp) + 3);
startp = endp = cp;
while (1)
{
@@ -375,9 +375,8 @@ jcf_path_extdirs_arg (cp)
if (direntp->d_name[0] != '.')
{
- char *name =
- (char *) alloca (dirname_length
- + strlen (direntp->d_name) + 2);
+ char *name = alloca (dirname_length
+ + strlen (direntp->d_name) + 2);
strcpy (name, buf);
if (name[dirname_length-1] != DIR_SEPARATOR)
{
diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c
index 1a9f1075e23..47cfd11be8a 100644
--- a/gcc/java/jcf-write.c
+++ b/gcc/java/jcf-write.c
@@ -3422,6 +3422,15 @@ write_classfile (clas)
write_chunks (stream, chunks);
if (fclose (stream))
fatal_io_error ("error closing %s", temporary_file_name);
+
+ /* If a file named by the string pointed to by `new' exists
+ prior to the call to the `rename' function, the bahaviour
+ is implementation-defined. ISO 9899-1990 7.9.4.2.
+
+ For example, on Win32 with MSVCRT, it is an error. */
+
+ unlink (class_file_name);
+
if (rename (temporary_file_name, class_file_name) == -1)
{
remove (temporary_file_name);
diff --git a/gcc/java/jvspec.c b/gcc/java/jvspec.c
index e531f7ca5f3..c3efe58de3a 100644
--- a/gcc/java/jvspec.c
+++ b/gcc/java/jvspec.c
@@ -88,8 +88,8 @@ find_spec_file (dir)
int x;
struct stat sb;
- spec = (char *) xmalloc (strlen (dir) + sizeof (SPEC_FILE)
- + sizeof ("-specs=") + 4);
+ spec = xmalloc (strlen (dir) + sizeof (SPEC_FILE)
+ + sizeof ("-specs=") + 4);
strcpy (spec, "-specs=");
x = strlen (spec);
strcat (spec, dir);
@@ -251,7 +251,7 @@ lang_specific_driver (in_argc, in_argv, in_added_libraries)
argv = *in_argv;
added_libraries = *in_added_libraries;
- args = (int *) xcalloc (argc, sizeof (int));
+ args = xcalloc (argc, sizeof (int));
for (i = 1; i < argc; i++)
{
@@ -496,7 +496,7 @@ lang_specific_driver (in_argc, in_argv, in_added_libraries)
num_args += shared_libgcc;
- arglist = (const char **) xmalloc ((num_args + 1) * sizeof (char *));
+ arglist = xmalloc ((num_args + 1) * sizeof (char *));
j = 0;
for (i = 0; i < argc; i++, j++)
@@ -632,3 +632,9 @@ lang_specific_pre_link ()
}
return err;
}
+
+/* Table of language-specific spec functions. */
+const struct spec_function lang_specific_spec_functions[] =
+{
+ { 0, 0 }
+};
diff --git a/gcc/java/lang.c b/gcc/java/lang.c
index ca97f02f1d5..0d9605c09ff 100644
--- a/gcc/java/lang.c
+++ b/gcc/java/lang.c
@@ -559,8 +559,8 @@ java_init (filename)
error ("couldn't determine target name for dependency tracking");
else
{
- char *buf = (char *) xmalloc (dot - filename +
- 3 + sizeof (TARGET_OBJECT_SUFFIX));
+ char *buf = xmalloc (dot - filename +
+ 3 + sizeof (TARGET_OBJECT_SUFFIX));
strncpy (buf, filename, dot - filename);
/* If emitting class files, we might have multiple
@@ -633,12 +633,12 @@ put_decl_string (str, len)
if (decl_buf == NULL)
{
decl_buflen = len + 100;
- decl_buf = (char *) xmalloc (decl_buflen);
+ decl_buf = xmalloc (decl_buflen);
}
else
{
decl_buflen *= 2;
- decl_buf = (char *) xrealloc (decl_buf, decl_buflen);
+ decl_buf = xrealloc (decl_buf, decl_buflen);
}
}
strcpy (decl_buf + decl_bufpos, str);
diff --git a/gcc/java/lex.c b/gcc/java/lex.c
index 3d4e15dcfc2..5a3cf3fc17c 100644
--- a/gcc/java/lex.c
+++ b/gcc/java/lex.c
@@ -91,10 +91,6 @@ java_init_lex (finput, encoding)
if (!java_lang_id)
java_lang_id = get_identifier ("java.lang");
- if (!java_lang_cloneable)
- java_lang_cloneable = get_identifier ("java.lang.Cloneable");
- if (!java_io_serializable)
- java_io_serializable = get_identifier ("java.io.Serializable");
if (!inst_id)
inst_id = get_identifier ("inst$");
if (!wpv_id)
@@ -128,7 +124,7 @@ java_init_lex (finput, encoding)
CPC_INITIALIZER_LIST (ctxp) = CPC_STATIC_INITIALIZER_LIST (ctxp) =
CPC_INSTANCE_INITIALIZER_LIST (ctxp) = NULL_TREE;
- memset ((PTR) ctxp->modifier_ctx, 0, sizeof (ctxp->modifier_ctx));
+ memset (ctxp->modifier_ctx, 0, sizeof (ctxp->modifier_ctx));
current_jcf = ggc_alloc_cleared (sizeof (JCF));
ctxp->current_parsed_class = NULL;
ctxp->package = NULL_TREE;
@@ -196,12 +192,11 @@ java_allocate_new_line ()
if (!ctxp->c_line)
{
- ctxp->c_line = (struct java_line *)xmalloc (sizeof (struct java_line));
+ ctxp->c_line = xmalloc (sizeof (struct java_line));
ctxp->c_line->max = JAVA_LINE_MAX;
- ctxp->c_line->line = (unicode_t *)xmalloc
- (sizeof (unicode_t)*ctxp->c_line->max);
+ ctxp->c_line->line = xmalloc (sizeof (unicode_t)*ctxp->c_line->max);
ctxp->c_line->unicode_escape_p =
- (char *)xmalloc (sizeof (char)*ctxp->c_line->max);
+ xmalloc (sizeof (char)*ctxp->c_line->max);
ctxp->c_line->white_space_only = 0;
}
@@ -226,7 +221,7 @@ java_new_lexer (finput, encoding)
FILE *finput;
const char *encoding;
{
- java_lexer *lex = (java_lexer *) xmalloc (sizeof (java_lexer));
+ java_lexer *lex = xmalloc (sizeof (java_lexer));
int enc_error = 0;
lex->finput = finput;
@@ -522,9 +517,9 @@ java_store_unicode (l, c, unicode_escape_p)
if (l->size == l->max)
{
l->max += JAVA_LINE_MAX;
- l->line = (unicode_t *) xrealloc (l->line, sizeof (unicode_t)*l->max);
- l->unicode_escape_p = (char *) xrealloc (l->unicode_escape_p,
- sizeof (char)*l->max);
+ l->line = xrealloc (l->line, sizeof (unicode_t)*l->max);
+ l->unicode_escape_p = xrealloc (l->unicode_escape_p,
+ sizeof (char)*l->max);
}
l->line [l->size] = c;
l->unicode_escape_p [l->size++] = unicode_escape_p;
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index 47e40f39be4..ef1221e3898 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -390,12 +390,6 @@ static GTY(()) tree java_lang_id;
instance/field access functions. */
static GTY(()) tree inst_id;
-/* The "java.lang.Cloneable" qualified name. */
-static GTY(()) tree java_lang_cloneable;
-
-/* The "java.io.Serializable" qualified name. */
-static GTY(()) tree java_io_serializable;
-
/* Context and flag for static blocks */
static GTY(()) tree current_static_block;
@@ -13052,9 +13046,10 @@ valid_ref_assignconv_cast_p (source, dest, cast)
{
/* Array */
return (cast
- && (DECL_NAME (TYPE_NAME (source)) == java_lang_cloneable
+ && (DECL_NAME (TYPE_NAME (source))
+ == java_lang_cloneable_identifier_node
|| (DECL_NAME (TYPE_NAME (source))
- == java_io_serializable)));
+ == java_io_serializable_identifier_node)));
}
}
if (TYPE_ARRAY_P (source))
@@ -13064,8 +13059,10 @@ valid_ref_assignconv_cast_p (source, dest, cast)
/* Can't cast an array to an interface unless the interface is
java.lang.Cloneable or java.io.Serializable. */
if (TYPE_INTERFACE_P (dest))
- return (DECL_NAME (TYPE_NAME (dest)) == java_lang_cloneable
- || DECL_NAME (TYPE_NAME (dest)) == java_io_serializable);
+ return (DECL_NAME (TYPE_NAME (dest))
+ == java_lang_cloneable_identifier_node
+ || (DECL_NAME (TYPE_NAME (dest))
+ == java_io_serializable_identifier_node));
else /* Arrays */
{
tree source_element_type = TYPE_ARRAY_ELEMENT (source);
@@ -13449,6 +13446,11 @@ patch_binop (node, wfl_op1, wfl_op2)
op1 = do_unary_numeric_promotion (op1);
op2 = do_unary_numeric_promotion (op2);
+ /* If the right hand side is of type `long', first cast it to
+ `int'. */
+ if (TREE_TYPE (op2) == long_type_node)
+ op2 = build1 (CONVERT_EXPR, int_type_node, op2);
+
/* The type of the shift expression is the type of the promoted
type of the left-hand operand */
prom_type = TREE_TYPE (op1);
diff --git a/gcc/java/verify.c b/gcc/java/verify.c
index 081116815f4..250e479b5fc 100644
--- a/gcc/java/verify.c
+++ b/gcc/java/verify.c
@@ -449,7 +449,7 @@ verify_jvm_instructions (jcf, byte_ops, length)
/* We read the exception handlers in order of increasing start PC.
To do this we first read and sort the start PCs. */
- starts = (struct pc_index *) xmalloc (eh_count * sizeof (struct pc_index));
+ starts = xmalloc (eh_count * sizeof (struct pc_index));
for (i = 0; i < eh_count; ++i)
{
starts[i].start_pc = GET_u2 (jcf->read_ptr + 8 * i);
diff --git a/gcc/loop.c b/gcc/loop.c
index 04f95ab4925..4814cdd6e9b 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -5835,7 +5835,10 @@ record_giv (loop, v, insn, src_reg, dest_reg, mult_val, add_val, ext_val,
abort ();
if (type == DEST_ADDR)
- v->replaceable = 1;
+ {
+ v->replaceable = 1;
+ v->not_replaceable = 0;
+ }
else
{
/* The giv can be replaced outright by the reduced register only if all
@@ -5870,6 +5873,7 @@ record_giv (loop, v, insn, src_reg, dest_reg, mult_val, add_val, ext_val,
using this biv anyways. */
v->replaceable = 1;
+ v->not_replaceable = 0;
for (b = bl->biv; b; b = b->next_iv)
{
if (INSN_UID (b->insn) >= max_uid_for_loop
@@ -5981,6 +5985,7 @@ check_final_value (loop, v)
rtx last_giv_use;
v->replaceable = 1;
+ v->not_replaceable = 0;
/* When trying to determine whether or not a biv increment occurs
during the lifetime of the giv, we can ignore uses of the variable
diff --git a/gcc/optabs.c b/gcc/optabs.c
index dcb15b060e8..9da95e1de72 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -244,12 +244,12 @@ widen_operand (op, mode, oldmode, unsignedp, no_extend)
static int
expand_cmplxdiv_straight (real0, real1, imag0, imag1, realr, imagr, submode,
unsignedp, methods, class, binoptab)
- rtx real0, real1, imag0, imag1, realr, imagr;
- enum machine_mode submode;
- int unsignedp;
- enum optab_methods methods;
- enum mode_class class;
- optab binoptab;
+ rtx real0, real1, imag0, imag1, realr, imagr;
+ enum machine_mode submode;
+ int unsignedp;
+ enum optab_methods methods;
+ enum mode_class class;
+ optab binoptab;
{
rtx divisor;
rtx real_t, imag_t;
@@ -376,12 +376,12 @@ expand_cmplxdiv_straight (real0, real1, imag0, imag1, realr, imagr, submode,
static int
expand_cmplxdiv_wide (real0, real1, imag0, imag1, realr, imagr, submode,
unsignedp, methods, class, binoptab)
- rtx real0, real1, imag0, imag1, realr, imagr;
- enum machine_mode submode;
- int unsignedp;
- enum optab_methods methods;
- enum mode_class class;
- optab binoptab;
+ rtx real0, real1, imag0, imag1, realr, imagr;
+ enum machine_mode submode;
+ int unsignedp;
+ enum optab_methods methods;
+ enum mode_class class;
+ optab binoptab;
{
rtx ratio, divisor;
rtx real_t, imag_t;
@@ -646,7 +646,7 @@ expand_simple_binop (mode, code, op0, op1, target, unsignedp, methods)
int unsignedp;
enum optab_methods methods;
{
- optab binop = code_to_optab [(int) code];
+ optab binop = code_to_optab[(int) code];
if (binop == 0)
abort ();
@@ -680,7 +680,7 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods)
enum machine_mode wider_mode;
rtx temp;
int commutative_op = 0;
- int shift_op = (binoptab->code == ASHIFT
+ int shift_op = (binoptab->code == ASHIFT
|| binoptab->code == ASHIFTRT
|| binoptab->code == LSHIFTRT
|| binoptab->code == ROTATE
@@ -781,9 +781,8 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods)
/* In case the insn wants input operands in modes different from
those of the actual operands, convert the operands. It would
seem that we don't need to convert CONST_INTs, but we do, so
- that they're properly zero-extended or sign-extended for their
- modes; shift operations are an exception, because the second
- operand need not be extended to the mode of the result. */
+ that they're properly zero-extended, sign-extended or truncated
+ for their mode. */
if (GET_MODE (op0) != mode0 && mode0 != VOIDmode)
xop0 = convert_modes (mode0,
@@ -796,7 +795,7 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods)
xop1 = convert_modes (mode1,
GET_MODE (op1) != VOIDmode
? GET_MODE (op1)
- : (shift_op ? mode1 : mode),
+ : mode,
xop1, unsignedp);
/* Now, if insn's predicates don't allow our operands, put them into
@@ -1138,7 +1137,7 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods)
if (shift_count > BITS_PER_WORD)
{
first_shift_count = GEN_INT (shift_count - BITS_PER_WORD);
- second_shift_count = GEN_INT (2*BITS_PER_WORD - shift_count);
+ second_shift_count = GEN_INT (2 * BITS_PER_WORD - shift_count);
}
else
{
@@ -1532,10 +1531,7 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods)
int ok = 0;
/* Find the correct mode for the real and imaginary parts */
- enum machine_mode submode
- = mode_for_size (GET_MODE_UNIT_SIZE (mode) * BITS_PER_UNIT,
- class == MODE_COMPLEX_INT ? MODE_INT : MODE_FLOAT,
- 0);
+ enum machine_mode submode = GET_MODE_INNER(mode);
if (submode == BLKmode)
abort ();
@@ -1640,7 +1636,7 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods)
NULL_RTX, unsignedp, methods);
if (temp1 == 0 || temp2 == 0)
- break;
+ break;
res = (expand_binop
(submode,
@@ -1900,7 +1896,7 @@ expand_vector_binop (mode, binoptab, op0, op1, target, unsignedp, methods)
class = GET_MODE_CLASS (mode);
- size = GET_MODE_SIZE (mode);
+ size = GET_MODE_SIZE (mode);
submode = GET_MODE_INNER (mode);
/* Search for the widest vector mode with the same inner mode that is
@@ -2023,7 +2019,7 @@ expand_vector_unop (mode, unoptab, op0, target, unsignedp)
int size, elts, subsize, subbitsize, i;
rtx t, a, res, seq;
- size = GET_MODE_SIZE (mode);
+ size = GET_MODE_SIZE (mode);
submode = GET_MODE_INNER (mode);
/* Search for the widest vector mode with the same inner mode that is
@@ -2117,11 +2113,11 @@ expand_vector_unop (mode, unoptab, op0, target, unsignedp)
rtx
sign_expand_binop (mode, uoptab, soptab, op0, op1, target, unsignedp, methods)
- enum machine_mode mode;
- optab uoptab, soptab;
- rtx op0, op1, target;
- int unsignedp;
- enum optab_methods methods;
+ enum machine_mode mode;
+ optab uoptab, soptab;
+ rtx op0, op1, target;
+ int unsignedp;
+ enum optab_methods methods;
{
rtx temp;
optab direct_optab = unsignedp ? uoptab : soptab;
@@ -2234,8 +2230,8 @@ expand_twoval_binop (binoptab, op0, op1, targ0, targ1, unsignedp)
/* In case the insn wants input operands in modes different from
those of the actual operands, convert the operands. It would
seem that we don't need to convert CONST_INTs, but we do, so
- that they're properly zero-extended or sign-extended for their
- modes. */
+ that they're properly zero-extended, sign-extended or truncated
+ for their mode. */
if (GET_MODE (op0) != mode0 && mode0 != VOIDmode)
xop0 = convert_modes (mode0,
@@ -2317,7 +2313,7 @@ expand_simple_unop (mode, code, op0, target, unsignedp)
rtx target;
int unsignedp;
{
- optab unop = code_to_optab [(int) code];
+ optab unop = code_to_optab[(int) code];
if (unop == 0)
abort ();
@@ -2485,10 +2481,7 @@ expand_unop (mode, unoptab, op0, target, unsignedp)
rtx seq;
/* Find the correct mode for the real and imaginary parts */
- enum machine_mode submode
- = mode_for_size (GET_MODE_UNIT_SIZE (mode) * BITS_PER_UNIT,
- class == MODE_COMPLEX_INT ? MODE_INT : MODE_FLOAT,
- 0);
+ enum machine_mode submode = GET_MODE_INNER (mode);
if (submode == BLKmode)
abort ();
@@ -2732,10 +2725,7 @@ expand_complex_abs (mode, op0, target, unsignedp)
optab this_abs_optab;
/* Find the correct mode for the real and imaginary parts. */
- enum machine_mode submode
- = mode_for_size (GET_MODE_UNIT_SIZE (mode) * BITS_PER_UNIT,
- class == MODE_COMPLEX_INT ? MODE_INT : MODE_FLOAT,
- 0);
+ enum machine_mode submode = GET_MODE_INNER (mode);
if (submode == BLKmode)
abort ();
@@ -3293,24 +3283,24 @@ can_compare_p (code, mode, purpose)
{
do
{
- if (cmp_optab->handlers[(int)mode].insn_code != CODE_FOR_nothing)
+ if (cmp_optab->handlers[(int) mode].insn_code != CODE_FOR_nothing)
{
if (purpose == ccp_jump)
- return bcc_gen_fctn[(int)code] != NULL;
+ return bcc_gen_fctn[(int) code] != NULL;
else if (purpose == ccp_store_flag)
- return setcc_gen_code[(int)code] != CODE_FOR_nothing;
+ return setcc_gen_code[(int) code] != CODE_FOR_nothing;
else
/* There's only one cmov entry point, and it's allowed to fail. */
return 1;
}
if (purpose == ccp_jump
- && cbranch_optab->handlers[(int)mode].insn_code != CODE_FOR_nothing)
+ && cbranch_optab->handlers[(int) mode].insn_code != CODE_FOR_nothing)
return 1;
if (purpose == ccp_cmov
- && cmov_optab->handlers[(int)mode].insn_code != CODE_FOR_nothing)
+ && cmov_optab->handlers[(int) mode].insn_code != CODE_FOR_nothing)
return 1;
if (purpose == ccp_store_flag
- && cstore_optab->handlers[(int)mode].insn_code != CODE_FOR_nothing)
+ && cstore_optab->handlers[(int) mode].insn_code != CODE_FOR_nothing)
return 1;
mode = GET_MODE_WIDER_MODE (mode);
@@ -3378,7 +3368,7 @@ prepare_cmp_insn (px, py, pcomparison, size, pmode, punsignedp, purpose)
states that canonical comparisons are required only for targets which
have cc0. */
if (CONSTANT_P (x) && ! CONSTANT_P (y))
- abort();
+ abort ();
#endif
/* Don't let both operands fail to indicate the mode. */
@@ -3545,7 +3535,7 @@ emit_cmp_and_jump_insn_1 (x, y, mode, comparison, unsignedp, label)
if (label)
{
- icode = cbranch_optab->handlers[(int)wider_mode].insn_code;
+ icode = cbranch_optab->handlers[(int) wider_mode].insn_code;
if (icode != CODE_FOR_nothing
&& (*insn_data[icode].operand[0].predicate) (test, wider_mode))
@@ -3586,7 +3576,8 @@ emit_cmp_and_jump_insn_1 (x, y, mode, comparison, unsignedp, label)
break;
wider_mode = GET_MODE_WIDER_MODE (wider_mode);
- } while (wider_mode != VOIDmode);
+ }
+ while (wider_mode != VOIDmode);
abort ();
}
@@ -4014,7 +4005,7 @@ void
emit_indirect_jump (loc)
rtx loc;
{
- if (! ((*insn_data[(int)CODE_FOR_indirect_jump].operand[0].predicate)
+ if (! ((*insn_data[(int) CODE_FOR_indirect_jump].operand[0].predicate)
(loc, Pmode)))
loc = copy_to_mode_reg (Pmode, loc);
@@ -4206,7 +4197,7 @@ gen_add3_insn (r0, r1, c)
{
int icode = (int) add_optab->handlers[(int) GET_MODE (r0)].insn_code;
- if (icode == CODE_FOR_nothing
+ if (icode == CODE_FOR_nothing
|| ! ((*insn_data[icode].operand[0].predicate)
(r0, insn_data[icode].operand[0].mode))
|| ! ((*insn_data[icode].operand[1].predicate)
@@ -4270,7 +4261,7 @@ gen_sub3_insn (r0, r1, c)
{
int icode = (int) sub_optab->handlers[(int) GET_MODE (r0)].insn_code;
- if (icode == CODE_FOR_nothing
+ if (icode == CODE_FOR_nothing
|| ! ((*insn_data[icode].operand[0].predicate)
(r0, insn_data[icode].operand[0].mode))
|| ! ((*insn_data[icode].operand[1].predicate)
@@ -4506,7 +4497,7 @@ expand_float (to, from, unsignedp)
convert_move (to, target, 0);
return;
}
- }
+ }
/* Unsigned integer, and no way to convert directly.
Convert as signed, then conditionally adjust the result. */
@@ -4581,7 +4572,7 @@ expand_float (to, from, unsignedp)
/* Multiply by 2 to undo the shift above. */
temp = expand_binop (fmode, add_optab, target, target,
- target, 0, OPTAB_LIB_WIDEN);
+ target, 0, OPTAB_LIB_WIDEN);
if (temp != target)
emit_move_insn (target, temp);
@@ -5009,11 +5000,11 @@ init_optabv (code)
static void
init_libfuncs (optable, first_mode, last_mode, opname, suffix)
- optab optable;
- int first_mode;
- int last_mode;
- const char *opname;
- int suffix;
+ optab optable;
+ int first_mode;
+ int last_mode;
+ const char *opname;
+ int suffix;
{
int mode;
unsigned opname_len = strlen (opname);
@@ -5021,7 +5012,7 @@ init_libfuncs (optable, first_mode, last_mode, opname, suffix)
for (mode = first_mode; (int) mode <= (int) last_mode;
mode = (enum machine_mode) ((int) mode + 1))
{
- const char *mname = GET_MODE_NAME(mode);
+ const char *mname = GET_MODE_NAME (mode);
unsigned mname_len = strlen (mname);
char *libfunc_name = alloca (2 + opname_len + mname_len + 1 + 1);
char *p;
@@ -5050,9 +5041,9 @@ init_libfuncs (optable, first_mode, last_mode, opname, suffix)
static void
init_integral_libfuncs (optable, opname, suffix)
- optab optable;
- const char *opname;
- int suffix;
+ optab optable;
+ const char *opname;
+ int suffix;
{
init_libfuncs (optable, SImode, TImode, opname, suffix);
}
@@ -5064,9 +5055,9 @@ init_integral_libfuncs (optable, opname, suffix)
static void
init_floating_libfuncs (optable, opname, suffix)
- optab optable;
- const char *opname;
- int suffix;
+ optab optable;
+ const char *opname;
+ int suffix;
{
init_libfuncs (optable, SFmode, TFmode, opname, suffix);
}
@@ -5466,8 +5457,8 @@ init_traps ()
rtx
gen_cond_trap (code, op1, op2, tcode)
- enum rtx_code code ATTRIBUTE_UNUSED;
- rtx op1, op2 ATTRIBUTE_UNUSED, tcode ATTRIBUTE_UNUSED;
+ enum rtx_code code ATTRIBUTE_UNUSED;
+ rtx op1, op2 ATTRIBUTE_UNUSED, tcode ATTRIBUTE_UNUSED;
{
enum machine_mode mode = GET_MODE (op1);
@@ -5479,7 +5470,7 @@ gen_cond_trap (code, op1, op2, tcode)
&& cmp_optab->handlers[(int) mode].insn_code != CODE_FOR_nothing)
{
rtx insn;
- start_sequence();
+ start_sequence ();
emit_insn (GEN_FCN (cmp_optab->handlers[(int) mode].insn_code) (op1, op2));
PUT_CODE (trap_rtx, code);
insn = gen_conditional_trap (trap_rtx, tcode);
@@ -5488,7 +5479,7 @@ gen_cond_trap (code, op1, op2, tcode)
emit_insn (insn);
insn = get_insns ();
}
- end_sequence();
+ end_sequence ();
return insn;
}
#endif
diff --git a/gcc/real.c b/gcc/real.c
index 33f84598046..d9a4b801e3d 100644
--- a/gcc/real.c
+++ b/gcc/real.c
@@ -410,7 +410,7 @@ cmp_significands (a, b)
return 0;
}
-/* Return true if A is non-zero. */
+/* Return true if A is nonzero. */
static inline int
cmp_significand_0 (a)
@@ -1485,6 +1485,11 @@ real_to_decimal (str, r_orig, buf_size, digits, crop_trailing_zeros)
abort ();
}
+ /* Bound the number of digits printed by the size of the representation. */
+ max_digits = SIGNIFICAND_BITS * M_LOG10_2;
+ if (digits == 0 || digits > max_digits)
+ digits = max_digits;
+
/* Estimate the decimal exponent, and compute the length of the string it
will print as. Be conservative and add one to account for possible
overflow or rounding error. */
@@ -1499,11 +1504,6 @@ real_to_decimal (str, r_orig, buf_size, digits, crop_trailing_zeros)
if (digits > max_digits)
digits = max_digits;
- /* Bound the number of digits printed by the size of the representation. */
- max_digits = SIGNIFICAND_BITS * M_LOG10_2;
- if (digits == 0 || digits > max_digits)
- digits = max_digits;
-
one = real_digit (1);
ten = ten_to_ptwo (0);
@@ -1675,8 +1675,8 @@ real_to_decimal (str, r_orig, buf_size, digits, crop_trailing_zeros)
/* Round the result. */
if (digit == 5)
{
- /* Round to nearest. If R is non-zero there are additional
- non-zero digits to be extracted. */
+ /* Round to nearest. If R is nonzero there are additional
+ nonzero digits to be extracted. */
if (cmp_significand_0 (&r))
digit++;
/* Round to even. */
diff --git a/gcc/recog.c b/gcc/recog.c
index b40867bf7a3..d1db9c4e69d 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -522,10 +522,10 @@ validate_replace_rtx_1 (loc, from, to, object)
{
case PLUS:
/* If we have a PLUS whose second operand is now a CONST_INT, use
- plus_constant to try to simplify it.
+ simplify_gen_binary to try to simplify it.
??? We may want later to remove this, once simplification is
separated from this function. */
- if (GET_CODE (XEXP (x, 1)) == CONST_INT)
+ if (GET_CODE (XEXP (x, 1)) == CONST_INT && XEXP (x, 1) == to)
validate_change (object, loc,
simplify_gen_binary
(PLUS, GET_MODE (x), XEXP (x, 0), XEXP (x, 1)), 1);
@@ -2628,23 +2628,23 @@ constrain_operands (strict)
if (EXTRA_MEMORY_CONSTRAINT (c))
{
- /* Every memory operand can be reloaded to fit,
- so copy the condition from the 'm' case. */
- if (GET_CODE (op) == MEM
- /* Before reload, accept what reload can turn into mem. */
- || (strict < 0 && CONSTANT_P (op))
- /* During reload, accept a pseudo */
- || (reload_in_progress && GET_CODE (op) == REG
- && REGNO (op) >= FIRST_PSEUDO_REGISTER))
+ /* Every memory operand can be reloaded to fit. */
+ if (strict < 0 && GET_CODE (op) == MEM)
+ win = 1;
+
+ /* Before reload, accept what reload can turn into mem. */
+ if (strict < 0 && CONSTANT_P (op))
+ win = 1;
+
+ /* During reload, accept a pseudo */
+ if (reload_in_progress && GET_CODE (op) == REG
+ && REGNO (op) >= FIRST_PSEUDO_REGISTER)
win = 1;
}
if (EXTRA_ADDRESS_CONSTRAINT (c))
{
- /* Every address operand can be reloaded to fit,
- so copy the condition from the 'p' case. */
- if (strict <= 0
- || (strict_memory_address_p (recog_data.operand_mode[opno],
- op)))
+ /* Every address operand can be reloaded to fit. */
+ if (strict < 0)
win = 1;
}
#endif
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c
index 4d37cecc886..18bfeca3c75 100644
--- a/gcc/reg-stack.c
+++ b/gcc/reg-stack.c
@@ -2553,7 +2553,11 @@ compensate_edge (e, file)
abort ();
eh1:
+ /* We are sure that there is st(0) live, otherwise we won't compensate.
+ For complex return values, we may have st(1) live as well. */
SET_HARD_REG_BIT (tmp, FIRST_STACK_REG);
+ if (TEST_HARD_REG_BIT (regstack.reg_set, FIRST_STACK_REG + 1))
+ SET_HARD_REG_BIT (tmp, FIRST_STACK_REG + 1);
GO_IF_HARD_REG_EQUAL (regstack.reg_set, tmp, eh2);
abort ();
eh2:
diff --git a/gcc/reload.c b/gcc/reload.c
index 2b119886d4b..56fcf46d00c 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -3283,6 +3283,10 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
the address into a base register. */
this_alternative[i] = (int) MODE_BASE_REG_CLASS (VOIDmode);
badop = 0;
+
+ /* Address constraints are reloaded in Pmode, no matter
+ what mode is given in the machine description. */
+ operand_mode[i] = Pmode;
break;
}
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c
index cf762cccb58..98b0732291b 100644
--- a/gcc/sched-deps.c
+++ b/gcc/sched-deps.c
@@ -1287,8 +1287,12 @@ sched_analyze (deps, head, tail)
SET_REGNO_REG_SET (reg_pending_sets, i);
SET_REGNO_REG_SET (reg_pending_uses, i);
}
- /* Other call-clobbered hard regs may be clobbered. */
- else if (TEST_HARD_REG_BIT (regs_invalidated_by_call, i))
+ /* Other call-clobbered hard regs may be clobbered.
+ Since we only have a choice between 'might be clobbered'
+ and 'definitely not clobbered', we must include all
+ partly call-clobbered registers here. */
+ else if (HARD_REGNO_CALL_PART_CLOBBERED (i, reg_raw_mode[i])
+ || TEST_HARD_REG_BIT (regs_invalidated_by_call, i))
SET_REGNO_REG_SET (reg_pending_clobbers, i);
/* We don't know what set of fixed registers might be used
by the function, but it is certain that the stack pointer
diff --git a/gcc/stmt.c b/gcc/stmt.c
index c07fe663fb3..360abe19571 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -3311,8 +3311,18 @@ tail_recursion_args (actuals, formals)
if (GET_MODE (DECL_RTL (f)) == GET_MODE (argvec[i]))
emit_move_insn (DECL_RTL (f), argvec[i]);
else
- convert_move (DECL_RTL (f), argvec[i],
- TREE_UNSIGNED (TREE_TYPE (TREE_VALUE (a))));
+ {
+ rtx tmp = argvec[i];
+
+ if (DECL_MODE (f) != GET_MODE (DECL_RTL (f)))
+ {
+ tmp = gen_reg_rtx (DECL_MODE (f));
+ convert_move (tmp, argvec[i],
+ TREE_UNSIGNED (TREE_TYPE (TREE_VALUE (a))));
+ }
+ convert_move (DECL_RTL (f), tmp,
+ TREE_UNSIGNED (TREE_TYPE (TREE_VALUE (a))));
+ }
}
free_temp_slots ();
diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c
index dd37d955190..db4c09f29f7 100644
--- a/gcc/stor-layout.c
+++ b/gcc/stor-layout.c
@@ -1036,6 +1036,7 @@ place_field (rli, field)
if (rli->remaining_in_alignment < bitsize)
{
/* out of bits; bump up to next 'word'. */
+ rli->offset = DECL_FIELD_OFFSET (rli->prev_field);
rli->bitpos = size_binop (PLUS_EXPR,
type_size,
DECL_FIELD_BIT_OFFSET(rli->prev_field));
diff --git a/gcc/target.h b/gcc/target.h
index 44e64a9903a..161c3dd02d7 100644
--- a/gcc/target.h
+++ b/gcc/target.h
@@ -123,7 +123,7 @@ struct gcc_target
/* Output the assembler code for a thunk function. THUNK_DECL is the
declaration for the thunk function itself, FUNCTION is the decl for
the target function. DELTA is an immediate constant offset to be
- added to THIS. If VCALL_OFFSET is non-zero, the word at
+ added to THIS. If VCALL_OFFSET is nonzero, the word at
*(*this + vcall_offset) should be added to THIS. */
void (* output_mi_thunk) PARAMS ((FILE *file, tree thunk_decl,
HOST_WIDE_INT delta,
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d320a216989..7713075c528 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -71,6 +71,116 @@
* lib/gcc-dg.exp (gcc-dg-test): Add case for when $do_what is
"precompile".
+2002-11-22 Mark Mitchell <mark@codesourcery.com>
+
+ * g++.dg/abi/rtti2.C: New test.
+
+2002-11-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+ * gcc.dg/i386-unroll-1.c: New test.
+
+2002-11-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+ * gcc.c-torture/compile/20021120-1.c: New test.
+ * gcc.c-torture/compile/20021120-2.c: New test.
+
+2002-11-20 Richard Sandiford <rsandifo@redhat.com>
+
+ * gcc.dg/bitfld-5.c: New test.
+
+2002-11-20 Richard Sandiford <rsandifo@redhat.com>
+
+ * gcc.c-torture/execute/20021120-3.c: New test.
+
+2002-11-20 Richard Sandiford <rsandifo@redhat.com>
+
+ * gcc.c-torture/execute/20021120-2.c: New test.
+
+2002-11-20 Richard Sandiford <rsandifo@redhat.com>
+
+ * gcc.c-torture/execute/20021120-1.c: New test.
+
+2002-11-20 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.c-torture/execute/20021118-3.c: New test.
+
+2002-11-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+ * gcc.c-torture/compile/20021119-1.c: New test.
+
+2002-11-19 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * gcc.dg/duff-1.c: New test.
+ * gcc.dg/duff-2.c: New test.
+ * gcc.dg/duff-3.c: New test.
+
+2002-11-18 Neil Booth <neil@daikokuya.co.uk>
+
+ * gcc.dg/cpp/_Pragma5.c: New test.
+
+2002-11-18 Richard Sandiford <rsandifo@redhat.com>
+
+ * gcc.c-torture/execute/20021118-2.c: New test.
+
+2002-11-18 Richard Sandiford <rsandifo@redhat.com>
+
+ * gcc.c-torture/execute/20021118-1.c: New test.
+
+2002-11-16 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.dg/20021116-1.c: New test.
+
+2002-11-14 Mark Mitchell <mark@codesourcery.com>
+
+ * g++.dg/abi/vcall1.C: New test.
+
+2002-11-14 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.dg/20021029-1.c: New test.
+ * gcc.dg/20021029-2.c: New test.
+
+2002-11-13 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * g++.dg/abi/vague1.C (dg-final): Return if target is hppa*-*-hpux*.
+
+2002-11-09 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR c/8439
+ * gcc.dg/20021110.c: Move to ...
+ * gcc.c-torture/compile/20021110.c: .... here.
+
+2002-11-11 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
+
+ PR c/8467
+ * gcc.c-torture/execute/20021111-1.c
+
+2002-11-09 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR c/8439
+ * gcc.dg/20021110.c: New test.
+
+2002-11-10 Mark Mitchell <mark@codesourcery.com>
+
+ * g++.dg/abi/vthunk3.C: Run only on x86.
+
+2002-11-10 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * gcc.dg/c90-idem-qual-2.c, gcc.dg/c99-idem-qual-2.c: New tests.
+
+2002-11-09 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * lib/compat.exp (compat-execute): Fix logic error in last
+ change.
+
+2002-11-09 Neil Booth <neil@daikokuya.co.uk>
+
+ * gcc.dg/cpp/trad/assembler.S, gcc.dg/cpp/trad/directive.c: Update.
+
+2002-11-09 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/8389
+ * g++.dg/template/access6.C: New test.
+
Fri Nov 8 10:52:15 CET 2002 Jan Hubicka <jh@suse.cz>
* gcc.c-torture/compile/20021108-1.c: New testcase for x86-64 failure.
diff --git a/gcc/testsuite/g++.dg/abi/vague1.C b/gcc/testsuite/g++.dg/abi/vague1.C
index 928d652b836..3d10edd8abe 100644
--- a/gcc/testsuite/g++.dg/abi/vague1.C
+++ b/gcc/testsuite/g++.dg/abi/vague1.C
@@ -2,7 +2,9 @@
// instantiations.
// Disable debug info so we don't get confused by the symbol name there.
+// The test fails on hppa*-*-hpux* because the symbol _ZN1AIiE1tE is imported.
// { dg-options "-g0" }
+// { dg-final { if { [istarget hppa*-*-hpux*] } { return } } }
// { dg-final { scan-assembler-not "_ZN1AIiE1tE" } }
template <class T> struct A {
diff --git a/gcc/testsuite/g++.dg/abi/vthunk3.C b/gcc/testsuite/g++.dg/abi/vthunk3.C
index 59e60678d06..3bd2fd40a18 100644
--- a/gcc/testsuite/g++.dg/abi/vthunk3.C
+++ b/gcc/testsuite/g++.dg/abi/vthunk3.C
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target i?86-*-* } }
// { dg-options "-fabi-version=0" }
struct A {
diff --git a/gcc/testsuite/gcc.dg/cpp/trad/assembler.S b/gcc/testsuite/gcc.dg/cpp/trad/assembler.S
index 729162a5120..75bb62841a1 100644
--- a/gcc/testsuite/gcc.dg/cpp/trad/assembler.S
+++ b/gcc/testsuite/gcc.dg/cpp/trad/assembler.S
@@ -4,6 +4,10 @@
/* { dg-do preprocess } */
+#ifndef FOO
+#1 /* Once caused a bogus unterminated #ifndef. */
+#endif
+
#define foo() mov r0, #5 /* { dg-bogus "not followed" "spurious warning" } */
entry:
diff --git a/gcc/testsuite/gcc.dg/cpp/trad/directive.c b/gcc/testsuite/gcc.dg/cpp/trad/directive.c
index 04203097b24..ee7ebcab031 100644
--- a/gcc/testsuite/gcc.dg/cpp/trad/directive.c
+++ b/gcc/testsuite/gcc.dg/cpp/trad/directive.c
@@ -2,6 +2,9 @@
/* { dg-do preprocess } */
+#define HASH #
+HASH
+
/* There is a #error directive. */
#error bad /* { dg-error "bad" } */
diff --git a/gcc/testsuite/lib/compat.exp b/gcc/testsuite/lib/compat.exp
index 21c098eb00f..89cf5ae5e0f 100644
--- a/gcc/testsuite/lib/compat.exp
+++ b/gcc/testsuite/lib/compat.exp
@@ -231,7 +231,7 @@ proc compat-execute { src1 use_alt } {
set files [glob -nocomplain *.o]
if { $files != "" } {
foreach objfile $files {
- if { [info exists gluefile] && $objfile != $gluefile } {
+ if { ![info exists gluefile] || $objfile != $gluefile } {
eval "remote_file build delete $objfile"
}
}
diff --git a/gcc/tlink.c b/gcc/tlink.c
index 4a56d4849b9..b4a724e1946 100644
--- a/gcc/tlink.c
+++ b/gcc/tlink.c
@@ -73,8 +73,8 @@ hash_string_eq (s1_p, s2_p)
const void *s1_p;
const void *s2_p;
{
- const char *const *s1 = (const char *const *)s1_p;
- const char *s2 = (const char *)s2_p;
+ const char *const *s1 = (const char *const *) s1_p;
+ const char *s2 = (const char *) s2_p;
return strcmp (*s1, s2) == 0;
}
@@ -82,7 +82,7 @@ static hashval_t
hash_string_hash (s_p)
const void *s_p;
{
- const char *const *s = (const char *const *)s_p;
+ const char *const *s = (const char *const *) s_p;
return (*htab_hash_string) (*s);
}
@@ -120,7 +120,7 @@ symbol_hash_lookup (string, create)
{
PTR *e;
e = htab_find_slot_with_hash (symbol_table, string,
- (*htab_hash_string)(string),
+ (*htab_hash_string) (string),
create ? INSERT : NO_INSERT);
if (e == NULL)
return NULL;
@@ -143,7 +143,7 @@ file_hash_lookup (string)
{
PTR *e;
e = htab_find_slot_with_hash (file_table, string,
- (*htab_hash_string)(string),
+ (*htab_hash_string) (string),
INSERT);
if (*e == NULL)
{
@@ -165,7 +165,7 @@ demangled_hash_lookup (string, create)
{
PTR *e;
e = htab_find_slot_with_hash (demangled_table, string,
- (*htab_hash_string)(string),
+ (*htab_hash_string) (string),
create ? INSERT : NO_INSERT);
if (e == NULL)
return NULL;
@@ -583,13 +583,13 @@ scan_linker_output (fname)
symbol *sym;
int end;
- while (*p && ISSPACE ((unsigned char)*p))
+ while (*p && ISSPACE ((unsigned char) *p))
++p;
if (! *p)
continue;
- for (q = p; *q && ! ISSPACE ((unsigned char)*q); ++q)
+ for (q = p; *q && ! ISSPACE ((unsigned char) *q); ++q)
;
/* Try the first word on the line. */
@@ -605,9 +605,9 @@ scan_linker_output (fname)
/* Some SVR4 linkers produce messages like
ld: 0711-317 ERROR: Undefined symbol: .g__t3foo1Zi
*/
- if (! sym && ! end && strstr (q+1, "Undefined symbol: "))
+ if (! sym && ! end && strstr (q + 1, "Undefined symbol: "))
{
- char *p = strrchr (q+1, ' ');
+ char *p = strrchr (q + 1, ' ');
p++;
if (*p == '.')
p++;
@@ -619,7 +619,7 @@ scan_linker_output (fname)
if (! sym && ! end)
/* Try a mangled name in quotes. */
{
- const char *oldq = q+1;
+ const char *oldq = q + 1;
demangled *dem = 0;
q = 0;
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 5ab5a561fc8..1f176a76c00 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -2479,10 +2479,11 @@ rest_of_compilation (decl)
convert_from_eh_region_ranges ();
/* If function is inline, and we don't yet know whether to
- compile it by itself, defer decision till end of compilation.
- finish_compilation will call rest_of_compilation again
- for those functions that need to be output. Also defer those
- functions that we are supposed to defer. */
+ compile it by itself, defer decision till end of compilation.
+ wrapup_global_declarations will (indirectly) call
+ rest_of_compilation again for those functions that need to
+ be output. Also defer those functions that we are supposed
+ to defer. */
if (inlinable
|| (DECL_INLINE (decl)
@@ -3607,9 +3608,10 @@ rest_of_compilation (decl)
know for certain that we will be generating an out-of-line copy,
the first invocation of this routine (rest_of_compilation) will
skip over this code by doing a `goto exit_rest_of_compilation;'.
- Later on, finish_compilation will call rest_of_compilation again
- for those inline functions that need to have out-of-line copies
- generated. During that call, we *will* be routed past here. */
+ Later on, wrapup_global_declarations will (indirectly) call
+ rest_of_compilation again for those inline functions that need
+ to have out-of-line copies generated. During that call, we
+ *will* be routed past here. */
timevar_push (TV_SYMOUT);
(*debug_hooks->function_decl) (decl);
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 898dacb3668..6dea3539cc0 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -123,6 +123,8 @@ static tree initialize_inlined_parameters PARAMS ((inline_data *, tree, tree, tr
static void remap_block PARAMS ((tree *, tree, inline_data *));
static tree add_stmt_to_compound PARAMS ((tree, tree, tree));
#endif /* INLINER_FOR_JAVA */
+static tree find_alloca_call_1 PARAMS ((tree *, int *, void *));
+static tree find_alloca_call PARAMS ((tree));
/* The approximate number of instructions per statement. This number
need not be particularly accurate; it is used only to make
@@ -472,7 +474,7 @@ copy_body_r (tp, walk_subtrees, data)
{
copy_body_r (&assignment, walk_subtrees, data);
*tp = build (COMPOUND_EXPR, void_type_node, assignment, goto_stmt);
- TREE_SIDE_EFFECTS (*tp) = 1;
+ TREE_SIDE_EFFECTS (*tp) = 1;
}
#endif /* INLINER_FOR_JAVA */
/* If we're not returning anything just do the jump. */
@@ -525,8 +527,8 @@ copy_body_r (tp, walk_subtrees, data)
}
else if (TREE_CODE (*tp) == EXIT_BLOCK_EXPR)
{
- splay_tree_node n
- = splay_tree_lookup (id->decl_map,
+ splay_tree_node n
+ = splay_tree_lookup (id->decl_map,
(splay_tree_key) TREE_OPERAND (*tp, 0));
/* We _must_ have seen the enclosing LABELED_BLOCK_EXPR. */
if (! n)
@@ -731,7 +733,7 @@ initialize_inlined_parameters (id, args, fn, block)
#else /* INLINER_FOR_JAVA */
{
tree assignment = build (MODIFY_EXPR, TREE_TYPE (p), var, value);
- init_stmts = add_stmt_to_compound (init_stmts, TREE_TYPE (p),
+ init_stmts = add_stmt_to_compound (init_stmts, TREE_TYPE (p),
assignment);
}
else
@@ -857,6 +859,27 @@ tree_inlinable_function_p (fn)
return inlinable_function_p (fn, NULL);
}
+/* if *TP is possibly call to alloca, return nonzero. */
+static tree
+find_alloca_call_1 (tp, walk_subtrees, data)
+ tree *tp;
+ int *walk_subtrees ATTRIBUTE_UNUSED;
+ void *data ATTRIBUTE_UNUSED;
+{
+ if (alloca_call_p (*tp))
+ return *tp;
+ return NULL;
+}
+
+/* Return subexpression representing possible alloca call,
+ if any. */
+static tree
+find_alloca_call (exp)
+ tree exp;
+{
+ return walk_tree (&exp, find_alloca_call_1, NULL, NULL);
+}
+
/* Returns nonzero if FN is a function that can be inlined into the
inlining context ID_. If ID_ is NULL, check whether the function
can be inlined at all. */
@@ -897,6 +920,13 @@ inlinable_function_p (fn, id)
else if (! (*lang_hooks.tree_inlining.disregard_inline_limits) (fn)
&& currfn_insns > MAX_INLINE_INSNS_SINGLE)
;
+ /* Refuse to inline alloca call unless user explicitly forced so as this may
+ change program's memory overhead drastically when the function using alloca
+ is called in loop. In GCC present in SPEC2000 inlining into schedule_block
+ cause it to require 2GB of ram instead of 256MB. */
+ else if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn)) == NULL
+ && find_alloca_call (DECL_SAVED_TREE (fn)))
+ ;
/* All is well. We can inline this function. Traditionally, GCC
has refused to inline functions using alloca, or functions whose
values are returned in a PARALLEL, and a few other such obscure
@@ -1120,10 +1150,10 @@ expand_call_inline (tp, walk_subtrees, data)
inline calls to FN that appear in the initializers for the
parameters. */
expand_calls_inline (&arg_inits, id);
-
+
/* And add them to the tree. */
- BLOCK_EXPR_BODY (expr) = add_stmt_to_compound (BLOCK_EXPR_BODY (expr),
- TREE_TYPE (arg_inits),
+ BLOCK_EXPR_BODY (expr) = add_stmt_to_compound (BLOCK_EXPR_BODY (expr),
+ TREE_TYPE (arg_inits),
arg_inits);
}
#endif /* INLINER_FOR_JAVA */
@@ -1182,7 +1212,7 @@ expand_call_inline (tp, walk_subtrees, data)
{
tree *next = &BLOCK_VARS (expr);
while (*next)
- next = &TREE_CHAIN (*next);
+ next = &TREE_CHAIN (*next);
*next = decl;
}
}
@@ -1202,7 +1232,7 @@ expand_call_inline (tp, walk_subtrees, data)
new_body = copy_body (id);
TREE_TYPE (new_body) = TREE_TYPE (TREE_TYPE (fn));
BLOCK_EXPR_BODY (expr)
- = add_stmt_to_compound (BLOCK_EXPR_BODY (expr),
+ = add_stmt_to_compound (BLOCK_EXPR_BODY (expr),
TREE_TYPE (new_body), new_body);
inlined_body = &BLOCK_EXPR_BODY (expr);
}
@@ -1228,7 +1258,7 @@ expand_call_inline (tp, walk_subtrees, data)
statement-expression is the returned value of the function. */
#ifndef INLINER_FOR_JAVA
COMPOUND_BODY (stmt) = chainon (COMPOUND_BODY (stmt), use_stmt);
-
+
/* Close the block for the parameters. */
scope_stmt = build_stmt (SCOPE_STMT, DECL_INITIAL (fn));
SCOPE_NO_CLEANUPS_P (scope_stmt) = 1;
@@ -1242,11 +1272,11 @@ expand_call_inline (tp, walk_subtrees, data)
promoted, convert it back to the expected type. */
if (TREE_TYPE (TREE_TYPE (fn)) != TREE_TYPE (retvar))
retvar = build1 (NOP_EXPR, TREE_TYPE (TREE_TYPE (fn)), retvar);
- BLOCK_EXPR_BODY (expr)
- = add_stmt_to_compound (BLOCK_EXPR_BODY (expr),
+ BLOCK_EXPR_BODY (expr)
+ = add_stmt_to_compound (BLOCK_EXPR_BODY (expr),
TREE_TYPE (retvar), retvar);
}
-
+
java_inlining_merge_static_initializers (fn, id->decl_map);
#endif /* INLINER_FOR_JAVA */
@@ -1265,7 +1295,7 @@ expand_call_inline (tp, walk_subtrees, data)
*tp = build_expr_wfl (expr, DECL_SOURCE_FILE (fn), DECL_SOURCE_LINE (fn),
/*col=*/0);
#else /* INLINER_FOR_JAVA */
- *tp = build_expr_wfl (expr, DECL_SOURCE_FILE (fn),
+ *tp = build_expr_wfl (expr, DECL_SOURCE_FILE (fn),
DECL_SOURCE_LINE_FIRST(fn),
/*col=*/0);
#endif /* INLINER_FOR_JAVA */
@@ -1367,8 +1397,9 @@ optimize_inline_calls (fn)
{
tree ifn = make_tree_vec (VARRAY_ACTIVE_SIZE (id.inlined_fns));
- memcpy (&TREE_VEC_ELT (ifn, 0), &VARRAY_TREE (id.inlined_fns, 0),
- VARRAY_ACTIVE_SIZE (id.inlined_fns) * sizeof (tree));
+ if (VARRAY_ACTIVE_SIZE (id.inlined_fns))
+ memcpy (&TREE_VEC_ELT (ifn, 0), &VARRAY_TREE (id.inlined_fns, 0),
+ VARRAY_ACTIVE_SIZE (id.inlined_fns) * sizeof (tree));
DECL_INLINED_FNS (fn) = ifn;
}
}
diff --git a/gcc/tree.c b/gcc/tree.c
index 13ceae50ee8..6afae656253 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -4665,6 +4665,22 @@ tree_class_check_failed (node, cl, file, line, function)
tree_code_name[TREE_CODE (node)], function, trim_filename (file), line);
}
+/* Similar to above, except that the check is for the bounds of a TREE_VEC's
+ (dynamically sized) vector. */
+
+void
+tree_vec_elt_check_failed (idx, len, file, line, function)
+ int idx;
+ int len;
+ const char *file;
+ int line;
+ const char *function;
+{
+ internal_error
+ ("tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d",
+ idx + 1, len, function, trim_filename (file), line);
+}
+
#endif /* ENABLE_TREE_CHECKING */
/* For a new vector type node T, build the information necessary for
diff --git a/gcc/tree.h b/gcc/tree.h
index 55400831b15..58b985bf573 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -317,12 +317,26 @@ struct tree_common GTY(())
__FUNCTION__); \
__t; })
+#define TREE_VEC_ELT_CHECK(t, i) __extension__ \
+(*({const tree __t = t; \
+ const int __i = (i); \
+ if (TREE_CODE (__t) != TREE_VEC) \
+ tree_check_failed (__t, TREE_VEC, \
+ __FILE__, __LINE__, __FUNCTION__); \
+ if (__i < 0 || __i >= __t->vec.length) \
+ tree_vec_elt_check_failed (__i, __t->vec.length, \
+ __FILE__, __LINE__, __FUNCTION__); \
+ &__t->vec.a[__i]; }))
+
extern void tree_check_failed PARAMS ((const tree, enum tree_code,
const char *, int, const char *))
ATTRIBUTE_NORETURN;
extern void tree_class_check_failed PARAMS ((const tree, int,
const char *, int, const char *))
ATTRIBUTE_NORETURN;
+extern void tree_vec_elt_check_failed PARAMS ((int, int, const char *,
+ int, const char *))
+ ATTRIBUTE_NORETURN;
#else /* not ENABLE_TREE_CHECKING, or not gcc */
@@ -330,6 +344,7 @@ extern void tree_class_check_failed PARAMS ((const tree, int,
#define TREE_CLASS_CHECK(t, code) (t)
#define CST_OR_CONSTRUCTOR_CHECK(t) (t)
#define EXPR_CHECK(t) (t)
+#define TREE_VEC_ELT_CHECK(t, i) ((t)->vec.a[i])
#endif
@@ -810,10 +825,11 @@ struct tree_list GTY(())
/* In a TREE_VEC node. */
#define TREE_VEC_LENGTH(NODE) (TREE_VEC_CHECK (NODE)->vec.length)
-#define TREE_VEC_ELT(NODE,I) (TREE_VEC_CHECK (NODE)->vec.a[I])
#define TREE_VEC_END(NODE) \
((void) TREE_VEC_CHECK (NODE), &((NODE)->vec.a[(NODE)->vec.length]))
+#define TREE_VEC_ELT(NODE,I) TREE_VEC_ELT_CHECK (NODE, I)
+
struct tree_vec GTY(())
{
struct tree_common common;
@@ -3002,6 +3018,7 @@ extern rtx emit_line_note PARAMS ((const char *, int));
/* In calls.c */
extern int setjmp_call_p PARAMS ((tree));
+extern bool alloca_call_p PARAMS ((tree));
/* In attribs.c. */
diff --git a/gcc/varasm.c b/gcc/varasm.c
index ba1ef460c02..736c2571cb8 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -3680,7 +3680,7 @@ static int
output_addressed_constants (exp)
tree exp;
{
- int reloc = 0;
+ int reloc = 0, reloc2;
tree tem;
/* Give the front-end a chance to convert VALUE to something that
@@ -3709,11 +3709,20 @@ output_addressed_constants (exp)
break;
case PLUS_EXPR:
- case MINUS_EXPR:
reloc = output_addressed_constants (TREE_OPERAND (exp, 0));
reloc |= output_addressed_constants (TREE_OPERAND (exp, 1));
break;
+ case MINUS_EXPR:
+ reloc = output_addressed_constants (TREE_OPERAND (exp, 0));
+ reloc2 = output_addressed_constants (TREE_OPERAND (exp, 1));
+ /* The difference of two local labels is computable at link time. */
+ if (reloc == 1 && reloc2 == 1)
+ reloc = 0;
+ else
+ reloc |= reloc2;
+ break;
+
case NOP_EXPR:
case CONVERT_EXPR:
case NON_LVALUE_EXPR:
@@ -5077,7 +5086,7 @@ categorize_decl_for_section (decl, reloc, shlib)
ret = SECCAT_DATA_REL_RO;
else if (shlib && reloc)
ret = SECCAT_DATA_REL_RO_LOCAL;
- else if (flag_merge_constants < 2)
+ else if (reloc || flag_merge_constants < 2)
/* C and C++ don't allow different variables to share the same
location. -fmerge-all-constants allows even that (at the
expense of not conforming). */
diff --git a/gcc/version.c b/gcc/version.c
index 7e0e8877a61..7ceae2c2fad 100644
--- a/gcc/version.c
+++ b/gcc/version.c
@@ -6,7 +6,7 @@
please modify this string to indicate that, e.g. by putting your
organization's name in parentheses at the end of the string. */
-const char version_string[] = "3.3 20021108 (experimental)";
+const char version_string[] = "3.3 20021124 (experimental)";
/* This is the location of the online document giving instructions for
reporting bugs. If you distribute a modified version of GCC,
diff --git a/include/ChangeLog b/include/ChangeLog
index f4d4652f98a..9318821f203 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -6,6 +6,14 @@
(struct splay_tree_s): Likewise. Make allocate_data a PTR,
not a void *.
+2002-11-23 Simon Burge <simonb@wasabisystems.com>
+
+ * libiberty.h (basename): Add NetBSD to the list.
+
+2002-11-22 Daniel Jacobowitz <drow@mvista.com>
+
+ * libiberty.h (make_relative_prefix): Add prototype.
+
2002-10-26 Roger Sayle <roger@eyesopen.com>
* partition.h: Close the extern "C" scope when compiling with C++.
diff --git a/include/libiberty.h b/include/libiberty.h
index 983fd96e5ae..f9916c58c73 100644
--- a/include/libiberty.h
+++ b/include/libiberty.h
@@ -74,7 +74,7 @@ extern char **dupargv PARAMS ((char **)) ATTRIBUTE_MALLOC;
to find the declaration so provide a fully prototyped one. If it
is 1, we found it so don't provide any declaration at all. */
#if !HAVE_DECL_BASENAME
-#if defined (__GNU_LIBRARY__ ) || defined (__linux__) || defined (__FreeBSD__) || defined (__OpenBSD__) || defined (__CYGWIN__) || defined (__CYGWIN32__) || defined (HAVE_DECL_BASENAME)
+#if defined (__GNU_LIBRARY__ ) || defined (__linux__) || defined (__FreeBSD__) || defined (__OpenBSD__) || defined(__NetBSD__) || defined (__CYGWIN__) || defined (__CYGWIN32__) || defined (HAVE_DECL_BASENAME)
extern char *basename PARAMS ((const char *));
#else
extern char *basename ();
@@ -145,6 +145,12 @@ extern char * getpwd PARAMS ((void));
extern long get_run_time PARAMS ((void));
+/* Generate a relocated path to some installation directory. Allocates
+ return value using malloc. */
+
+extern char *make_relative_prefix PARAMS ((const char *, const char *,
+ const char *));
+
/* Choose a temporary directory to use for scratch files. */
extern char *choose_temp_base PARAMS ((void)) ATTRIBUTE_MALLOC;
diff --git a/libf2c/ChangeLog b/libf2c/ChangeLog
index e06717f03bd..7e10295040d 100644
--- a/libf2c/ChangeLog
+++ b/libf2c/ChangeLog
@@ -1,3 +1,8 @@
+2002-11-19 Toon Moene <toon@moene.indiv.nluug.nl>
+
+ PR fortran/8587
+ * libF77/pow_zz.c: Handle (0.0, 0.0) ** power.
+
2002-09-23 Zack Weinberg <zack@codesourcery.com>
* libF77/Version.c: Rename junk to __LIBF77_VERSION__. Add
diff --git a/libf2c/libF77/pow_zz.c b/libf2c/libF77/pow_zz.c
index 522b639bc7e..d5cfbf3d931 100644
--- a/libf2c/libF77/pow_zz.c
+++ b/libf2c/libF77/pow_zz.c
@@ -8,6 +8,12 @@ pow_zz (doublecomplex * r, doublecomplex * a, doublecomplex * b)
{
double logr, logi, x, y;
+ if (a->r == 0.0 && a->i == 0.0)
+ {
+ /* Algorithm below doesn't cope. */
+ r->r = r->i = 0.0;
+ return;
+ }
logr = log (f__cabs (a->r, a->i));
logi = atan2 (a->i, a->r);
diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index adfa3885e7d..c36ff7f5c29 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,3 +1,11 @@
+2002-11-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * src/s390/sysv.S (.eh_frame section): Adapt to pcrel FDE encoding.
+
+2002-11-11 DJ Delorie <dj@redhat.com>
+
+ * configure.in: Look for common files in the right place.
+
2002-10-08 Ulrich Weigand <uweigand@de.ibm.com>
* src/java_raw_api.c (ffi_java_raw_to_ptrarray): Interpret
diff --git a/libffi/configure b/libffi/configure
index 37ea9b48dd0..13a6187c2b4 100755
--- a/libffi/configure
+++ b/libffi/configure
@@ -652,9 +652,8 @@ else
libffi_basedir="${srcdir}"
fi
-
ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+for ac_dir in ${libffi_basedir}/.. $srcdir/${libffi_basedir}/..; do
if test -f $ac_dir/install-sh; then
ac_aux_dir=$ac_dir
ac_install_sh="$ac_aux_dir/install-sh -c"
@@ -666,13 +665,14 @@ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
fi
done
if test -z "$ac_aux_dir"; then
- { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
+ { echo "configure: error: can not find install-sh or install.sh in ${libffi_basedir}/.. $srcdir/${libffi_basedir}/.." 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.
+
# Make sure we can run config.sub.
if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
diff --git a/libffi/configure.in b/libffi/configure.in
index 9062dca9e7e..3dccbeb85b3 100644
--- a/libffi/configure.in
+++ b/libffi/configure.in
@@ -30,6 +30,7 @@ else
libffi_basedir="${srcdir}"
fi
AC_SUBST(libffi_basedir)
+AC_CONFIG_AUX_DIR(${libffi_basedir}/..)
AC_CANONICAL_HOST
diff --git a/libffi/src/s390/sysv.S b/libffi/src/s390/sysv.S
index 50e94f5ee2a..7d6f4494921 100644
--- a/libffi/src/s390/sysv.S
+++ b/libffi/src/s390/sysv.S
@@ -152,10 +152,12 @@ ffi_closure_SYSV:
.LSCIE1:
.4byte 0x0 # CIE Identifier Tag
.byte 0x1 # CIE Version
- .ascii "\0" # CIE Augmentation
+ .ascii "zR\0" # CIE Augmentation
.uleb128 0x1 # CIE Code Alignment Factor
.sleb128 -4 # CIE Data Alignment Factor
.byte 0xe # CIE RA Column
+ .uleb128 0x1 # Augmentation size
+ .byte 0x1b # FDE Encoding (pcrel sdata4)
.byte 0xc # DW_CFA_def_cfa
.uleb128 0xf
.uleb128 0x60
@@ -165,8 +167,9 @@ ffi_closure_SYSV:
.4byte .LEFDE1-.LASFDE1 # FDE Length
.LASFDE1:
.4byte .LASFDE1-.Lframe1 # FDE CIE offset
- .4byte .LFB1 # FDE initial location
+ .4byte .LFB1-. # FDE initial location
.4byte .LFE1-.LFB1 # FDE address range
+ .uleb128 0x0 # Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.4byte .LCFI0-.LFB1
.byte 0x8f # DW_CFA_offset, column 0xf
@@ -203,8 +206,9 @@ ffi_closure_SYSV:
.4byte .LEFDE2-.LASFDE2 # FDE Length
.LASFDE2:
.4byte .LASFDE2-.Lframe1 # FDE CIE offset
- .4byte .LFB2 # FDE initial location
+ .4byte .LFB2-. # FDE initial location
.4byte .LFE2-.LFB2 # FDE address range
+ .uleb128 0x0 # Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.4byte .LCFI10-.LFB2
.byte 0x8f # DW_CFA_offset, column 0xf
@@ -347,10 +351,12 @@ ffi_closure_SYSV:
.LSCIE1:
.4byte 0x0 # CIE Identifier Tag
.byte 0x1 # CIE Version
- .ascii "\0" # CIE Augmentation
+ .ascii "zR\0" # CIE Augmentation
.uleb128 0x1 # CIE Code Alignment Factor
.sleb128 -8 # CIE Data Alignment Factor
.byte 0xe # CIE RA Column
+ .uleb128 0x1 # Augmentation size
+ .byte 0x1b # FDE Encoding (pcrel sdata4)
.byte 0xc # DW_CFA_def_cfa
.uleb128 0xf
.uleb128 0xa0
@@ -360,8 +366,9 @@ ffi_closure_SYSV:
.4byte .LEFDE1-.LASFDE1 # FDE Length
.LASFDE1:
.4byte .LASFDE1-.Lframe1 # FDE CIE offset
- .8byte .LFB1 # FDE initial location
- .8byte .LFE1-.LFB1 # FDE address range
+ .4byte .LFB1-. # FDE initial location
+ .4byte .LFE1-.LFB1 # FDE address range
+ .uleb128 0x0 # Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.4byte .LCFI0-.LFB1
.byte 0x8f # DW_CFA_offset, column 0xf
@@ -398,8 +405,9 @@ ffi_closure_SYSV:
.4byte .LEFDE2-.LASFDE2 # FDE Length
.LASFDE2:
.4byte .LASFDE2-.Lframe1 # FDE CIE offset
- .8byte .LFB2 # FDE initial location
- .8byte .LFE2-.LFB2 # FDE address range
+ .4byte .LFB2-. # FDE initial location
+ .4byte .LFE2-.LFB2 # FDE address range
+ .uleb128 0x0 # Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.4byte .LCFI10-.LFB2
.byte 0x8f # DW_CFA_offset, column 0xf
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 7121b4aec01..c58dc1fd782 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,19 @@
+2002-11-24 Nick Clifton <nickc@redhat.com>
+
+ * make-relative-prefix.c (make_relative_prefix): Ensure return
+ string is empty before using strcat to construct it.
+
+2002-11-22 Daniel Jacobowitz <drow@mvista.com>
+
+ * Makefile.in: Add make-relative-prefix.c.
+ * make-relative-prefix.c: New file.
+ * functions.texi: Rebuilt.
+
+2002-11-16 Jakub Jelinek <jakub@redhat.com>
+
+ * md5.c (md5_process_block): Avoid `function-like macro "F{G,H,I}" must be
+ used with arguments in traditional C' warnings.
+
2002-10-16 Jakub Jelinek <jakub@redhat.com>
* config.table: Use mh-s390pic for s390x too.
diff --git a/libiberty/Makefile.in b/libiberty/Makefile.in
index e0bb15a7519..cdf14a4311b 100644
--- a/libiberty/Makefile.in
+++ b/libiberty/Makefile.in
@@ -135,6 +135,7 @@ CFILES = alloca.c argv.c asprintf.c atexit.c \
hashtab.c hex.c \
index.c insque.c \
lbasename.c \
+ make-relative-prefix.c \
make-temp-file.c md5.c memchr.c memcmp.c memcpy.c memmove.c \
memset.c mkstemps.c \
objalloc.c obstack.c \
@@ -159,6 +160,7 @@ REQUIRED_OFILES = regex.o cplus-dem.o cp-demangle.o md5.o \
getopt.o getopt1.o getpwd.o getruntime.o \
hashtab.o hex.o \
lbasename.o \
+ make-relative-prefix.o \
make-temp-file.o \
objalloc.o obstack.o \
partition.o pexecute.o \
@@ -432,6 +434,7 @@ hashtab.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/hashtab.h \
hex.o: $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
lbasename.o: $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
$(INCDIR)/safe-ctype.h
+make-relative-prefix.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
make-temp-file.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
md5.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/md5.h
memchr.o: $(INCDIR)/ansidecl.h
diff --git a/libiberty/functions.texi b/libiberty/functions.texi
index b518243d95a..7d9c181d219 100644
--- a/libiberty/functions.texi
+++ b/libiberty/functions.texi
@@ -276,7 +276,7 @@ itself.
@end deftypefn
-@c getruntime.c:78
+@c getruntime.c:82
@deftypefn Replacement long get_run_time (void)
Returns the time used so far, in microseconds. If possible, this is
@@ -322,11 +322,12 @@ between calls to @code{getpwd}.
Initializes the array mapping the current character set to
corresponding hex values. This function must be called before any
-call to @code{hex_p} or @code{hex_value}.
+call to @code{hex_p} or @code{hex_value}. If you fail to call it, a
+default ASCII-based table will normally be used on ASCII systems.
@end deftypefn
-@c hex.c:33
+@c hex.c:34
@deftypefn Extension int hex_p (int @var{c})
Evaluates to non-zero if the given character is a valid hex character,
@@ -335,7 +336,7 @@ or zero if it is not. Note that the value you pass will be cast to
@end deftypefn
-@c hex.c:41
+@c hex.c:42
@deftypefn Extension int hex_value (int @var{c})
Returns the numeric equivalent of the given character when interpreted
@@ -391,6 +392,22 @@ and a path ending in @code{/} returns the empty string after it.
@end deftypefn
+@c make-relative-prefix.c:24
+@deftypefn Extension {const char*} make_relative_prefix (const char *@var{progname}, const char *@var{bin_prefix}, const char *@var{prefix})
+
+Given three strings @var{progname}, @var{bin_prefix}, @var{prefix}, return a string
+that gets to @var{prefix} starting with the directory portion of @var{progname} and
+a relative pathname of the difference between @var{bin_prefix} and @var{prefix}.
+
+For example, if @var{bin_prefix} is @code{/alpha/beta/gamma/gcc/delta}, @var{prefix}
+is @code{/alpha/beta/gamma/omega/}, and @var{progname} is @code{/red/green/blue/gcc},
+then this function will return @code{/red/green/blue/../../omega/}.
+
+The return value is normally allocated via @code{malloc}. If no relative prefix
+can be found, return @code{NULL}.
+
+@end deftypefn
+
@c make-temp-file.c:138
@deftypefn Replacement char* make_temp_file (const char *@var{suffix})
diff --git a/libiberty/md5.c b/libiberty/md5.c
index 2e829fb3ee1..e458f2a6a64 100644
--- a/libiberty/md5.c
+++ b/libiberty/md5.c
@@ -343,68 +343,76 @@ md5_process_block (buffer, len, ctx)
in CORRECT_WORDS. Redefine the macro to take an additional first
argument specifying the function to use. */
#undef OP
-#define OP(f, a, b, c, d, k, s, T) \
+#define OP(a, b, c, d, k, s, T) \
do \
{ \
- a += f (b, c, d) + correct_words[k] + T; \
+ a += FX (b, c, d) + correct_words[k] + T; \
CYCLIC (a, s); \
a += b; \
} \
while (0)
+#define FX(b, c, d) FG (b, c, d)
+
/* Round 2. */
- OP (FG, A, B, C, D, 1, 5, (md5_uint32) 0xf61e2562);
- OP (FG, D, A, B, C, 6, 9, (md5_uint32) 0xc040b340);
- OP (FG, C, D, A, B, 11, 14, (md5_uint32) 0x265e5a51);
- OP (FG, B, C, D, A, 0, 20, (md5_uint32) 0xe9b6c7aa);
- OP (FG, A, B, C, D, 5, 5, (md5_uint32) 0xd62f105d);
- OP (FG, D, A, B, C, 10, 9, (md5_uint32) 0x02441453);
- OP (FG, C, D, A, B, 15, 14, (md5_uint32) 0xd8a1e681);
- OP (FG, B, C, D, A, 4, 20, (md5_uint32) 0xe7d3fbc8);
- OP (FG, A, B, C, D, 9, 5, (md5_uint32) 0x21e1cde6);
- OP (FG, D, A, B, C, 14, 9, (md5_uint32) 0xc33707d6);
- OP (FG, C, D, A, B, 3, 14, (md5_uint32) 0xf4d50d87);
- OP (FG, B, C, D, A, 8, 20, (md5_uint32) 0x455a14ed);
- OP (FG, A, B, C, D, 13, 5, (md5_uint32) 0xa9e3e905);
- OP (FG, D, A, B, C, 2, 9, (md5_uint32) 0xfcefa3f8);
- OP (FG, C, D, A, B, 7, 14, (md5_uint32) 0x676f02d9);
- OP (FG, B, C, D, A, 12, 20, (md5_uint32) 0x8d2a4c8a);
+ OP (A, B, C, D, 1, 5, (md5_uint32) 0xf61e2562);
+ OP (D, A, B, C, 6, 9, (md5_uint32) 0xc040b340);
+ OP (C, D, A, B, 11, 14, (md5_uint32) 0x265e5a51);
+ OP (B, C, D, A, 0, 20, (md5_uint32) 0xe9b6c7aa);
+ OP (A, B, C, D, 5, 5, (md5_uint32) 0xd62f105d);
+ OP (D, A, B, C, 10, 9, (md5_uint32) 0x02441453);
+ OP (C, D, A, B, 15, 14, (md5_uint32) 0xd8a1e681);
+ OP (B, C, D, A, 4, 20, (md5_uint32) 0xe7d3fbc8);
+ OP (A, B, C, D, 9, 5, (md5_uint32) 0x21e1cde6);
+ OP (D, A, B, C, 14, 9, (md5_uint32) 0xc33707d6);
+ OP (C, D, A, B, 3, 14, (md5_uint32) 0xf4d50d87);
+ OP (B, C, D, A, 8, 20, (md5_uint32) 0x455a14ed);
+ OP (A, B, C, D, 13, 5, (md5_uint32) 0xa9e3e905);
+ OP (D, A, B, C, 2, 9, (md5_uint32) 0xfcefa3f8);
+ OP (C, D, A, B, 7, 14, (md5_uint32) 0x676f02d9);
+ OP (B, C, D, A, 12, 20, (md5_uint32) 0x8d2a4c8a);
+
+#undef FX
+#define FX(b, c, d) FH (b, c, d)
/* Round 3. */
- OP (FH, A, B, C, D, 5, 4, (md5_uint32) 0xfffa3942);
- OP (FH, D, A, B, C, 8, 11, (md5_uint32) 0x8771f681);
- OP (FH, C, D, A, B, 11, 16, (md5_uint32) 0x6d9d6122);
- OP (FH, B, C, D, A, 14, 23, (md5_uint32) 0xfde5380c);
- OP (FH, A, B, C, D, 1, 4, (md5_uint32) 0xa4beea44);
- OP (FH, D, A, B, C, 4, 11, (md5_uint32) 0x4bdecfa9);
- OP (FH, C, D, A, B, 7, 16, (md5_uint32) 0xf6bb4b60);
- OP (FH, B, C, D, A, 10, 23, (md5_uint32) 0xbebfbc70);
- OP (FH, A, B, C, D, 13, 4, (md5_uint32) 0x289b7ec6);
- OP (FH, D, A, B, C, 0, 11, (md5_uint32) 0xeaa127fa);
- OP (FH, C, D, A, B, 3, 16, (md5_uint32) 0xd4ef3085);
- OP (FH, B, C, D, A, 6, 23, (md5_uint32) 0x04881d05);
- OP (FH, A, B, C, D, 9, 4, (md5_uint32) 0xd9d4d039);
- OP (FH, D, A, B, C, 12, 11, (md5_uint32) 0xe6db99e5);
- OP (FH, C, D, A, B, 15, 16, (md5_uint32) 0x1fa27cf8);
- OP (FH, B, C, D, A, 2, 23, (md5_uint32) 0xc4ac5665);
+ OP (A, B, C, D, 5, 4, (md5_uint32) 0xfffa3942);
+ OP (D, A, B, C, 8, 11, (md5_uint32) 0x8771f681);
+ OP (C, D, A, B, 11, 16, (md5_uint32) 0x6d9d6122);
+ OP (B, C, D, A, 14, 23, (md5_uint32) 0xfde5380c);
+ OP (A, B, C, D, 1, 4, (md5_uint32) 0xa4beea44);
+ OP (D, A, B, C, 4, 11, (md5_uint32) 0x4bdecfa9);
+ OP (C, D, A, B, 7, 16, (md5_uint32) 0xf6bb4b60);
+ OP (B, C, D, A, 10, 23, (md5_uint32) 0xbebfbc70);
+ OP (A, B, C, D, 13, 4, (md5_uint32) 0x289b7ec6);
+ OP (D, A, B, C, 0, 11, (md5_uint32) 0xeaa127fa);
+ OP (C, D, A, B, 3, 16, (md5_uint32) 0xd4ef3085);
+ OP (B, C, D, A, 6, 23, (md5_uint32) 0x04881d05);
+ OP (A, B, C, D, 9, 4, (md5_uint32) 0xd9d4d039);
+ OP (D, A, B, C, 12, 11, (md5_uint32) 0xe6db99e5);
+ OP (C, D, A, B, 15, 16, (md5_uint32) 0x1fa27cf8);
+ OP (B, C, D, A, 2, 23, (md5_uint32) 0xc4ac5665);
+
+#undef FX
+#define FX(b, c, d) FI (b, c, d)
/* Round 4. */
- OP (FI, A, B, C, D, 0, 6, (md5_uint32) 0xf4292244);
- OP (FI, D, A, B, C, 7, 10, (md5_uint32) 0x432aff97);
- OP (FI, C, D, A, B, 14, 15, (md5_uint32) 0xab9423a7);
- OP (FI, B, C, D, A, 5, 21, (md5_uint32) 0xfc93a039);
- OP (FI, A, B, C, D, 12, 6, (md5_uint32) 0x655b59c3);
- OP (FI, D, A, B, C, 3, 10, (md5_uint32) 0x8f0ccc92);
- OP (FI, C, D, A, B, 10, 15, (md5_uint32) 0xffeff47d);
- OP (FI, B, C, D, A, 1, 21, (md5_uint32) 0x85845dd1);
- OP (FI, A, B, C, D, 8, 6, (md5_uint32) 0x6fa87e4f);
- OP (FI, D, A, B, C, 15, 10, (md5_uint32) 0xfe2ce6e0);
- OP (FI, C, D, A, B, 6, 15, (md5_uint32) 0xa3014314);
- OP (FI, B, C, D, A, 13, 21, (md5_uint32) 0x4e0811a1);
- OP (FI, A, B, C, D, 4, 6, (md5_uint32) 0xf7537e82);
- OP (FI, D, A, B, C, 11, 10, (md5_uint32) 0xbd3af235);
- OP (FI, C, D, A, B, 2, 15, (md5_uint32) 0x2ad7d2bb);
- OP (FI, B, C, D, A, 9, 21, (md5_uint32) 0xeb86d391);
+ OP (A, B, C, D, 0, 6, (md5_uint32) 0xf4292244);
+ OP (D, A, B, C, 7, 10, (md5_uint32) 0x432aff97);
+ OP (C, D, A, B, 14, 15, (md5_uint32) 0xab9423a7);
+ OP (B, C, D, A, 5, 21, (md5_uint32) 0xfc93a039);
+ OP (A, B, C, D, 12, 6, (md5_uint32) 0x655b59c3);
+ OP (D, A, B, C, 3, 10, (md5_uint32) 0x8f0ccc92);
+ OP (C, D, A, B, 10, 15, (md5_uint32) 0xffeff47d);
+ OP (B, C, D, A, 1, 21, (md5_uint32) 0x85845dd1);
+ OP (A, B, C, D, 8, 6, (md5_uint32) 0x6fa87e4f);
+ OP (D, A, B, C, 15, 10, (md5_uint32) 0xfe2ce6e0);
+ OP (C, D, A, B, 6, 15, (md5_uint32) 0xa3014314);
+ OP (B, C, D, A, 13, 21, (md5_uint32) 0x4e0811a1);
+ OP (A, B, C, D, 4, 6, (md5_uint32) 0xf7537e82);
+ OP (D, A, B, C, 11, 10, (md5_uint32) 0xbd3af235);
+ OP (C, D, A, B, 2, 15, (md5_uint32) 0x2ad7d2bb);
+ OP (B, C, D, A, 9, 21, (md5_uint32) 0xeb86d391);
/* Add the starting values of the context. */
A += A_save;
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 11ec52e2135..c2b65f4306f 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,593 @@
+2002-11-23 Mark Wielaard <mark@klomp.org>
+
+ * javax/naming/AuthenticationException.java: Update copyright header.
+ * javax/naming/AuthenticationNotSupportedException.java: Likewise.
+ * javax/naming/Binding.java: Likewise.
+ * javax/naming/CannotProceedException.java: Likewise.
+ * javax/naming/CommunicationException.java: Likewise.
+ * javax/naming/CompositeName.java: Likewise.
+ * javax/naming/CompoundName.java: Likewise.
+ * javax/naming/ConfigurationException.java: Likewise.
+ * javax/naming/Context.java: Likewise.
+ * javax/naming/ContextNotEmptyException.java: Likewise.
+ * javax/naming/InitialContext.java: Likewise.
+ * javax/naming/InsufficientResourcesException.java: Likewise.
+ * javax/naming/InterruptedNamingException.java: Likewise.
+ * javax/naming/LimitExceededException.java: Likewise.
+ * javax/naming/LinkException.java: Likewise.
+ * javax/naming/LinkLoopException.java: Likewise.
+ * javax/naming/LinkRef.java: Likewise.
+ * javax/naming/MalformedLinkException.java: Likewise.
+ * javax/naming/NameAlreadyBoundException.java: Likewise.
+ * javax/naming/NameClassPair.java: Likewise.
+ * javax/naming/NameNotFoundException.java: Likewise.
+ * javax/naming/NameParser.java: Likewise.
+ * javax/naming/NamingEnumeration.java: Likewise.
+ * javax/naming/NamingSecurityException.java: Likewise.
+ * javax/naming/NoInitialContextException.java: Likewise.
+ * javax/naming/NoPermissionException.java: Likewise.
+ * javax/naming/NotContextException.java: Likewise.
+ * javax/naming/OperationNotSupportedException.java: Likewise.
+ * javax/naming/PartialResultException.java: Likewise.
+ * javax/naming/Reference.java: Likewise.
+ * javax/naming/Referenceable.java: Likewise.
+ * javax/naming/ReferralException.java: Likewise.
+ * javax/naming/ServiceUnavailableException.java: Likewise.
+ * javax/naming/SizeLimitExceededException.java: Likewise.
+ * javax/naming/TimeLimitExceededException.java: Likewise.
+ * javax/naming/directory/Attribute.java: Likewise.
+ * javax/naming/directory/AttributeInUseException.java: Likewise.
+ * javax/naming/directory/AttributeModificationException.java: Likewise.
+ * javax/naming/directory/Attributes.java: Likewise.
+ * javax/naming/directory/BasicAttribute.java: Likewise.
+ * javax/naming/directory/BasicAttributes.java: Likewise.
+ * javax/naming/directory/DirContext.java: Likewise.
+ * javax/naming/directory/InitialDirContext.java: Likewise.
+ * javax/naming/directory/InvalidAttributeIdentifierException.java:
+ Likewise.
+ * javax/naming/directory/InvalidAttributeValueException.java: Likewise.
+ * javax/naming/directory/InvalidAttributesException.java: Likewise.
+ * javax/naming/directory/InvalidSearchControlsException.java: Likewise.
+ * javax/naming/directory/InvalidSearchFilterException.java: Likewise.
+ * javax/naming/directory/ModificationItem.java: Likewise.
+ * javax/naming/directory/NoSuchAttributeException.java: Likewise.
+ * javax/naming/directory/SchemaViolationException.java: Likewise.
+ * javax/naming/directory/SearchControls.java: Likewise.
+ * javax/naming/directory/SearchResult.java: Likewise.
+ * javax/naming/event/EventContext.java: Likewise.
+ * javax/naming/event/EventDirContext.java: Likewise.
+ * javax/naming/event/NamespaceChangeListener.java: Likewise.
+ * javax/naming/event/NamingEvent.java: Likewise.
+ * javax/naming/event/NamingExceptionEvent.java: Likewise.
+ * javax/naming/event/NamingListener.java: Likewise.
+ * javax/naming/event/ObjectChangeListener.java: Likewise.
+ * javax/naming/ldap/Control.java: Likewise.
+ * javax/naming/ldap/ControlFactory.java: Likewise.
+ * javax/naming/ldap/ExtendedRequest.java: Likewise.
+ * javax/naming/ldap/ExtendedResponse.java: Likewise.
+ * javax/naming/ldap/HasControls.java: Likewise.
+ * javax/naming/ldap/InitialLdapContext.java: Likewise.
+ * javax/naming/ldap/LdapContext.java: Likewise.
+ * javax/naming/ldap/LdapReferralException.java: Likewise.
+ * javax/naming/ldap/UnsolicitedNotification.java: Likewise.
+ * javax/naming/ldap/UnsolicitedNotificationEvent.java: Likewise.
+ * javax/naming/ldap/UnsolicitedNotificationListener.java: Likewise.
+ * javax/naming/spi/DirObjectFactory.java: Likewise.
+ * javax/naming/spi/DirStateFactory.java: Likewise.
+ * javax/naming/spi/DirectoryManager.java: Likewise.
+ * javax/naming/spi/InitialContextFactory.java: Likewise.
+ * javax/naming/spi/InitialContextFactoryBuilder.java: Likewise.
+ * javax/naming/spi/NamingManager.java: Likewise.
+ * javax/naming/spi/ObjectFactory.java: Likewise.
+ * javax/naming/spi/ObjectFactoryBuilder.java: Likewise.
+ * javax/naming/spi/ResolveResult.java: Likewise.
+ * javax/naming/spi/Resolver.java: Likewise.
+ * javax/naming/spi/StateFactory.java: Likewise.
+
+ * javax/naming/spi/NamingManager.java (ofb): Package private.
+
+2002-11-21 Mark Wielaard <mark@klomp.org>
+
+ * java/net/URL.java: Merge with Classpath (partly).
+ * java/net/URLStreamHandler: Merge with Classpath.
+
+2002-11-22 Michael Koch <konqueror@gmx.de>
+
+ * include/posix.h:
+ (_Jv_platform_on_close): Moved out of #ifndef DISBALE_JAVA_NET.
+ * include/win32.h:
+ (_Jv_platform_on_close): Moved out of #ifndef DISBALE_JAVA_NET.
+ (backtrace): Moved out of #ifndef DISBALE_JAVA_NET.
+
+2002-11-21 Michael Koch <konqueror@gmx.de>
+
+ * include/posix.h: I put too much into the #ifndef DISABLE_JAVA_NET.
+ Only the new network functions should be in it.
+
+2002-11-21 Michael Koch <konqueror@gmx.de>
+
+ * include/posix.h: Moved new functions into a #ifndef DISABLE_JAVA_NET
+ * include/win32.h: Moved new functions into a #ifndef DISABLE_JAVA_NET
+
+2002-11-21 Michael Koch <konqueror@gmx.de>
+
+ * java/nio/channels/AsynchronousCloseException.java,
+ java/nio/channels/CancelledKeyException.java,
+ java/nio/channels/ClosedByInterruptException.java,
+ java/nio/channels/ConnectionPendingException.java,
+ java/nio/channels/FileLockInterruptionException.java,
+ java/nio/channels/IllegalSelectorException.java,
+ java/nio/channels/NoConnectionPendingException.java,
+ java/nio/channels/NonReadableChannelException.java,
+ java/nio/channels/NonWritableChannelException.java,
+ java/nio/channels/NotYetBoundException.java,
+ java/nio/channels/NotYetConnectedException.java,
+ java/nio/channels/OverlappingFileLockException.java,
+ java/nio/channels/UnresolvedAddressException.java,
+ java/nio/channels/UnsupportedAddressTypeException.java:
+ New files.
+ * Makefile.am (ordinary_java_source_files): Added new files.
+ * Makefile.in: Regenerated.
+
+2002-11-21 Michael Koch <konqueror@gmx.de>
+
+ * include/posix.h
+ (_Jv_socket): New method.
+ (_Jv_connect): New method.
+ (_Jv_close): New method.
+ (_Jv_platform_close_on_exec): Prefixed system function with "::".
+ (_Jv_bind): New method.
+ (_Jv_listen): New method.
+ (_Jv_write): New method.
+ (_Jv_read): New method.
+ * include/win32.h
+ (_Jv_socket): New method.
+ (_Jv_connect): New method.
+ (_Jv_close): New method.
+ (_Jv_bind): New method.
+ (_Jv_listen): New method.
+ (_Jv_write): New method.
+ (_Jv_read): New method.
+ * java/net/natNetworkInterface.cc:
+ Include platform.h, removed inclusion of socket.h
+ (getRealNetworkInterfaces): Replaced ::socket() by _Jv_socket() and
+ ::close() by _Jv_close().
+ * java/net/natPlainDatagramSocketImpl.cc:
+ Removed include of socket.h, definition of NATIVE_CLOSE and _Jv_bind,
+ added some new lines to make code more readable.
+ (create): Replaced ::socket() by _Jv_socket().
+ (close): Replaced NATIVE_CLOSE() by _Jv_close().
+ * java/net/natPlainSocketImpl.cc:
+ Removed definition of NATIVE_CLOSE, _Jv_bind, Jv_connect and _Jv_accept,
+ removed include of socket.h, removed some windows defines
+ (now in include/win32.h).
+ (create): Replaced ::socket() by _Jv_socket().
+ (close): Replaced NATIVE_CLOSE() by _Jv_close().
+ (write): Replaced ::read by _Jv_write().
+ (read): Replaced ::read by _Jv_read().
+
+2002-11-20 Michael Koch <konqueror@gmx.de>
+
+ * Makefile.am (ordinary_java_source_files):
+ Added java/nio/channels/FileChannel.java.
+ * Makefile.in: Regenerated.
+
+2002-11-20 Michael Koch <konqueror@gmx.de>
+
+ * java/io/FileInputStream.java
+ (getChannel): New method.
+ * java/io/FileOutputStream.java
+ (getChannel): New method.
+ * java/net/ServerSocket.java
+ (bind): Removed duplicate code and called another bind method instead.
+ * java/nio/channels/SelectionKey.java
+ (isValid): Removed wrong exception documentation.
+ * java/nio/channels/ServerSocketChannel.java
+ (accept): Added exception documentation.
+ (open): Fixed typo, added exception documentation.
+ * java/nio/channels/spi/AbstractSelectableChannel.java
+ (implCloseChannel): Added exception documentation.
+ (add): Reformated.
+ (register): Added exception documentation.
+
+2002-11-20 Andreas Jaeger <aj@suse.de>
+
+ * configure: Regenerated with new libtool.m4.
+
+2002-11-19 Tom Tromey <tromey@redhat.com>
+
+ * java/lang/ref/natReference.cc (add_to_hash): Look at `copy', not
+ `referent'.
+ (finalize_referred_to_object): Don't modify `referent' or `copy'
+ fields.
+ (add_to_hash): Correctly set `n->next' when updating list.
+ * java/lang/ref/Reference.java (enqueue): Return false if already
+ enqueued.
+
+2002-11-19 Ranjit Mathew <rmathew@hotmail.com>
+
+ * include/jni.h: Add missing JNICALL and JNIEXPORT attributes
+ to function and function pointer declarations in accordance with
+ Sun's JDKs. Define JNIIMPEXP to either JNIEXPORT or JNIIMPORT
+ based on whether __GCJ_JNI_IMPL__ has been defined or not.
+ * jni.cc: Add missing JNICALL and JNIEXPORT attributes to
+ JNI function definitions.
+
+2002-11-18 Jesse Rosenstock <jmr@ugcs.caltech.edu>
+
+ * java/nio/charset/CoderResult.java (Cache.get): Fix a bug
+ that was causing CoderResults to be cached, not WeakReferences
+ to CoderResults.
+
+2002-11-18 Joerg Brunsmann <joerg_brunsmann@yahoo.de>
+
+ * java/security/KeyStore.java (getInstance): Fix
+ comment and throw IllegalArgumentException if
+ given provider is null.
+ (getInstance): New method for jdk1.4 compatibility.
+
+2002-11-18 Michael Koch <konqueror@gmx.de>
+
+ * java/net/PlainSocketImpl.java: Fix imports.
+
+2002-11-18 Michael Koch <konqueror@gmx.de>
+
+ * java/nio/channels/SelectionKey.java
+ (isValid): Added exception documentation.
+ * java/nio/channels/Selector.java
+ (open): Declare "throws IOException".
+
+2002-11-18 Jesse Rosenstock <jmr@ugcs.caltech.edu>
+
+ * java/nio/charset/Charset.java
+ (<clinit>): New method.
+ (encode): Synchronize use of cached encoder object.
+ (decode): Synchronize use of cached encoder object.
+
+2002-11-18 Michael Koch <konqueror@gmx.de>
+
+ * gnu/java/nio/ByteBufferImpl.java,
+ gnu/java/nio/CharBufferImpl.java,
+ gnu/java/nio/DatagramChannelImpl.java,
+ gnu/java/nio/DoubleBufferImpl.java,
+ gnu/java/nio/FileChannelImpl.java,
+ gnu/java/nio/FloatBufferImpl.java,
+ gnu/java/nio/IntBufferImpl.java,
+ gnu/java/nio/LongBufferImpl.java,
+ gnu/java/nio/PipeImpl.java,
+ gnu/java/nio/SelectionKeyImpl.java,
+ gnu/java/nio/SelectorImpl.java,
+ gnu/java/nio/SelectorProviderImpl.java,
+ gnu/java/nio/ServerSocketChannelImpl.java,
+ gnu/java/nio/ShortBufferImpl.java,
+ gnu/java/nio/SocketChannelImpl.java,
+ java/nio/DoubleBuffer.java,
+ java/nio/FloatBuffer.java,
+ java/nio/IntBuffer.java,
+ java/nio/LongBuffer.java,
+ java/nio/ShortBuffer.java,
+ java/nio/channels/FileChannel.java: New files.
+
+2002-11-18 Michael Koch <konqueror@gmx.de>
+
+ * Makefile.am (ordinary_java_source_files):
+ Added java/nio/ReadOnlyBufferException.java and
+ java/nio/channels/ClosedSelectorException.java.
+ * Makefile.in: Regenerated.
+
+2002-11-18 Michael Koch <konqueror@gmx.de>
+
+ * java/net/PlainSocketImpl.java: Reworked imports.
+ * java/net/ServerSocket.java
+ (ServerSocket): Create socket.
+ * java/net/SocketAddress.java: Documentation added.
+ * java/net/natPlainSocketImpl.cc: Reindented.
+ * java/nio/ReadOnlyBufferException.java: New file
+ * java/nio/channels/ClosedChannelException.java: Documentation added.
+ * java/nio/channels/ClosedSelectorException.java: New file.
+
+2002-11-17 Mark Wielaard <mark@klomp.org>
+
+ * java/net/HttpURLConnection.java ((getPermission): Take port
+ into consideration.
+ (getErrorStream): Implement.
+
+2002-11-17 Mark Wielaard <mark@klomp.org>
+
+ * java/net/HttpURLConnection.java: Merge with GNU Classpath.
+
+2002-11-16 Mark Wielaard <mark@klomp.org>
+
+ Integrate work by Raif S. Naffah (raif@fl.net.au)
+ * java/security/DummyKeyPairGenerator.java (clone): New method.
+ * java/security/DummyMessageDigest.java (clone): New method.
+ (engineUpdate): Now public.
+ (engineReset): Likewise.
+ (engineDigest): Likewise.
+ (engineGetDigestLength): New method.
+ * java/security/DummySignature.java (clone): New method.
+ * java/security/KeyPairGenerator.java (provider): Now package private.
+ (getInstance(String)): Use getInstance(String,Provider).
+ (getInstance(String,String): Use getInstance(String,Provider)
+ (getInstance(String,Provider): New method.
+ (getInstance(String,String,Provider): Don't cast DummyKeyPairGenerator.
+ * java/security/KeyPairGeneratorSpi.java (clone): New method.
+ * java/security/MessageDigest.java (provider): Now package private.
+ (getInstance(String): Use getInstance(String,Provider).
+ (getInstance(String,String): Use getInstance(String,Provider)
+ (getInstance(String,Provider): New method.
+ * java/security/Provider.java (toCanonicalKey): New method.
+ (get): New method that uses toCanonicalKey().
+ (put): Use toCanonicalKey().
+ (remove): Likewise.
+ * java/security/Security.java (insertProviderAt): Provider index is one
+ based, not zero based.
+ (addProvider): Likewise.
+ (removeProvider): Likewise.
+ * java/security/Signature.java (provider): Now package private.
+ (getInstance(String)): Use getInstance(String,Provider).
+ (getInstance(String,String): Use getInstance(String,Provider)
+ (getInstance(String,Provider): New method.
+ (getInstance(String,String,Provider): Don't cast DummySignature.
+
+2002-11-15 Tom Tromey <tromey@redhat.com>
+
+ For PR libgcj/8593:
+ * java/util/zip/GZIPInputStream.java (read): Check file size.
+ Look in inflater for remaining input bytes.
+ (read4): Added buf and offset arguments.
+
+2002-11-12 Eric Blake <ebb9@email.byu.edu>
+
+ * java/applet/AppletContext.java: Fix typo and remove redundant
+ modifiers.
+
+2002-11-14 Tom Tromey <tromey@redhat.com>
+
+ * java/lang/natRuntime.cc (insertSystemProperties): Set
+ gnu.classpath.home.
+
+2002-11-13 Michael Koch <konqueror@gmx.de>
+
+ * java/nio/ByteBuffer.java
+ (allocate): New method.
+ (wrap): New method.
+ (put): New method.
+ (get): New method.
+
+2002-11-13 Michael Koch <konqueror@gmx.de>
+
+ * java/nio/channels/AlreadyConnectedException.java:
+ Removed unneeded import.
+ (AlreadyConnectedException): Documentation added.
+ * java/nio/channels/Pipe.java
+ (SinkChannel.SinkChannel): Documentation added.
+ (SinkChannel.validOps): New method.
+ (SourceChannel.SourceChannel): Documentation added.
+ (SourceChannel.validOps): New method.
+ (Pipe): Documentation added.
+ (open): Documentation added.
+ (SinkChannel.channel): Documentation added.
+ (SourceChannel.channel): Documentation added.
+ * java/nio/channel/SelectableChannel.java
+ (SelectableChannel): Documentation added.
+ (blockingLock): Documentation added.
+ (configureBlocking):Documentation added.
+ (isBlocking):Documentation added.
+ (isRegistered):Documentation added.
+ (keyFor):Documentation added.
+ (provider):Documentation added.
+ (register): Documentation added.
+ (validOps): Documentation added.
+ * jaba/nio/channels/SelectionKey.java
+ (SelectionKey): Documentation added.
+ (attach): Documentation added.
+ (attachment): Documentation added.
+ (isAcceptable): Documentation added.
+ (isConnetable): Documentation added.
+ (isReadable): Documentation added.
+ (isWritable): Documentation added.
+ (cancel): Documentation added.
+ (channel): Documentation added.
+ (interestOps): Documentation added.
+ (isValid): Documentation added.
+ (readyOps): Documentation added.
+ (selector): Documentation added.
+ * jaba/nio/channels/Selector.java
+ (Selector): Documentation added.
+ (open): Documentation added.
+ (close): Documentation added.
+ (isOpen): Documentation added.
+ (keys): Documentation added.
+ (provider): Documentation added.
+ (select): Documentation added.
+ (selectedKeys): Documentation added.
+ (selectNow): Documentation added.
+ (wakeup): Documentation added.
+ * java/nio/channels/spi/AbstractInterruptibleChannel.java
+ (AbstractInterruptibleChannel): Documentation added.
+ (opened): Default to true;
+ (begin): Documentation added.
+ (close): Set opened to false, documentation added.
+ (isOpen): Documentation added.
+ * java/nio/channels/spi/AbstractSelectionKey.java
+ (AbstractSelectionKey): Documentation added.
+ (cancel): Documentation added.
+ (isValid): Documentation added.
+ * java/nio/channels/spi/AbstractSelector.java
+ (AbstractSelector): Documentation added.
+ (begin): Documentation added.
+ (close): Documentation added.
+ (isOpen): Documentation added.
+ (deregister): Documentation added.
+ (end): Documentation added.
+ (provider): Documentation added.
+ (implCloseSelector): Documentation added.
+ (register): Documentation added.
+ * java/nio/channels/spi/SelectorProvider.java
+ (SelectorProvider): Documentation added.
+ (openDatagramChannel): Documentation added.
+ (openPipe): Documentation added.
+ (openSelector): Documentation added.
+ (openServerSocketChannel): Documentation added.
+ (openSocketChannel): Documentation added.
+ (provider): Documentation added.
+
+2002-11-12 Michael Koch <konqueror@gmx.de>
+
+ * java/nio/Buffer.java: Implemented.
+ * java/nio/CharBuffer.java: New file.
+ * java/nio/InvalidMarkException.java: New file.
+ * java/nio/channels/DatagramChannel.java: Implemented.
+ * java/nio/channels/ServerSocketChannel.java: Implemented.
+ * java/nio/channels/SocketChannel.java: Implemented.
+ * java/nio/channels/spi/AbstractChannel.java: Removed.
+ * java/nio/channels/spi/AbstractSelectableChannel.java:
+ Implemented.
+ * java/nio/charset/Charset.java:
+ Merge from Classpath.
+ * java/nio/charset/CharsetDecoder.java: New file.
+ * java/nio/charset/CharsetEncoder.java: New file.
+ * java/nio/charset/CoderResult.java: New file.
+ * Makefile.am (ordinary_java_source_files): Added new files.
+ * Makefile.in: Regenerated.
+
+2002-11-11 Jesse Rosenstock <jmr@ugcs.caltech.edu>
+
+ * gnu/java/nio/charset/ISO_8859_1.java,
+ gnu/java/nio/charset/Provider.java,
+ gnu/java/nio/charset/US_ASCII.java,
+ gnu/java/nio/charset/UTF_16.java,
+ gnu/java/nio/charset/UTF_16BE.java,
+ gnu/java/nio/charset/UTF_16Decoder.java,
+ gnu/java/nio/charset/UTF_16Encoder.java,
+ gnu/java/nio/charset/UTF_16LE.java,
+ gnu/java/nio/charset/UTF_8.java: New files.
+
+2002-11-11 Michael Koch <konqueror@gmx.de>
+
+ * java/nio/charset/CharacterCodingException.java:
+ This class must be public.
+ * java/nio/charset/CoderMalfunctionError.java:
+ This class must be public.
+ * java/nio/charset/CodingErrorAction.java:
+ This class must be public.
+ * java/nio/charset/IllegalCharsetNameException.java:
+ This class must be public, better implementation.
+ * java/nio/charset/MalformedInputException.java:
+ This class must be public, better implementation.
+ * java/nio/charset/UnmappableCharacterException.java:
+ This class must be public, better implementation.
+ * java/nio/charset/UnsupportedCharsetException.java:
+ This class must be public, better implementation.
+
+2002-11-11 Michael Koch <konqueror@gmx.de>
+
+ * java/nio/BufferOverflowException.java,
+ java/nio/BufferUnderflowException.java: New file.
+ * Makefile.am (ordinary_java_source_files):
+ Added new files.
+ * Makefile.in: Regenerated.
+
+2002-11-10 Tom Tromey <tromey@redhat.com>
+
+ * java/awt/Container.java (validate): Use tree lock.
+ (getComponent): Likewise.
+ (getComponents): Likewise.
+ (addImpl): Likewise.
+ (remove): Likewise.
+ (removeAll): Likewise.
+ (processEvent): Fixed indentation.
+ (getComponentAt): Use tree lock.
+ (findComponentAt): Likewise.
+ (removeNotify): Likewise.
+ (isAncestorOf): Likewise.
+ (list): Likewise.
+ (visitChildren): Likewise.
+ (findNextFocusComponent): Likewise.
+ (addNotifyContainerChildren): Likewise.
+ (getAccessibleChildrenCount): Likewise.
+ (getAccessibleChild): Likewise.
+
+ * java/awt/GridLayout.java (layoutContainer): Use tree lock.
+ (getSize): Likewise.
+ * java/awt/FlowLayout.java (layoutContainer): Use tree lock.
+ (getSize): Likewise.
+ * java/awt/BorderLayout.java (layoutContainer): Use tree lock.
+ (calcSize): Likewise.
+ * java/awt/CardLayout.java (getSize): Use tree lock.
+ (gotoComponent): Likewise.
+ (layoutContainer): Likewise.
+
+ * java/io/natFileDescriptorWin32.cc (read): Handle case where
+ count is 0.
+ * java/io/natFileDescriptorPosix.cc (read): Handle case where
+ count is 0.
+
+ * java/io/Externalizable.java, java/io/FilePermission.java,
+ java/io/ObjectStreamConstants.java, java/io/Serializable.java,
+ java/io/SerializablePermission.java, java/text/Format.java,
+ java/util/AbstractMap.java, java/util/HashMap.java,
+ java/util/LinkedHashMap.java, javax/naming/BinaryRefAddr.java: New
+ versions from Classpath.
+
+2002-11-10 Anthony Green <green@redhat.com>
+
+ * java/util/jar/Attributes.java (Name): Fix name check.
+
+2002-11-10 Mark Wielaard <mark@klomp.org>
+
+ * java/lang/natClass.cc (initializeClass): Throw NoClassDefFoundError
+ with getName() as message.
+ (_Jv_CheckArrayStore): Throw ArrayStoreException with object and array
+ type as message.
+
+ * java/lang/natVMThrowable.cc: Don't declare parameter t, it is
+ unused.
+
+2002-11-08 Ranjit Mathew <rmathew@hotmail.com>
+
+ * include/jni.h (JNIIMPORT, JNIEXPORT, JNICALL): Linker defines
+ for Win32. JNICALL has been defined to __stdcall to be compatible
+ with Sun's JDKs.
+
+2002-11-10 Tom Tromey <tromey@redhat.com>
+
+ * java/awt/GridLayout.java (setColumns): Check newCols, not cols.
+ (setRows): Check newRows, not rows.
+
+ * jni.cc (_Jv_GetJNIEnvNewFrame): Set env->ex in all cases.
+
+2002-11-09 Tom Tromey <tromey@redhat.com>
+
+ * java/applet/Applet.java, java/applet/AppletContext.java,
+ java/applet/AppletStub.java, java/applet/AudioClip.java,
+ java/awt/CardLayout.java,
+ java/awt/ContainerOrderFocusTraversalPolicy.java,
+ java/awt/Cursor.java, java/awt/Event.java, java/awt/Frame.java,
+ java/awt/GridBagConstraints.java, java/awt/GridBagLayout.java,
+ java/awt/GridLayout.java, java/awt/color/ColorSpace.java,
+ java/awt/color/ICC_ColorSpace.java,
+ java/awt/color/ICC_Profile.java,
+ java/awt/color/ICC_ProfileGray.java,
+ java/awt/color/ICC_ProfileRGB.java,
+ java/awt/datatransfer/DataFlavor.java,
+ java/awt/dnd/DragSourceContext.java, java/awt/dnd/DropTarget.java,
+ java/awt/dnd/DropTargetContext.java, java/awt/event/KeyEvent.java:
+ New versions from Classpath.
+ * Makefile.in: Rebuilt.
+ * Makefile.am (awt_java_source_files): Added ICC_ProfileGray and
+ ICC_ProfileRGB.
+
+ * java/awt/ScrollPane.java (ScrollPane): Fixed test for valid
+ display policy.
+
+ * java/awt/List.java (processEvent): Added missing `else's.
+
+ * java/awt/Window.java (show): validate() before showing. Make
+ parent displayable.
+ (isDisplayable): New method.
+
2002-11-07 Mark Wielaard <mark@klomp.org>
Merge Orp RMI patches from Wu Gansha <gansha.wu@intel.com>
@@ -326,7 +916,7 @@
(hashCode): Implemented default URL hashCode algorithm.
* java/net/natPlainDatagramSocketImpl.cc:
No lines longer then 80 characters.
-
+
2002-10-20 Adam Megacz <adam@xwt.org>
* aclocal.m4 (CHECK_FOR_BROKEN_MINGW_LD): added
@@ -493,7 +1083,7 @@
* Makefile.in: Regenerated.
2002-10-04 C. Scott Ananian <cananian@lesser-magoo.lcs.mit.edu>
-
+
* java/lang/ProtectionDomain.java (linesep): Remove field.
(toString): Use System.getProperty("line.separator").
@@ -595,7 +1185,7 @@
* java/net/SocketOptions.java: Reindention.
* java/net/SocketPermission
(SocketPermission): Documentation fixed.
-
+
2002-10-03 Michael Koch <konqueror@gmx.de>
* java/net/DatagramSocket.java
@@ -688,14 +1278,14 @@
* java/lang/reflect/Proxy.java: New file. Imported from GNU
Classpath.
* gnu/java/lang/reflect/TypeSignature.java: Refresh from GNU
- Classpath.
+ Classpath.
* gnu/classpath/Configuration.java.in (HAVE_NATIVE_GET_PROXY_DATA,
HAVE_NATIVE_GET_PROXY_CLASS, HAVE_NATIVE_GENERATE_PROXY_CLASS):
New statics.
* gcj/javaprims.h ("Java"): Add new classes.
* java/lang/reflect/Proxy.java: Fix check for duplicate interfaces.
* Makefile.am (java/lang/reflect/Proxy$$ProxyData.h): Create this.
- java/lang/reflect/Proxy$$ProxyType.h): And this.
+ java/lang/reflect/Proxy$$ProxyType.h): And this.
(inner_nat_headers): Add these new headers.
(ordinary_java_source_files): Add new files.
(nat_source_files): Add new file.
@@ -719,7 +1309,7 @@
2002-09-25 Tom Tromey <tromey@redhat.com>
- * java/lang/natClassLoader.cc:
+ * java/lang/natClassLoader.cc:
(_Jv_PrepareCompiledClass): Throw NoClassDefFoundError, per spec.
* resolve.cc: Include NoClassDefFoundError.h, not
ClassNotFoundException.h.
@@ -1007,7 +1597,7 @@
* include/config.h.in: Added HAVE_NET_IF_H.
* java/net/natNetworkInterface.cc (getRealNetworkInterfaces):
Removed #if 0 ... #endif.
-
+
2002-09-17 Michael Koch <konqueror@gmx.de>
* java/net/natNetworkInterface.cc:
@@ -1048,23 +1638,23 @@
and typo fixed.
2002-09-15 Adam Megacz <adam@xwt.org>
-
+
* java/net/natPlainSocketImpl.cc: fixed typo.
2002-09-15 Adam Megacz <adam@xwt.org>
-
+
* java/net/natPlainSocketImpl.cc: #ifdef-shielded socket timeouts,
which don't work on Win32 (yet).
2002-09-14 Adam Megacz <adam@xwt.org>
-
+
* java/net/natPlainDatagramSocket.cc: removed #include
<ws2tcpip.h>; the mingw header is broken (conflicts with itself).
* include/win32.h: included definition for IP_TOS to satisfy
natPlainDatagramSocket.cc
-
+
2002-09-13 Michael Koch <konqueror@gmx.de>
-
+
* java/net/DatagramPacket.java (DatagramPacket):
Added linebreak for 80 chars per line.
* java/net/JarURLConection.java
@@ -1140,7 +1730,7 @@
(guessContentTypeFromName): Added/updated documentation.
(getFileNameMap): Added/updated documentation.
(setFileNameMap): Added/updated documentation.
-
+
2002-09-11 Michael Koch <konqueror@gmx.de>
* java/net/Socket.java
@@ -1370,7 +1960,7 @@
java/net/Socket.java,
java/net/URLClassLoader.java,
java/net/URLConnection.java: add/update of some @since/@deprecated
-
+
2002-08-27 Tony Kimball <alk@pobox.com>
Tom Tromey <tromey@redhat.com>
@@ -1387,7 +1977,7 @@
* include/win32.h (getcwd): copied function declaration as
temporary fix for header confusion.
-
+
2002-08-24 Mark Wielaard <mark@klomp.org>
* Makefile.am (libgcj_la_SOURCES): Remove name-finder.cc.
@@ -1409,7 +1999,7 @@
(stackTraceStringBuffer): New helper method for stackTraceString().
(fillInStackTrace): Delegate to VMTrowable.
(getStackTrace): Likewise.
- (getStackTrace0): Removed.
+ (getStackTrace0): Removed.
(trace_enabled, stackTraceBytes): Moved to new VMThrowable.java.
(setStackTrace): Copy given array.
* java/lang/natThrowable.cc: Removed (replaced by natVMThrowable).
@@ -1450,7 +2040,7 @@
* java/net/URISyntaxException.java: New file.
* java/net/SocketTimeoutException.java: New file.
- * java/net/PortUnreachableException.java: New file.
+ * java/net/PortUnreachableException.java: New file.
* Makefile.am: Updated.
* Makefile.in: Rebuilt.
@@ -1508,7 +2098,7 @@
* Makefile.in: Regenerate.
* gnu/java/security/provider/DefaultPolicy.java
(getPermissions): Don't maintain static class variable of Permissions.
- * gnu/java/security/provider/SHA.java
+ * gnu/java/security/provider/SHA.java
(engineUpdate): algorithm change.
(engineDigest): algorithm change.
@@ -1530,22 +2120,22 @@
* gnu/awt/j2d/Graphics2DImpl.java: Implement stubs for new abstract
methods in Graphics2D.
-
+
2002-08-09 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
AWT/Swing merge from GNU Classpath.
- * java/awt/AlphaComposite.java, java/awt/AttributeValue.java,
+ * java/awt/AlphaComposite.java, java/awt/AttributeValue.java,
java/awt/BasicStroke.java, java/awt/BufferCapabilities.java,
java/awt/color/CMMException.java, java/awt/ColorPaintContext.java,
- java/awt/color/ProfileDataException.java,
+ java/awt/color/ProfileDataException.java,
java/awt/CompositeContext.java, java/awt/Composite.java,
java/awt/ContainerOrderFocusTraversalPolicy.java,
java/awt/datatransfer/FlavorTable.java,
java/awt/DefaultFocusTraversalPolicy.java,
java/awt/DefaultKeyboardFocusManager.java, java/awt/DisplayMode.java,
java/awt/dnd/DnDConstants.java, java/awt/dnd/DragGestureEvent.java,
- java/awt/dnd/DragGestureListener.java,
+ java/awt/dnd/DragGestureListener.java,
java/awt/dnd/DragGestureRecognizer.java,
java/awt/dnd/DragSourceAdapter.java,
java/awt/dnd/DragSourceContext.java,
@@ -1861,7 +2451,7 @@
javax/swing/UnsupportedLookAndFeelException.java,
javax/swing/ViewportLayout.java,
javax/swing/WindowConstants.java: New files, from GNU Classpath.
-
+
* java/awt/ActiveEvent.java,
java/awt/Adjustable.java, java/awt/AWTError.java,
java/awt/AWTEvent.java, java/awt/AWTEventMulticaster.java,
@@ -1920,7 +2510,7 @@
java/awt/MenuItem.java, java/awt/PaintContext.java,
java/awt/Paint.java, java/awt/Panel.java, java/awt/Point.java,
java/awt/Polygon.java, java/awt/PrintGraphics.java,
- java/awt/PrintJob.java, java/awt/Rectangle.java,
+ java/awt/PrintJob.java, java/awt/Rectangle.java,
java/awt/RenderingHints.java, java/awt/ScrollPane.java,
java/awt/Shape.java, java/awt/SystemColor.java, java/awt/Toolkit.java,
java/awt/Transparency.java, java/awt/Window.java: Merge from classpath.
@@ -1944,8 +2534,8 @@
* gnu/awt/xlib/XGraphicsConfiguration.java,
gnu/awt/xlib/XToolkit.java: Updated to compile against 1.4 abstract
API.
-
- * javax/swing/plaf/metal/MetalLookAndFeel.java: New file from
+
+ * javax/swing/plaf/metal/MetalLookAndFeel.java: New file from
GNU Classpath.
* Makefile.am: Add new files.
@@ -1954,7 +2544,7 @@
2002-08-07 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
* java/lang/ClassLoader.java (getSystemClassLoader, findClass,
- defineClass, setSigners, getSystemResource, getSystemResourceAsStream,
+ defineClass, setSigners, getSystemResource, getSystemResourceAsStream,
findResource, getResources, findResources): Add javadoc from classpath.
(getSystemResources): Implemented.
@@ -1979,7 +2569,7 @@
* gnu/java/security/provider/DefaultPolicy.java
(getPermissions): Revert to maintaining static class variable of
Permissions.
- * gnu/java/security/provider/SHA.java
+ * gnu/java/security/provider/SHA.java
(engineUpdate): Revert algorithm change.
(engineDigest): Revert algorithm change.
@@ -2109,7 +2699,7 @@
* gnu/java/security/provider/DefaultPolicy.java
(getPermissions): do not maintain static class variable of
Permissions
- * gnu/java/security/provider/SHA.java
+ * gnu/java/security/provider/SHA.java
(engineUpdate): algorithm change
(engineDigest): algorithm change
@@ -2251,7 +2841,7 @@
java/sql/Statement.java, java/sql/Struct.java, java/sql/Time.java,
java/sql/Timestamp.java, java/sql/Types.java: Updated to JDBC 3.0
(JDK 1.4) specification.
- * javax/sql/ConnectionEvent.java,
+ * javax/sql/ConnectionEvent.java,
javax/sql/ConnectionEventListener.java,
javax/sql/ConnectionPoolDataSource.java,
javax/sql/DataSource.java, javax/sql/PooledConnection.java,
@@ -2262,7 +2852,7 @@
javax/sql/XADataSource.java: New files.
* Makefile.am: Add new files.
* Makefile.in: Rebuilt.
-
+
2002-06-20 Tom Tromey <tromey@redhat.com>
For PR libgcj/7073:
@@ -2546,7 +3136,7 @@
* java/io/natFileDescriptorWin32.cc (open): Disable Win32 file
locking, just like the Sun JVM does.
-
+
2002-06-05 H.J. Lu (hjl@gnu.org)
* Makefile.am (libgcj_convenience.la): Revert the last change.
@@ -2738,7 +3328,7 @@
.java.class: New rule.
(CLEANFILES): Remove tmp-list.
* libjava/Makefile.in: Regenerated.
-
+
2002-05-09 David.Billinghurst <David.Billinghurst@riotinto.com>
* testsuite/lib/libjava.exp (test_libjava_from_javac):
@@ -2889,7 +3479,7 @@
2002-04-17 Adam King <aking@dreammechanics.com>
- * java/io/File.java (normalizePath): Add Win32 support for auto
+ * java/io/File.java (normalizePath): Add Win32 support for auto
conversion of a '/' path separator to Win32's '\' separator.
2002-04-16 Tom Tromey <tromey@redhat.com>
@@ -2909,7 +3499,7 @@
(_access, _stat, attr, getCanonicalPath, performMkdir,
performRenameTo): Don't use fixed-size array.
(getCanonicalPath): Use throw, not _Jv_Throw.
-
+
2002-04-15 DJ Delorie <dj@redhat.com>
* configure.in: Allow building in $srcdir.
@@ -3017,8 +3607,8 @@
* java/lang/natSystem.cc (init_properties): Call new function
_Jv_platform_initProperties.
- * win32.cc (_Jv_platform_initProperties): New function that adds Win32
- support for the System properties os.name, os.arch, os.version,
+ * win32.cc (_Jv_platform_initProperties): New function that adds Win32
+ support for the System properties os.name, os.arch, os.version,
user.name, user.home, and user.dir.
* include/posix.h, include/win32.h, posix.cc: New function
_Jv_platform_initProperties.
@@ -3170,7 +3760,7 @@
* include/dwarf2-signal.h (MAKE_THROW_FRAME): Add for IA-64.
(INIT_SEGV, INIT_FPE): Use __libc_sigaction instead of syscall.
Add FIXME comment.
-
+
2002-03-25 Tom Tromey <tromey@redhat.com>
* Makefile.am (libgcj_la_LDFLAGS): Use THREADLDFLAGS.
@@ -3204,9 +3794,9 @@
* java/io/FileInputStream.java (skip): Call fd.getFilePointer() and
calculate correct number of bytes skipped.
-
+
Based on patch from Intel's ORP team:
- * java/io/PushbackInputStream.java (available): Calculate correct
+ * java/io/PushbackInputStream.java (available): Calculate correct
number of bytes in buffer.
(read): Remove redundant bound check. Return bytes from both the
buffer and the stream.
@@ -3352,7 +3942,7 @@
2002-03-15 Tom Tromey <tromey@redhat.com>
Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
+
Fix for PR libgcj/5944.
* gnu/gcj/io/shs.h: Define uint8_t and uint32_t.
@@ -3377,7 +3967,7 @@
2002-03-10 Adam Megacz <adam@xwt.org>
* java/net/natPlainSocketImpl.cc: Added #include <platform.h>.
-
+
2002-03-10 Tom Tromey <tromey@redhat.com>
* java/awt/GridLayout.java (layoutContainer): Handle case where
@@ -3418,8 +4008,8 @@
slow_pthread_self. Set up symlink for sysdeps directory.
* configure: Rebuild.
* configure.host: Document more shell variables. Set sysdeps_dir
- for most platforms. Set slow_pthread_self for i686. Set
- enable_hash_synchronization_default and slow_pthread_self for PowerPC.
+ for most platforms. Set slow_pthread_self for i686. Set
+ enable_hash_synchronization_default and slow_pthread_self for PowerPC.
* posix-threads.cc (_Jv_ThreadSelf_out_of_line): Use release_set so
that memory barrier is emitted where required.
* prims.cc: 64-bit align static primitive class instances.
@@ -3427,7 +4017,7 @@
read_barrier() to enforce ordering of reads.
* sysdep/powerpc/locks.h: New file. Implementation of synchronization
primitives for PowerPC.
- * sysdep/i386/locks.h: New file. Synchronization primitives for i386
+ * sysdep/i386/locks.h: New file. Synchronization primitives for i386
moved from natObject.cc.
* sysdep/alpha/locks.h: Likewise.
* sysdep/ia64/locks.h: Likewise.
@@ -3444,7 +4034,7 @@
* win32.cc (_CRT_MT, __mingwthr_key_dtor) Added fake
definitions to simulate -mthreads.
-
+
2002-03-09 Adam Megacz <adam@xwt.org>
* win32.cc (_Jv_platform_gettimeofday) Cast 1000 to long long to
@@ -3499,7 +4089,7 @@
returns jlong.
* java/lang/natSystem.cc (currentTimeMillis): Now uses updated
_Jv_platform_gettimeofday signature.
-
+
2002-03-07 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
* java/net/natPlainSocketImpl.cc (_Jv_recv): Removed.
@@ -3635,7 +4225,7 @@
* java/lang/reflect/natMethod.cc (_Jv_CallAnyMethodA):
Define ffi_result union for ffi_call result. Cast
ffi_result members to jvalue.
-
+
2002-02-23 Alexandre Oliva <aoliva@redhat.com>
* Makefile.in, gcj/Makefile.in, include/Makefile.in: Rebuilt.
@@ -3813,7 +4403,7 @@
* boehm.cc (initialized, obj_kind_x, obj_free_list): Removed unused
declarations.
- (_Jv_InitGC): Don't bother locking, as this is always called from a
+ (_Jv_InitGC): Don't bother locking, as this is always called from a
single-thread. Turn off GC_all_interior_pointers. Remove dead code.
2002-02-11 Adam Megacz <adam@xwt.org>
@@ -3937,11 +4527,11 @@
* gnu/gcj/io/shs.h, gnu/gcj/io/shs.cc, gnu/gcj/io/natSimpleSHSStream.cc:
use uint<n>_t instead of LONG and BYTE
-
+
2002-02-06 Adam Megacz <adam@xwt.org>
* name-finder.h: don't #include sys/wait.h unless HAVE_SYS_WAIT_H
-
+
2002-02-06 Anthony Green <green@redhat.com>
* java/net/natPlainSocketImpl.cc: Fix DISABLE_JAVA_NET targets.
@@ -3999,7 +4589,7 @@
* configure.in: Added PLATFORM_SPECIFIC_SOURCES,
which is set to posix.cc or win32.cc.
* Makefile.am: Updated it to use $(PLATFORM_SPECIFIC_SOURCES).
-
+
2002-02-04 Adam Megacz <adam@xwt.org>
* configure.in: Corrected mingw case branches; added * before
@@ -4035,7 +4625,7 @@
2002-02-01 Adam Megacz <adam@xwt.org>
* prims.cc: Added #undef STRICT after #include<windows.h>.
-
+
2002-02-01 Adam Megacz <adam@xwt.org>
* prims.cc
@@ -4043,7 +4633,7 @@
USE_WIN32_SIGNALLING and USE_WINSOCK.
(win32_exception_handler): Now throws an exception out of
the signal handler; assumes SJLJ.
-
+
2002-02-01 Adam Megacz <adam@xwt.org>
* win32-threads.cc:
@@ -4074,7 +4664,7 @@
2002-02-01 Craig Rodrigues <rodrigc@gcc.gnu.org>
PR java/4972
- * aclocal.m4, acinclude.m4 (AM_ICONV): Put linking flags
+ * aclocal.m4, acinclude.m4 (AM_ICONV): Put linking flags
for libiconv in LIBICONV variable.
* configure: Regenerated.
@@ -4180,9 +4770,9 @@
2002-01-25 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
* java/lang/natObject.cc (X86 compare_and_swap): Use +m constraint.
-
+
* java/awt/image/PixelGrabber.java (grabPixels()): Call grabPixels(0).
- (grabPixels(long)): Wait to be notified that the ImageProducer has
+ (grabPixels(long)): Wait to be notified that the ImageProducer has
completed.
2002-01-24 Per Bothner <per@bothner.com>
@@ -4261,539 +4851,539 @@
2002-01-22 Mark Wielaard <mark@klomp.org>
- * java/awt/Adjustable.java java/awt/CheckboxMenuItem.java
- java/awt/Choice.java java/awt/Color.java java/awt/Cursor.java
- java/awt/Dialog.java java/awt/FileDialog.java
- java/awt/Font.java java/awt/FontMetrics.java
- java/awt/Image.java java/awt/ImageMediaEntry.java
- java/awt/Insets.java java/awt/List.java
- java/awt/MediaEntry.java java/awt/MediaTracker.java
- java/awt/Menu.java java/awt/MenuBar.java
- java/awt/MenuContainer.java java/awt/MenuShortcut.java
- java/awt/PaintContext.java java/awt/Panel.java
- java/awt/PopupMenu.java java/awt/SystemColor.java
- java/awt/peer/ButtonPeer.java java/awt/peer/CanvasPeer.java
- java/awt/peer/CheckboxMenuItemPeer.java
- java/awt/peer/CheckboxPeer.java java/awt/peer/ChoicePeer.java
- java/awt/peer/ComponentPeer.java
- java/awt/peer/ContainerPeer.java java/awt/peer/DialogPeer.java
- java/awt/peer/FileDialogPeer.java java/awt/peer/FontPeer.java
- java/awt/peer/FramePeer.java java/awt/peer/LabelPeer.java
- java/awt/peer/LightweightPeer.java java/awt/peer/ListPeer.java
- java/awt/peer/MenuBarPeer.java
- java/awt/peer/MenuComponentPeer.java
- java/awt/peer/MenuItemPeer.java java/awt/peer/MenuPeer.java
- java/awt/peer/PanelPeer.java java/awt/peer/PopupMenuPeer.java
- java/awt/peer/ScrollPanePeer.java
- java/awt/peer/ScrollbarPeer.java
- java/awt/peer/TextAreaPeer.java
- java/awt/peer/TextComponentPeer.java
+ * java/awt/Adjustable.java java/awt/CheckboxMenuItem.java
+ java/awt/Choice.java java/awt/Color.java java/awt/Cursor.java
+ java/awt/Dialog.java java/awt/FileDialog.java
+ java/awt/Font.java java/awt/FontMetrics.java
+ java/awt/Image.java java/awt/ImageMediaEntry.java
+ java/awt/Insets.java java/awt/List.java
+ java/awt/MediaEntry.java java/awt/MediaTracker.java
+ java/awt/Menu.java java/awt/MenuBar.java
+ java/awt/MenuContainer.java java/awt/MenuShortcut.java
+ java/awt/PaintContext.java java/awt/Panel.java
+ java/awt/PopupMenu.java java/awt/SystemColor.java
+ java/awt/peer/ButtonPeer.java java/awt/peer/CanvasPeer.java
+ java/awt/peer/CheckboxMenuItemPeer.java
+ java/awt/peer/CheckboxPeer.java java/awt/peer/ChoicePeer.java
+ java/awt/peer/ComponentPeer.java
+ java/awt/peer/ContainerPeer.java java/awt/peer/DialogPeer.java
+ java/awt/peer/FileDialogPeer.java java/awt/peer/FontPeer.java
+ java/awt/peer/FramePeer.java java/awt/peer/LabelPeer.java
+ java/awt/peer/LightweightPeer.java java/awt/peer/ListPeer.java
+ java/awt/peer/MenuBarPeer.java
+ java/awt/peer/MenuComponentPeer.java
+ java/awt/peer/MenuItemPeer.java java/awt/peer/MenuPeer.java
+ java/awt/peer/PanelPeer.java java/awt/peer/PopupMenuPeer.java
+ java/awt/peer/ScrollPanePeer.java
+ java/awt/peer/ScrollbarPeer.java
+ java/awt/peer/TextAreaPeer.java
+ java/awt/peer/TextComponentPeer.java
java/awt/peer/TextFieldPeer.java
java/awt/peer/WindowPeer.java: Add license clarification.
2002-01-22 Mark Wielaard <mark@klomp.org>
- * LIBGCJ_LICENSE gnu/classpath/Configuration.java.in
- gnu/gcj/runtime/StringBuffer.java
- gnu/java/awt/BitMaskExtent.java gnu/java/awt/Buffers.java
- gnu/java/awt/ComponentDataBlitOp.java
- gnu/java/awt/GLightweightPeer.java
- gnu/java/beans/BeanInfoEmbryo.java
- gnu/java/beans/EmptyBeanInfo.java
- gnu/java/beans/ExplicitBeanInfo.java
- gnu/java/beans/IntrospectionIncubator.java
- gnu/java/beans/editors/ColorEditor.java
- gnu/java/beans/editors/FontEditor.java
- gnu/java/beans/editors/NativeBooleanEditor.java
- gnu/java/beans/editors/NativeByteEditor.java
- gnu/java/beans/editors/NativeDoubleEditor.java
- gnu/java/beans/editors/NativeFloatEditor.java
- gnu/java/beans/editors/NativeIntEditor.java
- gnu/java/beans/editors/NativeLongEditor.java
- gnu/java/beans/editors/NativeShortEditor.java
- gnu/java/beans/editors/StringEditor.java
- gnu/java/beans/info/ComponentBeanInfo.java
- gnu/java/io/ClassLoaderObjectInputStream.java
- gnu/java/io/NullOutputStream.java
- gnu/java/io/ObjectIdentityWrapper.java
- gnu/java/lang/ArrayHelper.java gnu/java/lang/ClassHelper.java
- gnu/java/lang/reflect/TypeSignature.java
- gnu/java/locale/Calendar.java gnu/java/locale/Calendar_de.java
- gnu/java/locale/Calendar_en.java
- gnu/java/locale/Calendar_nl.java
- gnu/java/locale/LocaleInformation.java
- gnu/java/locale/LocaleInformation_de.java
- gnu/java/locale/LocaleInformation_en.java
- gnu/java/locale/LocaleInformation_nl.java
- gnu/java/math/MPN.java gnu/java/rmi/dgc/DGCImpl.java
- gnu/java/rmi/registry/RegistryImpl.java
- gnu/java/rmi/rmic/Compile_gcj.java
- gnu/java/rmi/rmic/Compiler.java
- gnu/java/rmi/rmic/CompilerProcess.java
- gnu/java/rmi/rmic/RMIC.java
- gnu/java/rmi/rmic/TabbedWriter.java
- gnu/java/rmi/server/ProtocolConstants.java
- gnu/java/rmi/server/RMIDefaultSocketFactory.java
- gnu/java/rmi/server/RMIHashes.java
- gnu/java/rmi/server/RMIObjectInputStream.java
- gnu/java/rmi/server/RMIObjectOutputStream.java
- gnu/java/rmi/server/UnicastConnection.java
- gnu/java/rmi/server/UnicastConnectionManager.java
- gnu/java/rmi/server/UnicastRef.java
- gnu/java/rmi/server/UnicastRemoteCall.java
- gnu/java/rmi/server/UnicastRemoteStub.java
- gnu/java/rmi/server/UnicastServer.java
- gnu/java/rmi/server/UnicastServerRef.java
- gnu/java/security/provider/DefaultPolicy.java
- gnu/java/security/provider/Gnu.java
- gnu/java/security/provider/SHA.java
- gnu/java/security/provider/SHA1PRNG.java
- gnu/java/text/BaseBreakIterator.java
- gnu/java/text/CharacterBreakIterator.java
- gnu/java/text/LineBreakIterator.java
- gnu/java/text/SentenceBreakIterator.java
- gnu/java/text/WordBreakIterator.java
- gnu/java/util/DoubleEnumeration.java java/applet/Applet.java
- java/applet/AppletContext.java java/applet/AppletStub.java
- java/applet/AudioClip.java java/awt/AWTError.java
- java/awt/AWTEvent.java java/awt/AWTEventMulticaster.java
- java/awt/AWTException.java java/awt/AWTPermission.java
- java/awt/ActiveEvent.java java/awt/BorderLayout.java
- java/awt/Button.java java/awt/Canvas.java
- java/awt/CardLayout.java java/awt/Checkbox.java
- java/awt/CheckboxGroup.java java/awt/Component.java
- java/awt/ComponentOrientation.java java/awt/Container.java
- java/awt/Dimension.java java/awt/Event.java
- java/awt/EventDispatchThread.java java/awt/EventQueue.java
- java/awt/FlowLayout.java java/awt/Frame.java
- java/awt/Graphics.java java/awt/Graphics2D.java
- java/awt/GraphicsConfiguration.java java/awt/GridLayout.java
- java/awt/IllegalComponentStateException.java
- java/awt/ItemSelectable.java java/awt/Label.java
- java/awt/LayoutManager.java java/awt/LayoutManager2.java
- java/awt/MenuComponent.java java/awt/MenuItem.java
- java/awt/Paint.java java/awt/Point.java
- java/awt/Rectangle.java java/awt/RenderingHints.java
- java/awt/Transparency.java java/awt/Window.java
- java/awt/color/ColorSpace.java
- java/awt/color/ICC_ColorSpace.java
- java/awt/color/ICC_Profile.java
- java/awt/event/HierarchyBoundsAdapter.java
- java/awt/event/HierarchyBoundsListener.java
- java/awt/event/HierarchyEvent.java
- java/awt/event/HierarchyListener.java
- java/awt/geom/AffineTransform.java
- java/awt/geom/Dimension2D.java java/awt/geom/Ellipse2D.java
- java/awt/geom/IllegalPathStateException.java
- java/awt/geom/Line2D.java
- java/awt/geom/NoninvertibleTransformException.java
- java/awt/geom/PathIterator.java java/awt/geom/Point2D.java
- java/awt/geom/Rectangle2D.java
- java/awt/geom/RectangularShape.java
- java/awt/geom/RoundRectangle2D.java
- java/awt/image/BufferedImage.java
- java/awt/image/ColorModel.java
- java/awt/image/ComponentColorModel.java
- java/awt/image/ComponentSampleModel.java
- java/awt/image/DataBuffer.java
- java/awt/image/DataBufferByte.java
- java/awt/image/DataBufferInt.java
- java/awt/image/DataBufferUShort.java
- java/awt/image/DirectColorModel.java
- java/awt/image/PackedColorModel.java
- java/awt/image/Raster.java java/awt/image/RasterOp.java
- java/awt/image/SampleModel.java
- java/awt/image/SinglePixelPackedSampleModel.java
- java/awt/image/WritableRaster.java
- java/beans/AppletInitializer.java
- java/beans/BeanDescriptor.java java/beans/BeanInfo.java
- java/beans/Beans.java java/beans/Customizer.java
- java/beans/DesignMode.java java/beans/EventSetDescriptor.java
- java/beans/FeatureDescriptor.java
- java/beans/IndexedPropertyDescriptor.java
- java/beans/IntrospectionException.java
- java/beans/Introspector.java java/beans/MethodDescriptor.java
- java/beans/ParameterDescriptor.java
- java/beans/PropertyChangeEvent.java
- java/beans/PropertyChangeListener.java
- java/beans/PropertyChangeSupport.java
- java/beans/PropertyDescriptor.java
- java/beans/PropertyEditor.java
- java/beans/PropertyEditorManager.java
- java/beans/PropertyEditorSupport.java
- java/beans/PropertyVetoException.java
- java/beans/SimpleBeanInfo.java
- java/beans/VetoableChangeListener.java
- java/beans/VetoableChangeSupport.java
- java/beans/Visibility.java
- java/beans/beancontext/BeanContext.java
- java/beans/beancontext/BeanContextChild.java
- java/beans/beancontext/BeanContextChildComponentProxy.java
- java/beans/beancontext/BeanContextChildSupport.java
- java/beans/beancontext/BeanContextContainerProxy.java
- java/beans/beancontext/BeanContextEvent.java
- java/beans/beancontext/BeanContextMembershipEvent.java
- java/beans/beancontext/BeanContextMembershipListener.java
- java/beans/beancontext/BeanContextProxy.java
- java/beans/beancontext/BeanContextServiceAvailableEvent.java
- java/beans/beancontext/BeanContextServiceProvider.java
- java/beans/beancontext/BeanContextServiceProviderBeanInfo.java
- java/beans/beancontext/BeanContextServiceRevokedEvent.java
- java/beans/beancontext/BeanContextServiceRevokedListener.java
- java/beans/beancontext/BeanContextServices.java
- java/beans/beancontext/BeanContextServicesListener.java
- java/io/BufferedInputStream.java
- java/io/BufferedOutputStream.java java/io/BufferedReader.java
- java/io/BufferedWriter.java java/io/ByteArrayInputStream.java
- java/io/ByteArrayOutputStream.java
- java/io/CharArrayReader.java java/io/CharArrayWriter.java
- java/io/CharConversionException.java java/io/DataInput.java
- java/io/DataInputStream.java java/io/DataOutput.java
- java/io/EOFException.java java/io/Externalizable.java
- java/io/FileFilter.java java/io/FileNotFoundException.java
- java/io/FilePermission.java java/io/FileReader.java
- java/io/FileWriter.java java/io/FilenameFilter.java
- java/io/FilterInputStream.java java/io/FilterOutputStream.java
- java/io/FilterReader.java java/io/FilterWriter.java
- java/io/IOException.java java/io/InputStream.java
- java/io/InterruptedIOException.java
- java/io/InvalidClassException.java
- java/io/InvalidObjectException.java
- java/io/NotActiveException.java
- java/io/NotSerializableException.java java/io/ObjectInput.java
- java/io/ObjectInputStream.java
- java/io/ObjectInputValidation.java java/io/ObjectOutput.java
- java/io/ObjectOutputStream.java java/io/ObjectStreamClass.java
- java/io/ObjectStreamConstants.java
- java/io/ObjectStreamException.java
- java/io/ObjectStreamField.java
- java/io/OptionalDataException.java java/io/OutputStream.java
- java/io/PipedInputStream.java java/io/PipedOutputStream.java
- java/io/PipedReader.java java/io/PipedWriter.java
- java/io/PrintWriter.java java/io/PushbackInputStream.java
- java/io/PushbackReader.java java/io/Reader.java
- java/io/SequenceInputStream.java java/io/Serializable.java
- java/io/SerializablePermission.java
- java/io/StreamCorruptedException.java
- java/io/StreamTokenizer.java
- java/io/StringBufferInputStream.java java/io/StringReader.java
- java/io/StringWriter.java java/io/SyncFailedException.java
- java/io/UTFDataFormatException.java
- java/io/UnsupportedEncodingException.java
- java/io/WriteAbortedException.java java/io/Writer.java
- java/lang/AbstractMethodError.java
- java/lang/ArithmeticException.java
- java/lang/ArrayIndexOutOfBoundsException.java
- java/lang/ArrayStoreException.java java/lang/Boolean.java
- java/lang/Byte.java java/lang/CharSequence.java
- java/lang/ClassCastException.java
- java/lang/ClassCircularityError.java
- java/lang/ClassFormatError.java
- java/lang/ClassNotFoundException.java
- java/lang/CloneNotSupportedException.java
- java/lang/Cloneable.java java/lang/Comparable.java
- java/lang/Compiler.java java/lang/Double.java
- java/lang/Error.java java/lang/Exception.java
- java/lang/ExceptionInInitializerError.java
- java/lang/Float.java java/lang/IllegalAccessError.java
- java/lang/IllegalAccessException.java
- java/lang/IllegalArgumentException.java
- java/lang/IllegalMonitorStateException.java
- java/lang/IllegalStateException.java
- java/lang/IllegalThreadStateException.java
- java/lang/IncompatibleClassChangeError.java
- java/lang/IndexOutOfBoundsException.java
- java/lang/InheritableThreadLocal.java
- java/lang/InstantiationError.java
- java/lang/InstantiationException.java java/lang/Integer.java
- java/lang/InternalError.java
- java/lang/InterruptedException.java
- java/lang/LinkageError.java java/lang/Long.java
- java/lang/NegativeArraySizeException.java
- java/lang/NoClassDefFoundError.java
- java/lang/NoSuchFieldError.java
- java/lang/NoSuchFieldException.java
- java/lang/NoSuchMethodError.java
- java/lang/NoSuchMethodException.java
- java/lang/NullPointerException.java java/lang/Number.java
- java/lang/NumberFormatException.java
- java/lang/OutOfMemoryError.java java/lang/Package.java
- java/lang/Process.java java/lang/Runnable.java
- java/lang/RuntimeException.java
- java/lang/RuntimePermission.java
- java/lang/SecurityException.java
- java/lang/SecurityManager.java java/lang/Short.java
- java/lang/StackOverflowError.java java/lang/StringBuffer.java
- java/lang/StringIndexOutOfBoundsException.java
- java/lang/ThreadDeath.java java/lang/ThreadGroup.java
- java/lang/ThreadLocal.java java/lang/UnknownError.java
- java/lang/UnsatisfiedLinkError.java
- java/lang/UnsupportedClassVersionError.java
- java/lang/UnsupportedOperationException.java
- java/lang/VerifyError.java java/lang/VirtualMachineError.java
- java/lang/Void.java java/lang/ref/PhantomReference.java
- java/lang/ref/Reference.java java/lang/ref/ReferenceQueue.java
- java/lang/ref/SoftReference.java
- java/lang/ref/WeakReference.java
- java/lang/reflect/AccessibleObject.java
- java/lang/reflect/InvocationTargetException.java
- java/lang/reflect/Member.java java/lang/reflect/Modifier.java
- java/lang/reflect/ReflectPermission.java
- java/math/BigDecimal.java java/math/BigInteger.java
- java/net/Authenticator.java java/net/BindException.java
- java/net/ConnectException.java java/net/ContentHandler.java
- java/net/ContentHandlerFactory.java
- java/net/DatagramPacket.java java/net/DatagramSocketImpl.java
- java/net/FileNameMap.java java/net/MalformedURLException.java
- java/net/MulticastSocket.java java/net/NetPermission.java
- java/net/NoRouteToHostException.java
- java/net/PasswordAuthentication.java
- java/net/ProtocolException.java java/net/ServerSocket.java
- java/net/Socket.java java/net/SocketException.java
- java/net/SocketImpl.java java/net/SocketImplFactory.java
- java/net/SocketOptions.java java/net/SocketPermission.java
- java/net/URLDecoder.java java/net/URLEncoder.java
- java/net/URLStreamHandlerFactory.java
- java/net/UnknownHostException.java
- java/net/UnknownServiceException.java
- java/rmi/AccessException.java
- java/rmi/AlreadyBoundException.java
- java/rmi/ConnectException.java
- java/rmi/ConnectIOException.java
- java/rmi/MarshalException.java java/rmi/MarshalledObject.java
- java/rmi/Naming.java java/rmi/NoSuchObjectException.java
- java/rmi/NotBoundException.java
- java/rmi/RMISecurityException.java
- java/rmi/RMISecurityManager.java java/rmi/Remote.java
- java/rmi/RemoteException.java java/rmi/ServerError.java
- java/rmi/ServerException.java
- java/rmi/ServerRuntimeException.java
- java/rmi/StubNotFoundException.java
- java/rmi/UnexpectedException.java
- java/rmi/UnknownHostException.java
- java/rmi/UnmarshalException.java
- java/rmi/activation/Activatable.java
- java/rmi/activation/ActivateFailedException.java
- java/rmi/activation/ActivationDesc.java
- java/rmi/activation/ActivationException.java
- java/rmi/activation/ActivationGroup.java
- java/rmi/activation/ActivationGroupDesc.java
- java/rmi/activation/ActivationGroupID.java
- java/rmi/activation/ActivationID.java
- java/rmi/activation/ActivationInstantiator.java
- java/rmi/activation/ActivationMonitor.java
- java/rmi/activation/ActivationSystem.java
- java/rmi/activation/Activator.java
- java/rmi/activation/UnknownGroupException.java
- java/rmi/activation/UnknownObjectException.java
- java/rmi/dgc/DGC.java java/rmi/dgc/Lease.java
- java/rmi/dgc/VMID.java java/rmi/registry/LocateRegistry.java
- java/rmi/registry/Registry.java
- java/rmi/registry/RegistryHandler.java
- java/rmi/server/ExportException.java
- java/rmi/server/LoaderHandler.java
- java/rmi/server/LogStream.java java/rmi/server/ObjID.java
- java/rmi/server/Operation.java
- java/rmi/server/RMIClassLoader.java
- java/rmi/server/RMIClientSocketFactory.java
- java/rmi/server/RMIFailureHandler.java
- java/rmi/server/RMIServerSocketFactory.java
- java/rmi/server/RMISocketFactory.java
- java/rmi/server/RemoteCall.java
- java/rmi/server/RemoteObject.java
- java/rmi/server/RemoteRef.java
- java/rmi/server/RemoteServer.java
- java/rmi/server/RemoteStub.java
- java/rmi/server/ServerCloneException.java
- java/rmi/server/ServerNotActiveException.java
- java/rmi/server/ServerRef.java java/rmi/server/Skeleton.java
- java/rmi/server/SkeletonMismatchException.java
- java/rmi/server/SkeletonNotFoundException.java
- java/rmi/server/SocketSecurityException.java
- java/rmi/server/UID.java
- java/rmi/server/UnicastRemoteObject.java
- java/rmi/server/Unreferenced.java
- java/security/AccessControlContext.java
- java/security/AccessControlException.java
- java/security/AccessController.java
- java/security/AlgorithmParameterGenerator.java
- java/security/AlgorithmParameterGeneratorSpi.java
- java/security/AlgorithmParameters.java
- java/security/AlgorithmParametersSpi.java
- java/security/AllPermission.java
- java/security/BasicPermission.java
- java/security/Certificate.java java/security/CodeSource.java
- java/security/DigestException.java
- java/security/DigestInputStream.java
- java/security/DigestOutputStream.java
- java/security/DomainCombiner.java
- java/security/DummyKeyPairGenerator.java
- java/security/DummyMessageDigest.java
- java/security/DummySignature.java
- java/security/GeneralSecurityException.java
- java/security/Guard.java java/security/GuardedObject.java
- java/security/Identity.java java/security/IdentityScope.java
- java/security/InvalidAlgorithmParameterException.java
- java/security/InvalidKeyException.java
- java/security/InvalidParameterException.java
- java/security/Key.java java/security/KeyException.java
- java/security/KeyFactory.java java/security/KeyFactorySpi.java
- java/security/KeyManagementException.java
- java/security/KeyPair.java java/security/KeyPairGenerator.java
- java/security/KeyPairGeneratorSpi.java
- java/security/KeyStore.java
- java/security/KeyStoreException.java
- java/security/KeyStoreSpi.java
- java/security/MessageDigest.java
- java/security/MessageDigestSpi.java
- java/security/NoSuchAlgorithmException.java
- java/security/NoSuchProviderException.java
- java/security/Permission.java
- java/security/PermissionCollection.java
- java/security/Permissions.java java/security/Policy.java
- java/security/Principal.java java/security/PrivateKey.java
- java/security/PrivilegedAction.java
- java/security/PrivilegedActionException.java
- java/security/PrivilegedExceptionAction.java
- java/security/ProtectionDomain.java
- java/security/Provider.java
- java/security/ProviderException.java
- java/security/PublicKey.java
- java/security/SecureClassLoader.java
- java/security/SecureRandom.java
- java/security/SecureRandomSpi.java java/security/Security.java
- java/security/SecurityPermission.java
- java/security/Signature.java
- java/security/SignatureException.java
- java/security/SignatureSpi.java
- java/security/SignedObject.java java/security/Signer.java
- java/security/UnrecoverableKeyException.java
- java/security/UnresolvedPermission.java
- java/security/acl/Acl.java java/security/acl/AclEntry.java
- java/security/acl/AclNotFoundException.java
- java/security/acl/Group.java
- java/security/acl/LastOwnerException.java
- java/security/acl/NotOwnerException.java
- java/security/acl/Owner.java java/security/acl/Permission.java
- java/security/cert/CRL.java
- java/security/cert/CRLException.java
- java/security/cert/Certificate.java
- java/security/cert/CertificateEncodingException.java
- java/security/cert/CertificateException.java
- java/security/cert/CertificateExpiredException.java
- java/security/cert/CertificateFactory.java
- java/security/cert/CertificateFactorySpi.java
- java/security/cert/CertificateNotYetValidException.java
- java/security/cert/CertificateParsingException.java
- java/security/cert/X509CRL.java
- java/security/cert/X509CRLEntry.java
- java/security/cert/X509Certificate.java
- java/security/cert/X509Extension.java
- java/security/interfaces/DSAKey.java
- java/security/interfaces/DSAKeyPairGenerator.java
- java/security/interfaces/DSAParams.java
- java/security/interfaces/DSAPrivateKey.java
- java/security/interfaces/DSAPublicKey.java
- java/security/interfaces/RSAKey.java
- java/security/interfaces/RSAPrivateCrtKey.java
- java/security/interfaces/RSAPrivateKey.java
- java/security/interfaces/RSAPublicKey.java
- java/security/spec/AlgorithmParameterSpec.java
- java/security/spec/DSAParameterSpec.java
- java/security/spec/DSAPrivateKeySpec.java
- java/security/spec/DSAPublicKeySpec.java
- java/security/spec/EncodedKeySpec.java
- java/security/spec/InvalidKeySpecException.java
- java/security/spec/InvalidParameterSpecException.java
- java/security/spec/KeySpec.java
- java/security/spec/PKCS8EncodedKeySpec.java
- java/security/spec/RSAKeyGenParameterSpec.java
- java/security/spec/RSAPrivateCrtKeySpec.java
- java/security/spec/RSAPrivateKeySpec.java
- java/security/spec/RSAPublicKeySpec.java
- java/security/spec/X509EncodedKeySpec.java java/sql/Array.java
- java/sql/BatchUpdateException.java java/sql/Blob.java
- java/sql/CallableStatement.java java/sql/Clob.java
- java/sql/Connection.java java/sql/DataTruncation.java
- java/sql/DatabaseMetaData.java java/sql/Date.java
- java/sql/Driver.java java/sql/DriverManager.java
- java/sql/DriverPropertyInfo.java
- java/sql/PreparedStatement.java java/sql/Ref.java
- java/sql/ResultSet.java java/sql/ResultSetMetaData.java
- java/sql/SQLData.java java/sql/SQLException.java
- java/sql/SQLInput.java java/sql/SQLOutput.java
- java/sql/SQLWarning.java java/sql/Statement.java
- java/sql/Struct.java java/sql/Time.java
- java/sql/Timestamp.java java/sql/Types.java
- java/text/Annotation.java
- java/text/AttributedCharacterIterator.java
- java/text/AttributedString.java
- java/text/AttributedStringIterator.java
- java/text/BreakIterator.java java/text/CharacterIterator.java
- java/text/ChoiceFormat.java java/text/Collator.java
- java/text/DateFormat.java java/text/DateFormatSymbols.java
- java/text/DecimalFormat.java
- java/text/DecimalFormatSymbols.java
- java/text/FieldPosition.java java/text/Format.java
- java/text/MessageFormat.java java/text/NumberFormat.java
- java/text/ParseException.java java/text/ParsePosition.java
- java/text/SimpleDateFormat.java
- java/text/StringCharacterIterator.java
- java/util/AbstractCollection.java java/util/AbstractList.java
- java/util/AbstractMap.java
- java/util/AbstractSequentialList.java
- java/util/AbstractSet.java java/util/ArrayList.java
- java/util/Arrays.java java/util/BasicMapEntry.java
- java/util/BitSet.java java/util/Calendar.java
- java/util/Collection.java java/util/Collections.java
- java/util/Comparator.java
- java/util/ConcurrentModificationException.java
- java/util/Date.java java/util/Dictionary.java
- java/util/EmptyStackException.java java/util/Enumeration.java
- java/util/EventListener.java java/util/EventObject.java
- java/util/GregorianCalendar.java java/util/HashMap.java
- java/util/HashSet.java java/util/Hashtable.java
- java/util/IdentityHashMap.java java/util/Iterator.java
- java/util/LinkedHashMap.java java/util/LinkedHashSet.java
- java/util/LinkedList.java java/util/List.java
- java/util/ListIterator.java java/util/ListResourceBundle.java
- java/util/Locale.java java/util/Map.java
- java/util/MissingResourceException.java
- java/util/NoSuchElementException.java
- java/util/Observable.java java/util/Observer.java
- java/util/Properties.java java/util/PropertyPermission.java
- java/util/PropertyResourceBundle.java java/util/Random.java
- java/util/RandomAccess.java java/util/ResourceBundle.java
- java/util/Set.java java/util/SimpleTimeZone.java
- java/util/SortedMap.java java/util/SortedSet.java
- java/util/Stack.java java/util/StringTokenizer.java
- java/util/TimeZone.java java/util/Timer.java
- java/util/TimerTask.java
- java/util/TooManyListenersException.java
- java/util/TreeMap.java java/util/TreeSet.java
- java/util/Vector.java java/util/WeakHashMap.java
- java/util/jar/Attributes.java java/util/jar/JarEntry.java
- java/util/jar/JarException.java java/util/jar/JarFile.java
- java/util/jar/JarInputStream.java
- java/util/jar/JarOutputStream.java java/util/jar/Manifest.java
- java/util/zip/Adler32.java java/util/zip/CRC32.java
- java/util/zip/CheckedInputStream.java
- java/util/zip/CheckedOutputStream.java
- java/util/zip/Checksum.java
- java/util/zip/DataFormatException.java
- java/util/zip/Deflater.java
- java/util/zip/DeflaterOutputStream.java
- java/util/zip/GZIPInputStream.java
- java/util/zip/GZIPOutputStream.java
- java/util/zip/Inflater.java
- java/util/zip/InflaterInputStream.java
- java/util/zip/ZipConstants.java java/util/zip/ZipEntry.java
- java/util/zip/ZipException.java java/util/zip/ZipFile.java
- java/util/zip/ZipInputStream.java
- java/util/zip/ZipOutputStream.java
- javax/naming/BinaryRefAddr.java
- javax/naming/InvalidNameException.java javax/naming/Name.java
- javax/naming/NamingException.java javax/naming/RefAddr.java
+ * LIBGCJ_LICENSE gnu/classpath/Configuration.java.in
+ gnu/gcj/runtime/StringBuffer.java
+ gnu/java/awt/BitMaskExtent.java gnu/java/awt/Buffers.java
+ gnu/java/awt/ComponentDataBlitOp.java
+ gnu/java/awt/GLightweightPeer.java
+ gnu/java/beans/BeanInfoEmbryo.java
+ gnu/java/beans/EmptyBeanInfo.java
+ gnu/java/beans/ExplicitBeanInfo.java
+ gnu/java/beans/IntrospectionIncubator.java
+ gnu/java/beans/editors/ColorEditor.java
+ gnu/java/beans/editors/FontEditor.java
+ gnu/java/beans/editors/NativeBooleanEditor.java
+ gnu/java/beans/editors/NativeByteEditor.java
+ gnu/java/beans/editors/NativeDoubleEditor.java
+ gnu/java/beans/editors/NativeFloatEditor.java
+ gnu/java/beans/editors/NativeIntEditor.java
+ gnu/java/beans/editors/NativeLongEditor.java
+ gnu/java/beans/editors/NativeShortEditor.java
+ gnu/java/beans/editors/StringEditor.java
+ gnu/java/beans/info/ComponentBeanInfo.java
+ gnu/java/io/ClassLoaderObjectInputStream.java
+ gnu/java/io/NullOutputStream.java
+ gnu/java/io/ObjectIdentityWrapper.java
+ gnu/java/lang/ArrayHelper.java gnu/java/lang/ClassHelper.java
+ gnu/java/lang/reflect/TypeSignature.java
+ gnu/java/locale/Calendar.java gnu/java/locale/Calendar_de.java
+ gnu/java/locale/Calendar_en.java
+ gnu/java/locale/Calendar_nl.java
+ gnu/java/locale/LocaleInformation.java
+ gnu/java/locale/LocaleInformation_de.java
+ gnu/java/locale/LocaleInformation_en.java
+ gnu/java/locale/LocaleInformation_nl.java
+ gnu/java/math/MPN.java gnu/java/rmi/dgc/DGCImpl.java
+ gnu/java/rmi/registry/RegistryImpl.java
+ gnu/java/rmi/rmic/Compile_gcj.java
+ gnu/java/rmi/rmic/Compiler.java
+ gnu/java/rmi/rmic/CompilerProcess.java
+ gnu/java/rmi/rmic/RMIC.java
+ gnu/java/rmi/rmic/TabbedWriter.java
+ gnu/java/rmi/server/ProtocolConstants.java
+ gnu/java/rmi/server/RMIDefaultSocketFactory.java
+ gnu/java/rmi/server/RMIHashes.java
+ gnu/java/rmi/server/RMIObjectInputStream.java
+ gnu/java/rmi/server/RMIObjectOutputStream.java
+ gnu/java/rmi/server/UnicastConnection.java
+ gnu/java/rmi/server/UnicastConnectionManager.java
+ gnu/java/rmi/server/UnicastRef.java
+ gnu/java/rmi/server/UnicastRemoteCall.java
+ gnu/java/rmi/server/UnicastRemoteStub.java
+ gnu/java/rmi/server/UnicastServer.java
+ gnu/java/rmi/server/UnicastServerRef.java
+ gnu/java/security/provider/DefaultPolicy.java
+ gnu/java/security/provider/Gnu.java
+ gnu/java/security/provider/SHA.java
+ gnu/java/security/provider/SHA1PRNG.java
+ gnu/java/text/BaseBreakIterator.java
+ gnu/java/text/CharacterBreakIterator.java
+ gnu/java/text/LineBreakIterator.java
+ gnu/java/text/SentenceBreakIterator.java
+ gnu/java/text/WordBreakIterator.java
+ gnu/java/util/DoubleEnumeration.java java/applet/Applet.java
+ java/applet/AppletContext.java java/applet/AppletStub.java
+ java/applet/AudioClip.java java/awt/AWTError.java
+ java/awt/AWTEvent.java java/awt/AWTEventMulticaster.java
+ java/awt/AWTException.java java/awt/AWTPermission.java
+ java/awt/ActiveEvent.java java/awt/BorderLayout.java
+ java/awt/Button.java java/awt/Canvas.java
+ java/awt/CardLayout.java java/awt/Checkbox.java
+ java/awt/CheckboxGroup.java java/awt/Component.java
+ java/awt/ComponentOrientation.java java/awt/Container.java
+ java/awt/Dimension.java java/awt/Event.java
+ java/awt/EventDispatchThread.java java/awt/EventQueue.java
+ java/awt/FlowLayout.java java/awt/Frame.java
+ java/awt/Graphics.java java/awt/Graphics2D.java
+ java/awt/GraphicsConfiguration.java java/awt/GridLayout.java
+ java/awt/IllegalComponentStateException.java
+ java/awt/ItemSelectable.java java/awt/Label.java
+ java/awt/LayoutManager.java java/awt/LayoutManager2.java
+ java/awt/MenuComponent.java java/awt/MenuItem.java
+ java/awt/Paint.java java/awt/Point.java
+ java/awt/Rectangle.java java/awt/RenderingHints.java
+ java/awt/Transparency.java java/awt/Window.java
+ java/awt/color/ColorSpace.java
+ java/awt/color/ICC_ColorSpace.java
+ java/awt/color/ICC_Profile.java
+ java/awt/event/HierarchyBoundsAdapter.java
+ java/awt/event/HierarchyBoundsListener.java
+ java/awt/event/HierarchyEvent.java
+ java/awt/event/HierarchyListener.java
+ java/awt/geom/AffineTransform.java
+ java/awt/geom/Dimension2D.java java/awt/geom/Ellipse2D.java
+ java/awt/geom/IllegalPathStateException.java
+ java/awt/geom/Line2D.java
+ java/awt/geom/NoninvertibleTransformException.java
+ java/awt/geom/PathIterator.java java/awt/geom/Point2D.java
+ java/awt/geom/Rectangle2D.java
+ java/awt/geom/RectangularShape.java
+ java/awt/geom/RoundRectangle2D.java
+ java/awt/image/BufferedImage.java
+ java/awt/image/ColorModel.java
+ java/awt/image/ComponentColorModel.java
+ java/awt/image/ComponentSampleModel.java
+ java/awt/image/DataBuffer.java
+ java/awt/image/DataBufferByte.java
+ java/awt/image/DataBufferInt.java
+ java/awt/image/DataBufferUShort.java
+ java/awt/image/DirectColorModel.java
+ java/awt/image/PackedColorModel.java
+ java/awt/image/Raster.java java/awt/image/RasterOp.java
+ java/awt/image/SampleModel.java
+ java/awt/image/SinglePixelPackedSampleModel.java
+ java/awt/image/WritableRaster.java
+ java/beans/AppletInitializer.java
+ java/beans/BeanDescriptor.java java/beans/BeanInfo.java
+ java/beans/Beans.java java/beans/Customizer.java
+ java/beans/DesignMode.java java/beans/EventSetDescriptor.java
+ java/beans/FeatureDescriptor.java
+ java/beans/IndexedPropertyDescriptor.java
+ java/beans/IntrospectionException.java
+ java/beans/Introspector.java java/beans/MethodDescriptor.java
+ java/beans/ParameterDescriptor.java
+ java/beans/PropertyChangeEvent.java
+ java/beans/PropertyChangeListener.java
+ java/beans/PropertyChangeSupport.java
+ java/beans/PropertyDescriptor.java
+ java/beans/PropertyEditor.java
+ java/beans/PropertyEditorManager.java
+ java/beans/PropertyEditorSupport.java
+ java/beans/PropertyVetoException.java
+ java/beans/SimpleBeanInfo.java
+ java/beans/VetoableChangeListener.java
+ java/beans/VetoableChangeSupport.java
+ java/beans/Visibility.java
+ java/beans/beancontext/BeanContext.java
+ java/beans/beancontext/BeanContextChild.java
+ java/beans/beancontext/BeanContextChildComponentProxy.java
+ java/beans/beancontext/BeanContextChildSupport.java
+ java/beans/beancontext/BeanContextContainerProxy.java
+ java/beans/beancontext/BeanContextEvent.java
+ java/beans/beancontext/BeanContextMembershipEvent.java
+ java/beans/beancontext/BeanContextMembershipListener.java
+ java/beans/beancontext/BeanContextProxy.java
+ java/beans/beancontext/BeanContextServiceAvailableEvent.java
+ java/beans/beancontext/BeanContextServiceProvider.java
+ java/beans/beancontext/BeanContextServiceProviderBeanInfo.java
+ java/beans/beancontext/BeanContextServiceRevokedEvent.java
+ java/beans/beancontext/BeanContextServiceRevokedListener.java
+ java/beans/beancontext/BeanContextServices.java
+ java/beans/beancontext/BeanContextServicesListener.java
+ java/io/BufferedInputStream.java
+ java/io/BufferedOutputStream.java java/io/BufferedReader.java
+ java/io/BufferedWriter.java java/io/ByteArrayInputStream.java
+ java/io/ByteArrayOutputStream.java
+ java/io/CharArrayReader.java java/io/CharArrayWriter.java
+ java/io/CharConversionException.java java/io/DataInput.java
+ java/io/DataInputStream.java java/io/DataOutput.java
+ java/io/EOFException.java java/io/Externalizable.java
+ java/io/FileFilter.java java/io/FileNotFoundException.java
+ java/io/FilePermission.java java/io/FileReader.java
+ java/io/FileWriter.java java/io/FilenameFilter.java
+ java/io/FilterInputStream.java java/io/FilterOutputStream.java
+ java/io/FilterReader.java java/io/FilterWriter.java
+ java/io/IOException.java java/io/InputStream.java
+ java/io/InterruptedIOException.java
+ java/io/InvalidClassException.java
+ java/io/InvalidObjectException.java
+ java/io/NotActiveException.java
+ java/io/NotSerializableException.java java/io/ObjectInput.java
+ java/io/ObjectInputStream.java
+ java/io/ObjectInputValidation.java java/io/ObjectOutput.java
+ java/io/ObjectOutputStream.java java/io/ObjectStreamClass.java
+ java/io/ObjectStreamConstants.java
+ java/io/ObjectStreamException.java
+ java/io/ObjectStreamField.java
+ java/io/OptionalDataException.java java/io/OutputStream.java
+ java/io/PipedInputStream.java java/io/PipedOutputStream.java
+ java/io/PipedReader.java java/io/PipedWriter.java
+ java/io/PrintWriter.java java/io/PushbackInputStream.java
+ java/io/PushbackReader.java java/io/Reader.java
+ java/io/SequenceInputStream.java java/io/Serializable.java
+ java/io/SerializablePermission.java
+ java/io/StreamCorruptedException.java
+ java/io/StreamTokenizer.java
+ java/io/StringBufferInputStream.java java/io/StringReader.java
+ java/io/StringWriter.java java/io/SyncFailedException.java
+ java/io/UTFDataFormatException.java
+ java/io/UnsupportedEncodingException.java
+ java/io/WriteAbortedException.java java/io/Writer.java
+ java/lang/AbstractMethodError.java
+ java/lang/ArithmeticException.java
+ java/lang/ArrayIndexOutOfBoundsException.java
+ java/lang/ArrayStoreException.java java/lang/Boolean.java
+ java/lang/Byte.java java/lang/CharSequence.java
+ java/lang/ClassCastException.java
+ java/lang/ClassCircularityError.java
+ java/lang/ClassFormatError.java
+ java/lang/ClassNotFoundException.java
+ java/lang/CloneNotSupportedException.java
+ java/lang/Cloneable.java java/lang/Comparable.java
+ java/lang/Compiler.java java/lang/Double.java
+ java/lang/Error.java java/lang/Exception.java
+ java/lang/ExceptionInInitializerError.java
+ java/lang/Float.java java/lang/IllegalAccessError.java
+ java/lang/IllegalAccessException.java
+ java/lang/IllegalArgumentException.java
+ java/lang/IllegalMonitorStateException.java
+ java/lang/IllegalStateException.java
+ java/lang/IllegalThreadStateException.java
+ java/lang/IncompatibleClassChangeError.java
+ java/lang/IndexOutOfBoundsException.java
+ java/lang/InheritableThreadLocal.java
+ java/lang/InstantiationError.java
+ java/lang/InstantiationException.java java/lang/Integer.java
+ java/lang/InternalError.java
+ java/lang/InterruptedException.java
+ java/lang/LinkageError.java java/lang/Long.java
+ java/lang/NegativeArraySizeException.java
+ java/lang/NoClassDefFoundError.java
+ java/lang/NoSuchFieldError.java
+ java/lang/NoSuchFieldException.java
+ java/lang/NoSuchMethodError.java
+ java/lang/NoSuchMethodException.java
+ java/lang/NullPointerException.java java/lang/Number.java
+ java/lang/NumberFormatException.java
+ java/lang/OutOfMemoryError.java java/lang/Package.java
+ java/lang/Process.java java/lang/Runnable.java
+ java/lang/RuntimeException.java
+ java/lang/RuntimePermission.java
+ java/lang/SecurityException.java
+ java/lang/SecurityManager.java java/lang/Short.java
+ java/lang/StackOverflowError.java java/lang/StringBuffer.java
+ java/lang/StringIndexOutOfBoundsException.java
+ java/lang/ThreadDeath.java java/lang/ThreadGroup.java
+ java/lang/ThreadLocal.java java/lang/UnknownError.java
+ java/lang/UnsatisfiedLinkError.java
+ java/lang/UnsupportedClassVersionError.java
+ java/lang/UnsupportedOperationException.java
+ java/lang/VerifyError.java java/lang/VirtualMachineError.java
+ java/lang/Void.java java/lang/ref/PhantomReference.java
+ java/lang/ref/Reference.java java/lang/ref/ReferenceQueue.java
+ java/lang/ref/SoftReference.java
+ java/lang/ref/WeakReference.java
+ java/lang/reflect/AccessibleObject.java
+ java/lang/reflect/InvocationTargetException.java
+ java/lang/reflect/Member.java java/lang/reflect/Modifier.java
+ java/lang/reflect/ReflectPermission.java
+ java/math/BigDecimal.java java/math/BigInteger.java
+ java/net/Authenticator.java java/net/BindException.java
+ java/net/ConnectException.java java/net/ContentHandler.java
+ java/net/ContentHandlerFactory.java
+ java/net/DatagramPacket.java java/net/DatagramSocketImpl.java
+ java/net/FileNameMap.java java/net/MalformedURLException.java
+ java/net/MulticastSocket.java java/net/NetPermission.java
+ java/net/NoRouteToHostException.java
+ java/net/PasswordAuthentication.java
+ java/net/ProtocolException.java java/net/ServerSocket.java
+ java/net/Socket.java java/net/SocketException.java
+ java/net/SocketImpl.java java/net/SocketImplFactory.java
+ java/net/SocketOptions.java java/net/SocketPermission.java
+ java/net/URLDecoder.java java/net/URLEncoder.java
+ java/net/URLStreamHandlerFactory.java
+ java/net/UnknownHostException.java
+ java/net/UnknownServiceException.java
+ java/rmi/AccessException.java
+ java/rmi/AlreadyBoundException.java
+ java/rmi/ConnectException.java
+ java/rmi/ConnectIOException.java
+ java/rmi/MarshalException.java java/rmi/MarshalledObject.java
+ java/rmi/Naming.java java/rmi/NoSuchObjectException.java
+ java/rmi/NotBoundException.java
+ java/rmi/RMISecurityException.java
+ java/rmi/RMISecurityManager.java java/rmi/Remote.java
+ java/rmi/RemoteException.java java/rmi/ServerError.java
+ java/rmi/ServerException.java
+ java/rmi/ServerRuntimeException.java
+ java/rmi/StubNotFoundException.java
+ java/rmi/UnexpectedException.java
+ java/rmi/UnknownHostException.java
+ java/rmi/UnmarshalException.java
+ java/rmi/activation/Activatable.java
+ java/rmi/activation/ActivateFailedException.java
+ java/rmi/activation/ActivationDesc.java
+ java/rmi/activation/ActivationException.java
+ java/rmi/activation/ActivationGroup.java
+ java/rmi/activation/ActivationGroupDesc.java
+ java/rmi/activation/ActivationGroupID.java
+ java/rmi/activation/ActivationID.java
+ java/rmi/activation/ActivationInstantiator.java
+ java/rmi/activation/ActivationMonitor.java
+ java/rmi/activation/ActivationSystem.java
+ java/rmi/activation/Activator.java
+ java/rmi/activation/UnknownGroupException.java
+ java/rmi/activation/UnknownObjectException.java
+ java/rmi/dgc/DGC.java java/rmi/dgc/Lease.java
+ java/rmi/dgc/VMID.java java/rmi/registry/LocateRegistry.java
+ java/rmi/registry/Registry.java
+ java/rmi/registry/RegistryHandler.java
+ java/rmi/server/ExportException.java
+ java/rmi/server/LoaderHandler.java
+ java/rmi/server/LogStream.java java/rmi/server/ObjID.java
+ java/rmi/server/Operation.java
+ java/rmi/server/RMIClassLoader.java
+ java/rmi/server/RMIClientSocketFactory.java
+ java/rmi/server/RMIFailureHandler.java
+ java/rmi/server/RMIServerSocketFactory.java
+ java/rmi/server/RMISocketFactory.java
+ java/rmi/server/RemoteCall.java
+ java/rmi/server/RemoteObject.java
+ java/rmi/server/RemoteRef.java
+ java/rmi/server/RemoteServer.java
+ java/rmi/server/RemoteStub.java
+ java/rmi/server/ServerCloneException.java
+ java/rmi/server/ServerNotActiveException.java
+ java/rmi/server/ServerRef.java java/rmi/server/Skeleton.java
+ java/rmi/server/SkeletonMismatchException.java
+ java/rmi/server/SkeletonNotFoundException.java
+ java/rmi/server/SocketSecurityException.java
+ java/rmi/server/UID.java
+ java/rmi/server/UnicastRemoteObject.java
+ java/rmi/server/Unreferenced.java
+ java/security/AccessControlContext.java
+ java/security/AccessControlException.java
+ java/security/AccessController.java
+ java/security/AlgorithmParameterGenerator.java
+ java/security/AlgorithmParameterGeneratorSpi.java
+ java/security/AlgorithmParameters.java
+ java/security/AlgorithmParametersSpi.java
+ java/security/AllPermission.java
+ java/security/BasicPermission.java
+ java/security/Certificate.java java/security/CodeSource.java
+ java/security/DigestException.java
+ java/security/DigestInputStream.java
+ java/security/DigestOutputStream.java
+ java/security/DomainCombiner.java
+ java/security/DummyKeyPairGenerator.java
+ java/security/DummyMessageDigest.java
+ java/security/DummySignature.java
+ java/security/GeneralSecurityException.java
+ java/security/Guard.java java/security/GuardedObject.java
+ java/security/Identity.java java/security/IdentityScope.java
+ java/security/InvalidAlgorithmParameterException.java
+ java/security/InvalidKeyException.java
+ java/security/InvalidParameterException.java
+ java/security/Key.java java/security/KeyException.java
+ java/security/KeyFactory.java java/security/KeyFactorySpi.java
+ java/security/KeyManagementException.java
+ java/security/KeyPair.java java/security/KeyPairGenerator.java
+ java/security/KeyPairGeneratorSpi.java
+ java/security/KeyStore.java
+ java/security/KeyStoreException.java
+ java/security/KeyStoreSpi.java
+ java/security/MessageDigest.java
+ java/security/MessageDigestSpi.java
+ java/security/NoSuchAlgorithmException.java
+ java/security/NoSuchProviderException.java
+ java/security/Permission.java
+ java/security/PermissionCollection.java
+ java/security/Permissions.java java/security/Policy.java
+ java/security/Principal.java java/security/PrivateKey.java
+ java/security/PrivilegedAction.java
+ java/security/PrivilegedActionException.java
+ java/security/PrivilegedExceptionAction.java
+ java/security/ProtectionDomain.java
+ java/security/Provider.java
+ java/security/ProviderException.java
+ java/security/PublicKey.java
+ java/security/SecureClassLoader.java
+ java/security/SecureRandom.java
+ java/security/SecureRandomSpi.java java/security/Security.java
+ java/security/SecurityPermission.java
+ java/security/Signature.java
+ java/security/SignatureException.java
+ java/security/SignatureSpi.java
+ java/security/SignedObject.java java/security/Signer.java
+ java/security/UnrecoverableKeyException.java
+ java/security/UnresolvedPermission.java
+ java/security/acl/Acl.java java/security/acl/AclEntry.java
+ java/security/acl/AclNotFoundException.java
+ java/security/acl/Group.java
+ java/security/acl/LastOwnerException.java
+ java/security/acl/NotOwnerException.java
+ java/security/acl/Owner.java java/security/acl/Permission.java
+ java/security/cert/CRL.java
+ java/security/cert/CRLException.java
+ java/security/cert/Certificate.java
+ java/security/cert/CertificateEncodingException.java
+ java/security/cert/CertificateException.java
+ java/security/cert/CertificateExpiredException.java
+ java/security/cert/CertificateFactory.java
+ java/security/cert/CertificateFactorySpi.java
+ java/security/cert/CertificateNotYetValidException.java
+ java/security/cert/CertificateParsingException.java
+ java/security/cert/X509CRL.java
+ java/security/cert/X509CRLEntry.java
+ java/security/cert/X509Certificate.java
+ java/security/cert/X509Extension.java
+ java/security/interfaces/DSAKey.java
+ java/security/interfaces/DSAKeyPairGenerator.java
+ java/security/interfaces/DSAParams.java
+ java/security/interfaces/DSAPrivateKey.java
+ java/security/interfaces/DSAPublicKey.java
+ java/security/interfaces/RSAKey.java
+ java/security/interfaces/RSAPrivateCrtKey.java
+ java/security/interfaces/RSAPrivateKey.java
+ java/security/interfaces/RSAPublicKey.java
+ java/security/spec/AlgorithmParameterSpec.java
+ java/security/spec/DSAParameterSpec.java
+ java/security/spec/DSAPrivateKeySpec.java
+ java/security/spec/DSAPublicKeySpec.java
+ java/security/spec/EncodedKeySpec.java
+ java/security/spec/InvalidKeySpecException.java
+ java/security/spec/InvalidParameterSpecException.java
+ java/security/spec/KeySpec.java
+ java/security/spec/PKCS8EncodedKeySpec.java
+ java/security/spec/RSAKeyGenParameterSpec.java
+ java/security/spec/RSAPrivateCrtKeySpec.java
+ java/security/spec/RSAPrivateKeySpec.java
+ java/security/spec/RSAPublicKeySpec.java
+ java/security/spec/X509EncodedKeySpec.java java/sql/Array.java
+ java/sql/BatchUpdateException.java java/sql/Blob.java
+ java/sql/CallableStatement.java java/sql/Clob.java
+ java/sql/Connection.java java/sql/DataTruncation.java
+ java/sql/DatabaseMetaData.java java/sql/Date.java
+ java/sql/Driver.java java/sql/DriverManager.java
+ java/sql/DriverPropertyInfo.java
+ java/sql/PreparedStatement.java java/sql/Ref.java
+ java/sql/ResultSet.java java/sql/ResultSetMetaData.java
+ java/sql/SQLData.java java/sql/SQLException.java
+ java/sql/SQLInput.java java/sql/SQLOutput.java
+ java/sql/SQLWarning.java java/sql/Statement.java
+ java/sql/Struct.java java/sql/Time.java
+ java/sql/Timestamp.java java/sql/Types.java
+ java/text/Annotation.java
+ java/text/AttributedCharacterIterator.java
+ java/text/AttributedString.java
+ java/text/AttributedStringIterator.java
+ java/text/BreakIterator.java java/text/CharacterIterator.java
+ java/text/ChoiceFormat.java java/text/Collator.java
+ java/text/DateFormat.java java/text/DateFormatSymbols.java
+ java/text/DecimalFormat.java
+ java/text/DecimalFormatSymbols.java
+ java/text/FieldPosition.java java/text/Format.java
+ java/text/MessageFormat.java java/text/NumberFormat.java
+ java/text/ParseException.java java/text/ParsePosition.java
+ java/text/SimpleDateFormat.java
+ java/text/StringCharacterIterator.java
+ java/util/AbstractCollection.java java/util/AbstractList.java
+ java/util/AbstractMap.java
+ java/util/AbstractSequentialList.java
+ java/util/AbstractSet.java java/util/ArrayList.java
+ java/util/Arrays.java java/util/BasicMapEntry.java
+ java/util/BitSet.java java/util/Calendar.java
+ java/util/Collection.java java/util/Collections.java
+ java/util/Comparator.java
+ java/util/ConcurrentModificationException.java
+ java/util/Date.java java/util/Dictionary.java
+ java/util/EmptyStackException.java java/util/Enumeration.java
+ java/util/EventListener.java java/util/EventObject.java
+ java/util/GregorianCalendar.java java/util/HashMap.java
+ java/util/HashSet.java java/util/Hashtable.java
+ java/util/IdentityHashMap.java java/util/Iterator.java
+ java/util/LinkedHashMap.java java/util/LinkedHashSet.java
+ java/util/LinkedList.java java/util/List.java
+ java/util/ListIterator.java java/util/ListResourceBundle.java
+ java/util/Locale.java java/util/Map.java
+ java/util/MissingResourceException.java
+ java/util/NoSuchElementException.java
+ java/util/Observable.java java/util/Observer.java
+ java/util/Properties.java java/util/PropertyPermission.java
+ java/util/PropertyResourceBundle.java java/util/Random.java
+ java/util/RandomAccess.java java/util/ResourceBundle.java
+ java/util/Set.java java/util/SimpleTimeZone.java
+ java/util/SortedMap.java java/util/SortedSet.java
+ java/util/Stack.java java/util/StringTokenizer.java
+ java/util/TimeZone.java java/util/Timer.java
+ java/util/TimerTask.java
+ java/util/TooManyListenersException.java
+ java/util/TreeMap.java java/util/TreeSet.java
+ java/util/Vector.java java/util/WeakHashMap.java
+ java/util/jar/Attributes.java java/util/jar/JarEntry.java
+ java/util/jar/JarException.java java/util/jar/JarFile.java
+ java/util/jar/JarInputStream.java
+ java/util/jar/JarOutputStream.java java/util/jar/Manifest.java
+ java/util/zip/Adler32.java java/util/zip/CRC32.java
+ java/util/zip/CheckedInputStream.java
+ java/util/zip/CheckedOutputStream.java
+ java/util/zip/Checksum.java
+ java/util/zip/DataFormatException.java
+ java/util/zip/Deflater.java
+ java/util/zip/DeflaterOutputStream.java
+ java/util/zip/GZIPInputStream.java
+ java/util/zip/GZIPOutputStream.java
+ java/util/zip/Inflater.java
+ java/util/zip/InflaterInputStream.java
+ java/util/zip/ZipConstants.java java/util/zip/ZipEntry.java
+ java/util/zip/ZipException.java java/util/zip/ZipFile.java
+ java/util/zip/ZipInputStream.java
+ java/util/zip/ZipOutputStream.java
+ javax/naming/BinaryRefAddr.java
+ javax/naming/InvalidNameException.java javax/naming/Name.java
+ javax/naming/NamingException.java javax/naming/RefAddr.java
javax/naming/StringRefAddr.java: Add license clarification.
2002-01-22 Tom Tromey <tromey@redhat.com>
@@ -5280,7 +5870,7 @@
* Makefile.in: Rebuilt.
* Makefile.am (jv_convert_LDADD): Removed convert_source_files.
-2002-01-08 Nic Ferrier <nferrier@tf1.tapsellferrier.co.uk>
+2002-01-08 Nic Ferrier <nferrier@tf1.tapsellferrier.co.uk>
* java/net/natPlainSocketImpl.cc: Added timeout handling for
sockets.
@@ -5336,4 +5926,3 @@
* libjava/java/lang/ieeefp.h: Define __IEEE_BIG_ENDIAN for
PPC Darwin, not for all of Darwin.
-
diff --git a/libjava/Makefile.am b/libjava/Makefile.am
index 861b5ab211c..34135e77e99 100644
--- a/libjava/Makefile.am
+++ b/libjava/Makefile.am
@@ -678,6 +678,8 @@ java/awt/Window.java \
java/awt/color/ColorSpace.java \
java/awt/color/ICC_ColorSpace.java \
java/awt/color/ICC_Profile.java \
+java/awt/color/ICC_ProfileGray.java \
+java/awt/color/ICC_ProfileRGB.java \
java/awt/color/CMMException.java \
java/awt/color/ProfileDataException.java \
java/awt/datatransfer/Clipboard.java \
@@ -1869,6 +1871,15 @@ gnu/java/locale/LocaleInformation_zh_HK.java \
gnu/java/locale/LocaleInformation_zh_SG.java \
gnu/java/locale/LocaleInformation_zh_TW.java \
gnu/java/math/MPN.java \
+gnu/java/nio/charset/ISO_8859_1.java \
+gnu/java/nio/charset/Provider.java \
+gnu/java/nio/charset/US_ASCII.java \
+gnu/java/nio/charset/UTF_16.java \
+gnu/java/nio/charset/UTF_16BE.java \
+gnu/java/nio/charset/UTF_16Decoder.java \
+gnu/java/nio/charset/UTF_16Encoder.java \
+gnu/java/nio/charset/UTF_16LE.java \
+gnu/java/nio/charset/UTF_8.java \
gnu/java/security/der/DEREncodingException.java \
gnu/java/security/provider/DERReader.java \
gnu/java/security/provider/DERWriter.java \
@@ -1957,17 +1968,36 @@ java/net/URLStreamHandlerFactory.java \
java/net/UnknownHostException.java \
java/net/UnknownServiceException.java \
java/nio/Buffer.java \
+java/nio/BufferOverflowException.java \
+java/nio/BufferUnderflowException.java \
java/nio/ByteBuffer.java \
java/nio/ByteOrder.java \
+java/nio/CharBuffer.java \
+java/nio/InvalidMarkException.java \
java/nio/MappedByteBuffer.java \
+java/nio/ReadOnlyBufferException.java \
java/nio/channels/AlreadyConnectedException.java \
+java/nio/channels/AsynchronousCloseException.java \
java/nio/channels/ByteChannel.java \
+java/nio/channels/CancelledKeyException.java \
java/nio/channels/Channel.java \
+java/nio/channels/ClosedByInterruptException.java \
java/nio/channels/ClosedChannelException.java \
+java/nio/channels/ClosedSelectorException.java \
+java/nio/channels/ConnectionPendingException.java \
java/nio/channels/DatagramChannel.java \
+java/nio/channels/FileChannel.java \
+java/nio/channels/FileLockInterruptionException.java \
java/nio/channels/GatheringByteChannel.java \
java/nio/channels/IllegalBlockingModeException.java \
+java/nio/channels/IllegalSelectorException.java \
java/nio/channels/InterruptibleChannel.java \
+java/nio/channels/NoConnectionPendingException.java \
+java/nio/channels/NonReadableChannelException.java \
+java/nio/channels/NonWritableChannelException.java \
+java/nio/channels/NotYetBoundException.java \
+java/nio/channels/NotYetConnectedException.java \
+java/nio/channels/OverlappingFileLockException.java \
java/nio/channels/Pipe.java \
java/nio/channels/ReadableByteChannel.java \
java/nio/channels/ScatteringByteChannel.java \
@@ -1976,16 +2006,20 @@ java/nio/channels/SelectionKey.java \
java/nio/channels/Selector.java \
java/nio/channels/ServerSocketChannel.java \
java/nio/channels/SocketChannel.java \
+java/nio/channels/UnresolvedAddressException.java \
+java/nio/channels/UnsupportedAddressTypeException.java \
java/nio/channels/WritableByteChannel.java \
java/nio/channels/spi/AbstractSelectableChannel.java \
-java/nio/channels/spi/AbstractChannel.java \
java/nio/channels/spi/AbstractInterruptibleChannel.java \
java/nio/channels/spi/AbstractSelectionKey.java \
java/nio/channels/spi/AbstractSelector.java \
java/nio/channels/spi/SelectorProvider.java \
java/nio/charset/Charset.java \
java/nio/charset/CharacterCodingException.java \
+java/nio/charset/CharsetDecoder.java \
+java/nio/charset/CharsetEncoder.java \
java/nio/charset/CoderMalfunctionError.java \
+java/nio/charset/CoderResult.java \
java/nio/charset/CodingErrorAction.java \
java/nio/charset/IllegalCharsetNameException.java \
java/nio/charset/MalformedInputException.java \
diff --git a/libjava/Makefile.in b/libjava/Makefile.in
index cd06f284648..239bd09db32 100644
--- a/libjava/Makefile.in
+++ b/libjava/Makefile.in
@@ -435,6 +435,8 @@ java/awt/Window.java \
java/awt/color/ColorSpace.java \
java/awt/color/ICC_ColorSpace.java \
java/awt/color/ICC_Profile.java \
+java/awt/color/ICC_ProfileGray.java \
+java/awt/color/ICC_ProfileRGB.java \
java/awt/color/CMMException.java \
java/awt/color/ProfileDataException.java \
java/awt/datatransfer/Clipboard.java \
@@ -1619,6 +1621,15 @@ gnu/java/locale/LocaleInformation_zh_HK.java \
gnu/java/locale/LocaleInformation_zh_SG.java \
gnu/java/locale/LocaleInformation_zh_TW.java \
gnu/java/math/MPN.java \
+gnu/java/nio/charset/ISO_8859_1.java \
+gnu/java/nio/charset/Provider.java \
+gnu/java/nio/charset/US_ASCII.java \
+gnu/java/nio/charset/UTF_16.java \
+gnu/java/nio/charset/UTF_16BE.java \
+gnu/java/nio/charset/UTF_16Decoder.java \
+gnu/java/nio/charset/UTF_16Encoder.java \
+gnu/java/nio/charset/UTF_16LE.java \
+gnu/java/nio/charset/UTF_8.java \
gnu/java/security/der/DEREncodingException.java \
gnu/java/security/provider/DERReader.java \
gnu/java/security/provider/DERWriter.java \
@@ -1707,17 +1718,36 @@ java/net/URLStreamHandlerFactory.java \
java/net/UnknownHostException.java \
java/net/UnknownServiceException.java \
java/nio/Buffer.java \
+java/nio/BufferOverflowException.java \
+java/nio/BufferUnderflowException.java \
java/nio/ByteBuffer.java \
java/nio/ByteOrder.java \
+java/nio/CharBuffer.java \
+java/nio/InvalidMarkException.java \
java/nio/MappedByteBuffer.java \
+java/nio/ReadOnlyBufferException.java \
java/nio/channels/AlreadyConnectedException.java \
+java/nio/channels/AsynchronousCloseException.java \
java/nio/channels/ByteChannel.java \
+java/nio/channels/CancelledKeyException.java \
java/nio/channels/Channel.java \
+java/nio/channels/ClosedByInterruptException.java \
java/nio/channels/ClosedChannelException.java \
+java/nio/channels/ClosedSelectorException.java \
+java/nio/channels/ConnectionPendingException.java \
java/nio/channels/DatagramChannel.java \
+java/nio/channels/FileChannel.java \
+java/nio/channels/FileLockInterruptionException.java \
java/nio/channels/GatheringByteChannel.java \
java/nio/channels/IllegalBlockingModeException.java \
+java/nio/channels/IllegalSelectorException.java \
java/nio/channels/InterruptibleChannel.java \
+java/nio/channels/NoConnectionPendingException.java \
+java/nio/channels/NonReadableChannelException.java \
+java/nio/channels/NonWritableChannelException.java \
+java/nio/channels/NotYetBoundException.java \
+java/nio/channels/NotYetConnectedException.java \
+java/nio/channels/OverlappingFileLockException.java \
java/nio/channels/Pipe.java \
java/nio/channels/ReadableByteChannel.java \
java/nio/channels/ScatteringByteChannel.java \
@@ -1726,16 +1756,20 @@ java/nio/channels/SelectionKey.java \
java/nio/channels/Selector.java \
java/nio/channels/ServerSocketChannel.java \
java/nio/channels/SocketChannel.java \
+java/nio/channels/UnresolvedAddressException.java \
+java/nio/channels/UnsupportedAddressTypeException.java \
java/nio/channels/WritableByteChannel.java \
java/nio/channels/spi/AbstractSelectableChannel.java \
-java/nio/channels/spi/AbstractChannel.java \
java/nio/channels/spi/AbstractInterruptibleChannel.java \
java/nio/channels/spi/AbstractSelectionKey.java \
java/nio/channels/spi/AbstractSelector.java \
java/nio/channels/spi/SelectorProvider.java \
java/nio/charset/Charset.java \
java/nio/charset/CharacterCodingException.java \
+java/nio/charset/CharsetDecoder.java \
+java/nio/charset/CharsetEncoder.java \
java/nio/charset/CoderMalfunctionError.java \
+java/nio/charset/CoderResult.java \
java/nio/charset/CodingErrorAction.java \
java/nio/charset/IllegalCharsetNameException.java \
java/nio/charset/MalformedInputException.java \
@@ -2510,7 +2544,15 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/gnu/java/locale/LocaleInformation_zh_HK.P \
.deps/gnu/java/locale/LocaleInformation_zh_SG.P \
.deps/gnu/java/locale/LocaleInformation_zh_TW.P \
-.deps/gnu/java/math/MPN.P \
+.deps/gnu/java/math/MPN.P .deps/gnu/java/nio/charset/ISO_8859_1.P \
+.deps/gnu/java/nio/charset/Provider.P \
+.deps/gnu/java/nio/charset/US_ASCII.P \
+.deps/gnu/java/nio/charset/UTF_16.P \
+.deps/gnu/java/nio/charset/UTF_16BE.P \
+.deps/gnu/java/nio/charset/UTF_16Decoder.P \
+.deps/gnu/java/nio/charset/UTF_16Encoder.P \
+.deps/gnu/java/nio/charset/UTF_16LE.P \
+.deps/gnu/java/nio/charset/UTF_8.P \
.deps/gnu/java/rmi/RMIMarshalledObjectInputStream.P \
.deps/gnu/java/rmi/RMIMarshalledObjectOutputStream.P \
.deps/gnu/java/rmi/dgc/DGCImpl.P .deps/gnu/java/rmi/dgc/DGCImpl_Skel.P \
@@ -2614,6 +2656,8 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/awt/Window.P .deps/java/awt/color/CMMException.P \
.deps/java/awt/color/ColorSpace.P .deps/java/awt/color/ICC_ColorSpace.P \
.deps/java/awt/color/ICC_Profile.P \
+.deps/java/awt/color/ICC_ProfileGray.P \
+.deps/java/awt/color/ICC_ProfileRGB.P \
.deps/java/awt/color/ProfileDataException.P \
.deps/java/awt/datatransfer/Clipboard.P \
.deps/java/awt/datatransfer/ClipboardOwner.P \
@@ -2973,15 +3017,33 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/net/natInetAddress.P .deps/java/net/natNetworkInterface.P \
.deps/java/net/natPlainDatagramSocketImpl.P \
.deps/java/net/natPlainSocketImpl.P .deps/java/nio/Buffer.P \
-.deps/java/nio/ByteBuffer.P .deps/java/nio/ByteOrder.P \
-.deps/java/nio/MappedByteBuffer.P \
+.deps/java/nio/BufferOverflowException.P \
+.deps/java/nio/BufferUnderflowException.P .deps/java/nio/ByteBuffer.P \
+.deps/java/nio/ByteOrder.P .deps/java/nio/CharBuffer.P \
+.deps/java/nio/InvalidMarkException.P .deps/java/nio/MappedByteBuffer.P \
+.deps/java/nio/ReadOnlyBufferException.P \
.deps/java/nio/channels/AlreadyConnectedException.P \
-.deps/java/nio/channels/ByteChannel.P .deps/java/nio/channels/Channel.P \
+.deps/java/nio/channels/AsynchronousCloseException.P \
+.deps/java/nio/channels/ByteChannel.P \
+.deps/java/nio/channels/CancelledKeyException.P \
+.deps/java/nio/channels/Channel.P \
+.deps/java/nio/channels/ClosedByInterruptException.P \
.deps/java/nio/channels/ClosedChannelException.P \
+.deps/java/nio/channels/ClosedSelectorException.P \
+.deps/java/nio/channels/ConnectionPendingException.P \
.deps/java/nio/channels/DatagramChannel.P \
+.deps/java/nio/channels/FileChannel.P \
+.deps/java/nio/channels/FileLockInterruptionException.P \
.deps/java/nio/channels/GatheringByteChannel.P \
.deps/java/nio/channels/IllegalBlockingModeException.P \
+.deps/java/nio/channels/IllegalSelectorException.P \
.deps/java/nio/channels/InterruptibleChannel.P \
+.deps/java/nio/channels/NoConnectionPendingException.P \
+.deps/java/nio/channels/NonReadableChannelException.P \
+.deps/java/nio/channels/NonWritableChannelException.P \
+.deps/java/nio/channels/NotYetBoundException.P \
+.deps/java/nio/channels/NotYetConnectedException.P \
+.deps/java/nio/channels/OverlappingFileLockException.P \
.deps/java/nio/channels/Pipe.P \
.deps/java/nio/channels/ReadableByteChannel.P \
.deps/java/nio/channels/ScatteringByteChannel.P \
@@ -2990,8 +3052,9 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/nio/channels/Selector.P \
.deps/java/nio/channels/ServerSocketChannel.P \
.deps/java/nio/channels/SocketChannel.P \
+.deps/java/nio/channels/UnresolvedAddressException.P \
+.deps/java/nio/channels/UnsupportedAddressTypeException.P \
.deps/java/nio/channels/WritableByteChannel.P \
-.deps/java/nio/channels/spi/AbstractChannel.P \
.deps/java/nio/channels/spi/AbstractInterruptibleChannel.P \
.deps/java/nio/channels/spi/AbstractSelectableChannel.P \
.deps/java/nio/channels/spi/AbstractSelectionKey.P \
@@ -2999,7 +3062,10 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/nio/channels/spi/SelectorProvider.P \
.deps/java/nio/charset/CharacterCodingException.P \
.deps/java/nio/charset/Charset.P \
+.deps/java/nio/charset/CharsetDecoder.P \
+.deps/java/nio/charset/CharsetEncoder.P \
.deps/java/nio/charset/CoderMalfunctionError.P \
+.deps/java/nio/charset/CoderResult.P \
.deps/java/nio/charset/CodingErrorAction.P \
.deps/java/nio/charset/IllegalCharsetNameException.P \
.deps/java/nio/charset/MalformedInputException.P \
diff --git a/libjava/configure b/libjava/configure
index 4e34cc94706..4160fef7d68 100755
--- a/libjava/configure
+++ b/libjava/configure
@@ -2461,12 +2461,54 @@ ia64-*-hpux*)
rm -rf conftest*
;;
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo configure:2468: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ case "`/usr/bin/file conftest.o`" in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
*-*-sco3.2v5*)
# On SCO OpenServer 5, we need -belf to get full-featured binaries.
SAVE_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -belf"
echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
-echo "configure:2470: checking whether the C compiler needs -belf" >&5
+echo "configure:2512: 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
@@ -2479,14 +2521,14 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a
cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext <<EOF
-#line 2483 "configure"
+#line 2525 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:2490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2532: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
lt_cv_cc_needs_belf=yes
else
@@ -2516,12 +2558,12 @@ echo "$ac_t""$lt_cv_cc_needs_belf" 1>&6
esac
echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
-echo "configure:2520: checking how to run the C++ preprocessor" >&5
+echo "configure:2562: 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
else
- ac_ext=C
+ 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'
@@ -2529,12 +2571,12 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
CXXCPP="${CXX-g++} -E"
cat > conftest.$ac_ext <<EOF
-#line 2533 "configure"
+#line 2575 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2538: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2580: \"$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
:
@@ -2547,15 +2589,18 @@ else
fi
rm -f conftest*
ac_cv_prog_CXXCPP="$CXXCPP"
-ac_ext=c
+ 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
+ CXXCPP="$ac_cv_prog_CXXCPP"
+else
+ ac_cv_prog_CXXCPP=$CXXCPP
fi
-CXXCPP="$ac_cv_prog_CXXCPP"
echo "$ac_t""$CXXCPP" 1>&6
@@ -2770,7 +2815,7 @@ INTERPRETER="$libgcj_interpreter"
echo $ac_n "checking for exception model to use""... $ac_c" 1>&6
-echo "configure:2774: checking for exception model to use" >&5
+echo "configure:2819: 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.
@@ -2785,7 +2830,7 @@ if test "${enable_sjlj_exceptions+set}" = set; then
:
else
cat > conftest.$ac_ext << EOF
-#line 2789 "configure"
+#line 2834 "configure"
struct S { ~S(); };
void bar();
void foo()
@@ -2796,7 +2841,7 @@ void foo()
EOF
old_CXXFLAGS="$CXXFLAGS"
CXXFLAGS=-S
-if { (eval echo configure:2800: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2845: \"$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
@@ -2906,7 +2951,7 @@ case "$TARGET_ECOS" in
PLATFORMH=win32.h
echo $ac_n "checking whether 'ld' is at least 2.13""... $ac_c" 1>&6
-echo "configure:2910: checking whether 'ld' is at least 2.13" >&5
+echo "configure:2955: checking whether 'ld' is at least 2.13" >&5
LD_PROG=`$CC --print-prog-name=ld`
LD_VERSION=`$LD_PROG --version`
LD_VERSION_MAJOR=`echo "$LD_VERSION" | head -1 | cut -d '.' -f 1 | cut -d ' ' -f 4`
@@ -2950,7 +2995,7 @@ esac
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:2954: checking how to run the C preprocessor" >&5
+echo "configure:2999: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -2965,13 +3010,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 2969 "configure"
+#line 3014 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2975: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3020: \"$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
:
@@ -2982,13 +3027,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 2986 "configure"
+#line 3031 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2992: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3037: \"$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
:
@@ -2999,13 +3044,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 3003 "configure"
+#line 3048 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3009: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3054: \"$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
:
@@ -3030,7 +3075,7 @@ fi
echo "$ac_t""$CPP" 1>&6
cat > conftest.$ac_ext <<EOF
-#line 3034 "configure"
+#line 3079 "configure"
#include "confdefs.h"
#include <stdint.h>
EOF
@@ -3045,7 +3090,7 @@ fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3049 "configure"
+#line 3094 "configure"
#include "confdefs.h"
#include <inttypes.h>
EOF
@@ -3060,7 +3105,7 @@ fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3064 "configure"
+#line 3109 "configure"
#include "confdefs.h"
#include <sys/types.h>
EOF
@@ -3075,7 +3120,7 @@ fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3079 "configure"
+#line 3124 "configure"
#include "confdefs.h"
#include <sys/config.h>
EOF
@@ -3092,7 +3137,7 @@ rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3096 "configure"
+#line 3141 "configure"
#include "confdefs.h"
#include <time.h>
EOF
@@ -3107,7 +3152,7 @@ fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3111 "configure"
+#line 3156 "configure"
#include "confdefs.h"
#include <time.h>
EOF
@@ -3159,7 +3204,7 @@ ZLIBTESTSPEC=
libsubdir=.libs
echo $ac_n "checking for garbage collector to use""... $ac_c" 1>&6
-echo "configure:3163: checking for garbage collector to use" >&5
+echo "configure:3208: 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"
@@ -3212,7 +3257,7 @@ esac
echo $ac_n "checking for thread model used by GCC""... $ac_c" 1>&6
-echo "configure:3216: checking for thread model used by GCC" >&5
+echo "configure:3261: 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
@@ -3420,12 +3465,12 @@ else
for ac_func in strerror ioctl select fstat open fsync sleep opendir
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3424: checking for $ac_func" >&5
+echo "configure:3469: 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 <<EOF
-#line 3429 "configure"
+#line 3474 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3448,7 +3493,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3452: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3497: \"$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
@@ -3475,12 +3520,12 @@ done
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:3479: checking for $ac_func" >&5
+echo "configure:3524: 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 <<EOF
-#line 3484 "configure"
+#line 3529 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3503,7 +3548,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3507: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3552: \"$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
@@ -3530,12 +3575,12 @@ done
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:3534: checking for $ac_func" >&5
+echo "configure:3579: 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 <<EOF
-#line 3539 "configure"
+#line 3584 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3558,7 +3603,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3607: \"$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
@@ -3585,12 +3630,12 @@ done
for ac_func in nl_langinfo setlocale
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3589: checking for $ac_func" >&5
+echo "configure:3634: 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 <<EOF
-#line 3594 "configure"
+#line 3639 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3613,7 +3658,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3662: \"$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
@@ -3640,12 +3685,12 @@ done
for ac_func in inet_aton inet_addr
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3644: checking for $ac_func" >&5
+echo "configure:3689: 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 <<EOF
-#line 3649 "configure"
+#line 3694 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3668,7 +3713,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3717: \"$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
@@ -3695,12 +3740,12 @@ done
for ac_func in inet_pton uname inet_ntoa
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3699: checking for $ac_func" >&5
+echo "configure:3744: 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 <<EOF
-#line 3704 "configure"
+#line 3749 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3723,7 +3768,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3772: \"$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
@@ -3750,12 +3795,12 @@ done
for ac_func in fork execvp pipe sigaction ftruncate
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3754: checking for $ac_func" >&5
+echo "configure:3799: 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 <<EOF
-#line 3759 "configure"
+#line 3804 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3778,7 +3823,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3782: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3827: \"$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
@@ -3806,17 +3851,17 @@ done
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3810: checking for $ac_hdr" >&5
+echo "configure:3855: 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
-#line 3815 "configure"
+#line 3860 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3820: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3865: \"$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*
@@ -3843,12 +3888,12 @@ fi
done
echo $ac_n "checking for backtrace""... $ac_c" 1>&6
-echo "configure:3847: checking for backtrace" >&5
+echo "configure:3892: checking for backtrace" >&5
if eval "test \"`echo '$''{'ac_cv_func_backtrace'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3852 "configure"
+#line 3897 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char backtrace(); below. */
@@ -3871,7 +3916,7 @@ backtrace();
; return 0; }
EOF
-if { (eval echo configure:3875: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3920: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_backtrace=yes"
else
@@ -3907,7 +3952,7 @@ fi
echo $ac_n "checking for dladdr in -ldl""... $ac_c" 1>&6
-echo "configure:3911: checking for dladdr in -ldl" >&5
+echo "configure:3956: 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
@@ -3915,7 +3960,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3919 "configure"
+#line 3964 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3926,7 +3971,7 @@ int main() {
dladdr()
; return 0; }
EOF
-if { (eval echo configure:3930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3975: \"$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
@@ -3956,7 +4001,7 @@ do
ac_safe=`echo "$ac_file" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_file""... $ac_c" 1>&6
-echo "configure:3960: checking for $ac_file" >&5
+echo "configure:4005: 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
@@ -4014,7 +4059,7 @@ fi
echo $ac_n "checking for iconv""... $ac_c" 1>&6
-echo "configure:4018: checking for iconv" >&5
+echo "configure:4063: checking for iconv" >&5
if eval "test \"`echo '$''{'am_cv_func_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4022,7 +4067,7 @@ else
am_cv_func_iconv="no, consider installing GNU libiconv"
am_cv_lib_iconv=no
cat > conftest.$ac_ext <<EOF
-#line 4026 "configure"
+#line 4071 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@@ -4032,7 +4077,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:4036: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4081: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_func_iconv=yes
else
@@ -4044,7 +4089,7 @@ rm -f conftest*
am_save_LIBS="$LIBS"
LIBS="$LIBS $am_cv_libiconv_ldpath -liconv"
cat > conftest.$ac_ext <<EOF
-#line 4048 "configure"
+#line 4093 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@@ -4054,7 +4099,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:4058: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4103: \"$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
@@ -4075,13 +4120,13 @@ echo "$ac_t""$am_cv_func_iconv" 1>&6
EOF
echo $ac_n "checking for iconv declaration""... $ac_c" 1>&6
-echo "configure:4079: checking for iconv declaration" >&5
+echo "configure:4124: 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 <<EOF
-#line 4085 "configure"
+#line 4130 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -4100,7 +4145,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:4104: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4149: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
am_cv_proto_iconv_arg1=""
else
@@ -4129,19 +4174,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:4133: checking for LC_MESSAGES" >&5
+echo "configure:4178: 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 <<EOF
-#line 4138 "configure"
+#line 4183 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:4145: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4190: \"$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
@@ -4162,12 +4207,12 @@ EOF
fi
fi
echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6
-echo "configure:4166: checking whether struct tm is in sys/time.h or time.h" >&5
+echo "configure:4211: checking whether struct tm is in sys/time.h or time.h" >&5
if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4171 "configure"
+#line 4216 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <time.h>
@@ -4175,7 +4220,7 @@ int main() {
struct tm *tp; tp->tm_sec;
; return 0; }
EOF
-if { (eval echo configure:4179: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4224: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_tm=time.h
else
@@ -4196,12 +4241,12 @@ EOF
fi
echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6
-echo "configure:4200: checking for tm_zone in struct tm" >&5
+echo "configure:4245: checking for tm_zone in struct tm" >&5
if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4205 "configure"
+#line 4250 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_cv_struct_tm>
@@ -4209,7 +4254,7 @@ int main() {
struct tm tm; tm.tm_zone;
; return 0; }
EOF
-if { (eval echo configure:4213: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4258: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_tm_zone=yes
else
@@ -4229,12 +4274,12 @@ EOF
else
echo $ac_n "checking for tzname""... $ac_c" 1>&6
-echo "configure:4233: checking for tzname" >&5
+echo "configure:4278: checking for tzname" >&5
if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4238 "configure"
+#line 4283 "configure"
#include "confdefs.h"
#include <time.h>
#ifndef tzname /* For SGI. */
@@ -4244,7 +4289,7 @@ int main() {
atoi(*tzname);
; return 0; }
EOF
-if { (eval echo configure:4248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_var_tzname=yes
else
@@ -4269,12 +4314,12 @@ fi
for ac_func in gethostbyname_r
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4273: checking for $ac_func" >&5
+echo "configure:4318: 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 <<EOF
-#line 4278 "configure"
+#line 4323 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4297,7 +4342,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4301: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4346: \"$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
@@ -4324,7 +4369,7 @@ EOF
# We look for the one that returns `int'.
# Hopefully this check is robust enough.
cat > conftest.$ac_ext <<EOF
-#line 4328 "configure"
+#line 4373 "configure"
#include "confdefs.h"
#include <netdb.h>
EOF
@@ -4344,7 +4389,7 @@ rm -f conftest*
*" -D_REENTRANT "*) ;;
*)
echo $ac_n "checking whether gethostbyname_r declaration requires -D_REENTRANT""... $ac_c" 1>&6
-echo "configure:4348: checking whether gethostbyname_r declaration requires -D_REENTRANT" >&5
+echo "configure:4393: 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
@@ -4357,14 +4402,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 4361 "configure"
+#line 4406 "configure"
#include "confdefs.h"
#include <netdb.h>
int main() {
gethostbyname_r("", 0, 0);
; return 0; }
EOF
-if { (eval echo configure:4368: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4413: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
libjava_cv_gethostbyname_r_needs_reentrant=no
else
@@ -4374,14 +4419,14 @@ else
CPPFLAGS_SAVE="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -D_REENTRANT"
cat > conftest.$ac_ext <<EOF
-#line 4378 "configure"
+#line 4423 "configure"
#include "confdefs.h"
#include <netdb.h>
int main() {
gethostbyname_r("", 0, 0);
; return 0; }
EOF
-if { (eval echo configure:4385: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4430: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
libjava_cv_gethostbyname_r_needs_reentrant=yes
else
@@ -4416,12 +4461,12 @@ EOF
esac
echo $ac_n "checking for struct hostent_data""... $ac_c" 1>&6
-echo "configure:4420: checking for struct hostent_data" >&5
+echo "configure:4465: 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 <<EOF
-#line 4425 "configure"
+#line 4470 "configure"
#include "confdefs.h"
#if GETHOSTBYNAME_R_NEEDS_REENTRANT && !defined(_REENTRANT)
@@ -4432,7 +4477,7 @@ int main() {
struct hostent_data data;
; return 0; }
EOF
-if { (eval echo configure:4436: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4481: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
libjava_cv_struct_hostent_data=yes
else
@@ -4464,7 +4509,7 @@ done
# to exist where expected. (The root issue: AC_CHECK_FUNCS assumes C
# linkage check is enough, yet C++ code requires proper prototypes.)
cat > conftest.$ac_ext <<EOF
-#line 4468 "configure"
+#line 4513 "configure"
#include "confdefs.h"
#include <netdb.h>
EOF
@@ -4475,12 +4520,12 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
for ac_func in gethostbyaddr_r
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4479: checking for $ac_func" >&5
+echo "configure:4524: 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 <<EOF
-#line 4484 "configure"
+#line 4529 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4503,7 +4548,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4507: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4552: \"$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
@@ -4530,7 +4575,7 @@ EOF
# We look for the one that returns `int'.
# Hopefully this check is robust enough.
cat > conftest.$ac_ext <<EOF
-#line 4534 "configure"
+#line 4579 "configure"
#include "confdefs.h"
#include <netdb.h>
EOF
@@ -4557,12 +4602,12 @@ rm -f conftest*
for ac_func in gethostname
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4561: checking for $ac_func" >&5
+echo "configure:4606: 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 <<EOF
-#line 4566 "configure"
+#line 4611 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4585,7 +4630,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4589: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4634: \"$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
@@ -4609,7 +4654,7 @@ EOF
EOF
cat > conftest.$ac_ext <<EOF
-#line 4613 "configure"
+#line 4658 "configure"
#include "confdefs.h"
#include <unistd.h>
EOF
@@ -4640,12 +4685,12 @@ done
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:4644: checking for $ac_func" >&5
+echo "configure:4689: 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 <<EOF
-#line 4649 "configure"
+#line 4694 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4668,7 +4713,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4717: \"$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
@@ -4698,12 +4743,12 @@ done
for ac_func in sched_yield
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4702: checking for $ac_func" >&5
+echo "configure:4747: 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 <<EOF
-#line 4707 "configure"
+#line 4752 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4726,7 +4771,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4730: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4775: \"$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
@@ -4748,7 +4793,7 @@ EOF
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for sched_yield in -lrt""... $ac_c" 1>&6
-echo "configure:4752: checking for sched_yield in -lrt" >&5
+echo "configure:4797: 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
@@ -4756,7 +4801,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lrt $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4760 "configure"
+#line 4805 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4767,7 +4812,7 @@ int main() {
sched_yield()
; return 0; }
EOF
-if { (eval echo configure:4771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4816: \"$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
@@ -4793,7 +4838,7 @@ else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for sched_yield in -lposix4""... $ac_c" 1>&6
-echo "configure:4797: checking for sched_yield in -lposix4" >&5
+echo "configure:4842: 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
@@ -4801,7 +4846,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lposix4 $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4805 "configure"
+#line 4850 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4812,7 +4857,7 @@ int main() {
sched_yield()
; return 0; }
EOF
-if { (eval echo configure:4816: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4861: \"$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
@@ -4848,7 +4893,7 @@ done
# 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 <<EOF
-#line 4852 "configure"
+#line 4897 "configure"
#include "confdefs.h"
#include <pthread.h>
int main() {
@@ -4857,7 +4902,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:4861: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4906: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define PTHREAD_MUTEX_HAVE_M_COUNT 1
@@ -4869,7 +4914,7 @@ else
rm -rf conftest*
cat > conftest.$ac_ext <<EOF
-#line 4873 "configure"
+#line 4918 "configure"
#include "confdefs.h"
#include <pthread.h>
int main() {
@@ -4878,7 +4923,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:4882: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4927: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define PTHREAD_MUTEX_HAVE___M_COUNT 1
@@ -4898,12 +4943,12 @@ rm -f conftest*
for ac_func in gettimeofday time ftime
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4902: checking for $ac_func" >&5
+echo "configure:4947: 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 <<EOF
-#line 4907 "configure"
+#line 4952 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4926,7 +4971,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4975: \"$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
@@ -4957,12 +5002,12 @@ done
for ac_func in memmove
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4961: checking for $ac_func" >&5
+echo "configure:5006: 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 <<EOF
-#line 4966 "configure"
+#line 5011 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4985,7 +5030,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4989: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5034: \"$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
@@ -5015,12 +5060,12 @@ done
for ac_func in memcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5019: checking for $ac_func" >&5
+echo "configure:5064: 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 <<EOF
-#line 5024 "configure"
+#line 5069 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5043,7 +5088,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5047: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5092: \"$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
@@ -5072,7 +5117,7 @@ done
fi
echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:5076: checking for dlopen in -ldl" >&5
+echo "configure:5121: 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
@@ -5080,7 +5125,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5084 "configure"
+#line 5129 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5091,7 +5136,7 @@ int main() {
dlopen()
; return 0; }
EOF
-if { (eval echo configure:5095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5140: \"$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
@@ -5136,7 +5181,7 @@ fi
#--------------------------------------------------------------------
echo $ac_n "checking for socket libraries""... $ac_c" 1>&6
-echo "configure:5140: checking for socket libraries" >&5
+echo "configure:5185: 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
@@ -5144,12 +5189,12 @@ else
gcj_checkBoth=0
unset ac_cv_func_connect
echo $ac_n "checking for connect""... $ac_c" 1>&6
-echo "configure:5148: checking for connect" >&5
+echo "configure:5193: 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 <<EOF
-#line 5153 "configure"
+#line 5198 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char connect(); below. */
@@ -5172,7 +5217,7 @@ connect();
; return 0; }
EOF
-if { (eval echo configure:5176: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5221: \"$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
@@ -5195,7 +5240,7 @@ fi
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:5199: checking for main in -lsocket" >&5
+echo "configure:5244: 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
@@ -5203,14 +5248,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5207 "configure"
+#line 5252 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:5214: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5259: \"$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
@@ -5237,12 +5282,12 @@ fi
LIBS="$LIBS -lsocket -lnsl"
unset ac_cv_func_accept
echo $ac_n "checking for accept""... $ac_c" 1>&6
-echo "configure:5241: checking for accept" >&5
+echo "configure:5286: 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 <<EOF
-#line 5246 "configure"
+#line 5291 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char accept(); below. */
@@ -5265,7 +5310,7 @@ accept();
; return 0; }
EOF
-if { (eval echo configure:5269: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5314: \"$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
@@ -5292,12 +5337,12 @@ fi
gcj_oldLibs=$LIBS
LIBS="$LIBS $gcj_cv_lib_sockets"
echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
-echo "configure:5296: checking for gethostbyname" >&5
+echo "configure:5341: 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 <<EOF
-#line 5301 "configure"
+#line 5346 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char gethostbyname(); below. */
@@ -5320,7 +5365,7 @@ gethostbyname();
; return 0; }
EOF
-if { (eval echo configure:5324: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5369: \"$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
@@ -5338,7 +5383,7 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for main in -lnsl""... $ac_c" 1>&6
-echo "configure:5342: checking for main in -lnsl" >&5
+echo "configure:5387: 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
@@ -5346,14 +5391,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5350 "configure"
+#line 5395 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:5357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5402: \"$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
@@ -5385,7 +5430,7 @@ echo "$ac_t""$gcj_cv_lib_sockets" 1>&6
if test "$with_system_zlib" = yes; then
echo $ac_n "checking for deflate in -lz""... $ac_c" 1>&6
-echo "configure:5389: checking for deflate in -lz" >&5
+echo "configure:5434: 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
@@ -5393,7 +5438,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lz $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5397 "configure"
+#line 5442 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5404,7 +5449,7 @@ int main() {
deflate()
; return 0; }
EOF
-if { (eval echo configure:5408: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5453: \"$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
@@ -5431,7 +5476,7 @@ fi
# requires -ldl.
if test "$GC" = boehm; then
echo $ac_n "checking for main in -ldl""... $ac_c" 1>&6
-echo "configure:5435: checking for main in -ldl" >&5
+echo "configure:5480: 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
@@ -5439,14 +5484,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5443 "configure"
+#line 5488 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:5450: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5495: \"$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
@@ -5512,7 +5557,7 @@ fi
# 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:5516: checking for $ac_word" >&5
+echo "configure:5561: 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
@@ -5544,7 +5589,7 @@ if test -n "$ac_tool_prefix"; then
# 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:5548: checking for $ac_word" >&5
+echo "configure:5593: 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
@@ -5606,13 +5651,13 @@ exec 5>>./config.log
CPPFLAGS=$GCJ_SAVE_CPPFLAGS
echo $ac_n "checking size of void *""... $ac_c" 1>&6
-echo "configure:5610: checking size of void *" >&5
+echo "configure:5655: 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
for ac_size in 4 8 1 2 16 12 ; do # List sizes in rough order of prevalence.
cat > conftest.$ac_ext <<EOF
-#line 5616 "configure"
+#line 5661 "configure"
#include "confdefs.h"
#include "confdefs.h"
#include <sys/types.h>
@@ -5622,7 +5667,7 @@ int main() {
switch (0) case 0: case (sizeof (void *) == $ac_size):;
; return 0; }
EOF
-if { (eval echo configure:5626: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5671: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_sizeof_void_p=$ac_size
else
@@ -5723,18 +5768,18 @@ EOF
echo $ac_n "checking for g++ -ffloat-store bug""... $ac_c" 1>&6
-echo "configure:5727: checking for g++ -ffloat-store bug" >&5
+echo "configure:5772: checking for g++ -ffloat-store bug" >&5
save_CFLAGS="$CFLAGS"
CFLAGS="-x c++ -O2 -ffloat-store"
cat > conftest.$ac_ext <<EOF
-#line 5731 "configure"
+#line 5776 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
; return 0; }
EOF
-if { (eval echo configure:5738: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5783: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""no" 1>&6
else
@@ -5754,17 +5799,17 @@ for ac_hdr in unistd.h bstring.h sys/time.h sys/types.h fcntl.h sys/ioctl.h sys/
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5758: checking for $ac_hdr" >&5
+echo "configure:5803: 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
-#line 5763 "configure"
+#line 5808 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5768: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5813: \"$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*
@@ -5794,17 +5839,17 @@ for ac_hdr in dirent.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5798: checking for $ac_hdr" >&5
+echo "configure:5843: 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
-#line 5803 "configure"
+#line 5848 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5808: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5853: \"$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*
@@ -5834,17 +5879,17 @@ for ac_hdr in inttypes.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5838: checking for $ac_hdr" >&5
+echo "configure:5883: 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
-#line 5843 "configure"
+#line 5888 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5848: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5893: \"$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*
@@ -5880,12 +5925,12 @@ fi
done
echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:5884: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:5929: 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 <<EOF
-#line 5889 "configure"
+#line 5934 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/wait.h>
@@ -5901,7 +5946,7 @@ wait (&s);
s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
; return 0; }
EOF
-if { (eval echo configure:5905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5950: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_sys_wait_h=yes
else
@@ -5923,12 +5968,12 @@ fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:5927: checking for ANSI C header files" >&5
+echo "configure:5972: 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 <<EOF
-#line 5932 "configure"
+#line 5977 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -5936,7 +5981,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5940: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5985: \"$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*
@@ -5953,7 +5998,7 @@ rm -f conftest*
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
-#line 5957 "configure"
+#line 6002 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -5971,7 +6016,7 @@ fi
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
-#line 5975 "configure"
+#line 6020 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -5992,7 +6037,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 5996 "configure"
+#line 6041 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -6003,7 +6048,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:6007: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -6027,12 +6072,12 @@ EOF
fi
echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:6031: checking for ssize_t" >&5
+echo "configure:6076: 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 <<EOF
-#line 6036 "configure"
+#line 6081 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -6061,9 +6106,9 @@ fi
echo $ac_n "checking for in_addr_t""... $ac_c" 1>&6
-echo "configure:6065: checking for in_addr_t" >&5
+echo "configure:6110: checking for in_addr_t" >&5
cat > conftest.$ac_ext <<EOF
-#line 6067 "configure"
+#line 6112 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -6077,7 +6122,7 @@ int main() {
in_addr_t foo;
; return 0; }
EOF
-if { (eval echo configure:6081: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6126: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define HAVE_IN_ADDR_T 1
@@ -6093,16 +6138,16 @@ fi
rm -f conftest*
echo $ac_n "checking whether struct ip_mreq is in netinet/in.h""... $ac_c" 1>&6
-echo "configure:6097: checking whether struct ip_mreq is in netinet/in.h" >&5
+echo "configure:6142: checking whether struct ip_mreq is in netinet/in.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 6099 "configure"
+#line 6144 "configure"
#include "confdefs.h"
#include <netinet/in.h>
int main() {
struct ip_mreq mreq;
; return 0; }
EOF
-if { (eval echo configure:6106: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6151: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define HAVE_STRUCT_IP_MREQ 1
@@ -6118,16 +6163,16 @@ fi
rm -f conftest*
echo $ac_n "checking whether struct ipv6_mreq is in netinet/in.h""... $ac_c" 1>&6
-echo "configure:6122: checking whether struct ipv6_mreq is in netinet/in.h" >&5
+echo "configure:6167: checking whether struct ipv6_mreq is in netinet/in.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 6124 "configure"
+#line 6169 "configure"
#include "confdefs.h"
#include <netinet/in.h>
int main() {
struct ipv6_mreq mreq6;
; return 0; }
EOF
-if { (eval echo configure:6131: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6176: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define HAVE_STRUCT_IPV6_MREQ 1
@@ -6143,16 +6188,16 @@ fi
rm -f conftest*
echo $ac_n "checking whether struct sockaddr_in6 is in netinet/in.h""... $ac_c" 1>&6
-echo "configure:6147: checking whether struct sockaddr_in6 is in netinet/in.h" >&5
+echo "configure:6192: checking whether struct sockaddr_in6 is in netinet/in.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 6149 "configure"
+#line 6194 "configure"
#include "confdefs.h"
#include <netinet/in.h>
int main() {
struct sockaddr_in6 addr6;
; return 0; }
EOF
-if { (eval echo configure:6156: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6201: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define HAVE_INET6 1
@@ -6168,9 +6213,9 @@ fi
rm -f conftest*
echo $ac_n "checking for socklen_t in sys/socket.h""... $ac_c" 1>&6
-echo "configure:6172: checking for socklen_t in sys/socket.h" >&5
+echo "configure:6217: checking for socklen_t in sys/socket.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 6174 "configure"
+#line 6219 "configure"
#include "confdefs.h"
#define _POSIX_PII_SOCKET
#include <sys/types.h>
@@ -6179,7 +6224,7 @@ int main() {
socklen_t x = 5;
; return 0; }
EOF
-if { (eval echo configure:6183: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6228: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define HAVE_SOCKLEN_T 1
@@ -6195,16 +6240,16 @@ fi
rm -f conftest*
echo $ac_n "checking for tm_gmtoff in struct tm""... $ac_c" 1>&6
-echo "configure:6199: checking for tm_gmtoff in struct tm" >&5
+echo "configure:6244: checking for tm_gmtoff in struct tm" >&5
cat > conftest.$ac_ext <<EOF
-#line 6201 "configure"
+#line 6246 "configure"
#include "confdefs.h"
#include <time.h>
int main() {
struct tm tim; tim.tm_gmtoff = 0;
; return 0; }
EOF
-if { (eval echo configure:6208: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6253: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define STRUCT_TM_HAS_GMTOFF 1
@@ -6217,16 +6262,16 @@ else
rm -rf conftest*
echo "$ac_t""no" 1>&6
echo $ac_n "checking for global timezone variable""... $ac_c" 1>&6
-echo "configure:6221: checking for global timezone variable" >&5
+echo "configure:6266: checking for global timezone variable" >&5
cat > conftest.$ac_ext <<EOF
-#line 6223 "configure"
+#line 6268 "configure"
#include "confdefs.h"
#include <time.h>
int main() {
void i(){long z2 = 2*timezone;}
; return 0; }
EOF
-if { (eval echo configure:6230: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6275: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define HAVE_TIMEZONE 1
@@ -6239,16 +6284,16 @@ else
rm -rf conftest*
echo "$ac_t""no" 1>&6
echo $ac_n "checking for global _timezone variable""... $ac_c" 1>&6
-echo "configure:6243: checking for global _timezone variable" >&5
+echo "configure:6288: checking for global _timezone variable" >&5
cat > conftest.$ac_ext <<EOF
-#line 6245 "configure"
+#line 6290 "configure"
#include "confdefs.h"
#include <time.h>
int main() {
long z2 = _timezone;
; return 0; }
EOF
-if { (eval echo configure:6252: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6297: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define HAVE_UNDERSCORE_TIMEZONE 1
@@ -6270,19 +6315,19 @@ rm -f conftest*
# 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:6274: checking for working alloca.h" >&5
+echo "configure:6319: 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 <<EOF
-#line 6279 "configure"
+#line 6324 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:6286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6331: \"$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
@@ -6303,12 +6348,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:6307: checking for alloca" >&5
+echo "configure:6352: 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 <<EOF
-#line 6312 "configure"
+#line 6357 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -6336,7 +6381,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:6340: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6385: \"$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
@@ -6368,12 +6413,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:6372: checking whether alloca needs Cray hooks" >&5
+echo "configure:6417: 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 <<EOF
-#line 6377 "configure"
+#line 6422 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -6398,12 +6443,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
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:6402: checking for $ac_func" >&5
+echo "configure:6447: 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 <<EOF
-#line 6407 "configure"
+#line 6452 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6426,7 +6471,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6430: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6475: \"$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
@@ -6453,7 +6498,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:6457: checking stack direction for C alloca" >&5
+echo "configure:6502: 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
@@ -6461,7 +6506,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 6465 "configure"
+#line 6510 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -6480,7 +6525,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:6484: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6529: \"$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
@@ -6507,7 +6552,7 @@ do
# 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:6511: checking for $ac_word" >&5
+echo "configure:6556: 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
@@ -6597,7 +6642,7 @@ fi
# 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:6601: checking for X" >&5
+echo "configure:6646: checking for X" >&5
# Check whether --with-x or --without-x was given.
if test "${with_x+set}" = set; then
@@ -6659,12 +6704,12 @@ if test "$ac_x_includes" = NO; then
# First, try using that file with no special directory specified.
cat > conftest.$ac_ext <<EOF
-#line 6663 "configure"
+#line 6708 "configure"
#include "confdefs.h"
#include <$x_direct_test_include>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6668: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6713: \"$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*
@@ -6733,14 +6778,14 @@ if test "$ac_x_libraries" = NO; then
ac_save_LIBS="$LIBS"
LIBS="-l$x_direct_test_library $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 6737 "configure"
+#line 6782 "configure"
#include "confdefs.h"
int main() {
${x_direct_test_function}()
; return 0; }
EOF
-if { (eval echo configure:6744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6789: \"$ac_link\") 1>&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.
@@ -6846,17 +6891,17 @@ else
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:6850: checking whether -R must be followed by a space" >&5
+echo "configure:6895: checking whether -R must be followed by a space" >&5
ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries"
cat > conftest.$ac_ext <<EOF
-#line 6853 "configure"
+#line 6898 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:6860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_R_nospace=yes
else
@@ -6872,14 +6917,14 @@ rm -f conftest*
else
LIBS="$ac_xsave_LIBS -R $x_libraries"
cat > conftest.$ac_ext <<EOF
-#line 6876 "configure"
+#line 6921 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:6883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6928: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_R_space=yes
else
@@ -6911,7 +6956,7 @@ rm -f conftest*
# 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:6915: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:6960: 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
@@ -6919,7 +6964,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldnet $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 6923 "configure"
+#line 6968 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -6930,7 +6975,7 @@ int main() {
dnet_ntoa()
; return 0; }
EOF
-if { (eval echo configure:6934: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6979: \"$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
@@ -6952,7 +6997,7 @@ fi
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:6956: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:7001: 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
@@ -6960,7 +7005,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldnet_stub $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 6964 "configure"
+#line 7009 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -6971,7 +7016,7 @@ int main() {
dnet_ntoa()
; return 0; }
EOF
-if { (eval echo configure:6975: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7020: \"$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
@@ -7000,12 +7045,12 @@ fi
# 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:7004: checking for gethostbyname" >&5
+echo "configure:7049: 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 <<EOF
-#line 7009 "configure"
+#line 7054 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char gethostbyname(); below. */
@@ -7028,7 +7073,7 @@ gethostbyname();
; return 0; }
EOF
-if { (eval echo configure:7032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7077: \"$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
@@ -7049,7 +7094,7 @@ fi
if test $ac_cv_func_gethostbyname = no; then
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:7053: checking for gethostbyname in -lnsl" >&5
+echo "configure:7098: 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
@@ -7057,7 +7102,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7061 "configure"
+#line 7106 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -7068,7 +7113,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:7072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7117: \"$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
@@ -7098,12 +7143,12 @@ fi
# -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:7102: checking for connect" >&5
+echo "configure:7147: 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 <<EOF
-#line 7107 "configure"
+#line 7152 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char connect(); below. */
@@ -7126,7 +7171,7 @@ connect();
; return 0; }
EOF
-if { (eval echo configure:7130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7175: \"$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
@@ -7147,7 +7192,7 @@ fi
if test $ac_cv_func_connect = no; then
echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
-echo "configure:7151: checking for connect in -lsocket" >&5
+echo "configure:7196: 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
@@ -7155,7 +7200,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7159 "configure"
+#line 7204 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -7166,7 +7211,7 @@ int main() {
connect()
; return 0; }
EOF
-if { (eval echo configure:7170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7215: \"$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
@@ -7190,12 +7235,12 @@ fi
# gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX.
echo $ac_n "checking for remove""... $ac_c" 1>&6
-echo "configure:7194: checking for remove" >&5
+echo "configure:7239: 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 <<EOF
-#line 7199 "configure"
+#line 7244 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char remove(); below. */
@@ -7218,7 +7263,7 @@ remove();
; return 0; }
EOF
-if { (eval echo configure:7222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7267: \"$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
@@ -7239,7 +7284,7 @@ fi
if test $ac_cv_func_remove = no; then
echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:7243: checking for remove in -lposix" >&5
+echo "configure:7288: 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
@@ -7247,7 +7292,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lposix $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7251 "configure"
+#line 7296 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -7258,7 +7303,7 @@ int main() {
remove()
; return 0; }
EOF
-if { (eval echo configure:7262: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7307: \"$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
@@ -7282,12 +7327,12 @@ fi
# BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:7286: checking for shmat" >&5
+echo "configure:7331: 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 <<EOF
-#line 7291 "configure"
+#line 7336 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char shmat(); below. */
@@ -7310,7 +7355,7 @@ shmat();
; return 0; }
EOF
-if { (eval echo configure:7314: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7359: \"$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
@@ -7331,7 +7376,7 @@ fi
if test $ac_cv_func_shmat = no; then
echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:7335: checking for shmat in -lipc" >&5
+echo "configure:7380: 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
@@ -7339,7 +7384,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lipc $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7343 "configure"
+#line 7388 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -7350,7 +7395,7 @@ int main() {
shmat()
; return 0; }
EOF
-if { (eval echo configure:7354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7399: \"$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
@@ -7383,7 +7428,7 @@ fi
# 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:7387: checking for IceConnectionNumber in -lICE" >&5
+echo "configure:7432: 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
@@ -7391,7 +7436,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lICE $X_EXTRA_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7395 "configure"
+#line 7440 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -7402,7 +7447,7 @@ int main() {
IceConnectionNumber()
; return 0; }
EOF
-if { (eval echo configure:7406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7451: \"$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
diff --git a/libjava/include/jni.h b/libjava/include/jni.h
index b5ce334b895..0b98ab2c5c4 100644
--- a/libjava/include/jni.h
+++ b/libjava/include/jni.h
@@ -173,12 +173,27 @@ typedef void *jmethodID;
#define JNI_EDETACHED -2
#define JNI_EVERSION -3
-/* Linkage and calling conventions. This will need updating when we
- support Windows DLLs. */
+/* Linkage and calling conventions. */
+#if defined (_WIN32) || defined (__WIN32__) || defined (WIN32)
+
+#define JNIIMPORT __declspec(dllimport)
+#define JNIEXPORT __declspec(dllexport)
+#define JNICALL __stdcall
+
+#else
+
#define JNIIMPORT
#define JNIEXPORT
#define JNICALL
+#endif /* !( _WIN32 || __WIN32__ || WIN32) */
+
+#ifdef __GCJ_JNI_IMPL__
+#define JNIIMPEXP JNIEXPORT
+#else
+#define JNIIMPEXP JNIIMPORT
+#endif /* ! __GCJ_JNI_IMPL__ */
+
#ifdef __cplusplus
extern "C"
{
@@ -186,14 +201,14 @@ extern "C"
/* These functions might be defined in libraries which we load; the
JNI implementation calls them at the appropriate times. */
-extern jint JNI_OnLoad (JavaVM *, void *);
-extern void JNI_OnUnload (JavaVM *, void *);
+extern JNIEXPORT jint JNICALL JNI_OnLoad (JavaVM *, void *);
+extern JNIEXPORT void JNICALL JNI_OnUnload (JavaVM *, void *);
/* These functions are called by user code to start using the
invocation API. */
-extern jint JNI_GetDefaultJavaVMInitArgs (void *);
-extern jint JNI_CreateJavaVM (JavaVM **, void **, void *);
-extern jint JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *);
+extern JNIIMPEXP jint JNICALL JNI_GetDefaultJavaVMInitArgs (void *);
+extern JNIIMPEXP jint JNICALL JNI_CreateJavaVM (JavaVM **, void **, void *);
+extern JNIIMPEXP jint JNICALL JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *);
#ifdef __cplusplus
};
@@ -233,419 +248,418 @@ struct JNINativeInterface
_Jv_func reserved2;
_Jv_func reserved3;
- jint (*GetVersion) (JNIEnv *);
- jclass (*DefineClass) (JNIEnv *, jobject,
- const jbyte *, jsize);
- jclass (*FindClass) (JNIEnv *, const char *);
-
- jmethodID (*FromReflectedMethod) (JNIEnv *, jobject);
- jfieldID (*FromReflectedField) (JNIEnv *, jobject);
- jobject (*ToReflectedMethod) (JNIEnv *, jclass, jmethodID,
- jboolean);
-
- jclass (*GetSuperclass) (JNIEnv *, jclass);
- jboolean (*IsAssignableFrom) (JNIEnv *, jclass, jclass);
-
- jobject (*ToReflectedField) (JNIEnv *, jclass, jfieldID,
- jboolean);
-
- jint (*Throw) (JNIEnv *, jthrowable);
- jint (*ThrowNew) (JNIEnv *, jclass, const char *);
- jthrowable (*ExceptionOccurred) (JNIEnv *);
- void (*ExceptionDescribe) (JNIEnv *);
- void (*ExceptionClear) (JNIEnv *);
- void (*FatalError) (JNIEnv *, const char *);
-
- jint (*PushLocalFrame) (JNIEnv *, jint);
- jobject (*PopLocalFrame) (JNIEnv *, jobject);
-
- jobject (*NewGlobalRef) (JNIEnv *, jobject);
- void (*DeleteGlobalRef) (JNIEnv *, jobject);
- void (*DeleteLocalRef) (JNIEnv *, jobject);
- jboolean (*IsSameObject) (JNIEnv *, jobject, jobject);
-
- jobject (*NewLocalRef) (JNIEnv *, jobject);
- jint (*EnsureLocalCapacity) (JNIEnv *, jint);
-
- jobject (*AllocObject) (JNIEnv *, jclass);
- jobject (*NewObject) (JNIEnv *, jclass, jmethodID, ...);
- jobject (*NewObjectV) (JNIEnv *, jclass, jmethodID,
- _Jv_va_list);
- jobject (*NewObjectA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
-
- jclass (*GetObjectClass) (JNIEnv *, jobject);
- jboolean (*IsInstanceOf) (JNIEnv *, jobject, jclass);
- jmethodID (*GetMethodID) (JNIEnv *, jclass, const char *,
- const char *);
-
- jobject (*CallObjectMethod) (JNIEnv *, jobject, jmethodID,
- ...);
- jobject (*CallObjectMethodV) (JNIEnv *, jobject, jmethodID,
- _Jv_va_list);
- jobject (*CallObjectMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
- jboolean (*CallBooleanMethod) (JNIEnv *, jobject, jmethodID,
- ...);
- jboolean (*CallBooleanMethodV) (JNIEnv *, jobject, jmethodID,
- _Jv_va_list);
- jboolean (*CallBooleanMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
- jbyte (*CallByteMethod) (JNIEnv *, jobject, jmethodID,
- ...);
- jbyte (*CallByteMethodV) (JNIEnv *, jobject, jmethodID,
- _Jv_va_list);
- jbyte (*CallByteMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
- jchar (*CallCharMethod) (JNIEnv *, jobject, jmethodID,
- ...);
- jchar (*CallCharMethodV) (JNIEnv *, jobject, jmethodID,
- _Jv_va_list);
- jchar (*CallCharMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
- jshort (*CallShortMethod) (JNIEnv *, jobject, jmethodID,
- ...);
- jshort (*CallShortMethodV) (JNIEnv *, jobject, jmethodID,
- _Jv_va_list);
- jshort (*CallShortMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
- jint (*CallIntMethod) (JNIEnv *, jobject, jmethodID,
- ...);
- jint (*CallIntMethodV) (JNIEnv *, jobject, jmethodID,
- _Jv_va_list);
- jint (*CallIntMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
- jlong (*CallLongMethod) (JNIEnv *, jobject, jmethodID,
- ...);
- jlong (*CallLongMethodV) (JNIEnv *, jobject, jmethodID,
- _Jv_va_list);
- jlong (*CallLongMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
- jfloat (*CallFloatMethod) (JNIEnv *, jobject, jmethodID,
- ...);
- jfloat (*CallFloatMethodV) (JNIEnv *, jobject, jmethodID,
- _Jv_va_list);
- jfloat (*CallFloatMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
- jdouble (*CallDoubleMethod) (JNIEnv *, jobject, jmethodID,
- ...);
- jdouble (*CallDoubleMethodV) (JNIEnv *, jobject, jmethodID,
- _Jv_va_list);
- jdouble (*CallDoubleMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
- void (*CallVoidMethod) (JNIEnv *, jobject, jmethodID,
- ...);
- void (*CallVoidMethodV) (JNIEnv *, jobject, jmethodID,
- _Jv_va_list);
- void (*CallVoidMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
-
- jobject (*CallNonvirtualObjectMethod) (JNIEnv *, jobject, jclass,
- jmethodID, ...);
- jobject (*CallNonvirtualObjectMethodV) (JNIEnv *, jobject, jclass,
- jmethodID, _Jv_va_list);
- jobject (*CallNonvirtualObjectMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
- jboolean (*CallNonvirtualBooleanMethod) (JNIEnv *, jobject, jclass,
- jmethodID, ...);
- jboolean (*CallNonvirtualBooleanMethodV) (JNIEnv *, jobject, jclass,
- jmethodID, _Jv_va_list);
- jboolean (*CallNonvirtualBooleanMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
- jbyte (*CallNonvirtualByteMethod) (JNIEnv *, jobject, jclass,
- jmethodID, ...);
- jbyte (*CallNonvirtualByteMethodV) (JNIEnv *, jobject, jclass,
- jmethodID, _Jv_va_list);
- jbyte (*CallNonvirtualByteMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
- jchar (*CallNonvirtualCharMethod) (JNIEnv *, jobject, jclass,
- jmethodID, ...);
- jchar (*CallNonvirtualCharMethodV) (JNIEnv *, jobject, jclass,
- jmethodID, _Jv_va_list);
- jchar (*CallNonvirtualCharMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
- jshort (*CallNonvirtualShortMethod) (JNIEnv *, jobject, jclass,
- jmethodID, ...);
- jshort (*CallNonvirtualShortMethodV) (JNIEnv *, jobject, jclass,
- jmethodID, _Jv_va_list);
- jshort (*CallNonvirtualShortMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
- jint (*CallNonvirtualIntMethod) (JNIEnv *, jobject, jclass,
- jmethodID, ...);
- jint (*CallNonvirtualIntMethodV) (JNIEnv *, jobject, jclass,
- jmethodID, _Jv_va_list);
- jint (*CallNonvirtualIntMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
- jlong (*CallNonvirtualLongMethod) (JNIEnv *, jobject, jclass,
- jmethodID, ...);
- jlong (*CallNonvirtualLongMethodV) (JNIEnv *, jobject, jclass,
- jmethodID, _Jv_va_list);
- jlong (*CallNonvirtualLongMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
- jfloat (*CallNonvirtualFloatMethod) (JNIEnv *, jobject, jclass,
- jmethodID, ...);
- jfloat (*CallNonvirtualFloatMethodV) (JNIEnv *, jobject, jclass,
- jmethodID, _Jv_va_list);
- jfloat (*CallNonvirtualFloatMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
- jdouble (*CallNonvirtualDoubleMethod) (JNIEnv *, jobject, jclass,
- jmethodID, ...);
- jdouble (*CallNonvirtualDoubleMethodV) (JNIEnv *, jobject, jclass,
- jmethodID, _Jv_va_list);
- jdouble (*CallNonvirtualDoubleMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
- void (*CallNonvirtualVoidMethod) (JNIEnv *, jobject, jclass,
- jmethodID, ...);
- void (*CallNonvirtualVoidMethodV) (JNIEnv *, jobject, jclass,
- jmethodID, _Jv_va_list);
- void (*CallNonvirtualVoidMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
-
- jfieldID (*GetFieldID) (JNIEnv *, jclass, const char *,
+ jint (JNICALL *GetVersion) (JNIEnv *);
+ jclass (JNICALL *DefineClass) (JNIEnv *, jobject,
+ const jbyte *, jsize);
+ jclass (JNICALL *FindClass) (JNIEnv *, const char *);
+
+ jmethodID (JNICALL *FromReflectedMethod) (JNIEnv *, jobject);
+ jfieldID (JNICALL *FromReflectedField) (JNIEnv *, jobject);
+ jobject (JNICALL *ToReflectedMethod) (JNIEnv *, jclass, jmethodID,
+ jboolean);
+
+ jclass (JNICALL *GetSuperclass) (JNIEnv *, jclass);
+ jboolean (JNICALL *IsAssignableFrom) (JNIEnv *, jclass, jclass);
+
+ jobject (JNICALL *ToReflectedField) (JNIEnv *, jclass, jfieldID,
+ jboolean);
+
+ jint (JNICALL *Throw) (JNIEnv *, jthrowable);
+ jint (JNICALL *ThrowNew) (JNIEnv *, jclass,
+ const char *);
+ jthrowable (JNICALL *ExceptionOccurred) (JNIEnv *);
+ void (JNICALL *ExceptionDescribe) (JNIEnv *);
+ void (JNICALL *ExceptionClear) (JNIEnv *);
+ void (JNICALL *FatalError) (JNIEnv *, const char *);
+
+ jint (JNICALL *PushLocalFrame) (JNIEnv *, jint);
+ jobject (JNICALL *PopLocalFrame) (JNIEnv *, jobject);
+
+ jobject (JNICALL *NewGlobalRef) (JNIEnv *, jobject);
+ void (JNICALL *DeleteGlobalRef) (JNIEnv *, jobject);
+ void (JNICALL *DeleteLocalRef) (JNIEnv *, jobject);
+ jboolean (JNICALL *IsSameObject) (JNIEnv *, jobject,
+ jobject);
+
+ jobject (JNICALL *NewLocalRef) (JNIEnv *, jobject);
+ jint (JNICALL *EnsureLocalCapacity) (JNIEnv *, jint);
+
+ jobject (JNICALL *AllocObject) (JNIEnv *, jclass);
+ jobject (JNICALL *NewObject) (JNIEnv *, jclass,
+ jmethodID, ...);
+ jobject (JNICALL *NewObjectV) (JNIEnv *, jclass,
+ jmethodID, _Jv_va_list);
+ jobject (JNICALL *NewObjectA) (JNIEnv *, jclass,
+ jmethodID, jvalue *);
+
+ jclass (JNICALL *GetObjectClass) (JNIEnv *, jobject);
+ jboolean (JNICALL *IsInstanceOf) (JNIEnv *, jobject, jclass);
+ jmethodID (JNICALL *GetMethodID) (JNIEnv *, jclass,
+ const char *, const char *);
+
+ jobject (JNICALL *CallObjectMethod) (JNIEnv *, jobject, jmethodID, ...);
+ jobject (JNICALL *CallObjectMethodV) (JNIEnv *, jobject, jmethodID,
+ _Jv_va_list);
+ jobject (JNICALL *CallObjectMethodA) (JNIEnv *, jobject, jmethodID,
+ jvalue *);
+ jboolean (JNICALL *CallBooleanMethod) (JNIEnv *, jobject, jmethodID,
+ ...);
+ jboolean (JNICALL *CallBooleanMethodV) (JNIEnv *, jobject, jmethodID,
+ _Jv_va_list);
+ jboolean (JNICALL *CallBooleanMethodA) (JNIEnv *, jobject, jmethodID,
+ jvalue *);
+ jbyte (JNICALL *CallByteMethod) (JNIEnv *, jobject, jmethodID, ...);
+ jbyte (JNICALL *CallByteMethodV) (JNIEnv *, jobject, jmethodID,
+ _Jv_va_list);
+ jbyte (JNICALL *CallByteMethodA) (JNIEnv *, jobject, jmethodID,
+ jvalue *);
+ jchar (JNICALL *CallCharMethod) (JNIEnv *, jobject, jmethodID, ...);
+ jchar (JNICALL *CallCharMethodV) (JNIEnv *, jobject, jmethodID,
+ _Jv_va_list);
+ jchar (JNICALL *CallCharMethodA) (JNIEnv *, jobject, jmethodID,
+ jvalue *);
+ jshort (JNICALL *CallShortMethod) (JNIEnv *, jobject, jmethodID, ...);
+ jshort (JNICALL *CallShortMethodV) (JNIEnv *, jobject, jmethodID,
+ _Jv_va_list);
+ jshort (JNICALL *CallShortMethodA) (JNIEnv *, jobject, jmethodID,
+ jvalue *);
+ jint (JNICALL *CallIntMethod) (JNIEnv *, jobject, jmethodID, ...);
+ jint (JNICALL *CallIntMethodV) (JNIEnv *, jobject, jmethodID,
+ _Jv_va_list);
+ jint (JNICALL *CallIntMethodA) (JNIEnv *, jobject, jmethodID,
+ jvalue *);
+ jlong (JNICALL *CallLongMethod) (JNIEnv *, jobject, jmethodID, ...);
+ jlong (JNICALL *CallLongMethodV) (JNIEnv *, jobject, jmethodID,
+ _Jv_va_list);
+ jlong (JNICALL *CallLongMethodA) (JNIEnv *, jobject, jmethodID,
+ jvalue *);
+ jfloat (JNICALL *CallFloatMethod) (JNIEnv *, jobject, jmethodID, ...);
+ jfloat (JNICALL *CallFloatMethodV) (JNIEnv *, jobject, jmethodID,
+ _Jv_va_list);
+ jfloat (JNICALL *CallFloatMethodA) (JNIEnv *, jobject, jmethodID,
+ jvalue *);
+ jdouble (JNICALL *CallDoubleMethod) (JNIEnv *, jobject, jmethodID, ...);
+ jdouble (JNICALL *CallDoubleMethodV) (JNIEnv *, jobject, jmethodID,
+ _Jv_va_list);
+ jdouble (JNICALL *CallDoubleMethodA) (JNIEnv *, jobject, jmethodID,
+ jvalue *);
+ void (JNICALL *CallVoidMethod) (JNIEnv *, jobject, jmethodID, ...);
+ void (JNICALL *CallVoidMethodV) (JNIEnv *, jobject, jmethodID,
+ _Jv_va_list);
+ void (JNICALL *CallVoidMethodA) (JNIEnv *, jobject, jmethodID,
+ jvalue *);
+
+ jobject (JNICALL *CallNonvirtualObjectMethod) (JNIEnv *, jobject, jclass,
+ jmethodID, ...);
+ jobject (JNICALL *CallNonvirtualObjectMethodV) (JNIEnv *, jobject, jclass,
+ jmethodID, _Jv_va_list);
+ jobject (JNICALL *CallNonvirtualObjectMethodA) (JNIEnv *, jobject, jclass,
+ jmethodID, jvalue *);
+ jboolean (JNICALL *CallNonvirtualBooleanMethod) (JNIEnv *, jobject, jclass,
+ jmethodID, ...);
+ jboolean (JNICALL *CallNonvirtualBooleanMethodV) (JNIEnv *, jobject, jclass,
+ jmethodID, _Jv_va_list);
+ jboolean (JNICALL *CallNonvirtualBooleanMethodA) (JNIEnv *, jobject, jclass,
+ jmethodID, jvalue *);
+ jbyte (JNICALL *CallNonvirtualByteMethod) (JNIEnv *, jobject, jclass,
+ jmethodID, ...);
+ jbyte (JNICALL *CallNonvirtualByteMethodV) (JNIEnv *, jobject, jclass,
+ jmethodID, _Jv_va_list);
+ jbyte (JNICALL *CallNonvirtualByteMethodA) (JNIEnv *, jobject, jclass,
+ jmethodID, jvalue *);
+ jchar (JNICALL *CallNonvirtualCharMethod) (JNIEnv *, jobject, jclass,
+ jmethodID, ...);
+ jchar (JNICALL *CallNonvirtualCharMethodV) (JNIEnv *, jobject, jclass,
+ jmethodID, _Jv_va_list);
+ jchar (JNICALL *CallNonvirtualCharMethodA) (JNIEnv *, jobject, jclass,
+ jmethodID, jvalue *);
+ jshort (JNICALL *CallNonvirtualShortMethod) (JNIEnv *, jobject, jclass,
+ jmethodID, ...);
+ jshort (JNICALL *CallNonvirtualShortMethodV) (JNIEnv *, jobject, jclass,
+ jmethodID, _Jv_va_list);
+ jshort (JNICALL *CallNonvirtualShortMethodA) (JNIEnv *, jobject, jclass,
+ jmethodID, jvalue *);
+ jint (JNICALL *CallNonvirtualIntMethod) (JNIEnv *, jobject, jclass,
+ jmethodID, ...);
+ jint (JNICALL *CallNonvirtualIntMethodV) (JNIEnv *, jobject, jclass,
+ jmethodID, _Jv_va_list);
+ jint (JNICALL *CallNonvirtualIntMethodA) (JNIEnv *, jobject, jclass,
+ jmethodID, jvalue *);
+ jlong (JNICALL *CallNonvirtualLongMethod) (JNIEnv *, jobject, jclass,
+ jmethodID, ...);
+ jlong (JNICALL *CallNonvirtualLongMethodV) (JNIEnv *, jobject, jclass,
+ jmethodID, _Jv_va_list);
+ jlong (JNICALL *CallNonvirtualLongMethodA) (JNIEnv *, jobject, jclass,
+ jmethodID, jvalue *);
+ jfloat (JNICALL *CallNonvirtualFloatMethod) (JNIEnv *, jobject, jclass,
+ jmethodID, ...);
+ jfloat (JNICALL *CallNonvirtualFloatMethodV) (JNIEnv *, jobject, jclass,
+ jmethodID, _Jv_va_list);
+ jfloat (JNICALL *CallNonvirtualFloatMethodA) (JNIEnv *, jobject, jclass,
+ jmethodID, jvalue *);
+ jdouble (JNICALL *CallNonvirtualDoubleMethod) (JNIEnv *, jobject, jclass,
+ jmethodID, ...);
+ jdouble (JNICALL *CallNonvirtualDoubleMethodV) (JNIEnv *, jobject, jclass,
+ jmethodID, _Jv_va_list);
+ jdouble (JNICALL *CallNonvirtualDoubleMethodA) (JNIEnv *, jobject, jclass,
+ jmethodID, jvalue *);
+ void (JNICALL *CallNonvirtualVoidMethod) (JNIEnv *, jobject, jclass,
+ jmethodID, ...);
+ void (JNICALL *CallNonvirtualVoidMethodV) (JNIEnv *, jobject, jclass,
+ jmethodID, _Jv_va_list);
+ void (JNICALL *CallNonvirtualVoidMethodA) (JNIEnv *, jobject, jclass,
+ jmethodID, jvalue *);
+
+ jfieldID (JNICALL *GetFieldID) (JNIEnv *, jclass, const char *,
const char *);
- jobject (*GetObjectField) (JNIEnv *, jobject, jfieldID);
- jboolean (*GetBooleanField) (JNIEnv *, jobject, jfieldID);
- jbyte (*GetByteField) (JNIEnv *, jobject, jfieldID);
- jchar (*GetCharField) (JNIEnv *, jobject, jfieldID);
- jshort (*GetShortField) (JNIEnv *, jobject, jfieldID);
- jint (*GetIntField) (JNIEnv *, jobject, jfieldID);
- jlong (*GetLongField) (JNIEnv *, jobject, jfieldID);
- jfloat (*GetFloatField) (JNIEnv *, jobject, jfieldID);
- jdouble (*GetDoubleField) (JNIEnv *, jobject, jfieldID);
-
- void (*SetObjectField) (JNIEnv *, jobject,
+ jobject (JNICALL *GetObjectField) (JNIEnv *, jobject, jfieldID);
+ jboolean (JNICALL *GetBooleanField) (JNIEnv *, jobject, jfieldID);
+ jbyte (JNICALL *GetByteField) (JNIEnv *, jobject, jfieldID);
+ jchar (JNICALL *GetCharField) (JNIEnv *, jobject, jfieldID);
+ jshort (JNICALL *GetShortField) (JNIEnv *, jobject, jfieldID);
+ jint (JNICALL *GetIntField) (JNIEnv *, jobject, jfieldID);
+ jlong (JNICALL *GetLongField) (JNIEnv *, jobject, jfieldID);
+ jfloat (JNICALL *GetFloatField) (JNIEnv *, jobject, jfieldID);
+ jdouble (JNICALL *GetDoubleField) (JNIEnv *, jobject, jfieldID);
+
+ void (JNICALL *SetObjectField) (JNIEnv *, jobject,
jfieldID, jobject);
- void (*SetBooleanField) (JNIEnv *, jobject,
+ void (JNICALL *SetBooleanField) (JNIEnv *, jobject,
jfieldID, jboolean);
- void (*SetByteField) (JNIEnv *, jobject,
+ void (JNICALL *SetByteField) (JNIEnv *, jobject,
jfieldID, jbyte);
- void (*SetCharField) (JNIEnv *, jobject,
+ void (JNICALL *SetCharField) (JNIEnv *, jobject,
jfieldID, jchar);
- void (*SetShortField) (JNIEnv *, jobject,
+ void (JNICALL *SetShortField) (JNIEnv *, jobject,
jfieldID, jshort);
- void (*SetIntField) (JNIEnv *, jobject,
+ void (JNICALL *SetIntField) (JNIEnv *, jobject,
jfieldID, jint);
- void (*SetLongField) (JNIEnv *, jobject,
+ void (JNICALL *SetLongField) (JNIEnv *, jobject,
jfieldID, jlong);
- void (*SetFloatField) (JNIEnv *, jobject,
+ void (JNICALL *SetFloatField) (JNIEnv *, jobject,
jfieldID, jfloat);
- void (*SetDoubleField) (JNIEnv *, jobject,
+ void (JNICALL *SetDoubleField) (JNIEnv *, jobject,
jfieldID, jdouble);
- jmethodID (*GetStaticMethodID) (JNIEnv *, jclass, const char *,
- const char *);
-
- jobject (*CallStaticObjectMethod) (JNIEnv *, jclass, jmethodID,
- ...);
- jobject (*CallStaticObjectMethodV) (JNIEnv *, jclass, jmethodID,
- _Jv_va_list);
- jobject (*CallStaticObjectMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
- jboolean (*CallStaticBooleanMethod) (JNIEnv *, jclass, jmethodID,
- ...);
- jboolean (*CallStaticBooleanMethodV) (JNIEnv *, jclass, jmethodID,
- _Jv_va_list);
- jboolean (*CallStaticBooleanMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
- jbyte (*CallStaticByteMethod) (JNIEnv *, jclass, jmethodID,
- ...);
- jbyte (*CallStaticByteMethodV) (JNIEnv *, jclass, jmethodID,
- _Jv_va_list);
- jbyte (*CallStaticByteMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
- jchar (*CallStaticCharMethod) (JNIEnv *, jclass, jmethodID,
- ...);
- jchar (*CallStaticCharMethodV) (JNIEnv *, jclass, jmethodID,
- _Jv_va_list);
- jchar (*CallStaticCharMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
- jshort (*CallStaticShortMethod) (JNIEnv *, jclass, jmethodID,
- ...);
- jshort (*CallStaticShortMethodV) (JNIEnv *, jclass, jmethodID,
- _Jv_va_list);
- jshort (*CallStaticShortMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
- jint (*CallStaticIntMethod) (JNIEnv *, jclass, jmethodID,
- ...);
- jint (*CallStaticIntMethodV) (JNIEnv *, jclass, jmethodID,
- _Jv_va_list);
- jint (*CallStaticIntMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
- jlong (*CallStaticLongMethod) (JNIEnv *, jclass, jmethodID,
- ...);
- jlong (*CallStaticLongMethodV) (JNIEnv *, jclass, jmethodID,
- _Jv_va_list);
- jlong (*CallStaticLongMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
- jfloat (*CallStaticFloatMethod) (JNIEnv *, jclass, jmethodID,
- ...);
- jfloat (*CallStaticFloatMethodV) (JNIEnv *, jclass, jmethodID,
- _Jv_va_list);
- jfloat (*CallStaticFloatMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
- jdouble (*CallStaticDoubleMethod) (JNIEnv *, jclass, jmethodID,
- ...);
- jdouble (*CallStaticDoubleMethodV) (JNIEnv *, jclass, jmethodID,
- _Jv_va_list);
- jdouble (*CallStaticDoubleMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
- void (*CallStaticVoidMethod) (JNIEnv *, jclass, jmethodID,
- ...);
- void (*CallStaticVoidMethodV) (JNIEnv *, jclass, jmethodID,
- _Jv_va_list);
- void (*CallStaticVoidMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
-
- jfieldID (*GetStaticFieldID) (JNIEnv *, jclass, const char *,
+ jmethodID (JNICALL *GetStaticMethodID) (JNIEnv *, jclass, const char *,
const char *);
- jobject (*GetStaticObjectField) (JNIEnv *, jclass, jfieldID);
- jboolean (*GetStaticBooleanField) (JNIEnv *, jclass, jfieldID);
- jbyte (*GetStaticByteField) (JNIEnv *, jclass, jfieldID);
- jchar (*GetStaticCharField) (JNIEnv *, jclass, jfieldID);
- jshort (*GetStaticShortField) (JNIEnv *, jclass, jfieldID);
- jint (*GetStaticIntField) (JNIEnv *, jclass, jfieldID);
- jlong (*GetStaticLongField) (JNIEnv *, jclass, jfieldID);
- jfloat (*GetStaticFloatField) (JNIEnv *, jclass, jfieldID);
- jdouble (*GetStaticDoubleField) (JNIEnv *, jclass, jfieldID);
-
- void (*SetStaticObjectField) (JNIEnv *, jclass,
+ jobject (JNICALL *CallStaticObjectMethod) (JNIEnv *, jclass, jmethodID,
+ ...);
+ jobject (JNICALL *CallStaticObjectMethodV) (JNIEnv *, jclass, jmethodID,
+ _Jv_va_list);
+ jobject (JNICALL *CallStaticObjectMethodA) (JNIEnv *, jclass, jmethodID,
+ jvalue *);
+ jboolean (JNICALL *CallStaticBooleanMethod) (JNIEnv *, jclass, jmethodID,
+ ...);
+ jboolean (JNICALL *CallStaticBooleanMethodV) (JNIEnv *, jclass, jmethodID,
+ _Jv_va_list);
+ jboolean (JNICALL *CallStaticBooleanMethodA) (JNIEnv *, jclass, jmethodID,
+ jvalue *);
+ jbyte (JNICALL *CallStaticByteMethod) (JNIEnv *, jclass, jmethodID,
+ ...);
+ jbyte (JNICALL *CallStaticByteMethodV) (JNIEnv *, jclass, jmethodID,
+ _Jv_va_list);
+ jbyte (JNICALL *CallStaticByteMethodA) (JNIEnv *, jclass, jmethodID,
+ jvalue *);
+ jchar (JNICALL *CallStaticCharMethod) (JNIEnv *, jclass, jmethodID,
+ ...);
+ jchar (JNICALL *CallStaticCharMethodV) (JNIEnv *, jclass, jmethodID,
+ _Jv_va_list);
+ jchar (JNICALL *CallStaticCharMethodA) (JNIEnv *, jclass, jmethodID,
+ jvalue *);
+ jshort (JNICALL *CallStaticShortMethod) (JNIEnv *, jclass, jmethodID,
+ ...);
+ jshort (JNICALL *CallStaticShortMethodV) (JNIEnv *, jclass, jmethodID,
+ _Jv_va_list);
+ jshort (JNICALL *CallStaticShortMethodA) (JNIEnv *, jclass, jmethodID,
+ jvalue *);
+ jint (JNICALL *CallStaticIntMethod) (JNIEnv *, jclass, jmethodID,
+ ...);
+ jint (JNICALL *CallStaticIntMethodV) (JNIEnv *, jclass, jmethodID,
+ _Jv_va_list);
+ jint (JNICALL *CallStaticIntMethodA) (JNIEnv *, jclass, jmethodID,
+ jvalue *);
+ jlong (JNICALL *CallStaticLongMethod) (JNIEnv *, jclass, jmethodID,
+ ...);
+ jlong (JNICALL *CallStaticLongMethodV) (JNIEnv *, jclass, jmethodID,
+ _Jv_va_list);
+ jlong (JNICALL *CallStaticLongMethodA) (JNIEnv *, jclass, jmethodID,
+ jvalue *);
+ jfloat (JNICALL *CallStaticFloatMethod) (JNIEnv *, jclass, jmethodID,
+ ...);
+ jfloat (JNICALL *CallStaticFloatMethodV) (JNIEnv *, jclass, jmethodID,
+ _Jv_va_list);
+ jfloat (JNICALL *CallStaticFloatMethodA) (JNIEnv *, jclass, jmethodID,
+ jvalue *);
+ jdouble (JNICALL *CallStaticDoubleMethod) (JNIEnv *, jclass, jmethodID,
+ ...);
+ jdouble (JNICALL *CallStaticDoubleMethodV) (JNIEnv *, jclass, jmethodID,
+ _Jv_va_list);
+ jdouble (JNICALL *CallStaticDoubleMethodA) (JNIEnv *, jclass, jmethodID,
+ jvalue *);
+ void (JNICALL *CallStaticVoidMethod) (JNIEnv *, jclass, jmethodID,
+ ...);
+ void (JNICALL *CallStaticVoidMethodV) (JNIEnv *, jclass, jmethodID,
+ _Jv_va_list);
+ void (JNICALL *CallStaticVoidMethodA) (JNIEnv *, jclass, jmethodID,
+ jvalue *);
+
+ jfieldID (JNICALL *GetStaticFieldID) (JNIEnv *, jclass, const char *,
+ const char *);
+
+ jobject (JNICALL *GetStaticObjectField) (JNIEnv *, jclass, jfieldID);
+ jboolean (JNICALL *GetStaticBooleanField) (JNIEnv *, jclass, jfieldID);
+ jbyte (JNICALL *GetStaticByteField) (JNIEnv *, jclass, jfieldID);
+ jchar (JNICALL *GetStaticCharField) (JNIEnv *, jclass, jfieldID);
+ jshort (JNICALL *GetStaticShortField) (JNIEnv *, jclass, jfieldID);
+ jint (JNICALL *GetStaticIntField) (JNIEnv *, jclass, jfieldID);
+ jlong (JNICALL *GetStaticLongField) (JNIEnv *, jclass, jfieldID);
+ jfloat (JNICALL *GetStaticFloatField) (JNIEnv *, jclass, jfieldID);
+ jdouble (JNICALL *GetStaticDoubleField) (JNIEnv *, jclass, jfieldID);
+
+ void (JNICALL *SetStaticObjectField) (JNIEnv *, jclass,
jfieldID, jobject);
- void (*SetStaticBooleanField) (JNIEnv *, jclass,
+ void (JNICALL *SetStaticBooleanField) (JNIEnv *, jclass,
jfieldID, jboolean);
- void (*SetStaticByteField) (JNIEnv *, jclass,
+ void (JNICALL *SetStaticByteField) (JNIEnv *, jclass,
jfieldID, jbyte);
- void (*SetStaticCharField) (JNIEnv *, jclass,
+ void (JNICALL *SetStaticCharField) (JNIEnv *, jclass,
jfieldID, jchar);
- void (*SetStaticShortField) (JNIEnv *, jclass,
+ void (JNICALL *SetStaticShortField) (JNIEnv *, jclass,
jfieldID, jshort);
- void (*SetStaticIntField) (JNIEnv *, jclass,
+ void (JNICALL *SetStaticIntField) (JNIEnv *, jclass,
jfieldID, jint);
- void (*SetStaticLongField) (JNIEnv *, jclass,
+ void (JNICALL *SetStaticLongField) (JNIEnv *, jclass,
jfieldID, jlong);
- void (*SetStaticFloatField) (JNIEnv *, jclass,
+ void (JNICALL *SetStaticFloatField) (JNIEnv *, jclass,
jfieldID, jfloat);
- void (*SetStaticDoubleField) (JNIEnv *, jclass,
+ void (JNICALL *SetStaticDoubleField) (JNIEnv *, jclass,
jfieldID, jdouble);
- jstring (*NewString) (JNIEnv *, const jchar *, jsize);
- jsize (*GetStringLength) (JNIEnv *, jstring);
- const jchar * (*GetStringChars) (JNIEnv *, jstring, jboolean *);
- void (*ReleaseStringChars) (JNIEnv *, jstring, const jchar *);
- jstring (*NewStringUTF) (JNIEnv *, const char *);
- jsize (*GetStringUTFLength) (JNIEnv *, jstring);
- const char * (*GetStringUTFChars) (JNIEnv *, jstring, jboolean *);
- void (*ReleaseStringUTFChars) (JNIEnv *, jstring, const char *);
- jsize (*GetArrayLength) (JNIEnv *, jarray);
- jarray (*NewObjectArray) (JNIEnv *, jsize, jclass, jobject);
- jobject (*GetObjectArrayElement) (JNIEnv *, jobjectArray, jsize);
- void (*SetObjectArrayElement) (JNIEnv *, jobjectArray, jsize,
- jobject);
-
- jbooleanArray (*NewBooleanArray) (JNIEnv *, jsize);
- jbyteArray (*NewByteArray) (JNIEnv *, jsize);
- jcharArray (*NewCharArray) (JNIEnv *, jsize);
- jshortArray (*NewShortArray) (JNIEnv *, jsize);
- jintArray (*NewIntArray) (JNIEnv *, jsize);
- jlongArray (*NewLongArray) (JNIEnv *, jsize);
- jfloatArray (*NewFloatArray) (JNIEnv *, jsize);
- jdoubleArray (*NewDoubleArray) (JNIEnv *, jsize);
-
- jboolean * (*GetBooleanArrayElements) (JNIEnv *, jbooleanArray,
- jboolean *);
- jbyte * (*GetByteArrayElements) (JNIEnv *, jbyteArray,
- jboolean *);
- jchar * (*GetCharArrayElements) (JNIEnv *, jcharArray,
- jboolean *);
- jshort * (*GetShortArrayElements) (JNIEnv *, jshortArray,
- jboolean *);
- jint * (*GetIntArrayElements) (JNIEnv *, jintArray,
- jboolean *);
- jlong * (*GetLongArrayElements) (JNIEnv *, jlongArray,
- jboolean *);
- jfloat * (*GetFloatArrayElements) (JNIEnv *, jfloatArray,
- jboolean *);
- jdouble * (*GetDoubleArrayElements) (JNIEnv *, jdoubleArray,
- jboolean *);
-
- void (*ReleaseBooleanArrayElements) (JNIEnv *, jbooleanArray,
- jboolean *, jint);
- void (*ReleaseByteArrayElements) (JNIEnv *, jbyteArray,
- jbyte *, jint);
- void (*ReleaseCharArrayElements) (JNIEnv *, jcharArray,
- jchar *, jint);
- void (*ReleaseShortArrayElements) (JNIEnv *, jshortArray,
- jshort *, jint);
- void (*ReleaseIntArrayElements) (JNIEnv *, jintArray,
- jint *, jint);
- void (*ReleaseLongArrayElements) (JNIEnv *, jlongArray,
- jlong *, jint);
- void (*ReleaseFloatArrayElements) (JNIEnv *, jfloatArray,
- jfloat *, jint);
- void (*ReleaseDoubleArrayElements) (JNIEnv *, jdoubleArray,
- jdouble *, jint);
-
- void (*GetBooleanArrayRegion) (JNIEnv *, jbooleanArray,
- jsize, jsize, jboolean *);
- void (*GetByteArrayRegion) (JNIEnv *, jbyteArray,
- jsize, jsize, jbyte *);
- void (*GetCharArrayRegion) (JNIEnv *, jcharArray,
- jsize, jsize, jchar *);
- void (*GetShortArrayRegion) (JNIEnv *, jshortArray,
- jsize, jsize, jshort *);
- void (*GetIntArrayRegion) (JNIEnv *, jintArray,
- jsize, jsize, jint *);
- void (*GetLongArrayRegion) (JNIEnv *, jlongArray,
- jsize, jsize, jlong *);
- void (*GetFloatArrayRegion) (JNIEnv *, jfloatArray,
- jsize, jsize, jfloat *);
- void (*GetDoubleArrayRegion) (JNIEnv *, jdoubleArray,
- jsize, jsize, jdouble *);
-
- void (*SetBooleanArrayRegion) (JNIEnv *, jbooleanArray,
- jsize, jsize, jboolean *);
- void (*SetByteArrayRegion) (JNIEnv *, jbyteArray,
- jsize, jsize, jbyte *);
- void (*SetCharArrayRegion) (JNIEnv *, jcharArray,
- jsize, jsize, jchar *);
- void (*SetShortArrayRegion) (JNIEnv *, jshortArray,
- jsize, jsize, jshort *);
- void (*SetIntArrayRegion) (JNIEnv *, jintArray,
- jsize, jsize, jint *);
- void (*SetLongArrayRegion) (JNIEnv *, jlongArray,
- jsize, jsize, jlong *);
- void (*SetFloatArrayRegion) (JNIEnv *, jfloatArray,
- jsize, jsize, jfloat *);
- void (*SetDoubleArrayRegion) (JNIEnv *, jdoubleArray,
- jsize, jsize, jdouble *);
-
- jint (*RegisterNatives) (JNIEnv *, jclass,
- const JNINativeMethod *, jint);
- jint (*UnregisterNatives) (JNIEnv *, jclass);
- jint (*MonitorEnter) (JNIEnv *, jobject);
- jint (*MonitorExit) (JNIEnv *, jobject);
- jint (*GetJavaVM) (JNIEnv *, JavaVM **);
-
- void (*GetStringRegion) (JNIEnv *, jstring, jsize,
- jsize, jchar *);
- void (*GetStringUTFRegion) (JNIEnv *, jstring, jsize,
- jsize, char *);
-
- void * (*GetPrimitiveArrayCritical) (JNIEnv *, jarray, jboolean *);
- void (*ReleasePrimitiveArrayCritical) (JNIEnv *, jarray, void *, jint);
-
- const jchar * (*GetStringCritical) (JNIEnv *, jstring, jboolean *);
- void (*ReleaseStringCritical) (JNIEnv *, jstring, const jchar *);
-
- jweak (*NewWeakGlobalRef) (JNIEnv *, jobject);
- void (*DeleteWeakGlobalRef) (JNIEnv *, jweak);
-
- jboolean (*ExceptionCheck) (JNIEnv *);
-
- jobject (*NewDirectByteBuffer) (JNIEnv *, void *, jlong);
- void * (*GetDirectBufferAddress) (JNIEnv *, jobject);
- jlong (*GetDirectBufferCapacity) (JNIEnv *, jobject);
+ jstring (JNICALL *NewString) (JNIEnv *, const jchar *, jsize);
+ jsize (JNICALL *GetStringLength) (JNIEnv *, jstring);
+ const jchar * (JNICALL *GetStringChars) (JNIEnv *, jstring, jboolean *);
+ void (JNICALL *ReleaseStringChars) (JNIEnv *, jstring, const jchar *);
+ jstring (JNICALL *NewStringUTF) (JNIEnv *, const char *);
+ jsize (JNICALL *GetStringUTFLength) (JNIEnv *, jstring);
+ const char * (JNICALL *GetStringUTFChars) (JNIEnv *, jstring, jboolean *);
+ void (JNICALL *ReleaseStringUTFChars) (JNIEnv *, jstring, const char *);
+ jsize (JNICALL *GetArrayLength) (JNIEnv *, jarray);
+ jarray (JNICALL *NewObjectArray) (JNIEnv *, jsize, jclass, jobject);
+ jobject (JNICALL *GetObjectArrayElement) (JNIEnv *, jobjectArray, jsize);
+ void (JNICALL *SetObjectArrayElement) (JNIEnv *, jobjectArray, jsize,
+ jobject);
+
+ jbooleanArray (JNICALL *NewBooleanArray) (JNIEnv *, jsize);
+ jbyteArray (JNICALL *NewByteArray) (JNIEnv *, jsize);
+ jcharArray (JNICALL *NewCharArray) (JNIEnv *, jsize);
+ jshortArray (JNICALL *NewShortArray) (JNIEnv *, jsize);
+ jintArray (JNICALL *NewIntArray) (JNIEnv *, jsize);
+ jlongArray (JNICALL *NewLongArray) (JNIEnv *, jsize);
+ jfloatArray (JNICALL *NewFloatArray) (JNIEnv *, jsize);
+ jdoubleArray (JNICALL *NewDoubleArray) (JNIEnv *, jsize);
+
+ jboolean * (JNICALL *GetBooleanArrayElements) (JNIEnv *, jbooleanArray,
+ jboolean *);
+ jbyte * (JNICALL *GetByteArrayElements) (JNIEnv *, jbyteArray,
+ jboolean *);
+ jchar * (JNICALL *GetCharArrayElements) (JNIEnv *, jcharArray,
+ jboolean *);
+ jshort * (JNICALL *GetShortArrayElements) (JNIEnv *, jshortArray,
+ jboolean *);
+ jint * (JNICALL *GetIntArrayElements) (JNIEnv *, jintArray,
+ jboolean *);
+ jlong * (JNICALL *GetLongArrayElements) (JNIEnv *, jlongArray,
+ jboolean *);
+ jfloat * (JNICALL *GetFloatArrayElements) (JNIEnv *, jfloatArray,
+ jboolean *);
+ jdouble * (JNICALL *GetDoubleArrayElements) (JNIEnv *, jdoubleArray,
+ jboolean *);
+
+ void (JNICALL *ReleaseBooleanArrayElements) (JNIEnv *, jbooleanArray,
+ jboolean *, jint);
+ void (JNICALL *ReleaseByteArrayElements) (JNIEnv *, jbyteArray,
+ jbyte *, jint);
+ void (JNICALL *ReleaseCharArrayElements) (JNIEnv *, jcharArray,
+ jchar *, jint);
+ void (JNICALL *ReleaseShortArrayElements) (JNIEnv *, jshortArray,
+ jshort *, jint);
+ void (JNICALL *ReleaseIntArrayElements) (JNIEnv *, jintArray,
+ jint *, jint);
+ void (JNICALL *ReleaseLongArrayElements) (JNIEnv *, jlongArray,
+ jlong *, jint);
+ void (JNICALL *ReleaseFloatArrayElements) (JNIEnv *, jfloatArray,
+ jfloat *, jint);
+ void (JNICALL *ReleaseDoubleArrayElements) (JNIEnv *, jdoubleArray,
+ jdouble *, jint);
+
+ void (JNICALL *GetBooleanArrayRegion) (JNIEnv *, jbooleanArray,
+ jsize, jsize, jboolean *);
+ void (JNICALL *GetByteArrayRegion) (JNIEnv *, jbyteArray,
+ jsize, jsize, jbyte *);
+ void (JNICALL *GetCharArrayRegion) (JNIEnv *, jcharArray,
+ jsize, jsize, jchar *);
+ void (JNICALL *GetShortArrayRegion) (JNIEnv *, jshortArray,
+ jsize, jsize, jshort *);
+ void (JNICALL *GetIntArrayRegion) (JNIEnv *, jintArray,
+ jsize, jsize, jint *);
+ void (JNICALL *GetLongArrayRegion) (JNIEnv *, jlongArray,
+ jsize, jsize, jlong *);
+ void (JNICALL *GetFloatArrayRegion) (JNIEnv *, jfloatArray,
+ jsize, jsize, jfloat *);
+ void (JNICALL *GetDoubleArrayRegion) (JNIEnv *, jdoubleArray,
+ jsize, jsize, jdouble *);
+
+ void (JNICALL *SetBooleanArrayRegion) (JNIEnv *, jbooleanArray,
+ jsize, jsize, jboolean *);
+ void (JNICALL *SetByteArrayRegion) (JNIEnv *, jbyteArray,
+ jsize, jsize, jbyte *);
+ void (JNICALL *SetCharArrayRegion) (JNIEnv *, jcharArray,
+ jsize, jsize, jchar *);
+ void (JNICALL *SetShortArrayRegion) (JNIEnv *, jshortArray,
+ jsize, jsize, jshort *);
+ void (JNICALL *SetIntArrayRegion) (JNIEnv *, jintArray,
+ jsize, jsize, jint *);
+ void (JNICALL *SetLongArrayRegion) (JNIEnv *, jlongArray,
+ jsize, jsize, jlong *);
+ void (JNICALL *SetFloatArrayRegion) (JNIEnv *, jfloatArray,
+ jsize, jsize, jfloat *);
+ void (JNICALL *SetDoubleArrayRegion) (JNIEnv *, jdoubleArray,
+ jsize, jsize, jdouble *);
+
+ jint (JNICALL *RegisterNatives) (JNIEnv *, jclass,
+ const JNINativeMethod *,
+ jint);
+ jint (JNICALL *UnregisterNatives) (JNIEnv *, jclass);
+ jint (JNICALL *MonitorEnter) (JNIEnv *, jobject);
+ jint (JNICALL *MonitorExit) (JNIEnv *, jobject);
+ jint (JNICALL *GetJavaVM) (JNIEnv *, JavaVM **);
+
+ void (JNICALL *GetStringRegion) (JNIEnv *, jstring, jsize,
+ jsize, jchar *);
+ void (JNICALL *GetStringUTFRegion) (JNIEnv *, jstring, jsize,
+ jsize, char *);
+
+ void * (JNICALL *GetPrimitiveArrayCritical) (JNIEnv *, jarray,
+ jboolean *);
+ void (JNICALL *ReleasePrimitiveArrayCritical) (JNIEnv *, jarray, void *,
+ jint);
+
+ const jchar * (JNICALL *GetStringCritical) (JNIEnv *, jstring,
+ jboolean *);
+ void (JNICALL *ReleaseStringCritical) (JNIEnv *, jstring,
+ const jchar *);
+
+ jweak (JNICALL *NewWeakGlobalRef) (JNIEnv *, jobject);
+ void (JNICALL *DeleteWeakGlobalRef) (JNIEnv *, jweak);
+
+ jboolean (JNICALL *ExceptionCheck) (JNIEnv *);
+
+ jobject (JNICALL *NewDirectByteBuffer) (JNIEnv *, void *, jlong);
+ void * (JNICALL *GetDirectBufferAddress) (JNIEnv *, jobject);
+ jlong (JNICALL *GetDirectBufferCapacity) (JNIEnv *, jobject);
};
#ifdef __cplusplus
@@ -1549,11 +1563,11 @@ struct JNIInvokeInterface
_Jv_func reserved1;
_Jv_func reserved2;
- jint (*DestroyJavaVM) (JavaVM *);
- jint (*AttachCurrentThread) (JavaVM *, void **, void *);
- jint (*DetachCurrentThread) (JavaVM *);
- jint (*GetEnv) (JavaVM *, void **, jint);
- jint (*AttachCurrentThreadAsDaemon) (JavaVM *, void **, void *);
+ jint (JNICALL *DestroyJavaVM) (JavaVM *);
+ jint (JNICALL *AttachCurrentThread) (JavaVM *, void **, void *);
+ jint (JNICALL *DetachCurrentThread) (JavaVM *);
+ jint (JNICALL *GetEnv) (JavaVM *, void **, jint);
+ jint (JNICALL *AttachCurrentThreadAsDaemon) (JavaVM *, void **, void *);
};
#ifdef __cplusplus
diff --git a/libjava/include/posix.h b/libjava/include/posix.h
index 8fa782fc662..447cadaf790 100644
--- a/libjava/include/posix.h
+++ b/libjava/include/posix.h
@@ -27,6 +27,10 @@ details. */
#include <sys/select.h>
#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
@@ -36,6 +40,10 @@ details. */
#include <gcj/cni.h>
#include <java/util/Properties.h>
+#ifndef DISABLE_JAVA_NET
+#include <java/net/InetAddress.h>
+#endif
+
extern int _Jv_select (int n, fd_set *, fd_set *, fd_set *, struct timeval *);
extern jlong _Jv_platform_gettimeofday ();
extern void _Jv_platform_initialize (void);
@@ -45,7 +53,62 @@ inline void
_Jv_platform_close_on_exec (jint fd)
{
// Ignore errors.
- fcntl (fd, F_SETFD, FD_CLOEXEC);
+ ::fcntl (fd, F_SETFD, FD_CLOEXEC);
}
-#endif
+#ifndef DISABLE_JAVA_NET
+
+static inline int
+_Jv_socket (int domain, int type, int protocol)
+{
+ return ::socket (domain, type, protocol);
+}
+
+inline int
+_Jv_connect (jint fd, sockaddr *ptr, int len)
+{
+ return ::connect (fd, ptr, len);
+}
+
+inline int
+_Jv_close (jint fd)
+{
+ return ::close (fd);
+}
+
+// Avoid macro definitions of bind from system headers, e.g. on
+// Solaris 7 with _XOPEN_SOURCE. FIXME
+inline int
+_Jv_bind (int fd, struct sockaddr *addr, int addrlen)
+{
+ return ::bind (fd, addr, addrlen);
+}
+
+// Same problem with accept on Tru64 UNIX with _POSIX_PII_SOCKET
+inline int
+_Jv_accept (int fd, struct sockaddr *addr, socklen_t *addrlen)
+{
+ return ::accept (fd, addr, addrlen);
+}
+
+inline int
+_Jv_listen (int fd, int backlog)
+{
+ return ::listen (fd, backlog);
+}
+
+inline int
+_Jv_write(int s, void *buf, int len)
+{
+ return ::write (s, buf, len);
+}
+
+inline int
+_Jv_read(int s, void *buf, int len)
+{
+ return ::read (s, buf, len);
+}
+
+#endif /* DISABLE_JAVA_NET */
+
+#endif /* __JV_POSIX_H__ */
diff --git a/libjava/include/win32.h b/libjava/include/win32.h
index a035cfc5c13..62bc0c33cbb 100644
--- a/libjava/include/win32.h
+++ b/libjava/include/win32.h
@@ -22,6 +22,18 @@ details. */
#include <io.h>
+#ifndef DISBALE_JAVA_NET
+
+// these errors cannot occur on Win32
+#define ENOTCONN 0
+#define ECONNRESET 0
+
+#ifndef ENOPROTOOPT
+#define ENOPROTOOPT 109
+#endif
+
+#endif // DISBALE_JAVA_NET
+
extern void _Jv_platform_initialize (void);
extern void _Jv_platform_initProperties (java::util::Properties*);
extern jlong _Jv_platform_gettimeofday ();
@@ -32,6 +44,58 @@ _Jv_platform_close_on_exec (jint)
// Ignore.
}
+#ifndef DISBALE_JAVA_NET
+
+static inline int
+_Jv_socket (int domain, int type, int protocol)
+{
+ return ::socket (domain, type, protocol);
+}
+
+inline int
+_Jv_connect (jint fd, sockaddr *ptr, int len)
+{
+ return ::connect (fd, ptr, len);
+}
+
+inline int
+_Jv_close (jint fd)
+{
+ return ::closesocket (fd);
+}
+
+inline int
+_Jv_bind (int fd, struct sockaddr *addr, int addrlen)
+{
+ return ::bind (fd, addr, addrlen);
+}
+
+inline int
+_Jv_accept (int fd, struct sockaddr *addr, socklen_t *addrlen)
+{
+ return ::accept (fd, addr, addrlen);
+}
+
+inline int
+_Jv_listen (int fd, int backlog)
+{
+ return ::listen (fd, backlog);
+}
+
+inline int
+_Jv_write(int s, void *buf, int len)
+{
+ return ::send (s, (char*) buf, len, 0);
+}
+
+inline int
+_Jv_read(int s, void *buf, int len)
+{
+ return ::recv (s, (char*) buf, len, 0);
+}
+
+#endif /* DISBALE_JAVA_NET */
+
#define HAVE_BACKTRACE
/* Store up to SIZE return address of the current program state in
diff --git a/libjava/java/applet/Applet.java b/libjava/java/applet/Applet.java
index 8f9338ffd75..5990c6392da 100644
--- a/libjava/java/applet/Applet.java
+++ b/libjava/java/applet/Applet.java
@@ -1,23 +1,23 @@
/* Applet.java -- Java base applet class
- Copyright (C) 1999 Free Software Foundation, Inc.
-
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
+
This file is part of GNU Classpath.
-
+
GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
-
+
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
@@ -39,269 +39,469 @@ exception statement from your version. */
package java.applet;
import java.awt.Dimension;
+import java.awt.GraphicsEnvironment;
+import java.awt.HeadlessException;
import java.awt.Image;
+import java.awt.Panel;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.net.MalformedURLException;
import java.net.URL;
import java.util.Locale;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
/**
- * This is the base applet class. An applet is a Java program that
- * runs inside a web browser or other applet viewer in a restricted
- * environment.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- */
-public class Applet extends java.awt.Panel implements java.io.Serializable
+ * This is the base applet class. An applet is a Java program that
+ * runs inside a web browser or other applet viewer in a restricted
+ * environment.
+ *
+ * <p>To be useful, a subclass should override at least start(). Also useful
+ * are init, stop, and destroy for control purposes, and getAppletInfo and
+ * getParameterInfo for descriptive purposes.
+ *
+ * @author Aaron M. Renn <arenn@urbanophile.com>
+ * @author Eric Blake <ebb9@email.byu.edu>
+ * @since 1.0
+ * @status updated to 1.4
+ */
+public class Applet extends Panel
{
- // The applet stub for this applet
- private AppletStub stub;
+ /**
+ * Compatible with JDK 1.0+.
+ */
+ private static final long serialVersionUID = -5836846270535785031L;
+
+ /** The applet stub for this applet. */
+ private transient AppletStub stub;
+
+ /**
+ * The accessibility context for this applet.
+ *
+ * @serial the accessibleContext for this
+ * @since 1.2
+ */
+ private AccessibleContext accessibleContext;
+
+ /**
+ * Default constructor for subclasses.
+ *
+ * @throws HeadlessException if in a headless environment
+ */
+ public Applet()
+ {
+ if (GraphicsEnvironment.isHeadless())
+ throw new HeadlessException();
+ }
+
+ /**
+ * The browser calls this method to set the applet's stub, which is the
+ * low level interface to the browser. Manually setting this to null is
+ * asking for problems down the road.
+ *
+ * @param stub the applet stub for this applet
+ */
+ public final void setStub(AppletStub stub)
+ {
+ this.stub = stub;
+ }
/**
- * Default constructor for subclasses.
- */
- public Applet() {}
+ * Tests whether or not this applet is currently active. An applet is active
+ * just before the browser invokes start(), and becomes inactive just
+ * before the browser invokes stop().
+ *
+ * @return <code>true</code> if this applet is active
+ */
+ public boolean isActive()
+ {
+ return stub.isActive();
+ }
/**
- * Returns the URL of the document this applet is embedded in.
- *
- * @return The URL of the document this applet is embedded in.
- */
+ * Returns the basename URL of the document this applet is embedded in. This
+ * is everything up to the final '/'.
+ *
+ * @return the URL of the document this applet is embedded in
+ * @see #getCodeBase()
+ */
public URL getDocumentBase()
{
- return (stub.getDocumentBase ());
+ return stub.getDocumentBase();
}
/**
- * Returns the URL of the code base for this applet.
- *
- * @return The URL of the code base for this applet.
- */
+ * Returns the URL of the code base for this applet.
+ *
+ * @return the URL of the code base for this applet
+ */
public URL getCodeBase()
{
- return (stub.getCodeBase ());
+ return stub.getCodeBase();
}
/**
- * Returns the value of the specified parameter that was specified in
- * the &lt;APPLET&gt; tag for this applet.
- *
- * @param name The parameter name.
- *
- * @param value The parameter value, or <code>null</code> if the parameter
- * does not exist.
- */
+ * Returns the value of the specified parameter that was specified in
+ * the <code>&lt;APPLET&gt;</code> tag for this applet.
+ *
+ * @param name the parameter name
+ * @return the parameter value, or null if the parameter does not exist
+ * @throws NullPointerException if name is null
+ */
public String getParameter(String name)
{
- return (stub.getParameter (name));
+ return stub.getParameter(name);
}
/**
- * Returns the applet context for this applet.
- *
- * @return The applet context for this applet.
- */
+ * Returns the applet context for this applet.
+ *
+ * @return the applet context for this applet
+ */
public AppletContext getAppletContext()
{
- return (stub.getAppletContext ());
+ return stub.getAppletContext();
}
/**
- * Tests whether or not this applet is currently active.
- *
- * @return <code>true</code> if this applet is active, <code>false</code>
- * otherwise.
- */
- public boolean isActive()
+ * Requests that the applet window for this applet be resized.
+ *
+ * @param width the new width in pixels
+ * @param height the new height in pixels
+ */
+ public void resize(int width, int height)
{
- return (stub.isActive ());
+ stub.appletResize(width, height);
}
/**
- * Requests that the applet window for this applet be resized.
- *
- * @param width The new width in pixels.
- * @param height The new height in pixels.
- */
- public void resize(int width, int height)
+ * Requests that the applet window for this applet be resized.
+ *
+ * @param dim the requested dimensions
+ * @throws NullPointerException if dim is null
+ */
+ public void resize(Dimension dim)
{
- stub.appletResize (width, height);
+ resize(dim.width, dim.height);
}
/**
- * Requests that the applet window for this applet be resized.
- *
- * @param dim The <code>Dimension</code> object with the requested
- * width and height.
- */
- public void resize(Dimension dim)
+ * Displays the specified message in the status window if that window
+ * exists.
+ *
+ * @param message the status message, may be null
+ */
+ public void showStatus(String message)
+ {
+ getAppletContext().showStatus(message);
+ }
+
+ /**
+ * Returns an image from the specified URL. Note that the image is not
+ * actually retrieved until the applet attempts to display it, so this
+ * method returns immediately.
+ *
+ * @param url the URL of the image
+ * @return the retrieved image
+ * @throws NullPointerException if url is null
+ */
+ public Image getImage(URL url)
{
- resize (dim.width, dim.height);
+ return getAppletContext().getImage(url);
}
/**
- * Returns an audio clip from the specified URL.
- *
- * @param url The URL of the audio clip.
- *
- * @return The retrieved audio clip.
- */
+ * Returns an image from the specified absolute URL, and relative path
+ * from that URL. Note that the image is not actually retrieved until the
+ * applet attempts to display it, so this method returns immediately.
+ * This calls <code>getImage(new URL(url, name))</code>, but if building
+ * the new URL fails, this returns null.
+ *
+ * @param url the base URL of the image
+ * @param name the name of the image relative to the URL
+ * @return the retrieved image, or null on failure
+ * @see #getImage(URL)
+ */
+ public Image getImage(URL url, String name)
+ {
+ try
+ {
+ return getImage(new URL(url, name));
+ }
+ catch (MalformedURLException e)
+ {
+ return null;
+ }
+ }
+
+ /**
+ * Returns an audio clip from the specified URL. This clip is not tied to
+ * any particular applet.
+ *
+ * XXX Classpath does not yet implement this.
+ *
+ * @param url the URL of the audio clip
+ * @return the retrieved audio clip
+ * @throws NullPointerException if url is null
+ * @see #getAudioClip(URL)
+ * @since 1.2
+ */
+ public static final AudioClip newAudioClip(URL url)
+ {
+ // This requires an implementation of AudioClip in gnu.java.applet.
+ throw new Error("Not implemented");
+ }
+
+ /**
+ * Returns an audio clip from the specified URL. Note that the clip is not
+ * actually retrieved until the applet attempts to play it, so this method
+ * returns immediately.
+ *
+ * @param url the URL of the audio clip
+ * @return the retrieved audio clip
+ * @throws NullPointerException if url is null
+ */
public AudioClip getAudioClip(URL url)
{
- return (getAppletContext ().getAudioClip (url));
+ return getAppletContext().getAudioClip(url);
}
/**
- * Returns an audio clip from the specified URL and name
- *
- * @param url The base URL of the audio clip.
- * @param name The name of the clip relative to the URL.
- *
- * @return The retrieved audio clip.
- */
+ * Returns an audio clip from the specified absolute URL, and relative path
+ * from that URL. Note that the clip is not actually retrieved until the
+ * applet attempts to play it, so this method returns immediately. This
+ * calls <code>getAudioClip(new URL(url, name))</code>, but if building
+ * the new URL fails, this returns null.
+ *
+ * @param url the base URL of the audio clip
+ * @param name the name of the clip relative to the URL
+ * @return the retrieved audio clip, or null on failure
+ * @see #getAudioClip(URL)
+ */
public AudioClip getAudioClip(URL url, String name)
{
try
{
- return (getAppletContext ().getAudioClip (new URL (url.toExternalForm()
- + name)));
+ return getAudioClip(new URL(url, name));
}
- catch(Exception e)
+ catch (MalformedURLException e)
{
- return (getAudioClip (url));
+ return null;
}
}
/**
- * Loads and plays the audio clip pointed to by the specified URL.
- *
- * @param The URL of the audio clip.
- */
- public void play (URL url)
+ * Returns a descriptive string with applet defined information. The
+ * implementation in this class returns <code>null</code>, so subclasses
+ * must override to return information.
+ *
+ * @return a string describing the author, version, and applet copyright
+ */
+ public String getAppletInfo()
{
- getAudioClip (url).play ();
+ return null;
}
/**
- * Loads and plays the audio clip pointed to by the specified URL.
- *
- * @param The base URL of the audio clip.
- * @param name The name of the audio clip relative to the URL.
- */
- public void play (URL url, String name)
+ * Returns the locale for this applet, if it has been set. If no applet
+ * specific locale has been set, the default locale is returned.
+ *
+ * @return the locale for this applet
+ * @see Component#setLocale(Locale)
+ * @since 1.1
+ */
+ public Locale getLocale()
{
- getAudioClip (url, name).play ();
+ return super.getLocale();
}
/**
- * Returns an image from the specified URL. Note that the image is not
- * actually retrieved until the applet attempts to display it, so this
- * method returns immediately.
- *
- * @param url The URL of the image.
- *
- * @return The retrieved image.
- */
- public Image getImage(URL url)
+ * Returns a list of parameters this applet supports. Each element of
+ * the outer array is an array of three strings with the name of the
+ * parameter, the data type or valid values, and a description. This
+ * method is optional and the default implementation returns null.
+ *
+ * @return the list of parameters supported by this applet
+ */
+ public String[][] getParameterInfo()
{
- return (getAppletContext ().getImage (url));
+ return null;
}
/**
- * Returns an image from the specified URL. Note that the image is not
- * actually retrieved until the applet attempts to display it, so this
- * method returns immediately.
- *
- * @param url The base URL of the image.
- * @param name The name of the image relative to the URL.
- *
- * @return The retrieved image.
- */
- public Image getImage(URL url, String name)
+ * Loads and plays the audio clip pointed to by the specified URL. This does
+ * nothing if the URL does not point to a valid audio clip.
+ *
+ * @param url the URL of the audio clip
+ * @throws NullPointerException if url is null
+ * @see #getAudioClip(URL)
+ */
+ public void play(URL url)
{
+ AudioClip ac = getAudioClip(url);
try
{
- return (getAppletContext ().getImage (new URL (url.toExternalForm()
- + name)));
+ ac.play();
}
- catch(Exception e)
+ catch (Exception ignored)
{
- return (getImage (url));
}
}
/**
- * Returns the locale for this applet, if it has been set. If no applet
- * specific locale has been set, the default locale is returned.
- *
- * @return The locale for this applet.
- */
- public Locale getLocale()
+ * Loads and plays the audio clip pointed to by the specified absolute URL,
+ * and relative path from that URL. This does nothing if the URL cannot be
+ * constructed, or if it does not point to a valid audio clip.
+ *
+ * @param url the base URL of the audio clip
+ * @param name the name of the audio clip relative to the URL
+ * @see #getAudioClip(URL, String)
+ * @see #play(URL)
+ */
+ public void play(URL url, String name)
{
- return (super.getLocale ());
+ try
+ {
+ getAudioClip(url, name).play();
+ }
+ catch (Exception ignored)
+ {
+ }
}
/**
- * Returns a descriptive string with applet defined information. The
- * implementation in this class returns <code>null</code>. Applets who
- * wish to return this information should override.
- *
- * @return A string describing the applet.
- */
- public String getAppletInfo()
+ * This method is called when the applet is first loaded, before start().
+ * The default implementation does nothing; override to do any one-time
+ * initialization.
+ *
+ * @see #start()
+ * @see #stop()
+ * @see #destroy()
+ */
+ public void init()
{
- return (null);
}
/**
- * Returns a list of parameters this applet supports. Each element of
- * the array is a list of three strings with the name of the parameter,
- * the data type or valid values, and a description. This method is
- * optional and the default implementation returns <code>null</code>.
- *
- * @return The list of parameters supported by this applet.
- */
- public String[][] getParameterInfo()
+ * This method is called when the applet should start running. This is
+ * normally each time a web page containing it is loaded. The default
+ * implemention does nothing; override for your applet to be useful.
+ *
+ * @see #init()
+ * @see #stop()
+ * @see #destroy()
+ */
+ public void start()
{
- return (null);
}
/**
- * This method is called when the applet is first loaded. The default
- * implementation does nothing. Applets that wish to do one time
- * initialization should override.
- */
- public void init() {}
+ * This method is called when the applet should stop running. This is
+ * normally when the next web page is loaded. The default implementation
+ * does nothing; override for your applet to stop using resources when
+ * it is no longer visible, but may be restarted soon.
+ *
+ * @see #init()
+ * @see #start()
+ * @see #destroy()
+ */
+ public void stop()
+ {
+ }
/**
- * This method is called when the applet is being unloaded. The default
- * implementation does nothing. Applets that need to clean up resources
- * on exit should override.
- */
- public void destroy() {}
+ * This method is called when the applet is being unloaded. The default
+ * implementation does nothing; override for your applet to clean up
+ * resources on exit.
+ *
+ * @see #init()
+ * @see #start()
+ * @see #stop()
+ */
+ public void destroy()
+ {
+ }
/**
- * This method is called when the applet should start running. This is
- * normally each time a web page containing it is loaded. The default
- * implemention does nothing. Subclasses should override.
- */
- public void start() {}
+ * Gets the AccessibleContext associated with this applet, creating one if
+ * necessary. This always returns an instance of {@link AccessibleApplet}.
+ *
+ * @return the accessibility context of this applet
+ * @since 1.3
+ */
+ public AccessibleContext getAccessibleContext()
+ {
+ if (accessibleContext == null)
+ accessibleContext = new AccessibleApplet();
+ return accessibleContext;
+ }
/**
- * This method is called when the applet should stop running. This is
- * normally when the next web page is loaded. The default implementation
- * does nothing.
- */
- public void stop() {}
+ * Read an applet from an object stream. This checks for a headless
+ * environment, then does the normal read.
+ *
+ * @param s the stream to read from
+ * @throws ClassNotFoundException if a class is not found
+ * @throws IOException if deserialization fails
+ * @throws HeadlessException if this is a headless environment
+ * @see GraphicsEnvironment#isHeadless()
+ * @since 1.4
+ */
+ private void readObject(ObjectInputStream s)
+ throws ClassNotFoundException, IOException
+ {
+ if (GraphicsEnvironment.isHeadless())
+ throw new HeadlessException();
+ s.defaultReadObject();
+ }
/**
- * The browser calls this method to set the applet's stub, which is the
- * low level interface to the browser.
- *
- * @param stub The applet stub for this applet.
- */
- public final void setStub (AppletStub stub)
+ * This class provides accessibility support for Applets, and is the
+ * runtime type returned by {@link #getAccessibleContext()}.
+ *
+ * @author Eric Blake <ebb9@email.byu.edu>
+ * @since 1.3
+ */
+ protected class AccessibleApplet extends AccessibleAWTPanel
{
- this.stub = stub;
- }
+ /**
+ * Compatible with JDK 1.4+.
+ */
+ private static final long serialVersionUID = 8127374778187708896L;
-} // class Applet
+ /**
+ * The default constructor.
+ */
+ protected AccessibleApplet()
+ {
+ }
+ /**
+ * Get the role of this accessible object, a frame.
+ *
+ * @return the role of the object
+ * @see AccessibleRole#FRAME
+ */
+ public AccessibleRole getAccessibleRole()
+ {
+ return AccessibleRole.FRAME;
+ }
+
+ /**
+ * Get the state set of this accessible object. In addition to the default
+ * states of a Component, the applet can also be active.
+ *
+ * @return the role of the object
+ * @see AccessibleState
+ */
+ public AccessibleStateSet getAccessibleStateSet()
+ {
+ AccessibleStateSet s = super.getAccessibleStateSet();
+ if (isActive())
+ s.add(AccessibleState.ACTIVE);
+ return s;
+ }
+ } // class AccessibleApplet
+} // class Applet
diff --git a/libjava/java/applet/AppletContext.java b/libjava/java/applet/AppletContext.java
index 86552abc2f8..13c077074b3 100644
--- a/libjava/java/applet/AppletContext.java
+++ b/libjava/java/applet/AppletContext.java
@@ -1,23 +1,23 @@
-/* AppletContext.java -- Access the applet's runtime environment.
- Copyright (C) 1999 Free Software Foundation, Inc.
-
+/* AppletContext.java -- access the applet's runtime environment
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
+
This file is part of GNU Classpath.
-
+
GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
-
+
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
@@ -39,81 +39,116 @@ exception statement from your version. */
package java.applet;
import java.awt.Image;
+import java.io.InputStream;
+import java.io.IOException;
import java.net.URL;
import java.util.Enumeration;
+import java.util.Iterator;
/**
- * This interface allows an applet access to the browser to retrieve
- * additional data files and display documents. It also allows the
- * applet to find out other applets in the same document.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- */
+ * This interface allows an applet access to the browser to retrieve
+ * additional data files and display documents. It also allows the
+ * applet to find out other applets in the same document.
+ *
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ * @since 1.0
+ * @status updated to 1.4
+ */
public interface AppletContext
{
/**
- * Returns an audio clip from the specified URL.
- *
- * @param url The URL of the audio clip.
- *
- * @return The retrieved audio clip // FIXME: What happens on error?
- */
+ * Returns an audio clip from the specified URL.
+ *
+ * @param url the URL of the audio clip
+ * @return the retrieved audio clip
+ * @throws NullPointerException if url is null
+ */
AudioClip getAudioClip(URL url);
/**
- * Returns an image from the specified URL. Note that the image is not
- * actually retrieved until the applet attempts to display it, so this
- * method returns immediately.
- *
- * @param url The URL of the image.
- *
- * @return The retrieved image. // FIXME: What happens on eror?
- */
+ * Returns an image from the specified URL. Note that the image is not
+ * actually retrieved until the applet attempts to display it, so this
+ * method returns immediately.
+ *
+ * @param url the absolute URL of the image
+ * @return the retrieved image
+ * @throws NullPointerException if url is null
+ */
Image getImage(URL url);
/**
- * Returns the applet in the document for this object that has the
- * specified name.
- *
- * @param name The applet name.
- *
- * @return The requested applet, or <code>null</code> if an applet with
- * the requested name cannot be found.
- */
+ * Returns the applet in the document for this object that has the
+ * specified name.
+ *
+ * @param name the applet name
+ * @return the requested applet, or <code>null</code> if not found
+ */
Applet getApplet(String name);
/**
- * Returns a list of all the applets in the document for this object.
- *
- * @return A list of all the applets in the document for this object.
- */
+ * Returns a list of all the applets in the document for this object.
+ *
+ * @return a list of all the applets
+ */
Enumeration getApplets();
/**
- * Displays the web page pointed to by the specified URL in the window
- * for this object. This page replaces the document that is currently
- * there.
- *
- * @param url The URL of the web page to load.
- */
+ * Displays the web page pointed to by the specified URL in the window
+ * for this object. This page replaces the document that is currently
+ * there.
+ *
+ * @param url the URL of the web page to load; unspecified on an error
+ */
void showDocument(URL url);
/**
- * Displays the web page pointed to be the sepcified URL in the window
- * with the specified name. The standard names "_top", "_blank",
- * "_parent", and "_self" are allowed.
- *
- * @param url The URL of the web page to load.
- * @param target The target window.
- */
+ * Displays the web page pointed to be the sepcified URL in the window
+ * with the specified name. The standard names "_top", "_blank",
+ * "_parent", and "_self" are allowed. An applet viewer may disregard
+ * this request.
+ *
+ * @param url the URL of the web page to load
+ * @param target the target window
+ */
void showDocument(URL url, String target);
/**
- * Displays the specified message in the status window if that window
- * exists.
- *
- * @param message The status message.
- */
+ * Displays the specified message in the status window if that window
+ * exists.
+ *
+ * @param message the status message, may be null
+ */
void showStatus(String message);
+ /**
+ * Associate a stream to a key for this applet context, possibly replacing
+ * the old value. Stream associations are local to the applet context, for
+ * security purposes.
+ *
+ * @param key the key to associate with
+ * @param stream the stream value to tie to the key, or null to remove
+ * @throws IOException if the stream is too large
+ * @since 1.4
+ */
+ void setStream(String key, InputStream stream) throws IOException;
+
+ /**
+ * Return the stream associated with a given key in this applet context, or
+ * null if nothing is associated. Stream associations are local to the
+ * applet context, for security purposes.
+ *
+ * @param key the key to look up
+ * @return the associated stream, or null
+ * @since 1.4
+ */
+ InputStream getStream(String key);
+
+ /**
+ * Iterate over all keys that have associated streams. Stream associated
+ * are local to the applet context, for security purposes.
+ *
+ * @return an iterator over the association keys
+ * @since 1.4
+ */
+ Iterator getStreamKeys();
} // interface AppletContext
diff --git a/libjava/java/applet/AppletStub.java b/libjava/java/applet/AppletStub.java
index 5ec428a6f2b..7694cc822ef 100644
--- a/libjava/java/applet/AppletStub.java
+++ b/libjava/java/applet/AppletStub.java
@@ -1,23 +1,23 @@
-/* AppletStub.java -- Low level interface to the browser.
- Copyright (C) 1999 Free Software Foundation, Inc.
-
+/* AppletStub.java -- low level interface to the browser
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
+
This file is part of GNU Classpath.
-
+
GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
-
+
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
@@ -40,60 +40,63 @@ package java.applet;
import java.net.URL;
/**
- * This interface is the low level interface between the applet and the
- * browser.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- */
+ * This interface is the low level interface between the applet and the
+ * browser.
+ *
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ * @see Applet#setStub(AppletStub)
+ * @since 1.0
+ * @status updated to 1.4
+ */
public interface AppletStub
{
/**
- * Returns the URL of the document this applet is embedded in.
- *
- * @return The URL of the document this applet is embedded in.
- */
+ * Tests whether or not this applet is currently active. An applet is active
+ * just before the browser invokes start(), and becomes inactive just
+ * before the browser invokes stop().
+ *
+ * @return <code>true</code> if this applet is active
+ */
+ boolean isActive();
+
+ /**
+ * Returns the basename URL of the document this applet is embedded in. This
+ * is everything up to the final '/'.
+ *
+ * @return the URL of the document this applet is embedded in
+ * @see #getCodeBase()
+ */
URL getDocumentBase();
/**
- * Returns the URL of the code base for this applet.
- *
- * @return The URL of the code base for this applet.
- */
+ * Returns the URL of the code base for this applet.
+ *
+ * @return the URL of the code base for this applet
+ */
URL getCodeBase();
/**
- * Returns the value of the specified parameter that was specified in
- * the &lt;APPLET&gt; tag for this applet.
- *
- * @param name The parameter name.
- *
- * @param value The parameter value, or <code>null</code> if the parameter
- * does not exist.
- */
+ * Returns the value of the specified parameter that was specified in
+ * the <code>&lt;APPLET&gt;</code> tag for this applet.
+ *
+ * @param name the parameter name
+ * @return the parameter value, or null if the parameter does not exist
+ * @throws NullPointerException if name is null
+ */
String getParameter(String name);
/**
- * Returns the applet context for this applet.
- *
- * @return The applet context for this applet.
- */
+ * Returns the applet context for this applet.
+ *
+ * @return the applet context for this applet
+ */
AppletContext getAppletContext();
/**
- * Tests whether or not this applet is currently active.
- *
- * @return <code>true</code> if this applet is active, <code>false</code>
- * otherwise.
- */
- boolean isActive();
-
- /**
- * Requests that the applet window for this applet be resized.
- *
- * @param width The new width in pixels.
- * @param height The new height in pixels.
- */
+ * Requests that the applet window for this applet be resized.
+ *
+ * @param width the new width in pixels
+ * @param height the new height in pixels
+ */
void appletResize(int width, int height);
-
} // interface AppletStub
-
diff --git a/libjava/java/applet/AudioClip.java b/libjava/java/applet/AudioClip.java
index 97cf9008a66..41dd3be2af5 100644
--- a/libjava/java/applet/AudioClip.java
+++ b/libjava/java/applet/AudioClip.java
@@ -1,23 +1,23 @@
-/* AudioClip.java -- Play an audio clip.
- Copyright (C) 1999 Free Software Foundation, Inc.
-
+/* AudioClip.java -- play an audio clip in an applet
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
+
This file is part of GNU Classpath.
-
+
GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
-
+
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
@@ -39,26 +39,29 @@ exception statement from your version. */
package java.applet;
/**
- * This interface provides a simple mechanism for playing audio clips.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- */
+ * This interface provides a simple mechanism for playing audio clips.
+ * If multiple clips are played at once, the browser combines them into a
+ * composite clip.
+ *
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ * @since 1.0
+ * @status updated to 1.4
+ */
public interface AudioClip
{
/**
- * Plays the audio clip starting from the beginning.
- */
+ * Plays the audio clip starting from the beginning.
+ */
void play();
/**
- * Stops playing this audio clip. There is no mechanism for restarting
- * at the point where the clip is stopped.
- */
+ * Stops playing this audio clip. There is no mechanism for restarting
+ * at the point where the clip is stopped.
+ */
void stop();
/**
- * Plays this audio clip in a continuous loop.
- */
+ * Plays this audio clip in a continuous loop.
+ */
void loop();
-
} // interface AudioClip
diff --git a/libjava/java/awt/BorderLayout.java b/libjava/java/awt/BorderLayout.java
index d1bbd1f235a..930773f0142 100644
--- a/libjava/java/awt/BorderLayout.java
+++ b/libjava/java/awt/BorderLayout.java
@@ -529,80 +529,83 @@ invalidateLayout(Container parent)
public void
layoutContainer(Container target)
{
- Insets i = target.getInsets();
-
- ComponentOrientation orient = target.getComponentOrientation ();
- boolean left_to_right = orient.isLeftToRight ();
-
- Component my_north = north;
- Component my_east = east;
- Component my_south = south;
- Component my_west = west;
-
- // Note that we currently don't handle vertical layouts. Neither
- // does JDK 1.3.
- if (firstLine != null)
- my_north = firstLine;
- if (lastLine != null)
- my_south = lastLine;
- if (firstItem != null)
+ synchronized (target.getTreeLock ())
{
- if (left_to_right)
- my_west = firstItem;
- else
- my_east = firstItem;
+ Insets i = target.getInsets();
+
+ ComponentOrientation orient = target.getComponentOrientation ();
+ boolean left_to_right = orient.isLeftToRight ();
+
+ Component my_north = north;
+ Component my_east = east;
+ Component my_south = south;
+ Component my_west = west;
+
+ // Note that we currently don't handle vertical layouts. Neither
+ // does JDK 1.3.
+ if (firstLine != null)
+ my_north = firstLine;
+ if (lastLine != null)
+ my_south = lastLine;
+ if (firstItem != null)
+ {
+ if (left_to_right)
+ my_west = firstItem;
+ else
+ my_east = firstItem;
+ }
+ if (lastItem != null)
+ {
+ if (left_to_right)
+ my_east = lastItem;
+ else
+ my_west = lastItem;
+ }
+
+ Dimension c = calcCompSize(center, PREF);
+ Dimension n = calcCompSize(my_north, PREF);
+ Dimension s = calcCompSize(my_south, PREF);
+ Dimension e = calcCompSize(my_east, PREF);
+ Dimension w = calcCompSize(my_west, PREF);
+ Dimension t = target.getSize();
+
+ /*
+ <-> hgap <-> hgap
+ +----------------------------+ }
+ |t | } i.top
+ | +----------------------+ | --- y1 }
+ | |n | |
+ | +----------------------+ | } vgap
+ | +---+ +----------+ +---+ | --- y2 } }
+ | |w | |c | |e | | } hh
+ | +---+ +----------+ +---+ | } vgap }
+ | +----------------------+ | --- y3 }
+ | |s | |
+ | +----------------------+ | }
+ | | } i.bottom
+ +----------------------------+ }
+ |x1 |x2 |x3
+ <---------------------->
+ <--> ww <-->
+ i.left i.right
+ */
+
+ int x1 = i.left;
+ int x2 = x1 + w.width + hgap;
+ int x3 = t.width - i.right - e.width;
+ int ww = t.width - i.right - i.left;
+
+ int y1 = i.top;
+ int y2 = y1 + n.height + vgap;
+ int y3 = t.height - i.bottom - s.height;
+ int hh = y3-y2-vgap;
+
+ setBounds(center, x2, y2, x3-x2-hgap, hh);
+ setBounds(my_north, x1, y1, ww, n.height);
+ setBounds(my_south, x1, y3, ww, s.height);
+ setBounds(my_west, x1, y2, w.width, hh);
+ setBounds(my_east, x3, y2, e.width, hh);
}
- if (lastItem != null)
- {
- if (left_to_right)
- my_east = lastItem;
- else
- my_west = lastItem;
- }
-
- Dimension c = calcCompSize(center, PREF);
- Dimension n = calcCompSize(my_north, PREF);
- Dimension s = calcCompSize(my_south, PREF);
- Dimension e = calcCompSize(my_east, PREF);
- Dimension w = calcCompSize(my_west, PREF);
- Dimension t = target.getSize();
-
- /*
- <-> hgap <-> hgap
- +----------------------------+ }
- |t | } i.top
- | +----------------------+ | --- y1 }
- | |n | |
- | +----------------------+ | } vgap
- | +---+ +----------+ +---+ | --- y2 } }
- | |w | |c | |e | | } hh
- | +---+ +----------+ +---+ | } vgap }
- | +----------------------+ | --- y3 }
- | |s | |
- | +----------------------+ | }
- | | } i.bottom
- +----------------------------+ }
- |x1 |x2 |x3
- <---------------------->
- <--> ww <-->
- i.left i.right
- */
-
- int x1 = i.left;
- int x2 = x1 + w.width + hgap;
- int x3 = t.width - i.right - e.width;
- int ww = t.width - i.right - i.left;
-
- int y1 = i.top;
- int y2 = y1 + n.height + vgap;
- int y3 = t.height - i.bottom - s.height;
- int hh = y3-y2-vgap;
-
- setBounds(center, x2, y2, x3-x2-hgap, hh);
- setBounds(my_north, x1, y1, ww, n.height);
- setBounds(my_south, x1, y3, ww, s.height);
- setBounds(my_west, x1, y2, w.width, hh);
- setBounds(my_east, x3, y2, e.width, hh);
}
/*************************************************************************/
@@ -648,59 +651,62 @@ calcCompSize(Component comp, int what)
private Dimension
calcSize(Container target, int what)
{
- Insets ins = target.getInsets();
-
- ComponentOrientation orient = target.getComponentOrientation ();
- boolean left_to_right = orient.isLeftToRight ();
-
- Component my_north = north;
- Component my_east = east;
- Component my_south = south;
- Component my_west = west;
-
- // Note that we currently don't handle vertical layouts. Neither
- // does JDK 1.3.
- if (firstLine != null)
- my_north = firstLine;
- if (lastLine != null)
- my_south = lastLine;
- if (firstItem != null)
+ synchronized (target.getTreeLock ())
{
- if (left_to_right)
- my_west = firstItem;
- else
- my_east = firstItem;
- }
- if (lastItem != null)
- {
- if (left_to_right)
- my_east = lastItem;
- else
- my_west = lastItem;
- }
+ Insets ins = target.getInsets();
+
+ ComponentOrientation orient = target.getComponentOrientation ();
+ boolean left_to_right = orient.isLeftToRight ();
+
+ Component my_north = north;
+ Component my_east = east;
+ Component my_south = south;
+ Component my_west = west;
+
+ // Note that we currently don't handle vertical layouts. Neither
+ // does JDK 1.3.
+ if (firstLine != null)
+ my_north = firstLine;
+ if (lastLine != null)
+ my_south = lastLine;
+ if (firstItem != null)
+ {
+ if (left_to_right)
+ my_west = firstItem;
+ else
+ my_east = firstItem;
+ }
+ if (lastItem != null)
+ {
+ if (left_to_right)
+ my_east = lastItem;
+ else
+ my_west = lastItem;
+ }
- Dimension ndim = calcCompSize(my_north, what);
- Dimension sdim = calcCompSize(my_south, what);
- Dimension edim = calcCompSize(my_east, what);
- Dimension wdim = calcCompSize(my_west, what);
- Dimension cdim = calcCompSize(center, what);
+ Dimension ndim = calcCompSize(my_north, what);
+ Dimension sdim = calcCompSize(my_south, what);
+ Dimension edim = calcCompSize(my_east, what);
+ Dimension wdim = calcCompSize(my_west, what);
+ Dimension cdim = calcCompSize(center, what);
- int width = edim.width + cdim.width + wdim.width + (hgap * 2);
- if (ndim.width > width)
- width = ndim.width;
- if (sdim.width > width)
- width = sdim.width;
+ int width = edim.width + cdim.width + wdim.width + (hgap * 2);
+ if (ndim.width > width)
+ width = ndim.width;
+ if (sdim.width > width)
+ width = sdim.width;
- width += (ins.left + ins.right);
+ width += (ins.left + ins.right);
- int height = edim.height;
- if (cdim.height > height)
- height = cdim.height;
- if (wdim.height > height)
- height = wdim.height;
+ int height = edim.height;
+ if (cdim.height > height)
+ height = cdim.height;
+ if (wdim.height > height)
+ height = wdim.height;
- height += (ndim.height + sdim.height + (vgap * 2) + ins.top + ins.bottom);
+ height += (ndim.height + sdim.height + (vgap * 2) + ins.top + ins.bottom);
- return(new Dimension(width, height));
+ return(new Dimension(width, height));
+ }
}
} // class BorderLayout
diff --git a/libjava/java/awt/CardLayout.java b/libjava/java/awt/CardLayout.java
index 5bdb4acf98d..10ffa2ec6c2 100644
--- a/libjava/java/awt/CardLayout.java
+++ b/libjava/java/awt/CardLayout.java
@@ -53,6 +53,8 @@ import java.io.Serializable;
*/
public class CardLayout implements LayoutManager2, Serializable
{
+ static final long serialVersionUID = -4328196481005934313L;
+
/**
* Initializes a new instance of <code>CardLayout</code> with horizontal
* and vertical gaps of 0.
@@ -163,21 +165,24 @@ public class CardLayout implements LayoutManager2, Serializable
*/
public void layoutContainer (Container parent)
{
- int width = parent.width;
- int height = parent.height;
+ synchronized (parent.getTreeLock ())
+ {
+ int width = parent.width;
+ int height = parent.height;
- Insets ins = parent.getInsets ();
+ Insets ins = parent.getInsets ();
- int num = parent.ncomponents;
- Component[] comps = parent.component;
+ int num = parent.ncomponents;
+ Component[] comps = parent.component;
- int x = ins.left + hgap;
- int y = ins.top + vgap;
- width = width - 2 * hgap - ins.left - ins.right;
- height = height - 2 * vgap - ins.top - ins.bottom;
+ int x = ins.left + hgap;
+ int y = ins.top + vgap;
+ width = width - 2 * hgap - ins.left - ins.right;
+ height = height - 2 * vgap - ins.top - ins.bottom;
- for (int i = 0; i < num; ++i)
- comps[i].setBounds (x, y, width, height);
+ for (int i = 0; i < num; ++i)
+ comps[i].setBounds (x, y, width, height);
+ }
}
/** Get the maximum layout size of the container.
@@ -285,91 +290,97 @@ public class CardLayout implements LayoutManager2, Serializable
private void gotoComponent (Container parent, int what,
Component target)
{
- int num = parent.ncomponents;
- // This is more efficient than calling getComponents().
- Component[] comps = parent.component;
- int choice = -1;
-
- if (what == FIRST)
- choice = 0;
- else if (what == LAST)
- choice = num - 1;
- else if (what >= 0)
- choice = what;
-
- for (int i = 0; i < num; ++i)
+ synchronized (parent.getTreeLock ())
{
- // If TARGET is set then we are looking for a specific
- // component.
- if (target != null)
+ int num = parent.ncomponents;
+ // This is more efficient than calling getComponents().
+ Component[] comps = parent.component;
+ int choice = -1;
+
+ if (what == FIRST)
+ choice = 0;
+ else if (what == LAST)
+ choice = num - 1;
+ else if (what >= 0)
+ choice = what;
+
+ for (int i = 0; i < num; ++i)
{
- if (target == comps[i])
- choice = i;
- }
-
- if (comps[i].isVisible ())
- {
- if (what == NEXT)
- {
- choice = i + 1;
- if (choice == num)
- choice = 0;
- }
- else if (what == PREV)
+ // If TARGET is set then we are looking for a specific
+ // component.
+ if (target != null)
{
- choice = i - 1;
- if (choice < 0)
- choice = num - 1;
+ if (target == comps[i])
+ choice = i;
}
- else if (choice == i)
+
+ if (comps[i].isVisible ())
{
- // Do nothing if we're already looking at the right
- // component.
- return;
+ if (what == NEXT)
+ {
+ choice = i + 1;
+ if (choice == num)
+ choice = 0;
+ }
+ else if (what == PREV)
+ {
+ choice = i - 1;
+ if (choice < 0)
+ choice = num - 1;
+ }
+ else if (choice == i)
+ {
+ // Do nothing if we're already looking at the right
+ // component.
+ return;
+ }
+ comps[i].setVisible (false);
+
+ if (choice >= 0)
+ break;
}
- comps[i].setVisible (false);
-
- if (choice >= 0)
- break;
}
- }
- if (choice >= 0 && choice < num)
- comps[choice].setVisible (true);
+ if (choice >= 0 && choice < num)
+ comps[choice].setVisible (true);
+ }
}
// Compute the size according to WHAT.
private Dimension getSize (Container parent, int what)
{
- int w = 0, h = 0, num = parent.ncomponents;
- Component[] comps = parent.component;
-
- for (int i = 0; i < num; ++i)
+ synchronized (parent.getTreeLock ())
{
- Dimension d;
+ int w = 0, h = 0, num = parent.ncomponents;
+ Component[] comps = parent.component;
- if (what == MIN)
- d = comps[i].getMinimumSize ();
- else if (what == MAX)
- d = comps[i].getMaximumSize ();
- else
- d = comps[i].getPreferredSize ();
+ for (int i = 0; i < num; ++i)
+ {
+ Dimension d;
- w = Math.max (d.width, w);
- h = Math.max (d.height, h);
- }
+ if (what == MIN)
+ d = comps[i].getMinimumSize ();
+ else if (what == MAX)
+ d = comps[i].getMaximumSize ();
+ else
+ d = comps[i].getPreferredSize ();
+
+ w = Math.max (d.width, w);
+ h = Math.max (d.height, h);
+ }
- Insets i = parent.getInsets ();
- w += 2 * hgap + i.right + i.left;
- h += 2 * vgap + i.bottom + i.top;
+ Insets i = parent.getInsets ();
+ w += 2 * hgap + i.right + i.left;
+ h += 2 * vgap + i.bottom + i.top;
- // Handle overflow.
- if (w < 0)
- w = Integer.MAX_VALUE;
- if (h < 0)
- h = Integer.MAX_VALUE;
+ // Handle overflow.
+ if (w < 0)
+ w = Integer.MAX_VALUE;
+ if (h < 0)
+ h = Integer.MAX_VALUE;
- return new Dimension (w, h);
+ return new Dimension (w, h);
+ }
}
/**
diff --git a/libjava/java/awt/Container.java b/libjava/java/awt/Container.java
index d71a4bf3684..dd2390d35ba 100644
--- a/libjava/java/awt/Container.java
+++ b/libjava/java/awt/Container.java
@@ -123,9 +123,12 @@ public class Container extends Component
*/
public Component getComponent(int n)
{
- if (n < 0 || n >= ncomponents)
- throw new ArrayIndexOutOfBoundsException("no such component");
- return component[n];
+ synchronized (getTreeLock ())
+ {
+ if (n < 0 || n >= ncomponents)
+ throw new ArrayIndexOutOfBoundsException("no such component");
+ return component[n];
+ }
}
/**
@@ -135,10 +138,13 @@ public class Container extends Component
*/
public Component[] getComponents()
{
- Component[] result = new Component[ncomponents];
- if (ncomponents > 0)
- System.arraycopy(component, 0, result, 0, ncomponents);
- return result;
+ synchronized (getTreeLock ())
+ {
+ Component[] result = new Component[ncomponents];
+ if (ncomponents > 0)
+ System.arraycopy(component, 0, result, 0, ncomponents);
+ return result;
+ }
}
/**
@@ -260,69 +266,72 @@ public class Container extends Component
*/
protected void addImpl(Component comp, Object constraints, int index)
{
- if (index > ncomponents
- || (index < 0 && index != -1)
- || comp instanceof Window
- || (comp instanceof Container
- && ((Container) comp).isAncestorOf(this)))
- throw new IllegalArgumentException();
-
- // Reparent component, and make sure component is instantiated if
- // we are.
- if (comp.parent != null)
- comp.parent.remove(comp);
- comp.parent = this;
- if (peer != null)
- {
- comp.addNotify();
-
- if (comp.isLightweight())
- enableEvents(comp.eventMask);
- }
-
- invalidate();
-
- if (component == null)
- component = new Component[4]; // FIXME, better initial size?
-
- // This isn't the most efficient implementation. We could do less
- // copying when growing the array. It probably doesn't matter.
- if (ncomponents >= component.length)
- {
- int nl = component.length * 2;
- Component[] c = new Component[nl];
- System.arraycopy(component, 0, c, 0, ncomponents);
- component = c;
- }
- if (index == -1)
- component[ncomponents++] = comp;
- else
- {
- System.arraycopy(component, index, component, index + 1,
- ncomponents - index);
- component[index] = comp;
- ++ncomponents;
- }
-
- // Notify the layout manager.
- if (layoutMgr != null)
+ synchronized (getTreeLock ())
{
- if (layoutMgr instanceof LayoutManager2)
- {
- LayoutManager2 lm2 = (LayoutManager2) layoutMgr;
- lm2.addLayoutComponent(comp, constraints);
- }
- else if (constraints instanceof String)
- layoutMgr.addLayoutComponent((String) constraints, comp);
- else
- layoutMgr.addLayoutComponent(null, comp);
+ if (index > ncomponents
+ || (index < 0 && index != -1)
+ || comp instanceof Window
+ || (comp instanceof Container
+ && ((Container) comp).isAncestorOf(this)))
+ throw new IllegalArgumentException();
+
+ // Reparent component, and make sure component is instantiated if
+ // we are.
+ if (comp.parent != null)
+ comp.parent.remove(comp);
+ comp.parent = this;
+ if (peer != null)
+ {
+ comp.addNotify();
+
+ if (comp.isLightweight())
+ enableEvents(comp.eventMask);
+ }
+
+ invalidate();
+
+ if (component == null)
+ component = new Component[4]; // FIXME, better initial size?
+
+ // This isn't the most efficient implementation. We could do less
+ // copying when growing the array. It probably doesn't matter.
+ if (ncomponents >= component.length)
+ {
+ int nl = component.length * 2;
+ Component[] c = new Component[nl];
+ System.arraycopy(component, 0, c, 0, ncomponents);
+ component = c;
+ }
+ if (index == -1)
+ component[ncomponents++] = comp;
+ else
+ {
+ System.arraycopy(component, index, component, index + 1,
+ ncomponents - index);
+ component[index] = comp;
+ ++ncomponents;
+ }
+
+ // Notify the layout manager.
+ if (layoutMgr != null)
+ {
+ if (layoutMgr instanceof LayoutManager2)
+ {
+ LayoutManager2 lm2 = (LayoutManager2) layoutMgr;
+ lm2.addLayoutComponent(comp, constraints);
+ }
+ else if (constraints instanceof String)
+ layoutMgr.addLayoutComponent((String) constraints, comp);
+ else
+ layoutMgr.addLayoutComponent(null, comp);
+ }
+
+ // Post event to notify of adding the container.
+ ContainerEvent ce = new ContainerEvent(this,
+ ContainerEvent.COMPONENT_ADDED,
+ comp);
+ getToolkit().getSystemEventQueue().postEvent(ce);
}
-
- // Post event to notify of adding the container.
- ContainerEvent ce = new ContainerEvent(this,
- ContainerEvent.COMPONENT_ADDED,
- comp);
- getToolkit().getSystemEventQueue().postEvent(ce);
}
/**
@@ -332,24 +341,27 @@ public class Container extends Component
*/
public void remove(int index)
{
- Component r = component[index];
+ synchronized (getTreeLock ())
+ {
+ Component r = component[index];
- r.removeNotify();
+ r.removeNotify();
- System.arraycopy(component, index + 1, component, index,
- ncomponents - index - 1);
- component[--ncomponents] = null;
+ System.arraycopy(component, index + 1, component, index,
+ ncomponents - index - 1);
+ component[--ncomponents] = null;
- invalidate();
+ invalidate();
- if (layoutMgr != null)
- layoutMgr.removeLayoutComponent(r);
+ if (layoutMgr != null)
+ layoutMgr.removeLayoutComponent(r);
- // Post event to notify of adding the container.
- ContainerEvent ce = new ContainerEvent(this,
- ContainerEvent.COMPONENT_REMOVED,
- r);
- getToolkit().getSystemEventQueue().postEvent(ce);
+ // Post event to notify of adding the container.
+ ContainerEvent ce = new ContainerEvent(this,
+ ContainerEvent.COMPONENT_REMOVED,
+ r);
+ getToolkit().getSystemEventQueue().postEvent(ce);
+ }
}
/**
@@ -359,13 +371,16 @@ public class Container extends Component
*/
public void remove(Component comp)
{
- for (int i = 0; i < ncomponents; ++i)
+ synchronized (getTreeLock ())
{
- if (component[i] == comp)
- {
- remove(i);
- break;
- }
+ for (int i = 0; i < ncomponents; ++i)
+ {
+ if (component[i] == comp)
+ {
+ remove(i);
+ break;
+ }
+ }
}
}
@@ -374,8 +389,11 @@ public class Container extends Component
*/
public void removeAll()
{
- while (ncomponents > 0)
- remove(0);
+ synchronized (getTreeLock ())
+ {
+ while (ncomponents > 0)
+ remove(0);
+ }
}
/**
@@ -433,8 +451,7 @@ public class Container extends Component
*/
public void validate()
{
- // FIXME: use the tree lock?
- synchronized (this)
+ synchronized (getTreeLock ())
{
if (! isValid())
{
@@ -713,7 +730,8 @@ public class Container extends Component
{
if (e instanceof ContainerEvent)
processContainerEvent((ContainerEvent) e);
- else super.processEvent(e);
+ else
+ super.processEvent(e);
}
/**
@@ -764,20 +782,23 @@ public class Container extends Component
*/
public Component getComponentAt(int x, int y)
{
- if (! contains(x, y))
- return null;
- for (int i = 0; i < ncomponents; ++i)
+ synchronized (getTreeLock ())
{
- // Ignore invisible children...
- if (!component[i].isVisible())
- continue;
-
- int x2 = x - component[i].x;
- int y2 = y - component[i].y;
- if (component[i].contains(x2, y2))
- return component[i];
+ if (! contains(x, y))
+ return null;
+ for (int i = 0; i < ncomponents; ++i)
+ {
+ // Ignore invisible children...
+ if (!component[i].isVisible())
+ continue;
+
+ int x2 = x - component[i].x;
+ int y2 = y - component[i].y;
+ if (component[i].contains(x2, y2))
+ return component[i];
+ }
+ return this;
}
- return this;
}
/**
@@ -818,31 +839,34 @@ public class Container extends Component
public Component findComponentAt(int x, int y)
{
- if (! contains(x, y))
- return null;
-
- for (int i = 0; i < ncomponents; ++i)
+ synchronized (getTreeLock ())
{
- // Ignore invisible children...
- if (!component[i].isVisible())
- continue;
-
- int x2 = x - component[i].x;
- int y2 = y - component[i].y;
- // We don't do the contains() check right away because
- // findComponentAt would redundantly do it first thing.
- if (component[i] instanceof Container)
- {
- Container k = (Container) component[i];
- Component r = k.findComponentAt(x2, y2);
- if (r != null)
- return r;
- }
- else if (component[i].contains(x2, y2))
- return component[i];
+ if (! contains(x, y))
+ return null;
+
+ for (int i = 0; i < ncomponents; ++i)
+ {
+ // Ignore invisible children...
+ if (!component[i].isVisible())
+ continue;
+
+ int x2 = x - component[i].x;
+ int y2 = y - component[i].y;
+ // We don't do the contains() check right away because
+ // findComponentAt would redundantly do it first thing.
+ if (component[i] instanceof Container)
+ {
+ Container k = (Container) component[i];
+ Component r = k.findComponentAt(x2, y2);
+ if (r != null)
+ return r;
+ }
+ else if (component[i].contains(x2, y2))
+ return component[i];
+ }
+
+ return this;
}
-
- return this;
}
public Component findComponentAt(Point p)
@@ -868,9 +892,12 @@ public class Container extends Component
*/
public void removeNotify()
{
- for (int i = 0; i < ncomponents; ++i)
- component[i].removeNotify();
- super.removeNotify();
+ synchronized (getTreeLock ())
+ {
+ for (int i = 0; i < ncomponents; ++i)
+ component[i].removeNotify();
+ super.removeNotify();
+ }
}
/**
@@ -880,17 +907,20 @@ public class Container extends Component
* @param component The component to test.
*
* @return <code>true</code> if this container is an ancestor of the
- * specified component, <code>false</code>.
+ * specified component, <code>false</code> otherwise.
*/
public boolean isAncestorOf(Component comp)
{
- while (true)
+ synchronized (getTreeLock ())
{
- if (comp == null)
- return false;
- if (comp == this)
- return true;
- comp = comp.getParent();
+ while (true)
+ {
+ if (comp == null)
+ return false;
+ if (comp == this)
+ return true;
+ comp = comp.getParent();
+ }
}
}
@@ -918,9 +948,12 @@ public class Container extends Component
*/
public void list(PrintStream out, int indent)
{
- super.list(out, indent);
- for (int i = 0; i < ncomponents; ++i)
- component[i].list(out, indent + 2);
+ synchronized (getTreeLock ())
+ {
+ super.list(out, indent);
+ for (int i = 0; i < ncomponents; ++i)
+ component[i].list(out, indent + 2);
+ }
}
/**
@@ -932,9 +965,12 @@ public class Container extends Component
*/
public void list(PrintWriter out, int indent)
{
- super.list(out, indent);
- for (int i = 0; i < ncomponents; ++i)
- component[i].list(out, indent + 2);
+ synchronized (getTreeLock ())
+ {
+ super.list(out, indent);
+ for (int i = 0; i < ncomponents; ++i)
+ component[i].list(out, indent + 2);
+ }
}
public void setFocusTraversalKeys(int id, Set keys)
@@ -1006,16 +1042,17 @@ public class Container extends Component
private void visitChildren(Graphics gfx, GfxVisitor visitor,
boolean lightweightOnly)
{
- // FIXME: do locking
-
- for (int i = 0; i < ncomponents; ++i)
+ synchronized (getTreeLock ())
{
- Component comp = component[i];
- boolean applicable = comp.isVisible()
- && (comp.isLightweight() || !lightweightOnly);
-
- if (applicable)
- visitChild(gfx, visitor, comp);
+ for (int i = 0; i < ncomponents; ++i)
+ {
+ Component comp = component[i];
+ boolean applicable = comp.isVisible()
+ && (comp.isLightweight() || !lightweightOnly);
+
+ if (applicable)
+ visitChild(gfx, visitor, comp);
+ }
}
}
@@ -1061,59 +1098,65 @@ public class Container extends Component
// This is used to implement Component.transferFocus.
Component findNextFocusComponent(Component child)
{
- int start, end;
- if (child != null)
- {
- for (start = 0; start < ncomponents; ++start)
- {
- if (component[start] == child)
- break;
- }
- end = start;
- // This special case lets us be sure to terminate.
- if (end == 0)
- end = ncomponents;
- ++start;
- }
- else
- {
- start = 0;
- end = ncomponents;
- }
-
- for (int j = start; j != end; ++j)
+ synchronized (getTreeLock ())
{
- if (j >= ncomponents)
- {
- // The JCL says that we should wrap here. However, that
- // seems wrong. To me it seems that focus order should be
- // global within in given window. So instead if we reach
- // the end we try to look in our parent, if we have one.
- if (parent != null)
- return parent.findNextFocusComponent(this);
- j -= ncomponents;
- }
- if (component[j] instanceof Container)
- {
- Component c = component[j];
- c = c.findNextFocusComponent(null);
- if (c != null)
- return c;
- }
- else if (component[j].isFocusTraversable())
- return component[j];
+ int start, end;
+ if (child != null)
+ {
+ for (start = 0; start < ncomponents; ++start)
+ {
+ if (component[start] == child)
+ break;
+ }
+ end = start;
+ // This special case lets us be sure to terminate.
+ if (end == 0)
+ end = ncomponents;
+ ++start;
+ }
+ else
+ {
+ start = 0;
+ end = ncomponents;
+ }
+
+ for (int j = start; j != end; ++j)
+ {
+ if (j >= ncomponents)
+ {
+ // The JCL says that we should wrap here. However, that
+ // seems wrong. To me it seems that focus order should be
+ // global within in given window. So instead if we reach
+ // the end we try to look in our parent, if we have one.
+ if (parent != null)
+ return parent.findNextFocusComponent(this);
+ j -= ncomponents;
+ }
+ if (component[j] instanceof Container)
+ {
+ Component c = component[j];
+ c = c.findNextFocusComponent(null);
+ if (c != null)
+ return c;
+ }
+ else if (component[j].isFocusTraversable())
+ return component[j];
+ }
+
+ return null;
}
-
- return null;
}
private void addNotifyContainerChildren()
{
- for (int i = ncomponents; --i >= 0; )
+ synchronized (getTreeLock ())
{
- component[i].addNotify();
- if (component[i].isLightweight())
- enableEvents(component[i].eventMask);
+ for (int i = ncomponents; --i >= 0; )
+ {
+ component[i].addNotify();
+ if (component[i].isLightweight())
+ enableEvents(component[i].eventMask);
+ }
}
}
@@ -1190,12 +1233,15 @@ public class Container extends Component
*/
public int getAccessibleChildrenCount()
{
- int count = 0;
- int i = component == null ? 0 : component.length;
- while (--i >= 0)
- if (component[i] instanceof Accessible)
- count++;
- return count;
+ synchronized (getTreeLock ())
+ {
+ int count = 0;
+ int i = component == null ? 0 : component.length;
+ while (--i >= 0)
+ if (component[i] instanceof Accessible)
+ count++;
+ return count;
+ }
}
/**
@@ -1206,15 +1252,18 @@ public class Container extends Component
*/
public Accessible getAccessibleChild(int i)
{
- if (component == null)
- return null;
- int index = -1;
- while (i >= 0 && ++index < component.length)
- if (component[index] instanceof Accessible)
- i--;
- if (i < 0)
- return (Accessible) component[index];
- return null;
+ synchronized (getTreeLock ())
+ {
+ if (component == null)
+ return null;
+ int index = -1;
+ while (i >= 0 && ++index < component.length)
+ if (component[index] instanceof Accessible)
+ i--;
+ if (i < 0)
+ return (Accessible) component[index];
+ return null;
+ }
}
/**
diff --git a/libjava/java/awt/ContainerOrderFocusTraversalPolicy.java b/libjava/java/awt/ContainerOrderFocusTraversalPolicy.java
index 4c0d94e477d..e3cf31cb111 100644
--- a/libjava/java/awt/ContainerOrderFocusTraversalPolicy.java
+++ b/libjava/java/awt/ContainerOrderFocusTraversalPolicy.java
@@ -46,6 +46,8 @@ import java.io.Serializable;
public class ContainerOrderFocusTraversalPolicy extends FocusTraversalPolicy
implements Serializable
{
+ static final long serialVersionUID = 486933713763926351L;
+
private boolean downCycle = true;
public ContainerOrderFocusTraversalPolicy()
diff --git a/libjava/java/awt/Cursor.java b/libjava/java/awt/Cursor.java
index 2267998a452..5852b8bbf85 100644
--- a/libjava/java/awt/Cursor.java
+++ b/libjava/java/awt/Cursor.java
@@ -44,6 +44,8 @@ package java.awt;
*/
public class Cursor implements java.io.Serializable
{
+ static final long serialVersionUID = 8028237497568985504L;
+
/**
* Constant for the system default cursor type
*/
diff --git a/libjava/java/awt/Event.java b/libjava/java/awt/Event.java
index a020161647a..79be0e8c861 100644
--- a/libjava/java/awt/Event.java
+++ b/libjava/java/awt/Event.java
@@ -45,71 +45,73 @@ package java.awt;
public class Event implements java.io.Serializable
{
- public static final int SHIFT_MASK = 1,
- CTRL_MASK = 2,
- META_MASK = 4,
- ALT_MASK = 8;
-
- public static final int ACTION_EVENT = 1001,
- BACK_SPACE = 8,
- CAPS_LOCK = 1022,
- DELETE = 127,
- DOWN = 1005,
- END = 1001,
- ENTER = 10,
- ESCAPE = 27,
- F1 = 1008,
- F10 = 1017,
- F11 = 1018,
- F12 = 1019,
- F2 = 1009,
- F3 = 1010,
- F4 = 1011,
- F5 = 1012,
- F6 = 1013,
- F7 = 1014,
- F8 = 1015,
- F9 = 1016,
- GOT_FOCUS = 1004,
- HOME = 1000,
- INSERT = 1025,
- KEY_ACTION = 403,
- KEY_ACTION_RELEASE = 404,
- KEY_PRESS = 401,
- KEY_RELEASE = 402,
- LEFT = 1006,
- LIST_DESELECT = 702,
- LIST_SELECT = 701,
- LOAD_FILE = 1002,
- LOST_FOCUS = 1005,
- MOUSE_DOWN = 501,
- MOUSE_DRAG = 506,
- MOUSE_ENTER = 504,
- MOUSE_EXIT = 505,
- MOUSE_MOVE = 503,
- MOUSE_UP = 502,
- NUM_LOCK = 1023,
- PAUSE = 1024,
- PGDN = 1003,
- PGUP = 1002,
- PRINT_SCREEN = 1020,
- RIGHT = 1007,
- SAVE_FILE = 1003,
- SCROLL_ABSOLUTE = 605,
- SCROLL_BEGIN = 606,
- SCROLL_END = 607,
- SCROLL_LINE_DOWN = 602,
- SCROLL_LINE_UP = 601,
- SCROLL_LOCK = 1021,
- SCROLL_PAGE_DOWN = 604,
- SCROLL_PAGE_UP = 603,
- TAB = 9,
- UP = 1004,
- WINDOW_DEICONIFY = 204,
- WINDOW_DESTROY = 201,
- WINDOW_EXPOSE = 202,
- WINDOW_ICONIFY = 203,
- WINDOW_MOVED = 205;
+ static final long serialVersionUID = 5488922509400504703L;
+
+ public static final int SHIFT_MASK = 1;
+ public static final int CTRL_MASK = 2;
+ public static final int META_MASK = 4;
+ public static final int ALT_MASK = 8;
+
+ public static final int ACTION_EVENT = 1001;
+ public static final int BACK_SPACE = 8;
+ public static final int CAPS_LOCK = 1022;
+ public static final int DELETE = 127;
+ public static final int DOWN = 1005;
+ public static final int END = 1001;
+ public static final int ENTER = 10;
+ public static final int ESCAPE = 27;
+ public static final int F1 = 1008;
+ public static final int F10 = 1017;
+ public static final int F11 = 1018;
+ public static final int F12 = 1019;
+ public static final int F2 = 1009;
+ public static final int F3 = 1010;
+ public static final int F4 = 1011;
+ public static final int F5 = 1012;
+ public static final int F6 = 1013;
+ public static final int F7 = 1014;
+ public static final int F8 = 1015;
+ public static final int F9 = 1016;
+ public static final int GOT_FOCUS = 1004;
+ public static final int HOME = 1000;
+ public static final int INSERT = 1025;
+ public static final int KEY_ACTION = 403;
+ public static final int KEY_ACTION_RELEASE = 404;
+ public static final int KEY_PRESS = 401;
+ public static final int KEY_RELEASE = 402;
+ public static final int LEFT = 1006;
+ public static final int LIST_DESELECT = 702;
+ public static final int LIST_SELECT = 701;
+ public static final int LOAD_FILE = 1002;
+ public static final int LOST_FOCUS = 1005;
+ public static final int MOUSE_DOWN = 501;
+ public static final int MOUSE_DRAG = 506;
+ public static final int MOUSE_ENTER = 504;
+ public static final int MOUSE_EXIT = 505;
+ public static final int MOUSE_MOVE = 503;
+ public static final int MOUSE_UP = 502;
+ public static final int NUM_LOCK = 1023;
+ public static final int PAUSE = 1024;
+ public static final int PGDN = 1003;
+ public static final int PGUP = 1002;
+ public static final int PRINT_SCREEN = 1020;
+ public static final int RIGHT = 1007;
+ public static final int SAVE_FILE = 1003;
+ public static final int SCROLL_ABSOLUTE = 605;
+ public static final int SCROLL_BEGIN = 606;
+ public static final int SCROLL_END = 607;
+ public static final int SCROLL_LINE_DOWN = 602;
+ public static final int SCROLL_LINE_UP = 601;
+ public static final int SCROLL_LOCK = 1021;
+ public static final int SCROLL_PAGE_DOWN = 604;
+ public static final int SCROLL_PAGE_UP = 603;
+ public static final int TAB = 9;
+ public static final int UP = 1004;
+ public static final int WINDOW_DEICONIFY = 204;
+ public static final int WINDOW_DESTROY = 201;
+ public static final int WINDOW_EXPOSE = 202;
+ public static final int WINDOW_ICONIFY = 203;
+ public static final int WINDOW_MOVED = 205;
public Object arg;
public int clickCount;
diff --git a/libjava/java/awt/FlowLayout.java b/libjava/java/awt/FlowLayout.java
index e328d63796e..1f9465e4bf9 100644
--- a/libjava/java/awt/FlowLayout.java
+++ b/libjava/java/awt/FlowLayout.java
@@ -150,76 +150,79 @@ public class FlowLayout implements LayoutManager, Serializable
*/
public void layoutContainer (Container parent)
{
- int num = parent.getComponentCount ();
- // This is more efficient than calling getComponents().
- Component[] comps = parent.component;
+ synchronized (parent.getTreeLock ())
+ {
+ int num = parent.getComponentCount ();
+ // This is more efficient than calling getComponents().
+ Component[] comps = parent.component;
- Dimension d = parent.getSize ();
- Insets ins = parent.getInsets ();
+ Dimension d = parent.getSize ();
+ Insets ins = parent.getInsets ();
- ComponentOrientation orient = parent.getComponentOrientation ();
- boolean left_to_right = orient.isLeftToRight ();
+ ComponentOrientation orient = parent.getComponentOrientation ();
+ boolean left_to_right = orient.isLeftToRight ();
- int y = ins.top + vgap;
- int i = 0;
- while (i < num)
- {
- // Find the components which go in the current row.
- int new_w = ins.left + hgap + ins.right;
- int new_h = 0;
- int j;
- boolean found_one = false;
- for (j = i; j < num && ! found_one; ++j)
+ int y = ins.top + vgap;
+ int i = 0;
+ while (i < num)
{
- // Skip invisible items.
- if (! comps[i].visible)
- continue;
-
- Dimension c = comps[i].getPreferredSize ();
-
- int next_w = new_w + hgap + c.width;
- if (next_w <= d.width || ! found_one)
+ // Find the components which go in the current row.
+ int new_w = ins.left + hgap + ins.right;
+ int new_h = 0;
+ int j;
+ boolean found_one = false;
+ for (j = i; j < num && ! found_one; ++j)
{
- new_w = next_w;
- new_h = Math.max (new_h, c.height);
- found_one = true;
+ // Skip invisible items.
+ if (! comps[i].visible)
+ continue;
+
+ Dimension c = comps[i].getPreferredSize ();
+
+ int next_w = new_w + hgap + c.width;
+ if (next_w <= d.width || ! found_one)
+ {
+ new_w = next_w;
+ new_h = Math.max (new_h, c.height);
+ found_one = true;
+ }
+ else
+ {
+ // Must start a new row, and we already found an item
+ break;
+ }
}
- else
- {
- // Must start a new row, and we already found an item
- break;
- }
- }
- // Set the location of each component for this row.
- int x;
+ // Set the location of each component for this row.
+ int x;
- int myalign = align;
- if (align == LEADING)
- myalign = left_to_right ? LEFT : RIGHT;
- else if (align == TRAILING)
- myalign = left_to_right ? RIGHT : LEFT;
+ int myalign = align;
+ if (align == LEADING)
+ myalign = left_to_right ? LEFT : RIGHT;
+ else if (align == TRAILING)
+ myalign = left_to_right ? RIGHT : LEFT;
- if (myalign == LEFT)
- x = ins.left + hgap;
- else if (myalign == CENTER)
- x = (d.width - new_w) / 2;
- else
- x = d.width - new_w;
+ if (myalign == LEFT)
+ x = ins.left + hgap;
+ else if (myalign == CENTER)
+ x = (d.width - new_w) / 2;
+ else
+ x = d.width - new_w;
- for (int k = i; k < j; ++k)
- {
- if (comps[k].visible)
+ for (int k = i; k < j; ++k)
{
- Dimension c = comps[k].getPreferredSize ();
- comps[k].setBounds (x, y, c.width, new_h);
- x += c.width + hgap;
+ if (comps[k].visible)
+ {
+ Dimension c = comps[k].getPreferredSize ();
+ comps[k].setBounds (x, y, c.width, new_h);
+ x += c.width + hgap;
+ }
}
- }
- // Advance to next row.
- i = j;
- y += new_h + vgap;
+ // Advance to next row.
+ i = j;
+ y += new_h + vgap;
+ }
}
}
@@ -304,36 +307,39 @@ public class FlowLayout implements LayoutManager, Serializable
// This method is used to compute the various sizes.
private Dimension getSize (Container parent, boolean is_min)
{
- int w, h, num = parent.getComponentCount ();
- // This is more efficient than calling getComponents().
- Component[] comps = parent.component;
-
- w = 0;
- h = 0;
- for (int i = 0; i < num; ++i)
+ synchronized (parent.getTreeLock ())
{
- if (! comps[i].visible)
- continue;
+ int w, h, num = parent.getComponentCount ();
+ // This is more efficient than calling getComponents().
+ Component[] comps = parent.component;
- // FIXME: can we just directly read the fields in Component?
- // Or will that not work with subclassing?
- Dimension d;
+ w = 0;
+ h = 0;
+ for (int i = 0; i < num; ++i)
+ {
+ if (! comps[i].visible)
+ continue;
- if (is_min)
- d = comps[i].getMinimumSize ();
- else
- d = comps[i].getPreferredSize ();
+ // FIXME: can we just directly read the fields in Component?
+ // Or will that not work with subclassing?
+ Dimension d;
- w += d.width;
- h = Math.max (d.height, h);
- }
+ if (is_min)
+ d = comps[i].getMinimumSize ();
+ else
+ d = comps[i].getPreferredSize ();
- Insets ins = parent.getInsets ();
+ w += d.width;
+ h = Math.max (d.height, h);
+ }
- w += (num + 1) * hgap + ins.left + ins.right;
- h += 2 * vgap + ins.top + ins.bottom;
+ Insets ins = parent.getInsets ();
- return new Dimension (w, h);
+ w += (num + 1) * hgap + ins.left + ins.right;
+ h += 2 * vgap + ins.top + ins.bottom;
+
+ return new Dimension (w, h);
+ }
}
/**
diff --git a/libjava/java/awt/Frame.java b/libjava/java/awt/Frame.java
index cedd1710eb8..a25af9c5546 100644
--- a/libjava/java/awt/Frame.java
+++ b/libjava/java/awt/Frame.java
@@ -60,6 +60,12 @@ public class Frame extends Window implements MenuContainer, Serializable
*/
/**
+ * Constant for the default cursor.
+ * Deprecated. replaced by <code>Cursor.DEFAULT_CURSOR</code> instead.
+ */
+public static final int DEFAULT_CURSOR = Cursor.DEFAULT_CURSOR;
+
+/**
* Constant for a cross-hair cursor.
* @deprecated Use <code>Cursor.CROSSHAIR_CURSOR</code> instead.
*/
@@ -137,6 +143,12 @@ public static final int HAND_CURSOR = Cursor.HAND_CURSOR;
*/
public static final int MOVE_CURSOR = Cursor.MOVE_CURSOR;
+public static final int ICONIFIED = 1;
+public static final int MAXIMIZED_BOTH = 6;
+public static final int MAXIMIZED_HORIZ = 2;
+public static final int MAXIMIZED_VERT = 4;
+public static final int NORMAL = 0;
+
// Serialization version constant
private static final long serialVersionUID = 2673458971256075116L;
diff --git a/libjava/java/awt/GridBagConstraints.java b/libjava/java/awt/GridBagConstraints.java
index dd72a519a8d..57356ad8ef7 100644
--- a/libjava/java/awt/GridBagConstraints.java
+++ b/libjava/java/awt/GridBagConstraints.java
@@ -45,6 +45,8 @@ import java.io.Serializable;
* GridBagLayout layout manager. */
public class GridBagConstraints implements Cloneable, Serializable
{
+ static final long serialVersionUID = -1000070633030801713L;
+
/** Fill in both directions. */
public static final int BOTH = 1;
/** Don't fill. */
diff --git a/libjava/java/awt/GridBagLayout.java b/libjava/java/awt/GridBagLayout.java
index 91b5abd3282..dc2b3c9fd69 100644
--- a/libjava/java/awt/GridBagLayout.java
+++ b/libjava/java/awt/GridBagLayout.java
@@ -45,6 +45,8 @@ import java.io.Serializable;
public class GridBagLayout
implements Serializable, LayoutManager2
{
+ static final long serialVersionUID = 8838754796412211005L;
+
public void addLayoutComponent(String name, Component component)
{
}
diff --git a/libjava/java/awt/GridLayout.java b/libjava/java/awt/GridLayout.java
index 32f1cf8f5f4..a8befc4c0d3 100644
--- a/libjava/java/awt/GridLayout.java
+++ b/libjava/java/awt/GridLayout.java
@@ -58,6 +58,8 @@ import java.io.Serializable;
*/
public class GridLayout implements LayoutManager, Serializable
{
+ static final long serialVersionUID = -7411804673224730901L;
+
/** Add a new component to the layout. This particular implementation
* does nothing.
* @param name The name of the component to add.
@@ -151,62 +153,65 @@ public class GridLayout implements LayoutManager, Serializable
*/
public void layoutContainer (Container parent)
{
- int num = parent.ncomponents;
-
- // There's no point, and handling this would mean adding special
- // cases.
- if (num == 0)
- return;
-
- // This is more efficient than calling getComponents().
- Component[] comps = parent.component;
-
- int real_rows = rows;
- int real_cols = cols;
- if (real_rows == 0)
- real_rows = (num + real_cols - 1) / real_cols;
- else
- real_cols = (num + real_rows - 1) / real_rows;
-
- // We might have less than a single row. In this case we expand
- // to fill.
- if (num < real_cols)
- real_cols = num;
-
- Dimension d = parent.getSize ();
- Insets ins = parent.getInsets ();
-
- // Compute width and height of each cell in the grid.
- int tw = d.width - ins.left - ins.right;
- tw = (tw - (real_cols - 1) * hgap) / real_cols;
- int th = d.height - ins.top - ins.bottom;
- th = (th - (real_rows - 1) * vgap) / real_rows;
-
- // If the cells are too small, still try to do something.
- if (tw < 0)
- tw = 1;
- if (th < 0)
- th = 1;
-
- int x = ins.left;
- int y = ins.top;
- int i = 0;
- int recount = 0;
-
- while (i < num)
+ synchronized (parent.getTreeLock ())
{
- comps[i].setBounds (x, y, tw, th);
+ int num = parent.ncomponents;
- ++i;
- ++recount;
- if (recount == real_cols)
+ // There's no point, and handling this would mean adding special
+ // cases.
+ if (num == 0)
+ return;
+
+ // This is more efficient than calling getComponents().
+ Component[] comps = parent.component;
+
+ int real_rows = rows;
+ int real_cols = cols;
+ if (real_rows == 0)
+ real_rows = (num + real_cols - 1) / real_cols;
+ else
+ real_cols = (num + real_rows - 1) / real_rows;
+
+ // We might have less than a single row. In this case we expand
+ // to fill.
+ if (num < real_cols)
+ real_cols = num;
+
+ Dimension d = parent.getSize ();
+ Insets ins = parent.getInsets ();
+
+ // Compute width and height of each cell in the grid.
+ int tw = d.width - ins.left - ins.right;
+ tw = (tw - (real_cols - 1) * hgap) / real_cols;
+ int th = d.height - ins.top - ins.bottom;
+ th = (th - (real_rows - 1) * vgap) / real_rows;
+
+ // If the cells are too small, still try to do something.
+ if (tw < 0)
+ tw = 1;
+ if (th < 0)
+ th = 1;
+
+ int x = ins.left;
+ int y = ins.top;
+ int i = 0;
+ int recount = 0;
+
+ while (i < num)
{
- recount = 0;
- y += vgap + th;
- x = ins.left;
+ comps[i].setBounds (x, y, tw, th);
+
+ ++i;
+ ++recount;
+ if (recount == real_cols)
+ {
+ recount = 0;
+ y += vgap + th;
+ x = ins.left;
+ }
+ else
+ x += hgap + tw;
}
- else
- x += hgap + tw;
}
}
@@ -243,7 +248,7 @@ public class GridLayout implements LayoutManager, Serializable
*/
public void setColumns (int newCols)
{
- if (cols < 0)
+ if (newCols < 0)
throw new IllegalArgumentException ("number of columns cannot be negative");
if (newCols == 0 && rows == 0)
throw new IllegalArgumentException ("number of rows is already 0");
@@ -269,7 +274,7 @@ public class GridLayout implements LayoutManager, Serializable
*/
public void setRows (int newRows)
{
- if (rows < 0)
+ if (newRows < 0)
throw new IllegalArgumentException ("number of rows cannot be negative");
if (newRows == 0 && cols == 0)
throw new IllegalArgumentException ("number of columns is already 0");
@@ -299,36 +304,39 @@ public class GridLayout implements LayoutManager, Serializable
// This method is used to compute the various sizes.
private Dimension getSize (Container parent, boolean is_min)
{
- int w = 0, h = 0, num = parent.ncomponents;
- // This is more efficient than calling getComponents().
- Component[] comps = parent.component;
-
- for (int i = 0; i < num; ++i)
+ synchronized (parent.getTreeLock ())
{
- Dimension d;
+ int w = 0, h = 0, num = parent.ncomponents;
+ // This is more efficient than calling getComponents().
+ Component[] comps = parent.component;
- if (is_min)
- d = comps[i].getMinimumSize ();
- else
- d = comps[i].getPreferredSize ();
+ for (int i = 0; i < num; ++i)
+ {
+ Dimension d;
- w = Math.max (d.width, w);
- h = Math.max (d.height, h);
- }
+ if (is_min)
+ d = comps[i].getMinimumSize ();
+ else
+ d = comps[i].getPreferredSize ();
- int real_rows = rows;
- int real_cols = cols;
- if (real_rows == 0)
- real_rows = (num + real_cols - 1) / real_cols;
- else
- real_cols = (num + real_rows - 1) / real_rows;
-
- Insets ins = parent.getInsets ();
- // We subtract out an extra gap here because the gaps are only
- // between cells.
- w = ins.left + ins.right + real_cols * (w + hgap) - hgap;
- h = ins.top + ins.bottom + real_rows * (h + vgap) - vgap;
- return new Dimension (w, h);
+ w = Math.max (d.width, w);
+ h = Math.max (d.height, h);
+ }
+
+ int real_rows = rows;
+ int real_cols = cols;
+ if (real_rows == 0)
+ real_rows = (num + real_cols - 1) / real_cols;
+ else
+ real_cols = (num + real_rows - 1) / real_rows;
+
+ Insets ins = parent.getInsets ();
+ // We subtract out an extra gap here because the gaps are only
+ // between cells.
+ w = ins.left + ins.right + real_cols * (w + hgap) - hgap;
+ h = ins.top + ins.bottom + real_rows * (h + vgap) - vgap;
+ return new Dimension (w, h);
+ }
}
/**
diff --git a/libjava/java/awt/List.java b/libjava/java/awt/List.java
index c171b8f285e..f2c6d078832 100644
--- a/libjava/java/awt/List.java
+++ b/libjava/java/awt/List.java
@@ -947,10 +947,10 @@ processEvent(AWTEvent event)
{
if (event instanceof ActionEvent)
processActionEvent((ActionEvent)event);
- if (event instanceof ItemEvent)
+ else if (event instanceof ItemEvent)
processItemEvent((ItemEvent)event);
-
- super.processEvent(event);
+ else
+ super.processEvent(event);
}
/*************************************************************************/
diff --git a/libjava/java/awt/ScrollPane.java b/libjava/java/awt/ScrollPane.java
index 546f8e64d17..e558d0bc23f 100644
--- a/libjava/java/awt/ScrollPane.java
+++ b/libjava/java/awt/ScrollPane.java
@@ -1,5 +1,5 @@
/* ScrollPane.java -- Scrolling window
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -134,9 +134,9 @@ ScrollPane(int scrollbarDisplayPolicy)
{
this.scrollbarDisplayPolicy = scrollbarDisplayPolicy;
- if ((scrollbarDisplayPolicy != SCROLLBARS_ALWAYS) ||
- (scrollbarDisplayPolicy != SCROLLBARS_AS_NEEDED) ||
- (scrollbarDisplayPolicy != SCROLLBARS_NEVER))
+ if (scrollbarDisplayPolicy != SCROLLBARS_ALWAYS
+ && scrollbarDisplayPolicy != SCROLLBARS_AS_NEEDED
+ && scrollbarDisplayPolicy != SCROLLBARS_NEVER)
throw new IllegalArgumentException("Bad scrollbarDisplayPolicy: " +
scrollbarDisplayPolicy);
diff --git a/libjava/java/awt/Window.java b/libjava/java/awt/Window.java
index 7064511b2b6..b8befaf0507 100644
--- a/libjava/java/awt/Window.java
+++ b/libjava/java/awt/Window.java
@@ -158,14 +158,13 @@ public class Window extends Container
*/
public void pack()
{
- if (parent != null
- && !parent.isDisplayable())
+ if (parent != null && !parent.isDisplayable())
parent.addNotify();
if (peer == null)
addNotify();
setSize(getPreferredSize());
-
+
validate();
}
@@ -174,9 +173,12 @@ public class Window extends Container
*/
public void show()
{
+ if (parent != null && !parent.isDisplayable())
+ parent.addNotify();
if (peer == null)
addNotify();
+ validate();
super.show();
toFront();
}
@@ -187,6 +189,13 @@ public class Window extends Container
super.hide();
}
+ public boolean isDisplayable()
+ {
+ if (super.isDisplayable())
+ return true;
+ return peer != null;
+ }
+
/**
* Called to free any resource associated with this window.
*/
@@ -479,5 +488,4 @@ public class Window extends Container
if (peer != null) return peer.getGraphicsConfiguration();
return null;
}
-
}
diff --git a/libjava/java/awt/color/ColorSpace.java b/libjava/java/awt/color/ColorSpace.java
index 989513f0dd7..4f68fabcb7b 100644
--- a/libjava/java/awt/color/ColorSpace.java
+++ b/libjava/java/awt/color/ColorSpace.java
@@ -1,4 +1,5 @@
-/* Copyright (C) 2000, 2002 Free Software Foundation
+/* ColorSpace.java -- transforms between color spaces
+ Copyright (C) 2000, 2002 Free Software Foundation
This file is part of GNU Classpath.
@@ -34,25 +35,36 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
+
package java.awt.color;
+import java.io.Serializable;
+
/**
+ * NEEDS DOCUMENTATION
+ *
* @author Rolf W. Rasmussen <rolfwr@ii.uib.no>
+ * @since 1.2
*/
public abstract class ColorSpace
{
- public static final int TYPE_XYZ = 0;
- public static final int TYPE_Lab = 1;
- public static final int TYPE_Luv = 2;
+ /**
+ * Compatible with JDK 1.2+.
+ */
+ private static final long serialVersionUID = -409452704308689724L;
+
+ public static final int TYPE_XYZ = 0;
+ public static final int TYPE_Lab = 1;
+ public static final int TYPE_Luv = 2;
public static final int TYPE_YCbCr = 3;
- public static final int TYPE_Yxy = 4;
- public static final int TYPE_RGB = 5;
- public static final int TYPE_GRAY = 6;
- public static final int TYPE_HSV = 7;
- public static final int TYPE_HLS = 8;
- public static final int TYPE_CMYK = 9;
+ public static final int TYPE_Yxy = 4;
+ public static final int TYPE_RGB = 5;
+ public static final int TYPE_GRAY = 6;
+ public static final int TYPE_HSV = 7;
+ public static final int TYPE_HLS = 8;
+ public static final int TYPE_CMYK = 9;
// mysterious gap in the enumeration sequenece
- public static final int TYPE_CMY = 11;
+ public static final int TYPE_CMY = 11;
public static final int TYPE_2CLR = 12;
public static final int TYPE_3CLR = 13;
public static final int TYPE_4CLR = 14;
@@ -67,54 +79,64 @@ public abstract class ColorSpace
public static final int TYPE_DCLR = 23;
public static final int TYPE_ECLR = 24;
public static final int TYPE_FCLR = 25;
-
- public static final int CS_sRGB = 1000;
- public static final int CS_CIEXYZ = 1001;
- public static final int CS_PYCC = 1002;
- public static final int CS_GRAY = 1003;
+
+ public static final int CS_sRGB = 1000;
public static final int CS_LINEAR_RGB = 1004;
-
- private static final int CS_BASE = CS_sRGB;
- private static final int CS_END = CS_LINEAR_RGB+1;
+ public static final int CS_CIEXYZ = 1001;
+ public static final int CS_PYCC = 1002;
+ public static final int CS_GRAY = 1003;
+
+ private static final int CS_BASE = CS_sRGB;
+ private static final int CS_END = CS_LINEAR_RGB + 1;
private static final int CS_COUNT = CS_END - CS_BASE;
-
+
// Instances are lazily instantiated
private static final ColorSpace[] INSTANCES = new ColorSpace[CS_COUNT];
- private int type;
- private int numcomponents;
+ /**
+ * @serial
+ */
+ // Visible in subclass.
+ final int type;
+
+ /**
+ * @serial
+ */
+ // Visible in subclass.
+ final int numComponents;
+
protected ColorSpace(int type, int numcomponents)
{
this.type = type;
- this.numcomponents = numcomponents;
+ numComponents = numcomponents;
}
-
+
public static ColorSpace getInstance(int colorspace)
{
if ((colorspace >= CS_BASE) && (colorspace < CS_END))
{
- int instanceIndex = colorspace - CS_BASE;
- if (INSTANCES[instanceIndex] == null)
- {
- ICC_Profile profile = new ICC_Profile(colorspace);
- INSTANCES[instanceIndex] = new ICC_ColorSpace(profile);
- }
- return INSTANCES[instanceIndex];
+ int instanceIndex = colorspace - CS_BASE;
+ if (INSTANCES[instanceIndex] == null)
+ {
+ ICC_Profile profile = new ICC_Profile(colorspace);
+ INSTANCES[instanceIndex] = new ICC_ColorSpace(profile);
+ }
+ return INSTANCES[instanceIndex];
}
throw new IllegalArgumentException("unknown/unsupported colorspace");
}
-
+
public boolean isCS_sRGB()
{
return false;
}
public abstract float[] toRGB(float[] colorvalue);
-
+
public abstract float[] fromRGB(float[] rgbvalue);
-
+
public abstract float[] toCIEXYZ(float[] colorvalue);
-
+
public abstract float[] fromCIEXYZ(float[] colorvalue);
public int getType()
@@ -124,16 +146,31 @@ public abstract class ColorSpace
public int getNumComponents()
{
- return numcomponents;
+ return numComponents;
}
-
+
public String getName(int idx)
{
return "type " + type;
}
-
- public String toString()
+
+ /**
+ * @since 1.4
+ */
+ public float getMinValue(int idx)
+ {
+ if (idx < 0 || idx >= numComponents)
+ throw new IllegalArgumentException();
+ return 0;
+ }
+
+ /**
+ * @since 1.4
+ */
+ public float getMaxValue(int idx)
{
- return getClass().getName() + "[type=" + type + "]";
+ if (idx < 0 || idx >= numComponents)
+ throw new IllegalArgumentException();
+ return 1;
}
-}
+} // class ColorSpace
diff --git a/libjava/java/awt/color/ICC_ColorSpace.java b/libjava/java/awt/color/ICC_ColorSpace.java
index d3fa10f51da..1a144dbfbd2 100644
--- a/libjava/java/awt/color/ICC_ColorSpace.java
+++ b/libjava/java/awt/color/ICC_ColorSpace.java
@@ -1,4 +1,5 @@
-/* Copyright (C) 2000, 2002 Free Software Foundation
+/* ICC_ColorSpace.java -- the canonical color space implementation
+ Copyright (C) 2000, 2002 Free Software Foundation
This file is part of GNU Classpath.
@@ -34,25 +35,61 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
+
package java.awt.color;
/**
+ * NEEDS DOCUMENTATION
+ *
* @author Rolf W. Rasmussen <rolfwr@ii.uib.no>
+ * @since 1.2
*/
public class ICC_ColorSpace extends ColorSpace
{
- private ICC_Profile profile;
+ /**
+ * Compatible with JDK 1.2+.
+ */
+ private static final long serialVersionUID = 3455889114070431483L;
+
+ /**
+ * @serial
+ */
+ private ICC_Profile thisProfile;
+
+ /**
+ * @serial
+ */
+ private float[] minVal;
+
+ /**
+ * @serial
+ */
+ private float[] maxVal;
+
+ /**
+ * @serial
+ */
+ private float[] diffMinMax;
+
+ /**
+ * @serial
+ */
+ private float[] invDiffMinMax;
+
+ /**
+ * @serial
+ */
+ private boolean needScaleInit;
public ICC_ColorSpace(ICC_Profile profile)
{
super(CS_sRGB, profile.getNumComponents());
-
- this.profile = profile;
+ thisProfile = profile;
}
public ICC_Profile getProfile()
{
- return profile;
+ return thisProfile;
}
public float[] toRGB(float[] colorvalue)
@@ -80,26 +117,33 @@ public class ICC_ColorSpace extends ColorSpace
}
/**
- * @param component The index of the color component
- *
- * @exception IllegalArgumentException If <code>component<code> is less
- * then 0 or greater then <code>numComponents - 1</code>
+ * @since 1.4
*/
- public float getMinValue (int component)
+ public float getMinValue(int idx)
{
- // FIXME: Not implemented
- throw new UnsupportedOperationException();
+ if (type == TYPE_Lab && (idx == 1 || idx == 2))
+ return -128;
+ if (idx < 0 || idx >= numComponents)
+ throw new IllegalArgumentException();
+ return 0;
}
/**
- * @param component The index of the color component
- *
- * @exception IllegalArgumentException If <code>component<code> is less
- * then 0 or greater then <code>numComponents - 1</code>
+ * @since 1.4
*/
- public float getMaxValue (int component)
+ public float getMaxValue(int idx)
{
- // FIXME: Not implemented
- throw new UnsupportedOperationException();
+ if (type == TYPE_XYZ && idx >= 0 && idx <= 2)
+ return 1 + 32767 / 32768f;
+ else if (type == TYPE_Lab)
+ {
+ if (idx == 0)
+ return 100;
+ if (idx == 1 || idx == 2)
+ return 127;
+ }
+ if (idx < 0 || idx >= numComponents)
+ throw new IllegalArgumentException();
+ return 1;
}
-}
+} // class ICC_ColorSpace
diff --git a/libjava/java/awt/color/ICC_Profile.java b/libjava/java/awt/color/ICC_Profile.java
index f4ed64f6799..7adaac06472 100644
--- a/libjava/java/awt/color/ICC_Profile.java
+++ b/libjava/java/awt/color/ICC_Profile.java
@@ -1,4 +1,5 @@
-/* Copyright (C) 2000, 2002 Free Software Foundation
+/* ICC_Profile.java -- color space profiling
+ Copyright (C) 2000, 2002 Free Software Foundation
This file is part of GNU Classpath.
@@ -34,46 +35,79 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
+
package java.awt.color;
-// Currently just a stub.
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.ObjectStreamException;
+import java.io.OutputStream;
+import java.io.Serializable;
/**
+ * STUBBED
* @author Rolf W. Rasmussen <rolfwr@ii.uib.no>
+ * @since 1.2
*/
-public class ICC_Profile
+public class ICC_Profile implements Serializable
{
- public static final int CLASS_ABSTRACT = 5;
- public static final int CLASS_COLORSPACECONVERSION = 4;
- public static final int CLASS_DEVICELINK = 3;
- public static final int CLASS_DISPLAY = 1;
+ /**
+ * Compatible with JDK 1.2+.
+ */
+ private static final long serialVersionUID = -3938515861990936766L;
+
public static final int CLASS_INPUT = 0;
- public static final int CLASS_NAMEDCOLOR = 6;
+ public static final int CLASS_DISPLAY = 1;
public static final int CLASS_OUTPUT = 2;
-
- public static final int icAbsoluteColorimetric = 3;
- public static final int icCurveCount = 8;
- public static final int icCurveData = 12;
- public static final int icHdrAttributes = 56;
- public static final int icHdrCmmId = 4;
- public static final int icHdrColorSpace = 16;
- public static final int icHdrCreator = 80;
- public static final int icHdrDate = 24;
- public static final int icHdrDeviceClass = 12;
- public static final int icHdrFlags = 44;
- public static final int icHdrIlluminant = 68;
- public static final int icHdrMagic = 36;
- public static final int icHdrManufacturer = 48;
- public static final int icHdrModel = 52;
- public static final int icHdrPcs = 20;
- public static final int icHdrPlatform = 40;
- public static final int icHdrRenderingIntent = 64;
- public static final int icHdrSize = 0;
- public static final int icHdrVersion = 8;
+ public static final int CLASS_DEVICELINK = 3;
+ public static final int CLASS_COLORSPACECONVERSION = 4;
+ public static final int CLASS_ABSTRACT = 5;
+ public static final int CLASS_NAMEDCOLOR = 6;
+
+ public static final int icSigXYZData = 1482250784;
+ public static final int icSigLabData = 1281450528;
+ public static final int icSigLuvData = 1282766368;
+ public static final int icSigYCbCrData = 1497588338;
+ public static final int icSigYxyData = 1501067552;
+ public static final int icSigRgbData = 1380401696;
+ public static final int icSigGrayData = 1196573017;
+ public static final int icSigHsvData = 1213421088;
+ public static final int icSigHlsData = 1212961568;
+ public static final int icSigCmykData = 1129142603;
+ public static final int icSigCmyData = 1129142560;
+ public static final int icSigSpace2CLR = 843271250;
+ public static final int icSigSpace3CLR = 860048466;
+ public static final int icSigSpace4CLR = 876825682;
+ public static final int icSigSpace5CLR = 893602898;
+ public static final int icSigSpace6CLR = 910380114;
+ public static final int icSigSpace7CLR = 927157330;
+ public static final int icSigSpace8CLR = 943934546;
+ public static final int icSigSpace9CLR = 960711762;
+ public static final int icSigSpaceACLR = 1094929490;
+ public static final int icSigSpaceBCLR = 1111706706;
+ public static final int icSigSpaceCCLR = 1128483922;
+ public static final int icSigSpaceDCLR = 1145261138;
+ public static final int icSigSpaceECLR = 1162038354;
+ public static final int icSigSpaceFCLR = 1178815570;
+
+ public static final int icSigInputClass = 1935896178;
+ public static final int icSigDisplayClass = 1835955314;
+ public static final int icSigOutputClass = 1886549106;
+ public static final int icSigLinkClass = 1818848875;
+ public static final int icSigAbstractClass = 1633842036;
+ public static final int icSigColorSpaceClass = 1936744803;
+ public static final int icSigNamedColorClass = 1852662636;
+
public static final int icPerceptual = 0;
public static final int icRelativeColorimetric = 1;
public static final int icSaturation = 2;
- public static final int icSigAbstractClass = 1633842036;
+ public static final int icAbsoluteColorimetric = 3;
+
+ public static final int icSigHead = 1751474532;
public static final int icSigAToB0Tag = 1093812784;
public static final int icSigAToB1Tag = 1093812785;
public static final int icSigAToB2Tag = 1093812786;
@@ -84,35 +118,20 @@ public class ICC_Profile
public static final int icSigBToA2Tag = 1110589746;
public static final int icSigCalibrationDateTimeTag = 1667329140;
public static final int icSigCharTargetTag = 1952543335;
- public static final int icSigChromaticityTag = 1667789421;
- public static final int icSigCmyData = 1129142560;
- public static final int icSigCmykData = 1129142603;
- public static final int icSigColorSpaceClass = 1936744803;
public static final int icSigCopyrightTag = 1668313716;
public static final int icSigCrdInfoTag = 1668441193;
public static final int icSigDeviceMfgDescTag = 1684893284;
public static final int icSigDeviceModelDescTag = 1684890724;
public static final int icSigDeviceSettingsTag = 1684371059;
- public static final int icSigDisplayClass = 1835955314;
public static final int icSigGamutTag = 1734438260;
- public static final int icSigGrayData = 1196573017;
public static final int icSigGrayTRCTag = 1800688195;
- public static final int icSigGreenColorantTag = 1733;
+ public static final int icSigGreenColorantTag = 1733843290;
public static final int icSigGreenTRCTag = 1733579331;
- public static final int icSigHead = 1751474532;
- public static final int icSigHlsData = 1212961568;
- public static final int icSigHsvData = 1213421088;
- public static final int icSigInputClass = 1935896178;
- public static final int icSigLabData = 1281450528;
- public static final int icSigLinkClass = 1818848875;
public static final int icSigLuminanceTag = 1819635049;
- public static final int icSigLuvData = 1282766368;
public static final int icSigMeasurementTag = 1835360627;
public static final int icSigMediaBlackPointTag = 1651208308;
public static final int icSigMediaWhitePointTag = 2004119668;
public static final int icSigNamedColor2Tag = 1852009522;
- public static final int icSigNamedColorClass = 1852662636;
- public static final int icSigOutputClass = 1886549106;
public static final int icSigOutputResponseTag = 1919251312;
public static final int icSigPreview0Tag = 1886545200;
public static final int icSigPreview1Tag = 1886545201;
@@ -127,44 +146,128 @@ public class ICC_Profile
public static final int icSigPs2RenderingIntentTag = 1886597737;
public static final int icSigRedColorantTag = 1918392666;
public static final int icSigRedTRCTag = 1918128707;
- public static final int icSigRgbData = 1380401696;
public static final int icSigScreeningDescTag = 1935897188;
public static final int icSigScreeningTag = 1935897198;
- public static final int icSigSpace2CLR = 843271250;
- public static final int icSigSpace3CLR = 860048466;
- public static final int icSigSpace4CLR = 876825682;
- public static final int icSigSpace5CLR = 893602898;
- public static final int icSigSpace6CLR = 910380114;
- public static final int icSigSpace7CLR = 927157330;
- public static final int icSigSpace8CLR = 943934546;
- public static final int icSigSpace9CLR = 960711762;
- public static final int icSigSpaceACLR = 1094929490;
- public static final int icSigSpaceBCLR = 1111706706;
- public static final int icSigSpaceCCLR = 1128483922;
- public static final int icSigSpaceDCLR = 1145261138;
- public static final int icSigSpaceECLR = 1162038354;
- public static final int icSigSpaceFCLR = 1178815570;
public static final int icSigTechnologyTag = 1952801640;
public static final int icSigUcrBgTag = 1650877472;
public static final int icSigViewingCondDescTag = 1987405156;
public static final int icSigViewingConditionsTag = 1986618743;
- public static final int icSigXYZData = 1482250784;
- public static final int icSigYCbCrData = 1497588338;
- public static final int icSigYxyData = 1501067552;
- public static final int icTagReserved = 4;
+ public static final int icSigChromaticityTag = 1667789421;
+
+ public static final int icHdrSize = 0;
+ public static final int icHdrCmmId = 4;
+ public static final int icHdrVersion = 8;
+ public static final int icHdrDeviceClass = 12;
+ public static final int icHdrColorSpace = 16;
+ public static final int icHdrPcs = 20;
+ public static final int icHdrDate = 24;
+ public static final int icHdrMagic = 36;
+ public static final int icHdrPlatform = 40;
+ public static final int icHdrFlags = 44;
+ public static final int icHdrManufacturer = 48;
+ public static final int icHdrModel = 52;
+ public static final int icHdrAttributes = 56;
+ public static final int icHdrRenderingIntent = 64;
+ public static final int icHdrIlluminant = 68;
+ public static final int icHdrCreator = 80;
+
public static final int icTagType = 0;
+ public static final int icTagReserved = 4;
+ public static final int icCurveCount = 8;
+ public static final int icCurveData = 12;
+
public static final int icXYZNumberX = 8;
-
- long profileID; // why long?
-
- ICC_Profile(long profileID)
+
+ /**
+ * @serial
+ */
+ final int iccProfileSerializedDataVersion = 1;
+
+ transient int profileID;
+
+ ICC_Profile(int profileID)
{
this.profileID = profileID;
}
+ protected void finalize()
+ {
+ // XXX What resources should we free?
+ }
+
+ public static ICC_Profile getInstance(byte[] data)
+ {
+ throw new Error("not implemented");
+ }
+
+ public static ICC_Profile getInstance(int cspace)
+ {
+ return new ICC_Profile(cspace);
+ }
+
+ public static ICC_Profile getInstance(String filename) throws IOException
+ {
+ return getInstance(new FileInputStream(filename));
+ }
+
+ public static ICC_Profile getInstance(InputStream in) throws IOException
+ {
+ throw new Error("not implemented");
+ }
+
+ public int getMajorVersion()
+ {
+ throw new Error("not implemented");
+ }
+
+ public int getMinorVersion()
+ {
+ throw new Error("not implemented");
+ }
+
+ public int getProfileClass()
+ {
+ throw new Error("not implemented");
+ }
+
+ public int getColorSpaceType()
+ {
+ throw new Error("not implemented");
+ }
+
+ public int getPCSType()
+ {
+ throw new Error("not implemented");
+ }
+
+ public void write(String filename) throws IOException
+ {
+ write(new FileOutputStream(filename));
+ }
+
+ public void write(OutputStream out)
+ {
+ throw new Error("not implemented");
+ }
+
+ public byte[] getData()
+ {
+ throw new Error("not implemented");
+ }
+
+ public byte[] getData(int tagSignature)
+ {
+ throw new Error("not implemented");
+ }
+
+ public void setData(int tagSignature, byte[] data)
+ {
+ throw new Error("not implemented");
+ }
+
public int getNumComponents()
{
- switch ((int) profileID)
+ switch (profileID)
{
case ColorSpace.CS_sRGB:
case ColorSpace.CS_LINEAR_RGB:
@@ -172,9 +275,25 @@ public class ICC_Profile
return 3;
case ColorSpace.CS_GRAY:
return 1;
- case ColorSpace.CS_PYCC: // have no clue about this one
+ case ColorSpace.CS_PYCC: // have no clue about this one
default:
throw new UnsupportedOperationException("profile not implemented");
}
}
-}
+
+ protected Object readResolve() throws ObjectStreamException
+ {
+ throw new Error("not implemented");
+ }
+
+ private void readObject(ObjectInputStream s)
+ throws IOException, ClassNotFoundException
+ {
+ throw new Error("not implemented");
+ }
+
+ private void writeObject(ObjectOutputStream s) throws IOException
+ {
+ throw new Error("not implemented");
+ }
+} // class ICC_Profile
diff --git a/libjava/java/awt/datatransfer/DataFlavor.java b/libjava/java/awt/datatransfer/DataFlavor.java
index 5bce8666601..85f6ae5d455 100644
--- a/libjava/java/awt/datatransfer/DataFlavor.java
+++ b/libjava/java/awt/datatransfer/DataFlavor.java
@@ -56,6 +56,7 @@ import java.io.UnsupportedEncodingException;
*/
public class DataFlavor implements java.io.Externalizable, Cloneable
{
+ static final long serialVersionUID = 8367026044764648243L;
// FIXME: Serialization: Need to write methods for.
diff --git a/libjava/java/awt/dnd/DragSourceContext.java b/libjava/java/awt/dnd/DragSourceContext.java
index 3f3285adeb9..ca26b941b3e 100644
--- a/libjava/java/awt/dnd/DragSourceContext.java
+++ b/libjava/java/awt/dnd/DragSourceContext.java
@@ -50,6 +50,8 @@ import java.util.TooManyListenersException;
public class DragSourceContext
implements DragSourceListener, DragSourceMotionListener, Serializable
{
+ static final long serialVersionUID = -115407898692194719L;
+
protected static final int DEFAULT = 0;
protected static final int ENTER = 1;
protected static final int OVER = 2;
diff --git a/libjava/java/awt/dnd/DropTarget.java b/libjava/java/awt/dnd/DropTarget.java
index 9d8174500c5..c469605b8b4 100644
--- a/libjava/java/awt/dnd/DropTarget.java
+++ b/libjava/java/awt/dnd/DropTarget.java
@@ -44,6 +44,7 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.TooManyListenersException;
+/** STUB CLASS ONLY */
public class DropTarget
{
protected static class DropTargetAutoScroller
diff --git a/libjava/java/awt/dnd/DropTargetContext.java b/libjava/java/awt/dnd/DropTargetContext.java
index 255ab844e8d..86adaade95e 100644
--- a/libjava/java/awt/dnd/DropTargetContext.java
+++ b/libjava/java/awt/dnd/DropTargetContext.java
@@ -48,6 +48,8 @@ import java.util.List;
public class DropTargetContext implements Serializable
{
+ static final long serialVersionUID = -634158968993743371L;
+
protected class TransferableProxy implements Transferable
{
protected boolean isLocal;
diff --git a/libjava/java/awt/event/KeyEvent.java b/libjava/java/awt/event/KeyEvent.java
index 33390e48f42..35cac3f1c66 100644
--- a/libjava/java/awt/event/KeyEvent.java
+++ b/libjava/java/awt/event/KeyEvent.java
@@ -754,18 +754,18 @@ public class KeyEvent extends InputEvent
public static final int VK_EURO_SIGN = 516;
/**
- * The virtual key VK_EXCLAMATION_POINT.
+ * The virtual key VK_EXCLAMATION_MARK.
*
* @since 1.2
*/
- public static final int VK_EXCLAMATION_POINT = 517;
+ public static final int VK_EXCLAMATION_MARK = 517;
/**
- * The virtual key VK_INVERTED_EXCLAMATION_POINT.
+ * The virtual key VK_INVERTED_EXCLAMATION_MARK.
*
* @since 1.2
*/
- public static final int VK_INVERTED_EXCLAMATION_POINT = 518;
+ public static final int VK_INVERTED_EXCLAMATION_MARK = 518;
/**
* The virtual key VK_LEFT_PARENTHESIS.
@@ -1410,9 +1410,9 @@ public class KeyEvent extends InputEvent
return "Dollar";
case VK_EURO_SIGN:
return "Euro";
- case VK_EXCLAMATION_POINT:
+ case VK_EXCLAMATION_MARK:
return "Exclamation Mark";
- case VK_INVERTED_EXCLAMATION_POINT:
+ case VK_INVERTED_EXCLAMATION_MARK:
return "Inverted Exclamation Mark";
case VK_LEFT_PARENTHESIS:
return "Left Parenthesis";
diff --git a/libjava/java/io/Externalizable.java b/libjava/java/io/Externalizable.java
index 4e3b1cabca3..83f1b653ec5 100644
--- a/libjava/java/io/Externalizable.java
+++ b/libjava/java/io/Externalizable.java
@@ -62,6 +62,7 @@ package java.io;
*/
public interface Externalizable extends Serializable
{
+ static final long serialVersionUID = -282491828744381764L;
/**
* This method restores an object's state by reading in the instance data
diff --git a/libjava/java/io/FileInputStream.java b/libjava/java/io/FileInputStream.java
index 6a02d2ba862..d7efc26db87 100644
--- a/libjava/java/io/FileInputStream.java
+++ b/libjava/java/io/FileInputStream.java
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2001 Free Software Foundation
+/* Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation
This file is part of libgcj.
@@ -8,6 +8,8 @@ details. */
package java.io;
+import java.nio.channels.FileChannel;
+
/**
* @author Warren Levy <warrenl@cygnus.com>
* @date October 28, 1998.
@@ -23,6 +25,8 @@ public class FileInputStream extends InputStream
/* Contains the file descriptor for referencing the actual file. */
private FileDescriptor fd;
+ private FileChannel ch;
+
public FileInputStream(String name) throws FileNotFoundException
{
SecurityManager s = System.getSecurityManager();
@@ -92,4 +96,9 @@ public class FileInputStream extends InputStream
long endPos = fd.seek(n, FileDescriptor.CUR, true);
return endPos - startPos;
}
+
+ public FileChannel getChannel ()
+ {
+ return ch;
+ }
}
diff --git a/libjava/java/io/FileOutputStream.java b/libjava/java/io/FileOutputStream.java
index b592299a355..5ea24e5dfcf 100644
--- a/libjava/java/io/FileOutputStream.java
+++ b/libjava/java/io/FileOutputStream.java
@@ -10,6 +10,8 @@ details. */
package java.io;
+import java.nio.channels.FileChannel;
+
/**
* @author Tom Tromey <tromey@cygnus.com>
* @date September 24, 1998
@@ -93,4 +95,9 @@ public class FileOutputStream extends OutputStream
// Instance variables.
private FileDescriptor fd;
+
+ public FileChannel getChannel ()
+ {
+ return null;
+ }
}
diff --git a/libjava/java/io/FilePermission.java b/libjava/java/io/FilePermission.java
index a8cd3d44a4a..0fc06c91473 100644
--- a/libjava/java/io/FilePermission.java
+++ b/libjava/java/io/FilePermission.java
@@ -41,7 +41,10 @@ package java.io;
import java.security.*;
-public final class FilePermission extends Permission implements Serializable {
+public final class FilePermission extends Permission implements Serializable
+{
+ static final long serialVersionUID = 7930732926638008763L;
+
private static final String CURRENT_DIRECTORY = System.getProperty("user.dir");
private boolean usingPerms = false;
private boolean readPerm = false;
diff --git a/libjava/java/io/ObjectStreamConstants.java b/libjava/java/io/ObjectStreamConstants.java
index 111a0f3fa26..980b04de264 100644
--- a/libjava/java/io/ObjectStreamConstants.java
+++ b/libjava/java/io/ObjectStreamConstants.java
@@ -70,7 +70,7 @@ public interface ObjectStreamConstants
final static byte TC_PROXYCLASSDESC = (byte)125; //0x7D
final static byte TC_BASE = TC_NULL;
- final static byte TC_MAX = TC_EXCEPTION;
+ final static byte TC_MAX = TC_PROXYCLASSDESC;
final static int baseWireHandle = 0x7e0000;
diff --git a/libjava/java/io/Serializable.java b/libjava/java/io/Serializable.java
index 2afdff4669b..0d6310ce340 100644
--- a/libjava/java/io/Serializable.java
+++ b/libjava/java/io/Serializable.java
@@ -51,4 +51,5 @@ package java.io;
*/
public interface Serializable
{
+ static final long serialVersionUID = 1196656838076753133L;
} // interface Serializable
diff --git a/libjava/java/io/SerializablePermission.java b/libjava/java/io/SerializablePermission.java
index 12c2d762281..d9dc3dd924a 100644
--- a/libjava/java/io/SerializablePermission.java
+++ b/libjava/java/io/SerializablePermission.java
@@ -61,7 +61,8 @@ import java.security.BasicPermission;
*/
public final class SerializablePermission extends BasicPermission
{
-
+ static final long serialVersionUID = 8537212141160296410L;
+
/*
* Class Variables
*/
diff --git a/libjava/java/io/natFileDescriptorPosix.cc b/libjava/java/io/natFileDescriptorPosix.cc
index 9929c3021f7..80e6bad97ae 100644
--- a/libjava/java/io/natFileDescriptorPosix.cc
+++ b/libjava/java/io/natFileDescriptorPosix.cc
@@ -293,6 +293,11 @@ java::io::FileDescriptor::read (jbyteArray buffer, jint offset, jint count)
jsize bsize = JvGetArrayLength (buffer);
if (offset < 0 || count < 0 || offset + count > bsize)
throw new java::lang::ArrayIndexOutOfBoundsException;
+
+ // Must return 0 if an attempt is made to read 0 bytes.
+ if (count == 0)
+ return 0;
+
jbyte *bytes = elements (buffer) + offset;
int r = ::read (fd, bytes, count);
if (r == 0)
diff --git a/libjava/java/io/natFileDescriptorWin32.cc b/libjava/java/io/natFileDescriptorWin32.cc
index e004057ef91..4b157f7042c 100644
--- a/libjava/java/io/natFileDescriptorWin32.cc
+++ b/libjava/java/io/natFileDescriptorWin32.cc
@@ -305,6 +305,10 @@ java::io::FileDescriptor::read(jbyteArray buffer, jint offset, jint count)
if (offset < 0 || count < 0 || offset + count > bsize)
throw new java::lang::ArrayIndexOutOfBoundsException;
+ // Must return 0 if an attempt is made to read 0 bytes.
+ if (count == 0)
+ return 0;
+
jbyte *bytes = elements (buffer) + offset;
DWORD read;
diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc
index 9e861111563..fb412f224b9 100644
--- a/libjava/java/lang/natClass.cc
+++ b/libjava/java/lang/natClass.cc
@@ -751,7 +751,7 @@ java::lang::Class::initializeClass (void)
if (state == JV_STATE_ERROR)
{
_Jv_MonitorExit (this);
- throw new java::lang::NoClassDefFoundError;
+ throw new java::lang::NoClassDefFoundError (getName());
}
// Step 6.
@@ -1043,7 +1043,12 @@ _Jv_CheckArrayStore (jobject arr, jobject obj)
jclass obj_class = JV_CLASS (obj);
if (__builtin_expect
(! _Jv_IsAssignableFrom (elt_class, obj_class), false))
- throw new java::lang::ArrayStoreException;
+ throw new java::lang::ArrayStoreException
+ ((new java::lang::StringBuffer
+ (JvNewStringUTF("Cannot store ")))->append
+ (obj_class->getName())->append
+ (JvNewStringUTF(" in array of type "))->append
+ (elt_class->getName())->toString());
}
}
diff --git a/libjava/java/lang/natRuntime.cc b/libjava/java/lang/natRuntime.cc
index 0dcf5786d2f..6737dbcbbfa 100644
--- a/libjava/java/lang/natRuntime.cc
+++ b/libjava/java/lang/natRuntime.cc
@@ -380,7 +380,8 @@ java::lang::Runtime::insertSystemProperties (java::util::Properties *newprops)
// nothing else when installing gcj. Plus, people are free to
// redefine `java.home' with `-D' if necessary.
SET ("java.home", PREFIX);
-
+ SET ("gnu.classpath.home", PREFIX);
+
SET ("file.encoding", default_file_encoding);
#ifdef HAVE_UNAME
diff --git a/libjava/java/lang/natVMThrowable.cc b/libjava/java/lang/natVMThrowable.cc
index ce897c23e0b..c1b030d4288 100644
--- a/libjava/java/lang/natVMThrowable.cc
+++ b/libjava/java/lang/natVMThrowable.cc
@@ -44,7 +44,7 @@ details. */
arbitrary. It may be better to configure this. */
java::lang::VMThrowable *
-java::lang::VMThrowable::fillInStackTrace (java::lang::Throwable* t)
+java::lang::VMThrowable::fillInStackTrace (java::lang::Throwable*)
{
if (! trace_enabled)
return NULL;
diff --git a/libjava/java/lang/ref/Reference.java b/libjava/java/lang/ref/Reference.java
index b0fad39d91f..b02a4ed5775 100644
--- a/libjava/java/lang/ref/Reference.java
+++ b/libjava/java/lang/ref/Reference.java
@@ -1,5 +1,5 @@
/* java.lang.ref.Reference
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -185,7 +185,7 @@ public abstract class Reference
*/
public boolean enqueue()
{
- if (queue != null)
+ if (queue != null && nextOnQueue == null)
{
queue.enqueue(this);
queue = null;
diff --git a/libjava/java/lang/ref/natReference.cc b/libjava/java/lang/ref/natReference.cc
index 5743349caaf..64262f900cb 100644
--- a/libjava/java/lang/ref/natReference.cc
+++ b/libjava/java/lang/ref/natReference.cc
@@ -1,6 +1,6 @@
// natReference.cc - Native code for References
-/* Copyright (C) 2001 Free Software Foundation
+/* Copyright (C) 2001, 2002 Free Software Foundation
This file is part of libgcj.
@@ -165,7 +165,8 @@ add_to_hash (java::lang::ref::Reference *the_reference)
if (3 * hash_count >= 2 * hash_size)
rehash ();
- jobject referent = the_reference->referent;
+ // Use `copy' here because the `referent' field has been cleared.
+ jobject referent = the_reference->copy;
object_list *item = find_slot (referent);
if (item->reference == NULL)
{
@@ -197,7 +198,7 @@ add_to_hash (java::lang::ref::Reference *the_reference)
link = &iter->next;
iter = *link;
}
- n->next = (*link) ? (*link)->next : NULL;
+ n->next = *link;
*link = n;
}
@@ -249,13 +250,7 @@ finalize_referred_to_object (jobject obj)
// If the copy is already NULL then the user must have
// called Reference.clear().
if (ref->copy != NULL)
- {
- if (w == PHANTOM)
- ref->referent = ref->copy;
- else
- ref->copy = NULL;
- ref->enqueue ();
- }
+ ref->enqueue ();
object_list *next = head->next;
_Jv_Free (head);
diff --git a/libjava/java/net/HttpURLConnection.java b/libjava/java/net/HttpURLConnection.java
index ac48246bb1c..e914b190203 100644
--- a/libjava/java/net/HttpURLConnection.java
+++ b/libjava/java/net/HttpURLConnection.java
@@ -1,99 +1,351 @@
// HttpURLConnection.java - Subclass of communications links using
// Hypertext Transfer Protocol.
-/* Copyright (C) 1999, 2000 Free Software Foundation
-
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
+/* Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
package java.net;
import java.io.*;
import java.security.Permission;
-/**
- * @author Warren Levy <warrenl@cygnus.com>
- * @since 1.1
- * @date March 29, 1999.
- */
-
-/**
+/*
* Written using on-line Java Platform 1.2 API Specification, as well
* as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
* Status: Believed complete and correct.
*/
+/**
+ * This class provides a common abstract implementation for those
+ * URL connection classes that will connect using the HTTP protocol.
+ * In addition to the functionality provided by the URLConnection
+ * class, it defines constants for HTTP return code values and
+ * methods for setting the HTTP request method and determining whether
+ * or not to follow redirects.
+ *
+ * @since 1.1
+ *
+ * @author Warren Levy (warrenl@cygnus.com)
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ */
public abstract class HttpURLConnection extends URLConnection
{
/* HTTP Success Response Codes */
+
+ /**
+ * Indicates that the client may continue with its request. This value
+ * is specified as part of RFC 2068 but was not included in Sun's JDK, so
+ * beware of using this value
+ */
+ static final int HTTP_CONTINUE = 100;
+
+ /**
+ * Indicates the request succeeded.
+ */
public static final int HTTP_OK = 200;
+
+ /**
+ * The requested resource has been created.
+ */
public static final int HTTP_CREATED = 201;
+
+ /**
+ * The request has been accepted for processing but has not completed.
+ * There is no guarantee that the requested action will actually ever
+ * be completed succesfully, but everything is ok so far.
+ */
public static final int HTTP_ACCEPTED = 202;
+
+ /**
+ * The meta-information returned in the header is not the actual data
+ * from the original server, but may be from a local or other copy.
+ * Normally this still indicates a successful completion.
+ */
public static final int HTTP_NOT_AUTHORITATIVE = 203;
+
+ /**
+ * The server performed the request, but there is no data to send
+ * back. This indicates that the user's display should not be changed.
+ */
public static final int HTTP_NO_CONTENT = 204;
+
+ /**
+ * The server performed the request, but there is no data to sent back,
+ * however, the user's display should be "reset" to clear out any form
+ * fields entered.
+ */
public static final int HTTP_RESET = 205;
+
+ /**
+ * The server completed the partial GET request for the resource.
+ */
public static final int HTTP_PARTIAL = 206;
+
/* HTTP Redirection Response Codes */
- public static final int HTTP_MULT_CHOICE = 300;
- public static final int HTTP_MOVED_PERM = 301;
- public static final int HTTP_MOVED_TEMP = 302;
- public static final int HTTP_SEE_OTHER = 303;
- public static final int HTTP_NOT_MODIFIED = 304;
- public static final int HTTP_USE_PROXY = 305;
+ /**
+ * There is a list of choices available for the requested resource.
+ */
+ public static final int HTTP_MULT_CHOICE = 300;
+
+ /**
+ * The resource has been permanently moved to a new location.
+ */
+ public static final int HTTP_MOVED_PERM = 301;
+
+ /**
+ * The resource requested has been temporarily moved to a new location.
+ */
+ public static final int HTTP_MOVED_TEMP = 302;
+
+ /**
+ * The response to the request issued is available at another location.
+ */
+ public static final int HTTP_SEE_OTHER = 303;
+
+ /**
+ * The document has not been modified since the criteria specified in
+ * a conditional GET.
+ */
+ public static final int HTTP_NOT_MODIFIED = 304;
+
+
/* HTTP Client Error Response Codes */
- public static final int HTTP_BAD_REQUEST = 400;
- public static final int HTTP_UNAUTHORIZED = 401;
- public static final int HTTP_PAYMENT_REQUIRED = 402;
- public static final int HTTP_FORBIDDEN = 403;
- public static final int HTTP_NOT_FOUND = 404;
- public static final int HTTP_BAD_METHOD = 405;
- public static final int HTTP_NOT_ACCEPTABLE = 406;
- public static final int HTTP_PROXY_AUTH = 407;
- public static final int HTTP_CLIENT_TIMEOUT = 408;
- public static final int HTTP_CONFLICT = 409;
- public static final int HTTP_GONE = 410;
- public static final int HTTP_LENGTH_REQUIRED = 411;
- public static final int HTTP_PRECON_FAILED = 412;
- public static final int HTTP_ENTITY_TOO_LARGE = 413;
- public static final int HTTP_REQ_TOO_LONG = 414;
- public static final int HTTP_UNSUPPORTED_TYPE = 415;
+
+ /**
+ * The request was misformed or could not be understood.
+ */
+ public static final int HTTP_BAD_REQUEST = 400;
+
+ /**
+ * The request made requires user authorization. Try again with
+ * a correct authentication header.
+ */
+ public static final int HTTP_UNAUTHORIZED = 401;
+
+ /**
+ * Code reserved for future use - I hope way in the future.
+ */
+ public static final int HTTP_PAYMENT_REQUIRED = 402;
+
+ /**
+ * There is no permission to access the requested resource.
+ */
+ public static final int HTTP_FORBIDDEN = 403;
+
+ /**
+ * The requested resource was not found.
+ */
+ public static final int HTTP_NOT_FOUND = 404;
+
+ /**
+ * The specified request method is not allowed for this resource.
+ */
+ public static final int HTTP_BAD_METHOD = 405;
+
+ /**
+ * Based on the input headers sent, the resource returned in response
+ * to the request would not be acceptable to the client.
+ */
+ public static final int HTTP_NOT_ACCEPTABLE = 406;
+
+ /**
+ * The client must authenticate with a proxy prior to attempting this
+ * request.
+ */
+ public static final int HTTP_PROXY_AUTH = 407;
+
+ /**
+ * The request timed out.
+ */
+ public static final int HTTP_CLIENT_TIMEOUT = 408;
+
+ /**
+ * There is a conflict between the current state of the resource and the
+ * requested action.
+ */
+ public static final int HTTP_CONFLICT = 409;
+
+ /**
+ * The requested resource is no longer available. This ususally indicates
+ * a permanent condition.
+ */
+ public static final int HTTP_GONE = 410;
+
+ /**
+ * A Content-Length header is required for this request, but was not
+ * supplied.
+ */
+ public static final int HTTP_LENGTH_REQUIRED = 411;
+
+ /**
+ * A client specified pre-condition was not met on the server.
+ */
+ public static final int HTTP_PRECON_FAILED = 412;
+
+ /**
+ * The request sent was too large for the server to handle.
+ */
+ public static final int HTTP_ENTITY_TOO_LARGE = 413;
+
+ /**
+ * The name of the resource specified was too long.
+ */
+ public static final int HTTP_REQ_TOO_LONG = 414;
+
+ /**
+ * The request is in a format not supported by the requested resource.
+ */
+ public static final int HTTP_UNSUPPORTED_TYPE = 415;
+
/* HTTP Server Error Response Codes */
- public static final int HTTP_SERVER_ERROR = 500;
- public static final int HTTP_INTERNAL_ERROR = 500;
- public static final int HTTP_NOT_IMPLEMENTED = 501;
- public static final int HTTP_BAD_GATEWAY = 502;
- public static final int HTTP_UNAVAILABLE = 503;
- public static final int HTTP_GATEWAY_TIMEOUT = 504;
- public static final int HTTP_VERSION = 505;
- static boolean followRedirects = true;
+ /**
+ * This error code indicates that some sort of server error occurred.
+ */
+ public static final int HTTP_SERVER_ERROR = 500;
+
+ /**
+ * The server encountered an unexpected error (such as a CGI script crash)
+ * that prevents the request from being fulfilled.
+ */
+ public static final int HTTP_INTERNAL_ERROR = 500;
+
+ /**
+ * The server does not support the requested functionality.
+ * @since 1.3
+ */
+ static final int HTTP_NOT_IMPLEMENTED = 501;
+
+ /**
+ * The proxy encountered a bad response from the server it was proxy-ing for
+ */
+ public static final int HTTP_BAD_GATEWAY = 502;
+
+ /**
+ * The HTTP service is not availalble, such as because it is overloaded
+ * and does not want additional requests.
+ */
+ public static final int HTTP_UNAVAILABLE = 503;
+
+ /**
+ * The proxy timed out getting a reply from the remote server it was
+ * proxy-ing for.
+ */
+ public static final int HTTP_GATEWAY_TIMEOUT = 504;
+
+ /**
+ * This server does not support the protocol version requested.
+ */
+ public static final int HTTP_VERSION = 505;
+
+ // Non-HTTP response static variables
+
+ /**
+ * Flag to indicate whether or not redirects should be automatically
+ * followed by default.
+ */
+ private static boolean followRedirects = true;
+
+ /**
+ * This is a list of valid request methods, separated by "|" characters.
+ */
+ private static String valid_methods
+ = "|GET|POST|HEAD|OPTIONS|PUT|DELETE|TRACE|";
+ // Instance Variables
+
+ /**
+ * The requested method in use for this connection. Default is GET.
+ */
protected String method = "GET";
+
+ /**
+ * The response code received from the server
+ */
protected int responseCode = -1;
- protected String responseMessage;
+
+ /**
+ * The response message string received from the server.
+ */
+ protected String responseMessage = null;
+
+ /**
+ * If this instance should follow redirect requests.
+ */
protected boolean instanceFollowRedirects = followRedirects;
+ /**
+ * Whether we alreadt got a valid response code for this connection.
+ * Used by <code>getResponceCode()</code> and
+ * <code>getResponseMessage()</code>.
+ */
private boolean gotResponseVals = false;
+ /**
+ * Create an HttpURLConnection for the specified URL
+ *
+ * @param url The URL to create this connection for.
+ */
protected HttpURLConnection(URL url)
{
super(url);
}
-
+
+ /**
+ * Closes the connection to the server.
+ */
public abstract void disconnect();
+ /**
+ * Returns a boolean indicating whether or not this connection is going
+ * through a proxy
+ *
+ * @return true if through a proxy, false otherwise
+ */
public abstract boolean usingProxy();
/**
* Sets whether HTTP redirects (requests with response code 3xx) should be
* automatically followed by this class. True by default
*
+ * @param set true if redirects should be followed, false otherwis.
+ *
* @exception SecurityException If a security manager exists and its
* checkSetFactory method doesn't allow the operation
*/
@@ -108,6 +360,12 @@ public abstract class HttpURLConnection extends URLConnection
followRedirects = set;
}
+ /**
+ * Returns a boolean indicating whether or not HTTP redirects will
+ * automatically be followed or not.
+ *
+ * @return true if redirects will be followed, false otherwise
+ */
public static boolean getFollowRedirects()
{
return followRedirects;
@@ -142,22 +400,31 @@ public abstract class HttpURLConnection extends URLConnection
if (connected)
throw new ProtocolException("Already connected");
- if (method.equals("GET") || method.equals("POST") ||
- method.equals("HEAD") || method.equals("OPTIONS") ||
- method.equals("PUT") || method.equals("DELETE") ||
- method.equals("TRACE"))
+ method = method.toUpperCase();
+ if (valid_methods.indexOf("|" + method + "|") != -1)
this.method = method;
else
- throw new ProtocolException("Invalid HTTP request method");
+ throw new ProtocolException("Invalid HTTP request method: " + method);
+
}
+ /**
+ * The request method currently in use for this connection.
+ *
+ * @return The request method
+ */
public String getRequestMethod()
{
return method;
}
/**
- * Gets the status code from an HTTP response message
+ * Gets the status code from an HTTP response message, or -1 if
+ * the response code could not be determined.
+ * Note that all valid response codes have class variables
+ * defined for them in this class.
+ *
+ * @return The response code
*
* @exception IOException If an error occurs
*/
@@ -170,7 +437,10 @@ public abstract class HttpURLConnection extends URLConnection
/**
* Gets the HTTP response message, if any, returned along with the
- * response code from a server
+ * response code from a server. Null if no response message was set
+ * or an error occured while connecting.
+ *
+ * @return The response message
*
* @exception IOException If an error occurs
*/
@@ -225,17 +495,62 @@ public abstract class HttpURLConnection extends URLConnection
*/
public Permission getPermission() throws IOException
{
- return new SocketPermission (url.getHost (), "connect");
+ URL url = getURL();
+ String host = url.getHost();
+ int port = url.getPort();
+ if (port == -1)
+ port = 80;
+
+ host = host + ":" + port;
+
+ return new SocketPermission(host, "connect");
}
/**
- * Returns the error stream if the connection failed but the server sent
- * useful data nonetheless
+ * This method allows the caller to retrieve any data that might have
+ * been sent despite the fact that an error occurred. For example, the
+ * HTML page sent along with a 404 File Not Found error. If the socket
+ * is not connected, or if no error occurred or no data was returned,
+ * this method returns <code>null</code>.
+ *
+ * @return An <code>InputStream</code> for reading error data.
*/
public InputStream getErrorStream ()
{
- // FIXME: implement this
- return null;
+ if (!connected)
+ return(null);
+
+ int code;
+ try
+ {
+ code = getResponseCode();
+ }
+ catch(IOException e)
+ {
+ code = -1;
+ }
+
+ if (code == -1)
+ return(null);
+
+ if (((code/100) != 4) || ((code/100) != 5))
+ return(null);
+
+ try
+ {
+ PushbackInputStream pbis = new PushbackInputStream(getInputStream());
+
+ int i = pbis.read();
+ if (i == -1)
+ return(null);
+
+ pbis.unread(i);
+ return(pbis);
+ }
+ catch(IOException e)
+ {
+ return(null);
+ }
}
/**
diff --git a/libjava/java/net/PlainSocketImpl.java b/libjava/java/net/PlainSocketImpl.java
index 2b65ba08002..788795d4c6a 100644
--- a/libjava/java/net/PlainSocketImpl.java
+++ b/libjava/java/net/PlainSocketImpl.java
@@ -9,8 +9,10 @@ Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
package java.net;
-import java.io.*;
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.OutputStream;
/**
* The standard GCJ socket implementation.
diff --git a/libjava/java/net/ServerSocket.java b/libjava/java/net/ServerSocket.java
index b7c69913a05..62917b6a8a5 100644
--- a/libjava/java/net/ServerSocket.java
+++ b/libjava/java/net/ServerSocket.java
@@ -60,16 +60,11 @@ import java.nio.channels.ServerSocketChannel;
*/
public class ServerSocket
{
-
- // Class Variables
-
/**
* This is the user defined SocketImplFactory, if one is supplied
*/
private static SocketImplFactory factory;
- // Instance Variables
-
/**
* This is the SocketImp object to which most instance methods in this
* class are redirected
@@ -95,6 +90,8 @@ public class ServerSocket
impl = factory.createSocketImpl();
else
impl = new PlainSocketImpl();
+
+ impl.create(true);
}
/**
@@ -154,6 +151,7 @@ public class ServerSocket
throws IOException
{
this();
+
if (impl == null)
throw new IOException("Cannot initialize Socket implementation");
@@ -184,19 +182,7 @@ public class ServerSocket
public void bind (SocketAddress endpoint)
throws IOException
{
- if (impl == null)
- throw new IOException ("Cannot initialize Socket implementation");
-
- if (! (endpoint instanceof InetSocketAddress))
- throw new IllegalArgumentException ("Address type not supported");
-
- InetSocketAddress tmp = (InetSocketAddress) endpoint;
-
- SecurityManager s = System.getSecurityManager ();
- if (s != null)
- s.checkListen (tmp.getPort ());
-
- impl.bind (tmp.getAddress (), tmp.getPort ());
+ bind (endpoint, 50);
}
/**
diff --git a/libjava/java/net/SocketAddress.java b/libjava/java/net/SocketAddress.java
index af20fba7bfa..370049d6fdc 100644
--- a/libjava/java/net/SocketAddress.java
+++ b/libjava/java/net/SocketAddress.java
@@ -37,20 +37,23 @@ exception statement from your version. */
package java.net;
-import java.io.*;
+import java.io.Serializable;
/**
* Abstract base class for InetSocketAddress.
* InetSocketAddress is to my knowledge the only derived
* class. [Ronald]
+ *
+ * @since 1.4
*/
-
public abstract class SocketAddress implements Serializable
{
static final long serialVersionUID = 5215720748342549866L;
+ /**
+ * Initializes the socket address.
+ */
public SocketAddress()
{
}
}
-
diff --git a/libjava/java/net/URL.java b/libjava/java/net/URL.java
index 00dad2c7871..98e7d5f7c31 100644
--- a/libjava/java/net/URL.java
+++ b/libjava/java/net/URL.java
@@ -1,56 +1,180 @@
-// URL.java - A Uniform Resource Locator.
+/* URL.java -- Uniform Resource Locator Class
+ Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
-/* Copyright (C) 1999, 2000, 2002 Free Software Foundation
-
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package java.net;
-import java.io.*;
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.Serializable;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
import java.util.Hashtable;
import java.util.StringTokenizer;
-/**
- * @author Warren Levy <warrenl@cygnus.com>
- * @date March 4, 1999.
- */
-/**
+/*
* Written using on-line Java Platform 1.2 API Specification, as well
* as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
* Status: Believed complete and correct.
*/
+/**
+ * This final class represents an Internet Uniform Resource Locator (URL).
+ * For details on the syntax of URL's and what they can be used for,
+ * refer to RFC 1738, available from <a
+ * href="http://ds.internic.net/rfcs/rfc1738.txt">http://ds.internic.net/rfcs/rfc1738.txt</a>
+ * <p>
+ * There are a great many protocols supported by URL's such as "http",
+ * "ftp", and "file". This object can handle any arbitrary URL for which
+ * a URLStreamHandler object can be written. Default protocol handlers
+ * are provided for the "http" and "ftp" protocols. Additional protocols
+ * handler implementations may be provided in the future. In any case,
+ * an application or applet can install its own protocol handlers that
+ * can be "chained" with other protocol hanlders in the system to extend
+ * the base functionality provided with this class. (Note, however, that
+ * unsigned applets cannot access properties by default or install their
+ * own protocol handlers).
+ * <p>
+ * This chaining is done via the system property java.protocol.handler.pkgs
+ * If this property is set, it is assumed to be a "|" separated list of
+ * package names in which to attempt locating protocol handlers. The
+ * protocol handler is searched for by appending the string
+ * ".<protocol>.Handler" to each packed in the list until a hander is found.
+ * If a protocol handler is not found in this list of packages, or if the
+ * property does not exist, then the default protocol handler of
+ * "gnu.java.net.<protocol>.Handler" is tried. If this is
+ * unsuccessful, a MalformedURLException is thrown.
+ * <p>
+ * All of the constructor methods of URL attempt to load a protocol
+ * handler and so any needed protocol handlers must be installed when
+ * the URL is constructed.
+ * <p>
+ * Here is an example of how URL searches for protocol handlers. Assume
+ * the value of java.protocol.handler.pkgs is "com.foo|com.bar" and the
+ * URL is "news://comp.lang.java.programmer". URL would looking the
+ * following places for protocol handlers:
+ * <p><pre>
+ * com.foo.news.Handler
+ * com.bar.news.Handler
+ * gnu.java.net.news.Handler
+ * </pre><p>
+ * If the protocol handler is not found in any of those locations, a
+ * MalformedURLException would be thrown.
+ * <p>
+ * Please note that a protocol handler must be a subclass of
+ * URLStreamHandler.
+ *
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ * @author Warren Levy <warrenl@cygnus.com>
+ *
+ * @see URLStreamHandler
+ */
public final class URL implements Serializable
{
+ /**
+ * The name of the protocol for this URL.
+ * The protocol is always stored in lower case.
+ */
private String protocol;
+
+ /**
+ * The "authority" portion of the URL.
+ */
private String authority;
- private String userInfo;
+
+ /**
+ * The hostname or IP address of this protocol.
+ * This includes a possible user. For example <code>joe@some.host.net</code>.
+ */
private String host;
+
+ /**
+ * The port number of this protocol or -1 if the port number used is
+ * the default for this protocol.
+ */
private int port = -1; // Initialize for constructor using context.
+
+ /**
+ * The "file" portion of the URL. It is defined as <code>path[?query]</code>.
+ */
private String file;
- private String query;
+
+ /**
+ * The anchor portion of the URL.
+ */
private String ref;
+
+ /**
+ * This is the hashCode for this URL
+ */
private int hashCode = 0;
+
+ /**
+ * The protocol handler in use for this URL
+ */
transient private URLStreamHandler handler;
+
+ /**
+ * This a table where we cache protocol handlers to avoid the overhead
+ * of looking them up each time.
+ */
private static Hashtable handlers = new Hashtable();
+
+ /**
+ * If an application installs its own protocol handler factory, this is
+ * where we keep track of it.
+ */
private static URLStreamHandlerFactory factory;
private static final long serialVersionUID = -7627629688361524110L;
/**
- * Creates an URL object from the given arguments
- *
- * @param protocol The protocol of the URL
- * @param host The host of the URL
- * @param port The port of the URL
- * @param file The file of the URL
+ * Constructs a URL and loads a protocol handler for the values passed as
+ * arguments.
+ *
+ * @param protocol The protocol for this URL ("http", "ftp", etc)
+ * @param host The hostname or IP address to connect to
+ * @param port The port number to use, or -1 to use the protocol's
+ * default port
+ * @param file The "file" portion of the URL.
*
- * @exception MalformedURLException If an error occurs
+ * @exception MalformedURLException If a protocol handler cannot be loaded or
+ * a parse error occurs.
*/
public URL(String protocol, String host, int port, String file)
throws MalformedURLException
@@ -59,13 +183,15 @@ public final class URL implements Serializable
}
/**
- * Creates an URL object from the given arguments
+ * Constructs a URL and loads a protocol handler for the values passed in
+ * as arugments. Uses the default port for the protocol.
*
- * @param protocol The protocol of the URL
- * @param host The host of the URL
- * @param file The file of the URL
+ * @param protocol The protocol for this URL ("http", "ftp", etc)
+ * @param host The hostname or IP address for this URL
+ * @param file The "file" portion of this URL.
*
- * @exception MalformedURLException If an error occurs
+ * @exception MalformedURLException If a protocol handler cannot be loaded or
+ * a parse error occurs.
*/
public URL(String protocol, String host, String file)
throws MalformedURLException
@@ -73,19 +199,26 @@ public final class URL implements Serializable
this(protocol, host, -1, file, null);
}
+
/**
- * Creates an URL object from the given arguments
+ * This method initializes a new instance of <code>URL</code> with the
+ * specified protocol, host, port, and file. Additionally, this method
+ * allows the caller to specify a protocol handler to use instead of
+ * the default. If this handler is specified, the caller must have
+ * the "specifyStreamHandler" permission (see <code>NetPermission</code>)
+ * or a <code>SecurityException</code> will be thrown.
*
- * @param protocol The protocol of the URL
- * @param host The host of the URL
- * @param port The port of the URL
- * @param file The file of the URL
- * @param handler The stream handler for the URL
+ * @param protocol The protocol for this URL ("http", "ftp", etc)
+ * @param host The hostname or IP address to connect to
+ * @param port The port number to use, or -1 to use the protocol's default
+ * port
+ * @param file The "file" portion of the URL.
+ * @param handler The protocol handler to use with this URL.
*
- * @exception MalformedURLException If an error occurs
- * @exception SecurityException If a security manager exists and its
- * checkPermission method doesn't allow specifying a stream handler
- * explicitly
+ * @exception MalformedURLException If no protocol handler can be loaded
+ * for the specified protocol.
+ * @exception SecurityException If the <code>SecurityManager</code> exists
+ * and does not allow the caller to specify its own protocol handler.
*
* @since 1.2
*/
@@ -94,18 +227,18 @@ public final class URL implements Serializable
{
if (protocol == null)
throw new MalformedURLException("null protocol");
- this.protocol = protocol;
+ this.protocol = protocol.toLowerCase();
if (handler != null)
{
- SecurityManager s = System.getSecurityManager ();
+ SecurityManager s = System.getSecurityManager();
if (s != null)
s.checkPermission (new NetPermission ("specifyStreamHandler"));
this.handler = handler;
}
else
- this.handler = setURLStreamHandler(protocol);
+ this.handler = getURLStreamHandler(protocol);
if (this.handler == null)
throw new MalformedURLException (
@@ -113,9 +246,7 @@ public final class URL implements Serializable
this.host = host;
this.port = port;
- this.userInfo = null;
this.authority = null;
- this.query = null;
int hashAt = file.indexOf('#');
if (hashAt < 0)
@@ -132,24 +263,37 @@ public final class URL implements Serializable
}
/**
- * Creates an URL object from the given arguments
- *
- * @param spec The string to parse an URL
+ * Initializes a URL from a complete string specification such as
+ * "http://www.urbanophile.com/arenn/". First the protocol name is parsed
+ * out of the string. Then a handler is located for that protocol and
+ * the parseURL() method of that protocol handler is used to parse the
+ * remaining fields.
*
- * @exception MalformedURLException If an error occurs
+ * @param spec The complete String representation of a URL
+ *
+ * @exception MalformedURLException If a protocol handler cannot be found
+ * or the URL cannot be parsed
*/
public URL(String spec) throws MalformedURLException
{
this((URL) null, spec, (URLStreamHandler) null);
}
- /**
- * Creates an URL object from the given arguments
- *
+ /*
+ * This method parses a String representation of a URL within the
+ * context of an existing URL. Principally this means that any
+ * fields not present the URL are inheritied from the context URL.
+ * This allows relative URL's to be easily constructed. If the
+ * context argument is null, then a complete URL must be specified
+ * in the URL string. If the protocol parsed out of the URL is
+ * different from the context URL's protocol, then then URL String
+ * is also expected to be a complete URL.
+ *
* @param context The context on which to parse the specification
* @param spec The string to parse an URL
*
- * @exception MalformedURLException If an error occurs
+ * @exception MalformedURLException If a protocol handler cannot be found
+ * for the URL cannot be parsed
*/
public URL(URL context, String spec) throws MalformedURLException
{
@@ -158,16 +302,30 @@ public final class URL implements Serializable
/**
* Creates an URL from given arguments
+ * This method parses a String representation of a URL within the
+ * context of an existing URL. Principally this means that any fields
+ * not present the URL are inheritied from the context URL. This allows
+ * relative URL's to be easily constructed. If the context argument is
+ * null, then a complete URL must be specified in the URL string.
+ * If the protocol parsed out of the URL is different
+ * from the context URL's protocol, then then URL String is also
+ * expected to be a complete URL.
+ * <p>
+ * Additionally, this method allows the caller to specify a protocol handler
+ * to use instead of the default. If this handler is specified, the caller
+ * must have the "specifyStreamHandler" permission
+ * (see <code>NetPermission</code>) or a <code>SecurityException</code>
+ * will be thrown.
*
* @param context The context in which to parse the specification
* @param spec The string to parse as an URL
* @param handler The stream handler for the URL
*
- * @exception MalformedURLException If an error occurs
- * @exception SecurityException If a security manager exists and its
- * checkPermission method doesn't allow specifying a stream handler
- * explicitly
- *
+ * @exception MalformedURLException If a protocol handler cannot be found
+ * or the URL cannot be parsed
+ * @exception SecurityException If the <code>SecurityManager</code> exists
+ * and does not allow the caller to specify its own protocol handler.
+ *
* @since 1.2
*/
public URL(URL context, String spec, URLStreamHandler handler)
@@ -198,16 +356,14 @@ public final class URL implements Serializable
(colon < (slash = spec.indexOf('/')) || slash < 0))
{
// Protocol specified in spec string.
- protocol = spec.substring(0, colon);
+ protocol = spec.substring(0, colon).toLowerCase();
if (context != null && context.protocol.equals(protocol))
{
// The 1.2 doc specifically says these are copied to the new URL.
host = context.host;
port = context.port;
file = context.file;
- userInfo = context.userInfo;
authority = context.authority;
- query = context.query;
}
}
else if (context != null)
@@ -219,9 +375,7 @@ public final class URL implements Serializable
host = context.host;
port = context.port;
file = context.file;
- userInfo = context.userInfo;
authority = context.authority;
- query = context.query;
}
else // Protocol NOT specified in spec. and no context available.
throw new
@@ -236,7 +390,7 @@ public final class URL implements Serializable
this.handler = handler;
}
else
- this.handler = setURLStreamHandler(protocol);
+ this.handler = getURLStreamHandler(protocol);
if (this.handler == null)
throw new MalformedURLException("Protocol handler not found: "
@@ -255,7 +409,14 @@ public final class URL implements Serializable
}
/**
- * Checks if two URLs are equal
+ * Test another URL for equality with this one. This will be true only if
+ * the argument is non-null and all of the fields in the URL's match
+ * exactly (ie, protocol, host, port, file, and ref). Overrides
+ * Object.equals(), implemented by calling the equals method of the handler.
+ *
+ * @param url The URL to compare with
+ *
+ * @return true if the URL is equal, false otherwise
*/
public boolean equals(Object obj)
{
@@ -268,9 +429,12 @@ public final class URL implements Serializable
}
/**
- * Gets the contents of this URL
+ * Returns the contents of this URL as an object by first opening a
+ * connection, then calling the getContent() method against the connection
*
- * @exception IOException If an error occurs
+ * @return A content object for this URL
+ * @exception IOException If opening the connection or getting the
+ * content fails.
*
* @since 1.3
*/
@@ -291,15 +455,18 @@ public final class URL implements Serializable
}
/**
- * Returns the file of the URL
+ * Returns the file portion of the URL.
+ * Defined as <code>path[?query]</code>.
+ * Returns the empty string if there is no file portion.
*/
public String getFile()
{
- return file;
+ return file == null ? "" : file;
}
/**
- * Returns the path of the URL
+ * Returns the path of the URL. This is the part of the file before any '?'
+ * character.
*
* @since 1.3
*/
@@ -324,11 +491,17 @@ public final class URL implements Serializable
*/
public String getHost()
{
- return host;
+ int at = (host == null) ? -1 : host.indexOf('@');
+ return at < 0 ? host : host.substring(at + 1, host.length());
}
/**
- * Returns of port of the URL
+ * Returns the port number of this URL or -1 if the default port number is
+ * being used.
+ *
+ * @return The port number
+ *
+ * @see #getDefaultPort()
*/
public int getPort()
{
@@ -336,11 +509,12 @@ public final class URL implements Serializable
}
/**
- * Returns the default port of the URL
+ * Returns the default port of the URL. If the StreamHandler for the URL
+ * protocol does not define a default port it returns -1.
*/
public int getDefaultPort()
{
- return 0;
+ return handler.getDefaultPort();
}
/**
@@ -351,13 +525,22 @@ public final class URL implements Serializable
return protocol;
}
+ /**
+ * Returns the ref (sometimes called the "# reference" or "anchor") portion
+ * of the URL.
+ *
+ * @return The ref
+ */
public String getRef()
{
return ref;
}
/**
- * Returns the user information of the URL
+ * Returns the user information of the URL. This is the part of the host
+ * name before the '@'.
+ *
+ * @return the user at a particular host or null when no user defined.
*/
public String getUserInfo ()
{
@@ -366,11 +549,15 @@ public final class URL implements Serializable
}
/**
- * Returns the query of the URL
+ * Returns the query of the URL. This is the part of the file before the
+ * '?'.
+ *
+ * @ return the query part of the file, or null when there is no query part.
*/
public String getQuery ()
{
- return query;
+ int quest = file.indexOf('?');
+ return quest < 0 ? null : file.substring(quest + 1, file.length());
}
/**
@@ -378,20 +565,6 @@ public final class URL implements Serializable
*/
public int hashCode()
{
- // JCL book says this is computed using (only) the hashcodes of the
- // protocol, host and file fields. Empirical evidence indicates this
- // is probably XOR in JDK 1.1. In JDK 1.2 it seems to be a sum including
- // the port.
- //
- // JDK 1.2 online doc infers that host could be null because it
- // explicitly states that file cannot be null but is silent on host.
- // A simple example with protocol "http" (hashcode 3213448), host null,
- // file "/" (hashcode 47) produced a hashcode (3213494) which appeared
- // to be the sum of the two hashcodes plus the port. Another example
- // using "/index.html" for file bore this out; as well as "#" for file
- // (which was reduced to "" with a hashcode of zero). A "" host also
- // causes the port number and the two hashcodes to be summed.
-
if (hashCode != 0)
return hashCode; // Use cached value if available.
else
@@ -400,8 +573,10 @@ public final class URL implements Serializable
/**
* Returns a URLConnection object that represents a connection to the remote
- * object referred to by the URL
+ * object referred to by the URL. The URLConnection is created by calling the
+ * openConnection() method of the protocol handler
*
+ * @return A URLConnection for this URL
* @exception IOException If an error occurs
*/
public URLConnection openConnection() throws IOException
@@ -420,6 +595,16 @@ public final class URL implements Serializable
return openConnection().getInputStream();
}
+ /**
+ * Tests whether or not another URL refers to the same "file" as this one.
+ * This will be true if and only if the passed object is not null, is a
+ * URL, and matches all fields but the ref (ie, protocol, host, port,
+ * and file);
+ *
+ * @param url The URL object to test with
+ *
+ * @return true if URL matches this URL's file, false otherwise
+ */
public boolean sameFile(URL other)
{
return handler.sameFile(this, other);
@@ -427,8 +612,15 @@ public final class URL implements Serializable
/**
* Sets the specified fields of the URL. This is not a public method so
- * that only URLStreamHandlers can modify URL fields. URLs are otherwise
- * constant
+ * that only URLStreamHandlers can modify URL fields. This might be called
+ * by the <code>parseURL()</code> method in that class. URLs are otherwise
+ * constant.
+ *
+ * @param protocol The protocol name for this URL
+ * @param host The hostname or IP address for this URL
+ * @param port The port number of this URL
+ * @param file The "file" portion of this URL.
+ * @param ref The anchor portion of this URL.
*/
protected void set(String protocol, String host, int port, String file,
String ref)
@@ -437,14 +629,12 @@ public final class URL implements Serializable
// invalid protocol. It will cause the handler to be set to null
// thus overriding a valid handler. Callers of this method should
// be aware of this.
- this.handler = setURLStreamHandler(protocol);
- this.protocol = protocol;
+ this.handler = getURLStreamHandler(protocol);
+ this.protocol = protocol.toLowerCase();
this.authority = null;
- this.userInfo = null;
this.port = port;
this.host = host;
this.file = file;
- this.query = null;
this.ref = ref;
hashCode = hashCode(); // Used for serialization.
}
@@ -452,7 +642,7 @@ public final class URL implements Serializable
/**
* Sets the specified fields of the URL. This is not a public method so
* that only URLStreamHandlers can modify URL fields. URLs are otherwise
- * constant
+ * constant.
*
* @since 1.3
*/
@@ -464,8 +654,8 @@ public final class URL implements Serializable
// invalid protocol. It will cause the handler to be set to null
// thus overriding a valid handler. Callers of this method should
// be aware of this.
- this.handler = setURLStreamHandler(protocol);
- this.protocol = protocol;
+ this.handler = getURLStreamHandler(protocol);
+ this.protocol = protocol.toLowerCase();
if (userInfo == null)
this.host = host;
else
@@ -480,9 +670,13 @@ public final class URL implements Serializable
}
/**
- * Sets an application's URLStreamHandlerFactory
+ * Sets the URLStreamHandlerFactory for this class. This factory is
+ * responsible for returning the appropriate protocol handler for
+ * a given URL.
+ *
+ * @param fac The URLStreamHandlerFactory class to use
*
- * @exception Error If the application has already set a factory
+ * @exception Error If the factory is alread set.
* @exception SecurityException If a security manager exists and its
* checkSetFactory method doesn't allow the operation
*/
@@ -500,19 +694,33 @@ public final class URL implements Serializable
factory = fac;
}
+ /**
+ * Returns a String representing this URL. The String returned is
+ * created by calling the protocol handler's toExternalForm() method.
+ *
+ * @return A string for this URL
+ */
public String toExternalForm()
{
// Identical to toString().
return handler.toExternalForm(this);
}
+ /**
+ * Returns a String representing this URL. Identical to toExternalForm().
+ * The value returned is created by the protocol handler's
+ * toExternalForm method. Overrides Object.toString()
+ *
+ * @return A string for this URL
+ */
public String toString()
{
// Identical to toExternalForm().
return handler.toExternalForm(this);
}
- private URLStreamHandler setURLStreamHandler(String protocol)
+ private static synchronized URLStreamHandler
+ getURLStreamHandler(String protocol)
{
URLStreamHandler handler;
@@ -532,7 +740,7 @@ public final class URL implements Serializable
// This is an interesting case. It's tempting to think that we
// could call Class.forName ("gnu.gcj.protocol.file.Handler") to
// get the appropriate class. Unfortunately, if we do that the
- // program will never terminate, because setURLStreamHandler is
+ // program will never terminate, because getURLStreamHandler is
// eventually called by Class.forName.
//
// Treating "file" as a special case is the minimum that will
@@ -587,7 +795,7 @@ public final class URL implements Serializable
throws IOException, ClassNotFoundException
{
ois.defaultReadObject();
- this.handler = setURLStreamHandler(protocol);
+ this.handler = getURLStreamHandler(protocol);
if (this.handler == null)
throw new IOException("Handler for protocol " + protocol + " not found");
}
diff --git a/libjava/java/net/URLStreamHandler.java b/libjava/java/net/URLStreamHandler.java
index a30f1570f89..128a0d2d3da 100644
--- a/libjava/java/net/URLStreamHandler.java
+++ b/libjava/java/net/URLStreamHandler.java
@@ -1,28 +1,78 @@
-// URLStreamHandler.java - Superclass of all stream protocol handlers.
+/* URLStreamHandler.java -- Abstract superclass for all protocol handlers
+ Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
-/* Copyright (C) 1999, 2002 Free Software Foundation
-
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package java.net;
import java.io.IOException;
-/**
- * @author Warren Levy <warrenl@cygnus.com>
- * @date March 4, 1999.
- */
-
-/**
+/*
* Written using on-line Java Platform 1.2 API Specification, as well
* as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
* Status: Believed complete and correct.
*/
+/**
+ * This class is the superclass of all URL protocol handlers. The URL
+ * class loads the appropriate protocol handler to establish a connection
+ * to a (possibly) remote service (eg, "http", "ftp") and to do protocol
+ * specific parsing of URL's. Refer to the URL class documentation for
+ * details on how that class locates and loads protocol handlers.
+ * <p>
+ * A protocol handler implementation should override the openConnection()
+ * method, and optionally override the parseURL() and toExternalForm()
+ * methods if necessary. (The default implementations will parse/write all
+ * URL's in the same form as http URL's). A protocol specific subclass
+ * of URLConnection will most likely need to be created as well.
+ * <p>
+ * Note that the instance methods in this class are called as if they
+ * were static methods. That is, a URL object to act on is passed with
+ * every call rather than the caller assuming the URL is stored in an
+ * instance variable of the "this" object.
+ * <p>
+ * The methods in this class are protected and accessible only to subclasses.
+ * URLStreamConnection objects are intended for use by the URL class only,
+ * not by other classes (unless those classes are implementing protocols).
+ *
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ * @author Warren Levy (warrenl@cygnus.com)
+ *
+ * @see URL
+ */
public abstract class URLStreamHandler
{
/**
@@ -33,8 +83,15 @@ public abstract class URLStreamHandler
}
/**
- * Opens a connection to the object referenced by the URL argument.
- * This method should be overridden by a subclass.
+ * Returns a URLConnection for the passed in URL. Note that this should
+ * not actually create the connection to the (possibly) remote host, but
+ * rather simply return a URLConnection object. The connect() method of
+ * URL connection is used to establish the actual connection, possibly
+ * after the caller sets up various connection options.
+ *
+ * @param url The URL to get a connection object for
+ *
+ * @return A URLConnection object for the given URL
*
* @exception IOException If an error occurs
*/
@@ -42,28 +99,33 @@ public abstract class URLStreamHandler
throws IOException;
/**
- * Pasrses the given URL
+ * This method parses the string passed in as a URL and set's the
+ * instance data fields in the URL object passed in to the various values
+ * parsed out of the string. The start parameter is the position to start
+ * scanning the string. This is usually the position after the ":" which
+ * terminates the protocol name. The end parameter is the position to
+ * stop scanning. This will be either the end of the String, or the
+ * position of the "#" character, which separates the "file" portion of
+ * the URL from the "anchor" portion.
+ * <p>
+ * This method assumes URL's are formatted like http protocol URL's, so
+ * subclasses that implement protocols with URL's the follow a different
+ * syntax should override this method. The lone exception is that if
+ * the protocol name set in the URL is "file", this method will accept
+ * a an empty hostname (i.e., "file:///"), which is legal for that protocol
*
- * @param u The URL to parse
- * @param spec The specification to use
- * @param start The character index at which to begin parsing. This is just
- * past the ':' (if there is one) that specifies the determination of the
- * protocol name
- * @param limit The character position to stop parsing at. This is the end
- * of the string or the position of the "#" character, if present. All
- * information after the sharp sign indicates an anchor
+ * @param url The URL object in which to store the results
+ * @param spec The String-ized URL to parse
+ * @param start The position in the string to start scanning from
+ * @param end The position in the string to stop scanning
*/
- protected void parseURL(URL u, String spec, int start, int limit)
+ protected void parseURL(URL url, String spec, int start, int end)
{
- String host = u.getHost();
- int port = u.getPort();
- String file = u.getFile();
+ String host = url.getHost();
+ int port = url.getPort();
+ String file = url.getFile();
+ String ref = url.getRef();
- /* TBD: The JDK 1.2 doc specifically says that limit is the position
- * to stop parsing at and that it will be either the end of the string
- * or the position of '#'; thus the doc infers that this method does
- * not set the ref.
- */
if (spec.regionMatches (start, "//", 0, 2))
{
int hostEnd;
@@ -74,7 +136,7 @@ public abstract class URLStreamHandler
if (slash >= 0)
hostEnd = slash;
else
- hostEnd = limit;
+ hostEnd = end;
host = spec.substring (start, hostEnd);
@@ -103,28 +165,46 @@ public abstract class URLStreamHandler
else if (host == null)
host = "";
- if (start < limit && spec.charAt(start) == '/')
- {
- // This is an absolute path name; ignore any file context.
- file = spec.substring(start, limit);
- }
- else if (file == null || file.length() <= 0)
+ if (file == null || file.length() == 0
+ || (start < end && spec.charAt(start) == '/'))
{
// No file context available; just spec for file.
- file = spec.substring(start, limit);
- }
- else if (start < limit)
+ // Or this is an absolute path name; ignore any file context.
+ file = spec.substring(start, end);
+ ref = null;
+ }
+ else if (start < end)
{
// Context is available, but only override it if there is a new file.
file = file.substring(0, file.lastIndexOf('/'))
- + '/' + spec.substring(start, limit);
+ + '/' + spec.substring(start, end);
+ ref = null;
}
- u.set(u.getProtocol(), host, port, file, u.getRef());
+ if (ref == null)
+ {
+ // Normally there should be no '#' in the file part,
+ // but we are nice.
+ int hash = file.indexOf('#');
+ if (hash != -1)
+ {
+ ref = file.substring(hash + 1, file.length());
+ file = file.substring(0, hash);
+ }
+ }
+
+ // XXX - Classpath used to call PlatformHelper.toCanonicalForm() on
+ // the file part. It seems like overhead, but supposedly there is some
+ // benefit in windows based systems (it also lowercased the string).
+
+ setURL(url, url.getProtocol(), host, port, file, ref);
}
private static String canonicalizeFilename(String file)
{
+ // XXX - GNU Classpath has an implementation that might be more appropriate
+ // for Windows based systems (gnu.java.io.PlatformHelper.toCanonicalForm)
+
int index;
// Replace "/./" with "/". This probably isn't very efficient in
@@ -179,7 +259,8 @@ public abstract class URLStreamHandler
}
/**
- * Sets the fields of the URL argument to the indicated values
+ * This methods sets the instance variables representing the various fields
+ * of the URL to the values passed in.
*
* @param u The URL to modify
* @param protocol The protocol to set
@@ -317,38 +398,53 @@ public abstract class URLStreamHandler
}
/**
- * Converts an URL of a specific protocol to a string
+ * This method converts a URL object into a String. This method creates
+ * Strings in the mold of http URL's, so protocol handlers which use URL's
+ * that have a different syntax should override this method
*
- * @param u The URL to convert
+ * @param url The URL object to convert
*/
protected String toExternalForm(URL u)
{
- String resStr, host, file, ref;
+ String protocol, host, file, ref;
int port;
- resStr = u.getProtocol() + ":";
+ protocol = u.getProtocol();
+
+ // JDK 1.2 online doc infers that host could be null because it
+ // explicitly states that file cannot be null, but is silent on host.
host = u.getHost();
+ if (host == null)
+ host = "";
+
port = u.getPort();
file = u.getFile();
ref = u.getRef();
- // JDK 1.2 online doc infers that host could be null because it
- // explicitly states that file cannot be null, but is silent on host.
- //
+ // Guess a reasonable size for the string buffer so we have to resize
+ // at most once.
+ int size = protocol.length() + host.length() + file.length() + 24;
+ StringBuffer sb = new StringBuffer(size);
+
+ sb.append(protocol);
+ sb.append(':');
+
+ if (host.length() != 0)
+ sb.append("//").append(host);
+
// Note that this produces different results from JDK 1.2 as JDK 1.2
// ignores a non-default port if host is null or "". That is inconsistent
// with the spec since the result of this method is spec'ed so it can be
// used to construct a new URL that is equivalent to the original.
- if (host == null)
- host = "";
- if (port >= 0 || ! (host.length() == 0))
- resStr = resStr + "//" + host + (port < 0 ? "" : ":" + port);
+ boolean port_needed = port >= 0 && port != getDefaultPort();
+ if (port_needed)
+ sb.append(':').append(port);
- resStr = resStr + file;
+ sb.append(file);
if (ref != null)
- resStr = resStr + "#" + ref;
+ sb.append('#').append(ref);
- return resStr;
+ return sb.toString();
}
}
diff --git a/libjava/java/net/natNetworkInterface.cc b/libjava/java/net/natNetworkInterface.cc
index f2019409e81..65bcf16a2c5 100644
--- a/libjava/java/net/natNetworkInterface.cc
+++ b/libjava/java/net/natNetworkInterface.cc
@@ -9,6 +9,7 @@ Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
#include <config.h>
+#include <platform.h>
#ifdef WIN32
@@ -27,9 +28,6 @@ details. */
#include <sys/param.h>
#include <sys/types.h>
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
@@ -83,7 +81,7 @@ java::net::NetworkInterface::getRealNetworkInterfaces ()
if_data.ifc_buf = NULL;
// Open a (random) socket to have a file descriptor for the ioctl calls.
- fd = ::socket (PF_INET, SOCK_DGRAM, htons (IPPROTO_IP));
+ fd = _Jv_socket (PF_INET, SOCK_DGRAM, htons (IPPROTO_IP));
if (fd < 0)
throw new ::java::net::SocketException;
@@ -96,7 +94,7 @@ java::net::NetworkInterface::getRealNetworkInterfaces ()
if_data.ifc_len = sizeof (struct ifreq) * num_interfaces;
if_data.ifc_buf =
- (char*) _Jv_Realloc (if_data.ifc_buf, if_data.ifc_len);
+ (char*) _Jv_Realloc (if_data.ifc_buf, if_data.ifc_len);
// Try to get all local interfaces.
if (::ioctl (fd, SIOCGIFCONF, &if_data) < 0)
@@ -106,6 +104,7 @@ java::net::NetworkInterface::getRealNetworkInterfaces ()
// Get addresses of all interfaces.
if_record = if_data.ifc_req;
+
for (int n = 0; n < if_data.ifc_len; n += sizeof (struct ifreq))
{
struct ifreq ifr;
@@ -115,7 +114,7 @@ java::net::NetworkInterface::getRealNetworkInterfaces ()
// Try to get the IPv4-address of the local interface
if (::ioctl (fd, SIOCGIFADDR, &ifr) < 0)
- throw new java::net::SocketException;
+ throw new java::net::SocketException;
int len = 4;
struct sockaddr_in sa = *((sockaddr_in*) &(ifr.ifr_addr));
@@ -136,7 +135,7 @@ java::net::NetworkInterface::getRealNetworkInterfaces ()
_Jv_Free (if_data.ifc_buf);
if (fd >= 0)
- ::close (fd);
+ _Jv_close (fd);
return ht;
#endif /* WIN32 */
diff --git a/libjava/java/net/natPlainDatagramSocketImpl.cc b/libjava/java/net/natPlainDatagramSocketImpl.cc
index 60b25d22bfa..cbc029a18da 100644
--- a/libjava/java/net/natPlainDatagramSocketImpl.cc
+++ b/libjava/java/net/natPlainDatagramSocketImpl.cc
@@ -7,23 +7,15 @@ Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
#include <config.h>
-
#include <platform.h>
#ifdef WIN32
+
#include <errno.h>
#include <string.h>
-#ifndef ENOPROTOOPT
-#define ENOPROTOOPT 109
-#endif
-
-#define NATIVE_CLOSE(s) closesocket (s)
#else /* WIN32 */
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
@@ -33,8 +25,6 @@ details. */
#include <errno.h>
#include <string.h>
-#define NATIVE_CLOSE(s) ::close (s)
-
#endif /* WIN32 */
#if HAVE_BSTRING_H
@@ -42,20 +32,6 @@ details. */
#include <bstring.h>
#endif
-#ifndef DISABLE_JAVA_NET
-// Avoid macro definitions of bind from system headers, e.g. on
-// Solaris 7 with _XOPEN_SOURCE. FIXME
-static inline int
-_Jv_bind (int fd, struct sockaddr *addr, int addrlen)
-{
- return ::bind (fd, addr, addrlen);
-}
-#endif /* DISABLE_JAVA_NET */
-
-#ifdef bind
-#undef bind
-#endif
-
#include <gcj/cni.h>
#include <java/io/IOException.h>
#include <java/io/InterruptedIOException.h>
@@ -212,7 +188,8 @@ union InAddr
void
java::net::PlainDatagramSocketImpl::create ()
{
- int sock = ::socket (AF_INET, SOCK_DGRAM, 0);
+ int sock = _Jv_socket (AF_INET, SOCK_DGRAM, 0);
+
if (sock < 0)
{
char* strerr = strerror (errno);
@@ -240,10 +217,12 @@ java::net::PlainDatagramSocketImpl::bind (jint lport,
if (len == 4)
{
u.address.sin_family = AF_INET;
+
if (host != NULL)
- memcpy (&u.address.sin_addr, bytes, len);
+ memcpy (&u.address.sin_addr, bytes, len);
else
- u.address.sin_addr.s_addr = htonl (INADDR_ANY);
+ u.address.sin_addr.s_addr = htonl (INADDR_ANY);
+
len = sizeof (struct sockaddr_in);
u.address.sin_port = htons (lport);
}
@@ -262,19 +241,23 @@ java::net::PlainDatagramSocketImpl::bind (jint lport,
if (_Jv_bind (fnum, ptr, len) == 0)
{
socklen_t addrlen = sizeof(u);
+
if (lport != 0)
localPort = lport;
else if (::getsockname (fnum, (sockaddr*) &u, &addrlen) == 0)
localPort = ntohs (u.address.sin_port);
else
goto error;
+
/* Allow broadcast by default. */
int broadcast = 1;
if (::setsockopt (fnum, SOL_SOCKET, SO_BROADCAST, (char *) &broadcast,
sizeof (broadcast)) != 0)
goto error;
+
return;
}
+
error:
char* strerr = strerror (errno);
throw new java::net::BindException (JvNewStringUTF (strerr));
@@ -329,8 +312,10 @@ java::net::PlainDatagramSocketImpl::peek (java::net::InetAddress *i)
return rport;
error:
char* strerr = strerror (errno);
+
if (errno == ECONNREFUSED)
throw new PortUnreachableException (JvNewStringUTF (strerr));
+
throw new java::io::IOException (JvNewStringUTF (strerr));
}
@@ -356,9 +341,9 @@ java::net::PlainDatagramSocketImpl::peekData(java::net::DatagramPacket *p)
tv.tv_usec = (timeout % 1000) * 1000;
int retval;
if ((retval = _Jv_select (fnum + 1, &rset, NULL, NULL, &tv)) < 0)
- goto error;
+ goto error;
else if (retval == 0)
- throw new java::io::InterruptedIOException ();
+ throw new java::io::InterruptedIOException ();
}
#endif /* WIN32 */
@@ -391,10 +376,13 @@ java::net::PlainDatagramSocketImpl::peekData(java::net::DatagramPacket *p)
p->setPort (rport);
p->setLength ((jint) retlen);
return rport;
+
error:
char* strerr = strerror (errno);
+
if (errno == ECONNREFUSED)
throw new PortUnreachableException (JvNewStringUTF (strerr));
+
throw new java::io::IOException (JvNewStringUTF (strerr));
}
@@ -407,7 +395,7 @@ java::net::PlainDatagramSocketImpl::close ()
// The method isn't declared to throw anything, so we disregard
// the return value.
- NATIVE_CLOSE (fnum);
+ _Jv_close (fnum);
fnum = -1;
timeout = 0;
}
@@ -446,8 +434,10 @@ java::net::PlainDatagramSocketImpl::send (java::net::DatagramPacket *p)
return;
char* strerr = strerror (errno);
+
if (errno == ECONNREFUSED)
throw new PortUnreachableException (JvNewStringUTF (strerr));
+
throw new java::io::IOException (JvNewStringUTF (strerr));
}
@@ -473,9 +463,9 @@ java::net::PlainDatagramSocketImpl::receive (java::net::DatagramPacket *p)
tv.tv_usec = (timeout % 1000) * 1000;
int retval;
if ((retval = _Jv_select (fnum + 1, &rset, NULL, NULL, &tv)) < 0)
- goto error;
+ goto error;
else if (retval == 0)
- throw new java::io::InterruptedIOException ();
+ throw new java::io::InterruptedIOException ();
}
#endif /* WIN32 */
@@ -508,10 +498,13 @@ java::net::PlainDatagramSocketImpl::receive (java::net::DatagramPacket *p)
p->setPort (rport);
p->setLength ((jint) retlen);
return;
+
error:
char* strerr = strerror (errno);
+
if (errno == ECONNREFUSED)
throw new PortUnreachableException (JvNewStringUTF (strerr));
+
throw new java::io::IOException (JvNewStringUTF (strerr));
}
@@ -521,6 +514,7 @@ java::net::PlainDatagramSocketImpl::setTimeToLive (jint ttl)
// Assumes IPPROTO_IP rather than IPPROTO_IPV6 since socket created is IPv4.
char val = (char) ttl;
socklen_t val_len = sizeof(val);
+
if (::setsockopt (fnum, IPPROTO_IP, IP_MULTICAST_TTL, &val, val_len) == 0)
return;
@@ -534,6 +528,7 @@ java::net::PlainDatagramSocketImpl::getTimeToLive ()
// Assumes IPPROTO_IP rather than IPPROTO_IPV6 since socket created is IPv4.
char val;
socklen_t val_len = sizeof(val);
+
if (::getsockopt (fnum, IPPROTO_IP, IP_MULTICAST_TTL, &val, &val_len) == 0)
return ((int) val) & 0xFF;
diff --git a/libjava/java/net/natPlainSocketImpl.cc b/libjava/java/net/natPlainSocketImpl.cc
index a1e967eb8b3..9cd0f3b9dff 100644
--- a/libjava/java/net/natPlainSocketImpl.cc
+++ b/libjava/java/net/natPlainSocketImpl.cc
@@ -10,7 +10,9 @@ details. */
#include <platform.h>
#ifndef DISABLE_JAVA_NET
+
#ifdef WIN32
+
#include <windows.h>
#include <winsock.h>
#include <errno.h>
@@ -20,8 +22,6 @@ details. */
#undef MIN_PRIORITY
#undef FIONREAD
-#define NATIVE_CLOSE(s) closesocket (s)
-
// These functions make the Win32 socket API look more POSIXy
static inline int
write(int s, void *buf, int len)
@@ -36,11 +36,6 @@ read(int s, void *buf, int len)
}
// these errors cannot occur on Win32
-#define ENOTCONN 0
-#define ECONNRESET 0
-#ifndef ENOPROTOOPT
-#define ENOPROTOOPT 109
-#endif
#else /* WIN32 */
#ifdef HAVE_SYS_IOCTL_H
@@ -53,14 +48,11 @@ read(int s, void *buf, int len)
#include <sys/filio.h>
#endif
-#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <errno.h>
#include <string.h>
-#define NATIVE_CLOSE(s) ::close (s)
-
#endif /* WIN32 */
#endif /* DISABLE_JAVA_NET */
@@ -73,43 +65,6 @@ read(int s, void *buf, int len)
typedef int socklen_t;
#endif
-#ifndef DISABLE_JAVA_NET
-
-// Avoid macro definitions of bind, connect from system headers, e.g. on
-// Solaris 7 with _XOPEN_SOURCE. FIXME
-static inline int
-_Jv_bind (int fd, struct sockaddr *addr, int addrlen)
-{
- return ::bind (fd, addr, addrlen);
-}
-
-#ifdef bind
-#undef bind
-#endif
-
-static inline int
-_Jv_connect (int fd, struct sockaddr *addr, int addrlen)
-{
- return ::connect (fd, addr, addrlen);
-}
-
-#ifdef connect
-#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
-
-#endif /* DISABLE_JAVA_NET */
-
#include <gcj/cni.h>
#include <gcj/javaprims.h>
#include <java/io/IOException.h>
@@ -258,7 +213,8 @@ union SockAddr
void
java::net::PlainSocketImpl::create (jboolean stream)
{
- int sock = ::socket (AF_INET, stream ? SOCK_STREAM : SOCK_DGRAM, 0);
+ int sock = _Jv_socket (AF_INET, stream ? SOCK_STREAM : SOCK_DGRAM, 0);
+
if (sock < 0)
{
char* strerr = strerror (errno);
@@ -285,10 +241,12 @@ java::net::PlainSocketImpl::bind (java::net::InetAddress *host, jint lport)
if (len == 4)
{
u.address.sin_family = AF_INET;
+
if (host != NULL)
memcpy (&u.address.sin_addr, bytes, len);
else
- u.address.sin_addr.s_addr = htonl (INADDR_ANY);
+ u.address.sin_addr.s_addr = htonl (INADDR_ANY);
+
len = sizeof (struct sockaddr_in);
u.address.sin_port = htons (lport);
}
@@ -311,14 +269,17 @@ java::net::PlainSocketImpl::bind (java::net::InetAddress *host, jint lport)
{
address = host;
socklen_t addrlen = sizeof(u);
+
if (lport != 0)
localport = lport;
else if (::getsockname (fnum, (sockaddr*) &u, &addrlen) == 0)
localport = ntohs (u.address.sin_port);
else
goto error;
+
return;
}
+
error:
char* strerr = strerror (errno);
throw new java::net::BindException (JvNewStringUTF (strerr));
@@ -326,7 +287,7 @@ java::net::PlainSocketImpl::bind (java::net::InetAddress *host, jint lport)
void
java::net::PlainSocketImpl::connect (java::net::SocketAddress *addr,
- jint timeout)
+ jint timeout)
{
java::net::InetSocketAddress *tmp = (java::net::InetSocketAddress*) addr;
java::net::InetAddress *host = tmp->getAddress();
@@ -376,10 +337,10 @@ java::net::PlainSocketImpl::connect (java::net::SocketAddress *addr,
int retval;
if ((retval = _Jv_select (fnum + 1, &rset, NULL, NULL, &tv)) < 0)
- goto error;
+ goto error;
else if (retval == 0)
- throw new java::net::SocketTimeoutException (
- JvNewStringUTF("Connect timed out"));
+ throw new java::net::SocketTimeoutException
+ (JvNewStringUTF ("Connect timed out"));
}
else
#endif
@@ -390,15 +351,18 @@ java::net::PlainSocketImpl::connect (java::net::SocketAddress *addr,
address = host;
port = rport;
+
// A bind may not have been done on this socket; if so, set localport now.
if (localport == 0)
{
if (::getsockname (fnum, (sockaddr*) &u, &addrlen) == 0)
- localport = ntohs (u.address.sin_port);
+ localport = ntohs (u.address.sin_port);
else
- goto error;
+ goto error;
}
+
return;
+
error:
char* strerr = strerror (errno);
throw new java::net::ConnectException (JvNewStringUTF (strerr));
@@ -434,14 +398,15 @@ java::net::PlainSocketImpl::accept (java::net::PlainSocketImpl *s)
tv.tv_usec = (timeout % 1000) * 1000;
int retval;
if ((retval = _Jv_select (fnum + 1, &rset, NULL, NULL, &tv)) < 0)
- goto error;
+ goto error;
else if (retval == 0)
- throw new java::io::InterruptedIOException (
- JvNewStringUTF("Accept timed out"));
+ throw new java::io::InterruptedIOException (
+ JvNewStringUTF("Accept timed out"));
}
#endif /* WIN32 */
new_socket = _Jv_accept (fnum, (sockaddr*) &u, &addrlen);
+
if (new_socket < 0)
goto error;
@@ -471,6 +436,7 @@ java::net::PlainSocketImpl::accept (java::net::PlainSocketImpl *s)
s->address = new InetAddress (raddr, NULL);
s->port = rport;
return;
+
error:
char* strerr = strerror (errno);
throw new java::io::IOException (JvNewStringUTF (strerr));
@@ -484,14 +450,14 @@ java::net::PlainSocketImpl::close()
JvSynchronize sync (this);
// should we use shutdown here? how would that effect so_linger?
- int res = NATIVE_CLOSE (fnum);
+ int res = _Jv_close (fnum);
if (res == -1)
{
// These three errors are not errors according to tests performed
// on the reference implementation.
if (errno != ENOTCONN && errno != ECONNRESET && errno != EBADF)
- throw new java::io::IOException (JvNewStringUTF (strerror (errno)));
+ throw new java::io::IOException (JvNewStringUTF (strerror (errno)));
}
// Safe place to reset the file pointer.
fnum = -1;
@@ -507,22 +473,22 @@ java::net::PlainSocketImpl::write(jint b)
while (r != 1)
{
- r = ::write (fnum, &d, 1);
+ r = _Jv_write (fnum, &d, 1);
if (r == -1)
- {
- if (java::lang::Thread::interrupted())
- {
- java::io::InterruptedIOException *iioe
- = new java::io::InterruptedIOException
- (JvNewStringLatin1 (strerror (errno)));
- iioe->bytesTransferred = 0;
- throw iioe;
- }
- // Some errors should not cause exceptions.
- if (errno != ENOTCONN && errno != ECONNRESET && errno != EBADF)
- throw new java::io::IOException (JvNewStringUTF (strerror (errno)));
- break;
- }
+ {
+ if (java::lang::Thread::interrupted())
+ {
+ java::io::InterruptedIOException *iioe
+ = new java::io::InterruptedIOException
+ (JvNewStringLatin1 (strerror (errno)));
+ iioe->bytesTransferred = 0;
+ throw iioe;
+ }
+ // Some errors should not cause exceptions.
+ if (errno != ENOTCONN && errno != ECONNRESET && errno != EBADF)
+ throw new java::io::IOException (JvNewStringUTF (strerror (errno)));
+ break;
+ }
}
}
@@ -537,24 +503,27 @@ java::net::PlainSocketImpl::write(jbyteArray b, jint offset, jint len)
jbyte *bytes = elements (b) + offset;
int written = 0;
+
while (len > 0)
{
- int r = ::write (fnum, bytes, len);
+ int r = _Jv_write (fnum, bytes, len);
+
if (r == -1)
{
- if (java::lang::Thread::interrupted())
- {
- java::io::InterruptedIOException *iioe
- = new java::io::InterruptedIOException
- (JvNewStringLatin1 (strerror (errno)));
- iioe->bytesTransferred = written;
- throw iioe;
- }
- // Some errors should not cause exceptions.
- if (errno != ENOTCONN && errno != ECONNRESET && errno != EBADF)
- throw new java::io::IOException (JvNewStringUTF (strerror (errno)));
- break;
- }
+ if (java::lang::Thread::interrupted())
+ {
+ java::io::InterruptedIOException *iioe
+ = new java::io::InterruptedIOException
+ (JvNewStringLatin1 (strerror (errno)));
+ iioe->bytesTransferred = written;
+ throw iioe;
+ }
+ // Some errors should not cause exceptions.
+ if (errno != ENOTCONN && errno != ECONNRESET && errno != EBADF)
+ throw new java::io::IOException (JvNewStringUTF (strerror (errno)));
+ break;
+ }
+
written += r;
len -= r;
bytes += r;
@@ -578,37 +547,38 @@ java::net::PlainSocketImpl::read(void)
#ifndef WIN32
// Do timeouts via select.
if (timeout > 0 && fnum >= 0 && fnum < FD_SETSIZE)
- {
- // Create the file descriptor set.
- fd_set read_fds;
- FD_ZERO (&read_fds);
- FD_SET (fnum,&read_fds);
- // Create the timeout struct based on our internal timeout value.
- struct timeval timeout_value;
- timeout_value.tv_sec = timeout / 1000;
- timeout_value.tv_usec = (timeout % 1000) * 1000;
- // Select on the fds.
- int sel_retval =
- _Jv_select (fnum + 1, &read_fds, NULL, NULL, &timeout_value);
- // If select returns 0 we've waited without getting data...
- // that means we've timed out.
- if (sel_retval == 0)
- throw new java::io::InterruptedIOException
- (JvNewStringUTF ("read timed out") );
- // If select returns ok we know we either got signalled or read some data...
- // either way we need to try to read.
- }
+ {
+ // Create the file descriptor set.
+ fd_set read_fds;
+ FD_ZERO (&read_fds);
+ FD_SET (fnum,&read_fds);
+ // Create the timeout struct based on our internal timeout value.
+ struct timeval timeout_value;
+ timeout_value.tv_sec = timeout / 1000;
+ timeout_value.tv_usec = (timeout % 1000) * 1000;
+ // Select on the fds.
+ int sel_retval =
+ _Jv_select (fnum + 1, &read_fds, NULL, NULL, &timeout_value);
+ // If select returns 0 we've waited without getting data...
+ // that means we've timed out.
+ if (sel_retval == 0)
+ throw new java::io::InterruptedIOException
+ (JvNewStringUTF ("read timed out") );
+ // If select returns ok we know we either got signalled or read some data...
+ // either way we need to try to read.
+ }
#endif /* WIN32 */
- int r = ::read (fnum, &b, 1);
+ int r = _Jv_read (fnum, &b, 1);
if (r == 0)
return -1;
+
if (java::lang::Thread::interrupted())
{
java::io::InterruptedIOException *iioe =
- new java::io::InterruptedIOException
- (JvNewStringUTF("read interrupted"));
+ new java::io::InterruptedIOException
+ (JvNewStringUTF("read interrupted"));
iioe->bytesTransferred = r == -1 ? 0 : r;
throw iioe;
}
@@ -616,10 +586,12 @@ java::net::PlainSocketImpl::read(void)
{
// Some errors cause us to return end of stream...
if (errno == ENOTCONN)
- return -1;
+ return -1;
+
// Other errors need to be signalled.
throw new java::io::IOException (JvNewStringUTF (strerror (errno)));
}
+
return b & 0xFF;
}
@@ -629,50 +601,55 @@ java::net::PlainSocketImpl::read(jbyteArray buffer, jint offset, jint count)
{
if (! buffer)
throw new java::lang::NullPointerException;
+
jsize bsize = JvGetArrayLength (buffer);
+
if (offset < 0 || count < 0 || offset + count > bsize)
throw new java::lang::ArrayIndexOutOfBoundsException;
+
jbyte *bytes = elements (buffer) + offset;
// FIXME: implement timeout support for Win32
#ifndef WIN32
// Do timeouts via select.
if (timeout > 0 && fnum >= 0 && fnum < FD_SETSIZE)
- {
- // Create the file descriptor set.
- fd_set read_fds;
- FD_ZERO (&read_fds);
- FD_SET (fnum, &read_fds);
- // Create the timeout struct based on our internal timeout value.
- struct timeval timeout_value;
- timeout_value.tv_sec = timeout / 1000;
- timeout_value.tv_usec =(timeout % 1000) * 1000;
- // Select on the fds.
- int sel_retval =
- _Jv_select (fnum + 1, &read_fds, NULL, NULL, &timeout_value);
- // We're only interested in the 0 return.
- // error returns still require us to try to read
- // the socket to see what happened.
- if (sel_retval == 0)
- {
- java::io::InterruptedIOException *iioe =
- new java::io::InterruptedIOException
- (JvNewStringUTF ("read interrupted"));
- iioe->bytesTransferred = 0;
- throw iioe;
- }
- }
+ {
+ // Create the file descriptor set.
+ fd_set read_fds;
+ FD_ZERO (&read_fds);
+ FD_SET (fnum, &read_fds);
+ // Create the timeout struct based on our internal timeout value.
+ struct timeval timeout_value;
+ timeout_value.tv_sec = timeout / 1000;
+ timeout_value.tv_usec =(timeout % 1000) * 1000;
+ // Select on the fds.
+ int sel_retval =
+ _Jv_select (fnum + 1, &read_fds, NULL, NULL, &timeout_value);
+ // We're only interested in the 0 return.
+ // error returns still require us to try to read
+ // the socket to see what happened.
+ if (sel_retval == 0)
+ {
+ java::io::InterruptedIOException *iioe =
+ new java::io::InterruptedIOException
+ (JvNewStringUTF ("read interrupted"));
+ iioe->bytesTransferred = 0;
+ throw iioe;
+ }
+ }
#endif
// Read the socket.
int r = ::recv (fnum, (char *) bytes, count, 0);
+
if (r == 0)
return -1;
+
if (java::lang::Thread::interrupted())
{
java::io::InterruptedIOException *iioe =
- new java::io::InterruptedIOException
- (JvNewStringUTF ("read interrupted"));
+ new java::io::InterruptedIOException
+ (JvNewStringUTF ("read interrupted"));
iioe->bytesTransferred = r == -1 ? 0 : r;
throw iioe;
}
@@ -680,10 +657,12 @@ java::net::PlainSocketImpl::read(jbyteArray buffer, jint offset, jint count)
{
// Some errors cause us to return end of stream...
if (errno == ENOTCONN)
- return -1;
+ return -1;
+
// Other errors need to be signalled.
throw new java::io::IOException (JvNewStringUTF (strerror (errno)));
}
+
return r;
}
@@ -698,6 +677,7 @@ java::net::PlainSocketImpl::available(void)
#if defined(FIONREAD)
r = ::ioctl (fnum, FIONREAD, &num);
+
if (r == -1 && errno == ENOTTY)
{
// If the ioctl doesn't work, we don't care.
@@ -718,34 +698,32 @@ java::net::PlainSocketImpl::available(void)
{
posix_error:
throw new java::io::IOException(JvNewStringUTF(strerror(errno)));
-
}
// If we didn't get anything we can use select.
#if defined(HAVE_SELECT)
if (! num_set)
- if (! num_set && fnum >= 0 && fnum < FD_SETSIZE)
- {
- fd_set rd;
- FD_ZERO (&rd);
- FD_SET (fnum, &rd);
- struct timeval tv;
- tv.tv_sec = 0;
- tv.tv_usec = 0;
- r = _Jv_select (fnum + 1, &rd, NULL, NULL, &tv);
- if(r == -1)
- goto posix_error;
- num = r == 0 ? 0 : 1;
- }
+ if (! num_set && fnum >= 0 && fnum < FD_SETSIZE)
+ {
+ fd_set rd;
+ FD_ZERO (&rd);
+ FD_SET (fnum, &rd);
+ struct timeval tv;
+ tv.tv_sec = 0;
+ tv.tv_usec = 0;
+ r = _Jv_select (fnum + 1, &rd, NULL, NULL, &tv);
+ if(r == -1)
+ goto posix_error;
+ num = r == 0 ? 0 : 1;
+ }
#endif /* HAVE_SELECT */
return (jint) num;
#else
throw new java::io::IOException (JvNewStringUTF ("unimplemented"));
#endif
- }
-
+}
void
java::net::PlainSocketImpl::setOption (jint optID, java::lang::Object *value)
@@ -764,10 +742,10 @@ java::net::PlainSocketImpl::setOption (jint optID, java::lang::Object *value)
val = 1;
else
{
- if (optID == _Jv_SO_LINGER_)
- val = -1;
- else
- val = 0;
+ if (optID == _Jv_SO_LINGER_)
+ val = -1;
+ else
+ val = 0;
}
}
else if (_Jv_IsInstanceOf (value, &java::lang::Integer::class$))
@@ -787,28 +765,28 @@ java::net::PlainSocketImpl::setOption (jint optID, java::lang::Object *value)
case _Jv_TCP_NODELAY_ :
#ifdef TCP_NODELAY
if (::setsockopt (fnum, IPPROTO_TCP, TCP_NODELAY, (char *) &val,
- val_len) != 0)
- goto error;
+ val_len) != 0)
+ goto error;
#else
- throw new java::lang::InternalError (
- JvNewStringUTF ("TCP_NODELAY not supported"));
+ throw new java::lang::InternalError
+ (JvNewStringUTF ("TCP_NODELAY not supported"));
#endif /* TCP_NODELAY */
return;
case _Jv_SO_KEEPALIVE_ :
if (::setsockopt (fnum, SOL_SOCKET, SO_KEEPALIVE, (char *) &val,
- val_len) != 0)
- goto error;
- break;
+ val_len) != 0)
+ goto error;
+ break;
case _Jv_SO_BROADCAST_ :
- throw new java::net::SocketException (
- JvNewStringUTF ("SO_BROADCAST not valid for TCP"));
- break;
+ throw new java::net::SocketException
+ (JvNewStringUTF ("SO_BROADCAST not valid for TCP"));
+ break;
case _Jv_SO_OOBINLINE_ :
if (::setsockopt (fnum, SOL_SOCKET, SO_OOBINLINE, (char *) &val,
- val_len) != 0)
+ val_len) != 0)
goto error;
break;
@@ -817,30 +795,34 @@ java::net::PlainSocketImpl::setOption (jint optID, java::lang::Object *value)
struct linger l_val;
l_val.l_onoff = (val != -1);
l_val.l_linger = val;
+
if (::setsockopt (fnum, SOL_SOCKET, SO_LINGER, (char *) &l_val,
- sizeof(l_val)) != 0)
- goto error;
+ sizeof(l_val)) != 0)
+ goto error;
#else
throw new java::lang::InternalError (
JvNewStringUTF ("SO_LINGER not supported"));
#endif /* SO_LINGER */
return;
+
case _Jv_SO_SNDBUF_ :
case _Jv_SO_RCVBUF_ :
#if defined(SO_SNDBUF) && defined(SO_RCVBUF)
int opt;
optID == _Jv_SO_SNDBUF_ ? opt = SO_SNDBUF : opt = SO_RCVBUF;
if (::setsockopt (fnum, SOL_SOCKET, opt, (char *) &val, val_len) != 0)
- goto error;
+ goto error;
#else
throw new java::lang::InternalError (
JvNewStringUTF ("SO_RCVBUF/SO_SNDBUF not supported"));
#endif
return;
+
case _Jv_SO_BINDADDR_ :
throw new java::net::SocketException (
JvNewStringUTF ("SO_BINDADDR: read only option"));
return;
+
case _Jv_IP_MULTICAST_IF_ :
throw new java::net::SocketException (
JvNewStringUTF ("IP_MULTICAST_IF: not valid for TCP"));
@@ -854,21 +836,23 @@ java::net::PlainSocketImpl::setOption (jint optID, java::lang::Object *value)
case _Jv_IP_MULTICAST_LOOP_ :
throw new java::net::SocketException (
JvNewStringUTF ("IP_MULTICAST_LOOP: not valid for TCP"));
- break;
+ break;
case _Jv_IP_TOS_ :
if (::setsockopt (fnum, SOL_SOCKET, IP_TOS, (char *) &val,
- val_len) != 0)
- goto error;
- break;
+ val_len) != 0)
+ goto error;
+ break;
case _Jv_SO_REUSEADDR_ :
throw new java::net::SocketException (
JvNewStringUTF ("SO_REUSEADDR: not valid for TCP"));
return;
+
case _Jv_SO_TIMEOUT_ :
- timeout = val;
+ timeout = val;
return;
+
default :
errno = ENOPROTOOPT;
}
@@ -891,123 +875,129 @@ java::net::PlainSocketImpl::getOption (jint optID)
switch (optID)
{
#ifdef TCP_NODELAY
- case _Jv_TCP_NODELAY_ :
- if (::getsockopt (fnum, IPPROTO_TCP, TCP_NODELAY, (char *) &val,
- &val_len) != 0)
- goto error;
- else
- return new java::lang::Boolean (val != 0);
+ case _Jv_TCP_NODELAY_ :
+ if (::getsockopt (fnum, IPPROTO_TCP, TCP_NODELAY, (char *) &val,
+ &val_len) != 0)
+ goto error;
+ else
+ return new java::lang::Boolean (val != 0);
#else
- throw new java::lang::InternalError (
- JvNewStringUTF ("TCP_NODELAY not supported"));
+ throw new java::lang::InternalError
+ (JvNewStringUTF ("TCP_NODELAY not supported"));
#endif
- break;
-
- case _Jv_SO_LINGER_ :
+ break;
+
+ case _Jv_SO_LINGER_ :
#ifdef SO_LINGER
- if (::getsockopt (fnum, SOL_SOCKET, SO_LINGER, (char *) &l_val,
- &l_val_len) != 0)
- goto error;
- if (l_val.l_onoff)
- return new java::lang::Integer (l_val.l_linger);
- else
- return new java::lang::Boolean ((jboolean)false);
+ if (::getsockopt (fnum, SOL_SOCKET, SO_LINGER, (char *) &l_val,
+ &l_val_len) != 0)
+ goto error;
+
+ if (l_val.l_onoff)
+ return new java::lang::Integer (l_val.l_linger);
+ else
+ return new java::lang::Boolean ((jboolean)false);
#else
- throw new java::lang::InternalError (
- JvNewStringUTF ("SO_LINGER not supported"));
+ throw new java::lang::InternalError
+ (JvNewStringUTF ("SO_LINGER not supported"));
#endif
- break;
+ break;
- case _Jv_SO_KEEPALIVE_ :
- if (::getsockopt (fnum, SOL_SOCKET, SO_KEEPALIVE, (char *) &val,
- &val_len) != 0)
- goto error;
- else
- return new java::lang::Boolean (val != 0);
+ case _Jv_SO_KEEPALIVE_ :
+ if (::getsockopt (fnum, SOL_SOCKET, SO_KEEPALIVE, (char *) &val,
+ &val_len) != 0)
+ goto error;
+ else
+ return new java::lang::Boolean (val != 0);
- case _Jv_SO_BROADCAST_ :
- if (::getsockopt (fnum, SOL_SOCKET, SO_BROADCAST, (char *) &val,
- &val_len) != 0)
- goto error;
- return new java::lang::Boolean ((jboolean)val);
+ case _Jv_SO_BROADCAST_ :
+ if (::getsockopt (fnum, SOL_SOCKET, SO_BROADCAST, (char *) &val,
+ &val_len) != 0)
+ goto error;
+ return new java::lang::Boolean ((jboolean)val);
- case _Jv_SO_OOBINLINE_ :
- if (::getsockopt (fnum, SOL_SOCKET, SO_OOBINLINE, (char *) &val,
- &val_len) != 0)
- goto error;
- return new java::lang::Boolean ((jboolean)val);
+ case _Jv_SO_OOBINLINE_ :
+ if (::getsockopt (fnum, SOL_SOCKET, SO_OOBINLINE, (char *) &val,
+ &val_len) != 0)
+ goto error;
+ return new java::lang::Boolean ((jboolean)val);
- case _Jv_SO_RCVBUF_ :
- case _Jv_SO_SNDBUF_ :
+ case _Jv_SO_RCVBUF_ :
+ case _Jv_SO_SNDBUF_ :
#if defined(SO_SNDBUF) && defined(SO_RCVBUF)
- int opt;
- optID == _Jv_SO_SNDBUF_ ? opt = SO_SNDBUF : opt = SO_RCVBUF;
- if (::getsockopt (fnum, SOL_SOCKET, opt, (char *) &val, &val_len) != 0)
- goto error;
- else
- return new java::lang::Integer (val);
+ int opt;
+ optID == _Jv_SO_SNDBUF_ ? opt = SO_SNDBUF : opt = SO_RCVBUF;
+ if (::getsockopt (fnum, SOL_SOCKET, opt, (char *) &val, &val_len) != 0)
+ goto error;
+ else
+ return new java::lang::Integer (val);
#else
- throw new java::lang::InternalError (
- JvNewStringUTF ("SO_RCVBUF/SO_SNDBUF not supported"));
+ throw new java::lang::InternalError
+ (JvNewStringUTF ("SO_RCVBUF/SO_SNDBUF not supported"));
#endif
- break;
- case _Jv_SO_BINDADDR_:
- // cache the local address
- if (localAddress == NULL)
- {
- jbyteArray laddr;
- if (::getsockname (fnum, (sockaddr*) &u, &addrlen) != 0)
- goto error;
- if (u.address.sin_family == AF_INET)
- {
- laddr = JvNewByteArray (4);
- memcpy (elements (laddr), &u.address.sin_addr, 4);
- }
+ break;
+ case _Jv_SO_BINDADDR_:
+ // cache the local address
+ if (localAddress == NULL)
+ {
+ jbyteArray laddr;
+
+ if (::getsockname (fnum, (sockaddr*) &u, &addrlen) != 0)
+ goto error;
+
+ if (u.address.sin_family == AF_INET)
+ {
+ laddr = JvNewByteArray (4);
+ memcpy (elements (laddr), &u.address.sin_addr, 4);
+ }
#ifdef HAVE_INET6
- else if (u.address.sin_family == AF_INET6)
- {
- laddr = JvNewByteArray (16);
- memcpy (elements (laddr), &u.address6.sin6_addr, 16);
- }
+ else if (u.address.sin_family == AF_INET6)
+ {
+ laddr = JvNewByteArray (16);
+ memcpy (elements (laddr), &u.address6.sin6_addr, 16);
+ }
#endif
- else
- throw new java::net::SocketException (
- JvNewStringUTF ("invalid family"));
- localAddress = new java::net::InetAddress (laddr, NULL);
- }
- return localAddress;
- break;
- case _Jv_IP_MULTICAST_IF_ :
- throw new java::net::SocketException (
- JvNewStringUTF ("IP_MULTICAST_IF: not valid for TCP"));
- break;
+ else
+ throw new java::net::SocketException
+ (JvNewStringUTF ("invalid family"));
+ localAddress = new java::net::InetAddress (laddr, NULL);
+ }
+
+ return localAddress;
+ break;
+ case _Jv_IP_MULTICAST_IF_ :
+ throw new java::net::SocketException
+ (JvNewStringUTF ("IP_MULTICAST_IF: not valid for TCP"));
+ break;
- case _Jv_IP_MULTICAST_IF2_ :
- throw new java::net::SocketException (
- JvNewStringUTF ("IP_MULTICAST_IF2: not valid for TCP"));
- break;
+ case _Jv_IP_MULTICAST_IF2_ :
+ throw new java::net::SocketException
+ (JvNewStringUTF ("IP_MULTICAST_IF2: not valid for TCP"));
+ break;
- case _Jv_IP_MULTICAST_LOOP_ :
- throw new java::net::SocketException(
- JvNewStringUTF ("IP_MULTICAST_LOOP: not valid for TCP"));
- break;
+ case _Jv_IP_MULTICAST_LOOP_ :
+ throw new java::net::SocketException
+ (JvNewStringUTF ("IP_MULTICAST_LOOP: not valid for TCP"));
+ break;
- case _Jv_IP_TOS_ :
- if (::getsockopt (fnum, SOL_SOCKET, IP_TOS, (char *) &val,
- &val_len) != 0)
- goto error;
- return new java::lang::Integer (val);
- break;
+ case _Jv_IP_TOS_ :
+ if (::getsockopt (fnum, SOL_SOCKET, IP_TOS, (char *) &val,
+ &val_len) != 0)
+ goto error;
+ return new java::lang::Integer (val);
+ break;
- case _Jv_SO_REUSEADDR_ :
- throw new java::net::SocketException (
- JvNewStringUTF ("SO_REUSEADDR: not valid for TCP"));
- break;
- case _Jv_SO_TIMEOUT_ :
- return new java::lang::Integer (timeout);
- break;
- default :
- errno = ENOPROTOOPT;
+ case _Jv_SO_REUSEADDR_ :
+ throw new java::net::SocketException
+ (JvNewStringUTF ("SO_REUSEADDR: not valid for TCP"));
+ break;
+
+ case _Jv_SO_TIMEOUT_ :
+ return new java::lang::Integer (timeout);
+ break;
+
+ default :
+ errno = ENOPROTOOPT;
}
error:
diff --git a/libjava/java/nio/Buffer.java b/libjava/java/nio/Buffer.java
index 4e18cbda144..9474fb453f0 100644
--- a/libjava/java/nio/Buffer.java
+++ b/libjava/java/nio/Buffer.java
@@ -39,4 +39,155 @@ package java.nio;
public abstract class Buffer
{
+ int cap = 0;
+ int limit = 0;
+ int pos = 0;
+ int mark = -1;
+
+ /**
+ * Retrieves the capacity of the buffer.
+ */
+ public final int capacity ()
+ {
+ return cap;
+ }
+
+ /**
+ * Clears the buffer.
+ */
+ public final Buffer clear ()
+ {
+ limit = cap;
+ pos = 0;
+ mark = -1;
+ return this;
+ }
+
+ /**
+ * Flips the buffer.
+ */
+ public final Buffer flip ()
+ {
+ limit = pos;
+ pos = 0;
+ mark = -1;
+ return this;
+ }
+
+ /**
+ * Tells whether the buffer has remaining data to read or not.
+ */
+ public final boolean hasRemaining ()
+ {
+ return limit > pos;
+ }
+
+ /**
+ * Tells whether this buffer is read only or not.
+ */
+ public abstract boolean isReadOnly ();
+
+ /**
+ * Retrieves the current limit of the buffer.
+ */
+ public final int limit ()
+ {
+ return limit;
+ }
+
+ /**
+ * Sets this buffer's limit.
+ *
+ * @param newLimit The new limit value; must be non-negative and no larger
+ * than this buffer's capacity.
+ *
+ * @exception IllegalArgumentException If the preconditions on newLimit
+ * do not hold.
+ */
+ public final Buffer limit (int newLimit)
+ {
+ if ((newLimit < 0) || (newLimit > cap))
+ throw new IllegalArgumentException ();
+
+ if (newLimit <= mark)
+ mark = -1;
+
+ if (pos > newLimit)
+ pos = newLimit - 1;
+
+ limit = newLimit;
+ return this;
+ }
+
+ /**
+ * Sets this buffer's mark at its position.
+ */
+ public final Buffer mark ()
+ {
+ mark = pos;
+ return this;
+ }
+
+ /**
+ * Retrieves the current position of this buffer.
+ */
+ public final int position ()
+ {
+ return pos;
+ }
+
+ /**
+ * Sets this buffer's position. If the mark is defined and larger than the
+ * new position then it is discarded.
+ *
+ * @param newPosition The new position value; must be non-negative and no
+ * larger than the current limit.
+ *
+ * @exception IllegalArgumentException If the preconditions on newPosition
+ * do not hold
+ */
+ public final Buffer position (int newPosition)
+ {
+ if ((newPosition < 0) || (newPosition > limit))
+ throw new IllegalArgumentException ();
+
+ if (newPosition <= mark)
+ mark = -1;
+
+ pos = newPosition;
+ return this;
+ }
+
+ /**
+ * Returns the number of elements between the current position and the limit.
+ */
+ public final int remaining()
+ {
+ return limit - pos;
+ }
+
+ /**
+ * Resets this buffer's position to the previously-marked position.
+ *
+ * @exception InvalidMarkException If the mark has not been set.
+ */
+ public final Buffer reset()
+ {
+ if (mark == -1)
+ throw new InvalidMarkException ();
+
+ pos = mark;
+ return this;
+ }
+
+ /**
+ * Rewinds this buffer. The position is set to zero and the mark
+ * is discarded.
+ */
+ public final Buffer rewind()
+ {
+ pos = 0;
+ mark = -1;
+ return this;
+ }
}
diff --git a/libjava/java/nio/ByteBuffer.java b/libjava/java/nio/ByteBuffer.java
index 4b02f7fcafc..874943a8757 100644
--- a/libjava/java/nio/ByteBuffer.java
+++ b/libjava/java/nio/ByteBuffer.java
@@ -39,4 +39,41 @@ package java.nio;
public abstract class ByteBuffer extends Buffer
{
+ public static ByteBuffer allocate (int capacity)
+ {
+ return null;
+ }
+
+ final public static ByteBuffer wrap (byte[] array, int offset, int length)
+ {
+ return null;
+ }
+
+ final public static ByteBuffer wrap (byte[] array)
+ {
+ return wrap (array, 0, array.length);
+ }
+
+ final public ByteBuffer put (ByteBuffer src)
+ {
+ while (src.hasRemaining ())
+ put (src.get ());
+
+ return this;
+ }
+
+ final public ByteBuffer put (byte[] src, int offset, int length)
+ {
+ for (int i = offset; i < offset + length; i++)
+ put (src [i]);
+ return this;
+ }
+ public final ByteBuffer put (byte[] src)
+ {
+ return put (src, 0, src.length);
+ }
+
+ public abstract byte get ();
+
+ public abstract ByteBuffer put (byte b);
}
diff --git a/libjava/java/nio/channels/AlreadyConnectedException.java b/libjava/java/nio/channels/AlreadyConnectedException.java
index 3e3956b52b5..740fdbc0ddd 100644
--- a/libjava/java/nio/channels/AlreadyConnectedException.java
+++ b/libjava/java/nio/channels/AlreadyConnectedException.java
@@ -37,11 +37,11 @@ exception statement from your version. */
package java.nio.channels;
-import java.io.*;
-
-
public class AlreadyConnectedException extends IllegalStateException
{
+ /**
+ * Creates the exception
+ */
public AlreadyConnectedException()
{
}
diff --git a/libjava/java/nio/channels/ClosedChannelException.java b/libjava/java/nio/channels/ClosedChannelException.java
index 2576d34c3c8..353a8202647 100644
--- a/libjava/java/nio/channels/ClosedChannelException.java
+++ b/libjava/java/nio/channels/ClosedChannelException.java
@@ -39,6 +39,10 @@ package java.nio.channels;
import java.io.IOException;
+/**
+ * @author Michael Koch
+ * @since 1.4
+ */
public class ClosedChannelException extends IOException
{
/**
diff --git a/libjava/java/nio/channels/DatagramChannel.java b/libjava/java/nio/channels/DatagramChannel.java
index 301f33e20a0..eefa443cb29 100644
--- a/libjava/java/nio/channels/DatagramChannel.java
+++ b/libjava/java/nio/channels/DatagramChannel.java
@@ -37,14 +37,117 @@ exception statement from your version. */
package java.nio.channels;
+import java.io.IOException;
+import java.net.DatagramSocket;
+import java.net.SocketAddress;
+import java.nio.ByteBuffer;
import java.nio.channels.spi.AbstractSelectableChannel;
import java.nio.channels.spi.SelectorProvider;
+/**
+ * @since 1.4
+ */
public abstract class DatagramChannel
extends AbstractSelectableChannel
+ implements ByteChannel, ScatteringByteChannel, GatheringByteChannel
{
- public DatagramChannel (SelectorProvider provider)
+ /**
+ * Initializes the channel.
+ */
+ protected DatagramChannel (SelectorProvider provider)
{
super (provider);
}
+
+ /**
+ * Opens a datagram channel.
+ */
+ public static DatagramChannel open () throws IOException
+ {
+ return SelectorProvider.provider ().openDatagramChannel ();
+ }
+
+ /**
+ * Reads data from this channel.
+ */
+ public final long read (ByteBuffer[] dsts) throws IOException
+ {
+ long b = 0;
+
+ for (int i = 0; i < dsts.length; i++)
+ b += read (dsts[i]);
+
+ return b;
+ }
+
+ /**
+ * Writes data to this channel.
+ */
+ public final long write (ByteBuffer[] srcs)
+ {
+ long b = 0;
+
+ for (int i = 0;i < srcs.length; i++)
+ b += write (srcs[i]);
+
+ return b;
+ }
+
+ /**
+ * Connects this channel's socket.
+ */
+ public abstract DatagramChannel connect (SocketAddress remote);
+
+ /**
+ * Disonnects this channel's socket.
+ */
+ public abstract DatagramChannel disconnect ();
+
+ /**
+ * Tells whether or not this channel's socket is connected.
+ */
+ public abstract boolean isConnected ();
+
+ /**
+ * Reads data from this channel.
+ */
+ public abstract int read (ByteBuffer dst);
+
+ /**
+ * Reads data from this channel.
+ */
+ public abstract long read (ByteBuffer[] dsts, int offset, int length);
+
+ /**
+ * Receives a datagram via this channel.
+ */
+ public abstract SocketAddress receive (ByteBuffer dst);
+
+ /**
+ * Sends a datagram via this channel.
+ */
+ public abstract int send (ByteBuffer src, SocketAddress target);
+
+ /**
+ * Retrieves the channel's socket.
+ */
+ public abstract DatagramSocket socket ();
+
+ /**
+ * Writes data to this channel.
+ */
+ public abstract int write (ByteBuffer src);
+
+ /**
+ * Writes data to this channel.
+ */
+ public abstract long write (ByteBuffer[] srcs, int offset, int length);
+
+ /**
+ * Retrieves the valid operations for this channel.
+ */
+ public final int validOps ()
+ {
+ return SelectionKey.OP_READ | SelectionKey.OP_WRITE;
+ }
}
diff --git a/libjava/java/nio/channels/Pipe.java b/libjava/java/nio/channels/Pipe.java
index 9c3c6cdc2de..22f3d156f68 100644
--- a/libjava/java/nio/channels/Pipe.java
+++ b/libjava/java/nio/channels/Pipe.java
@@ -40,40 +40,82 @@ package java.nio.channels;
import java.nio.channels.spi.AbstractSelectableChannel;
import java.nio.channels.spi.SelectorProvider;
+/**
+ * @author Michael Koch
+ * @since 1.4
+ */
public abstract class Pipe
{
public abstract static class SinkChannel
extends AbstractSelectableChannel
implements WritableByteChannel, GatheringByteChannel
{
- protected SinkChannel(SelectorProvider provider)
+ /**
+ * Initializes the channel.
+ */
+ protected SinkChannel (SelectorProvider provider)
{
super (provider);
}
+
+ /**
+ * Returns an operation set that is valid on this channel.
+ *
+ * The only valid operation on this channel is @see SelectionKey.OP_WRITE.
+ */
+ public final int validOps ()
+ {
+ return SelectionKey.OP_WRITE;
+ }
}
public abstract static class SourceChannel
extends AbstractSelectableChannel
implements ReadableByteChannel, ScatteringByteChannel
{
- protected SourceChannel(SelectorProvider provider)
+ /**
+ * Initializes the channel.
+ */
+ protected SourceChannel (SelectorProvider provider)
{
super (provider);
}
+
+ /**
+ * Returns an operation set that is valid on this channel.
+ *
+ * The only valid operation on this channel is @see SelectionKey.OP_READ.
+ */
+ public final int validOps ()
+ {
+ return SelectionKey.OP_READ;
+ }
}
-
+
+ /**
+ * Initializes the pipe.
+ */
protected Pipe()
{
}
/**
+ * Opens a pipe.
+ *
* @exception IOException If an error occurs
*/
public static Pipe open()
{
- return null;
+ return SelectorProvider.provider ().openPipe();
}
-
+
+ /**
+ * Returns a pipe's sink channel.
+ */
public abstract Pipe.SinkChannel sink();
+
+ /**
+ * Returns a pipe's source channel
+ */
public abstract Pipe.SourceChannel source();
}
diff --git a/libjava/java/nio/channels/SelectableChannel.java b/libjava/java/nio/channels/SelectableChannel.java
index 7b3a50e9bcd..2bc5cc47e35 100644
--- a/libjava/java/nio/channels/SelectableChannel.java
+++ b/libjava/java/nio/channels/SelectableChannel.java
@@ -40,50 +40,99 @@ package java.nio.channels;
import java.nio.channels.spi.AbstractInterruptibleChannel;
import java.nio.channels.spi.SelectorProvider;
+/**
+ * @author Michael Koch
+ * @since 1.4
+ */
public abstract class SelectableChannel
extends AbstractInterruptibleChannel
{
- protected SelectableChannel()
+ /**
+ * Initializes the channel.
+ */
+ protected SelectableChannel ()
{
}
-
- public abstract Object blockingLock();
+
+ /**
+ * Returns the lock of this channel.
+ */
+ public abstract Object blockingLock ();
/**
- * @exception ClosedChannelException FIXME
- * @exception IllegalBlockingModeException FIXME
- * @exception IOException FIXME
+ * Adjusts this channel's blocking mode.
+ *
+ * @exception ClosedChannelException If this channel is closed.
+ * @exception IllegalBlockingModeException If block is true and this channel
+ * is registered with one or more selectors.
+ * @exception IOException If an error occurs.
*/
- public abstract SelectableChannel configureBlocking(boolean block);
+ public abstract SelectableChannel configureBlocking (boolean block);
- public abstract boolean isBlocking();
+ /**
+ * Tells whether this channel is blocking or not.
+ */
+ public abstract boolean isBlocking ();
- public abstract boolean isRegistered();
+ /**
+ * Tells whether or not this channel is currently registered with
+ * any selectors.
+ */
+ public abstract boolean isRegistered ();
- public abstract SelectionKey keyFor(Selector sel);
+ /**
+ * Retrieves the key representing the channel's registration with
+ * the given selector.
+ */
+ public abstract SelectionKey keyFor (Selector sel);
- public abstract SelectorProvider provider();
+ /**
+ * Returns the provider that created this channel.
+ */
+ public abstract SelectorProvider provider ();
/**
- * @exception CancelledKeyException FIXME
- * @exception ClosedChannelException FIXME
- * @exception IllegalArgumentException FIXME
- * @exception IllegalBlockingModeException FIXME
- * @exception IllegalSelectorException FIXME
+ * Registers this channel with the given selector,
+ * returning a selection key.
+ *
+ * @exception CancelledKeyException If this channel is currently registered
+ * with the given selector but the corresponding key has already been cancelled
+ * @exception ClosedChannelException If this channel is closed.
+ * @exception IllegalArgumentException If a bit in ops does not correspond
+ * to an operation that is supported by this channel, that is, if
+ * set &amp; ~validOps() != 0.
+ * @exception IllegalBlockingModeException If block is true and this channel
+ * is registered with one or more selectors.
+ * @exception IllegalSelectorException If this channel was not created by
+ * the same provider as the given selector.
*/
- public final SelectionKey register(Selector sel, int ops) throws java.nio.channels.ClosedChannelException
+ public final SelectionKey register (Selector sel, int ops)
+ throws ClosedChannelException
{
- return register(sel, ops, null);
+ return register (sel, ops, null);
}
/**
- * @exception CancelledKeyException FIXME
- * @exception ClosedChannelException FIXME
- * @exception IllegalArgumentException FIXME
- * @exception IllegalBlockingModeException FIXME
- * @exception IllegalSelectorException FIXME
+ * Registers this channel with the given selector,
+ * returning a selection key.
+ *
+ * @exception CancelledKeyException If this channel is currently registered
+ * with the given selector but the corresponding key has already been
+ * cancelled.
+ * @exception ClosedChannelException If this channel is closed.
+ * @exception IllegalArgumentException If a bit in ops does not correspond
+ * to an operation that is supported by this channel, that is, if
+ * set &amp; ~validOps() != 0.
+ * @exception IllegalBlockingModeException If block is true and this channel
+ * is registered with one or more selectors.
+ * @exception IllegalSelectorException If this channel was not created by
+ * the same provider as the given selector.
*/
- public abstract SelectionKey register(Selector sel, int ops, Object att) throws java.nio.channels.ClosedChannelException;
+ public abstract SelectionKey register (Selector sel, int ops, Object att)
+ throws ClosedChannelException;
- public abstract int validOps();
+ /**
+ * Returns a set of valid operations on this channel.
+ */
+ public abstract int validOps();
}
diff --git a/libjava/java/nio/channels/SelectionKey.java b/libjava/java/nio/channels/SelectionKey.java
index 6835d1d99db..8d06a301143 100644
--- a/libjava/java/nio/channels/SelectionKey.java
+++ b/libjava/java/nio/channels/SelectionKey.java
@@ -37,6 +37,10 @@ exception statement from your version. */
package java.nio.channels;
+/**
+ * @author Michael Koch
+ * @since 1.4
+ */
public abstract class SelectionKey
{
public static final int OP_ACCEPT = 1<<0;
@@ -45,76 +49,116 @@ public abstract class SelectionKey
public static final int OP_WRITE = 1<<3;
Object attached;
-
- protected SelectionKey()
+
+ /**
+ * Initializes the selection key.
+ */
+ protected SelectionKey ()
{
}
- public final Object attach(Object obj)
+ /**
+ * Attaches obj to the key and returns the old attached object.
+ */
+ public final Object attach (Object obj)
{
Object old = attached;
attached = obj;
return old;
}
-
- public final Object attachment()
+
+ /**
+ * Returns the object attached to the key.
+ */
+ public final Object attachment ()
{
return attached;
}
/**
- * @exception CancelledKeyException FIXME
+ * Tests if the channel attached to this key is ready to accept
+ * a new socket connection.
+ *
+ * @exception CancelledKeyException If this key has been cancelled
*/
- public final boolean isAcceptable()
+ public final boolean isAcceptable ()
{
- return (readyOps() & OP_ACCEPT) != 0;
+ return (readyOps () & OP_ACCEPT) != 0;
}
/**
- * @exception CancelledKeyException FIXME
+ * Tests whether this key's channel has either finished,
+ * or failed to finish, its socket-connection operation.
+ *
+ * @exception CancelledKeyException If this key has been cancelled
*/
- public final boolean isConnectable()
+ public final boolean isConnectable ()
{
- return (readyOps() & OP_CONNECT) != 0;
+ return (readyOps () & OP_CONNECT) != 0;
}
/**
- * @exception CancelledKeyException FIXME
+ * Tests if the channel attached to the key is readable.
+ *
+ * @exception CancelledKeyException If this key has been cancelled
*/
- public final boolean isReadable()
+ public final boolean isReadable ()
{
- return (readyOps() & OP_READ) != 0;
+ return (readyOps () & OP_READ) != 0;
}
/**
- * @exception CancelledKeyException FIXME
+ * Tests if the channel attached to the key is writable.
+ *
+ * @exception CancelledKeyException If this key has been cancelled
*/
- public final boolean isWritable()
+ public final boolean isWritable ()
{
- return (readyOps() & OP_WRITE) != 0;
+ return (readyOps () & OP_WRITE) != 0;
}
- public abstract void cancel();
-
- public abstract SelectableChannel channel();
-
/**
- * @exception CancelledKeyException FIXME
+ * Requests that the registration of this key's channel with
+ * its selector be cancelled.
*/
- public abstract int interestOps();
+ public abstract void cancel ();
+
+ /**
+ * return the channel attached to the key.
+ */
+ public abstract SelectableChannel channel ();
/**
- * @exception CancelledKeyException FIXME
- * @exception IllegalArgumentException FIXME
+ * Returns the key's interest set.
+ *
+ * @exception CancelledKeyException If this key has been cancelled
*/
- public abstract SelectionKey interestOps(int ops);
+ public abstract int interestOps ();
- public abstract boolean isValid();
+ /**
+ * Sets this key's interest set to the given value.
+ *
+ * @exception CancelledKeyException If this key has been cancelled
+ * @exception IllegalArgumentException If a bit in the set does not
+ * correspond to an operation that is supported by this key's channel,
+ * that is, if set &amp; ~(channel().validOps()) != 0
+ */
+ public abstract SelectionKey interestOps (int ops);
/**
- * @exception CancelledKeyException FIXME
+ * Tells whether or not this key is valid.
*/
- public abstract int readyOps();
+ public abstract boolean isValid ();
+
+ /**
+ * Retrieves this key's ready-operation set.
+ *
+ * @exception CancelledKeyException If this key has been cancelled
+ */
+ public abstract int readyOps ();
- public abstract Selector selector();
+ /**
+ * Returns the selector for which this key was created.
+ */
+ public abstract Selector selector ();
}
diff --git a/libjava/java/nio/channels/Selector.java b/libjava/java/nio/channels/Selector.java
index 715bc7f98bb..695969b5b3a 100644
--- a/libjava/java/nio/channels/Selector.java
+++ b/libjava/java/nio/channels/Selector.java
@@ -37,60 +37,97 @@ exception statement from your version. */
package java.nio.channels;
-import java.util.Set;
+import java.io.IOException;
import java.nio.channels.spi.SelectorProvider;
+import java.util.Set;
+/**
+ * @author Michael Koch
+ * @since 1.4
+ */
public abstract class Selector
{
+ /**
+ * Initializes the selector.
+ */
protected Selector()
{
}
/**
+ * Opens a selector.
+ *
* @exception IOException If an error occurs
*/
- public static Selector open()
+ public static Selector open () throws IOException
{
- return SelectorProvider.provider().openSelector();
+ return SelectorProvider.provider ().openSelector ();
}
/**
+ * Closes the selector.
+ *
* @exception IOException If an error occurs
*/
- public abstract void close();
-
- public abstract boolean isOpen();
+ public abstract void close () throws IOException;
/**
- * @exception ClosedSelectorException FIXME
+ * Tells whether the selector is open or not.
*/
- public abstract Set keys();
+ public abstract boolean isOpen ();
- public abstract SelectorProvider provider();
+ /**
+ * Returns this selector's key set.
+ *
+ * @exception ClosedSelectorException If this selector is closed.
+ */
+ public abstract Set keys ();
+
+ /**
+ * Returns the SelectorProvider that created the selector.
+ */
+ public abstract SelectorProvider provider ();
/**
- * @exception ClosedSelectorException FIXME
+ * Selects a set of keys whose corresponding channels are ready
+ * for I/O operations.
+ *
+ * @exception ClosedSelectorException If this selector is closed.
* @exception IOException If an error occurs
*/
- public abstract int select();
+ public abstract int select () throws IOException;
/**
- * @exception ClosedSelectorException FIXME
- * @exception IllegalArgumentException FIXME
+ * Selects a set of keys whose corresponding channels are ready
+ * for I/O operations.
+ *
+ * @param timeout The timeout to use.
+ *
+ * @exception ClosedSelectorException If this selector is closed.
+ * @exception IllegalArgumentException If the timeout value is negative.
* @exception IOException If an error occurs
*/
- public abstract int select(long timeout);
+ public abstract int select (long timeout) throws IOException;
/**
- * @exception ClosedSelectorException FIXME
+ * Returns this selector's selected-key set.
+ *
+ * @exception ClosedSelectorException If this selector is closed.
*/
- public abstract Set selectedKeys();
+ public abstract Set selectedKeys ();
/**
- * @exception ClosedSelectorException FIXME
+ * Selects a set of keys whose corresponding channels are ready
+ * for I/O operations.
+ *
+ * @exception ClosedSelectorException If this selector is closed.
* @exception IOException If an error occurs
*/
- public abstract int selectNow();
+ public abstract int selectNow () throws IOException;
- public abstract Selector wakeup();
+ /**
+ * Causes the first selection operation that has not yet returned to
+ * return immediately.
+ */
+ public abstract Selector wakeup ();
}
diff --git a/libjava/java/nio/channels/ServerSocketChannel.java b/libjava/java/nio/channels/ServerSocketChannel.java
index e423bd10b43..16a3a82df5b 100644
--- a/libjava/java/nio/channels/ServerSocketChannel.java
+++ b/libjava/java/nio/channels/ServerSocketChannel.java
@@ -39,12 +39,62 @@ package java.nio.channels;
import java.nio.channels.spi.AbstractSelectableChannel;
import java.nio.channels.spi.SelectorProvider;
+import java.nio.ByteOrder;
+import java.nio.ByteBuffer;
+import java.io.IOException;
+import java.net.ServerSocket;
+/**
+ * @author Michael Koch
+ * @since 1.4
+ */
public abstract class ServerSocketChannel
extends AbstractSelectableChannel
{
+ /**
+ * Initializes this channel.
+ */
public ServerSocketChannel (SelectorProvider provider)
{
super (provider);
}
+
+ /**
+ * Accepts a connection made to this channel's socket.
+ *
+ * @exception IOException If an error occurs
+ * @exception AsynchronousCloseException If another thread closes this
+ * channel while the accept operation is in progress.
+ * @exception ClosedByInterruptException If another thread interrupts the
+ * current thread while the accept operation is in progress, thereby closing
+ * the channel and setting the current thread's interrupt status.
+ * @exception ClosedChannelException If the channel is closed.
+ * @exception NotYetBoundException If the channel's socket is not yet bound.
+ * @exception SecurityException If a security manager has been installed and
+ * it does not permit access to the remote endpoint of the new connection.
+ */
+ public abstract SocketChannel accept ();
+
+ /**
+ * Retrieves the channels socket.
+ */
+ public abstract ServerSocket socket ();
+
+ /**
+ * Opens a server socket channel.
+ *
+ * @exception IOException If an error occurs
+ */
+ public static ServerSocketChannel open () throws IOException
+ {
+ return SelectorProvider.provider ().openServerSocketChannel ();
+ }
+
+ /**
+ * Retrieves the valid operations for this channel.
+ */
+ public final int validOps ()
+ {
+ return SelectionKey.OP_ACCEPT;
+ }
}
diff --git a/libjava/java/nio/channels/SocketChannel.java b/libjava/java/nio/channels/SocketChannel.java
index dc6e1d2d96a..1d93430947e 100644
--- a/libjava/java/nio/channels/SocketChannel.java
+++ b/libjava/java/nio/channels/SocketChannel.java
@@ -39,12 +39,127 @@ package java.nio.channels;
import java.nio.channels.spi.AbstractSelectableChannel;
import java.nio.channels.spi.SelectorProvider;
+import java.nio.ByteBuffer;
+import java.io.IOException;
+import java.net.Socket;
+import java.net.SocketAddress;
-public abstract class SocketChannel
- extends AbstractSelectableChannel
+/**
+ * @author Michael Koch
+ * @since 1.4
+ */
+abstract public class SocketChannel extends AbstractSelectableChannel
{
- public SocketChannel (SelectorProvider provider)
+ /**
+ * Initializes this socket.
+ */
+ protected SocketChannel (SelectorProvider provider)
{
super (provider);
}
+
+ /**
+ * Opens a socket channel.
+ */
+ public static SocketChannel open () throws IOException
+ {
+ return SelectorProvider.provider ().openSocketChannel ();
+ }
+
+ /**
+ * Opens a channel and connects it to a remote address.
+ */
+ public static SocketChannel open (SocketAddress remote) throws IOException
+ {
+ SocketChannel ch = open ();
+
+ if (ch.connect (remote))
+ {
+ }
+
+ return ch;
+ }
+
+ /**
+ * Reads data from the channel.
+ */
+ public final long read (ByteBuffer[] dsts)
+ {
+ long b = 0;
+
+ for (int i = 0; i < dsts.length; i++)
+ {
+ b += read (dsts [i]);
+ }
+
+ return b;
+ }
+
+ /**
+ * Writes data to the channel.
+ */
+ public final long write (ByteBuffer[] dsts)
+ {
+ long b = 0;
+
+ for (int i= 0; i < dsts.length; i++)
+ {
+ b += write (dsts [i]);
+ }
+
+ return b;
+ }
+
+ /**
+ * Retrieves the valid operations for this channel.
+ */
+ public final int validOps ()
+ {
+ return SelectionKey.OP_CONNECT | SelectionKey.OP_READ | SelectionKey.OP_WRITE;
+ }
+
+ /**
+ * Reads data from the channel.
+ */
+ public abstract int read (ByteBuffer dst);
+
+ /**
+ * Connects the channel's socket to the remote address.
+ */
+ public abstract boolean connect (SocketAddress remote) throws IOException;
+
+ /**
+ * Finishes the process of connecting a socket channel.
+ */
+ public abstract boolean finishConnect ();
+
+ /**
+ * Tells whether or not the channel's socket is connected.
+ */
+ public abstract boolean isConnected ();
+
+ /**
+ * Tells whether or not a connection operation is in progress on this channel.
+ */
+ public abstract boolean isConnectionPending ();
+
+ /**
+ * Reads data from the channel.
+ */
+ public abstract long read (ByteBuffer[] dsts, int offset, int length);
+
+ /**
+ * Retrieves the channel's socket.
+ */
+ public abstract Socket socket ();
+
+ /**
+ * Writes data to the channel.
+ */
+ public abstract int write (ByteBuffer src);
+
+ /**
+ * Writes data to the channel.
+ */
+ public abstract long write (ByteBuffer[] srcs, int offset, int length);
}
diff --git a/libjava/java/nio/channels/spi/AbstractChannel.java b/libjava/java/nio/channels/spi/AbstractChannel.java
deleted file mode 100644
index 3d7fe7ac799..00000000000
--- a/libjava/java/nio/channels/spi/AbstractChannel.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/* AbstractChannel.java --
- Copyright (C) 2002 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package java.nio.channels.spi;
-
-import java.io.IOException;
-import java.nio.channels.Channel;
-
-public abstract class AbstractChannel implements Channel
-{
- boolean opened;
-
- public boolean isOpen()
- {
- return opened;
- }
-
- public void close() throws IOException
- {
- if (! isOpen())
- return;
- }
-}
diff --git a/libjava/java/nio/channels/spi/AbstractInterruptibleChannel.java b/libjava/java/nio/channels/spi/AbstractInterruptibleChannel.java
index 235b995d2de..855087b5f07 100644
--- a/libjava/java/nio/channels/spi/AbstractInterruptibleChannel.java
+++ b/libjava/java/nio/channels/spi/AbstractInterruptibleChannel.java
@@ -41,47 +41,64 @@ import java.io.IOException;
import java.nio.channels.Channel;
import java.nio.channels.InterruptibleChannel;
+/**
+ * @author Michael Koch
+ * @since 1.4
+ */
public abstract class AbstractInterruptibleChannel
implements Channel, InterruptibleChannel
{
- boolean opened = false;
+ boolean opened = true;
- protected AbstractInterruptibleChannel()
+ /**
+ * Initializes the channel.
+ */
+ protected AbstractInterruptibleChannel ()
{
}
- protected final void begin()
+ /**
+ * Marks the beginning of an I/O operation that might block indefinitely.
+ */
+ protected final void begin ()
{
- // Marks the beginning of an I/O operation that might block indefinitely.
}
/**
+ * Closes the channel.
+ *
* @exception IOException If an error occurs
*/
- public final void close() throws IOException
+ public final void close () throws IOException
{
- // Closes this channel.
- implCloseChannel();
+ opened = false;
+ implCloseChannel ();
}
/**
- * @exception AsynchronousCloseException FIXME
- * @exception ClosedByInterruptException FIXME
+ * Marks the end of an I/O operation that might block indefinitely.
+ *
+ * @exception AsynchronousCloseException If the channel was asynchronously
+ * closed.
+ * @exception ClosedByInterruptException If the thread blocked in the
+ * I/O operation was interrupted.
*/
- protected final void end(boolean completed)
+ protected final void end (boolean completed)
{
- // Marks the end of an I/O operation that might block indefinitely.
}
/**
+ * Closes the channel.
+ *
* @exception IOException If an error occurs
*/
- protected abstract void implCloseChannel() throws IOException;
+ protected abstract void implCloseChannel () throws IOException;
- public final boolean isOpen()
+ /**
+ * Tells whether or not this channel is open.
+ */
+ public final boolean isOpen ()
{
- // Tells whether or not this channel is open.
return opened;
}
}
-
diff --git a/libjava/java/nio/channels/spi/AbstractSelectableChannel.java b/libjava/java/nio/channels/spi/AbstractSelectableChannel.java
index 42bb1f24bb4..da03693d2cc 100644
--- a/libjava/java/nio/channels/spi/AbstractSelectableChannel.java
+++ b/libjava/java/nio/channels/spi/AbstractSelectableChannel.java
@@ -1,4 +1,4 @@
-/* AbstractSelectableChannel.java --
+/* AbstractSelectableChannel.java
Copyright (C) 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -37,18 +37,177 @@ exception statement from your version. */
package java.nio.channels.spi;
+import java.io.IOException;
+import java.nio.channels.ClosedChannelException;
import java.nio.channels.SelectableChannel;
+import java.nio.channels.SelectionKey;
+import java.nio.channels.Selector;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
-public abstract class AbstractSelectableChannel
- extends SelectableChannel
+public abstract class AbstractSelectableChannel extends SelectableChannel
{
+ int registered;
+ boolean blocking = true;
+ Object LOCK = new Object ();
+ SelectorProvider provider;
+ List keys;
+
+ /**
+ * Initializes the channel
+ */
protected AbstractSelectableChannel (SelectorProvider provider)
{
+ this.provider = provider;
+ }
+
+ /**
+ * Retrieves the object upon which the configureBlocking and register
+ * methods synchronize.
+ */
+ public final Object blockingLock ()
+ {
+ return LOCK;
+ }
+
+ /**
+ * Adjusts this channel's blocking mode.
+ */
+ public final SelectableChannel configureBlocking (boolean block)
+ {
+ synchronized (LOCK)
+ {
+ blocking = true;
+ implConfigureBlocking (block);
+ }
+
+ return this;
+ }
+
+ /**
+ * Closes this channel.
+ *
+ * @exception IOException If an error occurs
+ */
+ protected final void implCloseChannel ()
+ {
+ implCloseSelectableChannel ();
}
+
+ /**
+ * Closes this selectable channel.
+ */
+ protected abstract void implCloseSelectableChannel ();
+ /**
+ * Adjusts this channel's blocking mode.
+ */
+ protected abstract void implConfigureBlocking (boolean block);
+
+ /**
+ * Tells whether or not every I/O operation on this channel will block
+ * until it completes.
+ */
public final boolean isBlocking()
{
- return true;
+ return blocking;
+ }
+
+ /**
+ * Tells whether or not this channel is currently registered with
+ * any selectors.
+ */
+ public final boolean isRegistered()
+ {
+ return registered > 0;
+ }
+
+ /**
+ * Retrieves the key representing the channel's registration with the
+ * given selector.
+ */
+ public final SelectionKey keyFor(Selector selector)
+ {
+ try
+ {
+ return register (selector, 0, null);
+ }
+ catch (Exception e)
+ {
+ return null;
+ }
}
-}
+ /**
+ * Returns the provider that created this channel.
+ */
+ public final SelectorProvider provider ()
+ {
+ return provider;
+ }
+
+ private SelectionKey locate (Selector selector)
+ {
+ if (keys == null)
+ return null;
+
+ SelectionKey k = null;
+ ListIterator it = keys.listIterator ();
+
+ while (it.hasNext ())
+ {
+ k = (SelectionKey) it.next ();
+ if (k.selector () == selector)
+ {
+ return k;
+ }
+ }
+
+ return k;
+ }
+
+ private void add (SelectionKey key)
+ {
+ if (keys == null)
+ {
+ keys = new LinkedList ();
+ }
+
+ keys.add (key);
+ }
+
+ /**
+ * Registers this channel with the given selector, returning a selection key.
+ *
+ * @exception ClosedChannelException If the channel is already closed.
+ */
+ public final SelectionKey register (Selector selin, int ops, Object att)
+ throws ClosedChannelException
+ {
+ if (!isOpen ())
+ throw new ClosedChannelException();
+
+ SelectionKey k = null;
+ AbstractSelector selector = (AbstractSelector) selin;
+
+ synchronized (LOCK)
+ {
+ k = locate (selector);
+
+ if (k != null)
+ {
+ k.attach (att);
+ }
+ else
+ {
+ k = selector.register (this, ops, att);
+
+ if (k != null)
+ add (k);
+ }
+ }
+
+ return k;
+ }
+}
diff --git a/libjava/java/nio/channels/spi/AbstractSelectionKey.java b/libjava/java/nio/channels/spi/AbstractSelectionKey.java
index e14e3b330ae..01ea4f33fc2 100644
--- a/libjava/java/nio/channels/spi/AbstractSelectionKey.java
+++ b/libjava/java/nio/channels/spi/AbstractSelectionKey.java
@@ -39,28 +39,37 @@ package java.nio.channels.spi;
import java.nio.channels.SelectionKey;
+/**
+ * @since 1.4
+ */
public abstract class AbstractSelectionKey
extends SelectionKey
{
boolean ok = true;
+ /**
+ * Initializes the key.
+ */
protected AbstractSelectionKey ()
{
}
-
+
+ /**
+ * Cancels this key.
+ */
public final void cancel ()
{
if (ok)
- {
- selector ().selectedKeys ().add (this);
- }
+ selector ().selectedKeys ().add (this);
ok = false;
}
+ /**
+ * Tells whether this key is valid or not.
+ */
public final boolean isValid ()
{
return ok;
}
}
-
diff --git a/libjava/java/nio/channels/spi/AbstractSelector.java b/libjava/java/nio/channels/spi/AbstractSelector.java
index 033a8d7f98b..fc0aeca32d9 100644
--- a/libjava/java/nio/channels/spi/AbstractSelector.java
+++ b/libjava/java/nio/channels/spi/AbstractSelector.java
@@ -37,6 +37,7 @@ exception statement from your version. */
package java.nio.channels.spi;
+import java.io.IOException;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.util.List;
@@ -44,57 +45,70 @@ import java.util.Set;
public abstract class AbstractSelector extends Selector
{
- boolean closed = true;
+ boolean closed = false;
SelectorProvider provider;
- protected AbstractSelector(SelectorProvider provider)
+ /**
+ * Initializes the slector.
+ */
+ protected AbstractSelector (SelectorProvider provider)
{
this.provider = provider;
}
- protected final void begin()
+ /**
+ * Marks the beginning of an I/O operation that might block indefinitely.
+ */
+ protected final void begin ()
{
}
/**
+ * Closes the channel.
+ *
* @exception IOException If an error occurs
*/
- public final void close()
+ public final void close () throws IOException
{
if (closed)
return;
+
closed = true;
- implCloseSelector();
+ implCloseSelector ();
}
- protected final void deregister(AbstractSelectionKey key)
+ /**
+ * Tells whether this channel is open or not.
+ */
+ public final boolean isOpen ()
{
- cancelledKeys().remove(key);
+ return ! closed;
}
-
- protected final void end()
+
+ protected final void deregister (AbstractSelectionKey key)
{
+ cancelledKeys ().remove (key);
}
- public final boolean isOpen()
+ protected final void end()
{
- return ! closed;
}
- public final SelectorProvider provider()
+ public final SelectorProvider provider ()
{
return provider;
}
-
+
protected final Set cancelledKeys()
{
return null;
}
-
+
/**
- * @exception IOException If an error occurs
+ * Closes the channel.
*/
- protected abstract void implCloseSelector();
-
- protected abstract SelectionKey register(AbstractSelectableChannel ch, int ops, Object att);
+ protected abstract void implCloseSelector () throws IOException;
+
+ protected abstract SelectionKey register (AbstractSelectableChannel ch,
+ int ops, Object att);
}
diff --git a/libjava/java/nio/channels/spi/SelectorProvider.java b/libjava/java/nio/channels/spi/SelectorProvider.java
index 93ea5378f6b..06017f76edb 100644
--- a/libjava/java/nio/channels/spi/SelectorProvider.java
+++ b/libjava/java/nio/channels/spi/SelectorProvider.java
@@ -1,4 +1,4 @@
-/* SelectorProvider.java --
+/* SelectorProvider.java
Copyright (C) 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -37,12 +37,14 @@ exception statement from your version. */
package java.nio.channels.spi;
+/* import gnu.java.nio.channels.SelectorProviderImpl; */
import java.nio.channels.DatagramChannel;
import java.nio.channels.Pipe;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
/**
+ * @author Michael Koch
* @since 1.4
*/
public abstract class SelectorProvider
@@ -50,33 +52,52 @@ public abstract class SelectorProvider
static SelectorProvider pr;
/**
- * Creates the <code>SelectorProvider<code> object
+ * Initializes the selector provider.
*
* @exception SecurityException If a security manager has been installed and
- * it denies RuntimePermission("selectorProvider")
+ * it denies @see RuntimePermission ("selectorProvider").
*/
- protected SelectorProvider()
+ protected SelectorProvider ()
{
SecurityManager sm = System.getSecurityManager ();
if (sm != null)
sm.checkPermission (new RuntimePermission ("selectorProvider"));
}
-
- public abstract DatagramChannel openDatagramChannel();
-
- public abstract Pipe openPipe();
- public abstract AbstractSelector openSelector();
+ /**
+ * Opens a datagram channel.
+ */
+ public abstract DatagramChannel openDatagramChannel ();
+
+ /**
+ * Opens a pipe.
+ */
+ public abstract Pipe openPipe ();
+
+ /**
+ * Opens a selector.
+ */
+ public abstract AbstractSelector openSelector ();
- public abstract ServerSocketChannel openServerSocketChannel();
+ /**
+ * Opens a server socket channel.
+ */
+ public abstract ServerSocketChannel openServerSocketChannel ();
- public abstract SocketChannel openSocketChannel();
-
/**
- * Returns the global <code>SelectorProvider</code> object
+ * Opens a socket channel.
*/
- public static SelectorProvider provider()
+ public abstract SocketChannel openSocketChannel ();
+
+ /**
+ * Returns the system-wide default selector provider for this invocation
+ * of the Java virtual machine.
+ */
+ public static SelectorProvider provider ()
{
+/* if (pr == null) */
+/* pr = new SelectorProviderImpl (); */
+
return pr;
}
}
diff --git a/libjava/java/nio/charset/CharacterCodingException.java b/libjava/java/nio/charset/CharacterCodingException.java
index 2fba33e9509..f6a283bdaff 100644
--- a/libjava/java/nio/charset/CharacterCodingException.java
+++ b/libjava/java/nio/charset/CharacterCodingException.java
@@ -39,7 +39,10 @@ package java.nio.charset;
import java.io.IOException;
-class CharacterCodingException extends IOException
+/**
+ * @since 1.4
+ */
+public class CharacterCodingException extends IOException
{
/**
* Creates the exception
diff --git a/libjava/java/nio/charset/Charset.java b/libjava/java/nio/charset/Charset.java
index 2a1338feae4..cc60c99b9b6 100644
--- a/libjava/java/nio/charset/Charset.java
+++ b/libjava/java/nio/charset/Charset.java
@@ -37,54 +37,249 @@ exception statement from your version. */
package java.nio.charset;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.spi.CharsetProvider;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import gnu.java.nio.charset.Provider;
-import java.nio.*;
-
-public class Charset
-{
- public static Charset forName(String name)
- {
- return new Charset();
- }
-
-/*
- public CharsetDecoder newDecoder()
- {
- return new CharsetDecoder(this,2,2)
- {
- protected CoderResult decodeLoop(ByteBuffer in,
- CharBuffer out)
- {
- while (in.hasRemaining())
- {
- char a = (char) in.get();
- out.put(a);
- }
- return null;
- }
- };
- }
-
- public CharsetEncoder newEncoder()
- {
- return new CharsetEncoder(this,2,2)
- {
- protected CoderResult encodeLoop(CharBuffer in,
- ByteBuffer out)
- {
- //System.out.println("in encode loop:"+in.hasRemaining());
-
- while (in.hasRemaining())
- {
- char a = in.get();
- out.put((byte)a);
-
- //int len = out.position();
- //System.out.println("pos="+len + ","+a);
- }
- return null;
- }
- };
- }
+/**
+ * @author Jesse Rosenstock
+ * @since 1.4
*/
+public abstract class Charset implements Comparable
+{
+ private static CharsetEncoder cachedEncoder;
+ private static CharsetDecoder cachedDecoder;
+
+ static
+ {
+ synchronized (Charset.class)
+ {
+ cachedEncoder = null;
+ cachedDecoder = null;
+ }
+ }
+
+ private final String canonicalName;
+ private final String[] aliases;
+
+ protected Charset (String canonicalName, String[] aliases)
+ {
+ checkName (canonicalName);
+ if (aliases != null)
+ {
+ int n = aliases.length;
+ for (int i = 0; i < n; ++i)
+ checkName (aliases[i]);
+ }
+
+ this.canonicalName = canonicalName;
+ this.aliases = aliases;
+ }
+
+ /**
+ * @throws IllegalCharsetNameException if the name is illegal
+ */
+ private static void checkName (String name)
+ {
+ int n = name.length ();
+
+ if (n == 0)
+ throw new IllegalCharsetNameException (name);
+
+ char ch = name.charAt (0);
+ if (!(('A' <= ch && ch <= 'Z')
+ || ('a' <= ch && ch <= 'z')
+ || ('0' <= ch && ch <= '9')))
+ throw new IllegalCharsetNameException (name);
+
+ for (int i = 1; i < n; ++i)
+ {
+ ch = name.charAt (i);
+ if (!(('A' <= ch && ch <= 'Z')
+ || ('a' <= ch && ch <= 'z')
+ || ('0' <= ch && ch <= '9')
+ || ch == '-' || ch == '.' || ch == ':' || ch == '_'))
+ throw new IllegalCharsetNameException (name);
+ }
+ }
+
+ public static boolean isSupported (String charsetName)
+ {
+ return charsetForName (charsetName) != null;
+ }
+
+ public static Charset forName (String charsetName)
+ {
+ Charset cs = charsetForName (charsetName);
+ if (cs == null)
+ throw new UnsupportedCharsetException (charsetName);
+ return cs;
+ }
+
+ /**
+ * Retrieves a charset for the given charset name.
+ *
+ * @return A charset object for the charset with the specified name, or
+ * <code>null</code> if no such charset exists.
+ *
+ * @throws IllegalCharsetNameException if the name is illegal
+ */
+ private static Charset charsetForName (String charsetName)
+ {
+ checkName (charsetName);
+ return provider ().charsetForName (charsetName);
+ }
+
+ public static SortedMap availableCharsets ()
+ {
+ TreeMap charsets = new TreeMap (String.CASE_INSENSITIVE_ORDER);
+
+ for (Iterator i = provider ().charsets (); i.hasNext (); )
+ {
+ Charset cs = (Charset) i.next ();
+ charsets.put (cs.name (), cs);
+ }
+
+ return Collections.unmodifiableSortedMap (charsets);
+ }
+
+ // XXX: we need to support multiple providers, reading them from
+ // java.nio.charset.spi.CharsetProvider in the resource directory
+ // META-INF/services
+ private static final CharsetProvider provider ()
+ {
+ return Provider.provider ();
+ }
+
+ public final String name ()
+ {
+ return canonicalName;
+ }
+
+ public final Set aliases ()
+ {
+ if (aliases == null)
+ return Collections.EMPTY_SET;
+
+ // should we cache the aliasSet instead?
+ int n = aliases.length;
+ HashSet aliasSet = new HashSet (n);
+ for (int i = 0; i < n; ++i)
+ aliasSet.add (aliases[i]);
+ return Collections.unmodifiableSet (aliasSet);
+ }
+
+ public String displayName ()
+ {
+ return canonicalName;
+ }
+
+ public String displayName (Locale locale)
+ {
+ return canonicalName;
+ }
+
+ public final boolean isRegistered (String name)
+ {
+ return !name.startsWith ("x-") && !name.startsWith ("X-");
+ }
+
+ public abstract boolean contains (Charset cs);
+
+ public abstract CharsetDecoder newDecoder ();
+
+ public abstract CharsetEncoder newEncoder ();
+
+ public boolean canEncode ()
+ {
+ return true;
+ }
+
+ public final ByteBuffer encode (CharBuffer cb)
+ {
+ try
+ {
+ // NB: This implementation serializes different threads calling
+ // Charset.encode(), a potential performance problem. It might
+ // be better to remove the cache, or use ThreadLocal to cache on
+ // a per-thread basis.
+ synchronized (Charset.class)
+ {
+ if (cachedEncoder == null)
+ {
+ cachedEncoder = newEncoder ()
+ .onMalformedInput (CodingErrorAction.REPLACE)
+ .onUnmappableCharacter (CodingErrorAction.REPLACE);
+ }
+
+ return cachedEncoder.encode (cb);
+ }
+ }
+ catch (CharacterCodingException e)
+ {
+ throw new AssertionError (e);
+ }
+ }
+
+ public final ByteBuffer encode (String str)
+ {
+ return encode (CharBuffer.wrap (str));
+ }
+
+ public CharBuffer decode (ByteBuffer bb)
+ {
+ try
+ {
+ // NB: This implementation serializes different threads calling
+ // Charset.decode(), a potential performance problem. It might
+ // be better to remove the cache, or use ThreadLocal to cache on
+ // a per-thread basis.
+ synchronized (Charset.class)
+ {
+ if (cachedDecoder == null)
+ {
+ cachedDecoder = newDecoder ()
+ .onMalformedInput (CodingErrorAction.REPLACE)
+ .onUnmappableCharacter (CodingErrorAction.REPLACE);
+ }
+
+ return cachedDecoder.decode (bb);
+ }
+ }
+ catch (CharacterCodingException e)
+ {
+ throw new AssertionError (e);
+ }
+ }
+
+ public final int compareTo (Object ob)
+ {
+ return canonicalName.compareToIgnoreCase (((Charset) ob).canonicalName);
+ }
+
+ public final int hashCode ()
+ {
+ return canonicalName.hashCode ();
+ }
+
+ public final boolean equals (Object ob)
+ {
+ if (ob instanceof Charset)
+ return canonicalName.equalsIgnoreCase (((Charset) ob).canonicalName);
+ else
+ return false;
+ }
+
+ public final String toString ()
+ {
+ return canonicalName;
+ }
}
diff --git a/libjava/java/nio/charset/CoderMalfunctionError.java b/libjava/java/nio/charset/CoderMalfunctionError.java
index 16c23bfa224..df57b820a21 100644
--- a/libjava/java/nio/charset/CoderMalfunctionError.java
+++ b/libjava/java/nio/charset/CoderMalfunctionError.java
@@ -40,7 +40,7 @@ package java.nio.charset;
/**
* @since 1.4
*/
-class CoderMalfunctionError extends Error
+public class CoderMalfunctionError extends Error
{
/**
* Creates the error
diff --git a/libjava/java/nio/charset/CodingErrorAction.java b/libjava/java/nio/charset/CodingErrorAction.java
index 463107712f6..1a2e317c7c2 100644
--- a/libjava/java/nio/charset/CodingErrorAction.java
+++ b/libjava/java/nio/charset/CodingErrorAction.java
@@ -37,18 +37,30 @@ exception statement from your version. */
package java.nio.charset;
-
-class CodingErrorAction
+public class CodingErrorAction
{
- public static final CodingErrorAction IGNORE;
- public static final CodingErrorAction REPLACE;
- public static final CodingErrorAction REPORT;
+ public static final CodingErrorAction IGNORE
+ = new CodingErrorAction("ignore");
+ public static final CodingErrorAction REPLACE
+ = new CodingErrorAction("replace");
+ public static final CodingErrorAction REPORT
+ = new CodingErrorAction("report");
+
+ private final String name;
+
+ /**
+ * Private constructor only used to create the constant CodingErrorActions.
+ */
+ private CodingErrorAction(String name)
+ {
+ this.name = name;
+ }
/**
- * FIXME
+ * Returns the name of the CodingErrorAction.
*/
public String toString ()
{
- return "";
+ return name;
}
}
diff --git a/libjava/java/nio/charset/IllegalCharsetNameException.java b/libjava/java/nio/charset/IllegalCharsetNameException.java
index a3e0593327b..762eb687fbf 100644
--- a/libjava/java/nio/charset/IllegalCharsetNameException.java
+++ b/libjava/java/nio/charset/IllegalCharsetNameException.java
@@ -37,17 +37,17 @@ exception statement from your version. */
package java.nio.charset;
-class IllegalCharsetNameException extends IllegalArgumentException
+/**
+ * @since 1.4
+ */
+public class IllegalCharsetNameException extends IllegalArgumentException
{
- private String charsetName;
-
/**
* Creates the exception
*/
public IllegalCharsetNameException (String charsetName)
{
- super ();
- this.charsetName = charsetName;
+ super (charsetName);
}
/**
@@ -55,6 +55,6 @@ class IllegalCharsetNameException extends IllegalArgumentException
*/
public String getCharsetName ()
{
- return charsetName;
+ return getMessage ();
}
}
diff --git a/libjava/java/nio/charset/MalformedInputException.java b/libjava/java/nio/charset/MalformedInputException.java
index 2111b797865..692eed60f94 100644
--- a/libjava/java/nio/charset/MalformedInputException.java
+++ b/libjava/java/nio/charset/MalformedInputException.java
@@ -37,7 +37,10 @@ exception statement from your version. */
package java.nio.charset;
-class MalformedInputException extends CharacterCodingException
+/**
+ * @since 1.4
+ */
+public class MalformedInputException extends CharacterCodingException
{
private int inputLength;
@@ -63,7 +66,6 @@ class MalformedInputException extends CharacterCodingException
*/
public String getMessage ()
{
- // FIXME: I think this is not correct
- return "";
+ return "Input length = " + inputLength;
}
}
diff --git a/libjava/java/nio/charset/UnmappableCharacterException.java b/libjava/java/nio/charset/UnmappableCharacterException.java
index f1714b8ec41..5ae49302d06 100644
--- a/libjava/java/nio/charset/UnmappableCharacterException.java
+++ b/libjava/java/nio/charset/UnmappableCharacterException.java
@@ -37,7 +37,10 @@ exception statement from your version. */
package java.nio.charset;
-class UnmappableCharacterException extends CharacterCodingException
+/**
+ * @since 1.4
+ */
+public class UnmappableCharacterException extends CharacterCodingException
{
private int inputLength;
@@ -63,7 +66,6 @@ class UnmappableCharacterException extends CharacterCodingException
*/
public String getMessage ()
{
- // FIXME: I think this is not correct
- return "";
+ return "Input length = " + inputLength;
}
}
diff --git a/libjava/java/nio/charset/UnsupportedCharsetException.java b/libjava/java/nio/charset/UnsupportedCharsetException.java
index 943164a6837..13aaa520524 100644
--- a/libjava/java/nio/charset/UnsupportedCharsetException.java
+++ b/libjava/java/nio/charset/UnsupportedCharsetException.java
@@ -37,17 +37,17 @@ exception statement from your version. */
package java.nio.charset;
-class UnsupportedCharsetException extends IllegalArgumentException
+/**
+ * @since 1.4
+ */
+public class UnsupportedCharsetException extends IllegalArgumentException
{
- private String charsetName;
-
/**
* Creates the exception
*/
public UnsupportedCharsetException (String charsetName)
{
- super ();
- this.charsetName = charsetName;
+ super (charsetName);
}
/**
@@ -55,6 +55,6 @@ class UnsupportedCharsetException extends IllegalArgumentException
*/
public String getCharsetName ()
{
- return charsetName;
+ return getMessage ();
}
}
diff --git a/libjava/java/security/DummyKeyPairGenerator.java b/libjava/java/security/DummyKeyPairGenerator.java
index d65ec6346bd..3a88b86e01b 100644
--- a/libjava/java/security/DummyKeyPairGenerator.java
+++ b/libjava/java/security/DummyKeyPairGenerator.java
@@ -1,5 +1,5 @@
-/* DummyKeyPairGenerator.java
- Copyright (C) 1999 Free Software Foundation, Inc.
+/* DummyKeyPairGenerator.java - Wrapper for KeyPairGeneratorSpi
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -36,6 +36,7 @@ obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.security;
+
import java.security.spec.AlgorithmParameterSpec;
final class DummyKeyPairGenerator extends KeyPairGenerator
@@ -48,6 +49,17 @@ final class DummyKeyPairGenerator extends KeyPairGenerator
this.kpgSpi = kpgSpi;
}
+ public Object clone() throws CloneNotSupportedException
+ {
+ if (!(kpgSpi instanceof Cloneable))
+ throw new CloneNotSupportedException();
+
+ KeyPairGenerator result = new DummyKeyPairGenerator
+ ((KeyPairGeneratorSpi) kpgSpi.clone(), this.getAlgorithm());
+ result.provider = this.getProvider();
+ return result;
+ }
+
public void initialize(int keysize, SecureRandom random)
{
kpgSpi.initialize(keysize, random);
diff --git a/libjava/java/security/DummyMessageDigest.java b/libjava/java/security/DummyMessageDigest.java
index 9a96d775607..d7e769d328e 100644
--- a/libjava/java/security/DummyMessageDigest.java
+++ b/libjava/java/security/DummyMessageDigest.java
@@ -1,5 +1,5 @@
-/* DummyMessageDigest.java
- Copyright (C) 1999 Free Software Foundation, Inc.
+/* DummyMessageDigest.java - Wrapper for MessageDigestSpi
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -37,10 +37,6 @@ exception statement from your version. */
package java.security;
-import java.security.MessageDigest;
-import java.security.MessageDigestSpi;
-import java.security.DigestException;
-
final class DummyMessageDigest extends MessageDigest
{
private MessageDigestSpi mdSpi = null;
@@ -51,23 +47,47 @@ final class DummyMessageDigest extends MessageDigest
this.mdSpi = mdSpi;
}
- protected void engineUpdate(byte input)
+ public Object clone() throws CloneNotSupportedException
{
- mdSpi.engineUpdate(input);
+ if (!(mdSpi instanceof Cloneable))
+ throw new CloneNotSupportedException();
+
+ MessageDigest result = new DummyMessageDigest
+ ((MessageDigestSpi) mdSpi.clone(), this.getAlgorithm());
+ result.provider = this.getProvider();
+ return result;
}
- protected void engineUpdate(byte[]input, int offset, int len)
+ // java.security.MessageDigestSpi abstract methods implementation ---------
+
+ public byte[] engineDigest()
{
- mdSpi.engineUpdate(input, offset, len);
+ return mdSpi.engineDigest();
}
- protected byte[] engineDigest()
+ public int engineDigest(byte[] buf, int offset, int len)
+ throws DigestException
{
- return mdSpi.engineDigest();
+ return mdSpi.engineDigest(buf, offset, len);
+ }
+
+ public int engineGetDigestLength()
+ {
+ return mdSpi.engineGetDigestLength();
}
- protected void engineReset()
+ public void engineReset()
{
mdSpi.engineReset();
}
+
+ public void engineUpdate(byte input)
+ {
+ mdSpi.engineUpdate(input);
+ }
+
+ public void engineUpdate(byte[] input, int offset, int len)
+ {
+ mdSpi.engineUpdate(input, offset, len);
+ }
}
diff --git a/libjava/java/security/DummySignature.java b/libjava/java/security/DummySignature.java
index 10e08cb4825..850f86d9dbc 100644
--- a/libjava/java/security/DummySignature.java
+++ b/libjava/java/security/DummySignature.java
@@ -1,5 +1,5 @@
-/* DummySignature.java
- Copyright (C) 1999 Free Software Foundation, Inc.
+/* DummySignature.java - Signature wrapper for SignatureSpi.
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -47,6 +47,17 @@ final class DummySignature extends Signature
this.sigSpi = sigSpi;
}
+ public Object clone() throws CloneNotSupportedException
+ {
+ if (!(sigSpi instanceof Cloneable))
+ throw new CloneNotSupportedException();
+
+ Signature result = new DummySignature
+ ((SignatureSpi) sigSpi.clone(), this.getAlgorithm());
+ result.provider = this.getProvider();
+ return result;
+ }
+
protected void engineInitVerify(PublicKey publicKey)
throws InvalidKeyException
{
diff --git a/libjava/java/security/KeyPairGenerator.java b/libjava/java/security/KeyPairGenerator.java
index ea44d53afc2..9ca1aa8ee5e 100644
--- a/libjava/java/security/KeyPairGenerator.java
+++ b/libjava/java/security/KeyPairGenerator.java
@@ -1,5 +1,5 @@
/* KeyPairGenerator.java --- Key Pair Generator Class
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -36,6 +36,7 @@ obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.security;
+
import java.security.spec.AlgorithmParameterSpec;
/**
@@ -51,7 +52,7 @@ import java.security.spec.AlgorithmParameterSpec;
*/
public abstract class KeyPairGenerator extends KeyPairGeneratorSpi
{
- private Provider provider;
+ Provider provider;
private String algorithm;
/**
@@ -83,19 +84,21 @@ public abstract class KeyPairGenerator extends KeyPairGeneratorSpi
@param algorithm the name of algorithm to choose
@return a AlgorithmParameterGenerator repesenting the desired algorithm
- @throws NoSuchAlgorithmException if the algorithm is not implemented by providers
+ @throws NoSuchAlgorithmException if the algorithm is not implemented by
+ providers
*/
public static KeyPairGenerator getInstance(String algorithm) throws
NoSuchAlgorithmException
{
Provider[] p = Security.getProviders();
- String name = "KeyPairGenerator." + algorithm;
for (int i = 0; i < p.length; i++)
{
- String classname = p[i].getProperty(name);
- if (classname != null)
- return getInstance(classname, algorithm, p[i]);
+ try
+ {
+ return getInstance(algorithm, p[i]);
+ }
+ catch (NoSuchAlgorithmException ignored) {}
}
throw new NoSuchAlgorithmException(algorithm);
@@ -110,7 +113,8 @@ public abstract class KeyPairGenerator extends KeyPairGeneratorSpi
@param provider the name of the provider to find the algorithm in
@return a AlgorithmParameterGenerator repesenting the desired algorithm
- @throws NoSuchAlgorithmException if the algorithm is not implemented by the provider
+ @throws NoSuchAlgorithmException if the algorithm is not implemented by
+ the provider
@throws NoSuchProviderException if the provider is not found
*/
public static KeyPairGenerator getInstance(String algorithm, String provider)
@@ -118,10 +122,34 @@ public abstract class KeyPairGenerator extends KeyPairGeneratorSpi
{
Provider p = Security.getProvider(provider);
if (p == null)
- throw new NoSuchProviderException();
+ throw new NoSuchProviderException(provider);
+
+ return getInstance(algorithm, p);
+ }
- return getInstance(p.getProperty("KeyPairGenerator." + algorithm),
- algorithm, p);
+ private static KeyPairGenerator getInstance(String algorithm, Provider p)
+ throws NoSuchAlgorithmException
+ {
+ // try the name as is
+ String className = p.getProperty("KeyPairGenerator." + algorithm);
+ if (className == null) { // try all uppercase
+ String upper = algorithm.toUpperCase();
+ className = p.getProperty("KeyPairGenerator." + upper);
+ if (className == null) { // try if it's an alias
+ String alias = p.getProperty("Alg.Alias.KeyPairGenerator." + algorithm);
+ if (alias == null) { // try all-uppercase alias name
+ alias = p.getProperty("Alg.Alias.KeyPairGenerator." + upper);
+ if (alias == null) { // spit the dummy
+ throw new NoSuchAlgorithmException(algorithm);
+ }
+ }
+ className = p.getProperty("KeyPairGenerator." + alias);
+ if (className == null) {
+ throw new NoSuchAlgorithmException(algorithm);
+ }
+ }
+ }
+ return getInstance(className, algorithm, p);
}
private static KeyPairGenerator getInstance(String classname,
@@ -134,10 +162,7 @@ public abstract class KeyPairGenerator extends KeyPairGeneratorSpi
Object o = Class.forName(classname).newInstance();
KeyPairGenerator kpg;
if (o instanceof KeyPairGeneratorSpi)
- kpg =
- (KeyPairGenerator) (new
- DummyKeyPairGenerator((KeyPairGeneratorSpi) o,
- algorithm));
+ kpg = new DummyKeyPairGenerator((KeyPairGeneratorSpi) o, algorithm);
else
{
kpg = (KeyPairGenerator) o;
diff --git a/libjava/java/security/KeyPairGeneratorSpi.java b/libjava/java/security/KeyPairGeneratorSpi.java
index 9e929e032fb..735dd6498f9 100644
--- a/libjava/java/security/KeyPairGeneratorSpi.java
+++ b/libjava/java/security/KeyPairGeneratorSpi.java
@@ -1,5 +1,5 @@
/* KeyPairGeneratorSpi.java --- Key Pair Generator SPI Class
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -90,4 +90,20 @@ public abstract class KeyPairGeneratorSpi
@return a key pair
*/
public abstract KeyPair generateKeyPair();
+
+ /**
+ Returns a clone of this class.
+
+ If cloning is not supported, then by default the class throws a
+ CloneNotSupportedException. The MessageDigestSpi provider
+ implementation has to overload this class in order to be
+ cloneable.
+ */
+ public Object clone() throws CloneNotSupportedException
+ {
+ if (this instanceof Cloneable)
+ return super.clone();
+ else
+ throw new CloneNotSupportedException();
+ }
}
diff --git a/libjava/java/security/KeyStore.java b/libjava/java/security/KeyStore.java
index e7c80716c40..1627bc5610a 100644
--- a/libjava/java/security/KeyStore.java
+++ b/libjava/java/security/KeyStore.java
@@ -1,5 +1,5 @@
/* KeyStore.java --- Key Store Class
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -92,9 +92,9 @@ public class KeyStore
/**
Gets an instance of the KeyStore class representing
the specified keystore. If the type is not
- found then, it throws CertificateException.
+ found then, it throws KeyStoreException.
- @param type the type of certificate to choose
+ @param type the type of keystore to choose
@return a KeyStore repesenting the desired type
@@ -117,20 +117,26 @@ public class KeyStore
/**
Gets an instance of the KeyStore class representing
the specified key store from the specified provider.
- If the type is not found then, it throws CertificateException.
+ If the type is not found then, it throws KeyStoreException.
If the provider is not found, then it throws
NoSuchProviderException.
- @param type the type of certificate to choose
+ @param type the type of keystore to choose
+ @param provider the provider name
@return a KeyStore repesenting the desired type
- @throws KeyStoreException if the type of keystore is not implemented by providers
+ @throws KeyStoreException if the type of keystore is not
+ implemented by the given provider
@throws NoSuchProviderException if the provider is not found
+ @throws IllegalArgumentException if the provider string is
+ null or empty
*/
public static KeyStore getInstance(String type, String provider)
throws KeyStoreException, NoSuchProviderException
{
+ if (provider == null || provider.length() == 0)
+ throw new IllegalArgumentException("Illegal provider");
Provider p = Security.getProvider(provider);
if (p == null)
throw new NoSuchProviderException();
@@ -138,6 +144,33 @@ public class KeyStore
return getInstance(p.getProperty("KeyStore." + type), type, p);
}
+ /**
+ Gets an instance of the KeyStore class representing
+ the specified key store from the specified provider.
+ If the type is not found then, it throws KeyStoreException.
+ If the provider is not found, then it throws
+ NoSuchProviderException.
+
+ @param type the type of keystore to choose
+ @param provider the keystore provider
+
+ @return a KeyStore repesenting the desired type
+
+ @throws KeyStoreException if the type of keystore is not
+ implemented by the given provider
+ @throws IllegalArgumentException if the provider object is null
+ @since 1.4
+ */
+ public static KeyStore getInstance(String type, Provider provider)
+ throws KeyStoreException
+ {
+ if (provider == null)
+ throw new IllegalArgumentException("Illegal provider");
+
+ return getInstance(provider.getProperty("KeyStore." + type),
+ type, provider);
+ }
+
private static KeyStore getInstance(String classname,
String type,
Provider provider)
diff --git a/libjava/java/security/MessageDigest.java b/libjava/java/security/MessageDigest.java
index be9dfd0896b..10032f22012 100644
--- a/libjava/java/security/MessageDigest.java
+++ b/libjava/java/security/MessageDigest.java
@@ -1,5 +1,6 @@
+
/* MessageDigest.java --- The message digest interface.
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -40,7 +41,7 @@ package java.security;
public abstract class MessageDigest extends MessageDigestSpi
{
private String algorithm;
- private Provider provider;
+ Provider provider;
private byte[] lastDigest;
/**
@@ -63,19 +64,20 @@ public abstract class MessageDigest extends MessageDigestSpi
@param algorithm the name of digest algorithm to choose
@return a MessageDigest representing the desired algorithm
- @exception NoSuchAlgorithmException if the algorithm is not implemented by providers
+ @exception NoSuchAlgorithmException if the algorithm is not implemented by
+ providers
*/
public static MessageDigest getInstance(String algorithm)
throws NoSuchAlgorithmException
{
Provider[] p = Security.getProviders();
- String name = "MessageDigest." + algorithm;
-
for (int i = 0; i < p.length; i++)
{
- String classname = p[i].getProperty(name);
- if (classname != null)
- return getInstance(classname, algorithm, p[i]);
+ try
+ {
+ return getInstance(algorithm, p[i]);
+ }
+ catch (NoSuchAlgorithmException ignored) {}
}
throw new NoSuchAlgorithmException(algorithm);
@@ -92,7 +94,8 @@ public abstract class MessageDigest extends MessageDigestSpi
@param provider the name of the provider to find the algorithm in
@return a MessageDigest representing the desired algorithm
- @exception NoSuchAlgorithmException if the algorithm is not implemented by the provider
+ @exception NoSuchAlgorithmException if the algorithm is not implemented by
+ the provider
@exception NoSuchProviderException if the provider is not found
*/
@@ -104,8 +107,32 @@ public abstract class MessageDigest extends MessageDigestSpi
if (p == null)
throw new NoSuchProviderException(provider);
- return getInstance(p.getProperty("MessageDigest." + algorithm),
- algorithm, p);
+ return getInstance(algorithm, p);
+ }
+
+ private static MessageDigest getInstance(String algorithm, Provider p)
+ throws NoSuchAlgorithmException
+ {
+ // try the name as is
+ String className = p.getProperty("MessageDigest." + algorithm);
+ if (className == null) { // try all uppercase
+ String upper = algorithm.toUpperCase();
+ className = p.getProperty("MessageDigest." + upper);
+ if (className == null) { // try if it's an alias
+ String alias = p.getProperty("Alg.Alias.MessageDigest." +algorithm);
+ if (alias == null) { // try all-uppercase alias name
+ alias = p.getProperty("Alg.Alias.MessageDigest." +upper);
+ if (alias == null) { // spit the dummy
+ throw new NoSuchAlgorithmException(algorithm);
+ }
+ }
+ className = p.getProperty("MessageDigest." + alias);
+ if (className == null) {
+ throw new NoSuchAlgorithmException(algorithm);
+ }
+ }
+ }
+ return getInstance(className, algorithm, p);
}
private static MessageDigest getInstance(String classname,
@@ -116,13 +143,22 @@ public abstract class MessageDigest extends MessageDigestSpi
if (classname == null)
throw new NoSuchAlgorithmException(algorithm);
+ MessageDigest result = null;
try
{
- MessageDigest m =
- (MessageDigest) Class.forName(classname).newInstance();
- m.algorithm = algorithm;
- m.provider = provider;
- return m;
+ Object obj = Class.forName(classname).newInstance();
+ if (obj instanceof MessageDigest) {
+ result = (MessageDigest) obj;
+ result.algorithm = algorithm;
+ } else if (obj instanceof MessageDigestSpi) {
+ result = new DummyMessageDigest((MessageDigestSpi) obj, algorithm);
+ } else {
+ throw new ClassCastException("Class "+classname+" from Provider "
+ +provider.getName()
+ +" does not extend java.security.MessageDigestSpi");
+ }
+ result.provider = provider;
+ return result;
}
catch (ClassNotFoundException cnfe)
{
@@ -212,7 +248,7 @@ public abstract class MessageDigest extends MessageDigestSpi
then computes a final digest and returns it. It calls
update(input) and then digest();
- @param buf An array of bytes to perform final update with
+ @param input An array of bytes to perform final update with
@return a byte array representing the message digest
*/
public byte[] digest(byte[]input)
diff --git a/libjava/java/security/Provider.java b/libjava/java/security/Provider.java
index d3e3581891e..c40a980aaa3 100644
--- a/libjava/java/security/Provider.java
+++ b/libjava/java/security/Provider.java
@@ -1,5 +1,5 @@
/* Provider.java -- Security provider information
- Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -119,16 +119,40 @@ public abstract class Provider extends Properties implements Serializable
}
/**
- * This method sets the specified key to have the specified value.
+ * Sets the key property to have the specified value.
+ * <p>
+ * <bold>NOT IMPLEMENTED YET</bold>[
+ * First, if there is a security manager, its <code>checkSecurityAccess</code>
+ * method is called with the string "putProviderProperty."+name, where name is
+ * the provider name, to see if it's ok to set this provider's property
+ * values.
+ * If the default implementation of <code>checkSecurityAccess</code> is used
+ * (that is, that method is not overriden), then this results in a call to the
+ * security manager's <code>checkPermission</code> method with a
+ * <code>SecurityPermission("putProviderProperty."+name)</code>
+ * permission.<br>]
*
- * @param key The property key
- * @param value The property value
+ * @param key The property key.
+ * @param value The property value.
*
- * @return The previous value for this key, or <code>null</code> if no previous value.
+ * @return The previous value of the specified property (<code>key</code>),
+ * or <code>null</code> if it did not have one.
+ * @throws SecurityException If a security manager exists and its
+ * {@link java.lang.SecurityManager.checkSecurityAccess(java.lang.String)}
+ * method denies access to set property values.
+ * @since Classpath 0.4+cvs, JDK 1.2
+ * @see java.lang.Object.equals(Object)
+ * @see java.util.Hashtable.get(Object)
*/
public Object put(Object key, Object value)
{
- return (super.put(key, value));
+ return super.put(toCanonicalKey(key), value);
+ }
+
+ // overrides same in java.util.Hashtable
+ public Object get(Object key)
+ {
+ return super.get(toCanonicalKey(key));
}
/**
@@ -137,11 +161,12 @@ public abstract class Provider extends Properties implements Serializable
*
* @param key The key to remove
*
- * @return The previous value for this key, or <code>null</code> if no previous value.
+ * @return The previous value for this key, or <code>null</code> if no
+ * previous value.
*/
public Object remove(Object key)
{
- return (super.remove(key));
+ return super.remove(toCanonicalKey(key));
}
/**
@@ -166,4 +191,12 @@ public abstract class Provider extends Properties implements Serializable
return (getClass().getName() + ": name=" + getName() + " version=" +
version);
}
+
+ private Object toCanonicalKey(Object key)
+ {
+ if (key.getClass().isAssignableFrom(String.class)) // is it ours?
+ return ((String) key).toUpperCase(); // use default locale
+ else
+ return key;
+ }
}
diff --git a/libjava/java/security/Security.java b/libjava/java/security/Security.java
index 9ae90ba365c..8c84c3f7978 100644
--- a/libjava/java/security/Security.java
+++ b/libjava/java/security/Security.java
@@ -1,5 +1,5 @@
/* Security.java --- Java base security class implmentation
- Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -127,8 +127,8 @@ public final class Security extends Object
}
/**
- Gets a specific property for an algorithm. This is used to produce specialized
- algorithm parsers.
+ Gets a specific property for an algorithm. This is used to produce
+ specialized algorithm parsers.
@deprecated it used to a return the value of a propietary property
for the "SUN" Cryptographic Service Provider to obtain
@@ -147,21 +147,37 @@ public final class Security extends Object
}
/**
- Adds a new provider at the specified position. This allows dynamic loading
- of providers. It will check for duplication of providers.
-
- This class checks the security manager with the call checkSecurityAccess
- with "insertProvider."+provider.getName() to see if the user can add this
- provider.
-
- @param provider the provider to add
- @param position position to add the provider at
-
- @return the position the provider was added at, or -1 if a duplicate provider
- was found
-
- @throws SecurityException - if the security manager denies access to add a
- new provider
+ Adds a new provider, at a specified position. The position is the
+ preference order in which providers are searched for requested algorithms.
+ Note that it is not guaranteed that this preference will be respected. The
+ position is 1-based, that is, 1 is most preferred, followed by 2, and so
+ on.
+ <p>
+ If the given provider is installed at the requested position, the
+ provider that used to be at that position, and all providers with a
+ position greater than position, are shifted up one position (towards the
+ end of the list of installed providers).
+ <p>
+ A provider cannot be added if it is already installed.
+ <p>
+ <b>NOT IMPLEMENTED YET:</b>[
+ First, if there is a security manager, its <code>checkSecurityAccess</code>
+ method is called with the string
+ <code>"insertProvider."+provider.getName()</code>
+ to see if it's ok to add a new provider. If the default implementation of
+ <code>checkSecurityAccess</code> is used (i.e., that method is not
+ overriden), then this will result in a call to the security manager's
+ <code>checkPermission</code> method with a <code>SecurityPermission(
+ "insertProvider."+provider.getName())</code> permission.]
+
+ @param provider the provider to be added.
+ @param position the preference position that the caller would like for
+ this provider.
+ @return the actual preference position (1-based) in which the provider was
+ added, or -1 if the provider was not added because it is already installed.
+ @throws SecurityException if a security manager exists and its <code>
+ SecurityManager.checkSecurityAccess(java.lang.String)</code> method denies
+ access to add a new provider.
*/
public static int insertProviderAt(Provider provider, int position)
{
@@ -169,6 +185,7 @@ public final class Security extends Object
if (sm != null)
sm.checkSecurityAccess("insertProvider." + provider.getName());
+ position--;
int max = providers.size ();
for (int i = 0; i < max; i++)
{
@@ -184,29 +201,33 @@ public final class Security extends Object
providers.insertElementAt(provider, position);
- return position;
+ return position + 1;
}
/**
- Adds a new provider. This allows dynamic loading
- of providers. It will check for duplication of providers.
-
- This method checks the security manager with the call checkSecurityAccess
- with "insertProvider."+provider.getName() to see if the user can add this
- provider.
-
- @param provider the provider to add
-
- @return the position the provider was added at, or -1 if a duplicate provider
- was found
-
- @throws SecurityException - if the security manager denies access to add a
- new provider
+ Adds a provider to the next position available.
+ <p>
+ <b>NOT IMPLEMENTED YET:</b> [
+ First, if there is a security manager, its <code>checkSecurityAccess</code>
+ method is called with the string
+ <code>"insertProvider."+provider.getName()</code>
+ to see if it's ok to add a new provider. If the default implementation of
+ <code>checkSecurityAccess</code> is used (i.e., that method is not
+ overriden), then this will result in a call to the security manager's
+ <code>checkPermission</code> method with a <code>SecurityPermission(
+ "insertProvider."+provider.getName())</code> permission.]
+
+ @param provider the provider to be added.
+ @return the preference position in which the provider was added, or <code>
+ -1</code> if the provider was not added because it is already installed.
+ @throws SecurityException if a security manager exists and its <code>
+ SecurityManager.checkSecurityAccess(java.lang.String)</code> method denies
+ access to add a new provider.
*/
public static int addProvider(Provider provider)
{
- return insertProviderAt (provider, providers.size ());
+ return insertProviderAt (provider, providers.size () + 1);
}
/**
@@ -215,13 +236,13 @@ public final class Security extends Object
ranking. If the provider is not installed, it fails silently.
This method checks the security manager with the call checkSecurityAccess
- with "removeProvider."+provider.getName() to see if the user can remove this
- provider.
+ with "removeProvider."+provider.getName() to see if the user can remove
+ this provider.
@param name name of the provider to add
- @throws SecurityException - if the security manager denies access to remove a
- new provider
+ @throws SecurityException - if the security manager denies access to
+ remove a new provider
*/
public static void removeProvider(String name)
{
diff --git a/libjava/java/security/Signature.java b/libjava/java/security/Signature.java
index 8650c2774db..209a7df7604 100644
--- a/libjava/java/security/Signature.java
+++ b/libjava/java/security/Signature.java
@@ -1,5 +1,5 @@
/* Signature.java --- Signature Class
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -58,15 +58,12 @@ import java.security.spec.AlgorithmParameterSpec;
1. Initialing
- * It must be initialized with a private key for
- signing.
- * It must be initialized with a public key for
- verifying.
+ * It must be initialized with a private key for signing.
+ * It must be initialized with a public key for verifying.
2. Updating
- Update the bytes for signing or verifying with calls
- to update.
+ Update the bytes for signing or verifying with calls to update.
3. Signing or Verify the signature on the currently stored
bytes by calling sign or verify.
@@ -100,7 +97,7 @@ public abstract class Signature extends SignatureSpi
protected int state = UNINITIALIZED;
private String algorithm;
- private Provider provider;
+ Provider provider;
/**
Creates a new signature for this algorithm.
@@ -113,7 +110,7 @@ public abstract class Signature extends SignatureSpi
state = UNINITIALIZED;
}
- /**
+ /**
Gets an instance of the Signature class representing
the specified signature. If the algorithm is not found then,
it throws NoSuchAlgorithmException.
@@ -121,19 +118,21 @@ public abstract class Signature extends SignatureSpi
@param algorithm the name of signature algorithm to choose
@return a Signature repesenting the desired algorithm
- @throws NoSuchAlgorithmException if the algorithm is not implemented by providers
+ @throws NoSuchAlgorithmException if the algorithm is not implemented by
+ providers
*/
public static Signature getInstance(String algorithm)
throws NoSuchAlgorithmException
{
- String name = "Signature." + algorithm;
Provider[] p = Security.getProviders();
for (int i = 0; i < p.length; i++)
{
- String classname = p[i].getProperty(name);
- if (classname != null)
- return getInstance(classname, algorithm, p[i]);
+ try
+ {
+ return getInstance(algorithm, p[i]);
+ }
+ catch (NoSuchAlgorithmException ignored) {}
}
throw new NoSuchAlgorithmException(algorithm);
@@ -150,7 +149,8 @@ public abstract class Signature extends SignatureSpi
@param provider the name of the provider to find the algorithm in
@return a Signature repesenting the desired algorithm
- @throws NoSuchAlgorithmException if the algorithm is not implemented by the provider
+ @throws NoSuchAlgorithmException if the algorithm is not implemented by
+ the provider
@throws NoSuchProviderException if the provider is not found
*/
public static Signature getInstance(String algorithm, String provider)
@@ -158,9 +158,34 @@ public abstract class Signature extends SignatureSpi
{
Provider p = Security.getProvider(provider);
if (p == null)
- throw new NoSuchProviderException();
+ throw new NoSuchProviderException(provider);
+
+ return getInstance(algorithm, p);
+ }
- return getInstance(p.getProperty("Signature." + algorithm), algorithm, p);
+ private static Signature getInstance(String algorithm, Provider p)
+ throws NoSuchAlgorithmException
+ {
+ // try the name as is
+ String className = p.getProperty("Signature." + algorithm);
+ if (className == null) { // try all uppercase
+ String upper = algorithm.toUpperCase();
+ className = p.getProperty("Signature." + upper);
+ if (className == null) { // try if it's an alias
+ String alias = p.getProperty("Alg.Alias.Signature." + algorithm);
+ if (alias == null) {
+ alias = p.getProperty("Alg.Alias.Signature." + upper);
+ if (alias == null) { // spit the dummy
+ throw new NoSuchAlgorithmException(algorithm);
+ }
+ }
+ className = p.getProperty("Signature." + alias);
+ if (className == null) {
+ throw new NoSuchAlgorithmException(algorithm);
+ }
+ }
+ }
+ return getInstance(className, algorithm, p);
}
private static Signature getInstance(String classname,
@@ -173,7 +198,7 @@ public abstract class Signature extends SignatureSpi
Object o = Class.forName(classname).newInstance();
Signature sig;
if (o instanceof SignatureSpi)
- sig = (Signature) (new DummySignature((SignatureSpi) o, algorithm));
+ sig = new DummySignature((SignatureSpi) o, algorithm);
else
{
sig = (Signature) o;
@@ -200,7 +225,7 @@ public abstract class Signature extends SignatureSpi
/**
Gets the provider that the Signature is from.
- @return the provider the this Signature
+ @return the provider of this Signature
*/
public final Provider getProvider()
{
@@ -310,7 +335,7 @@ public abstract class Signature extends SignatureSpi
initial state and can be used to generate additional
signatures.
- @param outbuff array of bytes
+ @param outbuf array of bytes
@param offset the offset to start at in the array
@param len the length of the bytes to put into the array.
Neither this method or the GNU provider will
@@ -325,7 +350,7 @@ public abstract class Signature extends SignatureSpi
@since JDK 1.2
*/
- public final int sign(byte[]outbuf, int offset, int len)
+ public final int sign(byte[] outbuf, int offset, int len)
throws SignatureException
{
if (state == SIGN)
diff --git a/libjava/java/text/Format.java b/libjava/java/text/Format.java
index fa7ddbbf4c2..804ef43ff29 100644
--- a/libjava/java/text/Format.java
+++ b/libjava/java/text/Format.java
@@ -59,6 +59,8 @@ import java.io.Serializable;
*/
public abstract class Format implements Serializable, Cloneable
{
+ static final long serialVersionUID = -299282585814624189L;
+
/**
* This method initializes a new instance of <code>Format</code>.
* It performs no actions, but acts as a default constructor for
diff --git a/libjava/java/util/AbstractMap.java b/libjava/java/util/AbstractMap.java
index 11c8f5b544c..4be5f3dbd94 100644
--- a/libjava/java/util/AbstractMap.java
+++ b/libjava/java/util/AbstractMap.java
@@ -466,6 +466,11 @@ public abstract class AbstractMap implements Map
return AbstractMap.this.size();
}
+ public boolean contains(Object value)
+ {
+ return containsValue(value);
+ }
+
public Iterator iterator()
{
return new Iterator()
@@ -527,8 +532,9 @@ public abstract class AbstractMap implements Map
* @author Jon Zeppieri
* @author Eric Blake <ebb9@email.byu.edu>
*/
+ // XXX - FIXME Use fully qualified implements as gcj 3.1 workaround.
static class BasicMapEntry implements Map.Entry
- { // XXX - FIXME Use fully qualified implements as gcj 3.1 workaround.
+ {
/**
* The key. Package visible for direct manipulation.
*/
@@ -553,16 +559,14 @@ public abstract class AbstractMap implements Map
/**
* Compares the specified object with this entry. Returns true only if
* the object is a mapping of identical key and value. In other words,
- * this must be:
- *
-<pre>(o instanceof Map.Entry) &&
-(getKey() == null ? ((HashMap) o).getKey() == null
- : getKey().equals(((HashMap) o).getKey())) &&
-(getValue() == null ? ((HashMap) o).getValue() == null
- : getValue().equals(((HashMap) o).getValue()))</pre>
+ * this must be:<br>
+ * <pre>(o instanceof Map.Entry)
+ * && (getKey() == null ? ((HashMap) o).getKey() == null
+ * : getKey().equals(((HashMap) o).getKey()))
+ * && (getValue() == null ? ((HashMap) o).getValue() == null
+ * : getValue().equals(((HashMap) o).getValue()))</pre>
*
* @param o the object to compare
- *
* @return <code>true</code> if it is equal
*/
public final boolean equals(Object o)
@@ -605,10 +609,9 @@ public abstract class AbstractMap implements Map
/**
* Returns the hash code of the entry. This is defined as the exclusive-or
* of the hashcodes of the key and value (using 0 for null). In other
- * words, this must be:
- *
-<pre>(getKey() == null ? 0 : getKey().hashCode())
-^ (getValue() == null ? 0 : getValue().hashCode())</pre>
+ * words, this must be:<br>
+ * <pre>(getKey() == null ? 0 : getKey().hashCode())
+ * ^ (getValue() == null ? 0 : getValue().hashCode())</pre>
*
* @return the hash code
*/
diff --git a/libjava/java/util/HashMap.java b/libjava/java/util/HashMap.java
index a78eb9a1ff5..9faca0339d1 100644
--- a/libjava/java/util/HashMap.java
+++ b/libjava/java/util/HashMap.java
@@ -180,6 +180,15 @@ public class HashMap extends AbstractMap
}
/**
+ * Called when this entry is accessed via {@link #put(Object, Object)}.
+ * This version does nothing, but in LinkedHashMap, it must do some
+ * bookkeeping for access-traversal mode.
+ */
+ void access()
+ {
+ }
+
+ /**
* Called when this entry is removed from the map. This version simply
* returns the value, but in LinkedHashMap, it must also do bookkeeping.
*
@@ -338,8 +347,12 @@ public class HashMap extends AbstractMap
while (e != null)
{
if (equals(key, e.key))
- // Must use this method for necessary bookkeeping in LinkedHashMap.
- return e.setValue(value);
+ {
+ e.access(); // Must call this for bookkeeping in LinkedHashMap.
+ Object r = e.value;
+ e.value = value;
+ return r;
+ }
else
e = e.next;
}
@@ -368,8 +381,8 @@ public class HashMap extends AbstractMap
public void putAll(Map m)
{
Iterator itr = m.entrySet().iterator();
-
- for (int msize = m.size(); msize > 0; msize--)
+ int msize = m.size();
+ while (msize-- > 0)
{
Map.Entry e = (Map.Entry) itr.next();
// Optimize in case the Entry is one of our own.
@@ -379,9 +392,7 @@ public class HashMap extends AbstractMap
put(entry.key, entry.value);
}
else
- {
- put(e.getKey(), e.getValue());
- }
+ put(e.getKey(), e.getValue());
}
}
@@ -520,7 +531,7 @@ public class HashMap extends AbstractMap
public boolean remove(Object o)
{
// Test against the size of the HashMap to determine if anything
- // really got removed. This is neccessary because the return value
+ // really got removed. This is necessary because the return value
// of HashMap.remove() is ambiguous in the null case.
int oldsize = size;
HashMap.this.remove(o);
@@ -634,7 +645,6 @@ public class HashMap extends AbstractMap
void addEntry(Object key, Object value, int idx, boolean callRemove)
{
HashEntry e = new HashEntry(key, value);
-
e.next = buckets[idx];
buckets[idx] = e;
}
@@ -648,17 +658,18 @@ public class HashMap extends AbstractMap
* @see #entrySet()
*/
// Package visible, for use in nested classes.
- HashEntry getEntry(Object o)
+ final HashEntry getEntry(Object o)
{
- if (!(o instanceof Map.Entry))
+ if (! (o instanceof Map.Entry))
return null;
Map.Entry me = (Map.Entry) o;
- int idx = hash(me.getKey());
+ Object key = me.getKey();
+ int idx = hash(key);
HashEntry e = buckets[idx];
while (e != null)
{
- if (e.equals(me))
- return e;
+ if (equals(e.key, key))
+ return equals(e.value, me.getValue()) ? e : null;
e = e.next;
}
return null;
@@ -699,9 +710,8 @@ public class HashMap extends AbstractMap
{
Iterator itr = m.entrySet().iterator();
int msize = m.size();
- this.size = msize;
-
- for (; msize > 0; msize--)
+ size = msize;
+ while (msize-- > 0)
{
Map.Entry e = (Map.Entry) itr.next();
Object key = e.getKey();
@@ -742,9 +752,7 @@ public class HashMap extends AbstractMap
dest.next = e;
}
else
- {
- buckets[idx] = e;
- }
+ buckets[idx] = e;
HashEntry next = e.next;
e.next = null;
@@ -797,13 +805,14 @@ public class HashMap extends AbstractMap
// Read the threshold and loadFactor fields.
s.defaultReadObject();
- // Read and use capacity.
+ // Read and use capacity, followed by key/value pairs.
buckets = new HashEntry[s.readInt()];
int len = s.readInt();
-
- // Read and use key/value pairs.
- for ( ; len > 0; len--)
- put(s.readObject(), s.readObject());
+ while (len-- > 0)
+ {
+ Object key = s.readObject();
+ addEntry(key, s.readObject(), hash(key), false);
+ }
}
/**
diff --git a/libjava/java/util/LinkedHashMap.java b/libjava/java/util/LinkedHashMap.java
index 2716ac100d0..0a8484bae88 100644
--- a/libjava/java/util/LinkedHashMap.java
+++ b/libjava/java/util/LinkedHashMap.java
@@ -1,6 +1,6 @@
/* LinkedHashMap.java -- a class providing hashtable data structure,
mapping Object --> Object, with linked list traversal
- Copyright (C) 2001 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -50,8 +50,17 @@ package java.util;
* can cause primary clustering) and rehashing (which does not fit very
* well with Java's method of precomputing hash codes) are avoided. In
* addition, this maintains a doubly-linked list which tracks either
- * insertion or access order. Note that the insertion order is not
- * modified if a <code>put</code> simply reinserts a key in the map.
+ * insertion or access order.
+ * <p>
+ *
+ * In insertion order, calling <code>put</code> adds the key to the end of
+ * traversal, unless the key was already in the map; changing traversal order
+ * requires removing and reinserting a key. On the other hand, in access
+ * order, all calls to <code>put</code> and <code>get</code> cause the
+ * accessed key to move to the end of the traversal list. Note that any
+ * accesses to the map's contents via its collection views and iterators do
+ * not affect the map's traversal order, since the collection views do not
+ * call <code>put</code> or <code>get</code>.
* <p>
*
* One of the nice features of tracking insertion order is that you can
@@ -61,19 +70,19 @@ package java.util;
* <p>
*
* When using this {@link #LinkedHashMap(int, float, boolean) constructor},
- * you build an access-order mapping. This can be used to implement LRU
- * caches, for example. In this case, every invocation of <code>put</code>,
- * <code>putAll</code>, or <code>get</code> moves the accessed entry to
- * the end of the iteration list. By overriding
- * {@link #removeEldestEntry(Map.Entry)}, you can also control the
- * removal of the oldest entry, and thereby do things like keep the map
- * at a fixed size.
+ * you can build an access-order mapping. This can be used to implement LRU
+ * caches, for example. By overriding {@link #removeEldestEntry(Map.Entry)},
+ * you can also control the removal of the oldest entry, and thereby do
+ * things like keep the map at a fixed size.
* <p>
*
* Under ideal circumstances (no collisions), LinkedHashMap offers O(1)
* performance on most operations (<code>containsValue()</code> is,
* of course, O(n)). In the worst case (all keys map to the same
- * hash code -- very unlikely), most operations are O(n).
+ * hash code -- very unlikely), most operations are O(n). Traversal is
+ * faster than in HashMap (proportional to the map size, and not the space
+ * allocated for the map), but other operations may be slower because of the
+ * overhead of the maintaining the traversal order list.
* <p>
*
* LinkedHashMap accepts the null key and null values. It is not
@@ -105,19 +114,15 @@ public class LinkedHashMap extends HashMap
private static final long serialVersionUID = 3801124242820219131L;
/**
- * The first Entry to iterate over.
- */
- transient LinkedHashEntry head;
-
- /**
- * The last Entry to iterate over.
+ * The oldest Entry to begin iteration at.
*/
- transient LinkedHashEntry tail;
+ transient LinkedHashEntry root;
/**
* The iteration order of this linked hash map: <code>true</code> for
* access-order, <code>false</code> for insertion-order.
- * @serial
+ *
+ * @serial true for access order traversal
*/
final boolean accessOrder;
@@ -127,69 +132,91 @@ public class LinkedHashMap extends HashMap
*/
class LinkedHashEntry extends HashEntry
{
- /** The predecessor in the iteration list, null if this is the eldest. */
+ /**
+ * The predecessor in the iteration list. If this entry is the root
+ * (eldest), pred points to the newest entry.
+ */
LinkedHashEntry pred;
+
/** The successor in the iteration list, null if this is the newest. */
LinkedHashEntry succ;
/**
* Simple constructor.
+ *
* @param key the key
* @param value the value
*/
LinkedHashEntry(Object key, Object value)
{
super(key, value);
- if (head == null)
- head = this;
- pred = tail;
- tail = this;
- if (pred != null)
- pred.succ = this;
+ if (root == null)
+ {
+ root = this;
+ pred = this;
+ }
+ else
+ {
+ pred = root.pred;
+ pred.succ = this;
+ root.pred = this;
+ }
}
/**
- * Sets the value of this entry, and shuffles it to the end of
- * the list if this is in access-order.
- * @param value the new value
- * @return the prior value
+ * Called when this entry is accessed via put or get. This version does
+ * the necessary bookkeeping to keep the doubly-linked list in order,
+ * after moving this element to the newest position in access order.
*/
- public Object setValue(Object value)
+ void access()
{
if (accessOrder && succ != null)
{
- succ.pred = pred;
- if (pred == null)
- head = succ;
+ modCount++;
+ if (this == root)
+ {
+ root = succ;
+ pred.succ = this;
+ succ = null;
+ }
else
- pred.succ = succ;
- succ = null;
- pred = tail;
- pred.succ = this;
- tail = this;
+ {
+ pred.succ = succ;
+ succ.pred = pred;
+ succ = null;
+ pred = root.pred;
+ pred.succ = this;
+ }
}
- return super.setValue(value);
}
/**
* Called when this entry is removed from the map. This version does
* the necessary bookkeeping to keep the doubly-linked list in order.
+ *
* @return the value of this key as it is removed
*/
Object cleanup()
{
- if (pred == null)
- head = succ;
- else
- pred.succ = succ;
- if (succ == null)
- tail = pred;
+ if (this == root)
+ {
+ root = succ;
+ if (succ != null)
+ succ.pred = pred;
+ }
+ else if (succ == null)
+ {
+ pred.succ = null;
+ root.pred = pred;
+ }
else
- succ.pred = pred;
-
+ {
+ pred.succ = succ;
+ succ.pred = pred;
+ }
return value;
}
- }
+ } // class LinkedHashEntry
/**
* Construct a new insertion-ordered LinkedHashMap with the default
@@ -253,10 +280,9 @@ public class LinkedHashMap extends HashMap
* Construct a new LinkedHashMap with a specific inital capacity, load
* factor, and ordering mode.
*
- * @param initialCapacity the initial capacity (>=0)
- * @param loadFactor the load factor (>0, not NaN)
+ * @param initialCapacity the initial capacity (&gt;=0)
+ * @param loadFactor the load factor (&gt;0, not NaN)
* @param accessOrder true for access-order, false for insertion-order
- *
* @throws IllegalArgumentException if (initialCapacity &lt; 0) ||
* ! (loadFactor &gt; 0.0)
*/
@@ -273,8 +299,7 @@ public class LinkedHashMap extends HashMap
public void clear()
{
super.clear();
- head = null;
- tail = null;
+ root = null;
}
/**
@@ -282,12 +307,11 @@ public class LinkedHashMap extends HashMap
* <code>o</code>, such that <code>o.equals(value)</code>.
*
* @param value the value to search for in this HashMap
- *
* @return <code>true</code> if at least one key maps to the value
*/
public boolean containsValue(Object value)
{
- LinkedHashEntry e = head;
+ LinkedHashEntry e = root;
while (e != null)
{
if (equals(value, e.value))
@@ -318,23 +342,7 @@ public class LinkedHashMap extends HashMap
{
if (equals(key, e.key))
{
- if (accessOrder)
- {
- modCount++;
- LinkedHashEntry l = (LinkedHashEntry) e;
- if (l.succ != null)
- {
- l.succ.pred = l.pred;
- if (l.pred == null)
- head = l.succ;
- else
- l.pred.succ = l.succ;
- l.succ = null;
- l.pred = tail;
- tail.succ = l;
- tail = l;
- }
- }
+ e.access();
return e.value;
}
e = e.next;
@@ -352,20 +360,21 @@ public class LinkedHashMap extends HashMap
* <p>
*
* For example, to keep the Map limited to 100 entries, override as follows:
- *
-<pre>private static final int MAX_ENTRIES = 100;
-
-protected boolean removeEldestEntry(Map.Entry eldest)
-{
- return size() &gt; MAX_ENTRIES;
-}
-</pre><p>
+ * <pre>
+ * private static final int MAX_ENTRIES = 100;
+ * protected boolean removeEldestEntry(Map.Entry eldest)
+ * {
+ * return size() &gt; MAX_ENTRIES;
+ * }
+ * </pre><p>
*
* Typically, this method does not modify the map, but just uses the
* return value as an indication to <code>put</code> whether to proceed.
* However, if you override it to modify the map, you must return false
- * (indicating that <code>put</code> should do nothing), or face
- * unspecified behavior.
+ * (indicating that <code>put</code> should leave the modified map alone),
+ * or you face unspecified behavior. Remember that in access-order mode,
+ * even calling <code>get</code> is a structural modification, but using
+ * the collections views (such as <code>keySet</code>) is not.
* <p>
*
* This method is called after the eldest entry has been inserted, so
@@ -378,7 +387,6 @@ protected boolean removeEldestEntry(Map.Entry eldest)
* returns true. For an access-order map, this is the least
* recently accessed; for an insertion-order map, this is the
* earliest element inserted.
- *
* @return true if <code>eldest</code> should be removed
*/
protected boolean removeEldestEntry(Map.Entry eldest)
@@ -396,33 +404,33 @@ protected boolean removeEldestEntry(Map.Entry eldest)
* @param callRemove whether to call the removeEldestEntry method
* @see #put(Object, Object)
* @see #removeEldestEntry(Map.Entry)
+ * @see LinkedHashEntry#LinkedHashEntry(Object, Object)
*/
void addEntry(Object key, Object value, int idx, boolean callRemove)
{
LinkedHashEntry e = new LinkedHashEntry(key, value);
-
e.next = buckets[idx];
buckets[idx] = e;
-
- if (callRemove && removeEldestEntry(head))
- remove(head);
+ if (callRemove && removeEldestEntry(root))
+ remove(root);
}
/**
* Helper method, called by clone() to reset the doubly-linked list.
+ *
* @param m the map to add entries from
* @see #clone()
*/
void putAllInternal(Map m)
{
- head = null;
- tail = null;
+ root = null;
super.putAllInternal(m);
}
/**
* Generates a parameterized iterator. This allows traversal to follow
* the doubly-linked list instead of the random bin order of HashMap.
+ *
* @param type {@link #KEYS}, {@link #VALUES}, or {@link #ENTRIES}
* @return the appropriate iterator
*/
@@ -430,17 +438,18 @@ protected boolean removeEldestEntry(Map.Entry eldest)
{
return new Iterator()
{
- /** The current Entry */
- LinkedHashEntry current = head;
+ /** The current Entry. */
+ LinkedHashEntry current = root;
- /** The previous Entry returned by next() */
+ /** The previous Entry returned by next(). */
LinkedHashEntry last;
- /** The number of known modifications to the backing HashMap */
+ /** The number of known modifications to the backing Map. */
int knownMod = modCount;
/**
* Returns true if the Iterator has more elements.
+ *
* @return true if there are more elements
* @throws ConcurrentModificationException if the HashMap was modified
*/
@@ -453,6 +462,7 @@ protected boolean removeEldestEntry(Map.Entry eldest)
/**
* Returns the next element in the Iterator's sequential view.
+ *
* @return the next element
* @throws ConcurrentModificationException if the HashMap was modified
* @throws NoSuchElementException if there is none
@@ -473,7 +483,6 @@ protected boolean removeEldestEntry(Map.Entry eldest)
* with the <code>next()</code> method.
*
* @throws ConcurrentModificationException if the HashMap was modified
- *
* @throws IllegalStateException if called when there is no last element
*/
public void remove()
@@ -482,11 +491,10 @@ protected boolean removeEldestEntry(Map.Entry eldest)
throw new ConcurrentModificationException();
if (last == null)
throw new IllegalStateException();
-
LinkedHashMap.this.remove(last.key);
last = null;
knownMod++;
}
};
}
-}
+} // class LinkedHashMap
diff --git a/libjava/java/util/jar/Attributes.java b/libjava/java/util/jar/Attributes.java
index 0bf27bdb9ec..ea203446eaa 100644
--- a/libjava/java/util/jar/Attributes.java
+++ b/libjava/java/util/jar/Attributes.java
@@ -1,5 +1,5 @@
/* Attributes.java -- Represents attribute name/value pairs from a Manifest
- Copyright (C) 2000 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -285,6 +285,7 @@ public class Attributes implements Cloneable, Map
// all other characters must be alphanums, '-' or '_'
for (int i = 1; i < chars.length; i++)
{
+ c = chars[i];
if (!((c >= 'a' && c <= 'z') ||
(c >= 'A' && c <= 'Z') ||
(c >= '0' && c <= '9') || (c == '-') || (c == '_')))
diff --git a/libjava/java/util/zip/GZIPInputStream.java b/libjava/java/util/zip/GZIPInputStream.java
index 07e4959e474..68fda79dc88 100644
--- a/libjava/java/util/zip/GZIPInputStream.java
+++ b/libjava/java/util/zip/GZIPInputStream.java
@@ -1,5 +1,5 @@
/* GZIPInputStream.java - Input filter for reading gzip file
- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -141,28 +141,34 @@ public class GZIPInputStream extends InflaterInputStream
if (r == -1)
{
eos = true;
- int header_crc = read4 ();
+
+ byte[] tmp = new byte[8];
+ // First copy remaining bytes from inflater input buffer.
+ int avail = inf.getRemaining ();
+ System.arraycopy (this.buf, this.len - avail, tmp, 0, avail);
+
+ // Now read remaining bytes from wrapped input stream.
+ for (int i = avail; i < 8; ++i)
+ {
+ tmp[i] = (byte) eof_read ();
+ }
+
+ int header_crc = read4 (tmp, 0);
if (crc.getValue() != header_crc)
- throw new ZipException ("corrupted gzip file");
- // Read final `ISIZE' field.
- // FIXME: should we check this length?
- read4 ();
+ throw new ZipException ("corrupted gzip file - crc mismatch");
+ int isize = read4 (tmp, 4);
+ if (inf.getTotalOut() != isize)
+ throw new ZipException ("corrupted gzip file - size mismatch");
return -1;
}
crc.update(buf, off, r);
return r;
}
- private final int read4 () throws IOException
+ private final int read4 (byte[] buf, int offset) throws IOException
{
- int byte0 = in.read();
- int byte1 = in.read();
- int byte2 = in.read();
- int byte3 = in.read();
- if (byte3 < 0)
- throw new ZipException (".zip archive ended prematurely");
- return ((byte3 & 0xFF) << 24) + ((byte2 & 0xFF) << 16)
- + ((byte1 & 0xFF) << 8) + (byte0 & 0xFF);
+ return (((buf[offset + 3] & 0xFF) << 24) + ((buf[offset + 2] & 0xFF) << 16)
+ + ((buf[offset + 1] & 0xFF) << 8) + (buf[offset] & 0xFF));
}
// Checksum used by this input stream.
diff --git a/libjava/javax/naming/AuthenticationException.java b/libjava/javax/naming/AuthenticationException.java
index 105b7f3e59b..112dd612e6f 100644
--- a/libjava/javax/naming/AuthenticationException.java
+++ b/libjava/javax/naming/AuthenticationException.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* AuthenticationException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
- This file is part of libgcj.
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming;
diff --git a/libjava/javax/naming/AuthenticationNotSupportedException.java b/libjava/javax/naming/AuthenticationNotSupportedException.java
index 2078285bf86..6409e6490fa 100644
--- a/libjava/javax/naming/AuthenticationNotSupportedException.java
+++ b/libjava/javax/naming/AuthenticationNotSupportedException.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* AuthenticationNotSupportedException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
- This file is part of libgcj.
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming;
diff --git a/libjava/javax/naming/BinaryRefAddr.java b/libjava/javax/naming/BinaryRefAddr.java
index 6942aec3ed0..793552a9e65 100644
--- a/libjava/javax/naming/BinaryRefAddr.java
+++ b/libjava/javax/naming/BinaryRefAddr.java
@@ -51,7 +51,7 @@ import java.util.Arrays;
public class BinaryRefAddr extends RefAddr
{
static final long serialVersionUID = -3415254970957330361L;
-
+
/**
* The possibly null content of this RefAddr.
* Set by the constructor and returned by getContent.
diff --git a/libjava/javax/naming/Binding.java b/libjava/javax/naming/Binding.java
index e8ee4a24571..45f0d13ea5f 100644
--- a/libjava/javax/naming/Binding.java
+++ b/libjava/javax/naming/Binding.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* Binding.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
- This file is part of libgcj.
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming;
diff --git a/libjava/javax/naming/CannotProceedException.java b/libjava/javax/naming/CannotProceedException.java
index f35e147b2df..f98541876d9 100644
--- a/libjava/javax/naming/CannotProceedException.java
+++ b/libjava/javax/naming/CannotProceedException.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* CannotProceedException.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
- This file is part of libgcj.
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming;
diff --git a/libjava/javax/naming/CommunicationException.java b/libjava/javax/naming/CommunicationException.java
index f5e67efe3ef..8731be15acb 100644
--- a/libjava/javax/naming/CommunicationException.java
+++ b/libjava/javax/naming/CommunicationException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* CommunicationException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming;
import java.lang.Exception;
diff --git a/libjava/javax/naming/CompositeName.java b/libjava/javax/naming/CompositeName.java
index afc85d53f23..71cdaaf7ba9 100644
--- a/libjava/javax/naming/CompositeName.java
+++ b/libjava/javax/naming/CompositeName.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* CompositeName.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
- This file is part of libgcj.
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming;
diff --git a/libjava/javax/naming/CompoundName.java b/libjava/javax/naming/CompoundName.java
index 4e9f5bd8a00..686a3a3d348 100644
--- a/libjava/javax/naming/CompoundName.java
+++ b/libjava/javax/naming/CompoundName.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* CompoundName.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming;
diff --git a/libjava/javax/naming/ConfigurationException.java b/libjava/javax/naming/ConfigurationException.java
index 9f8013b8813..7df4603c5a0 100644
--- a/libjava/javax/naming/ConfigurationException.java
+++ b/libjava/javax/naming/ConfigurationException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* ConfigurationException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming;
import java.lang.Exception;
diff --git a/libjava/javax/naming/Context.java b/libjava/javax/naming/Context.java
index 32dab766fbe..5720dc40221 100644
--- a/libjava/javax/naming/Context.java
+++ b/libjava/javax/naming/Context.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* Context.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming;
diff --git a/libjava/javax/naming/ContextNotEmptyException.java b/libjava/javax/naming/ContextNotEmptyException.java
index 24cb5b64e12..74204db54ba 100644
--- a/libjava/javax/naming/ContextNotEmptyException.java
+++ b/libjava/javax/naming/ContextNotEmptyException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* ContextNotEmptyException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming;
import java.lang.Exception;
diff --git a/libjava/javax/naming/InitialContext.java b/libjava/javax/naming/InitialContext.java
index 6ee6a9a8e54..99ae426e9ab 100644
--- a/libjava/javax/naming/InitialContext.java
+++ b/libjava/javax/naming/InitialContext.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000 Free Software Foundation
-
- This file is part of libgcj.
-
- This software is copyrighted work licensed under the terms of the
- Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
- details. */
+/* InitialContext.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
package javax.naming;
diff --git a/libjava/javax/naming/InsufficientResourcesException.java b/libjava/javax/naming/InsufficientResourcesException.java
index 6d3e97635cf..120033dd143 100644
--- a/libjava/javax/naming/InsufficientResourcesException.java
+++ b/libjava/javax/naming/InsufficientResourcesException.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* InsufficientResourcesException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
- This file is part of libgcj.
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming;
diff --git a/libjava/javax/naming/InterruptedNamingException.java b/libjava/javax/naming/InterruptedNamingException.java
index f9897ec7de3..e5ad1f864af 100644
--- a/libjava/javax/naming/InterruptedNamingException.java
+++ b/libjava/javax/naming/InterruptedNamingException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* InterruptedNamingException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming;
import java.lang.Exception;
diff --git a/libjava/javax/naming/LimitExceededException.java b/libjava/javax/naming/LimitExceededException.java
index 5490faf9f62..4bbbb0f496a 100644
--- a/libjava/javax/naming/LimitExceededException.java
+++ b/libjava/javax/naming/LimitExceededException.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* LimitExceededException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
- This file is part of libgcj.
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming;
diff --git a/libjava/javax/naming/LinkException.java b/libjava/javax/naming/LinkException.java
index 6512c926c24..46ea6bd0b14 100644
--- a/libjava/javax/naming/LinkException.java
+++ b/libjava/javax/naming/LinkException.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* LinkException.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming;
diff --git a/libjava/javax/naming/LinkLoopException.java b/libjava/javax/naming/LinkLoopException.java
index f2f333cf621..0c2bdddd876 100644
--- a/libjava/javax/naming/LinkLoopException.java
+++ b/libjava/javax/naming/LinkLoopException.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* LinkLoopException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
- This file is part of libgcj.
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming;
diff --git a/libjava/javax/naming/LinkRef.java b/libjava/javax/naming/LinkRef.java
index 703eb7476a0..a8a22adca8f 100644
--- a/libjava/javax/naming/LinkRef.java
+++ b/libjava/javax/naming/LinkRef.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* LinkRef.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
- This file is part of libgcj.
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming;
diff --git a/libjava/javax/naming/MalformedLinkException.java b/libjava/javax/naming/MalformedLinkException.java
index 5f2f6998881..5233e772365 100644
--- a/libjava/javax/naming/MalformedLinkException.java
+++ b/libjava/javax/naming/MalformedLinkException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* MalformedLinkException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming;
import java.lang.Exception;
diff --git a/libjava/javax/naming/NameAlreadyBoundException.java b/libjava/javax/naming/NameAlreadyBoundException.java
index da2ddbc52a7..2b57436285a 100644
--- a/libjava/javax/naming/NameAlreadyBoundException.java
+++ b/libjava/javax/naming/NameAlreadyBoundException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* NameAlreadyBoundException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming;
import java.lang.Exception;
diff --git a/libjava/javax/naming/NameClassPair.java b/libjava/javax/naming/NameClassPair.java
index 3d4c0a78370..2f115598641 100644
--- a/libjava/javax/naming/NameClassPair.java
+++ b/libjava/javax/naming/NameClassPair.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* NameClassPair.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
- This file is part of libgcj.
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming;
diff --git a/libjava/javax/naming/NameNotFoundException.java b/libjava/javax/naming/NameNotFoundException.java
index f69c161fc59..cb22ab371e2 100644
--- a/libjava/javax/naming/NameNotFoundException.java
+++ b/libjava/javax/naming/NameNotFoundException.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* NameNotFoundException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
- This file is part of libgcj.
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming;
diff --git a/libjava/javax/naming/NameParser.java b/libjava/javax/naming/NameParser.java
index 366feac0ab7..0bd2a7a8a6e 100644
--- a/libjava/javax/naming/NameParser.java
+++ b/libjava/javax/naming/NameParser.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* NameParser.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
- This file is part of libgcj.
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming;
diff --git a/libjava/javax/naming/NamingEnumeration.java b/libjava/javax/naming/NamingEnumeration.java
index aed4d76578f..4340c1287bf 100644
--- a/libjava/javax/naming/NamingEnumeration.java
+++ b/libjava/javax/naming/NamingEnumeration.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* NamingEnumeration.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
- This file is part of libgcj.
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming;
diff --git a/libjava/javax/naming/NamingSecurityException.java b/libjava/javax/naming/NamingSecurityException.java
index 15501ef92b0..71d538a0b0e 100644
--- a/libjava/javax/naming/NamingSecurityException.java
+++ b/libjava/javax/naming/NamingSecurityException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* NamingSecurityException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming;
import java.lang.Exception;
diff --git a/libjava/javax/naming/NoInitialContextException.java b/libjava/javax/naming/NoInitialContextException.java
index 1d13939c210..a1220dfb879 100644
--- a/libjava/javax/naming/NoInitialContextException.java
+++ b/libjava/javax/naming/NoInitialContextException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* NoInitialContextException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming;
import java.lang.Exception;
diff --git a/libjava/javax/naming/NoPermissionException.java b/libjava/javax/naming/NoPermissionException.java
index 4d1ceb5a3b2..261b7ff2614 100644
--- a/libjava/javax/naming/NoPermissionException.java
+++ b/libjava/javax/naming/NoPermissionException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* NoPermissionException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming;
import java.lang.Exception;
diff --git a/libjava/javax/naming/NotContextException.java b/libjava/javax/naming/NotContextException.java
index 7a681b9981d..87edeb31967 100644
--- a/libjava/javax/naming/NotContextException.java
+++ b/libjava/javax/naming/NotContextException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* NotContextException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming;
import java.lang.Exception;
diff --git a/libjava/javax/naming/OperationNotSupportedException.java b/libjava/javax/naming/OperationNotSupportedException.java
index 6259b1ee535..7278118d905 100644
--- a/libjava/javax/naming/OperationNotSupportedException.java
+++ b/libjava/javax/naming/OperationNotSupportedException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* OperationNotSupportedException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming;
public class OperationNotSupportedException extends NamingException
diff --git a/libjava/javax/naming/PartialResultException.java b/libjava/javax/naming/PartialResultException.java
index 4e827d69217..6f323d59dcf 100644
--- a/libjava/javax/naming/PartialResultException.java
+++ b/libjava/javax/naming/PartialResultException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* PartialResultException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming;
import java.lang.Exception;
diff --git a/libjava/javax/naming/Reference.java b/libjava/javax/naming/Reference.java
index dbd3418cfe2..7309ebd293f 100644
--- a/libjava/javax/naming/Reference.java
+++ b/libjava/javax/naming/Reference.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation
+/* Reference.java --
+ Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming;
diff --git a/libjava/javax/naming/Referenceable.java b/libjava/javax/naming/Referenceable.java
index feb97fc63c5..50170b9ac4d 100644
--- a/libjava/javax/naming/Referenceable.java
+++ b/libjava/javax/naming/Referenceable.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* Referenceable.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
- This file is part of libgcj.
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming;
diff --git a/libjava/javax/naming/ReferralException.java b/libjava/javax/naming/ReferralException.java
index 9e815f969b0..5becc6b3162 100644
--- a/libjava/javax/naming/ReferralException.java
+++ b/libjava/javax/naming/ReferralException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* ReferralException.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming;
import java.lang.Exception;
diff --git a/libjava/javax/naming/ServiceUnavailableException.java b/libjava/javax/naming/ServiceUnavailableException.java
index de76f286f6a..43aee5354f7 100644
--- a/libjava/javax/naming/ServiceUnavailableException.java
+++ b/libjava/javax/naming/ServiceUnavailableException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* ServiceUnavailableException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming;
import java.lang.Exception;
diff --git a/libjava/javax/naming/SizeLimitExceededException.java b/libjava/javax/naming/SizeLimitExceededException.java
index 2d6c1e6db49..5d4414f7bf4 100644
--- a/libjava/javax/naming/SizeLimitExceededException.java
+++ b/libjava/javax/naming/SizeLimitExceededException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* SizeLimitExceededException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming;
import java.lang.Exception;
diff --git a/libjava/javax/naming/TimeLimitExceededException.java b/libjava/javax/naming/TimeLimitExceededException.java
index d3124f4c605..dc8dadf1e33 100644
--- a/libjava/javax/naming/TimeLimitExceededException.java
+++ b/libjava/javax/naming/TimeLimitExceededException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000 Free Software Foundation
+/* TimeLimitExceededException.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming;
import java.lang.Exception;
diff --git a/libjava/javax/naming/directory/Attribute.java b/libjava/javax/naming/directory/Attribute.java
index 5c2b933871c..d04a12c36f4 100644
--- a/libjava/javax/naming/directory/Attribute.java
+++ b/libjava/javax/naming/directory/Attribute.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* Attribute.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.directory;
import javax.naming.*;
diff --git a/libjava/javax/naming/directory/AttributeInUseException.java b/libjava/javax/naming/directory/AttributeInUseException.java
index 118d991f9e2..70959554270 100644
--- a/libjava/javax/naming/directory/AttributeInUseException.java
+++ b/libjava/javax/naming/directory/AttributeInUseException.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation
+/* AttributeInUseException.java --
+ Copyright (C) 2000, 2001 Free Software Foundation, Inc.
- This file is part of libgcj.
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming.directory;
diff --git a/libjava/javax/naming/directory/AttributeModificationException.java b/libjava/javax/naming/directory/AttributeModificationException.java
index 898f7a4689e..0012458007b 100644
--- a/libjava/javax/naming/directory/AttributeModificationException.java
+++ b/libjava/javax/naming/directory/AttributeModificationException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* AttributeModificationException.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.directory;
import javax.naming.NamingException;
diff --git a/libjava/javax/naming/directory/Attributes.java b/libjava/javax/naming/directory/Attributes.java
index f76d593cd60..7f5ac47c210 100644
--- a/libjava/javax/naming/directory/Attributes.java
+++ b/libjava/javax/naming/directory/Attributes.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* Attributes.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.directory;
import javax.naming.*;
diff --git a/libjava/javax/naming/directory/BasicAttribute.java b/libjava/javax/naming/directory/BasicAttribute.java
index 8ccb67abc40..6bf77f1712e 100644
--- a/libjava/javax/naming/directory/BasicAttribute.java
+++ b/libjava/javax/naming/directory/BasicAttribute.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation
+/* BasicAttribute.java --
+ Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming.directory;
diff --git a/libjava/javax/naming/directory/BasicAttributes.java b/libjava/javax/naming/directory/BasicAttributes.java
index 935612c2277..331a3c2a3e7 100644
--- a/libjava/javax/naming/directory/BasicAttributes.java
+++ b/libjava/javax/naming/directory/BasicAttributes.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation
+/* BasicAttributes.java --
+ Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming.directory;
diff --git a/libjava/javax/naming/directory/DirContext.java b/libjava/javax/naming/directory/DirContext.java
index 4b82231e6d4..aabad173e38 100644
--- a/libjava/javax/naming/directory/DirContext.java
+++ b/libjava/javax/naming/directory/DirContext.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* DirContext.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.directory;
import javax.naming.*;
diff --git a/libjava/javax/naming/directory/InitialDirContext.java b/libjava/javax/naming/directory/InitialDirContext.java
index 185528f699b..05c48af89ad 100644
--- a/libjava/javax/naming/directory/InitialDirContext.java
+++ b/libjava/javax/naming/directory/InitialDirContext.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation
+/* InitialDirContext.java --
+ Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming.directory;
diff --git a/libjava/javax/naming/directory/InvalidAttributeIdentifierException.java b/libjava/javax/naming/directory/InvalidAttributeIdentifierException.java
index 3c2b38f222c..e48d4835261 100644
--- a/libjava/javax/naming/directory/InvalidAttributeIdentifierException.java
+++ b/libjava/javax/naming/directory/InvalidAttributeIdentifierException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation
+/* InvalidAttributeIdentifierException.java --
+ Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.directory;
import javax.naming.NamingException;
diff --git a/libjava/javax/naming/directory/InvalidAttributeValueException.java b/libjava/javax/naming/directory/InvalidAttributeValueException.java
index 5a07604a57a..b9f62237f44 100644
--- a/libjava/javax/naming/directory/InvalidAttributeValueException.java
+++ b/libjava/javax/naming/directory/InvalidAttributeValueException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation
+/* InvalidAttributeValueException.java --
+ Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.directory;
import javax.naming.NamingException;
diff --git a/libjava/javax/naming/directory/InvalidAttributesException.java b/libjava/javax/naming/directory/InvalidAttributesException.java
index ce13acb124d..a7a8cc61f27 100644
--- a/libjava/javax/naming/directory/InvalidAttributesException.java
+++ b/libjava/javax/naming/directory/InvalidAttributesException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation
+/* InvalidAttributesException.java --
+ Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.directory;
import javax.naming.NamingException;
diff --git a/libjava/javax/naming/directory/InvalidSearchControlsException.java b/libjava/javax/naming/directory/InvalidSearchControlsException.java
index f0c535a7d92..38325cee4b4 100644
--- a/libjava/javax/naming/directory/InvalidSearchControlsException.java
+++ b/libjava/javax/naming/directory/InvalidSearchControlsException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation
+/* InvalidSearchControlsException.java --
+ Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.directory;
import javax.naming.NamingException;
diff --git a/libjava/javax/naming/directory/InvalidSearchFilterException.java b/libjava/javax/naming/directory/InvalidSearchFilterException.java
index e1bb61c9295..b6e009c8894 100644
--- a/libjava/javax/naming/directory/InvalidSearchFilterException.java
+++ b/libjava/javax/naming/directory/InvalidSearchFilterException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation
+/* InvalidSearchFilterException.java --
+ Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.directory;
import javax.naming.NamingException;
diff --git a/libjava/javax/naming/directory/ModificationItem.java b/libjava/javax/naming/directory/ModificationItem.java
index 963abee883e..b32fd6f7aa5 100644
--- a/libjava/javax/naming/directory/ModificationItem.java
+++ b/libjava/javax/naming/directory/ModificationItem.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* ModificationItem.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.directory;
import java.io.Serializable;
diff --git a/libjava/javax/naming/directory/NoSuchAttributeException.java b/libjava/javax/naming/directory/NoSuchAttributeException.java
index 0c5ee1c3bc2..48598bba628 100644
--- a/libjava/javax/naming/directory/NoSuchAttributeException.java
+++ b/libjava/javax/naming/directory/NoSuchAttributeException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation
+/* NoSuchAttributeException.java --
+ Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.directory;
import javax.naming.NamingException;
diff --git a/libjava/javax/naming/directory/SchemaViolationException.java b/libjava/javax/naming/directory/SchemaViolationException.java
index 6fc5b1d4090..56afc114733 100644
--- a/libjava/javax/naming/directory/SchemaViolationException.java
+++ b/libjava/javax/naming/directory/SchemaViolationException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation
+/* SchemaViolationException.java --
+ Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.directory;
import javax.naming.NamingException;
diff --git a/libjava/javax/naming/directory/SearchControls.java b/libjava/javax/naming/directory/SearchControls.java
index d2b3e2453a9..21b97403f65 100644
--- a/libjava/javax/naming/directory/SearchControls.java
+++ b/libjava/javax/naming/directory/SearchControls.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* SearchControls.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.directory;
import java.io.Serializable;
diff --git a/libjava/javax/naming/directory/SearchResult.java b/libjava/javax/naming/directory/SearchResult.java
index 956c32cd502..5d339635566 100644
--- a/libjava/javax/naming/directory/SearchResult.java
+++ b/libjava/javax/naming/directory/SearchResult.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* SearchResult.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.directory;
import javax.naming.*;
import java.io.Serializable;
diff --git a/libjava/javax/naming/event/EventContext.java b/libjava/javax/naming/event/EventContext.java
index 80565391bb4..c4936ab4419 100644
--- a/libjava/javax/naming/event/EventContext.java
+++ b/libjava/javax/naming/event/EventContext.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* EventContext.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.event;
import javax.naming.*;
diff --git a/libjava/javax/naming/event/EventDirContext.java b/libjava/javax/naming/event/EventDirContext.java
index 7321d0cc2c2..0c3a5d14347 100644
--- a/libjava/javax/naming/event/EventDirContext.java
+++ b/libjava/javax/naming/event/EventDirContext.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* EventDirContext.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.event;
import javax.naming.*;
import javax.naming.directory.*;
diff --git a/libjava/javax/naming/event/NamespaceChangeListener.java b/libjava/javax/naming/event/NamespaceChangeListener.java
index 5469d0437b2..9eeecd0eee5 100644
--- a/libjava/javax/naming/event/NamespaceChangeListener.java
+++ b/libjava/javax/naming/event/NamespaceChangeListener.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* NamespaceChangeListener.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.event;
/**
diff --git a/libjava/javax/naming/event/NamingEvent.java b/libjava/javax/naming/event/NamingEvent.java
index 3151dd84024..2415704e122 100644
--- a/libjava/javax/naming/event/NamingEvent.java
+++ b/libjava/javax/naming/event/NamingEvent.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* NamingEvent.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.event;
import javax.naming.*;
import java.util.EventObject;
diff --git a/libjava/javax/naming/event/NamingExceptionEvent.java b/libjava/javax/naming/event/NamingExceptionEvent.java
index 2cbdcb1141f..79f23dd3844 100644
--- a/libjava/javax/naming/event/NamingExceptionEvent.java
+++ b/libjava/javax/naming/event/NamingExceptionEvent.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* NamingExceptionEvent.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.event;
import javax.naming.*;
import java.util.EventObject;
diff --git a/libjava/javax/naming/event/NamingListener.java b/libjava/javax/naming/event/NamingListener.java
index b631ccb384e..59ff4185a72 100644
--- a/libjava/javax/naming/event/NamingListener.java
+++ b/libjava/javax/naming/event/NamingListener.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* NamingListener.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.event;
import java.util.EventListener;
diff --git a/libjava/javax/naming/event/ObjectChangeListener.java b/libjava/javax/naming/event/ObjectChangeListener.java
index 9da3473a9d6..99426bbd8ac 100644
--- a/libjava/javax/naming/event/ObjectChangeListener.java
+++ b/libjava/javax/naming/event/ObjectChangeListener.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* ObjectChangeListener.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.event;
/**
diff --git a/libjava/javax/naming/ldap/Control.java b/libjava/javax/naming/ldap/Control.java
index 156af9661ae..7fed89418b3 100644
--- a/libjava/javax/naming/ldap/Control.java
+++ b/libjava/javax/naming/ldap/Control.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* Control.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.ldap;
import java.io.Serializable;
diff --git a/libjava/javax/naming/ldap/ControlFactory.java b/libjava/javax/naming/ldap/ControlFactory.java
index 8c988ab16dd..a9acd3d7e48 100644
--- a/libjava/javax/naming/ldap/ControlFactory.java
+++ b/libjava/javax/naming/ldap/ControlFactory.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* ControlFactory.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.ldap;
import javax.naming.*;
diff --git a/libjava/javax/naming/ldap/ExtendedRequest.java b/libjava/javax/naming/ldap/ExtendedRequest.java
index af5a0fbabf9..dd6b538a669 100644
--- a/libjava/javax/naming/ldap/ExtendedRequest.java
+++ b/libjava/javax/naming/ldap/ExtendedRequest.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* ExtendedRequest.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.ldap;
import java.io.Serializable;
import javax.naming.*;
diff --git a/libjava/javax/naming/ldap/ExtendedResponse.java b/libjava/javax/naming/ldap/ExtendedResponse.java
index 73dd96ebed2..3591e6ddb9d 100644
--- a/libjava/javax/naming/ldap/ExtendedResponse.java
+++ b/libjava/javax/naming/ldap/ExtendedResponse.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* ExtendedResponse.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.ldap;
import java.io.Serializable;
diff --git a/libjava/javax/naming/ldap/HasControls.java b/libjava/javax/naming/ldap/HasControls.java
index c37d30c3ede..bf4b0018412 100644
--- a/libjava/javax/naming/ldap/HasControls.java
+++ b/libjava/javax/naming/ldap/HasControls.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* HasControls.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.ldap;
import javax.naming.*;
diff --git a/libjava/javax/naming/ldap/InitialLdapContext.java b/libjava/javax/naming/ldap/InitialLdapContext.java
index 88d0e26ec65..7a7d7ad720f 100644
--- a/libjava/javax/naming/ldap/InitialLdapContext.java
+++ b/libjava/javax/naming/ldap/InitialLdapContext.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* InitialLdapContext.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.ldap;
import javax.naming.*;
diff --git a/libjava/javax/naming/ldap/LdapContext.java b/libjava/javax/naming/ldap/LdapContext.java
index 204269e337b..c61639434ce 100644
--- a/libjava/javax/naming/ldap/LdapContext.java
+++ b/libjava/javax/naming/ldap/LdapContext.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* LdapContext.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.ldap;
import javax.naming.*;
import javax.naming.directory.*;
diff --git a/libjava/javax/naming/ldap/LdapReferralException.java b/libjava/javax/naming/ldap/LdapReferralException.java
index 165371052c5..a4b4f0a622c 100644
--- a/libjava/javax/naming/ldap/LdapReferralException.java
+++ b/libjava/javax/naming/ldap/LdapReferralException.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* LdapReferralException.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.ldap;
import javax.naming.*;
import java.util.Hashtable;
diff --git a/libjava/javax/naming/ldap/UnsolicitedNotification.java b/libjava/javax/naming/ldap/UnsolicitedNotification.java
index 539d5999267..b185d798a76 100644
--- a/libjava/javax/naming/ldap/UnsolicitedNotification.java
+++ b/libjava/javax/naming/ldap/UnsolicitedNotification.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* UnsolicitedNotification.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.ldap;
import javax.naming.*;
diff --git a/libjava/javax/naming/ldap/UnsolicitedNotificationEvent.java b/libjava/javax/naming/ldap/UnsolicitedNotificationEvent.java
index fe1e4042bcd..93d9144232e 100644
--- a/libjava/javax/naming/ldap/UnsolicitedNotificationEvent.java
+++ b/libjava/javax/naming/ldap/UnsolicitedNotificationEvent.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* UnsolicitedNotificationEvent.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.ldap;
import java.util.EventObject;
diff --git a/libjava/javax/naming/ldap/UnsolicitedNotificationListener.java b/libjava/javax/naming/ldap/UnsolicitedNotificationListener.java
index 2f22a618096..c01f5453299 100644
--- a/libjava/javax/naming/ldap/UnsolicitedNotificationListener.java
+++ b/libjava/javax/naming/ldap/UnsolicitedNotificationListener.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* UnsolicitedNotificationListener.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.ldap;
import javax.naming.event.*;
diff --git a/libjava/javax/naming/spi/DirObjectFactory.java b/libjava/javax/naming/spi/DirObjectFactory.java
index 6749ff31634..c80aeeb5c4b 100644
--- a/libjava/javax/naming/spi/DirObjectFactory.java
+++ b/libjava/javax/naming/spi/DirObjectFactory.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* DirObjectFactory.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.spi;
import javax.naming.*;
import javax.naming.directory.*;
diff --git a/libjava/javax/naming/spi/DirStateFactory.java b/libjava/javax/naming/spi/DirStateFactory.java
index dbd35c7cc3c..03d6c8d1cda 100644
--- a/libjava/javax/naming/spi/DirStateFactory.java
+++ b/libjava/javax/naming/spi/DirStateFactory.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* DirStateFactory.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.spi;
import javax.naming.*;
import javax.naming.directory.*;
diff --git a/libjava/javax/naming/spi/DirectoryManager.java b/libjava/javax/naming/spi/DirectoryManager.java
index 33872f41594..78b960c745f 100644
--- a/libjava/javax/naming/spi/DirectoryManager.java
+++ b/libjava/javax/naming/spi/DirectoryManager.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation
-
- This file is part of libgcj.
-
- This software is copyrighted work licensed under the terms of the
- Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
- details. */
+/* DirectoryManager.java --
+ Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
package javax.naming.spi;
diff --git a/libjava/javax/naming/spi/InitialContextFactory.java b/libjava/javax/naming/spi/InitialContextFactory.java
index 493b3f5234f..57a421ecf88 100644
--- a/libjava/javax/naming/spi/InitialContextFactory.java
+++ b/libjava/javax/naming/spi/InitialContextFactory.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000 Free Software Foundation
-
- This file is part of libgcj.
-
- This software is copyrighted work licensed under the terms of the
- Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
- details. */
+/* InitialContextFactory.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
package javax.naming.spi;
diff --git a/libjava/javax/naming/spi/InitialContextFactoryBuilder.java b/libjava/javax/naming/spi/InitialContextFactoryBuilder.java
index e4ae85f7d3e..39d7eeb0d67 100644
--- a/libjava/javax/naming/spi/InitialContextFactoryBuilder.java
+++ b/libjava/javax/naming/spi/InitialContextFactoryBuilder.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000 Free Software Foundation
-
- This file is part of libgcj.
-
- This software is copyrighted work licensed under the terms of the
- Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
- details. */
+/* InitialContextFactoryBuilder.java --
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
package javax.naming.spi;
diff --git a/libjava/javax/naming/spi/NamingManager.java b/libjava/javax/naming/spi/NamingManager.java
index d3f419f00b4..bb3d87253d7 100644
--- a/libjava/javax/naming/spi/NamingManager.java
+++ b/libjava/javax/naming/spi/NamingManager.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2000, 2001, 2002 Free Software Foundation
-
- This file is part of libgcj.
-
- This software is copyrighted work licensed under the terms of the
- Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
- details. */
+/* NamingManager.java --
+ Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
package javax.naming.spi;
@@ -16,7 +46,9 @@ public class NamingManager
public static final String CPE = "java.naming.spi.CannotProceedException";
private static InitialContextFactoryBuilder icfb = null;
- private static ObjectFactoryBuilder ofb = null;
+
+ // Package private so DirectoryManager can access it.
+ static ObjectFactoryBuilder ofb = null;
// This class cannot be instantiated.
NamingManager ()
diff --git a/libjava/javax/naming/spi/ObjectFactory.java b/libjava/javax/naming/spi/ObjectFactory.java
index 81896287948..5b291f04cf8 100644
--- a/libjava/javax/naming/spi/ObjectFactory.java
+++ b/libjava/javax/naming/spi/ObjectFactory.java
@@ -1,10 +1,40 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* ObjectFactory.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
- This file is part of libgcj.
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package javax.naming.spi;
diff --git a/libjava/javax/naming/spi/ObjectFactoryBuilder.java b/libjava/javax/naming/spi/ObjectFactoryBuilder.java
index e8796036aa4..828f5c93535 100644
--- a/libjava/javax/naming/spi/ObjectFactoryBuilder.java
+++ b/libjava/javax/naming/spi/ObjectFactoryBuilder.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* ObjectFactoryBuilder.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.spi;
import javax.naming.*;
import java.util.Hashtable;
diff --git a/libjava/javax/naming/spi/ResolveResult.java b/libjava/javax/naming/spi/ResolveResult.java
index d00aef581f4..7e34e3c7dd5 100644
--- a/libjava/javax/naming/spi/ResolveResult.java
+++ b/libjava/javax/naming/spi/ResolveResult.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* ResolveResult.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.spi;
import javax.naming.*;
import java.util.EventObject;
diff --git a/libjava/javax/naming/spi/Resolver.java b/libjava/javax/naming/spi/Resolver.java
index ff52f66382d..1cae847f1b1 100644
--- a/libjava/javax/naming/spi/Resolver.java
+++ b/libjava/javax/naming/spi/Resolver.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* Resolver.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.spi;
import javax.naming.*;
diff --git a/libjava/javax/naming/spi/StateFactory.java b/libjava/javax/naming/spi/StateFactory.java
index 3be66d2bcc4..3f41b551de6 100644
--- a/libjava/javax/naming/spi/StateFactory.java
+++ b/libjava/javax/naming/spi/StateFactory.java
@@ -1,11 +1,41 @@
-/* Copyright (C) 2001 Free Software Foundation
+/* StateFactory.java --
+ Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
- This file is part of libgcj.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
package javax.naming.spi;
import javax.naming.*;
import java.util.Hashtable;
diff --git a/libjava/jni.cc b/libjava/jni.cc
index 9865ce42a46..44ea4118f89 100644
--- a/libjava/jni.cc
+++ b/libjava/jni.cc
@@ -217,7 +217,7 @@ unwrap (T *obj)
static jobject
-_Jv_JNI_NewGlobalRef (JNIEnv *, jobject obj)
+(JNICALL _Jv_JNI_NewGlobalRef) (JNIEnv *, jobject obj)
{
// This seems weird but I think it is correct.
obj = unwrap (obj);
@@ -226,7 +226,7 @@ _Jv_JNI_NewGlobalRef (JNIEnv *, jobject obj)
}
static void
-_Jv_JNI_DeleteGlobalRef (JNIEnv *, jobject obj)
+(JNICALL _Jv_JNI_DeleteGlobalRef) (JNIEnv *, jobject obj)
{
// This seems weird but I think it is correct.
obj = unwrap (obj);
@@ -234,7 +234,7 @@ _Jv_JNI_DeleteGlobalRef (JNIEnv *, jobject obj)
}
static void
-_Jv_JNI_DeleteLocalRef (JNIEnv *env, jobject obj)
+(JNICALL _Jv_JNI_DeleteLocalRef) (JNIEnv *env, jobject obj)
{
_Jv_JNI_LocalFrame *frame;
@@ -261,7 +261,7 @@ _Jv_JNI_DeleteLocalRef (JNIEnv *env, jobject obj)
}
static jint
-_Jv_JNI_EnsureLocalCapacity (JNIEnv *env, jint size)
+(JNICALL _Jv_JNI_EnsureLocalCapacity) (JNIEnv *env, jint size)
{
// It is easier to just always allocate a new frame of the requested
// size. This isn't the most efficient thing, but for now we don't
@@ -289,7 +289,7 @@ _Jv_JNI_EnsureLocalCapacity (JNIEnv *env, jint size)
}
static jint
-_Jv_JNI_PushLocalFrame (JNIEnv *env, jint size)
+(JNICALL _Jv_JNI_PushLocalFrame) (JNIEnv *env, jint size)
{
jint r = _Jv_JNI_EnsureLocalCapacity (env, size);
if (r < 0)
@@ -302,7 +302,7 @@ _Jv_JNI_PushLocalFrame (JNIEnv *env, jint size)
}
static jobject
-_Jv_JNI_NewLocalRef (JNIEnv *env, jobject obj)
+(JNICALL _Jv_JNI_NewLocalRef) (JNIEnv *env, jobject obj)
{
// This seems weird but I think it is correct.
obj = unwrap (obj);
@@ -343,7 +343,7 @@ _Jv_JNI_NewLocalRef (JNIEnv *env, jobject obj)
}
static jobject
-_Jv_JNI_PopLocalFrame (JNIEnv *env, jobject result, int stop)
+(JNICALL _Jv_JNI_PopLocalFrame) (JNIEnv *env, jobject result, int stop)
{
_Jv_JNI_LocalFrame *rf = env->locals;
@@ -378,7 +378,7 @@ _Jv_JNI_PopLocalFrame (JNIEnv *env, jobject result, int stop)
}
static jobject
-_Jv_JNI_PopLocalFrame (JNIEnv *env, jobject result)
+(JNICALL _Jv_JNI_PopLocalFrame) (JNIEnv *env, jobject result)
{
return _Jv_JNI_PopLocalFrame (env, result, MARK_USER);
}
@@ -422,14 +422,14 @@ wrap_value (JNIEnv *env, T *value)
static jint
-_Jv_JNI_GetVersion (JNIEnv *)
+(JNICALL _Jv_JNI_GetVersion) (JNIEnv *)
{
return JNI_VERSION_1_4;
}
static jclass
-_Jv_JNI_DefineClass (JNIEnv *env, jobject loader,
- const jbyte *buf, jsize bufLen)
+(JNICALL _Jv_JNI_DefineClass) (JNIEnv *env, jobject loader,
+ const jbyte *buf, jsize bufLen)
{
try
{
@@ -454,7 +454,7 @@ _Jv_JNI_DefineClass (JNIEnv *env, jobject loader,
}
static jclass
-_Jv_JNI_FindClass (JNIEnv *env, const char *name)
+(JNICALL _Jv_JNI_FindClass) (JNIEnv *env, const char *name)
{
// FIXME: assume that NAME isn't too long.
int len = strlen (name);
@@ -490,19 +490,19 @@ _Jv_JNI_FindClass (JNIEnv *env, const char *name)
}
static jclass
-_Jv_JNI_GetSuperclass (JNIEnv *env, jclass clazz)
+(JNICALL _Jv_JNI_GetSuperclass) (JNIEnv *env, jclass clazz)
{
return (jclass) wrap_value (env, unwrap (clazz)->getSuperclass ());
}
static jboolean
-_Jv_JNI_IsAssignableFrom(JNIEnv *, jclass clazz1, jclass clazz2)
+(JNICALL _Jv_JNI_IsAssignableFrom) (JNIEnv *, jclass clazz1, jclass clazz2)
{
return unwrap (clazz1)->isAssignableFrom (unwrap (clazz2));
}
static jint
-_Jv_JNI_Throw (JNIEnv *env, jthrowable obj)
+(JNICALL _Jv_JNI_Throw) (JNIEnv *env, jthrowable obj)
{
// We check in case the user did some funky cast.
obj = unwrap (obj);
@@ -512,7 +512,7 @@ _Jv_JNI_Throw (JNIEnv *env, jthrowable obj)
}
static jint
-_Jv_JNI_ThrowNew (JNIEnv *env, jclass clazz, const char *message)
+(JNICALL _Jv_JNI_ThrowNew) (JNIEnv *env, jclass clazz, const char *message)
{
using namespace java::lang::reflect;
@@ -549,32 +549,32 @@ _Jv_JNI_ThrowNew (JNIEnv *env, jclass clazz, const char *message)
}
static jthrowable
-_Jv_JNI_ExceptionOccurred (JNIEnv *env)
+(JNICALL _Jv_JNI_ExceptionOccurred) (JNIEnv *env)
{
return (jthrowable) wrap_value (env, env->ex);
}
static void
-_Jv_JNI_ExceptionDescribe (JNIEnv *env)
+(JNICALL _Jv_JNI_ExceptionDescribe) (JNIEnv *env)
{
if (env->ex != NULL)
env->ex->printStackTrace();
}
static void
-_Jv_JNI_ExceptionClear (JNIEnv *env)
+(JNICALL _Jv_JNI_ExceptionClear) (JNIEnv *env)
{
env->ex = NULL;
}
static jboolean
-_Jv_JNI_ExceptionCheck (JNIEnv *env)
+(JNICALL _Jv_JNI_ExceptionCheck) (JNIEnv *env)
{
return env->ex != NULL;
}
static void
-_Jv_JNI_FatalError (JNIEnv *, const char *message)
+(JNICALL _Jv_JNI_FatalError) (JNIEnv *, const char *message)
{
JvFail (message);
}
@@ -582,13 +582,13 @@ _Jv_JNI_FatalError (JNIEnv *, const char *message)
static jboolean
-_Jv_JNI_IsSameObject (JNIEnv *, jobject obj1, jobject obj2)
+(JNICALL _Jv_JNI_IsSameObject) (JNIEnv *, jobject obj1, jobject obj2)
{
return unwrap (obj1) == unwrap (obj2);
}
static jobject
-_Jv_JNI_AllocObject (JNIEnv *env, jclass clazz)
+(JNICALL _Jv_JNI_AllocObject) (JNIEnv *env, jclass clazz)
{
jobject obj = NULL;
using namespace java::lang::reflect;
@@ -611,7 +611,7 @@ _Jv_JNI_AllocObject (JNIEnv *env, jclass clazz)
}
static jclass
-_Jv_JNI_GetObjectClass (JNIEnv *env, jobject obj)
+(JNICALL _Jv_JNI_GetObjectClass) (JNIEnv *env, jobject obj)
{
obj = unwrap (obj);
JvAssert (obj);
@@ -619,7 +619,7 @@ _Jv_JNI_GetObjectClass (JNIEnv *env, jobject obj)
}
static jboolean
-_Jv_JNI_IsInstanceOf (JNIEnv *, jobject obj, jclass clazz)
+(JNICALL _Jv_JNI_IsInstanceOf) (JNIEnv *, jobject obj, jclass clazz)
{
return unwrap (clazz)->isInstance(unwrap (obj));
}
@@ -632,8 +632,8 @@ _Jv_JNI_IsInstanceOf (JNIEnv *, jobject obj, jclass clazz)
template<jboolean is_static>
static jmethodID
-_Jv_JNI_GetAnyMethodID (JNIEnv *env, jclass clazz,
- const char *name, const char *sig)
+(JNICALL _Jv_JNI_GetAnyMethodID) (JNIEnv *env, jclass clazz,
+ const char *name, const char *sig)
{
try
{
@@ -728,8 +728,8 @@ array_from_valist (jvalue *values, JArray<jclass> *arg_types, va_list vargs)
// constructor.
template<typename T, invocation_type style>
static T
-_Jv_JNI_CallAnyMethodV (JNIEnv *env, jobject obj, jclass klass,
- jmethodID id, va_list vargs)
+(JNICALL _Jv_JNI_CallAnyMethodV) (JNIEnv *env, jobject obj, jclass klass,
+ jmethodID id, va_list vargs)
{
obj = unwrap (obj);
klass = unwrap (klass);
@@ -776,8 +776,8 @@ _Jv_JNI_CallAnyMethodV (JNIEnv *env, jobject obj, jclass klass,
template<typename T, invocation_type style>
static T
-_Jv_JNI_CallAnyMethod (JNIEnv *env, jobject obj, jclass klass,
- jmethodID method, ...)
+(JNICALL _Jv_JNI_CallAnyMethod) (JNIEnv *env, jobject obj, jclass klass,
+ jmethodID method, ...)
{
va_list args;
T result;
@@ -791,8 +791,8 @@ _Jv_JNI_CallAnyMethod (JNIEnv *env, jobject obj, jclass klass,
template<typename T, invocation_type style>
static T
-_Jv_JNI_CallAnyMethodA (JNIEnv *env, jobject obj, jclass klass,
- jmethodID id, jvalue *args)
+(JNICALL _Jv_JNI_CallAnyMethodA) (JNIEnv *env, jobject obj, jclass klass,
+ jmethodID id, jvalue *args)
{
obj = unwrap (obj);
klass = unwrap (klass);
@@ -846,8 +846,8 @@ _Jv_JNI_CallAnyMethodA (JNIEnv *env, jobject obj, jclass klass,
template<invocation_type style>
static void
-_Jv_JNI_CallAnyVoidMethodV (JNIEnv *env, jobject obj, jclass klass,
- jmethodID id, va_list vargs)
+(JNICALL _Jv_JNI_CallAnyVoidMethodV) (JNIEnv *env, jobject obj, jclass klass,
+ jmethodID id, va_list vargs)
{
obj = unwrap (obj);
klass = unwrap (klass);
@@ -887,8 +887,8 @@ _Jv_JNI_CallAnyVoidMethodV (JNIEnv *env, jobject obj, jclass klass,
template<invocation_type style>
static void
-_Jv_JNI_CallAnyVoidMethod (JNIEnv *env, jobject obj, jclass klass,
- jmethodID method, ...)
+(JNICALL _Jv_JNI_CallAnyVoidMethod) (JNIEnv *env, jobject obj, jclass klass,
+ jmethodID method, ...)
{
va_list args;
@@ -899,8 +899,8 @@ _Jv_JNI_CallAnyVoidMethod (JNIEnv *env, jobject obj, jclass klass,
template<invocation_type style>
static void
-_Jv_JNI_CallAnyVoidMethodA (JNIEnv *env, jobject obj, jclass klass,
- jmethodID id, jvalue *args)
+(JNICALL _Jv_JNI_CallAnyVoidMethodA) (JNIEnv *env, jobject obj, jclass klass,
+ jmethodID id, jvalue *args)
{
if (style == normal)
id = _Jv_LookupDeclaredMethod (obj->getClass (), id->name, id->signature);
@@ -943,7 +943,8 @@ _Jv_JNI_CallAnyVoidMethodA (JNIEnv *env, jobject obj, jclass klass,
// the CallMethod family.
template<typename T>
static T
-_Jv_JNI_CallMethodV (JNIEnv *env, jobject obj, jmethodID id, va_list args)
+(JNICALL _Jv_JNI_CallMethodV) (JNIEnv *env, jobject obj,
+ jmethodID id, va_list args)
{
return _Jv_JNI_CallAnyMethodV<T, normal> (env, obj, NULL, id, args);
}
@@ -952,7 +953,7 @@ _Jv_JNI_CallMethodV (JNIEnv *env, jobject obj, jmethodID id, va_list args)
// the CallMethod family.
template<typename T>
static T
-_Jv_JNI_CallMethod (JNIEnv *env, jobject obj, jmethodID id, ...)
+(JNICALL _Jv_JNI_CallMethod) (JNIEnv *env, jobject obj, jmethodID id, ...)
{
va_list args;
T result;
@@ -968,19 +969,21 @@ _Jv_JNI_CallMethod (JNIEnv *env, jobject obj, jmethodID id, ...)
// the CallMethod family.
template<typename T>
static T
-_Jv_JNI_CallMethodA (JNIEnv *env, jobject obj, jmethodID id, jvalue *args)
+(JNICALL _Jv_JNI_CallMethodA) (JNIEnv *env, jobject obj,
+ jmethodID id, jvalue *args)
{
return _Jv_JNI_CallAnyMethodA<T, normal> (env, obj, NULL, id, args);
}
static void
-_Jv_JNI_CallVoidMethodV (JNIEnv *env, jobject obj, jmethodID id, va_list args)
+(JNICALL _Jv_JNI_CallVoidMethodV) (JNIEnv *env, jobject obj,
+ jmethodID id, va_list args)
{
_Jv_JNI_CallAnyVoidMethodV<normal> (env, obj, NULL, id, args);
}
static void
-_Jv_JNI_CallVoidMethod (JNIEnv *env, jobject obj, jmethodID id, ...)
+(JNICALL _Jv_JNI_CallVoidMethod) (JNIEnv *env, jobject obj, jmethodID id, ...)
{
va_list args;
@@ -990,7 +993,8 @@ _Jv_JNI_CallVoidMethod (JNIEnv *env, jobject obj, jmethodID id, ...)
}
static void
-_Jv_JNI_CallVoidMethodA (JNIEnv *env, jobject obj, jmethodID id, jvalue *args)
+(JNICALL _Jv_JNI_CallVoidMethodA) (JNIEnv *env, jobject obj,
+ jmethodID id, jvalue *args)
{
_Jv_JNI_CallAnyVoidMethodA<normal> (env, obj, NULL, id, args);
}
@@ -999,8 +1003,8 @@ _Jv_JNI_CallVoidMethodA (JNIEnv *env, jobject obj, jmethodID id, jvalue *args)
// the CallStaticMethod family.
template<typename T>
static T
-_Jv_JNI_CallStaticMethodV (JNIEnv *env, jclass klass,
- jmethodID id, va_list args)
+(JNICALL _Jv_JNI_CallStaticMethodV) (JNIEnv *env, jclass klass,
+ jmethodID id, va_list args)
{
JvAssert (((id->accflags) & java::lang::reflect::Modifier::STATIC));
JvAssert (java::lang::Class::class$.isInstance (unwrap (klass)));
@@ -1012,7 +1016,8 @@ _Jv_JNI_CallStaticMethodV (JNIEnv *env, jclass klass,
// the CallStaticMethod family.
template<typename T>
static T
-_Jv_JNI_CallStaticMethod (JNIEnv *env, jclass klass, jmethodID id, ...)
+(JNICALL _Jv_JNI_CallStaticMethod) (JNIEnv *env, jclass klass,
+ jmethodID id, ...)
{
va_list args;
T result;
@@ -1032,8 +1037,8 @@ _Jv_JNI_CallStaticMethod (JNIEnv *env, jclass klass, jmethodID id, ...)
// the CallStaticMethod family.
template<typename T>
static T
-_Jv_JNI_CallStaticMethodA (JNIEnv *env, jclass klass, jmethodID id,
- jvalue *args)
+(JNICALL _Jv_JNI_CallStaticMethodA) (JNIEnv *env, jclass klass, jmethodID id,
+ jvalue *args)
{
JvAssert (((id->accflags) & java::lang::reflect::Modifier::STATIC));
JvAssert (java::lang::Class::class$.isInstance (unwrap (klass)));
@@ -1042,14 +1047,15 @@ _Jv_JNI_CallStaticMethodA (JNIEnv *env, jclass klass, jmethodID id,
}
static void
-_Jv_JNI_CallStaticVoidMethodV (JNIEnv *env, jclass klass, jmethodID id,
- va_list args)
+(JNICALL _Jv_JNI_CallStaticVoidMethodV) (JNIEnv *env, jclass klass,
+ jmethodID id, va_list args)
{
_Jv_JNI_CallAnyVoidMethodV<static_type> (env, NULL, klass, id, args);
}
static void
-_Jv_JNI_CallStaticVoidMethod (JNIEnv *env, jclass klass, jmethodID id, ...)
+(JNICALL _Jv_JNI_CallStaticVoidMethod) (JNIEnv *env, jclass klass,
+ jmethodID id, ...)
{
va_list args;
@@ -1059,15 +1065,15 @@ _Jv_JNI_CallStaticVoidMethod (JNIEnv *env, jclass klass, jmethodID id, ...)
}
static void
-_Jv_JNI_CallStaticVoidMethodA (JNIEnv *env, jclass klass, jmethodID id,
- jvalue *args)
+(JNICALL _Jv_JNI_CallStaticVoidMethodA) (JNIEnv *env, jclass klass,
+ jmethodID id, jvalue *args)
{
_Jv_JNI_CallAnyVoidMethodA<static_type> (env, NULL, klass, id, args);
}
static jobject
-_Jv_JNI_NewObjectV (JNIEnv *env, jclass klass,
- jmethodID id, va_list args)
+(JNICALL _Jv_JNI_NewObjectV) (JNIEnv *env, jclass klass,
+ jmethodID id, va_list args)
{
JvAssert (klass && ! klass->isArray ());
JvAssert (! strcmp (id->name->data, "<init>")
@@ -1081,7 +1087,7 @@ _Jv_JNI_NewObjectV (JNIEnv *env, jclass klass,
}
static jobject
-_Jv_JNI_NewObject (JNIEnv *env, jclass klass, jmethodID id, ...)
+(JNICALL _Jv_JNI_NewObject) (JNIEnv *env, jclass klass, jmethodID id, ...)
{
JvAssert (klass && ! klass->isArray ());
JvAssert (! strcmp (id->name->data, "<init>")
@@ -1102,8 +1108,8 @@ _Jv_JNI_NewObject (JNIEnv *env, jclass klass, jmethodID id, ...)
}
static jobject
-_Jv_JNI_NewObjectA (JNIEnv *env, jclass klass, jmethodID id,
- jvalue *args)
+(JNICALL _Jv_JNI_NewObjectA) (JNIEnv *env, jclass klass, jmethodID id,
+ jvalue *args)
{
JvAssert (klass && ! klass->isArray ());
JvAssert (! strcmp (id->name->data, "<init>")
@@ -1120,7 +1126,7 @@ _Jv_JNI_NewObjectA (JNIEnv *env, jclass klass, jmethodID id,
template<typename T>
static T
-_Jv_JNI_GetField (JNIEnv *env, jobject obj, jfieldID field)
+(JNICALL _Jv_JNI_GetField) (JNIEnv *env, jobject obj, jfieldID field)
{
obj = unwrap (obj);
JvAssert (obj);
@@ -1130,7 +1136,7 @@ _Jv_JNI_GetField (JNIEnv *env, jobject obj, jfieldID field)
template<typename T>
static void
-_Jv_JNI_SetField (JNIEnv *, jobject obj, jfieldID field, T value)
+(JNICALL _Jv_JNI_SetField) (JNIEnv *, jobject obj, jfieldID field, T value)
{
obj = unwrap (obj);
value = unwrap (value);
@@ -1142,8 +1148,8 @@ _Jv_JNI_SetField (JNIEnv *, jobject obj, jfieldID field, T value)
template<jboolean is_static>
static jfieldID
-_Jv_JNI_GetAnyFieldID (JNIEnv *env, jclass clazz,
- const char *name, const char *sig)
+(JNICALL _Jv_JNI_GetAnyFieldID) (JNIEnv *env, jclass clazz,
+ const char *name, const char *sig)
{
try
{
@@ -1203,7 +1209,7 @@ _Jv_JNI_GetAnyFieldID (JNIEnv *env, jclass clazz,
template<typename T>
static T
-_Jv_JNI_GetStaticField (JNIEnv *env, jclass, jfieldID field)
+(JNICALL _Jv_JNI_GetStaticField) (JNIEnv *env, jclass, jfieldID field)
{
T *ptr = (T *) field->u.addr;
return wrap_value (env, *ptr);
@@ -1211,7 +1217,7 @@ _Jv_JNI_GetStaticField (JNIEnv *env, jclass, jfieldID field)
template<typename T>
static void
-_Jv_JNI_SetStaticField (JNIEnv *, jclass, jfieldID field, T value)
+(JNICALL _Jv_JNI_SetStaticField) (JNIEnv *, jclass, jfieldID field, T value)
{
value = unwrap (value);
T *ptr = (T *) field->u.addr;
@@ -1219,7 +1225,7 @@ _Jv_JNI_SetStaticField (JNIEnv *, jclass, jfieldID field, T value)
}
static jstring
-_Jv_JNI_NewString (JNIEnv *env, const jchar *unichars, jsize len)
+(JNICALL _Jv_JNI_NewString) (JNIEnv *env, const jchar *unichars, jsize len)
{
try
{
@@ -1234,13 +1240,13 @@ _Jv_JNI_NewString (JNIEnv *env, const jchar *unichars, jsize len)
}
static jsize
-_Jv_JNI_GetStringLength (JNIEnv *, jstring string)
+(JNICALL _Jv_JNI_GetStringLength) (JNIEnv *, jstring string)
{
return unwrap (string)->length();
}
static const jchar *
-_Jv_JNI_GetStringChars (JNIEnv *, jstring string, jboolean *isCopy)
+(JNICALL _Jv_JNI_GetStringChars) (JNIEnv *, jstring string, jboolean *isCopy)
{
string = unwrap (string);
jchar *result = _Jv_GetStringChars (string);
@@ -1251,13 +1257,13 @@ _Jv_JNI_GetStringChars (JNIEnv *, jstring string, jboolean *isCopy)
}
static void
-_Jv_JNI_ReleaseStringChars (JNIEnv *, jstring string, const jchar *)
+(JNICALL _Jv_JNI_ReleaseStringChars) (JNIEnv *, jstring string, const jchar *)
{
unmark_for_gc (unwrap (string), global_ref_table);
}
static jstring
-_Jv_JNI_NewStringUTF (JNIEnv *env, const char *bytes)
+(JNICALL _Jv_JNI_NewStringUTF) (JNIEnv *env, const char *bytes)
{
try
{
@@ -1272,13 +1278,14 @@ _Jv_JNI_NewStringUTF (JNIEnv *env, const char *bytes)
}
static jsize
-_Jv_JNI_GetStringUTFLength (JNIEnv *, jstring string)
+(JNICALL _Jv_JNI_GetStringUTFLength) (JNIEnv *, jstring string)
{
return JvGetStringUTFLength (unwrap (string));
}
static const char *
-_Jv_JNI_GetStringUTFChars (JNIEnv *env, jstring string, jboolean *isCopy)
+(JNICALL _Jv_JNI_GetStringUTFChars) (JNIEnv *env, jstring string,
+ jboolean *isCopy)
{
string = unwrap (string);
jsize len = JvGetStringUTFLength (string);
@@ -1301,14 +1308,14 @@ _Jv_JNI_GetStringUTFChars (JNIEnv *env, jstring string, jboolean *isCopy)
}
static void
-_Jv_JNI_ReleaseStringUTFChars (JNIEnv *, jstring, const char *utf)
+(JNICALL _Jv_JNI_ReleaseStringUTFChars) (JNIEnv *, jstring, const char *utf)
{
_Jv_Free ((void *) utf);
}
static void
-_Jv_JNI_GetStringRegion (JNIEnv *env, jstring string, jsize start, jsize len,
- jchar *buf)
+(JNICALL _Jv_JNI_GetStringRegion) (JNIEnv *env, jstring string, jsize start,
+ jsize len, jchar *buf)
{
string = unwrap (string);
jchar *result = _Jv_GetStringChars (string);
@@ -1329,8 +1336,8 @@ _Jv_JNI_GetStringRegion (JNIEnv *env, jstring string, jsize start, jsize len,
}
static void
-_Jv_JNI_GetStringUTFRegion (JNIEnv *env, jstring str, jsize start,
- jsize len, char *buf)
+(JNICALL _Jv_JNI_GetStringUTFRegion) (JNIEnv *env, jstring str, jsize start,
+ jsize len, char *buf)
{
str = unwrap (str);
@@ -1351,7 +1358,7 @@ _Jv_JNI_GetStringUTFRegion (JNIEnv *env, jstring str, jsize start,
}
static const jchar *
-_Jv_JNI_GetStringCritical (JNIEnv *, jstring str, jboolean *isCopy)
+(JNICALL _Jv_JNI_GetStringCritical) (JNIEnv *, jstring str, jboolean *isCopy)
{
jchar *result = _Jv_GetStringChars (unwrap (str));
if (isCopy)
@@ -1360,20 +1367,20 @@ _Jv_JNI_GetStringCritical (JNIEnv *, jstring str, jboolean *isCopy)
}
static void
-_Jv_JNI_ReleaseStringCritical (JNIEnv *, jstring, const jchar *)
+(JNICALL _Jv_JNI_ReleaseStringCritical) (JNIEnv *, jstring, const jchar *)
{
// Nothing.
}
static jsize
-_Jv_JNI_GetArrayLength (JNIEnv *, jarray array)
+(JNICALL _Jv_JNI_GetArrayLength) (JNIEnv *, jarray array)
{
return unwrap (array)->length;
}
static jarray
-_Jv_JNI_NewObjectArray (JNIEnv *env, jsize length, jclass elementClass,
- jobject init)
+(JNICALL _Jv_JNI_NewObjectArray) (JNIEnv *env, jsize length,
+ jclass elementClass, jobject init)
{
try
{
@@ -1391,15 +1398,16 @@ _Jv_JNI_NewObjectArray (JNIEnv *env, jsize length, jclass elementClass,
}
static jobject
-_Jv_JNI_GetObjectArrayElement (JNIEnv *env, jobjectArray array, jsize index)
+(JNICALL _Jv_JNI_GetObjectArrayElement) (JNIEnv *env, jobjectArray array,
+ jsize index)
{
jobject *elts = elements (unwrap (array));
return wrap_value (env, elts[index]);
}
static void
-_Jv_JNI_SetObjectArrayElement (JNIEnv *env, jobjectArray array, jsize index,
- jobject value)
+(JNICALL _Jv_JNI_SetObjectArrayElement) (JNIEnv *env, jobjectArray array,
+ jsize index, jobject value)
{
try
{
@@ -1418,7 +1426,7 @@ _Jv_JNI_SetObjectArrayElement (JNIEnv *env, jobjectArray array, jsize index,
template<typename T, jclass K>
static JArray<T> *
-_Jv_JNI_NewPrimitiveArray (JNIEnv *env, jsize length)
+(JNICALL _Jv_JNI_NewPrimitiveArray) (JNIEnv *env, jsize length)
{
try
{
@@ -1433,8 +1441,8 @@ _Jv_JNI_NewPrimitiveArray (JNIEnv *env, jsize length)
template<typename T>
static T *
-_Jv_JNI_GetPrimitiveArrayElements (JNIEnv *, JArray<T> *array,
- jboolean *isCopy)
+(JNICALL _Jv_JNI_GetPrimitiveArrayElements) (JNIEnv *, JArray<T> *array,
+ jboolean *isCopy)
{
array = unwrap (array);
T *elts = elements (array);
@@ -1449,8 +1457,8 @@ _Jv_JNI_GetPrimitiveArrayElements (JNIEnv *, JArray<T> *array,
template<typename T>
static void
-_Jv_JNI_ReleasePrimitiveArrayElements (JNIEnv *, JArray<T> *array,
- T *, jint /* mode */)
+(JNICALL _Jv_JNI_ReleasePrimitiveArrayElements) (JNIEnv *, JArray<T> *array,
+ T *, jint /* mode */)
{
array = unwrap (array);
// Note that we ignore MODE. We can do this because we never copy
@@ -1461,8 +1469,8 @@ _Jv_JNI_ReleasePrimitiveArrayElements (JNIEnv *, JArray<T> *array,
template<typename T>
static void
-_Jv_JNI_GetPrimitiveArrayRegion (JNIEnv *env, JArray<T> *array,
- jsize start, jsize len,
+(JNICALL _Jv_JNI_GetPrimitiveArrayRegion) (JNIEnv *env, JArray<T> *array,
+ jsize start, jsize len,
T *buf)
{
array = unwrap (array);
@@ -1491,8 +1499,8 @@ _Jv_JNI_GetPrimitiveArrayRegion (JNIEnv *env, JArray<T> *array,
template<typename T>
static void
-_Jv_JNI_SetPrimitiveArrayRegion (JNIEnv *env, JArray<T> *array,
- jsize start, jsize len, T *buf)
+(JNICALL _Jv_JNI_SetPrimitiveArrayRegion) (JNIEnv *env, JArray<T> *array,
+ jsize start, jsize len, T *buf)
{
array = unwrap (array);
@@ -1518,8 +1526,8 @@ _Jv_JNI_SetPrimitiveArrayRegion (JNIEnv *env, JArray<T> *array,
}
static void *
-_Jv_JNI_GetPrimitiveArrayCritical (JNIEnv *, jarray array,
- jboolean *isCopy)
+(JNICALL _Jv_JNI_GetPrimitiveArrayCritical) (JNIEnv *, jarray array,
+ jboolean *isCopy)
{
array = unwrap (array);
// FIXME: does this work?
@@ -1532,13 +1540,13 @@ _Jv_JNI_GetPrimitiveArrayCritical (JNIEnv *, jarray array,
}
static void
-_Jv_JNI_ReleasePrimitiveArrayCritical (JNIEnv *, jarray, void *, jint)
+(JNICALL _Jv_JNI_ReleasePrimitiveArrayCritical) (JNIEnv *, jarray, void *, jint)
{
// Nothing.
}
static jint
-_Jv_JNI_MonitorEnter (JNIEnv *env, jobject obj)
+(JNICALL _Jv_JNI_MonitorEnter) (JNIEnv *env, jobject obj)
{
try
{
@@ -1553,7 +1561,7 @@ _Jv_JNI_MonitorEnter (JNIEnv *env, jobject obj)
}
static jint
-_Jv_JNI_MonitorExit (JNIEnv *env, jobject obj)
+(JNICALL _Jv_JNI_MonitorExit) (JNIEnv *env, jobject obj)
{
try
{
@@ -1569,8 +1577,8 @@ _Jv_JNI_MonitorExit (JNIEnv *env, jobject obj)
// JDK 1.2
jobject
-_Jv_JNI_ToReflectedField (JNIEnv *env, jclass cls, jfieldID fieldID,
- jboolean)
+(JNICALL _Jv_JNI_ToReflectedField) (JNIEnv *env, jclass cls, jfieldID fieldID,
+ jboolean)
{
try
{
@@ -1590,7 +1598,7 @@ _Jv_JNI_ToReflectedField (JNIEnv *env, jclass cls, jfieldID fieldID,
// JDK 1.2
static jfieldID
-_Jv_JNI_FromReflectedField (JNIEnv *, jobject f)
+(JNICALL _Jv_JNI_FromReflectedField) (JNIEnv *, jobject f)
{
using namespace java::lang::reflect;
@@ -1600,8 +1608,8 @@ _Jv_JNI_FromReflectedField (JNIEnv *, jobject f)
}
jobject
-_Jv_JNI_ToReflectedMethod (JNIEnv *env, jclass klass, jmethodID id,
- jboolean)
+(JNICALL _Jv_JNI_ToReflectedMethod) (JNIEnv *env, jclass klass, jmethodID id,
+ jboolean)
{
using namespace java::lang::reflect;
@@ -1635,7 +1643,7 @@ _Jv_JNI_ToReflectedMethod (JNIEnv *env, jclass klass, jmethodID id,
}
static jmethodID
-_Jv_JNI_FromReflectedMethod (JNIEnv *, jobject method)
+(JNICALL _Jv_JNI_FromReflectedMethod) (JNIEnv *, jobject method)
{
using namespace java::lang::reflect;
method = unwrap (method);
@@ -1647,7 +1655,7 @@ _Jv_JNI_FromReflectedMethod (JNIEnv *, jobject method)
// JDK 1.2.
jweak
-_Jv_JNI_NewWeakGlobalRef (JNIEnv *env, jobject obj)
+(JNICALL _Jv_JNI_NewWeakGlobalRef) (JNIEnv *env, jobject obj)
{
using namespace gnu::gcj::runtime;
JNIWeakRef *ref = NULL;
@@ -1668,7 +1676,7 @@ _Jv_JNI_NewWeakGlobalRef (JNIEnv *env, jobject obj)
}
void
-_Jv_JNI_DeleteWeakGlobalRef (JNIEnv *, jweak obj)
+(JNICALL _Jv_JNI_DeleteWeakGlobalRef) (JNIEnv *, jweak obj)
{
using namespace gnu::gcj::runtime;
JNIWeakRef *ref = reinterpret_cast<JNIWeakRef *> (obj);
@@ -1681,21 +1689,21 @@ _Jv_JNI_DeleteWeakGlobalRef (JNIEnv *, jweak obj)
// Direct byte buffers.
static jobject
-_Jv_JNI_NewDirectByteBuffer (JNIEnv *, void *, jlong)
+(JNICALL _Jv_JNI_NewDirectByteBuffer) (JNIEnv *, void *, jlong)
{
// For now we don't support this.
return NULL;
}
static void *
-_Jv_JNI_GetDirectBufferAddress (JNIEnv *, jobject)
+(JNICALL _Jv_JNI_GetDirectBufferAddress) (JNIEnv *, jobject)
{
// For now we don't support this.
return NULL;
}
static jlong
-_Jv_JNI_GetDirectBufferCapacity (JNIEnv *, jobject)
+(JNICALL _Jv_JNI_GetDirectBufferCapacity) (JNIEnv *, jobject)
{
// For now we don't support this.
return -1;
@@ -1818,9 +1826,9 @@ nathash_add (const JNINativeMethod *method)
}
static jint
-_Jv_JNI_RegisterNatives (JNIEnv *env, jclass klass,
- const JNINativeMethod *methods,
- jint nMethods)
+(JNICALL _Jv_JNI_RegisterNatives) (JNIEnv *env, jclass klass,
+ const JNINativeMethod *methods,
+ jint nMethods)
{
// Synchronize while we do the work. This must match
// synchronization in some other functions that manipulate or use
@@ -1872,7 +1880,7 @@ _Jv_JNI_RegisterNatives (JNIEnv *env, jclass klass,
}
static jint
-_Jv_JNI_UnregisterNatives (JNIEnv *, jclass)
+(JNICALL _Jv_JNI_UnregisterNatives) (JNIEnv *, jclass)
{
// FIXME -- we could implement this.
return JNI_ERR;
@@ -1984,9 +1992,9 @@ _Jv_GetJNIEnvNewFrame (jclass klass)
{
env = (JNIEnv *) _Jv_MallocUnchecked (sizeof (JNIEnv));
env->p = &_Jv_JNIFunctions;
- env->ex = NULL;
env->klass = klass;
env->locals = NULL;
+ // We set env->ex below.
_Jv_SetCurrentJNIEnv (env);
}
@@ -1999,11 +2007,13 @@ _Jv_GetJNIEnvNewFrame (jclass klass)
frame->marker = MARK_SYSTEM;
frame->size = FRAME_SIZE;
frame->next = env->locals;
- env->locals = frame;
for (int i = 0; i < frame->size; ++i)
frame->vec[i] = NULL;
+ env->locals = frame;
+ env->ex = NULL;
+
return env;
}
@@ -2197,19 +2207,20 @@ _Jv_JNI_AttachCurrentThread (JavaVM *, jstring name, void **penv,
// This is the one actually used by JNI.
static jint
-_Jv_JNI_AttachCurrentThread (JavaVM *vm, void **penv, void *args)
+(JNICALL _Jv_JNI_AttachCurrentThread) (JavaVM *vm, void **penv, void *args)
{
return _Jv_JNI_AttachCurrentThread (vm, NULL, penv, args, false);
}
static jint
-_Jv_JNI_AttachCurrentThreadAsDaemon (JavaVM *vm, void **penv, void *args)
+(JNICALL _Jv_JNI_AttachCurrentThreadAsDaemon) (JavaVM *vm, void **penv,
+ void *args)
{
return _Jv_JNI_AttachCurrentThread (vm, NULL, penv, args, true);
}
static jint
-_Jv_JNI_DestroyJavaVM (JavaVM *vm)
+(JNICALL _Jv_JNI_DestroyJavaVM) (JavaVM *vm)
{
JvAssert (the_vm && vm == the_vm);
@@ -2243,14 +2254,14 @@ _Jv_JNI_DestroyJavaVM (JavaVM *vm)
}
jint
-_Jv_JNI_DetachCurrentThread (JavaVM *)
+(JNICALL _Jv_JNI_DetachCurrentThread) (JavaVM *)
{
jint code = _Jv_DetachCurrentThread ();
return code ? JNI_EDETACHED : 0;
}
static jint
-_Jv_JNI_GetEnv (JavaVM *, void **penv, jint version)
+(JNICALL _Jv_JNI_GetEnv) (JavaVM *, void **penv, jint version)
{
if (_Jv_ThreadCurrent () == NULL)
{
@@ -2279,7 +2290,7 @@ _Jv_JNI_GetEnv (JavaVM *, void **penv, jint version)
return 0;
}
-jint
+JNIEXPORT jint JNICALL
JNI_GetDefaultJavaVMInitArgs (void *args)
{
jint version = * (jint *) args;
@@ -2296,7 +2307,7 @@ JNI_GetDefaultJavaVMInitArgs (void *args)
return 0;
}
-jint
+JNIEXPORT jint JNICALL
JNI_CreateJavaVM (JavaVM **vm, void **penv, void *args)
{
JvAssert (! the_vm);
@@ -2361,7 +2372,7 @@ JNI_CreateJavaVM (JavaVM **vm, void **penv, void *args)
return 0;
}
-jint
+JNIEXPORT jint JNICALL
JNI_GetCreatedJavaVMs (JavaVM **vm_buffer, jsize buf_len, jsize *n_vms)
{
if (buf_len <= 0)
@@ -2402,7 +2413,7 @@ _Jv_GetJavaVM ()
}
static jint
-_Jv_JNI_GetJavaVM (JNIEnv *, JavaVM **vm)
+(JNICALL _Jv_JNI_GetJavaVM) (JNIEnv *, JavaVM **vm)
{
*vm = _Jv_GetJavaVM ();
return *vm == NULL ? JNI_ERR : JNI_OK;
diff --git a/libjava/testsuite/ChangeLog b/libjava/testsuite/ChangeLog
index 7cdad4a06a5..1e5ce888962 100644
--- a/libjava/testsuite/ChangeLog
+++ b/libjava/testsuite/ChangeLog
@@ -1,3 +1,16 @@
+2002-11-21 Tom Tromey <tromey@redhat.com>
+
+ For PR java/8676:
+ * libjava.lang/pr8676.java: New file.
+ * libjava.lang/pr8676.out: New file.
+
+2002-11-21 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * libjava.loader/loader.exp (gcj_loader_test_one): Fix typo in
+ 'type' argument to libjava_tcompile.
+ (gcj_loader_run): Use libjava_tcompile instead of running
+ GCJ_UNDER_TEST directly.
+
2002-11-05 Tom Tromey <tromey@redhat.com>
* libjava.jacks/jacks.exp: New file.
diff --git a/libjava/testsuite/libjava.loader/loader.exp b/libjava/testsuite/libjava.loader/loader.exp
index 6da70165102..6864a5f663a 100644
--- a/libjava/testsuite/libjava.loader/loader.exp
+++ b/libjava/testsuite/libjava.loader/loader.exp
@@ -13,7 +13,7 @@ proc gcj_loader_test_one {srcfile} {
set args [libjava_arguments link]
lappend args "additional_flags=--main=[file rootname [file tail $srcfile]] $srcdir/$subdir/MyLoader.java $objdir/dummy.o"
set x [prune_warnings \
- [libjava_tcompile $srcfile "$executable" "$executable" $args]]
+ [libjava_tcompile $srcfile "$executable" executable $args]]
if { $x != "" } {
verbose "target_compile failed: $x" 2
@@ -44,8 +44,11 @@ proc gcj_loader_run {} {
}
pass "bytecompile $file"
+ set args [libjava_arguments compile]
+ lappend args "additional_flags=--resource $objdir/dummy.class"
set x [prune_warnings \
- [eval exec "$GCJ_UNDER_TEST --resource $objdir/dummy.class -c $objdir/dummy.class -o $objdir/dummy.o"]]
+ [libjava_tcompile "$objdir/dummy.class" "$objdir/dummy.o" object $args]]
+
if { $x != "" } {
verbose "resource compilation failed: $x" 2
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index bf57cd766de..d84114e55ab 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,194 @@
+2002-11-24 Paolo Carlini <pcarlini@unitus.it>
+
+ * src/locale.cc (locale::locale(const char*)):
+ Trivial cosmetic tweaks.
+
+2002-11-22 Laszlo Ersek <erseklaszlo@chello.hu>
+ Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/8645
+ * include/bits/stl_tree.h (_Rb_tree_rebalance_for_erase):
+ Don't check that __w->_M_left != 0 and __w->_M_right != 0
+ when they can't be otherwise.
+
+2002-11-21 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/html/documentation.html: Fix broken/thinko'd URL.
+
+2002-11-21 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/doxygen/run_doxygen: Tighter search expression for sed.
+ * docs/doxygen/stdheader.cc: Handle the case of good headers.
+
+2002-11-21 Phil Edwards <pme@gcc.gnu.org>
+
+ * acinclude.m4: Uniform formatting.
+ * configure.in: Warn when generic atomicity.h is used.
+ * configure.target: Fix comment.
+ * aclocal.m4, configure: Regenerate.
+
+2002-11-21 Phil Edwards <pme@gcc.gnu.org>
+
+ * include/bits/streambuf.tcc (basic_streambuf::sputbackc): Prefix
+ "this->" to call to pbackfail.
+
+2002-11-21 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/doxygen/style.css: Update.
+ * docs/doxygen/user.cfg.in: Update.
+ * docs/html/documentation.html: Regenerate.
+ * docs/html/17_intro/howto.html: Tweak I/O sentry entry.
+ * docs/html/27_io/howto.html: New section on headers.
+ * docs/html/faq/index.html: Add i386 threading entry.
+ * docs/html/faq/index.txt: Regenerate.
+
+ * docs/html/ext/lwg-active.html, docs/html/ext/lwg-defects.html:
+ Import R23.
+
+2002-11-21 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/doxygen/TODO: Note change in clause 27 docs.
+ * include/bits/basic_ios.h, include/bits/fpos.h,
+ include/bits/ios_base.h, include/bits/stl_deque.h,
+ include/bits/stl_iterator_base_types.h, include/std/std_fstream.h,
+ include/std/std_iomanip.h, include/std/std_iosfwd.h,
+ include/std/std_iostream.h, include/std/std_istream.h,
+ include/std/std_ostream.h, include/std/std_sstream.h,
+ include/std/std_streambuf.h: Doxygenate all I/O entities.
+
+2002-11-20 Benjamin Kosnik <bkoz@redhat.com>
+ Jonathan Lennox <lennox@cs.columbia.edu>
+
+ * include/bits/streambuf.tcc (__copy_streambufs):
+ Revert previous fix for the interactive half of
+ libstdc++/6745, use _M_buf_size_opt to set dynamically
+ the correct buffer size.
+
+2002-11-20 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/21_strings/howto.html: Fix example code, cite Gaby's
+ explanation of "<unknown type>" error with toupper/tolower.
+ * docs/html/22_locale/howto.html: Be more consistent with
+ example in 21_strings.
+
+2002-11-19 John Gustafsson <forgoil@rsn.bth.se>
+
+ * docs/html/20_util/howto.html: Fix typo.
+
+2002-11-18 Jonathan Lennox <lennox@cs.columbia.edu>
+
+ * include/bits/streambuf.tcc (__copy_streambufs): verify
+ __sbin->gptr() + __bufsize < __sbin->egptr() before using.
+ * testsuite/27_io/ostream_inserter_other.cc (test_buffer_4): Add.
+ (test05): Use test_buffer_4. Delete unused ostringstream
+ variables.
+
+2002-11-18 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/6745 (continued)
+ * include/bits/streambuf.tcc (__copy_streambufs):
+ Deal with interactive input by using isatty as in the
+ fix for libstdc++/8399.
+
+2002-11-17 Jakub Jelinek <jakub@redhat.com>
+
+ * config/linker-map.gnu: Export _S_construct even if size_t is
+ unsigned long. Collapse std::codecvt<char>::codecvt(size_t)
+ and std::codecvt<wchar_t>::codecvt(size_t) into one export pattern.
+
+2002-11-15 Benjamin Kosnik <bkoz@redhat.com>
+ Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ PR libstdc++/8230
+ * include/bits/stl_alloc.h: Use builtin_expect for the most
+ obvious limit checks.
+ (__default_alloc_template::allocate): Check for null, throw
+ bad_alloc.
+ * include/bits/vector.tcc: Formatting tweaks.
+ * include/bits/stl_vector.h: Same.
+ * testsuite/20_util/allocator_members.cc (test02): Add.
+ * testsuite/23_containers/vector_capacity.cc (test03): Add.
+
+2002-11-15 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * src/ios.cc [_GLIBCPP_HAVE_UNISTD_H]: Include unistd.h.
+
+2002-11-15 Paolo Carlini <pcarlini@unitus.it>
+ Loren J. Rittle <ljrittle@acm.org>
+
+ PR libstdc++/8399
+ * acinclude.m4
+ (GLIBCPP_CHECK_UNISTD_DECL_AND_LINKAGE_1): New macro to
+ check for unistd.h functions.
+ (GLIBCPP_CHECK_UNISTD_SUPPORT): New macro, check for isatty
+ in unistd.h.
+ * configure.in: Call here.
+ * src/ios.cc (ios_base::Init::_S_ios_create(bool)):
+ Use _GLIBCPP_HAVE_ISATTY: ifdef, in case of interactive
+ input __in_size = 1 even when sync_with_stdio is false;
+ otherwise fall back to __in_size = 1.
+ * aclocal.m4: Regenerate.
+ * config.h.in: Regenerate.
+ * configure: Regenerate.
+
+2002-11-13 Benjamin Kosnik <bkoz@redhat.com>
+
+ * acconfig.h (HAVE_DRAND48): Add.
+ (HAVE_GETPAGESIZE): Add.
+ (HAVE_SETENV): Add.
+ (HAVE_SIGSETJMP): Add.
+ * config.h.in: Regenerate.
+ * configure: Regenerate.
+
+2002-11-13 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * config/os/hpux/os_defines.h (_GLIBCPP_INST_ATOMICITY_LOCK): Define
+ on hppa when there is no weak support.
+
+2002-11-13 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/8230
+ * include/bits/vector.tcc (vector::reserve): Throw length_error if
+ requested size is bigger than max_size().
+ * include/bits/stl_bvector.h (vector<bool>::reserve): Same.
+ * testsuite/23_containers/vector_capacity.cc (test02): Add.
+
+2002-11-13 Benjamin Kosnik <bkoz@redhat.com>
+
+ * config/linker-map.gnu: Export all _S_construct.
+
+2002-11-13 Loren J. Rittle <ljrittle@acm.org>
+
+ PR libstdc++/7445
+ * src/locale.cc (std::locale::classic()): Weaken locking protocol.
+
+2002-11-13 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/install.html, docs/html/22_locale/locale.html: HTML fix.
+
+2002-11-11 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/6746
+ * include/bits/fstream.tcc (filebuf::open): Set input pointers.
+ * config/io/basic_file_stdio.cc (__basic_file::_M_open_mode): Set
+ __p_mode as well.
+ (__basic_file::open): Set to non-block for input.
+ * testsuite/27_io/istream_unformatted.cc (test12): Add.
+ (test13): Same.
+
+2002-11-11 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/17_intro/howto.html: Make "chapter 22 notes" a link.
+ * docs/html/faq/index.html: Mention that GCC ships with a newer
+ version of the library than the last snapshot. Make "see below" a
+ link. Add missing <html> tag.
+ * docs/html/faq/index.txt: Regenerate.
+ * docs/html/22_locale/locale.html, docs/html/22_locale/messages.html,
+ docs/html/23_containers/howto.html, docs/html/24_iterators/howto.html,
+ docs/html/25_algorithms/howto.html, docs/html/26_numerics/howto.html,
+ docs/html/27_io/howto.html, docs/html/ext/howto.html,
+ docs/html/ext/sgiexts.html: Add missing <html> tag.
+
2002-11-07 Phil Edwards <pme@gcc.gnu.org>
Richard Earnshaw <rearnsha@arm.com>
diff --git a/libstdc++-v3/acconfig.h b/libstdc++-v3/acconfig.h
index 777e94a5039..4d18634889f 100644
--- a/libstdc++-v3/acconfig.h
+++ b/libstdc++-v3/acconfig.h
@@ -13,9 +13,6 @@
// Define if GCC supports weak symbols.
#undef _GLIBCPP_SUPPORTS_WEAK
-// Define if gthr-default.h exists (meaning that threading support is enabled).
-#undef HAVE_GTHR_DEFAULT
-
// Include I/O support for 'long long' and 'unsigned long long'.
#undef _GLIBCPP_USE_LONG_LONG
@@ -37,13 +34,13 @@
// Define to use concept checking code from the boost libraries.
#undef _GLIBCPP_CONCEPT_CHECKS
-// Define if you have the atan2f function.
+// Define if the atan2f function exists.
#undef _GLIBCPP_HAVE_ATAN2F
-// Define if you have the atan2l function.
+// Define if the atan2l function exists.
#undef _GLIBCPP_HAVE_ATAN2L
-// Define if you have the copysignf function.
+// Define if the copysignf function exists.
#undef _GLIBCPP_HAVE_COPYSIGNF
// Define to use symbol versioning in the shared library.
@@ -60,6 +57,21 @@
#define _GLIBCPP_ASM_SYMVER(cur, old, version)
#endif
+// Define if gthr-default.h exists (meaning that threading support is enabled).
+#undef HAVE_GTHR_DEFAULT
+
+// Define if drand48 exists.
+#undef HAVE_DRAND48
+
+// Define if getpagesize exists.
+#undef HAVE_GETPAGESIZE
+
+// Define if setenv exists.
+#undef HAVE_SETENV
+
+// Define if sigsetjmp exists.
+#undef HAVE_SIGSETJMP
+
// Define if mbstate_t exists in wchar.h.
#undef HAVE_MBSTATE_T
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 2bfec92da0f..567c59b16fb 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -591,6 +591,33 @@ AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3, [
fi
])
+dnl
+dnl Check to see if the (unistd function) argument passed is
+dnl 1) declared when using the c++ compiler
+dnl 2) has "C" linkage
+dnl
+dnl argument 1 is name of function to check
+dnl
+dnl ASSUMES argument is a function with ONE parameter
+dnl
+dnl GLIBCPP_CHECK_UNISTD_DECL_AND_LINKAGE_1
+AC_DEFUN(GLIBCPP_CHECK_UNISTD_DECL_AND_LINKAGE_1, [
+ AC_MSG_CHECKING([for $1 declaration])
+ if test x${glibcpp_cv_func_$1_use+set} != xset; then
+ AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <unistd.h>],
+ [ $1(0);],
+ [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
+ AC_LANG_RESTORE
+ ])
+ fi
+ AC_MSG_RESULT($glibcpp_cv_func_$1_use)
+ if test x$glibcpp_cv_func_$1_use = x"yes"; then
+ AC_CHECK_FUNCS($1)
+ fi
+])
dnl
dnl Because the builtins are picky picky picky about the arguments they take,
@@ -702,9 +729,8 @@ AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT, [
fi
])
-
dnl
-dnl Check to see what the underlying c library
+dnl Check to see what the underlying c library is like
dnl These checks need to do two things:
dnl 1) make sure the name is declared when using the c++ compiler
dnl 2) make sure the name has "C" linkage
@@ -727,6 +753,25 @@ AC_DEFUN(GLIBCPP_CHECK_STDLIB_SUPPORT, [
CXXFLAGS="$ac_save_CXXFLAGS"
])
+dnl
+dnl Check to see what the underlying c library is like
+dnl These checks need to do two things:
+dnl 1) make sure the name is declared when using the c++ compiler
+dnl 2) make sure the name has "C" linkage
+dnl This might seem like overkill but experience has shown that it's not...
+dnl
+dnl Define HAVE_ISATTY if "isatty" is declared and links
+dnl
+dnl GLIBCPP_CHECK_UNISTD_SUPPORT
+AC_DEFUN(GLIBCPP_CHECK_UNISTD_SUPPORT, [
+ ac_test_CXXFLAGS="${CXXFLAGS+set}"
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
+
+ GLIBCPP_CHECK_UNISTD_DECL_AND_LINKAGE_1(isatty)
+
+ CXXFLAGS="$ac_save_CXXFLAGS"
+])
dnl
dnl Check to see what the underlying c library or math library is like.
@@ -876,9 +921,9 @@ dnl compilation, pick them up here.
dnl
dnl GLIBCPP_CHECK_TARGET
AC_DEFUN(GLIBCPP_CHECK_TARGET, [
- . [$]{glibcpp_basedir}/configure.target
- AC_MSG_RESULT(CPU config directory is $cpu_include_dir)
- AC_MSG_RESULT(OS config directory is $os_include_dir)
+ . [$]{glibcpp_basedir}/configure.target
+ AC_MSG_RESULT(CPU config directory is $cpu_include_dir)
+ AC_MSG_RESULT(OS config directory is $os_include_dir)
])
@@ -1075,14 +1120,14 @@ fi
dnl Run through flags (either default or command-line) and set anything
dnl extra (e.g., #defines) that must accompany particular g++ options.
if test -n "$enable_cxx_flags"; then
- for f in $enable_cxx_flags; do
- case "$f" in
- -fhonor-std) ;;
- -*) ;;
- *) # and we're trying to pass /what/ exactly?
- AC_MSG_ERROR([compiler flags start with a -]) ;;
- esac
- done
+ for f in $enable_cxx_flags; do
+ case "$f" in
+ -fhonor-std) ;;
+ -*) ;;
+ *) # and we're trying to pass /what/ exactly?
+ AC_MSG_ERROR([compiler flags start with a -]) ;;
+ esac
+ done
fi
EXTRA_CXX_FLAGS="$enable_cxx_flags"
AC_SUBST(EXTRA_CXX_FLAGS)
diff --git a/libstdc++-v3/aclocal.m4 b/libstdc++-v3/aclocal.m4
index 3bde35d3b3f..f4c1f562455 100644
--- a/libstdc++-v3/aclocal.m4
+++ b/libstdc++-v3/aclocal.m4
@@ -1,4 +1,4 @@
-dnl aclocal.m4 generated automatically by aclocal 1.4-p5
+dnl aclocal.m4 generated automatically by aclocal 1.4-p6
dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
@@ -603,6 +603,33 @@ AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3, [
fi
])
+dnl
+dnl Check to see if the (unistd function) argument passed is
+dnl 1) declared when using the c++ compiler
+dnl 2) has "C" linkage
+dnl
+dnl argument 1 is name of function to check
+dnl
+dnl ASSUMES argument is a function with ONE parameter
+dnl
+dnl GLIBCPP_CHECK_UNISTD_DECL_AND_LINKAGE_1
+AC_DEFUN(GLIBCPP_CHECK_UNISTD_DECL_AND_LINKAGE_1, [
+ AC_MSG_CHECKING([for $1 declaration])
+ if test x${glibcpp_cv_func_$1_use+set} != xset; then
+ AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <unistd.h>],
+ [ $1(0);],
+ [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
+ AC_LANG_RESTORE
+ ])
+ fi
+ AC_MSG_RESULT($glibcpp_cv_func_$1_use)
+ if test x$glibcpp_cv_func_$1_use = x"yes"; then
+ AC_CHECK_FUNCS($1)
+ fi
+])
dnl
dnl Because the builtins are picky picky picky about the arguments they take,
@@ -714,9 +741,8 @@ AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT, [
fi
])
-
dnl
-dnl Check to see what the underlying c library
+dnl Check to see what the underlying c library is like
dnl These checks need to do two things:
dnl 1) make sure the name is declared when using the c++ compiler
dnl 2) make sure the name has "C" linkage
@@ -739,6 +765,25 @@ AC_DEFUN(GLIBCPP_CHECK_STDLIB_SUPPORT, [
CXXFLAGS="$ac_save_CXXFLAGS"
])
+dnl
+dnl Check to see what the underlying c library is like
+dnl These checks need to do two things:
+dnl 1) make sure the name is declared when using the c++ compiler
+dnl 2) make sure the name has "C" linkage
+dnl This might seem like overkill but experience has shown that it's not...
+dnl
+dnl Define HAVE_ISATTY if "isatty" is declared and links
+dnl
+dnl GLIBCPP_CHECK_UNISTD_SUPPORT
+AC_DEFUN(GLIBCPP_CHECK_UNISTD_SUPPORT, [
+ ac_test_CXXFLAGS="${CXXFLAGS+set}"
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
+
+ GLIBCPP_CHECK_UNISTD_DECL_AND_LINKAGE_1(isatty)
+
+ CXXFLAGS="$ac_save_CXXFLAGS"
+])
dnl
dnl Check to see what the underlying c library or math library is like.
@@ -888,9 +933,9 @@ dnl compilation, pick them up here.
dnl
dnl GLIBCPP_CHECK_TARGET
AC_DEFUN(GLIBCPP_CHECK_TARGET, [
- . [$]{glibcpp_basedir}/configure.target
- AC_MSG_RESULT(CPU config directory is $cpu_include_dir)
- AC_MSG_RESULT(OS config directory is $os_include_dir)
+ . [$]{glibcpp_basedir}/configure.target
+ AC_MSG_RESULT(CPU config directory is $cpu_include_dir)
+ AC_MSG_RESULT(OS config directory is $os_include_dir)
])
@@ -1087,14 +1132,14 @@ fi
dnl Run through flags (either default or command-line) and set anything
dnl extra (e.g., #defines) that must accompany particular g++ options.
if test -n "$enable_cxx_flags"; then
- for f in $enable_cxx_flags; do
- case "$f" in
- -fhonor-std) ;;
- -*) ;;
- *) # and we're trying to pass /what/ exactly?
- AC_MSG_ERROR([compiler flags start with a -]) ;;
- esac
- done
+ for f in $enable_cxx_flags; do
+ case "$f" in
+ -fhonor-std) ;;
+ -*) ;;
+ *) # and we're trying to pass /what/ exactly?
+ AC_MSG_ERROR([compiler flags start with a -]) ;;
+ esac
+ done
fi
EXTRA_CXX_FLAGS="$enable_cxx_flags"
AC_SUBST(EXTRA_CXX_FLAGS)
@@ -2217,7 +2262,7 @@ AC_MSG_RESULT($enable_symvers)
])
-# isc-posix.m4 serial 1 (gettext-0.10.40)
+# isc-posix.m4 serial 2 (gettext-0.11.2)
dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
dnl This file is free software, distributed under the terms of the GNU
dnl General Public License. As a special exception to the GNU General
@@ -2225,6 +2270,8 @@ dnl Public License, this file may be distributed as part of a program
dnl that contains a configuration script generated by Autoconf, under
dnl the same distribution terms as the rest of that program.
+# This file is not needed with autoconf-2.53 and newer. Remove it in 2005.
+
# This test replaces the one in autoconf.
# Currently this macro should have the same name as the autoconf macro
# because gettext's gettext.m4 (distributed in the automake package)
@@ -2285,7 +2332,8 @@ dnl Usage:
dnl AM_INIT_AUTOMAKE(package,version, [no-define])
AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_REQUIRE([AC_PROG_INSTALL])
+[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])
PACKAGE=[$1]
AC_SUBST(PACKAGE)
VERSION=[$2]
@@ -2301,13 +2349,42 @@ AC_REQUIRE([AM_SANITY_CHECK])
AC_REQUIRE([AC_ARG_PROGRAM])
dnl FIXME This is truly gross.
missing_dir=`cd $ac_aux_dir && pwd`
-AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}, $missing_dir)
AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
-AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}, $missing_dir)
AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
AC_REQUIRE([AC_PROG_MAKE_SET])])
+# Copyright 2002 Free Software Foundation, Inc.
+
+# 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, 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
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.4"])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION so it can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+ [AM_AUTOMAKE_VERSION([1.4-p6])])
+
#
# Check to make sure that the build environment is sane.
#
diff --git a/libstdc++-v3/config.h.in b/libstdc++-v3/config.h.in
index c565a8ba006..c3bc4b989fe 100644
--- a/libstdc++-v3/config.h.in
+++ b/libstdc++-v3/config.h.in
@@ -3,12 +3,12 @@
/* Define if you have a working `mmap' system call. */
#undef HAVE_MMAP
+/* Define if you need to in order for stat and other things to work. */
+#undef _POSIX_SOURCE
+
// Define if GCC supports weak symbols.
#undef _GLIBCPP_SUPPORTS_WEAK
-// Define if gthr-default.h exists (meaning that threading support is enabled).
-#undef HAVE_GTHR_DEFAULT
-
// Include I/O support for 'long long' and 'unsigned long long'.
#undef _GLIBCPP_USE_LONG_LONG
@@ -38,6 +38,21 @@
#define _GLIBCPP_ASM_SYMVER(cur, old, version)
#endif
+// Define if gthr-default.h exists (meaning that threading support is enabled).
+#undef HAVE_GTHR_DEFAULT
+
+// Define if drand48 exists.
+#undef HAVE_DRAND48
+
+// Define if getpagesize exists.
+#undef HAVE_GETPAGESIZE
+
+// Define if setenv exists.
+#undef HAVE_SETENV
+
+// Define if sigsetjmp exists.
+#undef HAVE_SIGSETJMP
+
// Define if mbstate_t exists in wchar.h.
#undef HAVE_MBSTATE_T
@@ -449,6 +464,9 @@
/* Define if you have the iconv_open function. */
#undef HAVE_ICONV_OPEN
+/* Define if you have the isatty function. */
+#undef HAVE_ISATTY
+
/* Define if you have the isinf function. */
#undef HAVE_ISINF
diff --git a/libstdc++-v3/config/io/basic_file_stdio.cc b/libstdc++-v3/config/io/basic_file_stdio.cc
index 93ca6bc5de4..ff23d983ae8 100644
--- a/libstdc++-v3/config/io/basic_file_stdio.cc
+++ b/libstdc++-v3/config/io/basic_file_stdio.cc
@@ -32,6 +32,7 @@
//
#include <bits/basic_file.h>
+#include <fcntl.h>
namespace std
{
@@ -43,8 +44,8 @@ namespace std
{ this->close(); }
void
- __basic_file<char>::_M_open_mode(ios_base::openmode __mode, int&, int&,
- char* __c_mode)
+ __basic_file<char>::_M_open_mode(ios_base::openmode __mode, int& __p_mode,
+ int&, char* __c_mode)
{
bool __testb = __mode & ios_base::binary;
bool __testi = __mode & ios_base::in;
@@ -52,18 +53,39 @@ namespace std
bool __testt = __mode & ios_base::trunc;
bool __testa = __mode & ios_base::app;
+ // Set __c_mode for use in fopen.
+ // Set __p_mode for use in open.
if (!__testi && __testo && !__testt && !__testa)
- strcpy(__c_mode, "w");
+ {
+ strcpy(__c_mode, "w");
+ __p_mode = (O_WRONLY | O_CREAT);
+ }
if (!__testi && __testo && !__testt && __testa)
- strcpy(__c_mode, "a");
+ {
+ strcpy(__c_mode, "a");
+ __p_mode |= O_WRONLY | O_CREAT | O_APPEND;
+ }
if (!__testi && __testo && __testt && !__testa)
- strcpy(__c_mode, "w");
+ {
+ strcpy(__c_mode, "w");
+ __p_mode |= O_WRONLY | O_CREAT | O_TRUNC;
+ }
+
if (__testi && !__testo && !__testt && !__testa)
- strcpy(__c_mode, "r");
+ {
+ strcpy(__c_mode, "r");
+ __p_mode |= O_RDONLY | O_NONBLOCK;
+ }
if (__testi && __testo && !__testt && !__testa)
- strcpy(__c_mode, "r+");
+ {
+ strcpy(__c_mode, "r+");
+ __p_mode |= O_RDWR | O_CREAT;
+ }
if (__testi && __testo && __testt && !__testa)
- strcpy(__c_mode, "w+");
+ {
+ strcpy(__c_mode, "w+");
+ __p_mode |= O_RDWR | O_CREAT | O_TRUNC;
+ }
if (__testb)
strcat(__c_mode, "b");
}
@@ -128,6 +150,11 @@ namespace std
if ((_M_cfile = fopen(__name, __c_mode)))
{
_M_cfile_created = true;
+
+ // Set input to nonblocking for fifos.
+ if (__mode & ios_base::in)
+ fcntl(this->fd(), F_SETFL, O_NONBLOCK);
+
__ret = this;
}
}
diff --git a/libstdc++-v3/config/linker-map.gnu b/libstdc++-v3/config/linker-map.gnu
index e2fa73d664e..f82002acd51 100644
--- a/libstdc++-v3/config/linker-map.gnu
+++ b/libstdc++-v3/config/linker-map.gnu
@@ -80,15 +80,15 @@ GLIBCPP_3.2 {
_ZNSs12_S_empty_repEv;
_ZNSs20_S_empty_rep_storageE;
_ZNSbIwSt11char_traitsIwESaIwEE20_S_empty_rep_storageE;
- _ZNSs12_S_constructEjcRKSaIcE;
- _ZNSs13_S_copy_chars*;
+ _ZNSs12_S_constructE*;
+ _ZNSs13_S_copy_charsE*;
_ZNSbIwSt11char_traitsIwESaIwEE[A-Ra-z]*;
_ZNSbIwSt11char_traitsIwESaIwEE[0-9][A-Ra-z]*;
_ZNSbIwSt11char_traitsIwESaIwEE[0-9][0-9][A-Ra-z]*;
_ZNSbIwSt11char_traitsIwESaIwEE[0-9]_[A-Ra-z]*;
_ZNSbIwSt11char_traitsIwESaIwEE[0-9][0-9]_[A-Ra-z]*;
_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_chars*;
- _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_;
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructE[jm]wRKS1_;
_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv;
_ZSt24__uninitialized_copy_auxIN9*;
_ZSt26__uninitialized_fill_n_aux*;
@@ -105,10 +105,7 @@ GLIBCPP_3.2 {
# std::codecvt<char>::~codecvt
_ZNSt7codecvtIcc11__mbstate_tED*;
# std::codecvt<char>::codecvt(size_t), where size_t variable.
- _ZNSt7codecvtIcc11__mbstate_tEC1Ej;
- _ZNSt7codecvtIcc11__mbstate_tEC2Ej;
- _ZNSt7codecvtIcc11__mbstate_tEC1Em;
- _ZNSt7codecvtIcc11__mbstate_tEC2Em;
+ _ZNSt7codecvtIcc11__mbstate_tEC[12]E[jm];
# std::codecvt<char>::id
_ZNSt7codecvtIcc11__mbstate_tE2idE;
@@ -117,10 +114,7 @@ GLIBCPP_3.2 {
# std::codecvt<wchar_t>::~codecvt
_ZNSt7codecvtIwc11__mbstate_tED*;
# std::codecvt<wchar_t>::codecvt(size_t), where size_t variable.
- _ZNSt7codecvtIwc11__mbstate_tEC1Ej;
- _ZNSt7codecvtIwc11__mbstate_tEC2Ej;
- _ZNSt7codecvtIwc11__mbstate_tEC1Em;
- _ZNSt7codecvtIwc11__mbstate_tEC2Em;
+ _ZNSt7codecvtIwc11__mbstate_tEC[12]E[jm];
# std::codecvt<wchar_t>::id
_ZNSt7codecvtIwc11__mbstate_tE2idE;
diff --git a/libstdc++-v3/config/os/hpux/os_defines.h b/libstdc++-v3/config/os/hpux/os_defines.h
index aae9998c552..9dd4fb41af6 100644
--- a/libstdc++-v3/config/os/hpux/os_defines.h
+++ b/libstdc++-v3/config/os/hpux/os_defines.h
@@ -84,8 +84,9 @@ namespace std
typedef long int __padding_type;
#endif
-/* We need explicit instantiation of the atomicity lock on 32-bit HPUX. */
-#ifndef __LP64__
+/* We need explicit instantiation of the atomicity lock on HPPA if
+ there is no weak support. */
+#if !defined(_GLIBCPP_SUPPORTS_WEAK) && defined (__hppa__)
#define _GLIBCPP_INST_ATOMICITY_LOCK 1
#endif
#endif
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 04ff41f984b..8e16af9b471 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -1492,14 +1492,15 @@ ac_exeext=$EXEEXT
# Find platform-specific directories containing configuration info. In
# addition to possibly modifying the same flags, it also sets up symlinks.
- . ${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
+ . ${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
+am__api_version="1.4"
echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
-echo "configure:1503: checking whether build environment is sane" >&5
+echo "configure:1504: checking whether build environment is sane" >&5
# Just in case
sleep 1
echo timestamp > conftestfile
@@ -1556,7 +1557,7 @@ test "$program_suffix" != NONE &&
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:1560: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:1561: 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
@@ -1601,21 +1602,21 @@ EOF
missing_dir=`cd $ac_aux_dir && pwd`
-echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
-echo "configure:1606: checking for working aclocal" >&5
+echo $ac_n "checking for working aclocal-${am__api_version}""... $ac_c" 1>&6
+echo "configure:1607: checking for working aclocal-${am__api_version}" >&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.
-if (aclocal --version) < /dev/null > /dev/null 2>&1; then
- ACLOCAL=aclocal
+if (aclocal-${am__api_version} --version) < /dev/null > /dev/null 2>&1; then
+ ACLOCAL=aclocal-${am__api_version}
echo "$ac_t""found" 1>&6
else
- ACLOCAL="$missing_dir/missing aclocal"
+ ACLOCAL="$missing_dir/missing aclocal-${am__api_version}"
echo "$ac_t""missing" 1>&6
fi
echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
-echo "configure:1619: checking for working autoconf" >&5
+echo "configure:1620: 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.
@@ -1627,21 +1628,21 @@ else
echo "$ac_t""missing" 1>&6
fi
-echo $ac_n "checking for working automake""... $ac_c" 1>&6
-echo "configure:1632: checking for working automake" >&5
+echo $ac_n "checking for working automake-${am__api_version}""... $ac_c" 1>&6
+echo "configure:1633: checking for working automake-${am__api_version}" >&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.
-if (automake --version) < /dev/null > /dev/null 2>&1; then
- AUTOMAKE=automake
+if (automake-${am__api_version} --version) < /dev/null > /dev/null 2>&1; then
+ AUTOMAKE=automake-${am__api_version}
echo "$ac_t""found" 1>&6
else
- AUTOMAKE="$missing_dir/missing automake"
+ AUTOMAKE="$missing_dir/missing automake-${am__api_version}"
echo "$ac_t""missing" 1>&6
fi
echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
-echo "configure:1645: checking for working autoheader" >&5
+echo "configure:1646: 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.
@@ -1654,7 +1655,7 @@ else
fi
echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
-echo "configure:1658: checking for working makeinfo" >&5
+echo "configure:1659: 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.
@@ -1753,7 +1754,7 @@ ac_prog=ld
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:1757: checking for ld used by GCC" >&5
+echo "configure:1758: checking for ld used by GCC" >&5
case $host in
*-*-mingw*)
# gcc leaves a trailing carriage return which upsets mingw
@@ -1783,10 +1784,10 @@ echo "configure:1757: checking for ld used by GCC" >&5
esac
elif test "$with_gnu_ld" = yes; then
echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:1787: checking for GNU ld" >&5
+echo "configure:1788: checking for GNU ld" >&5
else
echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
-echo "configure:1790: checking for non-GNU ld" >&5
+echo "configure:1791: 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
@@ -1821,7 +1822,7 @@ else
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:1825: checking if the linker ($LD) is GNU ld" >&5
+echo "configure:1826: 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
@@ -1838,7 +1839,7 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6
-echo "configure:1842: checking for $LD option to reload object files" >&5
+echo "configure:1843: 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
@@ -1850,7 +1851,7 @@ reload_flag=$lt_cv_ld_reload_flag
test -n "$reload_flag" && reload_flag=" $reload_flag"
echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
-echo "configure:1854: checking for BSD-compatible nm" >&5
+echo "configure:1855: 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
@@ -1888,7 +1889,7 @@ 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:1892: checking how to recognise dependant libraries" >&5
+echo "configure:1893: 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
@@ -2061,13 +2062,13 @@ file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
echo $ac_n "checking for object suffix""... $ac_c" 1>&6
-echo "configure:2065: checking for object suffix" >&5
+echo "configure:2066: 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:2071: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2072: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
for ac_file in conftest.*; do
case $ac_file in
*.c) ;;
@@ -2091,7 +2092,7 @@ case $deplibs_check_method in
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:2095: checking for ${ac_tool_prefix}file" >&5
+echo "configure:2096: 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
@@ -2153,7 +2154,7 @@ fi
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:2157: checking for file" >&5
+echo "configure:2158: 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
@@ -2224,7 +2225,7 @@ esac
# 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:2228: checking for $ac_word" >&5
+echo "configure:2229: 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
@@ -2256,7 +2257,7 @@ if test -n "$ac_tool_prefix"; then
# 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:2260: checking for $ac_word" >&5
+echo "configure:2261: 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
@@ -2291,7 +2292,7 @@ fi
# 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:2295: checking for $ac_word" >&5
+echo "configure:2296: 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
@@ -2323,7 +2324,7 @@ if test -n "$ac_tool_prefix"; then
# 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:2327: checking for $ac_word" >&5
+echo "configure:2328: 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
@@ -2390,8 +2391,8 @@ test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic"
case $host in
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 2394 "configure"' > conftest.$ac_ext
- if { (eval echo configure:2395: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ echo '#line 2395 "configure"' > conftest.$ac_ext
+ if { (eval echo configure:2396: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
case `/usr/bin/file conftest.$ac_objext` in
*32-bit*)
LD="${LD-ld} -32"
@@ -2410,7 +2411,7 @@ case $host in
ia64-*-hpux*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
- if { (eval echo configure:2414: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ if { (eval echo configure:2415: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
case "`/usr/bin/file conftest.o`" in
*ELF-32*)
HPUX_IA64_MODE="32"
@@ -2428,7 +2429,7 @@ ia64-*-hpux*)
SAVE_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -belf"
echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
-echo "configure:2432: checking whether the C compiler needs -belf" >&5
+echo "configure:2433: 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
@@ -2441,14 +2442,14 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a
cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext <<EOF
-#line 2445 "configure"
+#line 2446 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:2452: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2453: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
lt_cv_cc_needs_belf=yes
else
@@ -2478,7 +2479,7 @@ echo "$ac_t""$lt_cv_cc_needs_belf" 1>&6
esac
echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
-echo "configure:2482: checking how to run the C++ preprocessor" >&5
+echo "configure:2483: 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
@@ -2491,12 +2492,12 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
CXXCPP="${CXX-g++} -E"
cat > conftest.$ac_ext <<EOF
-#line 2495 "configure"
+#line 2496 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2500: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2501: \"$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
:
@@ -2634,7 +2635,7 @@ exec 5>>./config.log
# Check for c++ or library specific bits that don't require linking.
#GLIBCPP_CHECK_COMPILER_VERSION
echo $ac_n "checking for GNU make""... $ac_c" 1>&6
-echo "configure:2638: checking for GNU make" >&5
+echo "configure:2639: 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
@@ -2682,7 +2683,7 @@ esac
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:2686: checking how to run the C preprocessor" >&5
+echo "configure:2687: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -2697,13 +2698,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 2701 "configure"
+#line 2702 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2707: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2708: \"$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
:
@@ -2714,13 +2715,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 2718 "configure"
+#line 2719 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2724: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2725: \"$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
:
@@ -2731,13 +2732,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 2735 "configure"
+#line 2736 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2741: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2742: \"$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
:
@@ -2763,7 +2764,7 @@ echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking for cstdio to use""... $ac_c" 1>&6
-echo "configure:2767: checking for cstdio to use" >&5
+echo "configure:2768: checking for cstdio to use" >&5
# Check whether --enable-cstdio or --disable-cstdio was given.
if test "${enable_cstdio+set}" = set; then
enableval="$enable_cstdio"
@@ -2787,17 +2788,17 @@ fi
# see if we are on a system with libio native (ie, linux)
ac_safe=`echo "libio.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libio.h""... $ac_c" 1>&6
-echo "configure:2791: checking for libio.h" >&5
+echo "configure:2792: checking for libio.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
-#line 2796 "configure"
+#line 2797 "configure"
#include "confdefs.h"
#include <libio.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2801: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2802: \"$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*
@@ -2827,9 +2828,9 @@ fi
case "$target" in
*-*-linux*)
echo $ac_n "checking for glibc version >= 2.2""... $ac_c" 1>&6
-echo "configure:2831: checking for glibc version >= 2.2" >&5
+echo "configure:2832: checking for glibc version >= 2.2" >&5
cat > conftest.$ac_ext <<EOF
-#line 2833 "configure"
+#line 2834 "configure"
#include "confdefs.h"
#include <features.h>
@@ -2943,7 +2944,7 @@ fi
echo $ac_n "checking for clocale to use""... $ac_c" 1>&6
-echo "configure:2947: checking for clocale to use" >&5
+echo "configure:2948: checking for clocale to use" >&5
# Check whether --enable-clocale or --disable-clocale was given.
if test "${enable_clocale+set}" = set; then
enableval="$enable_clocale"
@@ -2961,7 +2962,7 @@ fi
case x${target_os} in
xlinux* | xgnu*)
cat > conftest.$ac_ext <<EOF
-#line 2965 "configure"
+#line 2966 "configure"
#include "confdefs.h"
#include <features.h>
@@ -2987,7 +2988,7 @@ rm -f conftest*
enable_clocale_flag=generic
else
cat > conftest.$ac_ext <<EOF
-#line 2991 "configure"
+#line 2992 "configure"
#include "confdefs.h"
#define _GNU_SOURCE 1
@@ -3014,7 +3015,7 @@ else
}
EOF
-if { (eval echo configure:3018: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
enable_clocale_flag=gnu
else
@@ -3075,7 +3076,7 @@ fi
# 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:3079: checking for $ac_word" >&5
+echo "configure:3080: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_check_msgfmt'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3208,16 +3209,16 @@ cross_compiling=$ac_cv_prog_cxx_cross
# Check for the existence of <math.h> functions used if C99 is enabled.
ac_c99_math=yes;
echo $ac_n "checking for ISO C99 support in <math.h>""... $ac_c" 1>&6
-echo "configure:3212: checking for ISO C99 support in <math.h>" >&5
+echo "configure:3213: checking for ISO C99 support in <math.h>" >&5
cat > conftest.$ac_ext <<EOF
-#line 3214 "configure"
+#line 3215 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
fpclassify(0.0);
; return 0; }
EOF
-if { (eval echo configure:3221: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3222: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3227,14 +3228,14 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3231 "configure"
+#line 3232 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
isfinite(0.0);
; return 0; }
EOF
-if { (eval echo configure:3238: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3239: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3244,14 +3245,14 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3248 "configure"
+#line 3249 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
isinf(0.0);
; return 0; }
EOF
-if { (eval echo configure:3255: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3256: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3261,14 +3262,14 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3265 "configure"
+#line 3266 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
isnan(0.0);
; return 0; }
EOF
-if { (eval echo configure:3272: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3273: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3278,14 +3279,14 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3282 "configure"
+#line 3283 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
isnormal(0.0);
; return 0; }
EOF
-if { (eval echo configure:3289: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3290: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3295,14 +3296,14 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3299 "configure"
+#line 3300 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
signbit(0.0);
; return 0; }
EOF
-if { (eval echo configure:3306: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3307: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3312,14 +3313,14 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3316 "configure"
+#line 3317 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
isgreater(0.0,0.0);
; return 0; }
EOF
-if { (eval echo configure:3323: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3324: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3329,14 +3330,14 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3333 "configure"
+#line 3334 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
isgreaterequal(0.0,0.0);
; return 0; }
EOF
-if { (eval echo configure:3340: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3341: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3346,14 +3347,14 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3350 "configure"
+#line 3351 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
isless(0.0,0.0);
; return 0; }
EOF
-if { (eval echo configure:3357: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3358: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3363,14 +3364,14 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3367 "configure"
+#line 3368 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
islessequal(0.0,0.0);
; return 0; }
EOF
-if { (eval echo configure:3374: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3375: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3380,14 +3381,14 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3384 "configure"
+#line 3385 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
islessgreater(0.0,0.0);
; return 0; }
EOF
-if { (eval echo configure:3391: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3392: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3397,14 +3398,14 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3401 "configure"
+#line 3402 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
isunordered(0.0,0.0);
; return 0; }
EOF
-if { (eval echo configure:3408: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3409: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3418,16 +3419,16 @@ rm -f conftest*
# Check for the existence in <stdio.h> of vscanf, et. al.
ac_c99_stdio=yes;
echo $ac_n "checking for ISO C99 support in <stdio.h>""... $ac_c" 1>&6
-echo "configure:3422: checking for ISO C99 support in <stdio.h>" >&5
+echo "configure:3423: checking for ISO C99 support in <stdio.h>" >&5
cat > conftest.$ac_ext <<EOF
-#line 3424 "configure"
+#line 3425 "configure"
#include "confdefs.h"
#include <stdio.h>
int main() {
snprintf("12", 0, "%i");
; return 0; }
EOF
-if { (eval echo configure:3431: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3432: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3437,7 +3438,7 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3441 "configure"
+#line 3442 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <stdarg.h>
@@ -3448,7 +3449,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:3452: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3453: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3458,7 +3459,7 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3462 "configure"
+#line 3463 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <stdarg.h>
@@ -3469,7 +3470,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:3473: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3474: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3479,7 +3480,7 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3483 "configure"
+#line 3484 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <stdarg.h>
@@ -3490,7 +3491,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:3494: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3495: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3500,7 +3501,7 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3504 "configure"
+#line 3505 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <stdarg.h>
@@ -3511,7 +3512,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:3515: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3516: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3525,20 +3526,20 @@ rm -f conftest*
# Check for the existence in <stdlib.h> of lldiv_t, et. al.
ac_c99_stdlib=yes;
echo $ac_n "checking for lldiv_t declaration""... $ac_c" 1>&6
-echo "configure:3529: checking for lldiv_t declaration" >&5
+echo "configure:3530: checking for lldiv_t declaration" >&5
if eval "test \"`echo '$''{'ac_c99_lldiv_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3535 "configure"
+#line 3536 "configure"
#include "confdefs.h"
#include <stdlib.h>
int main() {
lldiv_t mydivt;
; return 0; }
EOF
-if { (eval echo configure:3542: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3543: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_c99_lldiv_t=yes
else
@@ -3554,16 +3555,16 @@ fi
echo "$ac_t""$ac_c99_lldiv_t" 1>&6
echo $ac_n "checking for ISO C99 support in <stdlib.h>""... $ac_c" 1>&6
-echo "configure:3558: checking for ISO C99 support in <stdlib.h>" >&5
+echo "configure:3559: checking for ISO C99 support in <stdlib.h>" >&5
cat > conftest.$ac_ext <<EOF
-#line 3560 "configure"
+#line 3561 "configure"
#include "confdefs.h"
#include <stdlib.h>
int main() {
char* tmp; strtof("gnu", &tmp);
; return 0; }
EOF
-if { (eval echo configure:3567: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3568: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3573,14 +3574,14 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3577 "configure"
+#line 3578 "configure"
#include "confdefs.h"
#include <stdlib.h>
int main() {
char* tmp; strtold("gnu", &tmp);
; return 0; }
EOF
-if { (eval echo configure:3584: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3585: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3590,14 +3591,14 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3594 "configure"
+#line 3595 "configure"
#include "confdefs.h"
#include <stdlib.h>
int main() {
llabs(10);
; return 0; }
EOF
-if { (eval echo configure:3601: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3602: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3607,14 +3608,14 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3611 "configure"
+#line 3612 "configure"
#include "confdefs.h"
#include <stdlib.h>
int main() {
lldiv(10,1);
; return 0; }
EOF
-if { (eval echo configure:3618: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3619: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3624,14 +3625,14 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3628 "configure"
+#line 3629 "configure"
#include "confdefs.h"
#include <stdlib.h>
int main() {
atoll("10");
; return 0; }
EOF
-if { (eval echo configure:3635: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3636: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3641,14 +3642,14 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3645 "configure"
+#line 3646 "configure"
#include "confdefs.h"
#include <stdlib.h>
int main() {
_Exit(0);
; return 0; }
EOF
-if { (eval echo configure:3652: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3653: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3666,16 +3667,16 @@ rm -f conftest*
# XXX the wchar.h checks should be rolled into the general C99 bits.
ac_c99_wchar=yes;
echo $ac_n "checking for additional ISO C99 support in <wchar.h>""... $ac_c" 1>&6
-echo "configure:3670: checking for additional ISO C99 support in <wchar.h>" >&5
+echo "configure:3671: checking for additional ISO C99 support in <wchar.h>" >&5
cat > conftest.$ac_ext <<EOF
-#line 3672 "configure"
+#line 3673 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
wcstold(L"10.0", NULL);
; return 0; }
EOF
-if { (eval echo configure:3679: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3680: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3685,14 +3686,14 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3689 "configure"
+#line 3690 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
wcstoll(L"10", NULL, 10);
; return 0; }
EOF
-if { (eval echo configure:3696: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3697: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3702,14 +3703,14 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3706 "configure"
+#line 3707 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
wcstoull(L"10", NULL, 10);
; return 0; }
EOF
-if { (eval echo configure:3713: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3714: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3721,7 +3722,7 @@ rm -f conftest*
echo "$ac_t""$ac_c99_wchar" 1>&6
echo $ac_n "checking for enabled ISO C99 support""... $ac_c" 1>&6
-echo "configure:3725: checking for enabled ISO C99 support" >&5
+echo "configure:3726: checking for enabled ISO C99 support" >&5
if test x"$ac_c99_math" = x"no" ||
test x"$ac_c99_stdio" = x"no" ||
test x"$ac_c99_stdlib" = x"no" ||
@@ -3769,17 +3770,17 @@ cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking for enabled long long I/O support""... $ac_c" 1>&6
-echo "configure:3773: checking for enabled long long I/O support" >&5
+echo "configure:3774: checking for enabled long long I/O support" >&5
# iostreams require strtoll, strtoull to compile
cat > conftest.$ac_ext <<EOF
-#line 3776 "configure"
+#line 3777 "configure"
#include "confdefs.h"
#include <stdlib.h>
int main() {
char* tmp; strtoll("gnu", &tmp, 10);
; return 0; }
EOF
-if { (eval echo configure:3783: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3784: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3789,14 +3790,14 @@ else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3793 "configure"
+#line 3794 "configure"
#include "confdefs.h"
#include <stdlib.h>
int main() {
char* tmp; strtoull("gnu", &tmp, 10);
; return 0; }
EOF
-if { (eval echo configure:3800: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3801: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -3824,7 +3825,7 @@ cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking for c header strategy to use""... $ac_c" 1>&6
-echo "configure:3828: checking for c header strategy to use" >&5
+echo "configure:3829: checking for c header strategy to use" >&5
# Check whether --enable-cheaders or --disable-cheaders was given.
if test "${enable_cheaders+set}" = set; then
enableval="$enable_cheaders"
@@ -3885,7 +3886,7 @@ fi
echo $ac_n "checking for thread model used by GCC""... $ac_c" 1>&6
-echo "configure:3889: checking for thread model used by GCC" >&5
+echo "configure:3890: checking for thread model used by GCC" >&5
target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
echo "$ac_t""$target_thread_file" 1>&6
@@ -3924,21 +3925,21 @@ if test "$enable_cxx_flags" = "none"; then
fi
if test -n "$enable_cxx_flags"; then
- for f in $enable_cxx_flags; do
- case "$f" in
- -fhonor-std) ;;
- -*) ;;
- *) # and we're trying to pass /what/ exactly?
- { echo "configure: error: compiler flags start with a -" 1>&2; exit 1; } ;;
- esac
- done
+ for f in $enable_cxx_flags; do
+ case "$f" in
+ -fhonor-std) ;;
+ -*) ;;
+ *) # and we're trying to pass /what/ exactly?
+ { echo "configure: error: compiler flags start with a -" 1>&2; exit 1; } ;;
+ esac
+ done
fi
EXTRA_CXX_FLAGS="$enable_cxx_flags"
echo $ac_n "checking for exception model to use""... $ac_c" 1>&6
-echo "configure:3942: checking for exception model to use" >&5
+echo "configure:3943: 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.
@@ -3953,7 +3954,7 @@ if test "${enable_sjlj_exceptions+set}" = set; then
:
else
cat > conftest.$ac_ext << EOF
-#line 3957 "configure"
+#line 3958 "configure"
struct S { ~S(); };
void bar();
void foo()
@@ -3964,7 +3965,7 @@ void foo()
EOF
old_CXXFLAGS="$CXXFLAGS"
CXXFLAGS=-S
- if { (eval echo configure:3968: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ if { (eval echo configure:3969: \"$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
@@ -3997,7 +3998,7 @@ cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking for use of libunwind""... $ac_c" 1>&6
-echo "configure:4001: checking for use of libunwind" >&5
+echo "configure:4002: checking for use of libunwind" >&5
# Check whether --enable-libunwind-exceptions or --disable-libunwind-exceptions was given.
if test "${enable_libunwind_exceptions+set}" = set; then
enableval="$enable_libunwind_exceptions"
@@ -4038,17 +4039,17 @@ for ac_hdr in string.h stdlib.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4042: checking for $ac_hdr" >&5
+echo "configure:4043: 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
-#line 4047 "configure"
+#line 4048 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4052: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4053: \"$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*
@@ -4075,6 +4076,19 @@ fi
done
+# No surprises, no surprises...
+if test $ATOMICITYH = cpu/generic ; then
+ echo "configure: warning: No native atomic operations are provided yet for this platform." 1>&2
+ if test $target_thread_file = single; then
+ echo "configure: warning: They cannot be faked when thread support is disabled." 1>&2
+ echo "configure: warning: Thread-safety of certain classes is not guaranteed." 1>&2
+ else
+ echo "configure: warning: They will be faked using a mutex." 1>&2
+ echo "configure: warning: Performance of certain classes will degrade as a result." 1>&2
+ fi
+fi
+
+
if test -n "$with_cross_host" || test x"$build" != x"$host"; then
# We are being configured with some form of cross compiler.
@@ -4116,17 +4130,17 @@ if test -n "$with_cross_host" || test x"$build" != x"$host"; then
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4120: checking for $ac_hdr" >&5
+echo "configure:4134: 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
-#line 4125 "configure"
+#line 4139 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4130: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4144: \"$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*
@@ -4204,12 +4218,12 @@ done
# 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:4208: checking for ld that supports -Wl,--gc-sections" >&5
+echo "configure:4222: checking for ld that supports -Wl,--gc-sections" >&5
if test "$cross_compiling" = yes; then
ac_sectionLDflags=yes
else
cat > conftest.$ac_ext <<EOF
-#line 4213 "configure"
+#line 4227 "configure"
#include "confdefs.h"
int main(void)
@@ -4220,7 +4234,7 @@ else
}
EOF
-if { (eval echo configure:4224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_sectionLDflags=yes
else
@@ -4254,7 +4268,7 @@ fi
echo $ac_n "checking for main in -lm""... $ac_c" 1>&6
-echo "configure:4258: checking for main in -lm" >&5
+echo "configure:4272: 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
@@ -4262,14 +4276,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4266 "configure"
+#line 4280 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:4273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4287: \"$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
@@ -4299,12 +4313,12 @@ fi
for ac_func in nan copysignf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4303: checking for $ac_func" >&5
+echo "configure:4317: 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 <<EOF
-#line 4308 "configure"
+#line 4322 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4327,7 +4341,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4331: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4345: \"$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
@@ -4356,12 +4370,12 @@ done
for ac_func in __signbit
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4360: checking for $ac_func" >&5
+echo "configure:4374: 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 <<EOF
-#line 4365 "configure"
+#line 4379 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4384,7 +4398,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4402: \"$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
@@ -4412,12 +4426,12 @@ done
for ac_func in __signbitf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4416: checking for $ac_func" >&5
+echo "configure:4430: 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 <<EOF
-#line 4421 "configure"
+#line 4435 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4440,7 +4454,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4458: \"$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
@@ -4470,12 +4484,12 @@ done
for ac_func in __signbitl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4474: checking for $ac_func" >&5
+echo "configure:4488: 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 <<EOF
-#line 4479 "configure"
+#line 4493 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4498,7 +4512,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4502: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4516: \"$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
@@ -4530,16 +4544,16 @@ done
echo $ac_n "checking for mbstate_t""... $ac_c" 1>&6
-echo "configure:4534: checking for mbstate_t" >&5
+echo "configure:4548: checking for mbstate_t" >&5
cat > conftest.$ac_ext <<EOF
-#line 4536 "configure"
+#line 4550 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
mbstate_t teststate;
; return 0; }
EOF
-if { (eval echo configure:4543: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4557: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
have_mbstate_t=yes
else
@@ -4561,17 +4575,17 @@ EOF
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4565: checking for $ac_hdr" >&5
+echo "configure:4579: 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
-#line 4570 "configure"
+#line 4584 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4575: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4589: \"$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*
@@ -4602,17 +4616,17 @@ done
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4606: checking for $ac_hdr" >&5
+echo "configure:4620: 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
-#line 4611 "configure"
+#line 4625 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4616: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (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*
@@ -4645,16 +4659,16 @@ done
test x"$enable_c_mbchar" != xno; then
echo $ac_n "checking for WCHAR_MIN and WCHAR_MAX""... $ac_c" 1>&6
-echo "configure:4649: checking for WCHAR_MIN and WCHAR_MAX" >&5
+echo "configure:4663: checking for WCHAR_MIN and WCHAR_MAX" >&5
cat > conftest.$ac_ext <<EOF
-#line 4651 "configure"
+#line 4665 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
int i = WCHAR_MIN; int j = WCHAR_MAX;
; return 0; }
EOF
-if { (eval echo configure:4658: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4672: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
has_wchar_minmax=yes
else
@@ -4667,9 +4681,9 @@ rm -f conftest*
echo "$ac_t""$has_wchar_minmax" 1>&6
echo $ac_n "checking for WEOF""... $ac_c" 1>&6
-echo "configure:4671: checking for WEOF" >&5
+echo "configure:4685: checking for WEOF" >&5
cat > conftest.$ac_ext <<EOF
-#line 4673 "configure"
+#line 4687 "configure"
#include "confdefs.h"
#include <wchar.h>
@@ -4678,7 +4692,7 @@ int main() {
wint_t i = WEOF;
; return 0; }
EOF
-if { (eval echo configure:4682: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4696: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
has_weof=yes
else
@@ -4694,12 +4708,12 @@ rm -f conftest*
for ac_func in wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4698: checking for $ac_func" >&5
+echo "configure:4712: 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 <<EOF
-#line 4703 "configure"
+#line 4717 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4722,7 +4736,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4726: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4740: \"$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
@@ -4757,12 +4771,12 @@ done
wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4761: checking for $ac_func" >&5
+echo "configure:4775: 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 <<EOF
-#line 4766 "configure"
+#line 4780 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4785,7 +4799,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4789: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4803: \"$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
@@ -4813,7 +4827,7 @@ done
echo $ac_n "checking for ISO C99 wchar_t support""... $ac_c" 1>&6
-echo "configure:4817: checking for ISO C99 wchar_t support" >&5
+echo "configure:4831: 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
@@ -4825,17 +4839,17 @@ echo "configure:4817: checking for ISO C99 wchar_t support" >&5
ac_safe=`echo "iconv.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for iconv.h""... $ac_c" 1>&6
-echo "configure:4829: checking for iconv.h" >&5
+echo "configure:4843: 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
-#line 4834 "configure"
+#line 4848 "configure"
#include "confdefs.h"
#include <iconv.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4839: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4853: \"$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*
@@ -4859,17 +4873,17 @@ fi
ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6
-echo "configure:4863: checking for langinfo.h" >&5
+echo "configure:4877: 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
-#line 4868 "configure"
+#line 4882 "configure"
#include "confdefs.h"
#include <langinfo.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4873: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4887: \"$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*
@@ -4893,7 +4907,7 @@ fi
echo $ac_n "checking for iconv in -liconv""... $ac_c" 1>&6
-echo "configure:4897: checking for iconv in -liconv" >&5
+echo "configure:4911: 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
@@ -4901,7 +4915,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-liconv $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4905 "configure"
+#line 4919 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4912,7 +4926,7 @@ int main() {
iconv()
; return 0; }
EOF
-if { (eval echo configure:4916: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4930: \"$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
@@ -4938,12 +4952,12 @@ fi
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:4942: checking for $ac_func" >&5
+echo "configure:4956: 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 <<EOF
-#line 4947 "configure"
+#line 4961 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4966,7 +4980,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4970: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4984: \"$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
@@ -4996,7 +5010,7 @@ done
LIBS="$ac_save_LIBS"
echo $ac_n "checking for XPG2 wchar_t support""... $ac_c" 1>&6
-echo "configure:5000: checking for XPG2 wchar_t support" >&5
+echo "configure:5014: 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
@@ -5007,7 +5021,7 @@ echo "configure:5000: checking for XPG2 wchar_t support" >&5
echo "$ac_t""$ac_XPG2_wchar_t" 1>&6
echo $ac_n "checking for enabled wchar_t specializations""... $ac_c" 1>&6
-echo "configure:5011: checking for enabled wchar_t specializations" >&5
+echo "configure:5025: 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
@@ -5097,17 +5111,17 @@ EOF
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5101: checking for $ac_hdr" >&5
+echo "configure:5115: 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
-#line 5106 "configure"
+#line 5120 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5111: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5125: \"$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*
@@ -5185,12 +5199,12 @@ done
# 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:5189: checking for ld that supports -Wl,--gc-sections" >&5
+echo "configure:5203: checking for ld that supports -Wl,--gc-sections" >&5
if test "$cross_compiling" = yes; then
ac_sectionLDflags=yes
else
cat > conftest.$ac_ext <<EOF
-#line 5194 "configure"
+#line 5208 "configure"
#include "confdefs.h"
int main(void)
@@ -5201,7 +5215,7 @@ else
}
EOF
-if { (eval echo configure:5205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5219: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_sectionLDflags=yes
else
@@ -5235,7 +5249,7 @@ fi
echo $ac_n "checking for main in -lm""... $ac_c" 1>&6
-echo "configure:5239: checking for main in -lm" >&5
+echo "configure:5253: 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
@@ -5243,14 +5257,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5247 "configure"
+#line 5261 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:5254: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5268: \"$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
@@ -5280,12 +5294,12 @@ fi
for ac_func in nan copysignf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5284: checking for $ac_func" >&5
+echo "configure:5298: 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 <<EOF
-#line 5289 "configure"
+#line 5303 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5308,7 +5322,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5326: \"$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
@@ -5337,12 +5351,12 @@ done
for ac_func in __signbit
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5341: checking for $ac_func" >&5
+echo "configure:5355: 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 <<EOF
-#line 5346 "configure"
+#line 5360 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5365,7 +5379,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5383: \"$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
@@ -5393,12 +5407,12 @@ done
for ac_func in __signbitf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5397: checking for $ac_func" >&5
+echo "configure:5411: 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 <<EOF
-#line 5402 "configure"
+#line 5416 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5421,7 +5435,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5439: \"$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
@@ -5451,12 +5465,12 @@ done
for ac_func in __signbitl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5455: checking for $ac_func" >&5
+echo "configure:5469: 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 <<EOF
-#line 5460 "configure"
+#line 5474 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5479,7 +5493,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5483: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5497: \"$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
@@ -5511,16 +5525,16 @@ done
echo $ac_n "checking for mbstate_t""... $ac_c" 1>&6
-echo "configure:5515: checking for mbstate_t" >&5
+echo "configure:5529: checking for mbstate_t" >&5
cat > conftest.$ac_ext <<EOF
-#line 5517 "configure"
+#line 5531 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
mbstate_t teststate;
; return 0; }
EOF
-if { (eval echo configure:5524: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5538: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
have_mbstate_t=yes
else
@@ -5542,17 +5556,17 @@ EOF
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5546: checking for $ac_hdr" >&5
+echo "configure:5560: 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
-#line 5551 "configure"
+#line 5565 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5556: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5570: \"$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*
@@ -5583,17 +5597,17 @@ done
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5587: checking for $ac_hdr" >&5
+echo "configure:5601: 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
-#line 5592 "configure"
+#line 5606 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5597: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5611: \"$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*
@@ -5626,16 +5640,16 @@ done
test x"$enable_c_mbchar" != xno; then
echo $ac_n "checking for WCHAR_MIN and WCHAR_MAX""... $ac_c" 1>&6
-echo "configure:5630: checking for WCHAR_MIN and WCHAR_MAX" >&5
+echo "configure:5644: checking for WCHAR_MIN and WCHAR_MAX" >&5
cat > conftest.$ac_ext <<EOF
-#line 5632 "configure"
+#line 5646 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
int i = WCHAR_MIN; int j = WCHAR_MAX;
; return 0; }
EOF
-if { (eval echo configure:5639: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5653: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
has_wchar_minmax=yes
else
@@ -5648,9 +5662,9 @@ rm -f conftest*
echo "$ac_t""$has_wchar_minmax" 1>&6
echo $ac_n "checking for WEOF""... $ac_c" 1>&6
-echo "configure:5652: checking for WEOF" >&5
+echo "configure:5666: checking for WEOF" >&5
cat > conftest.$ac_ext <<EOF
-#line 5654 "configure"
+#line 5668 "configure"
#include "confdefs.h"
#include <wchar.h>
@@ -5659,7 +5673,7 @@ int main() {
wint_t i = WEOF;
; return 0; }
EOF
-if { (eval echo configure:5663: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5677: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
has_weof=yes
else
@@ -5675,12 +5689,12 @@ rm -f conftest*
for ac_func in wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5679: checking for $ac_func" >&5
+echo "configure:5693: 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 <<EOF
-#line 5684 "configure"
+#line 5698 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5703,7 +5717,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5707: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5721: \"$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
@@ -5738,12 +5752,12 @@ done
wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5742: checking for $ac_func" >&5
+echo "configure:5756: 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 <<EOF
-#line 5747 "configure"
+#line 5761 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5766,7 +5780,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5770: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5784: \"$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
@@ -5794,7 +5808,7 @@ done
echo $ac_n "checking for ISO C99 wchar_t support""... $ac_c" 1>&6
-echo "configure:5798: checking for ISO C99 wchar_t support" >&5
+echo "configure:5812: 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
@@ -5806,17 +5820,17 @@ echo "configure:5798: checking for ISO C99 wchar_t support" >&5
ac_safe=`echo "iconv.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for iconv.h""... $ac_c" 1>&6
-echo "configure:5810: checking for iconv.h" >&5
+echo "configure:5824: 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
-#line 5815 "configure"
+#line 5829 "configure"
#include "confdefs.h"
#include <iconv.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5820: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5834: \"$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*
@@ -5840,17 +5854,17 @@ fi
ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6
-echo "configure:5844: checking for langinfo.h" >&5
+echo "configure:5858: 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
-#line 5849 "configure"
+#line 5863 "configure"
#include "confdefs.h"
#include <langinfo.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5854: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5868: \"$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*
@@ -5874,7 +5888,7 @@ fi
echo $ac_n "checking for iconv in -liconv""... $ac_c" 1>&6
-echo "configure:5878: checking for iconv in -liconv" >&5
+echo "configure:5892: 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
@@ -5882,7 +5896,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-liconv $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5886 "configure"
+#line 5900 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5893,7 +5907,7 @@ int main() {
iconv()
; return 0; }
EOF
-if { (eval echo configure:5897: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5911: \"$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
@@ -5919,12 +5933,12 @@ fi
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:5923: checking for $ac_func" >&5
+echo "configure:5937: 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 <<EOF
-#line 5928 "configure"
+#line 5942 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5947,7 +5961,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5965: \"$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
@@ -5977,7 +5991,7 @@ done
LIBS="$ac_save_LIBS"
echo $ac_n "checking for XPG2 wchar_t support""... $ac_c" 1>&6
-echo "configure:5981: checking for XPG2 wchar_t support" >&5
+echo "configure:5995: 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
@@ -5988,7 +6002,7 @@ echo "configure:5981: checking for XPG2 wchar_t support" >&5
echo "$ac_t""$ac_XPG2_wchar_t" 1>&6
echo $ac_n "checking for enabled wchar_t specializations""... $ac_c" 1>&6
-echo "configure:5992: checking for enabled wchar_t specializations" >&5
+echo "configure:6006: 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
@@ -6058,17 +6072,17 @@ EOF
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6062: checking for $ac_hdr" >&5
+echo "configure:6076: 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
-#line 6067 "configure"
+#line 6081 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6072: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6086: \"$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*
@@ -6146,12 +6160,12 @@ done
# 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:6150: checking for ld that supports -Wl,--gc-sections" >&5
+echo "configure:6164: checking for ld that supports -Wl,--gc-sections" >&5
if test "$cross_compiling" = yes; then
ac_sectionLDflags=yes
else
cat > conftest.$ac_ext <<EOF
-#line 6155 "configure"
+#line 6169 "configure"
#include "confdefs.h"
int main(void)
@@ -6162,7 +6176,7 @@ else
}
EOF
-if { (eval echo configure:6166: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6180: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_sectionLDflags=yes
else
@@ -6196,7 +6210,7 @@ fi
echo $ac_n "checking for main in -lm""... $ac_c" 1>&6
-echo "configure:6200: checking for main in -lm" >&5
+echo "configure:6214: 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
@@ -6204,14 +6218,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 6208 "configure"
+#line 6222 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:6215: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6229: \"$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
@@ -6241,12 +6255,12 @@ fi
for ac_func in nan copysignf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6245: checking for $ac_func" >&5
+echo "configure:6259: 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 <<EOF
-#line 6250 "configure"
+#line 6264 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6269,7 +6283,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6287: \"$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
@@ -6298,12 +6312,12 @@ done
for ac_func in __signbit
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6302: checking for $ac_func" >&5
+echo "configure:6316: 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 <<EOF
-#line 6307 "configure"
+#line 6321 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6326,7 +6340,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6344: \"$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
@@ -6354,12 +6368,12 @@ done
for ac_func in __signbitf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6358: checking for $ac_func" >&5
+echo "configure:6372: 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 <<EOF
-#line 6363 "configure"
+#line 6377 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6382,7 +6396,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6400: \"$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
@@ -6412,12 +6426,12 @@ done
for ac_func in __signbitl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6416: checking for $ac_func" >&5
+echo "configure:6430: 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 <<EOF
-#line 6421 "configure"
+#line 6435 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6440,7 +6454,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6458: \"$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
@@ -6472,16 +6486,16 @@ done
echo $ac_n "checking for mbstate_t""... $ac_c" 1>&6
-echo "configure:6476: checking for mbstate_t" >&5
+echo "configure:6490: checking for mbstate_t" >&5
cat > conftest.$ac_ext <<EOF
-#line 6478 "configure"
+#line 6492 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
mbstate_t teststate;
; return 0; }
EOF
-if { (eval echo configure:6485: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6499: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
have_mbstate_t=yes
else
@@ -6503,17 +6517,17 @@ EOF
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6507: checking for $ac_hdr" >&5
+echo "configure:6521: 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
-#line 6512 "configure"
+#line 6526 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6517: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6531: \"$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*
@@ -6544,17 +6558,17 @@ done
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6548: checking for $ac_hdr" >&5
+echo "configure:6562: 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
-#line 6553 "configure"
+#line 6567 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6558: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6572: \"$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*
@@ -6587,16 +6601,16 @@ done
test x"$enable_c_mbchar" != xno; then
echo $ac_n "checking for WCHAR_MIN and WCHAR_MAX""... $ac_c" 1>&6
-echo "configure:6591: checking for WCHAR_MIN and WCHAR_MAX" >&5
+echo "configure:6605: checking for WCHAR_MIN and WCHAR_MAX" >&5
cat > conftest.$ac_ext <<EOF
-#line 6593 "configure"
+#line 6607 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
int i = WCHAR_MIN; int j = WCHAR_MAX;
; return 0; }
EOF
-if { (eval echo configure:6600: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6614: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
has_wchar_minmax=yes
else
@@ -6609,9 +6623,9 @@ rm -f conftest*
echo "$ac_t""$has_wchar_minmax" 1>&6
echo $ac_n "checking for WEOF""... $ac_c" 1>&6
-echo "configure:6613: checking for WEOF" >&5
+echo "configure:6627: checking for WEOF" >&5
cat > conftest.$ac_ext <<EOF
-#line 6615 "configure"
+#line 6629 "configure"
#include "confdefs.h"
#include <wchar.h>
@@ -6620,7 +6634,7 @@ int main() {
wint_t i = WEOF;
; return 0; }
EOF
-if { (eval echo configure:6624: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6638: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
has_weof=yes
else
@@ -6636,12 +6650,12 @@ rm -f conftest*
for ac_func in wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6640: checking for $ac_func" >&5
+echo "configure:6654: 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 <<EOF
-#line 6645 "configure"
+#line 6659 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6664,7 +6678,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6668: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6682: \"$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
@@ -6699,12 +6713,12 @@ done
wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6703: checking for $ac_func" >&5
+echo "configure:6717: 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 <<EOF
-#line 6708 "configure"
+#line 6722 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6727,7 +6741,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6745: \"$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
@@ -6755,7 +6769,7 @@ done
echo $ac_n "checking for ISO C99 wchar_t support""... $ac_c" 1>&6
-echo "configure:6759: checking for ISO C99 wchar_t support" >&5
+echo "configure:6773: 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
@@ -6767,17 +6781,17 @@ echo "configure:6759: checking for ISO C99 wchar_t support" >&5
ac_safe=`echo "iconv.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for iconv.h""... $ac_c" 1>&6
-echo "configure:6771: checking for iconv.h" >&5
+echo "configure:6785: 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
-#line 6776 "configure"
+#line 6790 "configure"
#include "confdefs.h"
#include <iconv.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6781: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6795: \"$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*
@@ -6801,17 +6815,17 @@ fi
ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6
-echo "configure:6805: checking for langinfo.h" >&5
+echo "configure:6819: 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
-#line 6810 "configure"
+#line 6824 "configure"
#include "confdefs.h"
#include <langinfo.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6815: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6829: \"$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*
@@ -6835,7 +6849,7 @@ fi
echo $ac_n "checking for iconv in -liconv""... $ac_c" 1>&6
-echo "configure:6839: checking for iconv in -liconv" >&5
+echo "configure:6853: 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
@@ -6843,7 +6857,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-liconv $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 6847 "configure"
+#line 6861 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -6854,7 +6868,7 @@ int main() {
iconv()
; return 0; }
EOF
-if { (eval echo configure:6858: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6872: \"$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
@@ -6880,12 +6894,12 @@ fi
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:6884: checking for $ac_func" >&5
+echo "configure:6898: 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 <<EOF
-#line 6889 "configure"
+#line 6903 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6908,7 +6922,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6912: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6926: \"$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
@@ -6938,7 +6952,7 @@ done
LIBS="$ac_save_LIBS"
echo $ac_n "checking for XPG2 wchar_t support""... $ac_c" 1>&6
-echo "configure:6942: checking for XPG2 wchar_t support" >&5
+echo "configure:6956: 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
@@ -6949,7 +6963,7 @@ echo "configure:6942: checking for XPG2 wchar_t support" >&5
echo "$ac_t""$ac_XPG2_wchar_t" 1>&6
echo $ac_n "checking for enabled wchar_t specializations""... $ac_c" 1>&6
-echo "configure:6953: checking for enabled wchar_t specializations" >&5
+echo "configure:6967: 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
@@ -7029,17 +7043,17 @@ EOF
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7033: checking for $ac_hdr" >&5
+echo "configure:7047: 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
-#line 7038 "configure"
+#line 7052 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7043: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7057: \"$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*
@@ -7117,12 +7131,12 @@ done
# 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:7121: checking for ld that supports -Wl,--gc-sections" >&5
+echo "configure:7135: checking for ld that supports -Wl,--gc-sections" >&5
if test "$cross_compiling" = yes; then
ac_sectionLDflags=yes
else
cat > conftest.$ac_ext <<EOF
-#line 7126 "configure"
+#line 7140 "configure"
#include "confdefs.h"
int main(void)
@@ -7133,7 +7147,7 @@ else
}
EOF
-if { (eval echo configure:7137: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_sectionLDflags=yes
else
@@ -7167,7 +7181,7 @@ fi
echo $ac_n "checking for main in -lm""... $ac_c" 1>&6
-echo "configure:7171: checking for main in -lm" >&5
+echo "configure:7185: 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
@@ -7175,14 +7189,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7179 "configure"
+#line 7193 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:7186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7200: \"$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
@@ -7212,12 +7226,12 @@ fi
for ac_func in nan copysignf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7216: checking for $ac_func" >&5
+echo "configure:7230: 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 <<EOF
-#line 7221 "configure"
+#line 7235 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7240,7 +7254,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7258: \"$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
@@ -7269,12 +7283,12 @@ done
for ac_func in __signbit
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7273: checking for $ac_func" >&5
+echo "configure:7287: 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 <<EOF
-#line 7278 "configure"
+#line 7292 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7297,7 +7311,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7301: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7315: \"$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
@@ -7325,12 +7339,12 @@ done
for ac_func in __signbitf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7329: checking for $ac_func" >&5
+echo "configure:7343: 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 <<EOF
-#line 7334 "configure"
+#line 7348 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7353,7 +7367,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7371: \"$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
@@ -7383,12 +7397,12 @@ done
for ac_func in __signbitl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7387: checking for $ac_func" >&5
+echo "configure:7401: 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 <<EOF
-#line 7392 "configure"
+#line 7406 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7411,7 +7425,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7429: \"$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
@@ -7443,16 +7457,16 @@ done
echo $ac_n "checking for mbstate_t""... $ac_c" 1>&6
-echo "configure:7447: checking for mbstate_t" >&5
+echo "configure:7461: checking for mbstate_t" >&5
cat > conftest.$ac_ext <<EOF
-#line 7449 "configure"
+#line 7463 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
mbstate_t teststate;
; return 0; }
EOF
-if { (eval echo configure:7456: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7470: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
have_mbstate_t=yes
else
@@ -7474,17 +7488,17 @@ EOF
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7478: checking for $ac_hdr" >&5
+echo "configure:7492: 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
-#line 7483 "configure"
+#line 7497 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7488: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7502: \"$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*
@@ -7515,17 +7529,17 @@ done
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7519: checking for $ac_hdr" >&5
+echo "configure:7533: 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
-#line 7524 "configure"
+#line 7538 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7529: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7543: \"$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*
@@ -7558,16 +7572,16 @@ done
test x"$enable_c_mbchar" != xno; then
echo $ac_n "checking for WCHAR_MIN and WCHAR_MAX""... $ac_c" 1>&6
-echo "configure:7562: checking for WCHAR_MIN and WCHAR_MAX" >&5
+echo "configure:7576: checking for WCHAR_MIN and WCHAR_MAX" >&5
cat > conftest.$ac_ext <<EOF
-#line 7564 "configure"
+#line 7578 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
int i = WCHAR_MIN; int j = WCHAR_MAX;
; return 0; }
EOF
-if { (eval echo configure:7571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7585: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
has_wchar_minmax=yes
else
@@ -7580,9 +7594,9 @@ rm -f conftest*
echo "$ac_t""$has_wchar_minmax" 1>&6
echo $ac_n "checking for WEOF""... $ac_c" 1>&6
-echo "configure:7584: checking for WEOF" >&5
+echo "configure:7598: checking for WEOF" >&5
cat > conftest.$ac_ext <<EOF
-#line 7586 "configure"
+#line 7600 "configure"
#include "confdefs.h"
#include <wchar.h>
@@ -7591,7 +7605,7 @@ int main() {
wint_t i = WEOF;
; return 0; }
EOF
-if { (eval echo configure:7595: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7609: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
has_weof=yes
else
@@ -7607,12 +7621,12 @@ rm -f conftest*
for ac_func in wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7611: checking for $ac_func" >&5
+echo "configure:7625: 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 <<EOF
-#line 7616 "configure"
+#line 7630 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7635,7 +7649,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7653: \"$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
@@ -7670,12 +7684,12 @@ done
wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7674: checking for $ac_func" >&5
+echo "configure:7688: 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 <<EOF
-#line 7679 "configure"
+#line 7693 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7698,7 +7712,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7702: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7716: \"$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
@@ -7726,7 +7740,7 @@ done
echo $ac_n "checking for ISO C99 wchar_t support""... $ac_c" 1>&6
-echo "configure:7730: checking for ISO C99 wchar_t support" >&5
+echo "configure:7744: 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
@@ -7738,17 +7752,17 @@ echo "configure:7730: checking for ISO C99 wchar_t support" >&5
ac_safe=`echo "iconv.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for iconv.h""... $ac_c" 1>&6
-echo "configure:7742: checking for iconv.h" >&5
+echo "configure:7756: 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
-#line 7747 "configure"
+#line 7761 "configure"
#include "confdefs.h"
#include <iconv.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7752: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7766: \"$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*
@@ -7772,17 +7786,17 @@ fi
ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6
-echo "configure:7776: checking for langinfo.h" >&5
+echo "configure:7790: 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
-#line 7781 "configure"
+#line 7795 "configure"
#include "confdefs.h"
#include <langinfo.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7786: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7800: \"$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*
@@ -7806,7 +7820,7 @@ fi
echo $ac_n "checking for iconv in -liconv""... $ac_c" 1>&6
-echo "configure:7810: checking for iconv in -liconv" >&5
+echo "configure:7824: 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
@@ -7814,7 +7828,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-liconv $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7818 "configure"
+#line 7832 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -7825,7 +7839,7 @@ int main() {
iconv()
; return 0; }
EOF
-if { (eval echo configure:7829: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7843: \"$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
@@ -7851,12 +7865,12 @@ fi
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:7855: checking for $ac_func" >&5
+echo "configure:7869: 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 <<EOF
-#line 7860 "configure"
+#line 7874 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7879,7 +7893,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7897: \"$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
@@ -7909,7 +7923,7 @@ done
LIBS="$ac_save_LIBS"
echo $ac_n "checking for XPG2 wchar_t support""... $ac_c" 1>&6
-echo "configure:7913: checking for XPG2 wchar_t support" >&5
+echo "configure:7927: 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
@@ -7920,7 +7934,7 @@ echo "configure:7913: checking for XPG2 wchar_t support" >&5
echo "$ac_t""$ac_XPG2_wchar_t" 1>&6
echo $ac_n "checking for enabled wchar_t specializations""... $ac_c" 1>&6
-echo "configure:7924: checking for enabled wchar_t specializations" >&5
+echo "configure:7938: 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
@@ -8016,17 +8030,17 @@ EOF
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8020: checking for $ac_hdr" >&5
+echo "configure:8034: 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
-#line 8025 "configure"
+#line 8039 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8030: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8044: \"$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*
@@ -8102,12 +8116,12 @@ done
# 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:8106: checking for ld that supports -Wl,--gc-sections" >&5
+echo "configure:8120: checking for ld that supports -Wl,--gc-sections" >&5
if test "$cross_compiling" = yes; then
ac_sectionLDflags=yes
else
cat > conftest.$ac_ext <<EOF
-#line 8111 "configure"
+#line 8125 "configure"
#include "confdefs.h"
int main(void)
@@ -8118,7 +8132,7 @@ else
}
EOF
-if { (eval echo configure:8122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8136: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_sectionLDflags=yes
else
@@ -8152,7 +8166,7 @@ fi
echo $ac_n "checking for main in -lm""... $ac_c" 1>&6
-echo "configure:8156: checking for main in -lm" >&5
+echo "configure:8170: 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
@@ -8160,14 +8174,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8164 "configure"
+#line 8178 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:8171: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8185: \"$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
@@ -8197,12 +8211,12 @@ fi
for ac_func in nan copysignf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8201: checking for $ac_func" >&5
+echo "configure:8215: 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 <<EOF
-#line 8206 "configure"
+#line 8220 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8225,7 +8239,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8243: \"$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
@@ -8254,12 +8268,12 @@ done
for ac_func in __signbit
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8258: checking for $ac_func" >&5
+echo "configure:8272: 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 <<EOF
-#line 8263 "configure"
+#line 8277 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8282,7 +8296,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8300: \"$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
@@ -8310,12 +8324,12 @@ done
for ac_func in __signbitf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8314: checking for $ac_func" >&5
+echo "configure:8328: 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 <<EOF
-#line 8319 "configure"
+#line 8333 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8338,7 +8352,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8342: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8356: \"$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
@@ -8368,12 +8382,12 @@ done
for ac_func in __signbitl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8372: checking for $ac_func" >&5
+echo "configure:8386: 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 <<EOF
-#line 8377 "configure"
+#line 8391 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8396,7 +8410,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8400: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8414: \"$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
@@ -8428,16 +8442,16 @@ done
echo $ac_n "checking for mbstate_t""... $ac_c" 1>&6
-echo "configure:8432: checking for mbstate_t" >&5
+echo "configure:8446: checking for mbstate_t" >&5
cat > conftest.$ac_ext <<EOF
-#line 8434 "configure"
+#line 8448 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
mbstate_t teststate;
; return 0; }
EOF
-if { (eval echo configure:8441: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8455: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
have_mbstate_t=yes
else
@@ -8459,17 +8473,17 @@ EOF
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8463: checking for $ac_hdr" >&5
+echo "configure:8477: 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
-#line 8468 "configure"
+#line 8482 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8473: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8487: \"$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*
@@ -8500,17 +8514,17 @@ done
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8504: checking for $ac_hdr" >&5
+echo "configure:8518: 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
-#line 8509 "configure"
+#line 8523 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8514: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8528: \"$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*
@@ -8543,16 +8557,16 @@ done
test x"$enable_c_mbchar" != xno; then
echo $ac_n "checking for WCHAR_MIN and WCHAR_MAX""... $ac_c" 1>&6
-echo "configure:8547: checking for WCHAR_MIN and WCHAR_MAX" >&5
+echo "configure:8561: checking for WCHAR_MIN and WCHAR_MAX" >&5
cat > conftest.$ac_ext <<EOF
-#line 8549 "configure"
+#line 8563 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
int i = WCHAR_MIN; int j = WCHAR_MAX;
; return 0; }
EOF
-if { (eval echo configure:8556: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8570: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
has_wchar_minmax=yes
else
@@ -8565,9 +8579,9 @@ rm -f conftest*
echo "$ac_t""$has_wchar_minmax" 1>&6
echo $ac_n "checking for WEOF""... $ac_c" 1>&6
-echo "configure:8569: checking for WEOF" >&5
+echo "configure:8583: checking for WEOF" >&5
cat > conftest.$ac_ext <<EOF
-#line 8571 "configure"
+#line 8585 "configure"
#include "confdefs.h"
#include <wchar.h>
@@ -8576,7 +8590,7 @@ int main() {
wint_t i = WEOF;
; return 0; }
EOF
-if { (eval echo configure:8580: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
has_weof=yes
else
@@ -8592,12 +8606,12 @@ rm -f conftest*
for ac_func in wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8596: checking for $ac_func" >&5
+echo "configure:8610: 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 <<EOF
-#line 8601 "configure"
+#line 8615 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8620,7 +8634,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8638: \"$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
@@ -8655,12 +8669,12 @@ done
wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8659: checking for $ac_func" >&5
+echo "configure:8673: 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 <<EOF
-#line 8664 "configure"
+#line 8678 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8683,7 +8697,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8701: \"$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
@@ -8711,7 +8725,7 @@ done
echo $ac_n "checking for ISO C99 wchar_t support""... $ac_c" 1>&6
-echo "configure:8715: checking for ISO C99 wchar_t support" >&5
+echo "configure:8729: 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
@@ -8723,17 +8737,17 @@ echo "configure:8715: checking for ISO C99 wchar_t support" >&5
ac_safe=`echo "iconv.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for iconv.h""... $ac_c" 1>&6
-echo "configure:8727: checking for iconv.h" >&5
+echo "configure:8741: 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
-#line 8732 "configure"
+#line 8746 "configure"
#include "confdefs.h"
#include <iconv.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8737: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8751: \"$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*
@@ -8757,17 +8771,17 @@ fi
ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6
-echo "configure:8761: checking for langinfo.h" >&5
+echo "configure:8775: 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
-#line 8766 "configure"
+#line 8780 "configure"
#include "confdefs.h"
#include <langinfo.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8771: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8785: \"$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*
@@ -8791,7 +8805,7 @@ fi
echo $ac_n "checking for iconv in -liconv""... $ac_c" 1>&6
-echo "configure:8795: checking for iconv in -liconv" >&5
+echo "configure:8809: 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
@@ -8799,7 +8813,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-liconv $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8803 "configure"
+#line 8817 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -8810,7 +8824,7 @@ int main() {
iconv()
; return 0; }
EOF
-if { (eval echo configure:8814: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8828: \"$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
@@ -8836,12 +8850,12 @@ fi
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:8840: checking for $ac_func" >&5
+echo "configure:8854: 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 <<EOF
-#line 8845 "configure"
+#line 8859 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8864,7 +8878,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8882: \"$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
@@ -8894,7 +8908,7 @@ done
LIBS="$ac_save_LIBS"
echo $ac_n "checking for XPG2 wchar_t support""... $ac_c" 1>&6
-echo "configure:8898: checking for XPG2 wchar_t support" >&5
+echo "configure:8912: 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
@@ -8905,7 +8919,7 @@ echo "configure:8898: checking for XPG2 wchar_t support" >&5
echo "$ac_t""$ac_XPG2_wchar_t" 1>&6
echo $ac_n "checking for enabled wchar_t specializations""... $ac_c" 1>&6
-echo "configure:8909: checking for enabled wchar_t specializations" >&5
+echo "configure:8923: 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
@@ -8978,12 +8992,12 @@ EOF
# 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:8982: checking for ld that supports -Wl,--gc-sections" >&5
+echo "configure:8996: checking for ld that supports -Wl,--gc-sections" >&5
if test "$cross_compiling" = yes; then
ac_sectionLDflags=yes
else
cat > conftest.$ac_ext <<EOF
-#line 8987 "configure"
+#line 9001 "configure"
#include "confdefs.h"
int main(void)
@@ -8994,7 +9008,7 @@ else
}
EOF
-if { (eval echo configure:8998: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9012: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_sectionLDflags=yes
else
@@ -9028,7 +9042,7 @@ fi
echo $ac_n "checking for main in -lm""... $ac_c" 1>&6
-echo "configure:9032: checking for main in -lm" >&5
+echo "configure:9046: 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
@@ -9036,14 +9050,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 9040 "configure"
+#line 9054 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:9047: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9061: \"$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
@@ -9073,12 +9087,12 @@ fi
for ac_func in nan copysignf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9077: checking for $ac_func" >&5
+echo "configure:9091: 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 <<EOF
-#line 9082 "configure"
+#line 9096 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -9101,7 +9115,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:9105: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9119: \"$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
@@ -9130,12 +9144,12 @@ done
for ac_func in __signbit
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9134: checking for $ac_func" >&5
+echo "configure:9148: 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 <<EOF
-#line 9139 "configure"
+#line 9153 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -9158,7 +9172,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:9162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9176: \"$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
@@ -9186,12 +9200,12 @@ done
for ac_func in __signbitf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9190: checking for $ac_func" >&5
+echo "configure:9204: 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 <<EOF
-#line 9195 "configure"
+#line 9209 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -9214,7 +9228,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:9218: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9232: \"$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
@@ -9244,12 +9258,12 @@ done
for ac_func in __signbitl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9248: checking for $ac_func" >&5
+echo "configure:9262: 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 <<EOF
-#line 9253 "configure"
+#line 9267 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -9272,7 +9286,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:9276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9290: \"$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
@@ -9304,16 +9318,16 @@ done
echo $ac_n "checking for mbstate_t""... $ac_c" 1>&6
-echo "configure:9308: checking for mbstate_t" >&5
+echo "configure:9322: checking for mbstate_t" >&5
cat > conftest.$ac_ext <<EOF
-#line 9310 "configure"
+#line 9324 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
mbstate_t teststate;
; return 0; }
EOF
-if { (eval echo configure:9317: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9331: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
have_mbstate_t=yes
else
@@ -9335,17 +9349,17 @@ EOF
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:9339: checking for $ac_hdr" >&5
+echo "configure:9353: 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
-#line 9344 "configure"
+#line 9358 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9349: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9363: \"$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*
@@ -9376,17 +9390,17 @@ done
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:9380: checking for $ac_hdr" >&5
+echo "configure:9394: 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
-#line 9385 "configure"
+#line 9399 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9390: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9404: \"$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*
@@ -9419,16 +9433,16 @@ done
test x"$enable_c_mbchar" != xno; then
echo $ac_n "checking for WCHAR_MIN and WCHAR_MAX""... $ac_c" 1>&6
-echo "configure:9423: checking for WCHAR_MIN and WCHAR_MAX" >&5
+echo "configure:9437: checking for WCHAR_MIN and WCHAR_MAX" >&5
cat > conftest.$ac_ext <<EOF
-#line 9425 "configure"
+#line 9439 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
int i = WCHAR_MIN; int j = WCHAR_MAX;
; return 0; }
EOF
-if { (eval echo configure:9432: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9446: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
has_wchar_minmax=yes
else
@@ -9441,9 +9455,9 @@ rm -f conftest*
echo "$ac_t""$has_wchar_minmax" 1>&6
echo $ac_n "checking for WEOF""... $ac_c" 1>&6
-echo "configure:9445: checking for WEOF" >&5
+echo "configure:9459: checking for WEOF" >&5
cat > conftest.$ac_ext <<EOF
-#line 9447 "configure"
+#line 9461 "configure"
#include "confdefs.h"
#include <wchar.h>
@@ -9452,7 +9466,7 @@ int main() {
wint_t i = WEOF;
; return 0; }
EOF
-if { (eval echo configure:9456: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9470: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
has_weof=yes
else
@@ -9468,12 +9482,12 @@ rm -f conftest*
for ac_func in wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9472: checking for $ac_func" >&5
+echo "configure:9486: 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 <<EOF
-#line 9477 "configure"
+#line 9491 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -9496,7 +9510,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:9500: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9514: \"$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
@@ -9531,12 +9545,12 @@ done
wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9535: checking for $ac_func" >&5
+echo "configure:9549: 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 <<EOF
-#line 9540 "configure"
+#line 9554 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -9559,7 +9573,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:9563: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9577: \"$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
@@ -9587,7 +9601,7 @@ done
echo $ac_n "checking for ISO C99 wchar_t support""... $ac_c" 1>&6
-echo "configure:9591: checking for ISO C99 wchar_t support" >&5
+echo "configure:9605: 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
@@ -9599,17 +9613,17 @@ echo "configure:9591: checking for ISO C99 wchar_t support" >&5
ac_safe=`echo "iconv.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for iconv.h""... $ac_c" 1>&6
-echo "configure:9603: checking for iconv.h" >&5
+echo "configure:9617: 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
-#line 9608 "configure"
+#line 9622 "configure"
#include "confdefs.h"
#include <iconv.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9613: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9627: \"$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*
@@ -9633,17 +9647,17 @@ fi
ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6
-echo "configure:9637: checking for langinfo.h" >&5
+echo "configure:9651: 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
-#line 9642 "configure"
+#line 9656 "configure"
#include "confdefs.h"
#include <langinfo.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9647: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9661: \"$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*
@@ -9667,7 +9681,7 @@ fi
echo $ac_n "checking for iconv in -liconv""... $ac_c" 1>&6
-echo "configure:9671: checking for iconv in -liconv" >&5
+echo "configure:9685: 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
@@ -9675,7 +9689,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-liconv $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 9679 "configure"
+#line 9693 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -9686,7 +9700,7 @@ int main() {
iconv()
; return 0; }
EOF
-if { (eval echo configure:9690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9704: \"$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
@@ -9712,12 +9726,12 @@ fi
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:9716: checking for $ac_func" >&5
+echo "configure:9730: 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 <<EOF
-#line 9721 "configure"
+#line 9735 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -9740,7 +9754,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:9744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9758: \"$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
@@ -9770,7 +9784,7 @@ done
LIBS="$ac_save_LIBS"
echo $ac_n "checking for XPG2 wchar_t support""... $ac_c" 1>&6
-echo "configure:9774: checking for XPG2 wchar_t support" >&5
+echo "configure:9788: 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
@@ -9781,7 +9795,7 @@ echo "configure:9774: checking for XPG2 wchar_t support" >&5
echo "$ac_t""$ac_XPG2_wchar_t" 1>&6
echo $ac_n "checking for enabled wchar_t specializations""... $ac_c" 1>&6
-echo "configure:9785: checking for enabled wchar_t specializations" >&5
+echo "configure:9799: 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
@@ -10290,17 +10304,17 @@ else
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10294: checking for $ac_hdr" >&5
+echo "configure:10308: 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
-#line 10299 "configure"
+#line 10313 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10304: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10318: \"$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*
@@ -10351,10 +10365,10 @@ cross_compiling=$ac_cv_prog_cxx_cross
# Check for -ffunction-sections -fdata-sections
echo $ac_n "checking for g++ that supports -ffunction-sections -fdata-sections""... $ac_c" 1>&6
-echo "configure:10355: checking for g++ that supports -ffunction-sections -fdata-sections" >&5
+echo "configure:10369: checking for g++ that supports -ffunction-sections -fdata-sections" >&5
CXXFLAGS='-Werror -ffunction-sections -fdata-sections'
cat > conftest.$ac_ext <<EOF
-#line 10358 "configure"
+#line 10372 "configure"
#include "confdefs.h"
int main() {
@@ -10362,7 +10376,7 @@ int foo;
; return 0; }
EOF
-if { (eval echo configure:10366: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10380: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_fdsections=yes
else
@@ -10444,12 +10458,12 @@ cross_compiling=$ac_cv_prog_cc_cross
# 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:10448: checking for ld that supports -Wl,--gc-sections" >&5
+echo "configure:10462: checking for ld that supports -Wl,--gc-sections" >&5
if test "$cross_compiling" = yes; then
ac_sectionLDflags=yes
else
cat > conftest.$ac_ext <<EOF
-#line 10453 "configure"
+#line 10467 "configure"
#include "confdefs.h"
int main(void)
@@ -10460,7 +10474,7 @@ else
}
EOF
-if { (eval echo configure:10464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:10478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_sectionLDflags=yes
else
@@ -10495,7 +10509,7 @@ fi
echo $ac_n "checking for __builtin_abs declaration""... $ac_c" 1>&6
-echo "configure:10499: checking for __builtin_abs declaration" >&5
+echo "configure:10513: 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
@@ -10510,14 +10524,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 10514 "configure"
+#line 10528 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_abs(0);
; return 0; }
EOF
-if { (eval echo configure:10521: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10535: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_abs_use=yes
else
@@ -10541,21 +10555,21 @@ fi
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:10545: checking for __builtin_abs linkage" >&5
+echo "configure:10559: 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 <<EOF
-#line 10552 "configure"
+#line 10566 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_abs(0);
; return 0; }
EOF
-if { (eval echo configure:10559: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10573: \"$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
@@ -10581,7 +10595,7 @@ EOF
echo $ac_n "checking for __builtin_fabsf declaration""... $ac_c" 1>&6
-echo "configure:10585: checking for __builtin_fabsf declaration" >&5
+echo "configure:10599: 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
@@ -10596,14 +10610,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 10600 "configure"
+#line 10614 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_fabsf(0);
; return 0; }
EOF
-if { (eval echo configure:10607: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10621: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_fabsf_use=yes
else
@@ -10627,21 +10641,21 @@ fi
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:10631: checking for __builtin_fabsf linkage" >&5
+echo "configure:10645: 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 <<EOF
-#line 10638 "configure"
+#line 10652 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_fabsf(0);
; return 0; }
EOF
-if { (eval echo configure:10645: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10659: \"$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
@@ -10667,7 +10681,7 @@ EOF
echo $ac_n "checking for __builtin_fabs declaration""... $ac_c" 1>&6
-echo "configure:10671: checking for __builtin_fabs declaration" >&5
+echo "configure:10685: 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
@@ -10682,14 +10696,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 10686 "configure"
+#line 10700 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_fabs(0);
; return 0; }
EOF
-if { (eval echo configure:10693: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10707: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_fabs_use=yes
else
@@ -10713,21 +10727,21 @@ fi
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:10717: checking for __builtin_fabs linkage" >&5
+echo "configure:10731: 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 <<EOF
-#line 10724 "configure"
+#line 10738 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_fabs(0);
; return 0; }
EOF
-if { (eval echo configure:10731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10745: \"$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
@@ -10753,7 +10767,7 @@ EOF
echo $ac_n "checking for __builtin_fabsl declaration""... $ac_c" 1>&6
-echo "configure:10757: checking for __builtin_fabsl declaration" >&5
+echo "configure:10771: 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
@@ -10768,14 +10782,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 10772 "configure"
+#line 10786 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_fabsl(0);
; return 0; }
EOF
-if { (eval echo configure:10779: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10793: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_fabsl_use=yes
else
@@ -10799,21 +10813,21 @@ fi
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:10803: checking for __builtin_fabsl linkage" >&5
+echo "configure:10817: 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 <<EOF
-#line 10810 "configure"
+#line 10824 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_fabsl(0);
; return 0; }
EOF
-if { (eval echo configure:10817: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10831: \"$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
@@ -10839,7 +10853,7 @@ EOF
echo $ac_n "checking for __builtin_labs declaration""... $ac_c" 1>&6
-echo "configure:10843: checking for __builtin_labs declaration" >&5
+echo "configure:10857: 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
@@ -10854,14 +10868,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 10858 "configure"
+#line 10872 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_labs(0);
; return 0; }
EOF
-if { (eval echo configure:10865: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10879: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_labs_use=yes
else
@@ -10885,21 +10899,21 @@ fi
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:10889: checking for __builtin_labs linkage" >&5
+echo "configure:10903: 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 <<EOF
-#line 10896 "configure"
+#line 10910 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_labs(0);
; return 0; }
EOF
-if { (eval echo configure:10903: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10917: \"$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
@@ -10926,7 +10940,7 @@ EOF
echo $ac_n "checking for __builtin_sqrtf declaration""... $ac_c" 1>&6
-echo "configure:10930: checking for __builtin_sqrtf declaration" >&5
+echo "configure:10944: 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
@@ -10941,14 +10955,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 10945 "configure"
+#line 10959 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sqrtf(0);
; return 0; }
EOF
-if { (eval echo configure:10952: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10966: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_sqrtf_use=yes
else
@@ -10972,21 +10986,21 @@ fi
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:10976: checking for __builtin_sqrtf linkage" >&5
+echo "configure:10990: 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 <<EOF
-#line 10983 "configure"
+#line 10997 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sqrtf(0);
; return 0; }
EOF
-if { (eval echo configure:10990: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11004: \"$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
@@ -11012,7 +11026,7 @@ EOF
echo $ac_n "checking for __builtin_sqrt declaration""... $ac_c" 1>&6
-echo "configure:11016: checking for __builtin_sqrt declaration" >&5
+echo "configure:11030: checking for __builtin_sqrt declaration" >&5
if test x${glibcpp_cv_func___builtin_sqrt_use+set} != xset; then
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sqrt_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -11027,14 +11041,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11031 "configure"
+#line 11045 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sqrt(0);
; return 0; }
EOF
-if { (eval echo configure:11038: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11052: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_sqrt_use=yes
else
@@ -11058,21 +11072,21 @@ fi
echo "$ac_t""$glibcpp_cv_func___builtin_sqrt_use" 1>&6
if test x$glibcpp_cv_func___builtin_sqrt_use = x"yes"; then
echo $ac_n "checking for __builtin_sqrt linkage""... $ac_c" 1>&6
-echo "configure:11062: checking for __builtin_sqrt linkage" >&5
+echo "configure:11076: checking for __builtin_sqrt linkage" >&5
if test x${glibcpp_cv_func___builtin_sqrt_link+set} != xset; then
if eval "test \"`echo '$''{'glibcpp_cv_func___builtin_sqrt_link'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11069 "configure"
+#line 11083 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sqrt(0);
; return 0; }
EOF
-if { (eval echo configure:11076: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
glibcpp_cv_func___builtin_sqrt_link=yes
else
@@ -11098,7 +11112,7 @@ EOF
echo $ac_n "checking for __builtin_sqrtl declaration""... $ac_c" 1>&6
-echo "configure:11102: checking for __builtin_sqrtl declaration" >&5
+echo "configure:11116: 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
@@ -11113,14 +11127,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11117 "configure"
+#line 11131 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sqrtl(0);
; return 0; }
EOF
-if { (eval echo configure:11124: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11138: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_sqrtl_use=yes
else
@@ -11144,21 +11158,21 @@ fi
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:11148: checking for __builtin_sqrtl linkage" >&5
+echo "configure:11162: 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 <<EOF
-#line 11155 "configure"
+#line 11169 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sqrtl(0);
; return 0; }
EOF
-if { (eval echo configure:11162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11176: \"$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
@@ -11185,7 +11199,7 @@ EOF
echo $ac_n "checking for __builtin_sinf declaration""... $ac_c" 1>&6
-echo "configure:11189: checking for __builtin_sinf declaration" >&5
+echo "configure:11203: 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
@@ -11200,14 +11214,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11204 "configure"
+#line 11218 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sinf(0);
; return 0; }
EOF
-if { (eval echo configure:11211: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11225: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_sinf_use=yes
else
@@ -11231,21 +11245,21 @@ fi
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:11235: checking for __builtin_sinf linkage" >&5
+echo "configure:11249: 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 <<EOF
-#line 11242 "configure"
+#line 11256 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sinf(0);
; return 0; }
EOF
-if { (eval echo configure:11249: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11263: \"$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
@@ -11271,7 +11285,7 @@ EOF
echo $ac_n "checking for __builtin_sin declaration""... $ac_c" 1>&6
-echo "configure:11275: checking for __builtin_sin declaration" >&5
+echo "configure:11289: 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
@@ -11286,14 +11300,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11290 "configure"
+#line 11304 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sin(0);
; return 0; }
EOF
-if { (eval echo configure:11297: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11311: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_sin_use=yes
else
@@ -11317,21 +11331,21 @@ fi
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:11321: checking for __builtin_sin linkage" >&5
+echo "configure:11335: 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 <<EOF
-#line 11328 "configure"
+#line 11342 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sin(0);
; return 0; }
EOF
-if { (eval echo configure:11335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11349: \"$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
@@ -11357,7 +11371,7 @@ EOF
echo $ac_n "checking for __builtin_sinl declaration""... $ac_c" 1>&6
-echo "configure:11361: checking for __builtin_sinl declaration" >&5
+echo "configure:11375: 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
@@ -11372,14 +11386,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11376 "configure"
+#line 11390 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sinl(0);
; return 0; }
EOF
-if { (eval echo configure:11383: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11397: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_sinl_use=yes
else
@@ -11403,21 +11417,21 @@ fi
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:11407: checking for __builtin_sinl linkage" >&5
+echo "configure:11421: 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 <<EOF
-#line 11414 "configure"
+#line 11428 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_sinl(0);
; return 0; }
EOF
-if { (eval echo configure:11421: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11435: \"$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
@@ -11444,7 +11458,7 @@ EOF
echo $ac_n "checking for __builtin_cosf declaration""... $ac_c" 1>&6
-echo "configure:11448: checking for __builtin_cosf declaration" >&5
+echo "configure:11462: 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
@@ -11459,14 +11473,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11463 "configure"
+#line 11477 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_cosf(0);
; return 0; }
EOF
-if { (eval echo configure:11470: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11484: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_cosf_use=yes
else
@@ -11490,21 +11504,21 @@ fi
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:11494: checking for __builtin_cosf linkage" >&5
+echo "configure:11508: 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 <<EOF
-#line 11501 "configure"
+#line 11515 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_cosf(0);
; return 0; }
EOF
-if { (eval echo configure:11508: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11522: \"$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
@@ -11530,7 +11544,7 @@ EOF
echo $ac_n "checking for __builtin_cos declaration""... $ac_c" 1>&6
-echo "configure:11534: checking for __builtin_cos declaration" >&5
+echo "configure:11548: 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
@@ -11545,14 +11559,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11549 "configure"
+#line 11563 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_cos(0);
; return 0; }
EOF
-if { (eval echo configure:11556: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11570: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_cos_use=yes
else
@@ -11576,21 +11590,21 @@ fi
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:11580: checking for __builtin_cos linkage" >&5
+echo "configure:11594: 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 <<EOF
-#line 11587 "configure"
+#line 11601 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_cos(0);
; return 0; }
EOF
-if { (eval echo configure:11594: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11608: \"$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
@@ -11616,7 +11630,7 @@ EOF
echo $ac_n "checking for __builtin_cosl declaration""... $ac_c" 1>&6
-echo "configure:11620: checking for __builtin_cosl declaration" >&5
+echo "configure:11634: 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
@@ -11631,14 +11645,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11635 "configure"
+#line 11649 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_cosl(0);
; return 0; }
EOF
-if { (eval echo configure:11642: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11656: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func___builtin_cosl_use=yes
else
@@ -11662,21 +11676,21 @@ fi
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:11666: checking for __builtin_cosl linkage" >&5
+echo "configure:11680: 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 <<EOF
-#line 11673 "configure"
+#line 11687 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
__builtin_cosl(0);
; return 0; }
EOF
-if { (eval echo configure:11680: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11694: \"$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
@@ -11767,7 +11781,7 @@ EOF
CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6
-echo "configure:11771: checking for sin in -lm" >&5
+echo "configure:11785: 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
@@ -11775,7 +11789,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 11779 "configure"
+#line 11793 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -11786,7 +11800,7 @@ int main() {
sin()
; return 0; }
EOF
-if { (eval echo configure:11790: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11804: \"$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
@@ -11812,7 +11826,7 @@ fi
echo $ac_n "checking for isinf declaration""... $ac_c" 1>&6
-echo "configure:11816: checking for isinf declaration" >&5
+echo "configure:11830: 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
@@ -11827,7 +11841,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11831 "configure"
+#line 11845 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -11838,7 +11852,7 @@ int main() {
isinf(0);
; return 0; }
EOF
-if { (eval echo configure:11842: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11856: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_isinf_use=yes
else
@@ -11865,12 +11879,12 @@ fi
for ac_func in isinf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11869: checking for $ac_func" >&5
+echo "configure:11883: 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 <<EOF
-#line 11874 "configure"
+#line 11888 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -11893,7 +11907,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:11897: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11911: \"$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
@@ -11920,7 +11934,7 @@ done
else
echo $ac_n "checking for _isinf declaration""... $ac_c" 1>&6
-echo "configure:11924: checking for _isinf declaration" >&5
+echo "configure:11938: 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
@@ -11935,7 +11949,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 11939 "configure"
+#line 11953 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -11946,7 +11960,7 @@ int main() {
_isinf(0);
; return 0; }
EOF
-if { (eval echo configure:11950: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11964: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__isinf_use=yes
else
@@ -11973,12 +11987,12 @@ fi
for ac_func in _isinf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11977: checking for $ac_func" >&5
+echo "configure:11991: 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 <<EOF
-#line 11982 "configure"
+#line 11996 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -12001,7 +12015,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:12005: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12019: \"$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
@@ -12031,7 +12045,7 @@ done
echo $ac_n "checking for isnan declaration""... $ac_c" 1>&6
-echo "configure:12035: checking for isnan declaration" >&5
+echo "configure:12049: 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
@@ -12046,7 +12060,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 12050 "configure"
+#line 12064 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -12057,7 +12071,7 @@ int main() {
isnan(0);
; return 0; }
EOF
-if { (eval echo configure:12061: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12075: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_isnan_use=yes
else
@@ -12084,12 +12098,12 @@ fi
for ac_func in isnan
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12088: checking for $ac_func" >&5
+echo "configure:12102: 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 <<EOF
-#line 12093 "configure"
+#line 12107 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -12112,7 +12126,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:12116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12130: \"$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
@@ -12139,7 +12153,7 @@ done
else
echo $ac_n "checking for _isnan declaration""... $ac_c" 1>&6
-echo "configure:12143: checking for _isnan declaration" >&5
+echo "configure:12157: 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
@@ -12154,7 +12168,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 12158 "configure"
+#line 12172 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -12165,7 +12179,7 @@ int main() {
_isnan(0);
; return 0; }
EOF
-if { (eval echo configure:12169: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12183: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__isnan_use=yes
else
@@ -12192,12 +12206,12 @@ fi
for ac_func in _isnan
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12196: checking for $ac_func" >&5
+echo "configure:12210: 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 <<EOF
-#line 12201 "configure"
+#line 12215 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -12220,7 +12234,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:12224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12238: \"$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
@@ -12250,7 +12264,7 @@ done
echo $ac_n "checking for finite declaration""... $ac_c" 1>&6
-echo "configure:12254: checking for finite declaration" >&5
+echo "configure:12268: 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
@@ -12265,7 +12279,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 12269 "configure"
+#line 12283 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -12276,7 +12290,7 @@ int main() {
finite(0);
; return 0; }
EOF
-if { (eval echo configure:12280: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12294: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_finite_use=yes
else
@@ -12303,12 +12317,12 @@ fi
for ac_func in finite
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12307: checking for $ac_func" >&5
+echo "configure:12321: 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 <<EOF
-#line 12312 "configure"
+#line 12326 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -12331,7 +12345,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:12335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12349: \"$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
@@ -12358,7 +12372,7 @@ done
else
echo $ac_n "checking for _finite declaration""... $ac_c" 1>&6
-echo "configure:12362: checking for _finite declaration" >&5
+echo "configure:12376: 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
@@ -12373,7 +12387,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 12377 "configure"
+#line 12391 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -12384,7 +12398,7 @@ int main() {
_finite(0);
; return 0; }
EOF
-if { (eval echo configure:12388: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12402: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__finite_use=yes
else
@@ -12411,12 +12425,12 @@ fi
for ac_func in _finite
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12415: checking for $ac_func" >&5
+echo "configure:12429: 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 <<EOF
-#line 12420 "configure"
+#line 12434 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -12439,7 +12453,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:12443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12457: \"$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
@@ -12469,7 +12483,7 @@ done
echo $ac_n "checking for copysign declaration""... $ac_c" 1>&6
-echo "configure:12473: checking for copysign declaration" >&5
+echo "configure:12487: 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
@@ -12484,14 +12498,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 12488 "configure"
+#line 12502 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
copysign(0, 0);
; return 0; }
EOF
-if { (eval echo configure:12495: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12509: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_copysign_use=yes
else
@@ -12518,12 +12532,12 @@ fi
for ac_func in copysign
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12522: checking for $ac_func" >&5
+echo "configure:12536: 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 <<EOF
-#line 12527 "configure"
+#line 12541 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -12546,7 +12560,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:12550: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12564: \"$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
@@ -12573,7 +12587,7 @@ done
else
echo $ac_n "checking for _copysign declaration""... $ac_c" 1>&6
-echo "configure:12577: checking for _copysign declaration" >&5
+echo "configure:12591: 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
@@ -12588,14 +12602,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 12592 "configure"
+#line 12606 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_copysign(0, 0);
; return 0; }
EOF
-if { (eval echo configure:12599: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12613: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__copysign_use=yes
else
@@ -12622,12 +12636,12 @@ fi
for ac_func in _copysign
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12626: checking for $ac_func" >&5
+echo "configure:12640: 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 <<EOF
-#line 12631 "configure"
+#line 12645 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -12650,7 +12664,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:12654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12668: \"$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
@@ -12680,7 +12694,7 @@ done
echo $ac_n "checking for sincos declaration""... $ac_c" 1>&6
-echo "configure:12684: checking for sincos declaration" >&5
+echo "configure:12698: 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
@@ -12695,14 +12709,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 12699 "configure"
+#line 12713 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
sincos(0, 0, 0);
; return 0; }
EOF
-if { (eval echo configure:12706: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12720: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_sincos_use=yes
else
@@ -12729,12 +12743,12 @@ fi
for ac_func in sincos
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12733: checking for $ac_func" >&5
+echo "configure:12747: 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 <<EOF
-#line 12738 "configure"
+#line 12752 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -12757,7 +12771,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:12761: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12775: \"$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
@@ -12784,7 +12798,7 @@ done
else
echo $ac_n "checking for _sincos declaration""... $ac_c" 1>&6
-echo "configure:12788: checking for _sincos declaration" >&5
+echo "configure:12802: 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
@@ -12799,14 +12813,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 12803 "configure"
+#line 12817 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_sincos(0, 0, 0);
; return 0; }
EOF
-if { (eval echo configure:12810: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12824: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__sincos_use=yes
else
@@ -12833,12 +12847,12 @@ fi
for ac_func in _sincos
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12837: checking for $ac_func" >&5
+echo "configure:12851: 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 <<EOF
-#line 12842 "configure"
+#line 12856 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -12861,7 +12875,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:12865: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12879: \"$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
@@ -12891,7 +12905,7 @@ done
echo $ac_n "checking for fpclass declaration""... $ac_c" 1>&6
-echo "configure:12895: checking for fpclass declaration" >&5
+echo "configure:12909: 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
@@ -12906,7 +12920,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 12910 "configure"
+#line 12924 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -12917,7 +12931,7 @@ int main() {
fpclass(0);
; return 0; }
EOF
-if { (eval echo configure:12921: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12935: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_fpclass_use=yes
else
@@ -12944,12 +12958,12 @@ fi
for ac_func in fpclass
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12948: checking for $ac_func" >&5
+echo "configure:12962: 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 <<EOF
-#line 12953 "configure"
+#line 12967 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -12972,7 +12986,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:12976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12990: \"$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
@@ -12999,7 +13013,7 @@ done
else
echo $ac_n "checking for _fpclass declaration""... $ac_c" 1>&6
-echo "configure:13003: checking for _fpclass declaration" >&5
+echo "configure:13017: 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
@@ -13014,7 +13028,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13018 "configure"
+#line 13032 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -13025,7 +13039,7 @@ int main() {
_fpclass(0);
; return 0; }
EOF
-if { (eval echo configure:13029: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13043: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__fpclass_use=yes
else
@@ -13052,12 +13066,12 @@ fi
for ac_func in _fpclass
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13056: checking for $ac_func" >&5
+echo "configure:13070: 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 <<EOF
-#line 13061 "configure"
+#line 13075 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13080,7 +13094,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13084: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13098: \"$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
@@ -13110,7 +13124,7 @@ done
echo $ac_n "checking for qfpclass declaration""... $ac_c" 1>&6
-echo "configure:13114: checking for qfpclass declaration" >&5
+echo "configure:13128: 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
@@ -13125,7 +13139,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13129 "configure"
+#line 13143 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -13136,7 +13150,7 @@ int main() {
qfpclass(0);
; return 0; }
EOF
-if { (eval echo configure:13140: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13154: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_qfpclass_use=yes
else
@@ -13163,12 +13177,12 @@ fi
for ac_func in qfpclass
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13167: checking for $ac_func" >&5
+echo "configure:13181: 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 <<EOF
-#line 13172 "configure"
+#line 13186 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13191,7 +13205,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13195: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13209: \"$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
@@ -13218,7 +13232,7 @@ done
else
echo $ac_n "checking for _qfpclass declaration""... $ac_c" 1>&6
-echo "configure:13222: checking for _qfpclass declaration" >&5
+echo "configure:13236: 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
@@ -13233,7 +13247,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13237 "configure"
+#line 13251 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -13244,7 +13258,7 @@ int main() {
_qfpclass(0);
; return 0; }
EOF
-if { (eval echo configure:13248: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13262: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__qfpclass_use=yes
else
@@ -13271,12 +13285,12 @@ fi
for ac_func in _qfpclass
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13275: checking for $ac_func" >&5
+echo "configure:13289: 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 <<EOF
-#line 13280 "configure"
+#line 13294 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13299,7 +13313,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13303: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13317: \"$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
@@ -13329,7 +13343,7 @@ done
echo $ac_n "checking for hypot declaration""... $ac_c" 1>&6
-echo "configure:13333: checking for hypot declaration" >&5
+echo "configure:13347: 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
@@ -13344,14 +13358,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13348 "configure"
+#line 13362 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
hypot(0, 0);
; return 0; }
EOF
-if { (eval echo configure:13355: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13369: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_hypot_use=yes
else
@@ -13378,12 +13392,12 @@ fi
for ac_func in hypot
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13382: checking for $ac_func" >&5
+echo "configure:13396: 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 <<EOF
-#line 13387 "configure"
+#line 13401 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13406,7 +13420,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13424: \"$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
@@ -13433,7 +13447,7 @@ done
else
echo $ac_n "checking for _hypot declaration""... $ac_c" 1>&6
-echo "configure:13437: checking for _hypot declaration" >&5
+echo "configure:13451: 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
@@ -13448,14 +13462,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13452 "configure"
+#line 13466 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_hypot(0, 0);
; return 0; }
EOF
-if { (eval echo configure:13459: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13473: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__hypot_use=yes
else
@@ -13482,12 +13496,12 @@ fi
for ac_func in _hypot
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13486: checking for $ac_func" >&5
+echo "configure:13500: 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 <<EOF
-#line 13491 "configure"
+#line 13505 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13510,7 +13524,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13528: \"$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
@@ -13540,7 +13554,7 @@ done
echo $ac_n "checking for float trig functions""... $ac_c" 1>&6
-echo "configure:13544: checking for float trig functions" >&5
+echo "configure:13558: 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
@@ -13554,7 +13568,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13558 "configure"
+#line 13572 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
@@ -13563,7 +13577,7 @@ int main() {
coshf sinhf tanhf; do echo "$x (0);"; done`
; return 0; }
EOF
-if { (eval echo configure:13567: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13581: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_float_trig_use=yes
else
@@ -13589,12 +13603,12 @@ fi
coshf sinhf tanhf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13593: checking for $ac_func" >&5
+echo "configure:13607: 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 <<EOF
-#line 13598 "configure"
+#line 13612 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13617,7 +13631,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13635: \"$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
@@ -13645,7 +13659,7 @@ done
echo $ac_n "checking for float round functions""... $ac_c" 1>&6
-echo "configure:13649: checking for float round functions" >&5
+echo "configure:13663: 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
@@ -13659,14 +13673,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13663 "configure"
+#line 13677 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
`for x in ceilf floorf; do echo "$x (0);"; done`
; return 0; }
EOF
-if { (eval echo configure:13670: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13684: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_float_round_use=yes
else
@@ -13690,12 +13704,12 @@ fi
for ac_func in ceilf floorf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13694: checking for $ac_func" >&5
+echo "configure:13708: 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 <<EOF
-#line 13699 "configure"
+#line 13713 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13718,7 +13732,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13722: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13736: \"$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
@@ -13747,7 +13761,7 @@ done
echo $ac_n "checking for expf declaration""... $ac_c" 1>&6
-echo "configure:13751: checking for expf declaration" >&5
+echo "configure:13765: checking for expf declaration" >&5
if test x${glibcpp_cv_func_expf_use+set} != xset; then
if eval "test \"`echo '$''{'glibcpp_cv_func_expf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -13762,7 +13776,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13766 "configure"
+#line 13780 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -13773,7 +13787,7 @@ int main() {
expf(0);
; return 0; }
EOF
-if { (eval echo configure:13777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13791: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_expf_use=yes
else
@@ -13800,12 +13814,12 @@ fi
for ac_func in expf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13804: checking for $ac_func" >&5
+echo "configure:13818: 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 <<EOF
-#line 13809 "configure"
+#line 13823 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13828,7 +13842,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13846: \"$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
@@ -13855,7 +13869,7 @@ done
else
echo $ac_n "checking for _expf declaration""... $ac_c" 1>&6
-echo "configure:13859: checking for _expf declaration" >&5
+echo "configure:13873: checking for _expf declaration" >&5
if test x${glibcpp_cv_func__expf_use+set} != xset; then
if eval "test \"`echo '$''{'glibcpp_cv_func__expf_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -13870,7 +13884,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13874 "configure"
+#line 13888 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -13881,7 +13895,7 @@ int main() {
_expf(0);
; return 0; }
EOF
-if { (eval echo configure:13885: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13899: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__expf_use=yes
else
@@ -13908,12 +13922,12 @@ fi
for ac_func in _expf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13912: checking for $ac_func" >&5
+echo "configure:13926: 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 <<EOF
-#line 13917 "configure"
+#line 13931 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13936,7 +13950,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13940: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13954: \"$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
@@ -13966,7 +13980,7 @@ done
echo $ac_n "checking for isnanf declaration""... $ac_c" 1>&6
-echo "configure:13970: checking for isnanf declaration" >&5
+echo "configure:13984: 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
@@ -13981,7 +13995,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 13985 "configure"
+#line 13999 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -13992,7 +14006,7 @@ int main() {
isnanf(0);
; return 0; }
EOF
-if { (eval echo configure:13996: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14010: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_isnanf_use=yes
else
@@ -14019,12 +14033,12 @@ fi
for ac_func in isnanf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14023: checking for $ac_func" >&5
+echo "configure:14037: 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 <<EOF
-#line 14028 "configure"
+#line 14042 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -14047,7 +14061,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:14051: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14065: \"$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
@@ -14074,7 +14088,7 @@ done
else
echo $ac_n "checking for _isnanf declaration""... $ac_c" 1>&6
-echo "configure:14078: checking for _isnanf declaration" >&5
+echo "configure:14092: 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
@@ -14089,7 +14103,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 14093 "configure"
+#line 14107 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -14100,7 +14114,7 @@ int main() {
_isnanf(0);
; return 0; }
EOF
-if { (eval echo configure:14104: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14118: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__isnanf_use=yes
else
@@ -14127,12 +14141,12 @@ fi
for ac_func in _isnanf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14131: checking for $ac_func" >&5
+echo "configure:14145: 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 <<EOF
-#line 14136 "configure"
+#line 14150 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -14155,7 +14169,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:14159: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14173: \"$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
@@ -14185,7 +14199,7 @@ done
echo $ac_n "checking for isinff declaration""... $ac_c" 1>&6
-echo "configure:14189: checking for isinff declaration" >&5
+echo "configure:14203: 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
@@ -14200,7 +14214,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 14204 "configure"
+#line 14218 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -14211,7 +14225,7 @@ int main() {
isinff(0);
; return 0; }
EOF
-if { (eval echo configure:14215: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14229: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_isinff_use=yes
else
@@ -14238,12 +14252,12 @@ fi
for ac_func in isinff
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14242: checking for $ac_func" >&5
+echo "configure:14256: 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 <<EOF
-#line 14247 "configure"
+#line 14261 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -14266,7 +14280,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:14270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14284: \"$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
@@ -14293,7 +14307,7 @@ done
else
echo $ac_n "checking for _isinff declaration""... $ac_c" 1>&6
-echo "configure:14297: checking for _isinff declaration" >&5
+echo "configure:14311: 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
@@ -14308,7 +14322,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 14312 "configure"
+#line 14326 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -14319,7 +14333,7 @@ int main() {
_isinff(0);
; return 0; }
EOF
-if { (eval echo configure:14323: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14337: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__isinff_use=yes
else
@@ -14346,12 +14360,12 @@ fi
for ac_func in _isinff
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14350: checking for $ac_func" >&5
+echo "configure:14364: 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 <<EOF
-#line 14355 "configure"
+#line 14369 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -14374,7 +14388,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:14378: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14392: \"$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
@@ -14404,7 +14418,7 @@ done
echo $ac_n "checking for atan2f declaration""... $ac_c" 1>&6
-echo "configure:14408: checking for atan2f declaration" >&5
+echo "configure:14422: 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
@@ -14419,14 +14433,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 14423 "configure"
+#line 14437 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
atan2f(0, 0);
; return 0; }
EOF
-if { (eval echo configure:14430: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14444: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_atan2f_use=yes
else
@@ -14453,12 +14467,12 @@ fi
for ac_func in atan2f
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14457: checking for $ac_func" >&5
+echo "configure:14471: 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 <<EOF
-#line 14462 "configure"
+#line 14476 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -14481,7 +14495,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:14485: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14499: \"$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
@@ -14508,7 +14522,7 @@ done
else
echo $ac_n "checking for _atan2f declaration""... $ac_c" 1>&6
-echo "configure:14512: checking for _atan2f declaration" >&5
+echo "configure:14526: 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
@@ -14523,14 +14537,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 14527 "configure"
+#line 14541 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_atan2f(0, 0);
; return 0; }
EOF
-if { (eval echo configure:14534: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14548: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__atan2f_use=yes
else
@@ -14557,12 +14571,12 @@ fi
for ac_func in _atan2f
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14561: checking for $ac_func" >&5
+echo "configure:14575: 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 <<EOF
-#line 14566 "configure"
+#line 14580 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -14585,7 +14599,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:14589: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14603: \"$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
@@ -14615,7 +14629,7 @@ done
echo $ac_n "checking for fabsf declaration""... $ac_c" 1>&6
-echo "configure:14619: checking for fabsf declaration" >&5
+echo "configure:14633: 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
@@ -14630,7 +14644,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 14634 "configure"
+#line 14648 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -14641,7 +14655,7 @@ int main() {
fabsf(0);
; return 0; }
EOF
-if { (eval echo configure:14645: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14659: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_fabsf_use=yes
else
@@ -14668,12 +14682,12 @@ fi
for ac_func in fabsf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14672: checking for $ac_func" >&5
+echo "configure:14686: 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 <<EOF
-#line 14677 "configure"
+#line 14691 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -14696,7 +14710,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:14700: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14714: \"$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
@@ -14723,7 +14737,7 @@ done
else
echo $ac_n "checking for _fabsf declaration""... $ac_c" 1>&6
-echo "configure:14727: checking for _fabsf declaration" >&5
+echo "configure:14741: 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
@@ -14738,7 +14752,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 14742 "configure"
+#line 14756 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -14749,7 +14763,7 @@ int main() {
_fabsf(0);
; return 0; }
EOF
-if { (eval echo configure:14753: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14767: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__fabsf_use=yes
else
@@ -14776,12 +14790,12 @@ fi
for ac_func in _fabsf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14780: checking for $ac_func" >&5
+echo "configure:14794: 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 <<EOF
-#line 14785 "configure"
+#line 14799 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -14804,7 +14818,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:14808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14822: \"$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
@@ -14834,7 +14848,7 @@ done
echo $ac_n "checking for fmodf declaration""... $ac_c" 1>&6
-echo "configure:14838: checking for fmodf declaration" >&5
+echo "configure:14852: 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
@@ -14849,14 +14863,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 14853 "configure"
+#line 14867 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
fmodf(0, 0);
; return 0; }
EOF
-if { (eval echo configure:14860: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14874: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_fmodf_use=yes
else
@@ -14883,12 +14897,12 @@ fi
for ac_func in fmodf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14887: checking for $ac_func" >&5
+echo "configure:14901: 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 <<EOF
-#line 14892 "configure"
+#line 14906 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -14911,7 +14925,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:14915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14929: \"$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
@@ -14938,7 +14952,7 @@ done
else
echo $ac_n "checking for _fmodf declaration""... $ac_c" 1>&6
-echo "configure:14942: checking for _fmodf declaration" >&5
+echo "configure:14956: 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
@@ -14953,14 +14967,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 14957 "configure"
+#line 14971 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_fmodf(0, 0);
; return 0; }
EOF
-if { (eval echo configure:14964: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14978: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__fmodf_use=yes
else
@@ -14987,12 +15001,12 @@ fi
for ac_func in _fmodf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14991: checking for $ac_func" >&5
+echo "configure:15005: 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 <<EOF
-#line 14996 "configure"
+#line 15010 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15015,7 +15029,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15033: \"$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
@@ -15045,7 +15059,7 @@ done
echo $ac_n "checking for frexpf declaration""... $ac_c" 1>&6
-echo "configure:15049: checking for frexpf declaration" >&5
+echo "configure:15063: 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
@@ -15060,14 +15074,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 15064 "configure"
+#line 15078 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
frexpf(0, 0);
; return 0; }
EOF
-if { (eval echo configure:15071: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15085: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_frexpf_use=yes
else
@@ -15094,12 +15108,12 @@ fi
for ac_func in frexpf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15098: checking for $ac_func" >&5
+echo "configure:15112: 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 <<EOF
-#line 15103 "configure"
+#line 15117 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15122,7 +15136,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15126: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15140: \"$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
@@ -15149,7 +15163,7 @@ done
else
echo $ac_n "checking for _frexpf declaration""... $ac_c" 1>&6
-echo "configure:15153: checking for _frexpf declaration" >&5
+echo "configure:15167: 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
@@ -15164,14 +15178,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 15168 "configure"
+#line 15182 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_frexpf(0, 0);
; return 0; }
EOF
-if { (eval echo configure:15175: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15189: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__frexpf_use=yes
else
@@ -15198,12 +15212,12 @@ fi
for ac_func in _frexpf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15202: checking for $ac_func" >&5
+echo "configure:15216: 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 <<EOF
-#line 15207 "configure"
+#line 15221 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15226,7 +15240,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15244: \"$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
@@ -15256,7 +15270,7 @@ done
echo $ac_n "checking for hypotf declaration""... $ac_c" 1>&6
-echo "configure:15260: checking for hypotf declaration" >&5
+echo "configure:15274: 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
@@ -15271,14 +15285,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 15275 "configure"
+#line 15289 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
hypotf(0, 0);
; return 0; }
EOF
-if { (eval echo configure:15282: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15296: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_hypotf_use=yes
else
@@ -15305,12 +15319,12 @@ fi
for ac_func in hypotf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15309: checking for $ac_func" >&5
+echo "configure:15323: 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 <<EOF
-#line 15314 "configure"
+#line 15328 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15333,7 +15347,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15351: \"$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
@@ -15360,7 +15374,7 @@ done
else
echo $ac_n "checking for _hypotf declaration""... $ac_c" 1>&6
-echo "configure:15364: checking for _hypotf declaration" >&5
+echo "configure:15378: 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
@@ -15375,14 +15389,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 15379 "configure"
+#line 15393 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_hypotf(0, 0);
; return 0; }
EOF
-if { (eval echo configure:15386: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15400: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__hypotf_use=yes
else
@@ -15409,12 +15423,12 @@ fi
for ac_func in _hypotf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15413: checking for $ac_func" >&5
+echo "configure:15427: 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 <<EOF
-#line 15418 "configure"
+#line 15432 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15437,7 +15451,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15441: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15455: \"$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
@@ -15467,7 +15481,7 @@ done
echo $ac_n "checking for ldexpf declaration""... $ac_c" 1>&6
-echo "configure:15471: checking for ldexpf declaration" >&5
+echo "configure:15485: 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
@@ -15482,14 +15496,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 15486 "configure"
+#line 15500 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
ldexpf(0, 0);
; return 0; }
EOF
-if { (eval echo configure:15493: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15507: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_ldexpf_use=yes
else
@@ -15516,12 +15530,12 @@ fi
for ac_func in ldexpf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15520: checking for $ac_func" >&5
+echo "configure:15534: 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 <<EOF
-#line 15525 "configure"
+#line 15539 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15544,7 +15558,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15548: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15562: \"$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
@@ -15571,7 +15585,7 @@ done
else
echo $ac_n "checking for _ldexpf declaration""... $ac_c" 1>&6
-echo "configure:15575: checking for _ldexpf declaration" >&5
+echo "configure:15589: 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
@@ -15586,14 +15600,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 15590 "configure"
+#line 15604 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_ldexpf(0, 0);
; return 0; }
EOF
-if { (eval echo configure:15597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15611: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__ldexpf_use=yes
else
@@ -15620,12 +15634,12 @@ fi
for ac_func in _ldexpf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15624: checking for $ac_func" >&5
+echo "configure:15638: 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 <<EOF
-#line 15629 "configure"
+#line 15643 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15648,7 +15662,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15666: \"$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
@@ -15678,7 +15692,7 @@ done
echo $ac_n "checking for logf declaration""... $ac_c" 1>&6
-echo "configure:15682: checking for logf declaration" >&5
+echo "configure:15696: 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
@@ -15693,7 +15707,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 15697 "configure"
+#line 15711 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -15704,7 +15718,7 @@ int main() {
logf(0);
; return 0; }
EOF
-if { (eval echo configure:15708: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15722: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_logf_use=yes
else
@@ -15731,12 +15745,12 @@ fi
for ac_func in logf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15735: checking for $ac_func" >&5
+echo "configure:15749: 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 <<EOF
-#line 15740 "configure"
+#line 15754 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15759,7 +15773,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15777: \"$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
@@ -15786,7 +15800,7 @@ done
else
echo $ac_n "checking for _logf declaration""... $ac_c" 1>&6
-echo "configure:15790: checking for _logf declaration" >&5
+echo "configure:15804: 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
@@ -15801,7 +15815,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 15805 "configure"
+#line 15819 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -15812,7 +15826,7 @@ int main() {
_logf(0);
; return 0; }
EOF
-if { (eval echo configure:15816: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__logf_use=yes
else
@@ -15839,12 +15853,12 @@ fi
for ac_func in _logf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15843: checking for $ac_func" >&5
+echo "configure:15857: 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 <<EOF
-#line 15848 "configure"
+#line 15862 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15867,7 +15881,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15871: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15885: \"$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
@@ -15897,7 +15911,7 @@ done
echo $ac_n "checking for log10f declaration""... $ac_c" 1>&6
-echo "configure:15901: checking for log10f declaration" >&5
+echo "configure:15915: 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
@@ -15912,7 +15926,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 15916 "configure"
+#line 15930 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -15923,7 +15937,7 @@ int main() {
log10f(0);
; return 0; }
EOF
-if { (eval echo configure:15927: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15941: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_log10f_use=yes
else
@@ -15950,12 +15964,12 @@ fi
for ac_func in log10f
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15954: checking for $ac_func" >&5
+echo "configure:15968: 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 <<EOF
-#line 15959 "configure"
+#line 15973 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -15978,7 +15992,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:15982: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15996: \"$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
@@ -16005,7 +16019,7 @@ done
else
echo $ac_n "checking for _log10f declaration""... $ac_c" 1>&6
-echo "configure:16009: checking for _log10f declaration" >&5
+echo "configure:16023: 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
@@ -16020,7 +16034,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16024 "configure"
+#line 16038 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -16031,7 +16045,7 @@ int main() {
_log10f(0);
; return 0; }
EOF
-if { (eval echo configure:16035: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16049: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__log10f_use=yes
else
@@ -16058,12 +16072,12 @@ fi
for ac_func in _log10f
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16062: checking for $ac_func" >&5
+echo "configure:16076: 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 <<EOF
-#line 16067 "configure"
+#line 16081 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16086,7 +16100,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16104: \"$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
@@ -16116,7 +16130,7 @@ done
echo $ac_n "checking for modff declaration""... $ac_c" 1>&6
-echo "configure:16120: checking for modff declaration" >&5
+echo "configure:16134: 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
@@ -16131,14 +16145,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16135 "configure"
+#line 16149 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
modff(0, 0);
; return 0; }
EOF
-if { (eval echo configure:16142: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16156: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_modff_use=yes
else
@@ -16165,12 +16179,12 @@ fi
for ac_func in modff
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16169: checking for $ac_func" >&5
+echo "configure:16183: 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 <<EOF
-#line 16174 "configure"
+#line 16188 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16193,7 +16207,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16197: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16211: \"$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
@@ -16220,7 +16234,7 @@ done
else
echo $ac_n "checking for _modff declaration""... $ac_c" 1>&6
-echo "configure:16224: checking for _modff declaration" >&5
+echo "configure:16238: 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
@@ -16235,14 +16249,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16239 "configure"
+#line 16253 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_modff(0, 0);
; return 0; }
EOF
-if { (eval echo configure:16246: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16260: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__modff_use=yes
else
@@ -16269,12 +16283,12 @@ fi
for ac_func in _modff
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16273: checking for $ac_func" >&5
+echo "configure:16287: 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 <<EOF
-#line 16278 "configure"
+#line 16292 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16297,7 +16311,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16301: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16315: \"$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
@@ -16327,7 +16341,7 @@ done
echo $ac_n "checking for powf declaration""... $ac_c" 1>&6
-echo "configure:16331: checking for powf declaration" >&5
+echo "configure:16345: 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
@@ -16342,14 +16356,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16346 "configure"
+#line 16360 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
powf(0, 0);
; return 0; }
EOF
-if { (eval echo configure:16353: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16367: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_powf_use=yes
else
@@ -16376,12 +16390,12 @@ fi
for ac_func in powf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16380: checking for $ac_func" >&5
+echo "configure:16394: 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 <<EOF
-#line 16385 "configure"
+#line 16399 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16404,7 +16418,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16408: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16422: \"$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
@@ -16431,7 +16445,7 @@ done
else
echo $ac_n "checking for _powf declaration""... $ac_c" 1>&6
-echo "configure:16435: checking for _powf declaration" >&5
+echo "configure:16449: 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
@@ -16446,14 +16460,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16450 "configure"
+#line 16464 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_powf(0, 0);
; return 0; }
EOF
-if { (eval echo configure:16457: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16471: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__powf_use=yes
else
@@ -16480,12 +16494,12 @@ fi
for ac_func in _powf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16484: checking for $ac_func" >&5
+echo "configure:16498: 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 <<EOF
-#line 16489 "configure"
+#line 16503 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16508,7 +16522,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16526: \"$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
@@ -16538,7 +16552,7 @@ done
echo $ac_n "checking for sqrtf declaration""... $ac_c" 1>&6
-echo "configure:16542: checking for sqrtf declaration" >&5
+echo "configure:16556: 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
@@ -16553,7 +16567,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16557 "configure"
+#line 16571 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -16564,7 +16578,7 @@ int main() {
sqrtf(0);
; return 0; }
EOF
-if { (eval echo configure:16568: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16582: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_sqrtf_use=yes
else
@@ -16591,12 +16605,12 @@ fi
for ac_func in sqrtf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16595: checking for $ac_func" >&5
+echo "configure:16609: 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 <<EOF
-#line 16600 "configure"
+#line 16614 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16619,7 +16633,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16623: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16637: \"$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
@@ -16646,7 +16660,7 @@ done
else
echo $ac_n "checking for _sqrtf declaration""... $ac_c" 1>&6
-echo "configure:16650: checking for _sqrtf declaration" >&5
+echo "configure:16664: 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
@@ -16661,7 +16675,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16665 "configure"
+#line 16679 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -16672,7 +16686,7 @@ int main() {
_sqrtf(0);
; return 0; }
EOF
-if { (eval echo configure:16676: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16690: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__sqrtf_use=yes
else
@@ -16699,12 +16713,12 @@ fi
for ac_func in _sqrtf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16703: checking for $ac_func" >&5
+echo "configure:16717: 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 <<EOF
-#line 16708 "configure"
+#line 16722 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16727,7 +16741,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16745: \"$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
@@ -16757,7 +16771,7 @@ done
echo $ac_n "checking for sincosf declaration""... $ac_c" 1>&6
-echo "configure:16761: checking for sincosf declaration" >&5
+echo "configure:16775: 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
@@ -16772,14 +16786,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16776 "configure"
+#line 16790 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
sincosf(0, 0, 0);
; return 0; }
EOF
-if { (eval echo configure:16783: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16797: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_sincosf_use=yes
else
@@ -16806,12 +16820,12 @@ fi
for ac_func in sincosf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16810: checking for $ac_func" >&5
+echo "configure:16824: 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 <<EOF
-#line 16815 "configure"
+#line 16829 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16834,7 +16848,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16838: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16852: \"$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
@@ -16861,7 +16875,7 @@ done
else
echo $ac_n "checking for _sincosf declaration""... $ac_c" 1>&6
-echo "configure:16865: checking for _sincosf declaration" >&5
+echo "configure:16879: 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
@@ -16876,14 +16890,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16880 "configure"
+#line 16894 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_sincosf(0, 0, 0);
; return 0; }
EOF
-if { (eval echo configure:16887: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16901: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__sincosf_use=yes
else
@@ -16910,12 +16924,12 @@ fi
for ac_func in _sincosf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16914: checking for $ac_func" >&5
+echo "configure:16928: 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 <<EOF
-#line 16919 "configure"
+#line 16933 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16938,7 +16952,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16942: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16956: \"$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
@@ -16968,7 +16982,7 @@ done
echo $ac_n "checking for finitef declaration""... $ac_c" 1>&6
-echo "configure:16972: checking for finitef declaration" >&5
+echo "configure:16986: 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
@@ -16983,7 +16997,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 16987 "configure"
+#line 17001 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -16994,7 +17008,7 @@ int main() {
finitef(0);
; return 0; }
EOF
-if { (eval echo configure:16998: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17012: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_finitef_use=yes
else
@@ -17021,12 +17035,12 @@ fi
for ac_func in finitef
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:17025: checking for $ac_func" >&5
+echo "configure:17039: 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 <<EOF
-#line 17030 "configure"
+#line 17044 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -17049,7 +17063,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:17053: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17067: \"$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
@@ -17076,7 +17090,7 @@ done
else
echo $ac_n "checking for _finitef declaration""... $ac_c" 1>&6
-echo "configure:17080: checking for _finitef declaration" >&5
+echo "configure:17094: 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
@@ -17091,7 +17105,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 17095 "configure"
+#line 17109 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -17102,7 +17116,7 @@ int main() {
_finitef(0);
; return 0; }
EOF
-if { (eval echo configure:17106: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17120: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__finitef_use=yes
else
@@ -17129,12 +17143,12 @@ fi
for ac_func in _finitef
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:17133: checking for $ac_func" >&5
+echo "configure:17147: 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 <<EOF
-#line 17138 "configure"
+#line 17152 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -17157,7 +17171,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:17161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17175: \"$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
@@ -17187,7 +17201,7 @@ done
echo $ac_n "checking for long double trig functions""... $ac_c" 1>&6
-echo "configure:17191: checking for long double trig functions" >&5
+echo "configure:17205: 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
@@ -17201,7 +17215,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 17205 "configure"
+#line 17219 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
@@ -17210,7 +17224,7 @@ int main() {
coshl sinhl tanhl; do echo "$x (0);"; done`
; return 0; }
EOF
-if { (eval echo configure:17214: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17228: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_long_double_trig_use=yes
else
@@ -17236,12 +17250,12 @@ fi
coshl sinhl tanhl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:17240: checking for $ac_func" >&5
+echo "configure:17254: 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 <<EOF
-#line 17245 "configure"
+#line 17259 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -17264,7 +17278,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:17268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17282: \"$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
@@ -17292,7 +17306,7 @@ done
echo $ac_n "checking for long double round functions""... $ac_c" 1>&6
-echo "configure:17296: checking for long double round functions" >&5
+echo "configure:17310: 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
@@ -17306,14 +17320,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 17310 "configure"
+#line 17324 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
`for x in ceill floorl; do echo "$x (0);"; done`
; return 0; }
EOF
-if { (eval echo configure:17317: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17331: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_long_double_round_use=yes
else
@@ -17337,12 +17351,12 @@ fi
for ac_func in ceill floorl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:17341: checking for $ac_func" >&5
+echo "configure:17355: 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 <<EOF
-#line 17346 "configure"
+#line 17360 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -17365,7 +17379,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:17369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17383: \"$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
@@ -17394,7 +17408,7 @@ done
echo $ac_n "checking for isnanl declaration""... $ac_c" 1>&6
-echo "configure:17398: checking for isnanl declaration" >&5
+echo "configure:17412: 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
@@ -17409,7 +17423,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 17413 "configure"
+#line 17427 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -17420,7 +17434,7 @@ int main() {
isnanl(0);
; return 0; }
EOF
-if { (eval echo configure:17424: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17438: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_isnanl_use=yes
else
@@ -17447,12 +17461,12 @@ fi
for ac_func in isnanl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:17451: checking for $ac_func" >&5
+echo "configure:17465: 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 <<EOF
-#line 17456 "configure"
+#line 17470 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -17475,7 +17489,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:17479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17493: \"$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
@@ -17502,7 +17516,7 @@ done
else
echo $ac_n "checking for _isnanl declaration""... $ac_c" 1>&6
-echo "configure:17506: checking for _isnanl declaration" >&5
+echo "configure:17520: 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
@@ -17517,7 +17531,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 17521 "configure"
+#line 17535 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -17528,7 +17542,7 @@ int main() {
_isnanl(0);
; return 0; }
EOF
-if { (eval echo configure:17532: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17546: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__isnanl_use=yes
else
@@ -17555,12 +17569,12 @@ fi
for ac_func in _isnanl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:17559: checking for $ac_func" >&5
+echo "configure:17573: 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 <<EOF
-#line 17564 "configure"
+#line 17578 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -17583,7 +17597,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:17587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17601: \"$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
@@ -17613,7 +17627,7 @@ done
echo $ac_n "checking for isinfl declaration""... $ac_c" 1>&6
-echo "configure:17617: checking for isinfl declaration" >&5
+echo "configure:17631: 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
@@ -17628,7 +17642,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 17632 "configure"
+#line 17646 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -17639,7 +17653,7 @@ int main() {
isinfl(0);
; return 0; }
EOF
-if { (eval echo configure:17643: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17657: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_isinfl_use=yes
else
@@ -17666,12 +17680,12 @@ fi
for ac_func in isinfl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:17670: checking for $ac_func" >&5
+echo "configure:17684: 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 <<EOF
-#line 17675 "configure"
+#line 17689 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -17694,7 +17708,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:17698: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17712: \"$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
@@ -17721,7 +17735,7 @@ done
else
echo $ac_n "checking for _isinfl declaration""... $ac_c" 1>&6
-echo "configure:17725: checking for _isinfl declaration" >&5
+echo "configure:17739: 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
@@ -17736,7 +17750,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 17740 "configure"
+#line 17754 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -17747,7 +17761,7 @@ int main() {
_isinfl(0);
; return 0; }
EOF
-if { (eval echo configure:17751: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17765: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__isinfl_use=yes
else
@@ -17774,12 +17788,12 @@ fi
for ac_func in _isinfl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:17778: checking for $ac_func" >&5
+echo "configure:17792: 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 <<EOF
-#line 17783 "configure"
+#line 17797 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -17802,7 +17816,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:17806: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17820: \"$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
@@ -17832,7 +17846,7 @@ done
echo $ac_n "checking for copysignl declaration""... $ac_c" 1>&6
-echo "configure:17836: checking for copysignl declaration" >&5
+echo "configure:17850: 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
@@ -17847,14 +17861,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 17851 "configure"
+#line 17865 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
copysignl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:17858: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17872: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_copysignl_use=yes
else
@@ -17881,12 +17895,12 @@ fi
for ac_func in copysignl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:17885: checking for $ac_func" >&5
+echo "configure:17899: 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 <<EOF
-#line 17890 "configure"
+#line 17904 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -17909,7 +17923,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:17913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17927: \"$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
@@ -17936,7 +17950,7 @@ done
else
echo $ac_n "checking for _copysignl declaration""... $ac_c" 1>&6
-echo "configure:17940: checking for _copysignl declaration" >&5
+echo "configure:17954: 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
@@ -17951,14 +17965,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 17955 "configure"
+#line 17969 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_copysignl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:17962: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17976: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__copysignl_use=yes
else
@@ -17985,12 +17999,12 @@ fi
for ac_func in _copysignl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:17989: checking for $ac_func" >&5
+echo "configure:18003: 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 <<EOF
-#line 17994 "configure"
+#line 18008 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -18013,7 +18027,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:18017: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18031: \"$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
@@ -18043,7 +18057,7 @@ done
echo $ac_n "checking for atan2l declaration""... $ac_c" 1>&6
-echo "configure:18047: checking for atan2l declaration" >&5
+echo "configure:18061: 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
@@ -18058,14 +18072,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 18062 "configure"
+#line 18076 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
atan2l(0, 0);
; return 0; }
EOF
-if { (eval echo configure:18069: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:18083: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_atan2l_use=yes
else
@@ -18092,12 +18106,12 @@ fi
for ac_func in atan2l
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:18096: checking for $ac_func" >&5
+echo "configure:18110: 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 <<EOF
-#line 18101 "configure"
+#line 18115 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -18120,7 +18134,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:18124: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18138: \"$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
@@ -18147,7 +18161,7 @@ done
else
echo $ac_n "checking for _atan2l declaration""... $ac_c" 1>&6
-echo "configure:18151: checking for _atan2l declaration" >&5
+echo "configure:18165: 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
@@ -18162,14 +18176,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 18166 "configure"
+#line 18180 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_atan2l(0, 0);
; return 0; }
EOF
-if { (eval echo configure:18173: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:18187: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__atan2l_use=yes
else
@@ -18196,12 +18210,12 @@ fi
for ac_func in _atan2l
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:18200: checking for $ac_func" >&5
+echo "configure:18214: 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 <<EOF
-#line 18205 "configure"
+#line 18219 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -18224,7 +18238,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:18228: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18242: \"$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
@@ -18254,7 +18268,7 @@ done
echo $ac_n "checking for expl declaration""... $ac_c" 1>&6
-echo "configure:18258: checking for expl declaration" >&5
+echo "configure:18272: 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
@@ -18269,7 +18283,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 18273 "configure"
+#line 18287 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -18280,7 +18294,7 @@ int main() {
expl(0);
; return 0; }
EOF
-if { (eval echo configure:18284: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:18298: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_expl_use=yes
else
@@ -18307,12 +18321,12 @@ fi
for ac_func in expl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:18311: checking for $ac_func" >&5
+echo "configure:18325: 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 <<EOF
-#line 18316 "configure"
+#line 18330 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -18335,7 +18349,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:18339: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18353: \"$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
@@ -18362,7 +18376,7 @@ done
else
echo $ac_n "checking for _expl declaration""... $ac_c" 1>&6
-echo "configure:18366: checking for _expl declaration" >&5
+echo "configure:18380: 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
@@ -18377,7 +18391,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 18381 "configure"
+#line 18395 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -18388,7 +18402,7 @@ int main() {
_expl(0);
; return 0; }
EOF
-if { (eval echo configure:18392: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:18406: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__expl_use=yes
else
@@ -18415,12 +18429,12 @@ fi
for ac_func in _expl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:18419: checking for $ac_func" >&5
+echo "configure:18433: 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 <<EOF
-#line 18424 "configure"
+#line 18438 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -18443,7 +18457,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:18447: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18461: \"$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
@@ -18473,7 +18487,7 @@ done
echo $ac_n "checking for fabsl declaration""... $ac_c" 1>&6
-echo "configure:18477: checking for fabsl declaration" >&5
+echo "configure:18491: 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
@@ -18488,7 +18502,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 18492 "configure"
+#line 18506 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -18499,7 +18513,7 @@ int main() {
fabsl(0);
; return 0; }
EOF
-if { (eval echo configure:18503: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:18517: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_fabsl_use=yes
else
@@ -18526,12 +18540,12 @@ fi
for ac_func in fabsl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:18530: checking for $ac_func" >&5
+echo "configure:18544: 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 <<EOF
-#line 18535 "configure"
+#line 18549 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -18554,7 +18568,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:18558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18572: \"$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
@@ -18581,7 +18595,7 @@ done
else
echo $ac_n "checking for _fabsl declaration""... $ac_c" 1>&6
-echo "configure:18585: checking for _fabsl declaration" >&5
+echo "configure:18599: 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
@@ -18596,7 +18610,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 18600 "configure"
+#line 18614 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -18607,7 +18621,7 @@ int main() {
_fabsl(0);
; return 0; }
EOF
-if { (eval echo configure:18611: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:18625: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__fabsl_use=yes
else
@@ -18634,12 +18648,12 @@ fi
for ac_func in _fabsl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:18638: checking for $ac_func" >&5
+echo "configure:18652: 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 <<EOF
-#line 18643 "configure"
+#line 18657 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -18662,7 +18676,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:18666: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18680: \"$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
@@ -18692,7 +18706,7 @@ done
echo $ac_n "checking for fmodl declaration""... $ac_c" 1>&6
-echo "configure:18696: checking for fmodl declaration" >&5
+echo "configure:18710: 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
@@ -18707,14 +18721,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 18711 "configure"
+#line 18725 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
fmodl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:18718: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:18732: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_fmodl_use=yes
else
@@ -18741,12 +18755,12 @@ fi
for ac_func in fmodl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:18745: checking for $ac_func" >&5
+echo "configure:18759: 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 <<EOF
-#line 18750 "configure"
+#line 18764 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -18769,7 +18783,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:18773: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18787: \"$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
@@ -18796,7 +18810,7 @@ done
else
echo $ac_n "checking for _fmodl declaration""... $ac_c" 1>&6
-echo "configure:18800: checking for _fmodl declaration" >&5
+echo "configure:18814: 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
@@ -18811,14 +18825,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 18815 "configure"
+#line 18829 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_fmodl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:18822: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:18836: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__fmodl_use=yes
else
@@ -18845,12 +18859,12 @@ fi
for ac_func in _fmodl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:18849: checking for $ac_func" >&5
+echo "configure:18863: 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 <<EOF
-#line 18854 "configure"
+#line 18868 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -18873,7 +18887,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:18877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18891: \"$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
@@ -18903,7 +18917,7 @@ done
echo $ac_n "checking for frexpl declaration""... $ac_c" 1>&6
-echo "configure:18907: checking for frexpl declaration" >&5
+echo "configure:18921: 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
@@ -18918,14 +18932,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 18922 "configure"
+#line 18936 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
frexpl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:18929: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:18943: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_frexpl_use=yes
else
@@ -18952,12 +18966,12 @@ fi
for ac_func in frexpl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:18956: checking for $ac_func" >&5
+echo "configure:18970: 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 <<EOF
-#line 18961 "configure"
+#line 18975 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -18980,7 +18994,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:18984: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18998: \"$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
@@ -19007,7 +19021,7 @@ done
else
echo $ac_n "checking for _frexpl declaration""... $ac_c" 1>&6
-echo "configure:19011: checking for _frexpl declaration" >&5
+echo "configure:19025: 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
@@ -19022,14 +19036,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 19026 "configure"
+#line 19040 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_frexpl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:19033: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:19047: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__frexpl_use=yes
else
@@ -19056,12 +19070,12 @@ fi
for ac_func in _frexpl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:19060: checking for $ac_func" >&5
+echo "configure:19074: 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 <<EOF
-#line 19065 "configure"
+#line 19079 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -19084,7 +19098,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:19088: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19102: \"$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
@@ -19114,7 +19128,7 @@ done
echo $ac_n "checking for hypotl declaration""... $ac_c" 1>&6
-echo "configure:19118: checking for hypotl declaration" >&5
+echo "configure:19132: 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
@@ -19129,14 +19143,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 19133 "configure"
+#line 19147 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
hypotl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:19140: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:19154: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_hypotl_use=yes
else
@@ -19163,12 +19177,12 @@ fi
for ac_func in hypotl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:19167: checking for $ac_func" >&5
+echo "configure:19181: 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 <<EOF
-#line 19172 "configure"
+#line 19186 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -19191,7 +19205,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:19195: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19209: \"$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
@@ -19218,7 +19232,7 @@ done
else
echo $ac_n "checking for _hypotl declaration""... $ac_c" 1>&6
-echo "configure:19222: checking for _hypotl declaration" >&5
+echo "configure:19236: 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
@@ -19233,14 +19247,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 19237 "configure"
+#line 19251 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_hypotl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:19244: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:19258: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__hypotl_use=yes
else
@@ -19267,12 +19281,12 @@ fi
for ac_func in _hypotl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:19271: checking for $ac_func" >&5
+echo "configure:19285: 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 <<EOF
-#line 19276 "configure"
+#line 19290 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -19295,7 +19309,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:19299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19313: \"$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
@@ -19325,7 +19339,7 @@ done
echo $ac_n "checking for ldexpl declaration""... $ac_c" 1>&6
-echo "configure:19329: checking for ldexpl declaration" >&5
+echo "configure:19343: 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
@@ -19340,14 +19354,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 19344 "configure"
+#line 19358 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
ldexpl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:19351: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:19365: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_ldexpl_use=yes
else
@@ -19374,12 +19388,12 @@ fi
for ac_func in ldexpl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:19378: checking for $ac_func" >&5
+echo "configure:19392: 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 <<EOF
-#line 19383 "configure"
+#line 19397 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -19402,7 +19416,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:19406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19420: \"$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
@@ -19429,7 +19443,7 @@ done
else
echo $ac_n "checking for _ldexpl declaration""... $ac_c" 1>&6
-echo "configure:19433: checking for _ldexpl declaration" >&5
+echo "configure:19447: 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
@@ -19444,14 +19458,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 19448 "configure"
+#line 19462 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_ldexpl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:19455: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:19469: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__ldexpl_use=yes
else
@@ -19478,12 +19492,12 @@ fi
for ac_func in _ldexpl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:19482: checking for $ac_func" >&5
+echo "configure:19496: 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 <<EOF
-#line 19487 "configure"
+#line 19501 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -19506,7 +19520,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:19510: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19524: \"$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
@@ -19536,7 +19550,7 @@ done
echo $ac_n "checking for logl declaration""... $ac_c" 1>&6
-echo "configure:19540: checking for logl declaration" >&5
+echo "configure:19554: 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
@@ -19551,7 +19565,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 19555 "configure"
+#line 19569 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -19562,7 +19576,7 @@ int main() {
logl(0);
; return 0; }
EOF
-if { (eval echo configure:19566: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:19580: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_logl_use=yes
else
@@ -19589,12 +19603,12 @@ fi
for ac_func in logl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:19593: checking for $ac_func" >&5
+echo "configure:19607: 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 <<EOF
-#line 19598 "configure"
+#line 19612 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -19617,7 +19631,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:19621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19635: \"$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
@@ -19644,7 +19658,7 @@ done
else
echo $ac_n "checking for _logl declaration""... $ac_c" 1>&6
-echo "configure:19648: checking for _logl declaration" >&5
+echo "configure:19662: 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
@@ -19659,7 +19673,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 19663 "configure"
+#line 19677 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -19670,7 +19684,7 @@ int main() {
_logl(0);
; return 0; }
EOF
-if { (eval echo configure:19674: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:19688: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__logl_use=yes
else
@@ -19697,12 +19711,12 @@ fi
for ac_func in _logl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:19701: checking for $ac_func" >&5
+echo "configure:19715: 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 <<EOF
-#line 19706 "configure"
+#line 19720 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -19725,7 +19739,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:19729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19743: \"$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
@@ -19755,7 +19769,7 @@ done
echo $ac_n "checking for log10l declaration""... $ac_c" 1>&6
-echo "configure:19759: checking for log10l declaration" >&5
+echo "configure:19773: 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
@@ -19770,7 +19784,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 19774 "configure"
+#line 19788 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -19781,7 +19795,7 @@ int main() {
log10l(0);
; return 0; }
EOF
-if { (eval echo configure:19785: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:19799: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_log10l_use=yes
else
@@ -19808,12 +19822,12 @@ fi
for ac_func in log10l
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:19812: checking for $ac_func" >&5
+echo "configure:19826: 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 <<EOF
-#line 19817 "configure"
+#line 19831 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -19836,7 +19850,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:19840: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19854: \"$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
@@ -19863,7 +19877,7 @@ done
else
echo $ac_n "checking for _log10l declaration""... $ac_c" 1>&6
-echo "configure:19867: checking for _log10l declaration" >&5
+echo "configure:19881: 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
@@ -19878,7 +19892,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 19882 "configure"
+#line 19896 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -19889,7 +19903,7 @@ int main() {
_log10l(0);
; return 0; }
EOF
-if { (eval echo configure:19893: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:19907: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__log10l_use=yes
else
@@ -19916,12 +19930,12 @@ fi
for ac_func in _log10l
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:19920: checking for $ac_func" >&5
+echo "configure:19934: 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 <<EOF
-#line 19925 "configure"
+#line 19939 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -19944,7 +19958,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:19948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19962: \"$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
@@ -19974,7 +19988,7 @@ done
echo $ac_n "checking for modfl declaration""... $ac_c" 1>&6
-echo "configure:19978: checking for modfl declaration" >&5
+echo "configure:19992: 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
@@ -19989,14 +20003,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 19993 "configure"
+#line 20007 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
modfl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:20000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:20014: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_modfl_use=yes
else
@@ -20023,12 +20037,12 @@ fi
for ac_func in modfl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:20027: checking for $ac_func" >&5
+echo "configure:20041: 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 <<EOF
-#line 20032 "configure"
+#line 20046 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -20051,7 +20065,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:20055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20069: \"$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
@@ -20078,7 +20092,7 @@ done
else
echo $ac_n "checking for _modfl declaration""... $ac_c" 1>&6
-echo "configure:20082: checking for _modfl declaration" >&5
+echo "configure:20096: 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
@@ -20093,14 +20107,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 20097 "configure"
+#line 20111 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_modfl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:20104: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:20118: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__modfl_use=yes
else
@@ -20127,12 +20141,12 @@ fi
for ac_func in _modfl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:20131: checking for $ac_func" >&5
+echo "configure:20145: 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 <<EOF
-#line 20136 "configure"
+#line 20150 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -20155,7 +20169,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:20159: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20173: \"$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
@@ -20185,7 +20199,7 @@ done
echo $ac_n "checking for powl declaration""... $ac_c" 1>&6
-echo "configure:20189: checking for powl declaration" >&5
+echo "configure:20203: 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
@@ -20200,14 +20214,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 20204 "configure"
+#line 20218 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
powl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:20211: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:20225: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_powl_use=yes
else
@@ -20234,12 +20248,12 @@ fi
for ac_func in powl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:20238: checking for $ac_func" >&5
+echo "configure:20252: 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 <<EOF
-#line 20243 "configure"
+#line 20257 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -20262,7 +20276,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:20266: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20280: \"$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
@@ -20289,7 +20303,7 @@ done
else
echo $ac_n "checking for _powl declaration""... $ac_c" 1>&6
-echo "configure:20293: checking for _powl declaration" >&5
+echo "configure:20307: 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
@@ -20304,14 +20318,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 20308 "configure"
+#line 20322 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_powl(0, 0);
; return 0; }
EOF
-if { (eval echo configure:20315: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:20329: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__powl_use=yes
else
@@ -20338,12 +20352,12 @@ fi
for ac_func in _powl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:20342: checking for $ac_func" >&5
+echo "configure:20356: 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 <<EOF
-#line 20347 "configure"
+#line 20361 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -20366,7 +20380,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:20370: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20384: \"$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
@@ -20396,7 +20410,7 @@ done
echo $ac_n "checking for sqrtl declaration""... $ac_c" 1>&6
-echo "configure:20400: checking for sqrtl declaration" >&5
+echo "configure:20414: 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
@@ -20411,7 +20425,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 20415 "configure"
+#line 20429 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -20422,7 +20436,7 @@ int main() {
sqrtl(0);
; return 0; }
EOF
-if { (eval echo configure:20426: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:20440: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_sqrtl_use=yes
else
@@ -20449,12 +20463,12 @@ fi
for ac_func in sqrtl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:20453: checking for $ac_func" >&5
+echo "configure:20467: 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 <<EOF
-#line 20458 "configure"
+#line 20472 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -20477,7 +20491,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:20481: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20495: \"$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
@@ -20504,7 +20518,7 @@ done
else
echo $ac_n "checking for _sqrtl declaration""... $ac_c" 1>&6
-echo "configure:20508: checking for _sqrtl declaration" >&5
+echo "configure:20522: 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
@@ -20519,7 +20533,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 20523 "configure"
+#line 20537 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -20530,7 +20544,7 @@ int main() {
_sqrtl(0);
; return 0; }
EOF
-if { (eval echo configure:20534: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:20548: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__sqrtl_use=yes
else
@@ -20557,12 +20571,12 @@ fi
for ac_func in _sqrtl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:20561: checking for $ac_func" >&5
+echo "configure:20575: 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 <<EOF
-#line 20566 "configure"
+#line 20580 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -20585,7 +20599,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:20589: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20603: \"$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
@@ -20615,7 +20629,7 @@ done
echo $ac_n "checking for sincosl declaration""... $ac_c" 1>&6
-echo "configure:20619: checking for sincosl declaration" >&5
+echo "configure:20633: 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
@@ -20630,14 +20644,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 20634 "configure"
+#line 20648 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
sincosl(0, 0, 0);
; return 0; }
EOF
-if { (eval echo configure:20641: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:20655: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_sincosl_use=yes
else
@@ -20664,12 +20678,12 @@ fi
for ac_func in sincosl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:20668: checking for $ac_func" >&5
+echo "configure:20682: 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 <<EOF
-#line 20673 "configure"
+#line 20687 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -20692,7 +20706,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:20696: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20710: \"$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
@@ -20719,7 +20733,7 @@ done
else
echo $ac_n "checking for _sincosl declaration""... $ac_c" 1>&6
-echo "configure:20723: checking for _sincosl declaration" >&5
+echo "configure:20737: 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
@@ -20734,14 +20748,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 20738 "configure"
+#line 20752 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
_sincosl(0, 0, 0);
; return 0; }
EOF
-if { (eval echo configure:20745: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:20759: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__sincosl_use=yes
else
@@ -20768,12 +20782,12 @@ fi
for ac_func in _sincosl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:20772: checking for $ac_func" >&5
+echo "configure:20786: 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 <<EOF
-#line 20777 "configure"
+#line 20791 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -20796,7 +20810,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:20800: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20814: \"$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
@@ -20826,7 +20840,7 @@ done
echo $ac_n "checking for finitel declaration""... $ac_c" 1>&6
-echo "configure:20830: checking for finitel declaration" >&5
+echo "configure:20844: 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
@@ -20841,7 +20855,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 20845 "configure"
+#line 20859 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -20852,7 +20866,7 @@ int main() {
finitel(0);
; return 0; }
EOF
-if { (eval echo configure:20856: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:20870: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_finitel_use=yes
else
@@ -20879,12 +20893,12 @@ fi
for ac_func in finitel
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:20883: checking for $ac_func" >&5
+echo "configure:20897: 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 <<EOF
-#line 20888 "configure"
+#line 20902 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -20907,7 +20921,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:20911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20925: \"$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
@@ -20934,7 +20948,7 @@ done
else
echo $ac_n "checking for _finitel declaration""... $ac_c" 1>&6
-echo "configure:20938: checking for _finitel declaration" >&5
+echo "configure:20952: 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
@@ -20949,7 +20963,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 20953 "configure"
+#line 20967 "configure"
#include "confdefs.h"
#include <math.h>
#ifdef HAVE_IEEEFP_H
@@ -20960,7 +20974,7 @@ int main() {
_finitel(0);
; return 0; }
EOF
-if { (eval echo configure:20964: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:20978: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__finitel_use=yes
else
@@ -20987,12 +21001,12 @@ fi
for ac_func in _finitel
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:20991: checking for $ac_func" >&5
+echo "configure:21005: 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 <<EOF
-#line 20996 "configure"
+#line 21010 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -21015,7 +21029,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:21019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21033: \"$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
@@ -21046,7 +21060,7 @@ done
echo $ac_n "checking for _float trig functions""... $ac_c" 1>&6
-echo "configure:21050: checking for _float trig functions" >&5
+echo "configure:21064: 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
@@ -21060,7 +21074,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 21064 "configure"
+#line 21078 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
@@ -21069,7 +21083,7 @@ int main() {
_coshf _sinhf _tanhf; do echo "$x (0);"; done`
; return 0; }
EOF
-if { (eval echo configure:21073: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21087: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__float_trig_use=yes
else
@@ -21095,12 +21109,12 @@ fi
_coshf _sinhf _tanhf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:21099: checking for $ac_func" >&5
+echo "configure:21113: 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 <<EOF
-#line 21104 "configure"
+#line 21118 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -21123,7 +21137,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:21127: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21141: \"$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
@@ -21151,7 +21165,7 @@ done
echo $ac_n "checking for _float round functions""... $ac_c" 1>&6
-echo "configure:21155: checking for _float round functions" >&5
+echo "configure:21169: 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
@@ -21165,14 +21179,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 21169 "configure"
+#line 21183 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
`for x in _ceilf _floorf; do echo "$x (0);"; done`
; return 0; }
EOF
-if { (eval echo configure:21176: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21190: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__float_round_use=yes
else
@@ -21196,12 +21210,12 @@ fi
for ac_func in _ceilf _floorf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:21200: checking for $ac_func" >&5
+echo "configure:21214: 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 <<EOF
-#line 21205 "configure"
+#line 21219 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -21224,7 +21238,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:21228: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21242: \"$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
@@ -21253,7 +21267,7 @@ done
echo $ac_n "checking for _long double trig functions""... $ac_c" 1>&6
-echo "configure:21257: checking for _long double trig functions" >&5
+echo "configure:21271: 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
@@ -21267,7 +21281,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 21271 "configure"
+#line 21285 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
@@ -21276,7 +21290,7 @@ int main() {
_coshl _sinhl _tanhl; do echo "$x (0);"; done`
; return 0; }
EOF
-if { (eval echo configure:21280: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21294: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__long_double_trig_use=yes
else
@@ -21302,12 +21316,12 @@ fi
_coshl _sinhl _tanhl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:21306: checking for $ac_func" >&5
+echo "configure:21320: 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 <<EOF
-#line 21311 "configure"
+#line 21325 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -21330,7 +21344,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:21334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21348: \"$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
@@ -21358,7 +21372,7 @@ done
echo $ac_n "checking for _long double round functions""... $ac_c" 1>&6
-echo "configure:21362: checking for _long double round functions" >&5
+echo "configure:21376: 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
@@ -21372,14 +21386,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 21376 "configure"
+#line 21390 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
`for x in _ceill _floorl; do echo "$x (0);"; done`
; return 0; }
EOF
-if { (eval echo configure:21383: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21397: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func__long_double_round_use=yes
else
@@ -21403,12 +21417,12 @@ fi
for ac_func in _ceill _floorl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:21407: checking for $ac_func" >&5
+echo "configure:21421: 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 <<EOF
-#line 21412 "configure"
+#line 21426 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -21431,7 +21445,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:21435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21449: \"$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
@@ -21463,7 +21477,7 @@ done
echo $ac_n "checking for main in -lm""... $ac_c" 1>&6
-echo "configure:21467: checking for main in -lm" >&5
+echo "configure:21481: 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
@@ -21471,14 +21485,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 21475 "configure"
+#line 21489 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:21482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21496: \"$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
@@ -21508,12 +21522,12 @@ fi
for ac_func in nan copysignf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:21512: checking for $ac_func" >&5
+echo "configure:21526: 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 <<EOF
-#line 21517 "configure"
+#line 21531 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -21536,7 +21550,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:21540: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21554: \"$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
@@ -21565,12 +21579,12 @@ done
for ac_func in __signbit
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:21569: checking for $ac_func" >&5
+echo "configure:21583: 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 <<EOF
-#line 21574 "configure"
+#line 21588 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -21593,7 +21607,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:21597: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21611: \"$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
@@ -21621,12 +21635,12 @@ done
for ac_func in __signbitf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:21625: checking for $ac_func" >&5
+echo "configure:21639: 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 <<EOF
-#line 21630 "configure"
+#line 21644 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -21649,7 +21663,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:21653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21667: \"$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
@@ -21679,12 +21693,12 @@ done
for ac_func in __signbitl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:21683: checking for $ac_func" >&5
+echo "configure:21697: 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 <<EOF
-#line 21688 "configure"
+#line 21702 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -21707,7 +21721,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:21711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21725: \"$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
@@ -21739,16 +21753,16 @@ done
echo $ac_n "checking for mbstate_t""... $ac_c" 1>&6
-echo "configure:21743: checking for mbstate_t" >&5
+echo "configure:21757: checking for mbstate_t" >&5
cat > conftest.$ac_ext <<EOF
-#line 21745 "configure"
+#line 21759 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
mbstate_t teststate;
; return 0; }
EOF
-if { (eval echo configure:21752: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21766: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
have_mbstate_t=yes
else
@@ -21770,17 +21784,17 @@ EOF
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:21774: checking for $ac_hdr" >&5
+echo "configure:21788: 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
-#line 21779 "configure"
+#line 21793 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:21784: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:21798: \"$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*
@@ -21811,17 +21825,17 @@ done
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:21815: checking for $ac_hdr" >&5
+echo "configure:21829: 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
-#line 21820 "configure"
+#line 21834 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:21825: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:21839: \"$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*
@@ -21854,16 +21868,16 @@ done
test x"$enable_c_mbchar" != xno; then
echo $ac_n "checking for WCHAR_MIN and WCHAR_MAX""... $ac_c" 1>&6
-echo "configure:21858: checking for WCHAR_MIN and WCHAR_MAX" >&5
+echo "configure:21872: checking for WCHAR_MIN and WCHAR_MAX" >&5
cat > conftest.$ac_ext <<EOF
-#line 21860 "configure"
+#line 21874 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
int i = WCHAR_MIN; int j = WCHAR_MAX;
; return 0; }
EOF
-if { (eval echo configure:21867: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21881: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
has_wchar_minmax=yes
else
@@ -21876,9 +21890,9 @@ rm -f conftest*
echo "$ac_t""$has_wchar_minmax" 1>&6
echo $ac_n "checking for WEOF""... $ac_c" 1>&6
-echo "configure:21880: checking for WEOF" >&5
+echo "configure:21894: checking for WEOF" >&5
cat > conftest.$ac_ext <<EOF
-#line 21882 "configure"
+#line 21896 "configure"
#include "confdefs.h"
#include <wchar.h>
@@ -21887,7 +21901,7 @@ int main() {
wint_t i = WEOF;
; return 0; }
EOF
-if { (eval echo configure:21891: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
has_weof=yes
else
@@ -21903,12 +21917,12 @@ rm -f conftest*
for ac_func in wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:21907: checking for $ac_func" >&5
+echo "configure:21921: 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 <<EOF
-#line 21912 "configure"
+#line 21926 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -21931,7 +21945,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:21935: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21949: \"$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
@@ -21966,12 +21980,12 @@ done
wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:21970: checking for $ac_func" >&5
+echo "configure:21984: 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 <<EOF
-#line 21975 "configure"
+#line 21989 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -21994,7 +22008,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:21998: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22012: \"$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
@@ -22022,7 +22036,7 @@ done
echo $ac_n "checking for ISO C99 wchar_t support""... $ac_c" 1>&6
-echo "configure:22026: checking for ISO C99 wchar_t support" >&5
+echo "configure:22040: 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
@@ -22034,17 +22048,17 @@ echo "configure:22026: checking for ISO C99 wchar_t support" >&5
ac_safe=`echo "iconv.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for iconv.h""... $ac_c" 1>&6
-echo "configure:22038: checking for iconv.h" >&5
+echo "configure:22052: 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
-#line 22043 "configure"
+#line 22057 "configure"
#include "confdefs.h"
#include <iconv.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:22048: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:22062: \"$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*
@@ -22068,17 +22082,17 @@ fi
ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6
-echo "configure:22072: checking for langinfo.h" >&5
+echo "configure:22086: 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
-#line 22077 "configure"
+#line 22091 "configure"
#include "confdefs.h"
#include <langinfo.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:22082: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:22096: \"$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*
@@ -22102,7 +22116,7 @@ fi
echo $ac_n "checking for iconv in -liconv""... $ac_c" 1>&6
-echo "configure:22106: checking for iconv in -liconv" >&5
+echo "configure:22120: 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
@@ -22110,7 +22124,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-liconv $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 22114 "configure"
+#line 22128 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -22121,7 +22135,7 @@ int main() {
iconv()
; return 0; }
EOF
-if { (eval echo configure:22125: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22139: \"$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
@@ -22147,12 +22161,12 @@ fi
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:22151: checking for $ac_func" >&5
+echo "configure:22165: 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 <<EOF
-#line 22156 "configure"
+#line 22170 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -22175,7 +22189,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:22179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22193: \"$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
@@ -22205,7 +22219,7 @@ done
LIBS="$ac_save_LIBS"
echo $ac_n "checking for XPG2 wchar_t support""... $ac_c" 1>&6
-echo "configure:22209: checking for XPG2 wchar_t support" >&5
+echo "configure:22223: 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
@@ -22216,7 +22230,7 @@ echo "configure:22209: checking for XPG2 wchar_t support" >&5
echo "$ac_t""$ac_XPG2_wchar_t" 1>&6
echo $ac_n "checking for enabled wchar_t specializations""... $ac_c" 1>&6
-echo "configure:22220: checking for enabled wchar_t specializations" >&5
+echo "configure:22234: 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
@@ -22238,7 +22252,7 @@ EOF
echo $ac_n "checking for strtold declaration""... $ac_c" 1>&6
-echo "configure:22242: checking for strtold declaration" >&5
+echo "configure:22256: 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
@@ -22253,14 +22267,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 22257 "configure"
+#line 22271 "configure"
#include "confdefs.h"
#include <stdlib.h>
int main() {
strtold(0, 0);
; return 0; }
EOF
-if { (eval echo configure:22264: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:22278: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_strtold_use=yes
else
@@ -22286,12 +22300,12 @@ fi
for ac_func in strtold
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:22290: checking for $ac_func" >&5
+echo "configure:22304: 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 <<EOF
-#line 22295 "configure"
+#line 22309 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -22314,7 +22328,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:22318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22332: \"$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
@@ -22342,7 +22356,7 @@ done
echo $ac_n "checking for strtof declaration""... $ac_c" 1>&6
-echo "configure:22346: checking for strtof declaration" >&5
+echo "configure:22360: checking for strtof declaration" >&5
if test x${glibcpp_cv_func_strtof_use+set} != xset; then
if eval "test \"`echo '$''{'glibcpp_cv_func_strtof_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -22357,14 +22371,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 22361 "configure"
+#line 22375 "configure"
#include "confdefs.h"
#include <stdlib.h>
int main() {
strtof(0, 0);
; return 0; }
EOF
-if { (eval echo configure:22368: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:22382: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_strtof_use=yes
else
@@ -22390,12 +22404,12 @@ fi
for ac_func in strtof
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:22394: checking for $ac_func" >&5
+echo "configure:22408: 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 <<EOF
-#line 22399 "configure"
+#line 22413 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -22418,7 +22432,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:22422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22436: \"$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
@@ -22447,12 +22461,12 @@ done
for ac_func in drand48
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:22451: checking for $ac_func" >&5
+echo "configure:22465: 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 <<EOF
-#line 22456 "configure"
+#line 22470 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -22475,7 +22489,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:22479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22493: \"$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
@@ -22503,19 +22517,131 @@ done
CXXFLAGS="$ac_save_CXXFLAGS"
+ ac_test_CXXFLAGS="${CXXFLAGS+set}"
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
+
+
+ echo $ac_n "checking for isatty declaration""... $ac_c" 1>&6
+echo "configure:22527: checking for isatty declaration" >&5
+ if test x${glibcpp_cv_func_isatty_use+set} != xset; then
+ if eval "test \"`echo '$''{'glibcpp_cv_func_isatty_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 <<EOF
+#line 22542 "configure"
+#include "confdefs.h"
+#include <unistd.h>
+int main() {
+ isatty(0);
+; return 0; }
+EOF
+if { (eval echo configure:22549: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ glibcpp_cv_func_isatty_use=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ glibcpp_cv_func_isatty_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_isatty_use" 1>&6
+ if test x$glibcpp_cv_func_isatty_use = x"yes"; then
+ for ac_func in isatty
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:22575: 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 <<EOF
+#line 22580 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func(); below. */
+#include <assert.h>
+/* 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:22603: \"$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 <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+done
+
+ fi
+
+
+ CXXFLAGS="$ac_save_CXXFLAGS"
+
+
ac_safe=`echo "locale.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for locale.h""... $ac_c" 1>&6
-echo "configure:22509: checking for locale.h" >&5
+echo "configure:22635: 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
-#line 22514 "configure"
+#line 22640 "configure"
#include "confdefs.h"
#include <locale.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:22519: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:22645: \"$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*
@@ -22533,19 +22659,19 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:22537: checking for LC_MESSAGES" >&5
+echo "configure:22663: 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 <<EOF
-#line 22542 "configure"
+#line 22668 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:22549: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22675: \"$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
@@ -22572,7 +22698,7 @@ fi
cat > conftest.$ac_ext <<EOF
-#line 22576 "configure"
+#line 22702 "configure"
#include "confdefs.h"
#include <setjmp.h>
@@ -22581,7 +22707,7 @@ int main() {
sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);
; return 0; }
EOF
-if { (eval echo configure:22585: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:22711: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define HAVE_SIGSETJMP 1
@@ -22598,17 +22724,17 @@ rm -f conftest*
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:22602: checking for $ac_hdr" >&5
+echo "configure:22728: 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
-#line 22607 "configure"
+#line 22733 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:22612: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:22738: \"$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*
@@ -22637,12 +22763,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:22641: checking for $ac_func" >&5
+echo "configure:22767: 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 <<EOF
-#line 22646 "configure"
+#line 22772 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -22665,7 +22791,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:22669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22795: \"$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
@@ -22690,7 +22816,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:22694: checking for working mmap" >&5
+echo "configure:22820: 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
@@ -22698,7 +22824,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 22702 "configure"
+#line 22828 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -22838,7 +22964,7 @@ main()
}
EOF
-if { (eval echo configure:22842: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:22968: \"$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
@@ -22869,17 +22995,17 @@ fi
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:22873: checking for $ac_hdr" >&5
+echo "configure:22999: 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
-#line 22878 "configure"
+#line 23004 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:22883: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:23009: \"$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*
@@ -22912,7 +23038,7 @@ done
# Can't do these in a loop, else the resulting syntax is wrong.
cat > conftest.$ac_ext <<EOF
-#line 22916 "configure"
+#line 23042 "configure"
#include "confdefs.h"
#include <unistd.h>
#include <sys/time.h>
@@ -22922,7 +23048,7 @@ int main() {
int f = RLIMIT_DATA ;
; return 0; }
EOF
-if { (eval echo configure:22926: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:23052: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_mresult=1
else
@@ -22939,7 +23065,7 @@ EOF
cat > conftest.$ac_ext <<EOF
-#line 22943 "configure"
+#line 23069 "configure"
#include "confdefs.h"
#include <unistd.h>
#include <sys/time.h>
@@ -22949,7 +23075,7 @@ int main() {
int f = RLIMIT_RSS ;
; return 0; }
EOF
-if { (eval echo configure:22953: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:23079: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_mresult=1
else
@@ -22966,7 +23092,7 @@ EOF
cat > conftest.$ac_ext <<EOF
-#line 22970 "configure"
+#line 23096 "configure"
#include "confdefs.h"
#include <unistd.h>
#include <sys/time.h>
@@ -22976,7 +23102,7 @@ int main() {
int f = RLIMIT_VMEM ;
; return 0; }
EOF
-if { (eval echo configure:22980: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:23106: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_mresult=1
else
@@ -22993,7 +23119,7 @@ EOF
cat > conftest.$ac_ext <<EOF
-#line 22997 "configure"
+#line 23123 "configure"
#include "confdefs.h"
#include <unistd.h>
#include <sys/time.h>
@@ -23003,7 +23129,7 @@ int main() {
int f = RLIMIT_AS ;
; return 0; }
EOF
-if { (eval echo configure:23007: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:23133: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_mresult=1
else
@@ -23025,7 +23151,7 @@ EOF
else
cat > conftest.$ac_ext <<EOF
-#line 23029 "configure"
+#line 23155 "configure"
#include "confdefs.h"
#include <unistd.h>
#include <sys/time.h>
@@ -23035,7 +23161,7 @@ int main() {
struct rlimit r; setrlimit(0, &r);
; return 0; }
EOF
-if { (eval echo configure:23039: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:23165: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_setrlimit=yes
else
@@ -23051,7 +23177,7 @@ fi
fi
echo $ac_n "checking for testsuite memory limit support""... $ac_c" 1>&6
-echo "configure:23055: checking for testsuite memory limit support" >&5
+echo "configure:23181: checking for testsuite memory limit support" >&5
if test $setrlimit_have_headers = yes && test $ac_setrlimit = yes; then
ac_mem_limits=yes
cat >> confdefs.h <<\EOF
@@ -23067,7 +23193,7 @@ EOF
# Look for setenv, so that extended locale tests can be performed.
echo $ac_n "checking for setenv declaration""... $ac_c" 1>&6
-echo "configure:23071: checking for setenv declaration" >&5
+echo "configure:23197: checking for setenv declaration" >&5
if test x${glibcpp_cv_func_setenv_use+set} != xset; then
if eval "test \"`echo '$''{'glibcpp_cv_func_setenv_use'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -23082,14 +23208,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 23086 "configure"
+#line 23212 "configure"
#include "confdefs.h"
#include <stdlib.h>
int main() {
setenv(0, 0, 0);
; return 0; }
EOF
-if { (eval echo configure:23093: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:23219: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_cv_func_setenv_use=yes
else
@@ -23115,12 +23241,12 @@ fi
for ac_func in setenv
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:23119: checking for $ac_func" >&5
+echo "configure:23245: 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 <<EOF
-#line 23124 "configure"
+#line 23250 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -23143,7 +23269,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:23147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:23273: \"$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
@@ -23214,18 +23340,18 @@ fi
# Check to see if libgcc_s exists, indicating that shared libgcc is possible.
if test $enable_symvers != no; then
echo $ac_n "checking for shared libgcc""... $ac_c" 1>&6
-echo "configure:23218: checking for shared libgcc" >&5
+echo "configure:23344: checking for shared libgcc" >&5
ac_save_CFLAGS="$CFLAGS"
CFLAGS=' -lgcc_s'
cat > conftest.$ac_ext <<EOF
-#line 23222 "configure"
+#line 23348 "configure"
#include "confdefs.h"
int main() {
return 0
; return 0; }
EOF
-if { (eval echo configure:23229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:23355: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
glibcpp_shared_libgcc=yes
else
@@ -23260,14 +23386,14 @@ if test $enable_symvers = yes ; then
echo 'FOO { global: f[a-z]o; local: *; };' > conftest.map
cat > conftest.$ac_ext <<EOF
-#line 23264 "configure"
+#line 23390 "configure"
#include "confdefs.h"
int foo;
int main() {
; return 0; }
EOF
-if { (eval echo configure:23271: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:23397: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
enable_symvers=gnu
else
@@ -23313,13 +23439,13 @@ else
GLIBCPP_BUILD_VERSIONED_SHLIB_FALSE=
fi
echo $ac_n "checking versioning on shared library symbols""... $ac_c" 1>&6
-echo "configure:23317: checking versioning on shared library symbols" >&5
+echo "configure:23443: checking versioning on shared library symbols" >&5
echo "$ac_t""$enable_symvers" 1>&6
# Propagate the target-specific source directories through the build chain.
# (Nothing currently uses cpu_include_dir directly; only ATOMICITYH
-# uses it, and they only get used here.)
+# uses it, and it only gets used in this file.)
OS_INC_SRCDIR=config/${os_include_dir}
ATOMICITY_INC_SRCDIR=config/${ATOMICITYH}
@@ -23400,7 +23526,7 @@ glibcpp_prefixdir=${prefix}
# Process the option --with-gxx-include-dir=<path to include-files directory>
echo $ac_n "checking for --with-gxx-include-dir""... $ac_c" 1>&6
-echo "configure:23404: checking for --with-gxx-include-dir" >&5
+echo "configure:23530: 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"
@@ -23424,7 +23550,7 @@ echo "$ac_t""$gxx_include_dir" 1>&6
# Process the option "--enable-version-specific-runtime-libs"
echo $ac_n "checking for --enable-version-specific-runtime-libs""... $ac_c" 1>&6
-echo "configure:23428: checking for --enable-version-specific-runtime-libs" >&5
+echo "configure:23554: 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"
@@ -23470,7 +23596,7 @@ if test x"$glibcpp_toolexecdir" = x"no"; then
fi
echo $ac_n "checking for install location""... $ac_c" 1>&6
-echo "configure:23474: checking for install location" >&5
+echo "configure:23600: checking for install location" >&5
echo "$ac_t""$gxx_include_dir" 1>&6
diff --git a/libstdc++-v3/configure.in b/libstdc++-v3/configure.in
index 4be7d9db261..c3ff82b8f16 100644
--- a/libstdc++-v3/configure.in
+++ b/libstdc++-v3/configure.in
@@ -70,6 +70,19 @@ GLIBCPP_ENABLE_CONCEPT_CHECKS
# Check for headers necessary for libsupc++ using dyn-string.c/cxa_demangle.c
AC_CHECK_HEADERS(string.h stdlib.h)
+# No surprises, no surprises...
+if test $ATOMICITYH = cpu/generic ; then
+ AC_MSG_WARN([No native atomic operations are provided yet for this platform.])
+ if test $target_thread_file = single; then
+ AC_MSG_WARN([They cannot be faked when thread support is disabled.])
+ AC_MSG_WARN([Thread-safety of certain classes is not guaranteed.])
+ else
+ AC_MSG_WARN([They will be faked using a mutex.])
+ AC_MSG_WARN([Performance of certain classes will degrade as a result.])
+ fi
+fi
+
+
if test -n "$with_cross_host" || test x"$build" != x"$host"; then
# We are being configured with some form of cross compiler.
@@ -397,6 +410,7 @@ else
GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
GLIBCPP_CHECK_WCHAR_T_SUPPORT
GLIBCPP_CHECK_STDLIB_SUPPORT
+ GLIBCPP_CHECK_UNISTD_SUPPORT
AC_LC_MESSAGES
AC_TRY_COMPILE([
@@ -416,7 +430,7 @@ GLIBCPP_ENABLE_SYMVERS([yes])
# Propagate the target-specific source directories through the build chain.
# (Nothing currently uses cpu_include_dir directly; only ATOMICITYH
-# uses it, and they only get used here.)
+# uses it, and it only gets used in this file.)
OS_INC_SRCDIR=config/${os_include_dir}
ATOMICITY_INC_SRCDIR=config/${ATOMICITYH}
AC_SUBST(OS_INC_SRCDIR)
diff --git a/libstdc++-v3/configure.target b/libstdc++-v3/configure.target
index fa65e6e0309..a186659daf3 100644
--- a/libstdc++-v3/configure.target
+++ b/libstdc++-v3/configure.target
@@ -18,7 +18,7 @@
#
# cpu_include_dir CPU-specific directory, defaults to cpu/generic
# if cpu/target_cpu doesn't exist. This is
-# used to set the next two:
+# used to set ATOMICITYH.
#
# os_include_dir OS-specific directory, defaults to os/generic.
#
diff --git a/libstdc++-v3/docs/doxygen/TODO b/libstdc++-v3/docs/doxygen/TODO
index 50ddfe7f2d6..0b6e3d6c00b 100644
--- a/libstdc++-v3/docs/doxygen/TODO
+++ b/libstdc++-v3/docs/doxygen/TODO
@@ -31,7 +31,11 @@ c24 stl_iterator.h (__normal_iterator, other small TODO bits)
stream iterators
c25 stl_algo.h (lots of stuff)
c26 <complex>, <valarray>, stl_numeric.h[26.4], Note A
-c27 Untouched
+c27 ios_base callbacks and local storage
+ basic_ios::copyfmt()
+ std_streambuf.h's __copy_streambufs()
+ " " _M_* protected memfns (data has been done)
+ fstream and sstream protected members
backward/* Not scanned by doxygen. Should it be? Doubtful.
diff --git a/libstdc++-v3/docs/doxygen/run_doxygen b/libstdc++-v3/docs/doxygen/run_doxygen
index d8ca2a91428..6a0806ce410 100644
--- a/libstdc++-v3/docs/doxygen/run_doxygen
+++ b/libstdc++-v3/docs/doxygen/run_doxygen
@@ -208,7 +208,7 @@ g++ ${srcdir}/docs/doxygen/stdheader.cc -o ./stdheader
problematic=`egrep -l '#include <.*_.*>' [a-z]*.3`
for f in $problematic; do
# this is also slow, but safe and easy to debug
- oldh=`sed -n '/#include </s/.*<\(.*\)>.*/\1/p' $f`
+ oldh=`sed -n '/fC#include </s/.*<\(.*\)>.*/\1/p' $f`
newh=`echo $oldh | ./stdheader`
sed "s=${oldh}=${newh}=" $f > TEMP
mv TEMP $f
diff --git a/libstdc++-v3/docs/doxygen/stdheader.cc b/libstdc++-v3/docs/doxygen/stdheader.cc
index d705d0169c8..a792592fe2b 100644
--- a/libstdc++-v3/docs/doxygen/stdheader.cc
+++ b/libstdc++-v3/docs/doxygen/stdheader.cc
@@ -111,6 +111,13 @@ void do_word (std::string const& longheader)
{
std::string::size_type start = 0;
+ // if it doesn't contain a "." then it's already a std header
+ if (longheader.find(".") == std::string::npos)
+ {
+ std::cout << longheader << '\n';
+ return;
+ }
+
if (longheader.substr(start,5) == "bits/") start += 5;
if ((longheader.substr(start,4) == "stl_") ||
(longheader.substr(start,4) == "std_"))
diff --git a/libstdc++-v3/docs/doxygen/style.css b/libstdc++-v3/docs/doxygen/style.css
index 5e430053dff..e527a57c4f2 100644
--- a/libstdc++-v3/docs/doxygen/style.css
+++ b/libstdc++-v3/docs/doxygen/style.css
@@ -1,4 +1,5 @@
H1 { text-align: center; }
+CAPTION { font-weight: bold }
A.qindex {}
A.qindexRef {}
A.el { text-decoration: none; font-weight: bold }
@@ -10,15 +11,39 @@ DL.el { margin-left: -1cm }
DIV.fragment { width: 100%; border: none; background-color: #eeeeee }
DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
TD.md { background-color: #f2f2ff; font-weight: bold; }
-TD.mdname1 { background-color: #f2f2ff; font-weight: bold; font-style: italic; }
-TD.mdname { background-color: #f2f2ff; font-weight: bold; font-style: italic; width: 600px; }
+TD.mdname1 { background-color: #f2f2ff; font-weight: bold; color: #602020; }
+TD.mdname { background-color: #f2f2ff; font-weight: bold; color: #602020; width: 600px; }
DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold }
DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }
-FONT.keyword { color: #008000 }
-FONT.keywordtype { color: #604020 }
-FONT.keywordflow { color: #e08000 }
-FONT.comment { color: #800000 }
-FONT.preprocessor { color: #806020 }
-FONT.stringliteral { color: #002080 }
-FONT.charliteral { color: #008080 }
-.smallertext { font-size: smaller }
+BODY { background: white }
+TD.indexkey {
+ background-color: #eeeeff;
+ font-weight: bold;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px
+}
+TD.indexvalue {
+ background-color: #eeeeff;
+ font-style: italic;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px
+}
+span.keyword { color: #008000 }
+span.keywordtype { color: #604020 }
+span.keywordflow { color: #e08000 }
+span.comment { color: #800000 }
+span.preprocessor { color: #806020 }
+span.stringliteral { color: #002080 }
+span.charliteral { color: #008080 }
diff --git a/libstdc++-v3/docs/doxygen/user.cfg.in b/libstdc++-v3/docs/doxygen/user.cfg.in
index dff2f3f9d11..966d6e855bb 100644
--- a/libstdc++-v3/docs/doxygen/user.cfg.in
+++ b/libstdc++-v3/docs/doxygen/user.cfg.in
@@ -1,4 +1,4 @@
-# Doxyfile 1.2.12
+# Doxyfile 1.2.18
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project
@@ -43,9 +43,11 @@ OUTPUT_DIRECTORY = @outdir@
# documentation generated by doxygen is written. Doxygen will use this
# information to generate all constant output in the proper language.
# The default language is English, other supported languages are:
-# Brazilian, Chinese, Croatian, Czech, Danish, Dutch, Finnish, French,
-# German, Hungarian, Italian, Japanese, Korean, Norwegian, Polish,
-# Portuguese, Romanian, Russian, Slovak, Slovene, Spanish and Swedish.
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch,
+# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en
+# (Japanese with english messages), Korean, Norwegian, Polish, Portuguese,
+# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish and Ukrainian.
+
OUTPUT_LANGUAGE = English
@@ -66,6 +68,12 @@ EXTRACT_PRIVATE = YES
EXTRACT_STATIC = YES
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = NO
+
# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
# undocumented members of documented classes, files or namespaces.
# If set to NO (the default) these members will be included in the
@@ -81,6 +89,13 @@ HIDE_UNDOC_MEMBERS = YES
HIDE_UNDOC_CLASSES = YES
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
# include brief member descriptions after the members that are listed in
# the file and class documentation (similar to JavaDoc).
@@ -101,6 +116,14 @@ REPEAT_BRIEF = YES
ALWAYS_DETAILED_SEC = YES
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited
+# members of a class in the documentation of that class as if those members were
+# ordinary class members. Constructors, destructors and assignment operators of
+# the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+# pedwards -- this is useful, but ch27 gets huge
+
# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
# path before files name in the file list and in the header files. If set
# to NO the shortest path that makes the file name unique will be used.
@@ -167,6 +190,21 @@ SHOW_INCLUDE_FILES = YES
JAVADOC_AUTOBRIEF = NO
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = YES
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member
+# documentation.
+
+DETAILS_AT_TOP = NO
+
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
# member inherits the documentation from any documented member that it
# reimplements.
@@ -183,7 +221,7 @@ INLINE_INFO = YES
# alphabetically by member name. If set to NO the members will appear in
# declaration order.
-SORT_MEMBER_DOCS = NO
+SORT_MEMBER_DOCS = YES
# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
# tag is set to YES, then doxygen will reuse the documentation of the first
@@ -215,6 +253,12 @@ GENERATE_TESTLIST = NO
GENERATE_BUGLIST = YES
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
# This tag can be used to specify a number of aliases that acts
# as commands in the documentation. An alias has the form "name=value".
# For example adding "sideeffect=\par Side Effects:\n" will allow you to
@@ -222,7 +266,8 @@ GENERATE_BUGLIST = YES
# will result in a user defined paragraph with heading "Side Effects:".
# You can put \n's in the value part of an alias to insert newlines.
-ALIASES = "doctodo=@todo\nDoc me! See docs/doxygen/TODO and http://gcc.gnu.org/ml/libstdc++/2002-02/msg00003.html for more."
+ALIASES = "doctodo=@todo\nDoc me! See docs/doxygen/TODO and http://gcc.gnu.org/ml/libstdc++/2002-02/msg00003.html for more." \
+"isiosfwd=One of the @link s27_2_iosfwd I/O forward declarations @endlink"
# The ENABLED_SECTIONS tag can be used to enable conditional
# documentation sections, marked by \if sectionname ... \endif.
@@ -237,7 +282,7 @@ ENABLED_SECTIONS = @enabled_sections@
# documentation can be controlled using \showinitializer or \hideinitializer
# command in the documentation regardless of this setting.
-MAX_INITIALIZER_LINES = 30
+MAX_INITIALIZER_LINES = 0
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
# only. Doxygen will then generate output that is more tailored for C.
@@ -246,6 +291,13 @@ MAX_INITIALIZER_LINES = 30
OPTIMIZE_OUTPUT_FOR_C = NO
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources
+# only. Doxygen will then generate output that is more tailored for Java.
+# For instance namespaces will be presented as packages, qualified scopes
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
# at the bottom of the documentation of classes and structs. If set to YES the
# list will mention the files that were used to generate the documentation.
@@ -325,12 +377,18 @@ RECURSIVE = YES
EXCLUDE = Makefile CVS
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories
+# that are symbolic links (a Unix filesystem feature) are excluded from the input.
+
+EXCLUDE_SYMLINKS = NO
+
# If the value of the INPUT tag contains directories, you can use the
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
# certain files from those directories.
EXCLUDE_PATTERNS = CVS \
- stamp-*
+ stamp-* \
+ Makefile
# The EXAMPLE_PATH tag can be used to specify one or more files or
# directories that contain example code fragments that are included (see
@@ -369,7 +427,7 @@ INPUT_FILTER =
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse.
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
FILTER_SOURCE_FILES = NO
@@ -437,6 +495,12 @@ GENERATE_HTML = @do_html@
HTML_OUTPUT = @html_output_dir@
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
# The HTML_HEADER tag can be used to specify a personal HTML header for
# each generated HTML page. If it is left blank doxygen will generate a
# standard header.
@@ -469,6 +533,20 @@ HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output dir.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non empty doxygen will try to run
+# the html help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
# controls if a separate .chi index file is generated (YES) or that
# it should be included in the master .chm file (NO).
@@ -528,6 +606,17 @@ GENERATE_LATEX = NO
LATEX_OUTPUT = latex
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to
+# be invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
# LaTeX documents. This may be useful for small projects and may help to
# save some trees in general.
@@ -654,6 +743,30 @@ MAN_LINKS = NO
GENERATE_XML = NO
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
@@ -707,6 +820,8 @@ INCLUDE_FILE_PATTERNS =
### completely broken, and the presence of the macros confuses the parser.
PREDEFINED = _GLIBCPP_DEPRECATED \
+ _GLIBCPP_USE_WCHAR_T \
+ _GLIBCPP_USE_LONG_LONG \
__glibcpp_class_requires="//" \
__glibcpp_class_requires2="//" \
__glibcpp_class_requires3="//" \
@@ -745,6 +860,12 @@ GENERATE_TAGFILE =
ALLEXTERNALS = YES
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
# The PERL_PATH should be the absolute path and name of the perl script
# interpreter (i.e. the result of `which perl').
@@ -762,6 +883,12 @@ PERL_PATH = /usr/bin/perl
CLASS_DIAGRAMS = YES
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = YES
+
# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
# available from the path. This tool is part of Graphviz, a graph visualization
# toolkit from AT&T and Lucent Bell Labs. The other options in this section
@@ -788,12 +915,6 @@ COLLABORATION_GRAPH = YES
TEMPLATE_RELATIONS = YES
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS = YES
-
# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
# tags are set to YES then doxygen will generate a graph for each documented
# file showing the direct and indirect include dependencies of the file with
@@ -813,6 +934,12 @@ INCLUDED_BY_GRAPH = YES
GRAPHICAL_HIERARCHY = YES
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT = png
+
# The tag DOT_PATH can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found on the path.
diff --git a/libstdc++-v3/docs/html/17_intro/howto.html b/libstdc++-v3/docs/html/17_intro/howto.html
index 137829df6f8..9d10becfad4 100644
--- a/libstdc++-v3/docs/html/17_intro/howto.html
+++ b/libstdc++-v3/docs/html/17_intro/howto.html
@@ -242,7 +242,8 @@
here would defeat the purpose. :-)
</p>
<p><strong>[21.1.3.1]/5</strong> I don't really know about the mbstate_t
- stuff... see the chapter 22 notes for what does exist.
+ stuff... see the <a href="../22_locale/howto.html">chapter 22 notes</a>
+ for what does exist.
</p>
<p><strong>[22.*]</strong> Anything and everything we have on locale
implemenation will be described
@@ -260,8 +261,9 @@
on the --enable-libio choice: for stdio, if the written data is
already in the stdio buffer, the data may be completely safe!
</p>
- <p><strong>I/O sentry ctor/dtor</strong> They can perform additional work
- than the minimum required. I don't think we're currently taking
+ <p><strong>[27.6.1.1.2]</strong>,<br />
+ <strong>[27.6.2.3]</strong> The I/O sentry ctor and dtor can perform
+ additional work than the minimum required. We are not currently taking
advantage of this yet.
</p>
<p><strong>[27.7.1.3]/16</strong>,<br />
diff --git a/libstdc++-v3/docs/html/20_util/howto.html b/libstdc++-v3/docs/html/20_util/howto.html
index 28021d20635..9952849c0fb 100644
--- a/libstdc++-v3/docs/html/20_util/howto.html
+++ b/libstdc++-v3/docs/html/20_util/howto.html
@@ -172,7 +172,7 @@
handle member function templates:
</p>
<pre>
- template &lt;class U, class V&gt; pain (const pair&lt;U,V&gt;&amp; p);
+ template &lt;class U, class V&gt; pair (const pair&lt;U,V&gt;&amp; p);
</pre>
<p>The compiler will convert as necessary from U to T1 and from
V to T2 in order to perform the respective initializations.
diff --git a/libstdc++-v3/docs/html/21_strings/howto.html b/libstdc++-v3/docs/html/21_strings/howto.html
index cba9c3f21d4..d862467b2a9 100644
--- a/libstdc++-v3/docs/html/21_strings/howto.html
+++ b/libstdc++-v3/docs/html/21_strings/howto.html
@@ -278,19 +278,32 @@
#include &lt;algorithm&gt;
#include &lt;cctype&gt; // old &lt;ctype.h&gt;
- std::string s ("Some Kind Of Initial Input Goes Here");
+ struct ToLower
+ {
+ char operator() (char c) const { return std::tolower(c); }
+ };
+
+ struct ToUpper
+ {
+ char operator() (char c) const { return std::toupper(c); }
+ };
- // Change everything into upper case
- std::transform (s.begin(), s.end(), s.begin(), toupper);
+ int main()
+ {
+ std::string s ("Some Kind Of Initial Input Goes Here");
+
+ // Change everything into upper case
+ std::transform (s.begin(), s.end(), s.begin(), ToUpper());
- // Change everything into lower case
- std::transform (s.begin(), s.end(), s.begin(), tolower);
+ // Change everything into lower case
+ std::transform (s.begin(), s.end(), s.begin(), ToLower());
- // Change everything back into upper case, but store the
- // result in a different string
- std::string capital_s;
- capital_s.reserve(s.size());
- std::transform (s.begin(), s.end(), capital_s.begin(), tolower); </pre>
+ // Change everything back into upper case, but store the
+ // result in a different string
+ std::string capital_s;
+ capital_s.resize(s.size());
+ std::transform (s.begin(), s.end(), capital_s.begin(), ToUpper());
+ } </pre>
<p><span class="larger"><strong>Note</strong></span> that these calls all
involve the global C locale through the use of the C functions
<code>toupper/tolower</code>. This is absolutely guaranteed to work --
@@ -301,19 +314,28 @@
So, if all your input forevermore consists of only those 96
characters (hahahahahaha), then you're done.
</p>
- <p>At minimum, you can write short wrappers like
+ <p><span class="larger"><strong>Note</strong></span> that the
+ <code>ToUpper</code> and <code>ToLower</code> function objects
+ are needed because <code>toupper</code> and <code>tolower</code>
+ are overloaded names (declared in <code>&lt;cctype&gt;</code> and
+ <code>&lt;locale&gt;</code>) so the template-arguments for
+ <code>transform&lt;&gt;</code> cannot be deduced, as explained in
+ <a href="http://gcc.gnu.org/ml/libstdc++/2002-11/msg00180.html">this
+ message</a>. <!-- section 14.8.2.4 clause 16 in ISO 14882:1998
+ if you're into that sort of thing -->
+ At minimum, you can write short wrappers like
</p>
<pre>
char toLower (char c)
{
- return tolower(static_cast&lt;unsigned char&gt;(c));
+ return std::tolower(c);
} </pre>
<p>The correct method is to use a facet for a particular locale
and call its conversion functions. These are discussed more in
Chapter 22; the specific part is
- <a href="../22_locale/howto.html#5">here</a>, which shows the
- final version of this code. (Thanks to James Kanze for assistance
- and suggestions on all of this.)
+ <a href="../22_locale/howto.html#7">Correct Transformations</a>,
+ which shows the final version of this code. (Thanks to James Kanze
+ for assistance and suggestions on all of this.)
</p>
<p>Another common operation is trimming off excess whitespace. Much
like transformations, this task is trivial with the use of string's
diff --git a/libstdc++-v3/docs/html/22_locale/howto.html b/libstdc++-v3/docs/html/22_locale/howto.html
index bd2526ddb4c..d6a340c9e54 100644
--- a/libstdc++-v3/docs/html/22_locale/howto.html
+++ b/libstdc++-v3/docs/html/22_locale/howto.html
@@ -168,18 +168,18 @@
#include &lt;algorithm&gt;
#include &lt;cctype&gt; // old &lt;ctype.h&gt;
- struct Toupper
+ struct ToUpper
{
- Toupper(std::locale const&amp; l) : loc(l) {;}
- char operator() (char c) { return std::toupper(c,loc); }
+ ToUpper(std::locale const&amp; l) : loc(l) {;}
+ char operator() (char c) const { return std::toupper(c,loc); }
private:
std::locale const&amp; loc;
};
- struct Tolower
+ struct ToLower
{
- Tolower(std::locale const&amp; l) : loc(l) {;}
- char operator() (char c) { return std::tolower(c,loc); }
+ ToLower(std::locale const&amp; l) : loc(l) {;}
+ char operator() (char c) const { return std::tolower(c,loc); }
private:
std::locale const&amp; loc;
};
@@ -187,9 +187,9 @@
int main ()
{
std::string s("Some Kind Of Initial Input Goes Here");
- std::locale loc_c("C");
- Toupper up(loc_c);
- Tolower down(loc_c);
+ std::locale loc_c("C");
+ ToUpper up(loc_c);
+ ToLower down(loc_c);
// Change everything into upper case.
std::transform(s.begin(), s.end(), s.begin(), up);
@@ -202,6 +202,10 @@
std::string capital_s;
std::transform(s.begin(), s.end(), std::back_inserter(capital_s), up);
}</pre>
+ <p>The <code>ToUpper</code> and <code>ToLower</code> structs can be
+ generalized for other character types by making <code>operator()</code>
+ a member function template.
+ </p>
<p>The final version of the code uses <code>bind2nd</code> to eliminate
the wrapper structs, but the resulting code is tricky. I have not
shown it here because no compilers currently available to me will
diff --git a/libstdc++-v3/docs/html/22_locale/locale.html b/libstdc++-v3/docs/html/22_locale/locale.html
index 6816204df8f..8470a502cf2 100644
--- a/libstdc++-v3/docs/html/22_locale/locale.html
+++ b/libstdc++-v3/docs/html/22_locale/locale.html
@@ -3,6 +3,7 @@
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="AUTHOR" content="bkoz@redhat.com (Benjamin Kosnik)" />
@@ -80,7 +81,7 @@ class id
<p>
Provides an index for looking up specific facets.
-<p>
+</p>
<h2>
diff --git a/libstdc++-v3/docs/html/22_locale/messages.html b/libstdc++-v3/docs/html/22_locale/messages.html
index 68d387612ff..b57f4541183 100644
--- a/libstdc++-v3/docs/html/22_locale/messages.html
+++ b/libstdc++-v3/docs/html/22_locale/messages.html
@@ -3,6 +3,7 @@
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="AUTHOR" content="bkoz@redhat.com (Benjamin Kosnik)" />
diff --git a/libstdc++-v3/docs/html/23_containers/howto.html b/libstdc++-v3/docs/html/23_containers/howto.html
index 008017a8827..27314fbafc3 100644
--- a/libstdc++-v3/docs/html/23_containers/howto.html
+++ b/libstdc++-v3/docs/html/23_containers/howto.html
@@ -3,6 +3,7 @@
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="AUTHOR" content="pme@gcc.gnu.org (Phil Edwards)" />
diff --git a/libstdc++-v3/docs/html/24_iterators/howto.html b/libstdc++-v3/docs/html/24_iterators/howto.html
index d8df4420444..c22df9acf42 100644
--- a/libstdc++-v3/docs/html/24_iterators/howto.html
+++ b/libstdc++-v3/docs/html/24_iterators/howto.html
@@ -3,6 +3,7 @@
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="AUTHOR" content="pme@gcc.gnu.org (Phil Edwards)" />
diff --git a/libstdc++-v3/docs/html/25_algorithms/howto.html b/libstdc++-v3/docs/html/25_algorithms/howto.html
index 19c362454c1..9b2f24812b8 100644
--- a/libstdc++-v3/docs/html/25_algorithms/howto.html
+++ b/libstdc++-v3/docs/html/25_algorithms/howto.html
@@ -3,6 +3,7 @@
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="AUTHOR" content="pme@gcc.gnu.org (Phil Edwards)" />
diff --git a/libstdc++-v3/docs/html/26_numerics/howto.html b/libstdc++-v3/docs/html/26_numerics/howto.html
index 6074e358291..ef0b36a8eac 100644
--- a/libstdc++-v3/docs/html/26_numerics/howto.html
+++ b/libstdc++-v3/docs/html/26_numerics/howto.html
@@ -3,6 +3,7 @@
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="AUTHOR" content="pme@gcc.gnu.org (Phil Edwards)" />
diff --git a/libstdc++-v3/docs/html/27_io/howto.html b/libstdc++-v3/docs/html/27_io/howto.html
index 73187d3f1c2..d7a984ec3d5 100644
--- a/libstdc++-v3/docs/html/27_io/howto.html
+++ b/libstdc++-v3/docs/html/27_io/howto.html
@@ -3,6 +3,7 @@
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="AUTHOR" content="pme@gcc.gnu.org (Phil Edwards)" />
@@ -33,6 +34,7 @@
<li><a href="#7">More on binary I/O</a></li>
<li><a href="#8">Pathetic performance? Ditch C.</a></li>
<li><a href="#9">Threads and I/O</a></li>
+ <li><a href="#10">Which header?</a></li>
</ul>
<hr />
@@ -557,6 +559,138 @@
&quot;interesting&quot; problems.
</p>
+<hr />
+<h2><a name="10">Which header?</a></h2>
+ <p>To minimize the time you have to wait on the compiler, it's good to
+ only include the headers you really need. Many people simply include
+ &lt;iostream&gt; when they don't need to -- and that can <em>penalize
+ your runtime as well.</em> Here are some tips on which header to use
+ for which situations, starting with the simplest.
+ </p>
+ <p><strong>&lt;iosfwd&gt;</strong> should be included whenever you simply
+ need the <em>name</em> of an I/O-related class, such as
+ &quot;ofstream&quot; or &quot;basic_streambuf&quot;. Like the name
+ implies, these are forward declarations. (A word to all you fellow
+ old school programmers: trying to forward declare classes like
+ &quot;class istream;&quot; won't work. Look in the iosfwd header if
+ you'd like to know why.) For example,
+ </p>
+ <pre>
+ #include &lt;iosfwd&gt;
+
+ class MyClass
+ {
+ ....
+ std::ifstream input_file;
+ };
+
+ extern std::ostream&amp; operator&lt;&lt; (std::ostream&amp;, MyClass&amp;);
+ </pre>
+ <p><strong>&lt;ios&gt;</strong> declares the base classes for the entire
+ I/O stream hierarchy, std::ios_base and std::basic_ios&lt;charT&gt;, the
+ counting types std::streamoff and std::streamsize, the file
+ positioning type std::fpos, and the various manipulators like
+ std::hex, std::fixed, std::noshowbase, and so forth.
+ </p>
+ <p>The ios_base class is what holds the format flags, the state flags,
+ and the functions which change them (setf(), width(), precision(),
+ etc). You can also store extra data and register callback functions
+ through ios_base, but that has been historically underused. Anything
+ which doesn't depend on the type of characters stored is consolidated
+ here.
+ </p>
+ <p>The template class basic_ios is the highest template class in the
+ hierarchy; it is the first one depending on the character type, and
+ holds all general state associated with that type: the pointer to the
+ polymorphic stream buffer, the facet information, etc.
+ </p>
+ <p><strong>&lt;streambuf&gt;</strong> declares the template class
+ basic_streambuf, and two standard instantiations, streambuf and
+ wstreambuf. If you need to work with the vastly useful and capable
+ stream buffer classes, e.g., to create a new form of storage
+ transport, this header is the one to include.
+ </p>
+ <p><strong>&lt;istream&gt;</strong>/<strong>&lt;ostream&gt;</strong> are
+ the headers to include when you are using the &gt;&gt;/&lt;&lt;
+ interface, or any of the other abstract stream formatting functions.
+ For example,
+ </p>
+ <pre>
+ #include &lt;istream&gt;
+
+ std::ostream&amp; operator&lt;&lt; (std::ostream&amp; os, MyClass&amp; c)
+ {
+ return os &lt;&lt; c.data1() &lt;&lt; c.data2();
+ }
+ </pre>
+ <p>The std::istream and std::ostream classes are the abstract parents of
+ the various concrete implementations. If you are only using the
+ interfaces, then you only need to use the appropriate interface header.
+ </p>
+ <p><strong>&lt;iomanip&gt;</strong> provides &quot;extractors and inserters
+ that alter information maintained by class ios_base and its dervied
+ classes,&quot; such as std::setprecision and std::setw. If you need
+ to write expressions like <code>os &lt;&lt; setw(3);</code> or
+ <code>is &gt;&gt; setbase(8);</code>, you must include &lt;iomanip&gt;.
+ </p>
+ <p><strong>&lt;sstream&gt;</strong>/<strong>&lt;fstream&gt;</strong>
+ declare the six stringstream and fstream classes. As they are the
+ standard concrete descendants of istream and ostream, you will already
+ know about them.
+ </p>
+ <p>Finally, <strong>&lt;iostream&gt;</strong> provides the eight standard
+ global objects (cin, cout, etc). To do this correctly, this header
+ also provides the contents of the &lt;istream&gt; and &lt;ostream&gt;
+ headers, but nothing else. The contents of this header look like
+ </p>
+ <pre>
+ #include &lt;ostream&gt;
+ #include &lt;istream&gt;
+
+ namespace std
+ {
+ extern istream cin;
+ extern ostream cout;
+ ....
+
+ // this is explained below
+ <strong>static ios_base::Init __foo;</strong> // not its real name
+ }
+ </pre>
+ <p>Now, the runtime penalty mentioned previously: the global objects
+ must be initialized before any of your own code uses them; this is
+ guaranteed by the standard. Like any other global object, they must
+ be initialized once and only once. This is typically done with a
+ construct like the one above, and the nested class ios_base::Init is
+ specified in the standard for just this reason.
+ </p>
+ <p>How does it work? Because the header is included before any of your
+ code, the <strong>__foo</strong> object is constructed before any of
+ your objects. (Global objects are built in the order in which they
+ are declared, and destroyed in reverse order.) The first time the
+ constructor runs, the eight stream objects are set up.
+ </p>
+ <p>The <code>static</code> keyword means that each object file compiled
+ from a source file containing &lt;iostream&gt; will have its own
+ private copy of <strong>__foo</strong>. There is no specified order
+ of construction across object files (it's one of those pesky NP
+ problems that make life so interesting), so one copy in each object
+ file means that the stream objects are guaranteed to be set up before
+ any of your code which uses them could run, thereby meeting the
+ requirements of the standard.
+ </p>
+ <p>The penalty, of course, is that after the first copy of
+ <strong>__foo</strong> is constructed, all the others are just wasted
+ processor time. The time spent is merely for an increment-and-test
+ inside a function call, but over several dozen or hundreds of object
+ files, that time can add up. (It's not in a tight loop, either.)
+ </p>
+ <p>The lesson? Only include &lt;iostream&gt; when you need to use one of
+ the standard objects in that source file; you'll pay less startup
+ time. Only include the header files you need to in general; your
+ compile times will go down when there's less parsing work to do.
+ </p>
+
<!-- ####################################################### -->
diff --git a/libstdc++-v3/docs/html/documentation.html b/libstdc++-v3/docs/html/documentation.html
index a4a79e32b54..0dc25bedfa0 100644
--- a/libstdc++-v3/docs/html/documentation.html
+++ b/libstdc++-v3/docs/html/documentation.html
@@ -66,7 +66,7 @@
<ul>
<li><a href="libstdc++-html-USERS-3.1/index.html">for the 3.1 release</a>
</li>
- <li><a href="libstdc++-html-USERS-3.2/index.html">for the 3.2 release</a>
+ <li><a href="libstdc++-html-USERS-3.2.1/index.html">for the 3.2.1 release</a>
</li>
<li><a href="latest-doxygen/index.html">&quot;the latest collection&quot;</a>
(for the snapshot or later; see the date on the first page)
@@ -208,6 +208,7 @@
<li><a href="27_io/howto.html#7">More on binary I/O</a></li>
<li><a href="27_io/howto.html#8">Pathetic performance? Ditch C.</a></li>
<li><a href="27_io/howto.html#9">Threads and I/O</a></li>
+ <li><a href="27_io/howto.html#10">Which header?</a></li>
</ul>
</li>
diff --git a/libstdc++-v3/docs/html/ext/howto.html b/libstdc++-v3/docs/html/ext/howto.html
index 007335b6569..3d08c570385 100644
--- a/libstdc++-v3/docs/html/ext/howto.html
+++ b/libstdc++-v3/docs/html/ext/howto.html
@@ -3,6 +3,7 @@
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="AUTHOR" content="pme@gcc.gnu.org (Phil Edwards)" />
diff --git a/libstdc++-v3/docs/html/ext/lwg-active.html b/libstdc++-v3/docs/html/ext/lwg-active.html
index c8d33f36f4b..a69d6c67c40 100644
--- a/libstdc++-v3/docs/html/ext/lwg-active.html
+++ b/libstdc++-v3/docs/html/ext/lwg-active.html
@@ -5,11 +5,11 @@
<table>
<tr>
<td align="left">Doc. no.</td>
-<td align="left">J16/02-0027 = WG21 N1369</td>
+<td align="left">J16/02-0048 = WG21 N1390</td>
</tr>
<tr>
<td align="left">Date:</td>
-<td align="left">10 May 2002</td>
+<td align="left">10 Sep 2002</td>
</tr>
<tr>
<td align="left">Project:</td>
@@ -17,10 +17,10 @@
</tr>
<tr>
<td align="left">Reply to:</td>
-<td align="left">Matt Austern &lt;austern@research.att.com&gt;</td>
+<td align="left">Matt Austern &lt;austern@apple.com&gt;</td>
</tr>
</table>
-<h1>C++ Standard Library Active Issues List (Revision 22)</h1>
+<h1>C++ Standard Library Active Issues List (Revision 23)</h1>
<p>Reference ISO/IEC IS 14882:1998(E)</p>
<p>Also see:</p>
<ul>
@@ -78,7 +78,7 @@
<p>Public information as to how to obtain a copy of the C++ Standard,
join the standards committee, submit an issue, or comment on an issue
can be found in the C++ FAQ at <a href="http://www.research.att.com/~austern/csc/faq.html">http://www.research.att.com/~austern/csc/faq.html</a>.
- Public discussion of C++ Standard related issues occurs on <a href="news:comp.std.c++">news:comp.std.c++</a>.
+ Public discussion of C++ Standard related issues occurs on <a href="news:comp.std.c%2B%2B">news:comp.std.c++</a>.
</p>
<p>For committee members, files available on the committee's private
@@ -88,6 +88,10 @@
directory as the issues list files. </p>
<h2>Revision History</h2>
<ul>
+<li>R23:
+Pre-Santa Cruz mailing. Added new issues <a href="lwg-active.html#367">367</a>-<a href="lwg-active.html#382">382</a>.
+Moved issues in the TC to TC status.
+</li>
<li>R22:
Post-Cura&ccedil;ao mailing. Added new issues <a href="lwg-active.html#362">362</a>-<a href="lwg-active.html#366">366</a>.
</li>
@@ -1486,7 +1490,7 @@ specified. Both resolutions are consistent with the behavior of
existing implementations.</p>
<hr>
<a name="225"><h3>225.&nbsp;std:: algorithms use of other unqualified algorithms</h3></a><p>
-<b>Section:</b>&nbsp;17.4.4.3 <a href="lib-intro.html#lib.global.functions"> [lib.global.functions]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;01 Apr 2000</p>
+<b>Section:</b>&nbsp;17.4.4.3 <a href="lib-intro.html#lib.global.functions"> [lib.global.functions]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;01 Apr 2000</p>
<p>Are algorithms in std:: allowed to use other algorithms without qualification, so functions in
user namespaces might be found through Koenig lookup?</p>
<p>For example, a popular standard library implementation includes this
@@ -1586,13 +1590,14 @@ should have any effect.]</i></p>
<p><i>[Cura&ccedil;ao: An LWG-subgroup spent an afternoon working on issues
225, 226, and 229. Their conclusion was that the issues should be
-separated into an LWG portion (Howard will write a proposal), and a
+separated into an LWG portion (Howard's paper, N1387=02-0045), and a
EWG portion (Dave will write a proposal). The LWG and EWG had
-(separate) discussions of this plan the next day.]</i></p>
+(separate) discussions of this plan the next day. The proposed
+resolution for this issue is in accordance with Howard's paper.]</i></p>
<hr>
<a name="226"><h3>226.&nbsp;User supplied specializations or overloads of namespace std function templates</h3></a><p>
-<b>Section:</b>&nbsp;17.4.3.1 <a href="lib-intro.html#lib.reserved.names"> [lib.reserved.names]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;01 Apr 2000</p>
+<b>Section:</b>&nbsp;17.4.3.1 <a href="lib-intro.html#lib.reserved.names"> [lib.reserved.names]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;01 Apr 2000</p>
<p>The issues are:&nbsp;</p>
<p>1. How can a 3rd party library implementor (lib1) write a version of a standard
algorithm which is specialized to work with his own class template?&nbsp;</p>
@@ -1677,6 +1682,9 @@ not provide an operator&lt;&lt; for std::pair&lt;&gt;.
<p><b>Proposed resolution:</b></p>
+<p>Adopt the wording in the <b>Customization Points</b> section of
+Howard Hinnant's paper, N1387=02-0045.</p>
+
<p><i>[Tokyo: Summary, &quot;There is no conforming way to extend
std::swap for user defined templates.&quot;&nbsp; The LWG agrees that
there is a problem.&nbsp; Would like more information before
@@ -1734,13 +1742,14 @@ try to put together a proposal before the next meeting.]</i></p>
<p><i>[Cura&ccedil;ao: An LWG-subgroup spent an afternoon working on issues
225, 226, and 229. Their conclusion was that the issues should be
-separated into an LWG portion (Howard will write a proposal), and a
+separated into an LWG portion (Howard's paper, N1387=02-0045), and a
EWG portion (Dave will write a proposal). The LWG and EWG had
-(separate) discussions of this plan the next day.]</i></p>
+(separate) discussions of this plan the next day. The proposed
+resolution is the one proposed by Howard.]</i></p>
<hr>
<a name="229"><h3>229.&nbsp;Unqualified references of other library entities</h3></a><p>
-<b>Section:</b>&nbsp;17.4.1.1 <a href="lib-intro.html#lib.contents"> [lib.contents]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;19 Apr 2000</p>
+<b>Section:</b>&nbsp;17.4.1.1 <a href="lib-intro.html#lib.contents"> [lib.contents]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;19 Apr 2000</p>
<p>Throughout the library chapters, the descriptions of library entities refer
to other library entities without necessarily qualifying the names.</p>
@@ -1784,13 +1793,15 @@ but that the wording may not be clear enough to fall under
<p><i>[Cura&ccedil;ao: An LWG-subgroup spent an afternoon working on issues
225, 226, and 229. Their conclusion was that the issues should be
-separated into an LWG portion (Howard will write a proposal), and a
+separated into an LWG portion (Howard's paper, N1387=02-0045), and a
EWG portion (Dave will write a proposal). The LWG and EWG had
-(separate) discussions of this plan the next day.]</i></p>
+(separate) discussions of this plan the next day. This paper resolves
+issues 225 and 226. In light of that resolution, the proposed
+resolution for the current issue makes sense.]</i></p>
<hr>
<a name="231"><h3>231.&nbsp;Precision in iostream?</h3></a><p>
-<b>Section:</b>&nbsp;22.2.2.2.2 <a href="lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;James Kanze, Stephen Clamage&nbsp; <b>Date:</b>&nbsp; 25 Apr 2000</p>
+<b>Section:</b>&nbsp;22.2.2.2.2 <a href="lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;James Kanze, Stephen Clamage&nbsp; <b>Date:</b>&nbsp; 25 Apr 2000</p>
<p>What is the following program supposed to output?</p>
<pre>#include &lt;iostream&gt;
@@ -1831,24 +1842,31 @@ etc. Plus, of course, if precision == 0 and flags &amp; floatfield ==
of the anomalies of printf:-).</p>
<p><b>Proposed resolution:</b></p>
<p>
-In 22.2.2.2.2 <a href="lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>, paragraph 11, change
-&quot;if <tt>(flags &amp; fixed) != 0</tt>&quot; to
-&quot;if <tt>(flags &amp; floatfield) == fixed ||
- (flags &amp; floatfield) == scientific</tt>&quot;
+Replace 22.2.2.2.2 <a href="lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>, paragraph 11, with the following
+sentence:
</p>
+<blockquote>
+For conversion from a floating-point type,
+<tt><i>str</i>.precision()</tt> is specified in the conversion
+specification.
+</blockquote>
<p><b>Rationale:</b></p>
<p>The floatfield determines whether numbers are formatted as if
with %f, %e, or %g. If the <tt>fixed</tt> bit is set, it's %f,
if <tt>scientific</tt> it's %e, and if both bits are set, or
-neither, it's %e.</p>
+neither, it's %g.</p>
<p>Turning to the C standard, a precision of 0 is meaningful
-for %f and %e, but not for %g: for %g, precision 0 is taken
-to be the same as precision 1.</p>
-<p>The proposed resolution has the effect that the output of
-the above program will be &quot;1e+00&quot;.</p>
-
-<p><i>[Cura&ccedil;ao: Howard will send Matt improved wording dealing with
-case not covered by current PR.]</i></p>
+for %f and %e. For %g, precision 0 is taken to be the same as
+precision 1.</p>
+<p>The proposed resolution has the effect that if neither
+<tt>fixed</tt> nor <tt>scientific</tt> is set we'll be
+specifying a precision of 0, which will be internally
+turned into 1. There's no need to call it out as a special
+case.</p>
+<p>The output of the above program will be &quot;1e+00&quot;.</p>
+
+<p><i>[Post-Cura&ccedil;ao: Howard provided improved wording covering the case
+where precision is 0 and mode is %g.]</i></p>
<hr>
<a name="233"><h3>233.&nbsp;Insertion hints in associative containers</h3></a><p>
@@ -2354,6 +2372,28 @@ throw, the string must compare equal to the argument.</li>
<p>(Not all of these options are mutually exclusive.)</p>
<p><b>Proposed resolution:</b></p>
+<p>NAD/Future</p>
+<p><b>Rationale:</b></p>
+
+<p>Throwing a bad_alloc while trying to construct a message for another
+exception-derived class is not necessarily a bad thing. And the
+bad_alloc constructor already has a no throw spec on it (18.4.2.1).</p>
+
+<p>
+The copy constructors of all exception-derived classes already have a
+no throw spec. Reference 18.6.1, 19.1 and 15.4/13.
+</p>
+
+<p><b>Future:</b></p>
+
+<p>All involved would like to see const char* constructors added, but
+this should probably be done for C++0X as opposed to a DR.</p>
+
+<p>I believe the no throw specs currently decorating these functions
+could be improved by some kind of static no throw spec checking
+mechanism (in a future C++ language). As they stand, the copy
+constructors might fail via a call to unexpected. I think what is
+intended here is that the copy constructors can't fail.</p>
<p><i>[Toronto: some LWG members thought this was merely a QoI issue,
but most believed that it was at least a borderline defect. There was
@@ -2361,11 +2401,9 @@ more support for nonnormative advice to implementors than for a
normative change.]</i></p>
<p><i>[Redmond: discussed, without definite conclusion. Most LWG
-members thought there was a real defect lurking here. A small group
-(Herb, Kevlin, Howard, Martin, Dave) will try to make a
-recommendation.]</i></p>
-
-<p><i>[Cura&ccedil;ao: Howard will nag the others to work on a recommendation.]</i></p>
+members thought there was a real defect lurking here. The above
+proposed resolution/rationale is from Howard, Herb, Kevlin, Martin,
+and Dave.]</i></p>
<hr>
<a name="258"><h3>258.&nbsp;Missing allocator requirement</h3></a><p>
@@ -2553,7 +2591,7 @@ desirable to provide this feature in a different way.
<hr>
<a name="282"><h3>282.&nbsp;What types does numpunct grouping refer to?</h3></a><p>
-<b>Section:</b>&nbsp;22.2.2.2.2 <a href="lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;5 Dec 2000</p>
+<b>Section:</b>&nbsp;22.2.2.2.2 <a href="lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;5 Dec 2000</p>
<p>
Paragraph 16 mistakenly singles out integral types for inserting
thousands_sep() characters. This conflicts with the syntax for floating
@@ -2593,8 +2631,8 @@ floating-point input even though this is unambiguously required by the
standard.
]</i></p>
-<p><i>[Cura&ccedil;ao: Howard will email Bill and other implementors to try to
-move the issue forward.]</i></p>
+<p><i>[Post-Cura&ccedil;ao: the above proposed resolution is the consensus of
+Howard, Bill, Pete, Benjamin, Nathan, Dietmar, Boris, and Martin.]</i></p>
<hr>
<a name="283"><h3>283.&nbsp;std::replace() requirement incorrect/insufficient</h3></a><p>
@@ -3099,22 +3137,42 @@ note in p24 (below) is that x be empty after the merge which is surely
unintended in this case.
</p>
<p><b>Proposed resolution:</b></p>
+<p>In 23.2.2.4 <a href="lib-containers.html#lib.list.ops"> [lib.list.ops]</a>, replace paragraps 23-25 with:</p>
+<blockquote>
<p>
-Change 23.2.2.4, p23 to:
+23 Effects: if (&amp;x == this) does nothing; otherwise, merges the two
+sorted ranges [begin(), end()) and [x.begin(), x.end()). The result
+is a range in which the elements will be sorted in non-decreasing
+order according to the ordering defined by comp; that is, for every
+iterator i in the range other than the first, the condition comp(*i,
+*(i - 1)) will be false.
</p>
-<blockquote>
-<b>Effects</b>: If &amp;x == this, does nothing; otherwise, merges the
-argument list into the list.
+
+<p>
+24 Notes: Stable: if (&amp;x != this), then for equivalent elements in the
+two original ranges, the elements from the original range [begin(),
+end()) always precede the elements from the original range [x.begin(),
+x.end()). If (&amp;x != this) the range [x.begin(), x.end()) is empty
+after the merge.
+</p>
+
+<p>
+25 Complexity: At most size() + x.size() - 1 applications of comp if
+(&amp;x ! = this); otherwise, no applications of comp are performed. If
+an exception is thrown other than by a comparison there are no
+effects.
+</p>
+
</blockquote>
-<p><i>[Copenhagen: The proposed resolution does not fix all of the
-problems in 23.2.2.4 <a href="lib-containers.html#lib.list.ops"> [lib.list.ops]</a>, p22-25. Three different
+<p><i>[Copenhagen: The original proposed resolution did not fix all of
+the problems in 23.2.2.4 <a href="lib-containers.html#lib.list.ops"> [lib.list.ops]</a>, p22-25. Three different
paragraphs (23, 24, 25) describe the effects of <tt>merge</tt>.
Changing p23, without changing the other two, appears to introduce
contradictions. Additionally, &quot;merges the argument list into the
list&quot; is excessively vague.]</i></p>
-<p><i>[Cura&ccedil;ao: Robert Klarer volunteers to work on this issue.]</i></p>
+<p><i>[Post-Cura&ccedil;ao: Robert Klarer provided new wording.]</i></p>
<hr>
<a name="304"><h3>304.&nbsp;Must <tt>*a</tt> return an lvalue when <tt>a</tt> is an input iterator?</h3></a><p>
@@ -5283,6 +5341,648 @@ rationale.
basic_filebuf&lt;charT,traits&gt;* rdbuf();
const basic_filebuf&lt;charT,traits&gt;* rdbuf() const;
</pre>
+<hr>
+<a name="367"><h3>367.&nbsp;remove_copy/remove_copy_if and Input Iterators</h3></a><p>
+<b>Section:</b>&nbsp;25.2.7 <a href="lib-algorithms.html#lib.alg.remove"> [lib.alg.remove]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Anthony Williams&nbsp; <b>Date:</b>&nbsp;13 May 2002</p>
+<p>
+remove_copy and remove_copy_if (25.2.7 <a href="lib-algorithms.html#lib.alg.remove"> [lib.alg.remove]</a>) permit their
+input range to be marked with Input Iterators. However, since two
+operations are required against the elements to copy (comparison and
+assigment), when the input range uses Input Iterators, a temporary
+copy must be taken to avoid dereferencing the iterator twice. This
+therefore requires the value type of the InputIterator to be
+CopyConstructible. If the iterators are at least Forward Iterators,
+then the iterator can be dereferenced twice, or a reference to the
+result maintained, so the temporary is not required.
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+Add &quot;If InputIterator does not meet the requirements of forward
+iterator, then the value type of InputIterator must be copy
+constructible. Otherwise copy constructible is not required.&quot; to
+25.2.7 <a href="lib-algorithms.html#lib.alg.remove"> [lib.alg.remove]</a> paragraph 6.
+</p>
+<hr>
+<a name="368"><h3>368.&nbsp;basic_string::replace has two &quot;Throws&quot; paragraphs</h3></a><p>
+<b>Section:</b>&nbsp;21.3.5.6 <a href="lib-strings.html#lib.string::replace"> [lib.string::replace]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Beman Dawes&nbsp; <b>Date:</b>&nbsp;3 Jun 2002</p>
+<p>
+21.3.5.6 <a href="lib-strings.html#lib.string::replace"> [lib.string::replace]</a> basic_string::replace, second
+signature, given in paragraph 1, has two &quot;Throws&quot; paragraphs (3 and
+5).
+</p>
+
+<p>
+In addition, the second &quot;Throws&quot; paragraph (5) includes specification
+(beginning with &quot;Otherwise, the function replaces ...&quot;) that should be
+part of the &quot;Effects&quot; paragraph.
+</p>
+<p><b>Proposed resolution:</b></p>
+<hr>
+<a name="369"><h3>369.&nbsp;io stream objects and static ctors</h3></a><p>
+<b>Section:</b>&nbsp;27.3 <a href="lib-iostreams.html#lib.iostream.objects"> [lib.iostream.objects]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Ruslan Abdikeev&nbsp; <b>Date:</b>&nbsp;8 Jul 2002</p>
+<p>
+Is it safe to use standard iostream objects from constructors of
+static objects? Are standard iostream objects constructed and are
+their associations established at that time?
+</p>
+
+<p>Surpisingly enough, Standard does NOT require that.</p>
+
+<p>
+27.3/2 [lib.iostream.objects] guarantees that standard iostream
+objects are constructed and their associations are established before
+the body of main() begins execution. It also refers to ios_base::Init
+class as the panacea for constructors of static objects.
+</p>
+
+<p>
+However, there's nothing in 27.3 [lib.iostream.objects],
+in 27.4.2 [lib.ios.base], and in 27.4.2.1.6 [lib.ios::Init],
+that would require implementations to allow access to standard
+iostream objects from constructors of static objects.
+</p>
+
+<p>Details:</p>
+
+<p>Core text refers to some magic object ios_base::Init, which will
+be discussed below:</p>
+
+<blockquote>
+ &quot;The [standard iostream] objects are constructed, and their
+ associations are established at some time prior to or during
+ first time an object of class basic_ios&lt;charT,traits&gt;::Init
+ is constructed, and in any case before the body of main
+ begins execution.&quot; (27.3/2 [lib.iostream.objects])
+</blockquote>
+
+<p>
+The first <i>non-normative</i> footnote encourages implementations
+to initialize standard iostream objects earlier than required.
+</p>
+
+<p>However, the second <i>non-normative</i> footnote makes an explicit
+and unsupported claim:</p>
+
+<blockquote>
+ &quot;Constructors and destructors for static objects can access these
+ [standard iostream] objects to read input from stdin or write output
+ to stdout or stderr.&quot; (27.3/2 footnote 265 [lib.iostream.objects])
+</blockquote>
+
+<p>
+The only bit of magic is related to that ios_base::Init class. AFAIK,
+the rationale behind ios_base::Init was to bring an instance of this
+class to each translation unit which #included &lt;iostream&gt; or
+related header. Such an inclusion would support the claim of footnote
+quoted above, because in order to use some standard iostream object it
+is necessary to #include &lt;iostream&gt;.
+</p>
+
+<p>
+However, while Standard explicitly describes ios_base::Init as
+an appropriate class for doing the trick, I failed to found a
+mention of an _instance_ of ios_base::Init in Standard.
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+At the end of header &lt;iostream&gt; synopsis in 27.3 <a href="lib-iostreams.html#lib.iostream.objects"> [lib.iostream.objects]</a>
+</p>
+
+<pre>
+ namespace std
+ {
+ ... extern istream cin; ...
+</pre>
+
+<p>add the following lines</p>
+
+<pre>
+ namespace
+ {
+ ios_base::Init &lt;some_implementation_defined_name&gt;;
+ }
+ }
+</pre>
+<hr>
+<a name="370"><h3>370.&nbsp;Minor error in basic_istream::get</h3></a><p>
+<b>Section:</b>&nbsp;27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Ray Lischner&nbsp; <b>Date:</b>&nbsp;15 Jul 2002</p>
+<p>Defect report for description of basic_istream::get (section 27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>), paragraph 15. The description for the get function
+with the following signature:</p>
+
+<pre>
+ basic_istream&lt;charT,traits&gt;&amp; get(basic_streambuf&lt;char_type,traits&gt;&amp;
+ sb);
+</pre>
+
+<p>is incorrect. It reads</p>
+
+<blockquote>
+ Effects: Calls get(s,n,widen('\n'))
+</blockquote>
+
+<p>which I believe should be:</p>
+
+<blockquote>
+ Effects: Calls get(sb,widen('\n'))
+</blockquote>
+<p><b>Proposed resolution:</b></p>
+<p>Change the <b>Effects</b> paragraph to:</p>
+<blockquote>
+ Effects: Calls get(sb,widen('\n'))
+</blockquote>
+<hr>
+<a name="371"><h3>371.&nbsp;Stability of multiset and multimap member functions</h3></a><p>
+<b>Section:</b>&nbsp;23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Frank Compagner&nbsp; <b>Date:</b>&nbsp;20 Jul 2002</p>
+<p>
+The requirements for multiset and multimap containers (23.1
+[lib.containers.requirements], 23.1.2 [lib.associative.reqmnts],
+23.3.2 [lib.multimap] and 23.3.4 [lib.multiset]) make no mention of
+the stability of the required (mutating) member functions. It appears
+the standard allows these functions to reorder equivalent elements of
+the container at will, yet the pervasive red-black tree implementation
+appears to provide stable behaviour.
+</p>
+
+<p>This is of most concern when considering the behaviour of erase().
+A stability requirement would guarantee the correct working of the
+following 'idiom' that removes elements based on a certain predicate
+function.
+</p>
+
+<pre>
+ multimap&lt;int, int&gt; m;
+ multimap&lt;int, int&gt;::iterator i = m.begin();
+ while (i != m.end()) {
+ if (pred(i))
+ m.erase (i++);
+ else
+ ++i;
+ }
+</pre>
+
+<p>
+Although clause 23.1.2/8 guarantees that i remains a valid iterator
+througout this loop, absence of the stability requirement could
+potentially result in elements being skipped. This would make
+this code incorrect, and, furthermore, means that there is no way
+of erasing these elements without iterating first over the entire
+container, and second over the elements to be erased. This would
+be unfortunate, and have a negative impact on both performance and
+code simplicity.
+</p>
+
+<p>
+If the stability requirement is intended, it should be made explicit
+(probably through an extra paragraph in clause 23.1.2).
+</p>
+<p>
+If it turns out stability cannot be guaranteed, i'd argue that a
+remark or footnote is called for (also somewhere in clause 23.1.2) to
+warn against relying on stable behaviour (as demonstrated by the code
+above). If most implementations will display stable behaviour, any
+problems emerging on an implementation without stable behaviour will
+be hard to track down by users. This would also make the need for an
+erase_if() member function that much greater.
+</p>
+
+<p>This issue is somewhat related to LWG issue <a href="lwg-closed.html#130">130</a>.</p>
+<p><b>Proposed resolution:</b></p>
+<hr>
+<a name="372"><h3>372.&nbsp;Inconsistent description of stdlib exceptions</h3></a><p>
+<b>Section:</b>&nbsp;17.4.4.8 <a href="lib-intro.html#lib.res.on.exception.handling"> [lib.res.on.exception.handling]</a>, 18.6.1 <a href="lib-support.html#lib.exception"> [lib.exception]</a>, &nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Randy Maddox&nbsp; <b>Date:</b>&nbsp;22 Jul 2002</p>
+
+<p>Paragraph 3 under clause 17.4.4.8 <a href="lib-intro.html#lib.res.on.exception.handling"> [lib.res.on.exception.handling]</a>, Restrictions on
+Exception Handling, states that &quot;Any other functions defined in the
+C++ Standard Library that do not have an exception-specification may
+throw implementation-defined exceptions unless otherwise specified.&quot;
+This statement is followed by a reference to footnote 178 at the
+bottom of that page which states, apparently in reference to the C++
+Standard Library, that &quot;Library implementations are encouraged (but
+not required) to report errors by throwing exceptions from (or derived
+from) the standard exceptions.&quot;</p>
+
+<p>These statements appear to be in direct contradiction to clause
+18.6.1 <a href="lib-support.html#lib.exception"> [lib.exception]</a>, which states &quot;The class exception defines the
+base class for the types of objects thrown as exceptions by the C++
+Standard library components ...&quot;.</p>
+
+<p>Is this inconsistent?</p>
+
+<p><b>Proposed resolution:</b></p>
+<hr>
+<a name="373"><h3>373.&nbsp;Are basic_istream and basic_ostream to use (exceptions()&amp;badbit) != 0 ?</h3></a><p>
+<b>Section:</b>&nbsp;27.6.1.2.1 <a href="lib-iostreams.html#lib.istream.formatted.reqmts"> [lib.istream.formatted.reqmts]</a>, 27.6.2.5.1 <a href="lib-iostreams.html#lib.ostream.formatted.reqmts"> [lib.ostream.formatted.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Keith Baker&nbsp; <b>Date:</b>&nbsp;23 Jul 2002</p>
+
+<p>
+In 27.6.1.2.1 <a href="lib-iostreams.html#lib.istream.formatted.reqmts"> [lib.istream.formatted.reqmts]</a> and 27.6.2.5.1 <a href="lib-iostreams.html#lib.ostream.formatted.reqmts"> [lib.ostream.formatted.reqmts]</a>
+(exception()&amp;badbit) != 0 is used in testing for rethrow, yet
+exception() is the constructor to class std::exception in 18.6.1 <a href="lib-support.html#lib.exception"> [lib.exception]</a> that has no return type. Should member function
+exceptions() found in 27.4.4 <a href="lib-iostreams.html#lib.ios"> [lib.ios]</a> be used instead?
+</p>
+
+<p><b>Proposed resolution:</b></p>
+<p>
+</p>
+<hr>
+<a name="374"><h3>374.&nbsp;moneypunct::frac_digits returns int not unsigned</h3></a><p>
+<b>Section:</b>&nbsp;22.2.6.3.1 <a href="lib-locales.html#lib.locale.moneypunct.members"> [lib.locale.moneypunct.members]</a>, 22.2.6.3.2 <a href="lib-locales.html#lib.locale.moneypunct.virtuals"> [lib.locale.moneypunct.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Ray Lischner&nbsp; <b>Date:</b>&nbsp;8 Aug 2002</p>
+<p>
+In section 22.2.6.3.1 <a href="lib-locales.html#lib.locale.moneypunct.members"> [lib.locale.moneypunct.members]</a>, frac_digits() returns type
+&quot;int&quot;. This implies that frac_digits() might return a negative value,
+but a negative value is nonsensical. It should return &quot;unsigned&quot;.
+</p>
+
+<p>
+Similarly, in section 22.2.6.3.2 <a href="lib-locales.html#lib.locale.moneypunct.virtuals"> [lib.locale.moneypunct.virtuals]</a>, do_frac_digits()
+should return &quot;unsigned&quot;.
+</p>
+
+<p><b>Proposed resolution:</b></p>
+<hr>
+<a name="375"><h3>375.&nbsp;basic_ios should be ios_base in 27.7.1.3</h3></a><p>
+<b>Section:</b>&nbsp;27.7.1.3 <a href="lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Ray Lischner&nbsp; <b>Date:</b>&nbsp;14 Aug 2002</p>
+<p>
+In Section 27.7.1.3 <a href="lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>: Table 90, Table 91, and paragraph
+14 all contain references to &quot;basic_ios::&quot; which should be
+&quot;ios_base::&quot;.
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+Change all references to &quot;basic_ios&quot; in Table 90, Table 91, and
+paragraph 14 to &quot;ios_base&quot;.
+</p>
+<hr>
+<a name="376"><h3>376.&nbsp;basic_streambuf semantics</h3></a><p>
+<b>Section:</b>&nbsp;27.7.1.3 <a href="lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Ray Lischner&nbsp; <b>Date:</b>&nbsp;14 Aug 2002</p>
+<p>
+In Section 27.7.1.3 <a href="lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>, Table 90, the implication is that
+the four conditions should be mutually exclusive, but they are not.
+The first two cases, as written, are subcases of the third. I think it
+would be clearer if the conditions were rewritten as follows:
+</p>
+
+<blockquote>
+<p>
+ (which &amp; (ios_base::in|ios_base::out)) == ios_base::in
+</p>
+
+<p>
+ (which &amp; (ios_base::in|ios_base::out)) == ios_base::out
+</p>
+
+<p>
+ (which &amp; (ios_base::in|ios_base::out)) ==
+(ios_base::in|ios_base::out)
+ and way == either ios_base::beg or ios_base::end
+</p>
+
+<p>Otherwise</p>
+</blockquote>
+
+<p>
+As written, it is unclear what should be the result if cases 1 &amp; 2
+are true, but case 3 is false, e.g.,
+</p>
+
+<blockquote>
+ seekoff(0, ios_base::cur, ios_base::in | ios_base::out)
+</blockquote>
+
+<p><b>Proposed resolution:</b></p>
+<hr>
+<a name="377"><h3>377.&nbsp;basic_string::insert and length_error</h3></a><p>
+<b>Section:</b>&nbsp;21.3.5.4 <a href="lib-strings.html#lib.string::insert"> [lib.string::insert]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Ray Lischner&nbsp; <b>Date:</b>&nbsp;16 Aug 2002</p>
+<p>
+Section 21.3.5.4 <a href="lib-strings.html#lib.string::insert"> [lib.string::insert]</a>, paragraph 4, contains the following,
+&quot;Then throws length_error if size() &gt;= npos - rlen.&quot;
+</p>
+
+<p>
+Related to DR 83, this sentence should probably be removed.
+</p>
+<p><b>Proposed resolution:</b></p>
+<hr>
+<a name="378"><h3>378.&nbsp;locale immutability and locale::operator=()</h3></a><p>
+<b>Section:</b>&nbsp;22.1.1 <a href="lib-locales.html#lib.locale"> [lib.locale]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;6 Sep 2002</p>
+<p>
+I think there is a problem with 22.1.1, p6 which says that
+</p>
+<pre>
+ -6- An instance of locale is immutable; once a facet reference
+ is obtained from it, that reference remains usable as long
+ as the locale value itself exists.
+</pre>
+<p>
+and 22.1.1.2, p4:
+</p>
+<pre>
+ const locale&amp; operator=(const locale&amp; other) throw();
+
+ -4- Effects: Creates a copy of other, replacing the current value.
+</pre>
+<p>
+How can a reference to a facet obtained from a locale object remain
+valid after an assignment that clearly must replace all the facets
+in the locale object? Imagine a program such as this
+</p>
+<pre>
+ std::locale loc (&quot;de_DE&quot;);
+ const std::ctype&lt;char&gt; &amp;r0 = std::use_facet&lt;std::ctype&lt;char&gt; &gt;(loc);
+ loc = std::locale (&quot;en_US&quot;);
+ const std::ctype&lt;char&gt; &amp;r1 = std::use_facet&lt;std::ctype&lt;char&gt; &gt;(loc);
+</pre>
+<p>
+Is r0 really supposed to be preserved and destroyed only when loc goes
+out of scope?
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+Suggest to replace 22.1.1 <a href="lib-locales.html#lib.locale"> [lib.locale]</a>, p6 with
+</p>
+<pre>
+ -6- Unless assigned a new value, locale objects are immutable;
+ once a facet reference is obtained from it, that reference
+ remains usable as long as the locale object itself exists
+ or until the locale object is assigned the value of another,
+ distinct locale object.
+</pre>
+<hr>
+<a name="379"><h3>379.&nbsp;nonsensical ctype::do_widen() requirement</h3></a><p>
+<b>Section:</b>&nbsp;22.2.1.1.2 <a href="lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;6 Sep 2002</p>
+<p>
+The last sentence in 22.2.1.1.2, p11 below doesn't seem to make sense.
+</p>
+<pre>
+ charT do_widen (char c) const;
+
+ -11- Effects: Applies the simplest reasonable transformation from
+ a char value or sequence of char values to the corresponding
+ charT value or values. The only characters for which unique
+ transformations are required are those in the basic source
+ character set (2.2). For any named ctype category with a
+ ctype&lt;charT&gt; facet ctw and valid ctype_base::mask value
+ M (is(M, c) || !ctw.is(M, do_widen(c))) is true.
+</pre>
+<p>
+Shouldn't the last sentence instead read
+</p>
+<pre>
+ For any named ctype category with a ctype&lt;char&gt; facet ctc
+ and valid ctype_base::mask value M
+ (ctc.is(M, c) || !is(M, do_widen(c))) is true.
+</pre>
+<p>
+I.e., if the narrow character c is not a member of a class of
+characters then neither is the widened form of c. (To paraphrase
+footnote 224.)
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+Replace the last sentence of 22.2.1.1.2 <a href="lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a>, p11 with the
+following text:
+</p>
+<pre>
+ For any named ctype category with a ctype&lt;char&gt; facet ctc
+ and valid ctype_base::mask value M
+ (ctc.is(M, c) || !is(M, do_widen(c))) is true.
+</pre>
+<hr>
+<a name="380"><h3>380.&nbsp;typos in codecvt tables 53 and 54</h3></a><p>
+<b>Section:</b>&nbsp;22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;6 Sep 2002</p>
+<p>
+Tables 53 and 54 in 22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a> are both titled &quot;convert
+result values,&quot; when surely &quot;do_in/do_out result values&quot; must have
+been intended for Table 53 and &quot;do_unshift result values&quot; for Table
+54.
+</p>
+<p>
+Table 54, row 3 says that the meaning of partial is &quot;more characters
+needed to be supplied to complete termination.&quot; The function is not
+supplied any characters, it is given a buffer which it fills with
+characters or, more precisely, destination elements (i.e., an escape
+sequence). So partial means that space for more than (to_limit - to)
+destination elements was needed to terminate a sequence given the
+value of state.
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+Change the title of Table 53 to &quot;do_in/do_out result values&quot; and
+the title of Table 54 to &quot;do_unshift result values.&quot;
+</p>
+<p>
+Change the text in Table 54, row 3, under the heading Meaning to
+&quot;space for more than (to_limit - to) destination elements was
+needed to terminate a sequence given the value of state.&quot;
+</p>
+<hr>
+<a name="381"><h3>381.&nbsp;detection of invalid mbstate_t in codecvt</h3></a><p>
+<b>Section:</b>&nbsp;22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;6 Sep 2002</p>
+<p>
+All but one codecvt member functions that take a state_type argument
+list as one of their preconditions that the state_type argument have
+a valid value. However, according to 22.2.1.5.2, p6,
+codecvt::do_unshift() is the only codecvt member that is supposed to
+return error if the state_type object is invalid.
+</p>
+
+<p>
+It seems to me that the treatment of state_type by all codecvt member
+functions should be the same and the current requirements should be
+changed. Since the detection of invalid state_type values may be
+difficult in general or computationally expensive in some specific
+cases, I propose the following:
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+Add a new paragraph before 22.2.1.5.2, p5, and after the function
+declaration below
+</p>
+<pre>
+ result do_unshift(stateT&amp; state,
+ externT* to, externT* to_limit, externT*&amp; to_next) const;
+</pre>
+<p>
+as follows:
+</p>
+<pre>
+ Requires: (to &lt;= to_end) well defined and true; state initialized,
+ if at the beginning of a sequence, or else equal to the result of
+ converting the preceding characters in the sequence.
+</pre>
+<p>
+and change the text in Table 54, row 4, under the heading Meaning
+from
+</p>
+<pre>
+ state has invalid value
+</pre>
+<p>
+to
+</p>
+<pre>
+ an unspecified error has occurred
+</pre>
+<p>
+The return value of error should allow implementers to detect and
+report invalid state values but shouldn't require it, hence the
+word &quot;unspecified&quot; in the new wording.
+</p>
+<hr>
+<a name="382"><h3>382.&nbsp;codecvt do_in/out result</h3></a><p>
+<b>Section:</b>&nbsp;22.2.1.5 <a href="lib-locales.html#lib.locale.codecvt"> [lib.locale.codecvt]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;30 Aug 2002</p>
+<p>
+It seems that the descriptions of codecvt do_in() and do_out() leave
+sufficient room for interpretation so that two implementations of
+codecvt may not work correctly with the same filebuf. Specifically,
+the following seems less than adequately specified:
+</p>
+
+<ol>
+<li>
+ the conditions under which the functions terminate
+</li>
+<li>
+ precisely when the functions return ok
+</li>
+<li>
+ precisely when the functions return partial
+</li>
+<li>
+ the full set of conditions when the functions return error
+</li>
+</ol>
+
+<ol>
+<li>
+ 22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>, p2 says this about the effects of the
+ function: ...Stops if it encounters a character it cannot
+ convert... This assumes that there *is* a character to
+ convert. What happens when there is a sequence that doesn't form a
+ valid source character, such as an unassigned or invalid UNICODE
+ character, or a sequence that cannot possibly form a character
+ (e.g., the sequence &quot;\xc0\xff&quot; in UTF-8)?
+</li>
+<li>
+ Table 53 says that the function returns codecvt_base::ok
+ to indicate that the function(s) &quot;completed the conversion.&quot;
+ Suppose that the source sequence is &quot;\xc0\x80&quot; in UTF-8,
+ with from pointing to '\xc0' and (from_end==from + 1).
+ It is not clear whether the return value should be ok
+ or partial (see below).
+</li>
+<li>
+ Table 53 says that the function returns codecvt_base::partial
+ if &quot;not all source characters converted.&quot; With the from pointers
+ set up the same way as above, it is not clear whether the return
+ value should be partial or ok (see above).
+</li>
+<li>
+ Table 53, in the row describing the meaning of error mistakenly
+ refers to a &quot;from_type&quot; character, without the symbol from_type
+ having been defined. Most likely, the word &quot;source&quot; character
+ is intended, although that is not sufficient. The functions
+ may also fail when they encounter an invalid source sequence
+ that cannot possibly form a valid source character (e.g., as
+ explained in bullet 1 above).
+</li>
+</ol>
+<p>
+Finally, the conditions described at the end of 22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>, p4 don't seem to be possible:
+</p>
+<blockquote>
+ &quot;A return value of partial, if (from_next == from_end),
+ indicates that either the destination sequence has not
+ absorbed all the available destination elements, or that
+ additional source elements are needed before another
+ destination element can be produced.&quot;
+</blockquote>
+<p>
+If the value is partial, it's not clear to me that (from_next
+==from_end) could ever hold if there isn't enough room
+in the destination buffer. In order for (from_next==from_end) to
+hold, all characters in that range must have been successfully
+converted (according to 22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>, p2) and since there are no
+further source characters to convert, no more room in the
+destination buffer can be needed.
+</p>
+<p>
+It's also not clear to me that (from_next==from_end) could ever
+hold if additional source elements are needed to produce another
+destination character (not element as incorrectly stated in the
+text). partial is returned if &quot;not all source characters have
+been converted&quot; according to Table 53, which also implies that
+(from_next==from) does NOT hold.
+</p>
+<p>
+Could it be that the intended qualifying condition was actually
+(from_next != from_end), i.e., that the sentence was supposed
+to read
+</p>
+<blockquote>
+ &quot;A return value of partial, if (from_next != from_end),...&quot;
+</blockquote>
+<p>
+which would make perfect sense, since, as far as I understand it,
+partial can only occur if (from_next != from_end)?
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+To address these issues, I propose that paragraphs 2, 3, and 4
+be rewritten as follows. The proposal incorporates the accepted
+resolution of lwg issue 19.
+</p>
+<pre>
+-2- Effects: Converts characters in the range of source elements
+ [from, from_end), placing the results in sequential positions
+ starting at destination to. Converts no more than (from_end&shy;from)
+ source elements, and stores no more than (to_limit&shy;to)
+ destination elements.
+
+ Stops if it encounters a sequence of source elements it cannot
+ convert to a valid destination character. It always leaves the
+ from_next and to_next pointers pointing one beyond the last
+ element successfully converted.
+
+ [Note: If returns noconv, internT and externT are the same type
+ and the converted sequence is identical to the input sequence
+ [from, from_next). to_next is set equal to to, the value of
+ state is unchanged, and there are no changes to the values in
+ [to, to_limit). --end note]
+
+-3- Notes: Its operations on state are unspecified.
+ [Note: This argument can be used, for example, to maintain shift
+ state, to specify conversion options (such as count only), or to
+ identify a cache of seek offsets. --end note]
+
+-4- Returns: An enumeration value, as summarized in Table 53:
+
+ Table 53 -- do_in/do_out result values
+
+ Value Meaning
+ +---------+----------------------------------------------------+
+ | ok | successfully completed the conversion of all |
+ | | complete characters in the source range |
+ +---------+----------------------------------------------------+
+ | partial | the characters in the source range would, after |
+ | | conversion, require space greater than that |
+ | | available in the destination range |
+ +---------+----------------------------------------------------+
+ | error | encountered either a sequence of elements in the |
+ | | source range forming a valid source character that |
+ | | could not be converted to a destination character, |
+ | | or a sequence of elements in the source range that |
+ | | could not possibly form a valid source character |
+ +---------+----------------------------------------------------+
+ | noconv | internT and externT are the same type, and input |
+ | | sequence is identical to converted sequence |
+ +---------+----------------------------------------------------+
+
+ A return value of partial, i.e., if (from_next != from_end),
+ indicates that either the destination sequence has not absorbed
+ all the available destination elements, or that additional
+ source elements are needed before another destination character
+ can be produced.
+</pre>
<p>----- End of document -----</p>
</body>
</html>
diff --git a/libstdc++-v3/docs/html/ext/lwg-defects.html b/libstdc++-v3/docs/html/ext/lwg-defects.html
index eea548b8db7..41ae2f822c6 100644
--- a/libstdc++-v3/docs/html/ext/lwg-defects.html
+++ b/libstdc++-v3/docs/html/ext/lwg-defects.html
@@ -5,11 +5,11 @@
<table>
<tr>
<td align="left">Doc. no.</td>
-<td align="left">J16/02-0028 = WG21 N1370</td>
+<td align="left">J16/02-0049 = WG21 N1391</td>
</tr>
<tr>
<td align="left">Date:</td>
-<td align="left">10 May 2002</td>
+<td align="left">10 Sep 2002</td>
</tr>
<tr>
<td align="left">Project:</td>
@@ -17,10 +17,10 @@
</tr>
<tr>
<td align="left">Reply to:</td>
-<td align="left">Matt Austern &lt;austern@research.att.com&gt;</td>
+<td align="left">Matt Austern &lt;austern@apple.com&gt;</td>
</tr>
</table>
-<h1>C++ Standard Library Defect Report List (Revision 22)</h1>
+<h1>C++ Standard Library Defect Report List (Revision 23)</h1>
<p>Reference ISO/IEC IS 14882:1998(E)</p>
<p>Also see:</p>
<ul>
@@ -42,6 +42,10 @@
document.</p>
<h2>Revision History</h2>
<ul>
+<li>R23:
+Pre-Santa Cruz mailing. Added new issues <a href="lwg-active.html#367">367</a>-<a href="lwg-active.html#382">382</a>.
+Moved issues in the TC to TC status.
+</li>
<li>R22:
Post-Cura&ccedil;ao mailing. Added new issues <a href="lwg-active.html#362">362</a>-<a href="lwg-active.html#366">366</a>.
</li>
@@ -204,7 +208,7 @@ format, <a href="lwg-defects.html#64">64</a> title. (17 Sep 98)
<h2>Defect Reports</h2>
<hr>
<a name="1"><h3>1.&nbsp;C library linkage editing oversight</h3></a><p>
-<b>Section:</b>&nbsp;17.4.2.2 <a href="lib-intro.html#lib.using.linkage"> [lib.using.linkage]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Beman Dawes&nbsp; <b>Date:</b>&nbsp;16 Nov 1997</p>
+<b>Section:</b>&nbsp;17.4.2.2 <a href="lib-intro.html#lib.using.linkage"> [lib.using.linkage]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Beman Dawes&nbsp; <b>Date:</b>&nbsp;16 Nov 1997</p>
<p>The change specified in the proposed resolution below did not make
it into the Standard. This change was accepted in principle at the
London meeting, and the exact wording below was accepted at the
@@ -229,7 +233,7 @@ from:</p>
</blockquote>
<hr>
<a name="3"><h3>3.&nbsp;Atexit registration during atexit() call is not described</h3></a><p>
-<b>Section:</b>&nbsp;18.3 <a href="lib-support.html#lib.support.start.term"> [lib.support.start.term]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;12 Dec 1997</p>
+<b>Section:</b>&nbsp;18.3 <a href="lib-support.html#lib.support.start.term"> [lib.support.start.term]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;12 Dec 1997</p>
<p>We appear not to have covered all the possibilities of
exit processing with respect to
atexit registration. <br>
@@ -349,7 +353,7 @@ committee decides. </p>
supporting to the proposed resolution.</p>
<hr>
<a name="5"><h3>5.&nbsp;String::compare specification questionable</h3></a><p>
-<b>Section:</b>&nbsp;21.3.6.8 <a href="lib-strings.html#lib.string::compare"> [lib.string::compare]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Jack Reeves&nbsp; <b>Date:</b>&nbsp;11 Dec 1997</p>
+<b>Section:</b>&nbsp;21.3.6.8 <a href="lib-strings.html#lib.string::compare"> [lib.string::compare]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Jack Reeves&nbsp; <b>Date:</b>&nbsp;11 Dec 1997</p>
<p>At the very end of the basic_string class definition is the signature: int
compare(size_type pos1, size_type n1, const charT* s, size_type n2 = npos) const; In the
following text this is defined as: returns
@@ -432,7 +436,7 @@ the Standard which must be fixed.&nbsp; The same problem was also
identified in issues 7 (item 5) and 87.</p>
<hr>
<a name="7"><h3>7.&nbsp;String clause minor problems</h3></a><p>
-<b>Section:</b>&nbsp;21 <a href="lib-strings.html#lib.strings"> [lib.strings]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;15 Dec 1997</p>
+<b>Section:</b>&nbsp;21 <a href="lib-strings.html#lib.strings"> [lib.strings]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;15 Dec 1997</p>
<p>(1) In 21.3.5.4 <a href="lib-strings.html#lib.string::insert"> [lib.string::insert]</a>, the description of template
&lt;class InputIterator&gt; insert(iterator, InputIterator,
InputIterator) makes no sense. It refers to a member function that
@@ -503,7 +507,7 @@ with:<br>
s+n) overlap.&quot;</p>
<hr>
<a name="8"><h3>8.&nbsp;Locale::global lacks guarantee</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1.5 <a href="lib-locales.html#lib.locale.statics"> [lib.locale.statics]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;24 Dec 1997</p>
+<b>Section:</b>&nbsp;22.1.1.5 <a href="lib-locales.html#lib.locale.statics"> [lib.locale.statics]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;24 Dec 1997</p>
<p>It appears there's an important guarantee missing from clause
22. We're told that invoking locale::global(L) sets the C locale if L
has a name. However, we're not told whether or not invoking
@@ -522,7 +526,7 @@ paragraph 2:&nbsp; </p>
</blockquote>
<hr>
<a name="9"><h3>9.&nbsp;Operator new(0) calls should not yield the same pointer</h3></a><p>
-<b>Section:</b>&nbsp;18.4.1 <a href="lib-support.html#lib.new.delete"> [lib.new.delete]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;4 Jan 1998</p>
+<b>Section:</b>&nbsp;18.4.1 <a href="lib-support.html#lib.new.delete"> [lib.new.delete]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;4 Jan 1998</p>
<p>Scott Meyers, in a comp.std.c++ posting: I just noticed that
section 3.7.3.1 of CD2 seems to allow for the possibility that all
calls to operator new(0) yield the same pointer, an implementation
@@ -577,7 +581,7 @@ list maintainer's note: the IS is the same.]</p>
supporting to the proposed resolution.</p>
<hr>
<a name="11"><h3>11.&nbsp;Bitset minor problems</h3></a><p>
-<b>Section:</b>&nbsp;23.3.5 <a href="lib-containers.html#lib.template.bitset"> [lib.template.bitset]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;22 Jan 1998</p>
+<b>Section:</b>&nbsp;23.3.5 <a href="lib-containers.html#lib.template.bitset"> [lib.template.bitset]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;22 Jan 1998</p>
<p>(1) bitset&lt;&gt;::operator[] is mentioned in the class synopsis (23.3.5), but it is
not documented in 23.3.5.2. </p>
@@ -625,7 +629,7 @@ input&quot; implies the desired semantics. See 27.6.1.2 <a href="lib-iostreams.h
</p>
<hr>
<a name="13"><h3>13.&nbsp;Eos refuses to die</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.2.3 <a href="lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;William M. Miller&nbsp; <b>Date:</b>&nbsp;3 Mar 1998</p>
+<b>Section:</b>&nbsp;27.6.1.2.3 <a href="lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;William M. Miller&nbsp; <b>Date:</b>&nbsp;3 Mar 1998</p>
<p>In 27.6.1.2.3, there is a reference to &quot;eos&quot;, which is
the only one in the whole draft (at least using Acrobat search), so
it's undefined. </p>
@@ -634,7 +638,7 @@ it's undefined. </p>
&quot;charT()&quot;</p>
<hr>
<a name="14"><h3>14.&nbsp;Locale::combine should be const</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1.3 <a href="lib-locales.html#lib.locale.members"> [lib.locale.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;22.1.1.3 <a href="lib-locales.html#lib.locale.members"> [lib.locale.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>locale::combine is the only member function of locale (other than constructors and
destructor) that is not const. There is no reason for it not to be const, and good reasons
why it should have been const. Furthermore, leaving it non-const conflicts with 22.1.1
@@ -653,7 +657,7 @@ time, but the omission was not noticed. </p>
</blockquote>
<hr>
<a name="15"><h3>15.&nbsp;Locale::name requirement inconsistent</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1.3 <a href="lib-locales.html#lib.locale.members"> [lib.locale.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;22.1.1.3 <a href="lib-locales.html#lib.locale.members"> [lib.locale.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>locale::name() is described as returning a string that can be passed to a locale
constructor, but there is no matching constructor. </p>
<p><b>Proposed resolution:</b></p>
@@ -663,7 +667,7 @@ constructor, but there is no matching constructor. </p>
</p>
<hr>
<a name="16"><h3>16.&nbsp;Bad ctype_byname&lt;char&gt; decl</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.4 <a href="lib-locales.html#lib.locale.ctype.byname.special"> [lib.locale.ctype.byname.special]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;22.2.1.4 <a href="lib-locales.html#lib.locale.ctype.byname.special"> [lib.locale.ctype.byname.special]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The new virtual members ctype_byname&lt;char&gt;::do_widen and do_narrow did not get
edited in properly. Instead, the member do_widen appears four times, with wrong argument
lists. </p>
@@ -673,7 +677,7 @@ lists. </p>
from 22.2.1.3 <a href="lib-locales.html#lib.facet.ctype.special"> [lib.facet.ctype.special]</a>.</p>
<hr>
<a name="17"><h3>17.&nbsp;Bad bool parsing</h3></a><p>
-<b>Section:</b>&nbsp;22.2.2.1.2 <a href="lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;22.2.2.1.2 <a href="lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>This section describes the process of parsing a text boolean value from the input
stream. It does not say it recognizes either of the sequences &quot;true&quot; or
&quot;false&quot; and returns the corresponding bool value; instead, it says it recognizes
@@ -753,7 +757,7 @@ change &quot;&amp;&amp;&quot; to &quot;&amp;&quot;.</p>
</blockquote>
<hr>
<a name="18"><h3>18.&nbsp;Get(...bool&amp;) omitted</h3></a><p>
-<b>Section:</b>&nbsp;22.2.2.1.1 <a href="lib-locales.html#lib.facet.num.get.members"> [lib.facet.num.get.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;22.2.2.1.1 <a href="lib-locales.html#lib.facet.num.get.members"> [lib.facet.num.get.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>In the list of num_get&lt;&gt; non-virtual members on page 22-23, the member
that parses bool values was omitted from the list of definitions of non-virtual
members, though it is listed in the class definition and the corresponding
@@ -764,7 +768,7 @@ another get member for bool&amp;, copied from the entry in
22.2.2.1 <a href="lib-locales.html#lib.locale.num.get"> [lib.locale.num.get]</a>.</p>
<hr>
<a name="19"><h3>19.&nbsp;&quot;Noconv&quot; definition too vague</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>
In the definitions of codecvt&lt;&gt;::do_out and do_in, they are
specified to return noconv if &quot;no conversion is
@@ -790,7 +794,7 @@ Change the entry for noconv in the table under paragraph 4 in section
</blockquote>
<hr>
<a name="20"><h3>20.&nbsp;Thousands_sep returns wrong type</h3></a><p>
-<b>Section:</b>&nbsp;22.2.3.1.2 <a href="lib-locales.html#lib.facet.numpunct.virtuals"> [lib.facet.numpunct.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;22.2.3.1.2 <a href="lib-locales.html#lib.facet.numpunct.virtuals"> [lib.facet.numpunct.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The synopsis for numpunct&lt;&gt;::do_thousands_sep, and the
definition of numpunct&lt;&gt;::thousands_sep which calls it, specify
that it returns a value of type char_type. Here it is erroneously
@@ -800,7 +804,7 @@ described as returning a &quot;string_type&quot;. </p>
&quot;string_type&quot; to &quot;char_type&quot;. </p>
<hr>
<a name="21"><h3>21.&nbsp;Codecvt_byname&lt;&gt; instantiations</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1.1.1 <a href="lib-locales.html#lib.locale.category"> [lib.locale.category]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;22.1.1.1.1 <a href="lib-locales.html#lib.locale.category"> [lib.locale.category]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>In the second table in the section, captioned &quot;Required
instantiations&quot;, the instantiations for codecvt_byname&lt;&gt;
have been omitted. These are necessary to allow users to construct a
@@ -816,7 +820,7 @@ codecvt_byname&lt;wchar_t,char,mbstate_t&gt; </pre>
</blockquote>
<hr>
<a name="22"><h3>22.&nbsp;Member open vs. flags</h3></a><p>
-<b>Section:</b>&nbsp;27.8.1.7 <a href="lib-iostreams.html#lib.ifstream.members"> [lib.ifstream.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;27.8.1.7 <a href="lib-iostreams.html#lib.ifstream.members"> [lib.ifstream.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The description of basic_istream&lt;&gt;::open leaves unanswered questions about how it
responds to or changes flags in the error status for the stream. A strict reading
indicates that it ignores the bits and does not change them, which confuses users who do
@@ -843,7 +847,7 @@ believes to have been the original intent.</p>
<hr>
<a name="24"><h3>24.&nbsp;&quot;do_convert&quot; doesn't exist</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The description of codecvt&lt;&gt;::do_out and do_in mentions a
symbol &quot;do_convert&quot; which is not defined in the
standard. This is a leftover from an edit, and should be &quot;do_in
@@ -854,7 +858,7 @@ and do_out&quot;. </p>
or do_out&quot;. </p>
<hr>
<a name="25"><h3>25.&nbsp;String operator&lt;&lt; uses width() value wrong</h3></a><p>
-<b>Section:</b>&nbsp;21.3.7.9 <a href="lib-strings.html#lib.string.io"> [lib.string.io]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;21.3.7.9 <a href="lib-strings.html#lib.string.io"> [lib.string.io]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>In the description of operator&lt;&lt; applied to strings, the standard says that uses
the smaller of os.width() and str.size(), to pad &quot;as described in stage 3&quot;
elsewhere; but this is inconsistent, as this allows no possibility of space for padding. </p>
@@ -870,7 +874,7 @@ to: <br>
...&quot;</p>
<hr>
<a name="26"><h3>26.&nbsp;Bad sentry example</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.1.2 <a href="lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;27.6.1.1.2 <a href="lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>In paragraph 6, the code in the example: </p>
<pre> template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
@@ -905,7 +909,7 @@ decided that it would be counter-productive to include such a lengthy
example, which might well still contain errors.</p>
<hr>
<a name="27"><h3>27.&nbsp;String::erase(range) yields wrong iterator</h3></a><p>
-<b>Section:</b>&nbsp;21.3.5.5 <a href="lib-strings.html#lib.string::erase"> [lib.string::erase]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;21.3.5.5 <a href="lib-strings.html#lib.string::erase"> [lib.string::erase]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The string::erase(iterator first, iterator last) is specified to return an element one
place beyond the next element after the last one erased. E.g. for the string
&quot;abcde&quot;, erasing the range ['b'..'d') would yield an iterator for element 'e',
@@ -926,7 +930,7 @@ while 'd' has not been erased. </p>
</blockquote>
<hr>
<a name="28"><h3>28.&nbsp;Ctype&lt;char&gt;is ambiguous</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.3.2 <a href="lib-locales.html#lib.facet.ctype.char.members"> [lib.facet.ctype.char.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;22.2.1.3.2 <a href="lib-locales.html#lib.facet.ctype.char.members"> [lib.facet.ctype.char.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The description of the vector form of ctype&lt;char&gt;::is can be interpreted to mean
something very different from what was intended. Paragraph 4 says </p>
@@ -946,7 +950,7 @@ vec[]. </p>
</blockquote>
<hr>
<a name="29"><h3>29.&nbsp;Ios_base::init doesn't exist</h3></a><p>
-<b>Section:</b>&nbsp;27.3.1 <a href="lib-iostreams.html#lib.narrow.stream.objects"> [lib.narrow.stream.objects]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;27.3.1 <a href="lib-iostreams.html#lib.narrow.stream.objects"> [lib.narrow.stream.objects]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>Sections 27.3.1 <a href="lib-iostreams.html#lib.narrow.stream.objects"> [lib.narrow.stream.objects]</a> and 27.3.2 <a href="lib-iostreams.html#lib.wide.stream.objects"> [lib.wide.stream.objects]</a> mention
a function ios_base::init, which is not defined. Probably they mean
basic_ios&lt;&gt;::init, defined in 27.4.4.1 <a href="lib-iostreams.html#lib.basic.ios.cons"> [lib.basic.ios.cons]</a>,
@@ -974,7 +978,7 @@ should read </p>
</blockquote>
<hr>
<a name="30"><h3>30.&nbsp;Wrong header for LC_*</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1.1.1 <a href="lib-locales.html#lib.locale.category"> [lib.locale.category]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;22.1.1.1.1 <a href="lib-locales.html#lib.locale.category"> [lib.locale.category]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>Paragraph 2 implies that the C macros LC_CTYPE etc. are defined in &lt;cctype&gt;,
where they are in fact defined elsewhere to appear in &lt;clocale&gt;. </p>
<p><b>Proposed resolution:</b></p>
@@ -982,7 +986,7 @@ where they are in fact defined elsewhere to appear in &lt;clocale&gt;. </p>
&quot;&lt;cctype&gt;&quot; to read &quot;&lt;clocale&gt;&quot;. </p>
<hr>
<a name="31"><h3>31.&nbsp;Immutable locale values</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1 <a href="lib-locales.html#lib.locale"> [lib.locale]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;22.1.1 <a href="lib-locales.html#lib.locale"> [lib.locale]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>Paragraph 6, says &quot;An instance of <tt>locale</tt> is
<i>immutable</i>; once a facet reference is obtained from it,
...&quot;. This has caused some confusion, because locale variables
@@ -1006,7 +1010,7 @@ are manifestly assignable. </p>
</blockquote>
<hr>
<a name="32"><h3>32.&nbsp;Pbackfail description inconsistent</h3></a><p>
-<b>Section:</b>&nbsp;27.5.2.4.4 <a href="lib-iostreams.html#lib.streambuf.virt.pback"> [lib.streambuf.virt.pback]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;27.5.2.4.4 <a href="lib-iostreams.html#lib.streambuf.virt.pback"> [lib.streambuf.virt.pback]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The description of the required state before calling virtual member
basic_streambuf&lt;&gt;::pbackfail requirements is inconsistent with the conditions
described in 27.5.2.2.4 [lib.streambuf.pub.pback] where member sputbackc calls it.
@@ -1037,7 +1041,7 @@ Specifically, the latter says it calls pbackfail if: </p>
the argument value.</p>
<hr>
<a name="33"><h3>33.&nbsp;Codecvt&lt;&gt; mentions from_type</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>In the table defining the results from do_out and do_in, the specification for the
result <i>error</i> says </p>
@@ -1056,7 +1060,7 @@ in the table for the case of _error_ with </p>
</blockquote>
<hr>
<a name="34"><h3>34.&nbsp;True/falsename() not in ctype&lt;&gt;</h3></a><p>
-<b>Section:</b>&nbsp;22.2.2.2.2 <a href="lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;22.2.2.2.2 <a href="lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>In paragraph 19, Effects:, members truename() and falsename are used from facet
ctype&lt;charT&gt;, but it has no such members. Note that this is also a problem in
22.2.2.1.2, addressed in (4). </p>
@@ -1071,7 +1075,7 @@ string_type s = val ? np.truename() : np.falsename(); </pre>
</blockquote>
<hr>
<a name="35"><h3>35.&nbsp;No manipulator unitbuf in synopsis</h3></a><p>
-<b>Section:</b>&nbsp;27.4 <a href="lib-iostreams.html#lib.iostreams.base"> [lib.iostreams.base]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;27.4 <a href="lib-iostreams.html#lib.iostreams.base"> [lib.iostreams.base]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>In 27.4.5.1 <a href="lib-iostreams.html#lib.fmtflags.manip"> [lib.fmtflags.manip]</a>, we have a definition for a manipulator
named &quot;unitbuf&quot;. Unlike other manipulators, it's not listed
in synopsis. Similarly for &quot;nounitbuf&quot;. </p>
@@ -1085,7 +1089,7 @@ ios_base&amp; nounitbuf(ios_base&amp; str); </pre>
</blockquote>
<hr>
<a name="36"><h3>36.&nbsp;Iword &amp; pword storage lifetime omitted</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2.5 <a href="lib-iostreams.html#lib.ios.base.storage"> [lib.ios.base.storage]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;27.4.2.5 <a href="lib-iostreams.html#lib.ios.base.storage"> [lib.ios.base.storage]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>In the definitions for ios_base::iword and pword, the lifetime of the storage is
specified badly, so that an implementation which only keeps the last value stored appears
to conform. In particular, it says: </p>
@@ -1115,7 +1119,7 @@ paragraph 4, replace the sentence: </p>
<p>substituting &quot;iword&quot; or &quot;pword&quot; as appropriate. </p>
<hr>
<a name="37"><h3>37.&nbsp;Leftover &quot;global&quot; reference</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1 <a href="lib-locales.html#lib.locale"> [lib.locale]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;22.1.1 <a href="lib-locales.html#lib.locale"> [lib.locale]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>In the overview of locale semantics, paragraph 4, is the sentence </p>
<blockquote>
@@ -1134,7 +1138,7 @@ expression </p>
</blockquote>
<hr>
<a name="38"><h3>38.&nbsp;Facet definition incomplete</h3></a><p>
-<b>Section:</b>&nbsp;22.1.2 <a href="lib-locales.html#lib.locale.global.templates"> [lib.locale.global.templates]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;22.1.2 <a href="lib-locales.html#lib.locale.global.templates"> [lib.locale.global.templates]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>It has been noticed by Esa Pulkkinen that the definition of
&quot;facet&quot; is incomplete. In particular, a class derived from
another facet, but which does not define a member <i>id</i>, cannot
@@ -1165,7 +1169,7 @@ contains (not inherits) the public static member
<hr>
<a name="39"><h3>39.&nbsp;istreambuf_iterator&lt;&gt;::operator++(int) definition garbled</h3></a><p>
-<b>Section:</b>&nbsp;24.5.3.4 <a href="lib-iterators.html#lib.istreambuf.iterator::op++"> [lib.istreambuf.iterator::op++]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;24.5.3.4 <a href="lib-iterators.html#lib.istreambuf.iterator::op%2B%2B"> [lib.istreambuf.iterator::op++]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>Following the definition of istreambuf_iterator&lt;&gt;::operator++(int) in paragraph
3, the standard contains three lines of garbage text left over from a previous edit. </p>
@@ -1175,11 +1179,11 @@ sbuf_-&gt;sbumpc();
return(tmp); </pre>
</blockquote>
<p><b>Proposed resolution:</b></p>
-<p>In 24.5.3.4 <a href="lib-iterators.html#lib.istreambuf.iterator::op++"> [lib.istreambuf.iterator::op++]</a>, delete the three lines of code at the
+<p>In 24.5.3.4 <a href="lib-iterators.html#lib.istreambuf.iterator::op%2B%2B"> [lib.istreambuf.iterator::op++]</a>, delete the three lines of code at the
end of paragraph 3. </p>
<hr>
<a name="40"><h3>40.&nbsp;Meaningless normative paragraph in examples</h3></a><p>
-<b>Section:</b>&nbsp;22.2.8 <a href="lib-locales.html#lib.facets.examples"> [lib.facets.examples]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;22.2.8 <a href="lib-locales.html#lib.facets.examples"> [lib.facets.examples]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>Paragraph 3 of the locale examples is a description of part of an
implementation technique that has lost its referent, and doesn't mean
anything. </p>
@@ -1190,7 +1194,7 @@ editor's option) replace it with a place-holder to keep the paragraph
numbering the same. </p>
<hr>
<a name="41"><h3>41.&nbsp;Ios_base needs clear(), exceptions()</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2 <a href="lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;27.4.2 <a href="lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The description of ios_base::iword() and pword() in 27.4.2.4 <a href="lib-iostreams.html#lib.ios.members.static"> [lib.ios.members.static]</a>, say that if they fail, they &quot;set badbit,
which may throw an exception&quot;. However, ios_base offers no
interface to set or to test badbit; those interfaces are defined in
@@ -1217,7 +1221,7 @@ setstate(badbit).]</i></p>
<hr>
<a name="42"><h3>42.&nbsp;String ctors specify wrong default allocator</h3></a><p>
-<b>Section:</b>&nbsp;21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The basic_string&lt;&gt; copy constructor: </p>
<pre>basic_string(const basic_string&amp; str, size_type pos = 0,
@@ -1291,7 +1295,7 @@ reflects the LWG consensus.
]</i></p>
<hr>
<a name="46"><h3>46.&nbsp;Minor Annex D errors</h3></a><p>
-<b>Section:</b>&nbsp;D.7 <a href="future.html#depr.str.strstreams"> [depr.str.strstreams]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Brendan Kehoe&nbsp; <b>Date:</b>&nbsp; 1 Jun 1998</p>
+<b>Section:</b>&nbsp;D.7 <a href="future.html#depr.str.strstreams"> [depr.str.strstreams]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Brendan Kehoe&nbsp; <b>Date:</b>&nbsp; 1 Jun 1998</p>
<p>See lib-6522 and edit-814.</p>
<p><b>Proposed resolution:</b></p>
<p>Change D.7.1 <a href="future.html#depr.strstreambuf"> [depr.strstreambuf]</a> (since streambuf is a typedef of
@@ -1316,7 +1320,7 @@ int_type:</p>
typedef typename char_traits&lt;char&gt;::pos_type pos_type;</pre>
<hr>
<a name="47"><h3>47.&nbsp;Imbue() and getloc() Returns clauses swapped</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2.3 <a href="lib-iostreams.html#lib.ios.base.locales"> [lib.ios.base.locales]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;21 Jun 1998</p>
+<b>Section:</b>&nbsp;27.4.2.3 <a href="lib-iostreams.html#lib.ios.base.locales"> [lib.ios.base.locales]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;21 Jun 1998</p>
<p>Section 27.4.2.3 specifies how imbue() and getloc() work. That
section has two RETURNS clauses, and they make no sense as
stated. They make perfect sense, though, if you swap them. Am I
@@ -1326,7 +1330,7 @@ accident?</p>
<p>In 27.4.2.3 <a href="lib-iostreams.html#lib.ios.base.locales"> [lib.ios.base.locales]</a> swap paragraphs 2 and 4.</p>
<hr>
<a name="48"><h3>48.&nbsp;Use of non-existent exception constructor</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2.1.1 <a href="lib-iostreams.html#lib.ios::failure"> [lib.ios::failure]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;21 Jun 1998</p>
+<b>Section:</b>&nbsp;27.4.2.1.1 <a href="lib-iostreams.html#lib.ios::failure"> [lib.ios::failure]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;21 Jun 1998</p>
<p>27.4.2.1.1, paragraph 2, says that class failure initializes the
base class, exception, with exception(msg). Class exception (see
18.6.1) has no such constructor.</p>
@@ -1421,7 +1425,7 @@ text was added in the non-normative footnote to say that operations
on the two streams can be mixed arbitrarily.]</i></p>
<hr>
<a name="50"><h3>50.&nbsp;Copy constructor and assignment operator of ios_base</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2 <a href="lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;21 Jun 1998</p>
+<b>Section:</b>&nbsp;27.4.2 <a href="lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;21 Jun 1998</p>
<p>As written, ios_base has a copy constructor and an assignment
operator. (Nothing in the standard says it doesn't have one, and all
classes have copy constructors and assignment operators unless you
@@ -1448,7 +1452,7 @@ constructor and operator= members as being private.</p>
outweighs any benefit of allowing ios_base objects to be copyable.</p>
<hr>
<a name="51"><h3>51.&nbsp;Requirement to not invalidate iterators missing</h3></a><p>
-<b>Section:</b>&nbsp;23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;David Vandevoorde&nbsp; <b>Date:</b>&nbsp;23 Jun 1998</p>
+<b>Section:</b>&nbsp;23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;David Vandevoorde&nbsp; <b>Date:</b>&nbsp;23 Jun 1998</p>
<p>The std::sort algorithm can in general only sort a given sequence
by moving around values. The list&lt;&gt;::sort() member on the other
hand could move around values or just update internal pointers. Either
@@ -1495,7 +1499,7 @@ particularly the addition of the phrase &quot;or change the values
of&quot;</p>
<hr>
<a name="52"><h3>52.&nbsp;Small I/O problems</h3></a><p>
-<b>Section:</b>&nbsp;27.4.3.2 <a href="lib-iostreams.html#lib.fpos.operations"> [lib.fpos.operations]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;23 Jun 1998</p>
+<b>Section:</b>&nbsp;27.4.3.2 <a href="lib-iostreams.html#lib.fpos.operations"> [lib.fpos.operations]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;23 Jun 1998</p>
<p>First, 27.4.4.1 <a href="lib-iostreams.html#lib.basic.ios.cons"> [lib.basic.ios.cons]</a>, table 89. This is pretty obvious:
it should be titled &quot;basic_ios&lt;&gt;() effects&quot;, not
&quot;ios_base() effects&quot;. </p>
@@ -1523,7 +1527,7 @@ arithmetic is possible.) </p>
effects&quot;. </p>
<hr>
<a name="53"><h3>53.&nbsp;Basic_ios destructor unspecified</h3></a><p>
-<b>Section:</b>&nbsp;27.4.4.1 <a href="lib-iostreams.html#lib.basic.ios.cons"> [lib.basic.ios.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;23 Jun 1998</p>
+<b>Section:</b>&nbsp;27.4.4.1 <a href="lib-iostreams.html#lib.basic.ios.cons"> [lib.basic.ios.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;23 Jun 1998</p>
<p>There's nothing in 27.4.4 saying what basic_ios's destructor does.
The important question is whether basic_ios::~basic_ios() destroys
rdbuf().</p>
@@ -1544,7 +1548,7 @@ footnote which incorrectly said &quot;<tt>rdbuf(0)</tt> does not set
<tt>badbit</tt>&quot;.</p>
<hr>
<a name="54"><h3>54.&nbsp;Basic_streambuf's destructor</h3></a><p>
-<b>Section:</b>&nbsp;27.5.2.1 <a href="lib-iostreams.html#lib.streambuf.cons"> [lib.streambuf.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;25 Jun 1998</p>
+<b>Section:</b>&nbsp;27.5.2.1 <a href="lib-iostreams.html#lib.streambuf.cons"> [lib.streambuf.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;25 Jun 1998</p>
<p>The class synopsis for basic_streambuf shows a (virtual)
destructor, but the standard doesn't say what that destructor does. My
assumption is that it does nothing, but the standard should say so
@@ -1559,7 +1563,7 @@ explicitly. </p>
</blockquote>
<hr>
<a name="55"><h3>55.&nbsp;Invalid stream position is undefined</h3></a><p>
-<b>Section:</b>&nbsp;27 <a href="lib-iostreams.html#lib.input.output"> [lib.input.output]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;26 Jun 1998</p>
+<b>Section:</b>&nbsp;27 <a href="lib-iostreams.html#lib.input.output"> [lib.input.output]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;26 Jun 1998</p>
<p>Several member functions in clause 27 are defined in certain
circumstances to return an &quot;invalid stream position&quot;, a term
that is defined nowhere in the standard. Two places (27.5.2.4.2,
@@ -1618,7 +1622,7 @@ stores an invalid stream position&quot; to &quot;the return value is
<tt>pos_type(off_type(-1))</tt>&quot;</p>
<hr>
<a name="56"><h3>56.&nbsp;Showmanyc's return type</h3></a><p>
-<b>Section:</b>&nbsp;27.5.2 <a href="lib-iostreams.html#lib.streambuf"> [lib.streambuf]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;29 Jun 1998</p>
+<b>Section:</b>&nbsp;27.5.2 <a href="lib-iostreams.html#lib.streambuf"> [lib.streambuf]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;29 Jun 1998</p>
<p>The class summary for basic_streambuf&lt;&gt;, in 27.5.2, says that
showmanyc has return type int. However, 27.5.2.4.3 says that its
return type is streamsize. </p>
@@ -1627,7 +1631,7 @@ return type is streamsize. </p>
27.5.2 <a href="lib-iostreams.html#lib.streambuf"> [lib.streambuf]</a> class summary to <tt>streamsize</tt>.</p>
<hr>
<a name="57"><h3>57.&nbsp;Mistake in char_traits</h3></a><p>
-<b>Section:</b>&nbsp;21.1.3.2 <a href="lib-strings.html#lib.char.traits.specializations.wchar.t"> [lib.char.traits.specializations.wchar.t]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;1 Jul 1998</p>
+<b>Section:</b>&nbsp;21.1.3.2 <a href="lib-strings.html#lib.char.traits.specializations.wchar.t"> [lib.char.traits.specializations.wchar.t]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;1 Jul 1998</p>
<p>21.1.3.2, paragraph 3, says &quot;The types streampos and
wstreampos may be different if the implementation supports no shift
encoding in narrow-oriented iostreams but supports one or more shift
@@ -1646,7 +1650,7 @@ begins &quot;The types streampos and wstreampos may be
different...&quot; . </p>
<hr>
<a name="59"><h3>59.&nbsp;Ambiguity in specification of gbump</h3></a><p>
-<b>Section:</b>&nbsp;27.5.2.3.1 <a href="lib-iostreams.html#lib.streambuf.get.area"> [lib.streambuf.get.area]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;28 Jul 1998</p>
+<b>Section:</b>&nbsp;27.5.2.3.1 <a href="lib-iostreams.html#lib.streambuf.get.area"> [lib.streambuf.get.area]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;28 Jul 1998</p>
<p>27.5.2.3.1 says that basic_streambuf::gbump() &quot;Advances the
next pointer for the input sequence by n.&quot; </p>
@@ -1675,7 +1679,7 @@ former interpretation.)</p>
effects.</p>
<hr>
<a name="60"><h3>60.&nbsp;What is a formatted input function?</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.2.1 <a href="lib-iostreams.html#lib.istream.formatted.reqmts"> [lib.istream.formatted.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;3 Aug 1998</p>
+<b>Section:</b>&nbsp;27.6.1.2.1 <a href="lib-iostreams.html#lib.istream.formatted.reqmts"> [lib.istream.formatted.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;3 Aug 1998</p>
<p>Paragraph 1 of 27.6.1.2.1 contains general requirements for all
formatted input functions. Some of the functions defined in section
27.6.1.2 explicitly say that those requirements apply (&quot;Behaves
@@ -1972,7 +1976,7 @@ by Judy Ward and Matt Austern. This proposed resolution is section
VI of that paper.</p>
<hr>
<a name="61"><h3>61.&nbsp;Ambiguity in iostreams exception policy</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The introduction to the section on unformatted input (27.6.1.3)
says that every unformatted input function catches all exceptions that
were thrown during input, sets badbit, and then conditionally rethrows
@@ -2008,7 +2012,7 @@ parenthetical comment: &quot;(Exceptions thrown from
resolution as better standardese.</p>
<hr>
<a name="62"><h3>62.&nbsp;<tt>Sync</tt>'s return value</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<b>Section:</b>&nbsp;27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The Effects clause for sync() (27.6.1.3, paragraph 36) says that it
&quot;calls rdbuf()-&gt;pubsync() and, if that function returns -1
... returns traits::eof().&quot; </p>
@@ -2021,7 +2025,7 @@ traits::int_type while the return type of sync() is int. </p>
</p>
<hr>
<a name="63"><h3>63.&nbsp;Exception-handling policy for unformatted output</h3></a><p>
-<b>Section:</b>&nbsp;27.6.2.6 <a href="lib-iostreams.html#lib.ostream.unformatted"> [lib.ostream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;11 Aug 1998</p>
+<b>Section:</b>&nbsp;27.6.2.6 <a href="lib-iostreams.html#lib.ostream.unformatted"> [lib.ostream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;11 Aug 1998</p>
<p>Clause 27 details an exception-handling policy for formatted input,
unformatted input, and formatted output. It says nothing for
unformatted output (27.6.2.6). 27.6.2.6 should either include the same
@@ -2052,7 +2056,7 @@ input, unformatted input, and formatted output.
<hr>
<a name="64"><h3>64.&nbsp;Exception handling in <tt>basic_istream::operator&gt;&gt;(basic_streambuf*)</tt>
</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.2.3 <a href="lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;11 Aug 1998 </p>
+<b>Section:</b>&nbsp;27.6.1.2.3 <a href="lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;11 Aug 1998 </p>
<p>27.6.1.2.3, paragraph 13, is ambiguous. It can be interpreted two
different ways, depending on whether the second sentence is read as an
elaboration of the first. </p>
@@ -2070,7 +2074,7 @@ elaboration of the first. </p>
</blockquote>
<hr>
<a name="66"><h3>66.&nbsp;Strstreambuf::setbuf</h3></a><p>
-<b>Section:</b>&nbsp;D.7.1.3 <a href="future.html#depr.strstreambuf.virtuals"> [depr.strstreambuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;18 Aug 1998</p>
+<b>Section:</b>&nbsp;D.7.1.3 <a href="future.html#depr.strstreambuf.virtuals"> [depr.strstreambuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;18 Aug 1998</p>
<p>D.7.1.3, paragraph 19, says that strstreambuf::setbuf
&quot;Performs an operation that is defined separately for each class
derived from strstreambuf&quot;. This is obviously an incorrect
@@ -2089,7 +2093,7 @@ with:</p>
</blockquote>
<hr>
<a name="68"><h3>68.&nbsp;Extractors for char* should store null at end</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.2.3 <a href="lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;14 Jul 1998</p>
+<b>Section:</b>&nbsp;27.6.1.2.3 <a href="lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;14 Jul 1998</p>
<p>Extractors for char* (27.6.1.2.3) do not store a null character
after the extracted character sequence whereas the unformatted
functions like get() do. Why is this?</p>
@@ -2116,7 +2120,7 @@ item from:</p>
</blockquote>
<hr>
<a name="69"><h3>69.&nbsp;Must elements of a vector be contiguous?</h3></a><p>
-<b>Section:</b>&nbsp;23.2.4 <a href="lib-containers.html#lib.vector"> [lib.vector]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;29 Jul 1998</p>
+<b>Section:</b>&nbsp;23.2.4 <a href="lib-containers.html#lib.vector"> [lib.vector]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;29 Jul 1998</p>
<p>The issue is this: Must the elements of a vector be in contiguous memory?</p>
<p>(Please note that this is entirely separate from the question of
@@ -2150,7 +2154,7 @@ directly defined in the standard. Discussion included:</p>
</ul>
<hr>
<a name="70"><h3>70.&nbsp;Uncaught_exception() missing throw() specification</h3></a><p>
-<b>Section:</b>&nbsp;18.6 <a href="lib-support.html#lib.support.exception"> [lib.support.exception]</a>, 18.6.4 <a href="lib-support.html#lib.uncaught"> [lib.uncaught]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;Unknown</p>
+<b>Section:</b>&nbsp;18.6 <a href="lib-support.html#lib.support.exception"> [lib.support.exception]</a>, 18.6.4 <a href="lib-support.html#lib.uncaught"> [lib.uncaught]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;Unknown</p>
<p>In article 3E04@pratique.fr, Valentin Bonnard writes: </p>
<p>uncaught_exception() doesn't have a throw specification.</p>
@@ -2164,7 +2168,7 @@ exception safety is very important.</p>
<p>In 15.5.3 <a href="except.html#except.uncaught"> [except.uncaught]</a>, paragraph 1, 18.6 <a href="lib-support.html#lib.support.exception"> [lib.support.exception]</a>, and 18.6.4 <a href="lib-support.html#lib.uncaught"> [lib.uncaught]</a>, add &quot;throw()&quot; to uncaught_exception().</p>
<hr>
<a name="71"><h3>71.&nbsp;Do_get_monthname synopsis missing argument</h3></a><p>
-<b>Section:</b>&nbsp;22.2.5.1 <a href="lib-locales.html#lib.locale.time.get"> [lib.locale.time.get]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;13 Aug 1998</p>
+<b>Section:</b>&nbsp;22.2.5.1 <a href="lib-locales.html#lib.locale.time.get"> [lib.locale.time.get]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;13 Aug 1998</p>
<p>The locale facet member <tt>time_get&lt;&gt;::do_get_monthname</tt>
is described in 22.2.5.1.2 <a href="lib-locales.html#lib.locale.time.get.virtuals"> [lib.locale.time.get.virtuals]</a> with five arguments,
consistent with do_get_weekday and with its specified use by member
@@ -2180,7 +2184,7 @@ the declaration of member do_monthname as follows:</p>
<hr>
<a name="74"><h3>74.&nbsp;Garbled text for <tt>codecvt::do_max_length</tt>
</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;8 Sep 1998</p>
+<b>Section:</b>&nbsp;22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;8 Sep 1998</p>
<p>The text of <tt>codecvt::do_max_length</tt>'s &quot;Returns&quot;
clause (22.2.1.5.2, paragraph 11) is garbled. It has unbalanced
parentheses and a spurious <b>n</b>.</p>
@@ -2197,7 +2201,7 @@ following:</p>
</blockquote>
<hr>
<a name="75"><h3>75.&nbsp;Contradiction in <tt>codecvt::length</tt>'s argument types</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.5 <a href="lib-locales.html#lib.locale.codecvt"> [lib.locale.codecvt]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp; Matt
+<b>Section:</b>&nbsp;22.2.1.5 <a href="lib-locales.html#lib.locale.codecvt"> [lib.locale.codecvt]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp; Matt
Austern&nbsp; <b>Date:</b>&nbsp; 18 Sep 1998</p>
<p>The class synopses for classes <tt>codecvt&lt;&gt;</tt> (22.2.1.5)
and <tt>codecvt_byname&lt;&gt;</tt> (22.2.1.6) say that the first
@@ -2349,14 +2353,14 @@ return value.]</i></p>
</p>
<hr>
<a name="78"><h3>78.&nbsp;Typo: event_call_back</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2 <a href="lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
+<b>Section:</b>&nbsp;27.4.2 <a href="lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
<p>typo: event_call_back should be event_callback &nbsp; </p>
<p><b>Proposed resolution:</b></p>
<p>In the 27.4.2 <a href="lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a> synopsis change
&quot;event_call_back&quot; to &quot;event_callback&quot;. </p>
<hr>
<a name="79"><h3>79.&nbsp;Inconsistent declaration of polar()</h3></a><p>
-<b>Section:</b>&nbsp;26.2.1 <a href="lib-numerics.html#lib.complex.synopsis"> [lib.complex.synopsis]</a>, 26.2.7 <a href="lib-numerics.html#lib.complex.value.ops"> [lib.complex.value.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
+<b>Section:</b>&nbsp;26.2.1 <a href="lib-numerics.html#lib.complex.synopsis"> [lib.complex.synopsis]</a>, 26.2.7 <a href="lib-numerics.html#lib.complex.value.ops"> [lib.complex.value.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
<p>In 26.2.1 <a href="lib-numerics.html#lib.complex.synopsis"> [lib.complex.synopsis]</a> polar is declared as follows:</p>
<pre> template&lt;class T&gt; complex&lt;T&gt; polar(const T&amp;, const T&amp;); </pre>
@@ -2372,14 +2376,14 @@ return value.]</i></p>
<pre> template&lt;class T&gt; complex&lt;T&gt; polar(const T&amp; rho, const T&amp; theta = 0); </pre>
<hr>
<a name="80"><h3>80.&nbsp;Global Operators of complex declared twice</h3></a><p>
-<b>Section:</b>&nbsp;26.2.1 <a href="lib-numerics.html#lib.complex.synopsis"> [lib.complex.synopsis]</a>, 26.2.2 <a href="lib-numerics.html#lib.complex"> [lib.complex]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
+<b>Section:</b>&nbsp;26.2.1 <a href="lib-numerics.html#lib.complex.synopsis"> [lib.complex.synopsis]</a>, 26.2.2 <a href="lib-numerics.html#lib.complex"> [lib.complex]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
<p>Both 26.2.1 and 26.2.2 contain declarations of global operators for
class complex. This redundancy should be removed.</p>
<p><b>Proposed resolution:</b></p>
<p>Reduce redundancy according to the general style of the standard. </p>
<hr>
<a name="83"><h3>83.&nbsp;String::npos vs. string::max_size()</h3></a><p>
-<b>Section:</b>&nbsp;21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
+<b>Section:</b>&nbsp;21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
<p>Many string member functions throw if size is getting or exceeding
npos. However, I wonder why they don't throw if size is getting or
exceeding max_size() instead of npos. May be npos is known at compile
@@ -2399,7 +2403,7 @@ described in this clause...&quot;) add a new paragraph:</p>
<p>The LWG believes length_error is the correct exception to throw.</p>
<hr>
<a name="86"><h3>86.&nbsp;String constructors don't describe exceptions</h3></a><p>
-<b>Section:</b>&nbsp;21.3.1 <a href="lib-strings.html#lib.string.cons"> [lib.string.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
+<b>Section:</b>&nbsp;21.3.1 <a href="lib-strings.html#lib.string.cons"> [lib.string.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
<p>The constructor from a range:</p>
<pre>template&lt;class InputIterator&gt;
@@ -2419,7 +2423,7 @@ because they are subsumed by the general wording added by the
resolution for issue <a href="lwg-defects.html#83">83</a>.</p>
<hr>
<a name="90"><h3>90.&nbsp;Incorrect description of operator &gt;&gt; for strings</h3></a><p>
-<b>Section:</b>&nbsp;21.3.7.9 <a href="lib-strings.html#lib.string.io"> [lib.string.io]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
+<b>Section:</b>&nbsp;21.3.7.9 <a href="lib-strings.html#lib.string.io"> [lib.string.io]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
<p>The effect of operator &gt;&gt; for strings contain the following item:</p>
<p>&nbsp;&nbsp;&nbsp; <tt>isspace(c,getloc())</tt> is true for the next available input
@@ -2553,7 +2557,7 @@ conversion from <tt>iterator</tt> to <tt>const_iterator</tt>.
<p><i>[Tokyo: The LWG crafted the proposed resolution and rationale.]</i></p>
<hr>
<a name="106"><h3>106.&nbsp;Numeric library private members are implementation defined</h3></a><p>
-<b>Section:</b>&nbsp;26.3.5 <a href="lib-numerics.html#lib.template.slice.array"> [lib.template.slice.array]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;AFNOR&nbsp; <b>Date:</b>&nbsp;7 Oct 1998</p>
+<b>Section:</b>&nbsp;26.3.5 <a href="lib-numerics.html#lib.template.slice.array"> [lib.template.slice.array]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;AFNOR&nbsp; <b>Date:</b>&nbsp;7 Oct 1998</p>
<p>This is the only place in the whole standard where the implementation has to document
something private.</p>
<p><b>Proposed resolution:</b></p>
@@ -2573,7 +2577,7 @@ Remove the comment which says &quot;// remainder implementation defined&quot; fr
</ul>
<hr>
<a name="108"><h3>108.&nbsp;Lifetime of exception::what() return unspecified</h3></a><p>
-<b>Section:</b>&nbsp;18.6.1 <a href="lib-support.html#lib.exception"> [lib.exception]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;AFNOR&nbsp; <b>Date:</b>&nbsp;7 Oct 1998</p>
+<b>Section:</b>&nbsp;18.6.1 <a href="lib-support.html#lib.exception"> [lib.exception]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;AFNOR&nbsp; <b>Date:</b>&nbsp;7 Oct 1998</p>
<p>In 18.6.1, paragraphs 8-9, the lifetime of the return value of
exception::what() is left unspecified. This issue has implications
with exception safety of exception handling: some exceptions should
@@ -2701,7 +2705,7 @@ Leave open - 1.]</i></p>
<hr>
<a name="110"><h3>110.&nbsp;istreambuf_iterator::equal not const</h3></a><p>
-<b>Section:</b>&nbsp;24.5.3 <a href="lib-iterators.html#lib.istreambuf.iterator"> [lib.istreambuf.iterator]</a>, 24.5.3.5 <a href="lib-iterators.html#lib.istreambuf.iterator::equal"> [lib.istreambuf.iterator::equal]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;15 Oct 1998</p>
+<b>Section:</b>&nbsp;24.5.3 <a href="lib-iterators.html#lib.istreambuf.iterator"> [lib.istreambuf.iterator]</a>, 24.5.3.5 <a href="lib-iterators.html#lib.istreambuf.iterator::equal"> [lib.istreambuf.iterator::equal]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;15 Oct 1998</p>
<p>Member istreambuf_iterator&lt;&gt;::equal is not declared
&quot;const&quot;, yet 24.5.3.6 <a href="lib-iterators.html#lib.istreambuf.iterator::op=="> [lib.istreambuf.iterator::op==]</a> says that operator==,
which is const, calls it. This is contradictory. </p>
@@ -2720,7 +2724,7 @@ replace:</p>
</blockquote>
<hr>
<a name="112"><h3>112.&nbsp;Minor typo in <tt>ostreambuf_iterator</tt> constructor</h3></a><p>
-<b>Section:</b>&nbsp;24.5.4.1 <a href="lib-iterators.html#lib.ostreambuf.iter.cons"> [lib.ostreambuf.iter.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;20 Oct 1998</p>
+<b>Section:</b>&nbsp;24.5.4.1 <a href="lib-iterators.html#lib.ostreambuf.iter.cons"> [lib.ostreambuf.iter.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;20 Oct 1998</p>
<p>The <b>requires</b> clause for <tt>ostreambuf_iterator</tt>'s
constructor from an <tt>ostream_type</tt> (24.5.4.1, paragraph 1)
reads &quot;<i>s</i> is not null&quot;. However, <i>s</i> is a
@@ -2740,7 +2744,7 @@ reading:</p>
</blockquote>
<hr>
<a name="114"><h3>114.&nbsp;Placement forms example in error twice</h3></a><p>
-<b>Section:</b>&nbsp;18.4.1.3 <a href="lib-support.html#lib.new.delete.placement"> [lib.new.delete.placement]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;28 Oct 1998</p>
+<b>Section:</b>&nbsp;18.4.1.3 <a href="lib-support.html#lib.new.delete.placement"> [lib.new.delete.placement]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;28 Oct 1998</p>
<p>Section 18.4.1.3 contains the following example: </p>
<pre>[Example: This can be useful for constructing an object at a known address:
@@ -2766,7 +2770,7 @@ likely to fail.</p>
</blockquote>
<hr>
<a name="115"><h3>115.&nbsp;Typo in strstream constructors</h3></a><p>
-<b>Section:</b>&nbsp;D.7.4.1 <a href="future.html#depr.strstream.cons"> [depr.strstream.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;2 Nov 1998</p>
+<b>Section:</b>&nbsp;D.7.4.1 <a href="future.html#depr.strstream.cons"> [depr.strstream.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;2 Nov 1998</p>
<p>D.7.4.1 strstream constructors paragraph 2 says: </p>
<blockquote>
@@ -2958,7 +2962,7 @@ operator&gt;&gt;(int&amp; val);</pre>
<p><i>[Post-Tokyo: PJP provided the above wording.]</i></p>
<hr>
<a name="119"><h3>119.&nbsp;Should virtual functions be allowed to strengthen the exception specification?</h3></a><p>
-<b>Section:</b>&nbsp;17.4.4.8 <a href="lib-intro.html#lib.res.on.exception.handling"> [lib.res.on.exception.handling]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
+<b>Section:</b>&nbsp;17.4.4.8 <a href="lib-intro.html#lib.res.on.exception.handling"> [lib.res.on.exception.handling]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
<p>Section 17.4.4.8 <a href="lib-intro.html#lib.res.on.exception.handling"> [lib.res.on.exception.handling]</a> states: </p>
<p>&quot;An implementation may strengthen the exception-specification
@@ -2992,7 +2996,7 @@ exception-specification for a function&quot;</p>
exception-specification for a non-virtual function&quot;. </p>
<hr>
<a name="122"><h3>122.&nbsp;streambuf/wstreambuf description should not say they are specializations</h3></a><p>
-<b>Section:</b>&nbsp;27.5.2 <a href="lib-iostreams.html#lib.streambuf"> [lib.streambuf]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
+<b>Section:</b>&nbsp;27.5.2 <a href="lib-iostreams.html#lib.streambuf"> [lib.streambuf]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
<p>Section 27.5.2 describes the streambuf classes this way: </p>
<blockquote>
@@ -3016,7 +3020,7 @@ sentences). </p>
typedefs and that is sufficient. </p>
<hr>
<a name="124"><h3>124.&nbsp;ctype_byname&lt;charT&gt;::do_scan_is &amp; do_scan_not return type should be const charT*</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.2 <a href="lib-locales.html#lib.locale.ctype.byname"> [lib.locale.ctype.byname]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
+<b>Section:</b>&nbsp;22.2.1.2 <a href="lib-locales.html#lib.locale.ctype.byname"> [lib.locale.ctype.byname]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
<p>In Section 22.2.1.2 <a href="lib-locales.html#lib.locale.ctype.byname"> [lib.locale.ctype.byname]</a>
ctype_byname&lt;charT&gt;::do_scan_is() and do_scan_not() are declared
to return a const char* not a const charT*. </p>
@@ -3026,7 +3030,7 @@ to return a const char* not a const charT*. </p>
charT*</tt>. </p>
<hr>
<a name="125"><h3>125.&nbsp;valarray&lt;T&gt;::operator!() return type is inconsistent</h3></a><p>
-<b>Section:</b>&nbsp;26.3.2 <a href="lib-numerics.html#lib.template.valarray"> [lib.template.valarray]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
+<b>Section:</b>&nbsp;26.3.2 <a href="lib-numerics.html#lib.template.valarray"> [lib.template.valarray]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
<p>In Section 26.3.2 <a href="lib-numerics.html#lib.template.valarray"> [lib.template.valarray]</a> valarray&lt;T&gt;::operator!() is
declared to return a valarray&lt;T&gt;, but in Section 26.3.2.5 <a href="lib-numerics.html#lib.valarray.unary"> [lib.valarray.unary]</a> it is declared to return a valarray&lt;bool&gt;. The
latter appears to be correct. </p>
@@ -3036,7 +3040,7 @@ latter appears to be correct. </p>
<tt>valarray&lt;bool&gt;</tt>. </p>
<hr>
<a name="126"><h3>126.&nbsp;typos in Effects clause of ctype::do_narrow()</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.1.2 <a href="lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
+<b>Section:</b>&nbsp;22.2.1.1.2 <a href="lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
<p>Typos in 22.2.1.1.2 need to be fixed.</p>
<p><b>Proposed resolution:</b></p>
<p>In Section 22.2.1.1.2 <a href="lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a> change: </p>
@@ -3056,7 +3060,7 @@ latter appears to be correct. </p>
<pre> (is(M,c) || !ctc.is(M, do_narrow(c,dfault)) )</pre>
<hr>
<a name="127"><h3>127.&nbsp;auto_ptr&lt;&gt; conversion issues</h3></a><p>
-<b>Section:</b>&nbsp;20.4.5 <a href="lib-utilities.html#lib.auto.ptr"> [lib.auto.ptr]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Greg Colvin&nbsp; <b>Date:</b>&nbsp;17 Feb 1999</p>
+<b>Section:</b>&nbsp;20.4.5 <a href="lib-utilities.html#lib.auto.ptr"> [lib.auto.ptr]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Greg Colvin&nbsp; <b>Date:</b>&nbsp;17 Feb 1999</p>
<p>There are two problems with the current <tt>auto_ptr</tt> wording
in the standard: </p>
@@ -3122,7 +3126,7 @@ a public assignment operator to the <tt>auto_ptr</tt> definition: </p>
</blockquote>
<hr>
<a name="129"><h3>129.&nbsp;Need error indication from seekp() and seekg()</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>, 27.6.2.4 <a href="lib-iostreams.html#lib.ostream.seeks"> [lib.ostream.seeks]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;22 Feb 1999</p>
+<b>Section:</b>&nbsp;27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>, 27.6.2.4 <a href="lib-iostreams.html#lib.ostream.seeks"> [lib.ostream.seeks]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;22 Feb 1999</p>
<p>Currently, the standard does not specify how seekg() and seekp()
indicate failure. They are not required to set failbit, and they can't
return an error indication because they must return *this, i.e. the
@@ -3146,7 +3150,7 @@ stream state in case of failure.</p>
<p>Setting failbit is the usual error reporting mechanism for streams</p>
<hr>
<a name="132"><h3>132.&nbsp;list::resize description uses random access iterators</h3></a><p>
-<b>Section:</b>&nbsp;23.2.2.2 <a href="lib-containers.html#lib.list.capacity"> [lib.list.capacity]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;6 Mar 1999</p>
+<b>Section:</b>&nbsp;23.2.2.2 <a href="lib-containers.html#lib.list.capacity"> [lib.list.capacity]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;6 Mar 1999</p>
<p>The description reads:</p>
<p>-1- Effects:</p>
@@ -3178,7 +3182,7 @@ with David Abrahams. They had a discussion and believe there is
no issue of exception safety with the proposed resolution.]</i></p>
<hr>
<a name="133"><h3>133.&nbsp;map missing get_allocator()</h3></a><p>
-<b>Section:</b>&nbsp;23.3.1 <a href="lib-containers.html#lib.map"> [lib.map]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;6 Mar 1999</p>
+<b>Section:</b>&nbsp;23.3.1 <a href="lib-containers.html#lib.map"> [lib.map]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;6 Mar 1999</p>
<p>The title says it all.</p>
<p><b>Proposed resolution:</b></p>
<p>Insert in 23.3.1 <a href="lib-containers.html#lib.map"> [lib.map]</a>, paragraph 2,
@@ -3187,7 +3191,7 @@ after operator= in the map declaration:</p>
<pre> allocator_type get_allocator() const;</pre>
<hr>
<a name="134"><h3>134.&nbsp;vector constructors over specified</h3></a><p>
-<b>Section:</b>&nbsp;23.2.4.1 <a href="lib-containers.html#lib.vector.cons"> [lib.vector.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;6 Mar 1999</p>
+<b>Section:</b>&nbsp;23.2.4.1 <a href="lib-containers.html#lib.vector.cons"> [lib.vector.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;6 Mar 1999</p>
<p>The complexity description says: &quot;It does at most 2N calls to the copy constructor
of T and logN reallocations if they are just input iterators ...&quot;.</p>
@@ -3272,7 +3276,7 @@ for basic_streambuf&lt;&gt;::seekpos, or for basic_filebuf&lt;&gt;::seekoff or
basic_filebuf&lt;&gt;::seekpos.]</i></p>
<hr>
<a name="137"><h3>137.&nbsp;Do use_facet and has_facet look in the global locale?</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1 <a href="lib-locales.html#lib.locale"> [lib.locale]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;17 Mar 1999</p>
+<b>Section:</b>&nbsp;22.1.1 <a href="lib-locales.html#lib.locale"> [lib.locale]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;17 Mar 1999</p>
<p>Section 22.1.1 <a href="lib-locales.html#lib.locale"> [lib.locale]</a> says:</p>
<p>-4- In the call to use_facet&lt;Facet&gt;(loc), the type argument
@@ -3301,7 +3305,7 @@ from section 22.1.1. </p>
in the standard.</p>
<hr>
<a name="139"><h3>139.&nbsp;Optional sequence operation table description unclear</h3></a><p>
-<b>Section:</b>&nbsp;23.1.1 <a href="lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;30 Mar 1999</p>
+<b>Section:</b>&nbsp;23.1.1 <a href="lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;30 Mar 1999</p>
<p>The sentence introducing the Optional sequence operation table
(23.1.1 paragraph 12) has two problems:</p>
@@ -3325,7 +3329,7 @@ with:</p>
</blockquote>
<hr>
<a name="141"><h3>141.&nbsp;basic_string::find_last_of, find_last_not_of say pos instead of xpos</h3></a><p>
-<b>Section:</b>&nbsp;21.3.6.4 <a href="lib-strings.html#lib.string::find.last.of"> [lib.string::find.last.of]</a>, 21.3.6.6 <a href="lib-strings.html#lib.string::find.last.not.of"> [lib.string::find.last.not.of]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Arch Robison&nbsp; <b>Date:</b>&nbsp;28 Apr 1999</p>
+<b>Section:</b>&nbsp;21.3.6.4 <a href="lib-strings.html#lib.string::find.last.of"> [lib.string::find.last.of]</a>, 21.3.6.6 <a href="lib-strings.html#lib.string::find.last.not.of"> [lib.string::find.last.not.of]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Arch Robison&nbsp; <b>Date:</b>&nbsp;28 Apr 1999</p>
<p>Sections 21.3.6.4 paragraph 1 and 21.3.6.6 paragraph 1 surely have misprints where they
say:<br>
<br>
@@ -3347,7 +3351,7 @@ proposed resolution.]</i></p>
</p>
<hr>
<a name="142"><h3>142.&nbsp;lexicographical_compare complexity wrong</h3></a><p>
-<b>Section:</b>&nbsp;25.3.8 <a href="lib-algorithms.html#lib.alg.lex.comparison"> [lib.alg.lex.comparison]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;20 Jun 1999</p>
+<b>Section:</b>&nbsp;25.3.8 <a href="lib-algorithms.html#lib.alg.lex.comparison"> [lib.alg.lex.comparison]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;20 Jun 1999</p>
<p>The lexicographical_compare complexity is specified as:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; &quot;At most min((last1 - first1), (last2 - first2))
@@ -3381,7 +3385,7 @@ right! (and Matt states this complexity in his book)</p>
</blockquote>
<hr>
<a name="144"><h3>144.&nbsp;Deque constructor complexity wrong </h3></a><p>
-<b>Section:</b>&nbsp;23.2.1.1 <a href="lib-containers.html#lib.deque.cons"> [lib.deque.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Herb Sutter&nbsp; <b>Date:</b>&nbsp;9 May 1999</p>
+<b>Section:</b>&nbsp;23.2.1.1 <a href="lib-containers.html#lib.deque.cons"> [lib.deque.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Herb Sutter&nbsp; <b>Date:</b>&nbsp;9 May 1999</p>
<p>In 23.2.1.1 paragraph 6, the deque ctor that takes an iterator range appears
to have complexity requirements which are incorrect, and which contradict the
complexity requirements for insert(). I suspect that the text in question,
@@ -3413,7 +3417,7 @@ typo):</p>
</blockquote>
<hr>
<a name="146"><h3>146.&nbsp;complex&lt;T&gt; Inserter and Extractor need sentries</h3></a><p>
-<b>Section:</b>&nbsp;26.2.6 <a href="lib-numerics.html#lib.complex.ops"> [lib.complex.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;12 May 1999</p>
+<b>Section:</b>&nbsp;26.2.6 <a href="lib-numerics.html#lib.complex.ops"> [lib.complex.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;12 May 1999</p>
<p>The <u> extractor</u> for complex numbers is specified as:&nbsp;</p>
<blockquote>
@@ -3488,7 +3492,7 @@ follows an &quot;all-or-none&quot; rule.</p>
as written.</p>
<hr>
<a name="147"><h3>147.&nbsp;Library Intro refers to global functions that aren't global</h3></a><p>
-<b>Section:</b>&nbsp;17.4.4.3 <a href="lib-intro.html#lib.global.functions"> [lib.global.functions]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Lois Goldthwaite&nbsp; <b>Date:</b>&nbsp;4 Jun 1999</p>
+<b>Section:</b>&nbsp;17.4.4.3 <a href="lib-intro.html#lib.global.functions"> [lib.global.functions]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Lois Goldthwaite&nbsp; <b>Date:</b>&nbsp;4 Jun 1999</p>
<p>The library had many global functions until 17.4.1.1 [lib.contents]
paragraph 2 was added: </p>
@@ -3552,7 +3556,7 @@ was changed from &quot;non-member&quot; to &quot;global or non-member.
</p>
<hr>
<a name="148"><h3>148.&nbsp;Functions in the example facet BoolNames should be const</h3></a><p>
-<b>Section:</b>&nbsp;22.2.8 <a href="lib-locales.html#lib.facets.examples"> [lib.facets.examples]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Jeremy Siek&nbsp; <b>Date:</b>&nbsp;3 Jun 1999</p>
+<b>Section:</b>&nbsp;22.2.8 <a href="lib-locales.html#lib.facets.examples"> [lib.facets.examples]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Jeremy Siek&nbsp; <b>Date:</b>&nbsp;3 Jun 1999</p>
<p>In 22.2.8 <a href="lib-locales.html#lib.facets.examples"> [lib.facets.examples]</a> paragraph 13, the do_truename() and
do_falsename() functions in the example facet BoolNames should be
const. The functions they are overriding in
@@ -3566,7 +3570,7 @@ two places:</p>
</blockquote>
<hr>
<a name="150"><h3>150.&nbsp;Find_first_of says integer instead of iterator </h3></a><p>
-<b>Section:</b>&nbsp;25.1.4 <a href="lib-algorithms.html#lib.alg.find.first.of"> [lib.alg.find.first.of]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt McClure&nbsp; <b>Date:</b>&nbsp;30 Jun 1999</p>
+<b>Section:</b>&nbsp;25.1.4 <a href="lib-algorithms.html#lib.alg.find.first.of"> [lib.alg.find.first.of]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt McClure&nbsp; <b>Date:</b>&nbsp;30 Jun 1999</p>
<p><b>Proposed resolution:</b></p>
<p>Change 25.1.4 <a href="lib-algorithms.html#lib.alg.find.first.of"> [lib.alg.find.first.of]</a> paragraph 2 from:</p>
@@ -3583,7 +3587,7 @@ that for some iterator j in the range [first2, last2) ...</p>
</blockquote>
<hr>
<a name="151"><h3>151.&nbsp;Can't currently clear() empty container</h3></a><p>
-<b>Section:</b>&nbsp;23.1.1 <a href="lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Ed Brey&nbsp; <b>Date:</b>&nbsp;21 Jun 1999</p>
+<b>Section:</b>&nbsp;23.1.1 <a href="lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Ed Brey&nbsp; <b>Date:</b>&nbsp;21 Jun 1999</p>
<p>For both sequences and associative containers, a.clear() has the
semantics of erase(a.begin(),a.end()), which is undefined for an empty
container since erase(q1,q2) requires that q1 be dereferenceable
@@ -3622,7 +3626,7 @@ iterators or certain kinds of iterators is unnecessary.
</blockquote>
<hr>
<a name="152"><h3>152.&nbsp;Typo in <tt>scan_is()</tt> semantics</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.1.2 <a href="lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<b>Section:</b>&nbsp;22.2.1.1.2 <a href="lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>The semantics of <tt>scan_is()</tt> (paragraphs 4 and 6) is not exactly described
because there is no function <tt>is()</tt> which only takes a character as
argument. Also, in the effects clause (paragraph 3), the semantic is also kept
@@ -3684,7 +3688,7 @@ same paragraphs.]</i></p>
<hr>
<a name="154"><h3>154.&nbsp;Missing <tt>double</tt> specifier for <tt>do_get()</tt>
</h3></a><p>
-<b>Section:</b>&nbsp;22.2.2.1.2 <a href="lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<b>Section:</b>&nbsp;22.2.2.1.2 <a href="lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>The table in paragraph 7 for the length modifier does not list the length
modifier <tt>l</tt> to be applied if the type is <tt>double</tt>. Thus, the
standard asks the implementation to do undefined things when using <tt>scanf()</tt>
@@ -3699,7 +3703,7 @@ Modifier table to say that for <tt>double</tt> a length modifier
<hr>
<a name="155"><h3>155.&nbsp;Typo in naming the class defining the class <tt>Init</tt>
</h3></a><p>
-<b>Section:</b>&nbsp;27.3 <a href="lib-iostreams.html#lib.iostream.objects"> [lib.iostream.objects]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<b>Section:</b>&nbsp;27.3 <a href="lib-iostreams.html#lib.iostream.objects"> [lib.iostream.objects]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>There are conflicting statements about where the class
<tt>Init</tt> is defined. According to 27.3 <a href="lib-iostreams.html#lib.iostream.objects"> [lib.iostream.objects]</a> paragraph 2
it is defined as <tt>basic_ios::Init</tt>, according to 27.4.2 <a href="lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a> it is defined as <tt>ios_base::Init</tt>.</p>
@@ -3712,7 +3716,7 @@ it is defined as <tt>basic_ios::Init</tt>, according to 27.4.2 <a href="lib-iost
the change.</p>
<hr>
<a name="156"><h3>156.&nbsp;Typo in <tt>imbue()</tt> description</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2.3 <a href="lib-iostreams.html#lib.ios.base.locales"> [lib.ios.base.locales]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<b>Section:</b>&nbsp;27.4.2.3 <a href="lib-iostreams.html#lib.ios.base.locales"> [lib.ios.base.locales]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>There is a small discrepancy between the declarations of
<tt>imbue()</tt>: in 27.4.2 <a href="lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a> the argument is passed as
<tt>locale const&amp;</tt> (correct), in 27.4.2.3 <a href="lib-iostreams.html#lib.ios.base.locales"> [lib.ios.base.locales]</a> it
@@ -3725,7 +3729,7 @@ const&amp;&quot;.</tt>
<hr>
<a name="158"><h3>158.&nbsp;Underspecified semantics for <tt>setbuf()</tt>
</h3></a><p>
-<b>Section:</b>&nbsp;27.5.2.4.2 <a href="lib-iostreams.html#lib.streambuf.virt.buffer"> [lib.streambuf.virt.buffer]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<b>Section:</b>&nbsp;27.5.2.4.2 <a href="lib-iostreams.html#lib.streambuf.virt.buffer"> [lib.streambuf.virt.buffer]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>The default behavior of <tt>setbuf()</tt> is described only for the
situation that <tt>gptr() != 0 &amp;&amp; gptr() != egptr()</tt>:
namely to do nothing. What has to be done in other situations&nbsp;
@@ -3742,7 +3746,7 @@ to: &quot;Default behavior: Does nothing. Returns this.&quot;</p>
<hr>
<a name="159"><h3>159.&nbsp;Strange use of <tt>underflow()</tt>
</h3></a><p>
-<b>Section:</b>&nbsp;27.5.2.4.3 <a href="lib-iostreams.html#lib.streambuf.virt.get"> [lib.streambuf.virt.get]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<b>Section:</b>&nbsp;27.5.2.4.3 <a href="lib-iostreams.html#lib.streambuf.virt.get"> [lib.streambuf.virt.get]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>The description of the meaning of the result of
<tt>showmanyc()</tt> seems to be rather strange: It uses calls to
<tt>underflow()</tt>. Using <tt>underflow()</tt> is strange because
@@ -3757,7 +3761,7 @@ stream&quot;.</p>
<hr>
<a name="160"><h3>160.&nbsp;Typo: Use of non-existing function <tt>exception()</tt>
</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.1 <a href="lib-iostreams.html#lib.istream"> [lib.istream]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<b>Section:</b>&nbsp;27.6.1.1 <a href="lib-iostreams.html#lib.istream"> [lib.istream]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>The paragraph 4 refers to the function <tt>exception()</tt> which
is not defined. Probably, the referred function is
<tt>basic_ios&lt;&gt;::exceptions()</tt>.</p>
@@ -3772,7 +3776,7 @@ is the correct spelling.]</i></p>
<hr>
<a name="161"><h3>161.&nbsp;Typo: <tt>istream_iterator</tt> vs. <tt>istreambuf_iterator</tt>
</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.2.2 <a href="lib-iostreams.html#lib.istream.formatted.arithmetic"> [lib.istream.formatted.arithmetic]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<b>Section:</b>&nbsp;27.6.1.2.2 <a href="lib-iostreams.html#lib.istream.formatted.arithmetic"> [lib.istream.formatted.arithmetic]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>The note in the second paragraph pretends that the first argument
is an object of type <tt>istream_iterator</tt>. This is wrong: It is
an object of type <tt>istreambuf_iterator</tt>.</p>
@@ -3787,7 +3791,7 @@ an object of type <tt>istreambuf_iterator</tt>.</p>
</blockquote>
<hr>
<a name="164"><h3>164.&nbsp;do_put() has apparently unused fill argument</h3></a><p>
-<b>Section:</b>&nbsp;22.2.5.3.2 <a href="lib-locales.html#lib.locale.time.put.virtuals"> [lib.locale.time.put.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
+<b>Section:</b>&nbsp;22.2.5.3.2 <a href="lib-locales.html#lib.locale.time.put.virtuals"> [lib.locale.time.put.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
<p>In 22.2.5.3.2 <a href="lib-locales.html#lib.locale.time.put.virtuals"> [lib.locale.time.put.virtuals]</a> the do_put() function is specified
as taking a fill character as an argument, but the description of the
function does not say whether the character is used at all and, if so,
@@ -3857,7 +3861,7 @@ called from what functions and eg to state specifically that flush()
is allowed to call sync() while other functions are not.]</i></p>
<hr>
<a name="168"><h3>168.&nbsp;Typo: formatted vs. unformatted</h3></a><p>
-<b>Section:</b>&nbsp;27.6.2.6 <a href="lib-iostreams.html#lib.ostream.unformatted"> [lib.ostream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<b>Section:</b>&nbsp;27.6.2.6 <a href="lib-iostreams.html#lib.ostream.unformatted"> [lib.ostream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>The first paragraph begins with a descriptions what has to be done
in <i>formatted</i> output functions. Probably this is a typo and the
paragraph really want to describe unformatted output functions...</p>
@@ -3872,7 +3876,7 @@ sentences, change the word &quot;formatted&quot; to
</blockquote>
<hr>
<a name="169"><h3>169.&nbsp;Bad efficiency of <tt>overflow()</tt> mandated</h3></a><p>
-<b>Section:</b>&nbsp;27.7.1.3 <a href="lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<b>Section:</b>&nbsp;27.7.1.3 <a href="lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>Paragraph 8, Notes, of this section seems to mandate an extremely
inefficient way of buffer handling for <tt>basic_stringbuf</tt>,
especially in view of the restriction that <tt>basic_ostream</tt>
@@ -3894,7 +3898,7 @@ solution is to handle this in <tt>underflow()</tt>.</p>
<hr>
<a name="170"><h3>170.&nbsp;Inconsistent definition of <tt>traits_type</tt>
</h3></a><p>
-<b>Section:</b>&nbsp;27.7.4 <a href="lib-iostreams.html#lib.stringstream"> [lib.stringstream]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<b>Section:</b>&nbsp;27.7.4 <a href="lib-iostreams.html#lib.stringstream"> [lib.stringstream]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>The classes <tt>basic_stringstream</tt> (27.7.4 <a href="lib-iostreams.html#lib.stringstream"> [lib.stringstream]</a>),
<tt>basic_istringstream</tt> (27.7.2 <a href="lib-iostreams.html#lib.istringstream"> [lib.istringstream]</a>), and
<tt>basic_ostringstream</tt> (27.7.3 <a href="lib-iostreams.html#lib.ostringstream"> [lib.ostringstream]</a>) are inconsistent
@@ -3964,7 +3968,7 @@ paragraph 14 from:</p>
<hr>
<a name="172"><h3>172.&nbsp;Inconsistent types for <tt>basic_istream::ignore()</tt>
</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Greg Comeau, Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
+<b>Section:</b>&nbsp;27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Greg Comeau, Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
<p>In 27.6.1.1 <a href="lib-iostreams.html#lib.istream"> [lib.istream]</a> the function
<tt>ignore()</tt> gets an object of type <tt>streamsize</tt> as first
argument. However, in 27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>
@@ -3989,7 +3993,7 @@ of <tt>int</tt> in the description of <tt>ignore()</tt> to
<hr>
<a name="173"><h3>173.&nbsp;Inconsistent types for <tt>basic_filebuf::setbuf()</tt>
</h3></a><p>
-<b>Section:</b>&nbsp;27.8.1.4 <a href="lib-iostreams.html#lib.filebuf.virtuals"> [lib.filebuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Greg Comeau, Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
+<b>Section:</b>&nbsp;27.8.1.4 <a href="lib-iostreams.html#lib.filebuf.virtuals"> [lib.filebuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Greg Comeau, Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
<p>
In 27.8.1.1 <a href="lib-iostreams.html#lib.filebuf"> [lib.filebuf]</a> the function <tt>setbuf()</tt> gets an
@@ -4013,7 +4017,7 @@ as described in issue <a href="lwg-defects.html#172">172</a>.
<hr>
<a name="174"><h3>174.&nbsp;Typo: <tt>OFF_T</tt> vs. <tt>POS_T</tt>
</h3></a><p>
-<b>Section:</b>&nbsp;D.6 <a href="future.html#depr.ios.members"> [depr.ios.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
+<b>Section:</b>&nbsp;D.6 <a href="future.html#depr.ios.members"> [depr.ios.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
<p>According to paragraph 1 of this section, <tt>streampos</tt> is the
type <tt>OFF_T</tt>, the same type as <tt>streamoff</tt>. However, in
paragraph 6 the <tt>streampos</tt> gets the type <tt>POS_T</tt>
@@ -4024,7 +4028,7 @@ OFF_T streampos;</tt>&quot; to &quot;<tt>typedef POS_T
streampos;</tt>&quot;</p>
<hr>
<a name="175"><h3>175.&nbsp;Ambiguity for <tt>basic_streambuf::pubseekpos()</tt> and a few other functions.</h3></a><p>
-<b>Section:</b>&nbsp;D.6 <a href="future.html#depr.ios.members"> [depr.ios.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
+<b>Section:</b>&nbsp;D.6 <a href="future.html#depr.ios.members"> [depr.ios.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
<p>According to paragraph 8 of this section, the methods
<tt>basic_streambuf::pubseekpos()</tt>,
<tt>basic_ifstream::open()</tt>, and <tt>basic_ofstream::open</tt>
@@ -4044,7 +4048,7 @@ argument is not specified.</p>
</p>
<hr>
<a name="176"><h3>176.&nbsp;<tt>exceptions()</tt> in <tt>ios_base</tt>...?</h3></a><p>
-<b>Section:</b>&nbsp;D.6 <a href="future.html#depr.ios.members"> [depr.ios.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
+<b>Section:</b>&nbsp;D.6 <a href="future.html#depr.ios.members"> [depr.ios.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
<p>The &quot;overload&quot; for the function <tt>exceptions()</tt> in
paragraph 8 gives the impression that there is another function of
this function defined in class <tt>ios_base</tt>. However, this is not
@@ -4056,7 +4060,7 @@ in clause 27 <a href="lib-iostreams.html#lib.input.output"> [lib.input.output]</
function <tt>exceptions()</tt>into class <tt>basic_ios</tt>.</p>
<hr>
<a name="181"><h3>181.&nbsp;make_pair() unintended behavior</h3></a><p>
-<b>Section:</b>&nbsp;20.2.2 <a href="lib-utilities.html#lib.pairs"> [lib.pairs]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;3 Aug 1999</p>
+<b>Section:</b>&nbsp;20.2.2 <a href="lib-utilities.html#lib.pairs"> [lib.pairs]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;3 Aug 1999</p>
<p>The claim has surfaced in Usenet that expressions such as<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tt>make_pair(&quot;abc&quot;, 3)</tt><br>
@@ -4549,7 +4553,7 @@ the case that users cannot rely on the type of a pointer to a
nonvirtual member of a standard library class.</p>
<hr>
<a name="189"><h3>189.&nbsp;setprecision() not specified correctly</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2.2 <a href="lib-iostreams.html#lib.fmtflags.state"> [lib.fmtflags.state]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;25 Aug 1999</p>
+<b>Section:</b>&nbsp;27.4.2.2 <a href="lib-iostreams.html#lib.fmtflags.state"> [lib.fmtflags.state]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;25 Aug 1999</p>
<p>27.4.2.2 paragraph 9 claims that setprecision() sets the precision,
and includes a parenthetical note saying that it is the number of
digits after the decimal point.<br>
@@ -4566,7 +4570,7 @@ correct the statement in 27.4.2.2</p>
&quot;(number of digits after the decimal point)&quot;.</p>
<hr>
<a name="193"><h3>193.&nbsp;Heap operations description incorrect</h3></a><p>
-<b>Section:</b>&nbsp;25.3.6 <a href="lib-algorithms.html#lib.alg.heap.operations"> [lib.alg.heap.operations]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Markus Mauhart&nbsp; <b>Date:</b>&nbsp;24 Sep 1999</p>
+<b>Section:</b>&nbsp;25.3.6 <a href="lib-algorithms.html#lib.alg.heap.operations"> [lib.alg.heap.operations]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Markus Mauhart&nbsp; <b>Date:</b>&nbsp;24 Sep 1999</p>
<p>25.3.6 [lib.alg.heap.operations] states two key properties of a heap [a,b), the first of them
is<br>
<br>
@@ -4593,7 +4597,7 @@ resolution.</p>
</blockquote>
<hr>
<a name="195"><h3>195.&nbsp;Should <tt>basic_istream::sentry</tt>'s constructor ever set eofbit?</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.1.2 <a href="lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;13 Oct 1999</p>
+<b>Section:</b>&nbsp;27.6.1.1.2 <a href="lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;13 Oct 1999</p>
<p>Suppose that <tt>is.flags() &amp; ios_base::skipws</tt> is nonzero.
What should <tt>basic_istream&lt;&gt;::sentry</tt>'s constructor do if it
reaches eof while skipping whitespace? 27.6.1.1.2/5 suggests it
@@ -4768,7 +4772,7 @@ predefined iterators are as strong as users expect.</p>
<hr>
<a name="199"><h3>199.&nbsp;What does <tt>allocate(0)</tt> return?</h3></a><p>
-<b>Section:</b>&nbsp;20.1.5 <a href="lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;19 Nov 1999</p>
+<b>Section:</b>&nbsp;20.1.5 <a href="lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;19 Nov 1999</p>
<p>
Suppose that <tt>A</tt> is a class that conforms to the
Allocator requirements of Table 32, and <tt>a</tt> is an
@@ -4791,7 +4795,7 @@ would be over-specification to mandate the return value.
</p>
<hr>
<a name="208"><h3>208.&nbsp;Unnecessary restriction on past-the-end iterators</h3></a><p>
-<b>Section:</b>&nbsp;24.1 <a href="lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Stephen Cleary&nbsp; <b>Date:</b>&nbsp;02 Feb 2000</p>
+<b>Section:</b>&nbsp;24.1 <a href="lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Stephen Cleary&nbsp; <b>Date:</b>&nbsp;02 Feb 2000</p>
<p>In 24.1 paragraph 5, it is stated &quot;. . . Dereferenceable and
past-the-end values are always non-singular.&quot;</p>
<p>This places an unnecessary restriction on past-the-end iterators for
@@ -4818,7 +4822,7 @@ iterators. Null pointers are singular.
</p>
<hr>
<a name="209"><h3>209.&nbsp;basic_string declarations inconsistent</h3></a><p>
-<b>Section:</b>&nbsp;21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Igor Stauder&nbsp; <b>Date:</b>&nbsp;11 Feb 2000</p>
+<b>Section:</b>&nbsp;21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Igor Stauder&nbsp; <b>Date:</b>&nbsp;11 Feb 2000</p>
<p>In Section 21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a> the basic_string member function
declarations use a consistent style except for the following functions:</p>
<blockquote>
@@ -4848,7 +4852,7 @@ change.
</p>
<hr>
<a name="210"><h3>210.&nbsp;distance first and last confused</h3></a><p>
-<b>Section:</b>&nbsp;25 <a href="lib-algorithms.html#lib.algorithms"> [lib.algorithms]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Lisa Lippincott&nbsp; <b>Date:</b>&nbsp;15 Feb 2000</p>
+<b>Section:</b>&nbsp;25 <a href="lib-algorithms.html#lib.algorithms"> [lib.algorithms]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Lisa Lippincott&nbsp; <b>Date:</b>&nbsp;15 Feb 2000</p>
<p>In paragraph 9 of section 25 <a href="lib-algorithms.html#lib.algorithms"> [lib.algorithms]</a>, it is written:</p>
<blockquote>
<p> In the description of the algorithms operators + and - are used
@@ -4869,7 +4873,7 @@ or change the return to distance(b,a). The LWG preferred the
former for consistency.</p>
<hr>
<a name="211"><h3>211.&nbsp;operator&gt;&gt;(istream&amp;, string&amp;) doesn't set failbit</h3></a><p>
-<b>Section:</b>&nbsp;21.3.7.9 <a href="lib-strings.html#lib.string.io"> [lib.string.io]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Scott Snyder&nbsp; <b>Date:</b>&nbsp;4 Feb 2000</p>
+<b>Section:</b>&nbsp;21.3.7.9 <a href="lib-strings.html#lib.string.io"> [lib.string.io]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Scott Snyder&nbsp; <b>Date:</b>&nbsp;4 Feb 2000</p>
<p>The description of the stream extraction operator for std::string (section
21.3.7.9 [lib.string.io]) does not contain a requirement that failbit be set in
the case that the operator fails to extract any characters from the input
@@ -4897,7 +4901,7 @@ is.setstate(ios::failbit) which may throw ios_base::failure
</blockquote>
<hr>
<a name="212"><h3>212.&nbsp;Empty range behavior unclear for several algorithms</h3></a><p>
-<b>Section:</b>&nbsp;25.3.7 <a href="lib-algorithms.html#lib.alg.min.max"> [lib.alg.min.max]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;26 Feb 2000</p>
+<b>Section:</b>&nbsp;25.3.7 <a href="lib-algorithms.html#lib.alg.min.max"> [lib.alg.min.max]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;26 Feb 2000</p>
<p>The standard doesn't specify what min_element() and max_element() shall
return if the range is empty (first equals last). The usual implementations
return last. This problem seems also apply to partition(), stable_partition(),
@@ -4940,7 +4944,7 @@ extending the proposed resolution to lower_bound, upper_bound, and
equal_range.]</i></p>
<hr>
<a name="217"><h3>217.&nbsp;Facets example (Classifying Japanese characters) contains errors</h3></a><p>
-<b>Section:</b>&nbsp;22.2.8 <a href="lib-locales.html#lib.facets.examples"> [lib.facets.examples]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;29 Feb 2000</p>
+<b>Section:</b>&nbsp;22.2.8 <a href="lib-locales.html#lib.facets.examples"> [lib.facets.examples]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;29 Feb 2000</p>
<p>The example in 22.2.8, paragraph 11 contains the following errors:</p>
<p>1) The member function `My::JCtype::is_kanji()' is non-const; the function
must be const in order for it to be callable on a const object (a reference to
@@ -4984,7 +4988,7 @@ declared above.</pre>
}</pre>
<hr>
<a name="220"><h3>220.&nbsp;~ios_base() usage valid?</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2.7 <a href="lib-iostreams.html#lib.ios.base.cons"> [lib.ios.base.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Jonathan Schilling, Howard Hinnant&nbsp; <b>Date:</b>&nbsp;13 Mar 2000</p>
+<b>Section:</b>&nbsp;27.4.2.7 <a href="lib-iostreams.html#lib.ios.base.cons"> [lib.ios.base.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Jonathan Schilling, Howard Hinnant&nbsp; <b>Date:</b>&nbsp;13 Mar 2000</p>
<p>The pre-conditions for the ios_base destructor are described in 27.4.2.7
paragraph 2:</p>
<blockquote>
@@ -5060,7 +5064,7 @@ of digits will not be recognized. This design decision was made
deliberately, with full knowledge of that limitation.</p>
<hr>
<a name="222"><h3>222.&nbsp;Are throw clauses necessary if a throw is already implied by the effects clause?</h3></a><p>
-<b>Section:</b>&nbsp;17.3.1.3 <a href="lib-intro.html#lib.structure.specifications"> [lib.structure.specifications]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;17 Mar 2000</p>
+<b>Section:</b>&nbsp;17.3.1.3 <a href="lib-intro.html#lib.structure.specifications"> [lib.structure.specifications]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;17 Mar 2000</p>
<p>Section 21.3.6.8 describes the basic_string::compare function this way:</p>
<blockquote>
<pre>21.3.6.8 - basic_string::compare [lib.string::compare]
@@ -5102,7 +5106,7 @@ non-normative. The proposed resolution from the LWG clarifies the
footnote.</p>
<hr>
<a name="223"><h3>223.&nbsp;reverse algorithm should use iter_swap rather than swap</h3></a><p>
-<b>Section:</b>&nbsp;25.2.9 <a href="lib-algorithms.html#lib.alg.reverse"> [lib.alg.reverse]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;21 Mar 2000</p>
+<b>Section:</b>&nbsp;25.2.9 <a href="lib-algorithms.html#lib.alg.reverse"> [lib.alg.reverse]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;21 Mar 2000</p>
<p>Shouldn't the effects say &quot;applies iter_swap to all pairs...&quot;?</p>
<p><b>Proposed resolution:</b></p>
<p>In 25.2.9 <a href="lib-algorithms.html#lib.alg.reverse"> [lib.alg.reverse]</a>, replace:</p>
@@ -5117,7 +5121,7 @@ footnote.</p>
</blockquote>
<hr>
<a name="224"><h3>224.&nbsp;clear() complexity for associative containers refers to undefined N</h3></a><p>
-<b>Section:</b>&nbsp;23.1.2 <a href="lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Ed Brey&nbsp; <b>Date:</b>&nbsp;23 Mar 2000</p>
+<b>Section:</b>&nbsp;23.1.2 <a href="lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Ed Brey&nbsp; <b>Date:</b>&nbsp;23 Mar 2000</p>
<p>In the associative container requirements table in 23.1.2 paragraph 7,
a.clear() has complexity &quot;log(size()) + N&quot;. However, the meaning of N
is not defined.</p>
@@ -5132,7 +5136,7 @@ log(N))</i>. The text in the standard is probably an incorrect
cut-and-paste from the range version of <tt>erase</tt>.</p>
<hr>
<a name="227"><h3>227.&nbsp;std::swap() should require CopyConstructible or DefaultConstructible arguments</h3></a><p>
-<b>Section:</b>&nbsp;25.2.2 <a href="lib-algorithms.html#lib.alg.swap"> [lib.alg.swap]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#DR">DR</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;09 Apr 2000</p>
+<b>Section:</b>&nbsp;25.2.2 <a href="lib-algorithms.html#lib.alg.swap"> [lib.alg.swap]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;09 Apr 2000</p>
<p>25.2.2 reads:</p>
<blockquote>
<p>
diff --git a/libstdc++-v3/docs/html/ext/sgiexts.html b/libstdc++-v3/docs/html/ext/sgiexts.html
index ad2b5b40f13..08775cffd3e 100644
--- a/libstdc++-v3/docs/html/ext/sgiexts.html
+++ b/libstdc++-v3/docs/html/ext/sgiexts.html
@@ -3,6 +3,7 @@
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta name="AUTHOR" content="pme@gcc.gnu.org (Phil Edwards)" />
<meta name="KEYWORDS" content="libstdc++, libstdc++-v3, GCC, g++, STL, SGI" />
@@ -28,7 +29,7 @@ libstdc++-v3</a></h1>
for a description). Not every chapter may have extensions, and the
extensions may come and go. Also, this page is incomplete because the
author is pressed for time. Check back often; the latest change was on
- $Date: 2002/10/07 18:11:22 $ (UTC).
+ $Date: 2002/11/11 01:10:44 $ (UTC).
</p>
<p>Descriptions range from the scanty to the verbose. You should also check
diff --git a/libstdc++-v3/docs/html/faq/index.html b/libstdc++-v3/docs/html/faq/index.html
index c4f4e78a600..f7a9b0ac708 100644
--- a/libstdc++-v3/docs/html/faq/index.html
+++ b/libstdc++-v3/docs/html/faq/index.html
@@ -3,6 +3,7 @@
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="KEYWORDS" content="libstdc++, libstdc++-v3, GCC, g++, libg++, STL" />
@@ -69,7 +70,8 @@
<li><a href="#3_5"><code>_XOPEN_SOURCE</code> /
<code>_GNU_SOURCE</code> / etc is always defined</a>
</li>
- <li><a href="#3_6">OS X ctype.h is broken! How can I hack it?</a> </li>
+ <li><a href="#3_6">OS X ctype.h is broken! How can I hack it?</a></li>
+ <li><a href="#3_7">Threading is broken on i386</a></li>
</ol>
</li>
@@ -123,12 +125,14 @@
ongoing project to implement the ISO 14882 Standard C++ library
as described in chapters 17 through 27 and annex D. As the
library reaches stable plateaus, it is captured in a snapshot
- and released. The current release is
+ and released. The latest release is
<a href="http://gcc.gnu.org/libstdc++/index.html#download">the
- fourteenth snapshot</a>. For those who want to see exactly how
+ fourteenth snapshot</a> but newer versions have been included
+ in recent GCC releases. For those who want to see exactly how
far the project has come, or just want the latest
bleeding-edge code, the up-to-date source is available over
- anonymous CVS, and can even be browsed over the Web (see below).
+ anonymous CVS, and can even be browsed over the Web (see
+ <a href="#1_4">1.4</a> below).
</p>
<p>The older libstdc++-v2 project is no longer maintained; the code
has been completely replaced and rewritten.
@@ -495,6 +499,18 @@ which is no longer available, thanks deja...-->
</p>
<hr />
+ <h2><a name="3_7">Threading is broken on i386</a></h2>
+ <p>Support for atomic integer operations is/was broken on i386
+ platforms. The assembly code accidentally used opcodes that are
+ only available on the i486 and later. So if you configured GCC
+ to target, for example, i386-linux, but actually used the programs
+ on an i686, then you would encounter no problems. Only when
+ actually running the code on a i386 will the problem appear.
+ </p>
+ <p>This is fixed in 3.2.2.
+ </p>
+
+<hr />
<h1><a name="4_0">4.0 Known Bugs and Non-Bugs</a></h1>
<em>Note that this section can get rapdily outdated -- such is the
nature of an open-source project. For the latest information, join
diff --git a/libstdc++-v3/docs/html/faq/index.txt b/libstdc++-v3/docs/html/faq/index.txt
index 59632af35d4..3ea90597d43 100644
--- a/libstdc++-v3/docs/html/faq/index.txt
+++ b/libstdc++-v3/docs/html/faq/index.txt
@@ -34,31 +34,32 @@
4. [24]I can't use 'long long' on Solaris
5. [25]_XOPEN_SOURCE / _GNU_SOURCE / etc is always defined
6. [26]OS X ctype.h is broken! How can I hack it?
- 4. [27]Known Bugs and Non-Bugs
- 1. [28]What works already?
- 2. [29]Bugs in gcc/g++ (not libstdc++-v3)
- 3. [30]Bugs in the C++ language/lib specification
- 4. [31]Things in libstdc++ that only look like bugs
- o [32]reopening a stream fails
- o [33]-Weffc++ complains too much
- o [34]"ambiguous overloads" after including an old-style
+ 7. [27]Threading is broken on i386
+ 4. [28]Known Bugs and Non-Bugs
+ 1. [29]What works already?
+ 2. [30]Bugs in gcc/g++ (not libstdc++-v3)
+ 3. [31]Bugs in the C++ language/lib specification
+ 4. [32]Things in libstdc++ that only look like bugs
+ o [33]reopening a stream fails
+ o [34]-Weffc++ complains too much
+ o [35]"ambiguous overloads" after including an old-style
header
- o [35]The g++-3 headers are not ours
- o [36]compilation errors from streambuf.h
- o [37]errors about *Concept and constraints in the STL...
- o [38]program crashes when using library code in a
+ o [36]The g++-3 headers are not ours
+ o [37]compilation errors from streambuf.h
+ o [38]errors about *Concept and constraints in the STL...
+ o [39]program crashes when using library code in a
dynamically-loaded library
- 5. [39]Aw, that's easy to fix!
- 5. [40]Miscellaneous
- 1. [41]string::iterator is not char*; vector<T>::iterator is not
+ 5. [40]Aw, that's easy to fix!
+ 5. [41]Miscellaneous
+ 1. [42]string::iterator is not char*; vector<T>::iterator is not
T*
- 2. [42]What's next after libstdc++-v3?
- 3. [43]What about the STL from SGI?
- 4. [44]Extensions and Backward Compatibility
- 5. [45][removed]
- 6. [46]Is libstdc++-v3 thread-safe?
- 7. [47]How do I get a copy of the ISO C++ Standard?
- 8. [48]What's an ABI and why is it so messy?
+ 2. [43]What's next after libstdc++-v3?
+ 3. [44]What about the STL from SGI?
+ 4. [45]Extensions and Backward Compatibility
+ 5. [46][removed]
+ 6. [47]Is libstdc++-v3 thread-safe?
+ 7. [48]How do I get a copy of the ISO C++ Standard?
+ 8. [49]What's an ABI and why is it so messy?
_________________________________________________________________
1.0 General Information
@@ -68,18 +69,19 @@
The GNU Standard C++ Library v3 is an ongoing project to implement the
ISO 14882 Standard C++ library as described in chapters 17 through 27
and annex D. As the library reaches stable plateaus, it is captured in
- a snapshot and released. The current release is [49]the fourteenth
- snapshot. For those who want to see exactly how far the project has
- come, or just want the latest bleeding-edge code, the up-to-date
- source is available over anonymous CVS, and can even be browsed over
- the Web (see below).
+ a snapshot and released. The latest release is [50]the fourteenth
+ snapshot but newer versions have been included in recent GCC releases.
+ For those who want to see exactly how far the project has come, or
+ just want the latest bleeding-edge code, the up-to-date source is
+ available over anonymous CVS, and can even be browsed over the Web
+ (see [51]1.4 below).
The older libstdc++-v2 project is no longer maintained; the code has
- been completely replaced and rewritten. [50]If you are using V2, then
+ been completely replaced and rewritten. [52]If you are using V2, then
you need to report bugs to your system vendor, not to the V3 list.
A more formal description of the V3 goals can be found in the official
- [51]design document.
+ [53]design document.
_________________________________________________________________
1.2 Why should I use libstdc++?
@@ -92,8 +94,8 @@
The GNU C/C++/FORTRAN/<pick-a-language> compiler (gcc, g++, etc) is
widely considered to be one of the leading compilers in the world. Its
- development has recently been taken over by the [52]GCC team. All of
- the rapid development and near-legendary [53]portability that are the
+ development has recently been taken over by the [54]GCC team. All of
+ the rapid development and near-legendary [55]portability that are the
hallmarks of an open-source project are being applied to libstdc++.
That means that all of the Standard classes and functions (such as
@@ -111,16 +113,16 @@
Development and discussion is held on the libstdc++ mailing list.
Subscribing to the list, or searching the list archives, is open to
- everyone. You can read instructions for doing so on the [54]homepage.
+ everyone. You can read instructions for doing so on the [56]homepage.
If you have questions, ideas, code, or are just curious, sign up!
_________________________________________________________________
1.4 How do I get libstdc++?
- The fourteenth (and latest) snapshot of libstdc++-v3 is [55]available
+ The fourteenth (and latest) snapshot of libstdc++-v3 is [57]available
via ftp.
- The [56]homepage has instructions for retrieving the latest CVS
+ The [58]homepage has instructions for retrieving the latest CVS
sources, and for browsing the CVS sources over the web.
The subset commonly known as the Standard Template Library (chapters
@@ -136,7 +138,7 @@
1.6 How do I contribute to the effort?
- Here is [57]a page devoted to this topic. Subscribing to the mailing
+ Here is [59]a page devoted to this topic. Subscribing to the mailing
list (see above, or the homepage) is a very good idea if you have
something to contribute, or if you have spare time and want to help.
Contributions don't have to be in the form of source code; anybody who
@@ -171,11 +173,11 @@
extracted into an updated utilities library, but nobody has stated
such a project yet.
- (The [58]Boost site houses free C++ libraries that do varying things,
+ (The [60]Boost site houses free C++ libraries that do varying things,
and happened to be started by members of the Standards Committee.
Certain "useful stuff" classes will probably migrate there.)
- For the bold and/or desperate, the [59]GCC FAQ describes where to find
+ For the bold and/or desperate, the [61]GCC FAQ describes where to find
the last libg++ source.
_________________________________________________________________
@@ -185,16 +187,16 @@
remains unanswered, then just ask the mailing list. At present, you do
not need to be subscribed to the list to send a message to it. More
information is available on the homepage (including how to browse the
- list archives); to send to the list, use [60]libstdc++@gcc.gnu.org.
+ list archives); to send to the list, use [62]libstdc++@gcc.gnu.org.
If you have a question that you think should be included here, or if
- you have a question about a question/answer here, contact [61]Phil
- Edwards or [62]Gabriel Dos Reis.
+ you have a question about a question/answer here, contact [63]Phil
+ Edwards or [64]Gabriel Dos Reis.
_________________________________________________________________
1.9 What are the license terms for libstdc++-v3?
- See [63]our license description for these and related questions.
+ See [65]our license description for these and related questions.
_________________________________________________________________
2.0 Installation
@@ -211,13 +213,13 @@
* The GNU Autotools are needed if you are messing with the configury
or makefiles.
- The file [64]documentation.html provides a good overview of the steps
+ The file [66]documentation.html provides a good overview of the steps
necessary to build, install, and use the library. Instructions for
configuring the library with new flags such as --enable-threads are
there also, as well as patches and instructions for working with GCC
2.95.
- The top-level install.html and [65]RELEASE-NOTES files contain the
+ The top-level install.html and [67]RELEASE-NOTES files contain the
exact build and installation instructions. You may wish to browse
those files over CVSweb ahead of time to get a feel for what's
required. RELEASE-NOTES is located in the ".../docs/17_intro/"
@@ -234,8 +236,8 @@
The Concurrent Versions System is one of several revision control
packages. It was selected for GNU projects because it's free (speech),
- free (beer), and very high quality. The [66]CVS entry in the GNU
- software catalogue has a better description as well as a [67]link to
+ free (beer), and very high quality. The [68]CVS entry in the GNU
+ software catalogue has a better description as well as a [69]link to
the makers of CVS.
The "anonymous client checkout" feature of CVS is similar to anonymous
@@ -286,7 +288,7 @@
people don't like it, so here are two pseudo-solutions:
If the only functions from libstdc++.a which you need are language
- support functions (those listed in [68]clause 18 of the standard,
+ support functions (those listed in [70]clause 18 of the standard,
e.g., new and delete), then try linking against libsupc++.a (usually
specifying -lsupc++ when calling g++ for the final link step will do
it). This library contains only those support routines, one per object
@@ -381,7 +383,7 @@
- < /dev/null" to display a list of predefined macros for any
particular installation.
- This has been discussed on the mailing lists [69]quite a bit.
+ This has been discussed on the mailing lists [71]quite a bit.
This method is something of a wart. We'd like to find a cleaner
solution, but nobody yet has contributed the time.
@@ -390,10 +392,22 @@
3.6 OS X ctype.h is broken! How can I hack it?
This is a long-standing bug in the OS X support. Fortunately, the
- patch is quite simple, and well-known. [70]Here's a link to the
+ patch is quite simple, and well-known. [72]Here's a link to the
solution.
_________________________________________________________________
+Threading is broken on i386
+
+ Support for atomic integer operations is/was broken on i386 platforms.
+ The assembly code accidentally used opcodes that are only available on
+ the i486 and later. So if you configured GCC to target, for example,
+ i386-linux, but actually used the programs on an i686, then you would
+ encounter no problems. Only when actually running the code on a i386
+ will the problem appear.
+
+ This is fixed in 3.2.2.
+ _________________________________________________________________
+
4.0 Known Bugs and Non-Bugs
Note that this section can get rapdily outdated -- such is the nature
@@ -403,7 +417,7 @@
For 3.0.1, the most common "bug" is an apparently missing "../" in
include/Makefile, resulting in files like gthr.h and gthr-single.h not
- being found. Please read [71]the configuration instructions for GCC,
+ being found. Please read [73]the configuration instructions for GCC,
specifically the part about configuring in a separate build directory,
and how strongly recommended it is. Building in the source directory
is fragile, is rarely tested, and tends to break, as in this case.
@@ -411,7 +425,7 @@
For 3.1, the most common "bug" is a parse error when using <fstream>,
ending with a message, "bits/basic_file.h:52: parse error before `{'
- token." Please read [72]the installation instructions for GCC,
+ token." Please read [74]the installation instructions for GCC,
specifically the part about not installing newer versions on top of
older versions. If you install 3.1 over a 3.0.x release, then the
wrong basic_file.h header will be found (its location changed between
@@ -480,30 +494,30 @@ New:
libstdc++. If you are experiencing one of these problems, you can find
more information on the libstdc++ and the GCC mailing lists.
- Before reporting a bug, examine the [73]bugs database with the
+ Before reporting a bug, examine the [75]bugs database with the
category set to "libstdc++". The BUGS file in the source tree also
tracks known serious problems.
* Debugging is problematic, due to bugs in line-number generation
(mostly fixed in the compiler) and gdb lagging behind the compiler
(lack of personnel). We recommend configuring the compiler using
--with-dwarf2 if the DWARF2 debugging format is not already the
- default on your platform. Also, [74]changing your GDB settings can
+ default on your platform. Also, [76]changing your GDB settings can
have a profound effect on your C++ debugging experiences. :-)
_________________________________________________________________
4.3 Bugs in the C++ language/lib specification
- Yes, unfortunately, there are some. In a [75]message to the list,
+ Yes, unfortunately, there are some. In a [77]message to the list,
Nathan Myers announced that he has started a list of problems in the
ISO C++ Standard itself, especially with regard to the chapters that
- concern the library. The list itself is [76]posted on his website.
+ concern the library. The list itself is [78]posted on his website.
Developers who are having problems interpreting the Standard may wish
to consult his notes.
For those people who are not part of the ISO Library Group (i.e.,
nearly all of us needing to read this page in the first place :-), a
- public list of the library defects is occasionally published [77]here.
- Some of these have resulted in [78]code changes.
+ public list of the library defects is occasionally published [79]here.
+ Some of these have resulted in [80]code changes.
_________________________________________________________________
4.4 Things in libstdc++ that only look like bugs
@@ -535,7 +549,7 @@ New:
state on the previous file. The reason is that the state flags are not
cleared on a successful call to open(). The standard unfortunately did
not specify behavior in this case, and to everybody's great sorrow,
- the [79]proposed LWG resolution (see DR #22) is to leave the flags
+ the [81]proposed LWG resolution (see DR #22) is to leave the flags
unchanged. You must insert a call to fs.clear() between the calls to
close() and open(), and then everything will work like we all expect
it to work.
@@ -545,7 +559,7 @@ New:
same namespace as other comparison functions (e.g., 'using' them and
the <iterator> header), then you will suddenly be faced with huge
numbers of ambiguity errors. This was discussed on the -v3 list;
- Nathan Myers [80]sums things up here. The collisions with
+ Nathan Myers [82]sums things up here. The collisions with
vector/string iterator types have been fixed for 3.1.
The g++-3 headers are not ours
@@ -553,7 +567,7 @@ New:
If you have found an extremely broken header file which is causing
problems for you, look carefully before submitting a "high" priority
bug report (which you probably shouldn't do anyhow; see the last
- paragraph of the page describing [81]the GCC bug database).
+ paragraph of the page describing [83]the GCC bug database).
If the headers are in ${prefix}/include/g++-3, or if the installed
library's name looks like libstdc++-2.10.a or libstdc++-libc6-2.10.so,
@@ -563,7 +577,7 @@ New:
Currently our header files are installed in ${prefix}/include/g++-v3
(see the 'v'?). This may change with the next release of GCC, as it
- may be too confusing, but [82]the question has not yet been decided.
+ may be too confusing, but [84]the question has not yet been decided.
glibc If you're on a GNU/Linux system and have just upgraded to glibc
2.2, but are still using gcc 2.95.2, then you should have read the
@@ -576,7 +590,7 @@ type has changed in glibc 2.2. The patch is at
http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
- Note that 2.95.x shipped with the [83]old v2 library which is no
+ Note that 2.95.x shipped with the [85]old v2 library which is no
longer maintained. Also note that gcc 2.95.3 fixes this problem, but
requires a separate patch for libstdc++-v3.
@@ -589,7 +603,7 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
visibility, or you just plain forgot, etc).
More information, including how to optionally enable/disable the
- checks, is available [84]here.
+ checks, is available [86]here.
dlopen/dlsym If you are using the C++ library across
dynamically-loaded objects, make certain that you are passing the
@@ -611,16 +625,16 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
If you have found a bug in the library and you think you have a
working fix, then send it in! The main GCC site has a page on
- [85]submitting patches that covers the procedure, but for libstdc++
+ [87]submitting patches that covers the procedure, but for libstdc++
you should also send the patch to our mailing list in addition to the
- GCC patches mailing list. The libstdc++ [86]contributors' page also
+ GCC patches mailing list. The libstdc++ [88]contributors' page also
talks about how to submit patches.
In addition to the description, the patch, and the ChangeLog entry, it
is a Good Thing if you can additionally create a small test program to
test for the presence of the bug that your patch fixes. Bugs have a
way of being reintroduced; if an old bug creeps back in, it will be
- caught immediately by the [87]testsuite -- but only if such a test
+ caught immediately by the [89]testsuite -- but only if such a test
exists.
_________________________________________________________________
@@ -654,7 +668,7 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
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. Those additions are listed in [88]the
+ resolution specifies. Those additions are listed in [90]the
extensions page.
2. Performance tuning. Lots of performance tuning. This too is
already underway for post-3.0 releases, starting with memory
@@ -670,13 +684,13 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
type from C99.) Bugfixes and rewrites (to improve or fix thread
safety, for instance) will of course be a continuing task.
- [89]This question about the next libstdc++ prompted some brief but
- interesting [90]speculation.
+ [91]This question about the next libstdc++ prompted some brief but
+ interesting [92]speculation.
_________________________________________________________________
5.3 What about the STL from SGI?
- The [91]STL from SGI, version 3.3, was the most recent merge of the
+ The [93]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.
@@ -700,7 +714,7 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
headers whose directories are not searched directly, e.g.,
<sys/stat.h>, <X11/Xlib.h>.
- Extensions to the library have [92]their own page.
+ Extensions to the library have [94]their own page.
_________________________________________________________________
5.5 [removed]
@@ -749,8 +763,8 @@ a
otherwise documented as safe, do not assume that two threads may
access a shared standard library object at the same time.
- See chapters [93]17 (library introduction), [94]23 (containers), and
- [95]27 (I/O) for more information.
+ See chapters [95]17 (library introduction), [96]23 (containers), and
+ [97]27 (I/O) for more information.
_________________________________________________________________
5.7 How do I get a copy of the ISO C++ Standard?
@@ -761,12 +775,12 @@ a
their two-meeting commitment for voting rights, may get a copy of the
standard from their respective national standards organization. In the
USA, this national standards organization is ANSI and their website is
- right [96]here. (And if you've already registered with them, clicking
- this link will take you to directly to the place where you can [97]buy
+ right [98]here. (And if you've already registered with them, clicking
+ this link will take you to directly to the place where you can [99]buy
the standard on-line.
- Who is your country's member body? Visit the [98]ISO homepage and find
- out!
+ Who is your country's member body? Visit the [100]ISO homepage and
+ find out!
_________________________________________________________________
5.8 What's an ABI and why is it so messy?
@@ -816,8 +830,8 @@ a
encompasses the standard library.
_________________________________________________________________
- See [99]license.html for copying conditions. Comments and suggestions
- are welcome, and may be sent to [100]the libstdc++ mailing list.
+ See [101]license.html for copying conditions. Comments and suggestions
+ are welcome, and may be sent to [102]the libstdc++ mailing list.
References
@@ -847,77 +861,79 @@ References
24. ../faq/index.html#3_4
25. ../faq/index.html#3_5
26. ../faq/index.html#3_6
- 27. ../faq/index.html#4_0
- 28. ../faq/index.html#4_1
- 29. ../faq/index.html#4_2
- 30. ../faq/index.html#4_3
- 31. ../faq/index.html#4_4
- 32. ../faq/index.html#4_4_iostreamclear
- 33. ../faq/index.html#4_4_Weff
- 34. ../faq/index.html#4_4_rel_ops
- 35. ../faq/index.html#4_4_interface
- 36. ../faq/index.html#4_4_glibc
- 37. ../faq/index.html#4_4_checks
- 38. ../faq/index.html#4_4_dlsym
- 39. ../faq/index.html#4_5
- 40. ../faq/index.html#5_0
- 41. ../faq/index.html#5_1
- 42. ../faq/index.html#5_2
- 43. ../faq/index.html#5_3
- 44. ../faq/index.html#5_4
- 45. ../faq/index.html#5_5
- 46. ../faq/index.html#5_6
- 47. ../faq/index.html#5_7
- 48. ../faq/index.html#5_8
- 49. http://gcc.gnu.org/libstdc++/index.html#download
- 50. ../faq/index.html#4_4_interface
- 51. ../17_intro/DESIGN
- 52. http://gcc.gnu.org/
- 53. http://gcc.gnu.org/gcc-3.0/buildstat.html
- 54. http://gcc.gnu.org/libstdc++/
- 55. http://gcc.gnu.org/libstdc++/index.html#download
+ 27. ../faq/index.html#3_7
+ 28. ../faq/index.html#4_0
+ 29. ../faq/index.html#4_1
+ 30. ../faq/index.html#4_2
+ 31. ../faq/index.html#4_3
+ 32. ../faq/index.html#4_4
+ 33. ../faq/index.html#4_4_iostreamclear
+ 34. ../faq/index.html#4_4_Weff
+ 35. ../faq/index.html#4_4_rel_ops
+ 36. ../faq/index.html#4_4_interface
+ 37. ../faq/index.html#4_4_glibc
+ 38. ../faq/index.html#4_4_checks
+ 39. ../faq/index.html#4_4_dlsym
+ 40. ../faq/index.html#4_5
+ 41. ../faq/index.html#5_0
+ 42. ../faq/index.html#5_1
+ 43. ../faq/index.html#5_2
+ 44. ../faq/index.html#5_3
+ 45. ../faq/index.html#5_4
+ 46. ../faq/index.html#5_5
+ 47. ../faq/index.html#5_6
+ 48. ../faq/index.html#5_7
+ 49. ../faq/index.html#5_8
+ 50. http://gcc.gnu.org/libstdc++/index.html#download
+ 51. ../faq/index.html#1_4
+ 52. ../faq/index.html#4_4_interface
+ 53. ../17_intro/DESIGN
+ 54. http://gcc.gnu.org/
+ 55. http://gcc.gnu.org/gcc-3.0/buildstat.html
56. http://gcc.gnu.org/libstdc++/
- 57. ../17_intro/contribute.html
- 58. http://www.boost.org/
- 59. http://gcc.gnu.org/fom_serv/cache/33.html
- 60. mailto:libstdc++@gcc.gnu.org
- 61. mailto:pme@gcc.gnu.org
- 62. mailto:gdr@gcc.gnu.org
- 63. ../17_intro/license.html
- 64. ../documentation.html
- 65. ../17_intro/RELEASE-NOTES
- 66. http://www.gnu.org/software/cvs/cvs.html
- 67. http://www.cvshome.org/
- 68. ../18_support/howto.html
- 69. http://gcc.gnu.org/cgi-bin/htsearch?method=and&format=builtin-long&sort=score&words=_XOPEN_SOURCE+Solaris
- 70. http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html
- 71. http://gcc.gnu.org/install/configure.html
- 72. http://gcc.gnu.org/install/
- 73. http://gcc.gnu.org/bugs.html
- 74. http://gcc.gnu.org/ml/libstdc++/2002-02/msg00034.html
- 75. http://gcc.gnu.org/ml/libstdc++/1998/msg00006.html
- 76. http://www.cantrip.org/draft-bugs.txt
- 77. http://anubis.dkuug.dk/jtc1/sc22/wg21/
- 78. ../faq/index.html#5_2
- 79. ../ext/howto.html#5
- 80. http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html
- 81. http://gcc.gnu.org/gnatswrite.html
- 82. http://gcc.gnu.org/ml/gcc/2000-10/msg00732.html
- 83. ../faq/index.html#4_4_interface
- 84. ../19_diagnostics/howto.html#3
- 85. http://gcc.gnu.org/contribute.html
- 86. ../17_intro/contribute.html
- 87. ../faq/index.html#2_4
- 88. ../ext/howto.html#5
- 89. http://gcc.gnu.org/ml/libstdc++/1999/msg00080.html
- 90. http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html
- 91. http://www.sgi.com/Technology/STL/
- 92. ../ext/howto.html
- 93. ../17_intro/howto.html#3
- 94. ../23_containers/howto.html#3
- 95. ../27_io/howto.html#9
- 96. http://www.ansi.org/
- 97. http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%2D1998
- 98. http://www.iso.ch/
- 99. ../17_intro/license.html
- 100. mailto:libstdc++@gcc.gnu.org
+ 57. http://gcc.gnu.org/libstdc++/index.html#download
+ 58. http://gcc.gnu.org/libstdc++/
+ 59. ../17_intro/contribute.html
+ 60. http://www.boost.org/
+ 61. http://gcc.gnu.org/fom_serv/cache/33.html
+ 62. mailto:libstdc++@gcc.gnu.org
+ 63. mailto:pme@gcc.gnu.org
+ 64. mailto:gdr@gcc.gnu.org
+ 65. ../17_intro/license.html
+ 66. ../documentation.html
+ 67. ../17_intro/RELEASE-NOTES
+ 68. http://www.gnu.org/software/cvs/cvs.html
+ 69. http://www.cvshome.org/
+ 70. ../18_support/howto.html
+ 71. http://gcc.gnu.org/cgi-bin/htsearch?method=and&format=builtin-long&sort=score&words=_XOPEN_SOURCE+Solaris
+ 72. http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html
+ 73. http://gcc.gnu.org/install/configure.html
+ 74. http://gcc.gnu.org/install/
+ 75. http://gcc.gnu.org/bugs.html
+ 76. http://gcc.gnu.org/ml/libstdc++/2002-02/msg00034.html
+ 77. http://gcc.gnu.org/ml/libstdc++/1998/msg00006.html
+ 78. http://www.cantrip.org/draft-bugs.txt
+ 79. http://anubis.dkuug.dk/jtc1/sc22/wg21/
+ 80. ../faq/index.html#5_2
+ 81. ../ext/howto.html#5
+ 82. http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html
+ 83. http://gcc.gnu.org/gnatswrite.html
+ 84. http://gcc.gnu.org/ml/gcc/2000-10/msg00732.html
+ 85. ../faq/index.html#4_4_interface
+ 86. ../19_diagnostics/howto.html#3
+ 87. http://gcc.gnu.org/contribute.html
+ 88. ../17_intro/contribute.html
+ 89. ../faq/index.html#2_4
+ 90. ../ext/howto.html#5
+ 91. http://gcc.gnu.org/ml/libstdc++/1999/msg00080.html
+ 92. http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html
+ 93. http://www.sgi.com/Technology/STL/
+ 94. ../ext/howto.html
+ 95. ../17_intro/howto.html#3
+ 96. ../23_containers/howto.html#3
+ 97. ../27_io/howto.html#9
+ 98. http://www.ansi.org/
+ 99. http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%2D1998
+ 100. http://www.iso.ch/
+ 101. ../17_intro/license.html
+ 102. mailto:libstdc++@gcc.gnu.org
diff --git a/libstdc++-v3/docs/html/install.html b/libstdc++-v3/docs/html/install.html
index 58439330200..e4295aaa4de 100644
--- a/libstdc++-v3/docs/html/install.html
+++ b/libstdc++-v3/docs/html/install.html
@@ -291,6 +291,7 @@
interest to library maintainers and system integrators. As such,
these tests may not work on all cpu and host combinations. These
options include, but are not necessarily limited to, the following:
+ </p>
<p>The library ABI can be tested using</p>
<pre>
@@ -300,7 +301,7 @@
the default dejagnu test harness</p>
<pre>
make check-script</pre>
- or
+ <p>or</p>
<pre>
make check-script-install</pre>
diff --git a/libstdc++-v3/include/bits/basic_ios.h b/libstdc++-v3/include/bits/basic_ios.h
index 13ad0f82e99..b6ef89ba8b0 100644
--- a/libstdc++-v3/include/bits/basic_ios.h
+++ b/libstdc++-v3/include/bits/basic_ios.h
@@ -43,115 +43,282 @@
namespace std
{
// 27.4.5 Template class basic_ios
+ /**
+ * @brief Virtual base class for all stream classes.
+ *
+ * Most of the member functions called dispatched on stream objects
+ * (e.g., @c std::cout.foo(bar);) are consolidated in this class.
+ */
template<typename _CharT, typename _Traits>
class basic_ios : public ios_base
{
public:
- // Types:
- typedef _CharT char_type;
- typedef typename _Traits::int_type int_type;
- typedef typename _Traits::pos_type pos_type;
- typedef typename _Traits::off_type off_type;
- typedef _Traits traits_type;
-
- // Non-standard Types:
- typedef ctype<_CharT> __ctype_type;
- typedef ostreambuf_iterator<_CharT, _Traits> __ostreambuf_iter;
- typedef num_put<_CharT, __ostreambuf_iter> __numput_type;
- typedef istreambuf_iterator<_CharT, _Traits> __istreambuf_iter;
- typedef num_get<_CharT, __istreambuf_iter> __numget_type;
+ //@{
+ /**
+ * These are standard types. They permit a standardized way of
+ * referring to names of (or names dependant on) the template
+ * parameters, which are specific to the implementation.
+ */
+ typedef _CharT char_type;
+ typedef typename _Traits::int_type int_type;
+ typedef typename _Traits::pos_type pos_type;
+ typedef typename _Traits::off_type off_type;
+ typedef _Traits traits_type;
+ //@}
+
+ //@{
+ /**
+ * @if maint
+ * These are non-standard types.
+ * @endif
+ */
+ typedef ctype<_CharT> __ctype_type;
+ typedef ostreambuf_iterator<_CharT, _Traits> __ostreambuf_iter;
+ typedef num_put<_CharT, __ostreambuf_iter> __numput_type;
+ typedef istreambuf_iterator<_CharT, _Traits> __istreambuf_iter;
+ typedef num_get<_CharT, __istreambuf_iter> __numget_type;
+ //@}
// Data members:
protected:
- basic_ostream<_CharT, _Traits>* _M_tie;
- mutable char_type _M_fill;
- mutable bool _M_fill_init;
- basic_streambuf<_CharT, _Traits>* _M_streambuf;
+ basic_ostream<_CharT, _Traits>* _M_tie;
+ mutable char_type _M_fill;
+ mutable bool _M_fill_init;
+ basic_streambuf<_CharT, _Traits>* _M_streambuf;
// Cached use_facet<ctype>, which is based on the current locale info.
- const __ctype_type* _M_fctype;
+ const __ctype_type* _M_fctype;
// From ostream.
- const __numput_type* _M_fnumput;
+ const __numput_type* _M_fnumput;
// From istream.
- const __numget_type* _M_fnumget;
+ const __numget_type* _M_fnumget;
public:
+ //@{
+ /**
+ * @brief The quick-and-easy status check.
+ *
+ * This allows you to write constructs such as
+ * "if (!a_stream) ..." and "while (a_stream) ..."
+ */
operator void*() const
{ return this->fail() ? 0 : const_cast<basic_ios*>(this); }
bool
operator!() const
{ return this->fail(); }
-
+ //@}
+
+ /**
+ * @brief Returns the error state of the stream buffer.
+ * @return A bit pattern (well, isn't everything?)
+ *
+ * See std::ios_base::iostate for the possible bit values. Most
+ * users will call one of the interpreting wrappers, e.g., good().
+ */
iostate
rdstate() const
{ return _M_streambuf_state; }
+ /**
+ * @brief [Re]sets the error state.
+ * @param state The new state flag(s) to set.
+ *
+ * See std::ios_base::iostate for the possible bit values. Most
+ * users will not need to pass an argument.
+ */
void
clear(iostate __state = goodbit);
+ /**
+ * @brief Sets additional flags in the error state.
+ * @param state The additional state flag(s) to set.
+ *
+ * See std::ios_base::iostate for the possible bit values.
+ */
void
setstate(iostate __state)
{ this->clear(this->rdstate() | __state); }
+ /**
+ * @brief Fast error checking.
+ * @return True if no error flags are set.
+ *
+ * A wrapper around rdstate.
+ */
bool
good() const
{ return this->rdstate() == 0; }
+ /**
+ * @brief Fast error checking.
+ * @return True if the eofbit is set.
+ *
+ * Note that other iostate flags may also be set.
+ */
bool
eof() const
{ return (this->rdstate() & eofbit) != 0; }
+ /**
+ * @brief Fast error checking.
+ * @return True if either the badbit or the failbit is set.
+ *
+ * Checking the badbit in fail() is historical practice.
+ * Note that other iostate flags may also be set.
+ */
bool
fail() const
{ return (this->rdstate() & (badbit | failbit)) != 0; }
+ /**
+ * @brief Fast error checking.
+ * @return True if the badbit is set.
+ *
+ * Note that other iostate flags may also be set.
+ */
bool
bad() const
{ return (this->rdstate() & badbit) != 0; }
+ /**
+ * @brief Throwing exceptions on errors.
+ * @return The current exceptions mask.
+ *
+ * This changes nothing in the stream. See the one-argument version
+ * of exceptions(iostate) for the meaning of the return value.
+ */
iostate
exceptions() const
{ return _M_exception; }
+ /**
+ * @brief Throwing exceptions on errors.
+ * @param except The new exceptions mask.
+ *
+ * By default, error flags are set silently. You can set an
+ * exceptions mask for each stream; if a bit in the mask becomes set
+ * in the error flags, then an exception of type
+ * std::ios_base::failure is thrown.
+ *
+ * If the error flage is already set when the exceptions mask is
+ * added, the exception is immediately thrown. Try running the
+ * following under GCC 3.1 or later:
+ * @code
+ * #include <iostream>
+ * #include <fstream>
+ * #include <exception>
+ *
+ * int main()
+ * {
+ * std::set_terminate (__gnu_cxx::__verbose_terminate_handler);
+ *
+ * std::ifstream f ("/etc/motd");
+ *
+ * std::cerr << "Setting badbit\n";
+ * f.setstate (std::ios_base::badbit);
+ *
+ * std::cerr << "Setting exception mask\n";
+ * f.exceptions (std::ios_base::badbit);
+ * }
+ * @endcode
+ */
void
exceptions(iostate __except)
{
- _M_exception = __except;
- this->clear(_M_streambuf_state);
+ _M_exception = __except;
+ this->clear(_M_streambuf_state);
}
// Constructor/destructor:
+ /**
+ * @brief Constructor performs initialization.
+ *
+ * The parameter is passed by derived streams.
+ */
explicit
basic_ios(basic_streambuf<_CharT, _Traits>* __sb) : ios_base()
{ this->init(__sb); }
+ /**
+ * @brief Empty.
+ *
+ * The destructor does nothing. More specifically, it does not
+ * destroy the streambuf held by rdbuf().
+ */
virtual
~basic_ios() { }
// Members:
+ /**
+ * @brief Fetches the current @e tied stream.
+ * @return A pointer to the tied stream, or NULL if the stream is
+ * not tied.
+ *
+ * A stream may be @e tied (or synchronized) to a second output
+ * stream. When this stream performs any I/O, the tied stream is
+ * first flushed. For example, @c std::cin is tied to @c std::cout.
+ */
basic_ostream<_CharT, _Traits>*
tie() const
{ return _M_tie; }
+ /**
+ * @brief Ties this stream to an output stream.
+ * @param tiestr The output stream.
+ * @return The previously tied output stream, or NULL if the stream
+ * was not tied.
+ *
+ * This sets up a new tie; see tie() for more.
+ */
basic_ostream<_CharT, _Traits>*
tie(basic_ostream<_CharT, _Traits>* __tiestr)
{
- basic_ostream<_CharT, _Traits>* __old = _M_tie;
- _M_tie = __tiestr;
- return __old;
+ basic_ostream<_CharT, _Traits>* __old = _M_tie;
+ _M_tie = __tiestr;
+ return __old;
}
+ /**
+ * @brief Accessing the underlying buffer.
+ * @return The current stream buffer.
+ *
+ * This does not change the state of the stream.
+ */
basic_streambuf<_CharT, _Traits>*
rdbuf() const
{ return _M_streambuf; }
+ /**
+ * @brief Changing the underlying buffer.
+ * @param sb The new stream buffer.
+ * @return The previous stream buffer.
+ *
+ * Associates a new buffer with the current stream, and clears the
+ * error state.
+ *
+ * Due to historical accidents which the LWG refuses to correct, the
+ * I/O library suffers from a design error: this function is hidden
+ * in derived classes by overrides of the zero-argument @c rdbuf(),
+ * which is non-virtual for hysterical raisins. As a result, you
+ * must use explicit qualifications to access this function via any
+ * derived class.
+ */
basic_streambuf<_CharT, _Traits>*
rdbuf(basic_streambuf<_CharT, _Traits>* __sb);
+ /**
+ * @doctodo
+ */
basic_ios&
copyfmt(const basic_ios& __rhs);
+ /**
+ * @brief Retreives the "empty" character.
+ * @return The current fill character.
+ *
+ * It defaults to a space (' ') in the current locale.
+ */
char_type
fill() const
{
@@ -163,6 +330,15 @@ namespace std
return _M_fill;
}
+ /**
+ * @brief Sets a new "empty" character.
+ * @param ch The new character.
+ * @return The previous fill character.
+ *
+ * The fill character is used to fill out space when P+ characters
+ * have been requested (e.g., via setw), Q characters are actually
+ * used, and Q<P. It defaults to a space (' ') in the current locale.
+ */
char_type
fill(char_type __ch)
{
@@ -172,20 +348,75 @@ namespace std
}
// Locales:
+ /**
+ * @brief Moves to a new locale.
+ * @param loc The new locale.
+ * @return The previous locale.
+ *
+ * Calls @c ios_base::imbue(loc), and if a stream buffer is associated
+ * with this stream, calls that buffer's @c pubimbue(loc).
+ *
+ * Additional l10n notes are at
+ * http://gcc.gnu.org/onlinedocs/libstdc++/22_locale/howto.html
+ */
locale
imbue(const locale& __loc);
+ /**
+ * @brief Squeezes characters.
+ * @param c The character to narrow.
+ * @param dfault The character to narrow.
+ * @return The narrowed character.
+ *
+ * Maps a character of @c char_type to a character of @c char,
+ * if possible.
+ *
+ * Returns the result of
+ * @code
+ * std::use_facet< ctype<char_type> >(getloc()).narrow(c,dfault)
+ * @endcode
+ *
+ * Additional l10n notes are at
+ * http://gcc.gnu.org/onlinedocs/libstdc++/22_locale/howto.html
+ */
char
narrow(char_type __c, char __dfault) const;
+ /**
+ * @brief Widens characters.
+ * @param c The character to widen.
+ * @return The widened character.
+ *
+ * Maps a character of @c char to a character of @c char_type.
+ *
+ * Returns the result of
+ * @code
+ * std::use_facet< ctype<char_type> >(getloc()).widen(c)
+ * @endcode
+ *
+ * Additional l10n notes are at
+ * http://gcc.gnu.org/onlinedocs/libstdc++/22_locale/howto.html
+ */
char_type
widen(char __c) const;
protected:
// 27.4.5.1 basic_ios constructors
+ /**
+ * @brief Empty.
+ *
+ * The default constructor does nothing and is not normally
+ * accessible to users.
+ */
basic_ios() : ios_base()
{ }
+ /**
+ * @brief All setup is performed here.
+ *
+ * This is called from the public constructor. It is not virtual and
+ * cannot be redefined.
+ */
void
init(basic_streambuf<_CharT, _Traits>* __sb);
diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config
index 3a920207ae8..9dacfa6f501 100644
--- a/libstdc++-v3/include/bits/c++config
+++ b/libstdc++-v3/include/bits/c++config
@@ -34,7 +34,7 @@
#include <bits/os_defines.h>
// The current version of the C++ library in compressed ISO date format.
-#define __GLIBCPP__ 20021108
+#define __GLIBCPP__ 20021124
// This is necessary until GCC supports separate template
// compilation.
diff --git a/libstdc++-v3/include/bits/fpos.h b/libstdc++-v3/include/bits/fpos.h
index 279e0ab16ba..5432527421a 100644
--- a/libstdc++-v3/include/bits/fpos.h
+++ b/libstdc++-v3/include/bits/fpos.h
@@ -48,7 +48,10 @@ namespace std
{
// 27.4.1 Types
- // 27.4.3 Template class fpos
+ // [27.4.3] template class fpos
+ /**
+ * @doctodo
+ */
template<typename _StateT>
class fpos
{
@@ -113,9 +116,10 @@ namespace std
_M_position(streamoff __off) { _M_off = __off; }
};
- // 27.2, paragraph 10 about fpos/char_traits circularity
+ /// 27.2, paragraph 10 about fpos/char_traits circularity
typedef fpos<mbstate_t> streampos;
# ifdef _GLIBCPP_USE_WCHAR_T
+ /// 27.2, paragraph 10 about fpos/char_traits circularity
typedef fpos<mbstate_t> wstreampos;
# endif
} // namespace std
diff --git a/libstdc++-v3/include/bits/fstream.tcc b/libstdc++-v3/include/bits/fstream.tcc
index 66cb9a1b179..387f099ae98 100644
--- a/libstdc++-v3/include/bits/fstream.tcc
+++ b/libstdc++-v3/include/bits/fstream.tcc
@@ -90,11 +90,21 @@ namespace std
{
_M_allocate_internal_buffer();
_M_mode = __mode;
+
+ // Setup initial position of buffer.
_M_set_indeterminate();
+ // Set input buffer to something real.
+ // NB: Must open in non-blocking way to do this, or must
+ // set the initial position in a different manner than
+ // using underflow.
+ if (__mode & ios_base::in && _M_buf_allocated)
+ this->underflow();
+
if ((__mode & ios_base::ate)
&& this->seekoff(0, ios_base::end, __mode) < 0)
this->close();
+
__ret = this;
}
}
diff --git a/libstdc++-v3/include/bits/ios_base.h b/libstdc++-v3/include/bits/ios_base.h
index 2cfe4134c92..1f085d9e4e7 100644
--- a/libstdc++-v3/include/bits/ios_base.h
+++ b/libstdc++-v3/include/bits/ios_base.h
@@ -145,11 +145,20 @@ namespace std
enum _Ios_Seekdir { _M_ios_seekdir_end = 1L << 16 };
// 27.4.2 Class ios_base
+ /**
+ * @brief The very top of the I/O class hierarchy.
+ *
+ * This class defines everything that can be defined about I/O that does
+ * not depend on the type of characters being input or output. Most
+ * people will only see @c ios_base when they need to specify the full
+ * name of the various I/O flags (e.g., the openmodes).
+ */
class ios_base
{
public:
// 27.4.2.1.1 Class ios_base::failure
+ /// These are thrown to indicate problems. Doc me.
class failure : public exception
{
public:
@@ -173,47 +182,148 @@ namespace std
};
// 27.4.2.1.2 Type ios_base::fmtflags
+ /**
+ * @brief This is a bitmask type.
+ *
+ * @c "_Ios_Fmtflags" is implementation-defined, but it is valid to
+ * perform bitwise operations on these values and expect the Right
+ * Thing to happen. Defined objects of type fmtflags are:
+ * - boolalpha
+ * - dec
+ * - fixed
+ * - hex
+ * - internal
+ * - left
+ * - oct
+ * - right
+ * - scientific
+ * - showbase
+ * - showpoint
+ * - showpos
+ * - skipws
+ * - unitbuf
+ * - uppercase
+ * - adjustfield
+ * - basefield
+ * - floatfield
+ */
typedef _Ios_Fmtflags fmtflags;
- // 27.4.2.1.2 Type fmtflags
+ /// Insert/extract @c bool in alphabetic rather than numeric format.
static const fmtflags boolalpha = fmtflags(__ios_flags::_S_boolalpha);
+ /// Converts integer input or generates integer output in decimal base.
static const fmtflags dec = fmtflags(__ios_flags::_S_dec);
+ /// Generate floating-point output in fixed-point notation.
static const fmtflags fixed = fmtflags(__ios_flags::_S_fixed);
+ /// Converts integer input or generates integer output in hexadecimal base.
static const fmtflags hex = fmtflags(__ios_flags::_S_hex);
+ /// Adds fill characters at a designated internal point in certain
+ /// generated output, or identical to @c right if no such point is
+ /// designated.
static const fmtflags internal = fmtflags(__ios_flags::_S_internal);
+ /// Adds fill characters on the right (final positions) of certain
+ /// generated output. (I.e., the thing you print is flush left.)
static const fmtflags left = fmtflags(__ios_flags::_S_left);
+ /// Converts integer input or generates integer output in octal base.
static const fmtflags oct = fmtflags(__ios_flags::_S_oct);
+ /// Adds fill characters on the left (initial positions) of certain
+ /// generated output. (I.e., the thing you print is flush right.)
static const fmtflags right = fmtflags(__ios_flags::_S_right);
+ /// Generates floating-point output in scientific notation.
static const fmtflags scientific = fmtflags(__ios_flags::_S_scientific);
+ /// Generates a prefix indicating the numeric base of generated integer
+ /// output.
static const fmtflags showbase = fmtflags(__ios_flags::_S_showbase);
+ /// Generates a decimal-point character unconditionally in generated
+ /// floating-point output.
static const fmtflags showpoint = fmtflags(__ios_flags::_S_showpoint);
+ /// Generates a + sign in non-negative generated numeric output.
static const fmtflags showpos = fmtflags(__ios_flags::_S_showpos);
+ /// Skips leading white space before certain input operations.
static const fmtflags skipws = fmtflags(__ios_flags::_S_skipws);
+ /// Flushes output after each output operation.
static const fmtflags unitbuf = fmtflags(__ios_flags::_S_unitbuf);
+ /// Replaces certain lowercase letters with their uppercase equivalents
+ /// in generated output.
static const fmtflags uppercase = fmtflags(__ios_flags::_S_uppercase);
+ /// A mask of left|right|internal. Useful for the 2-arg form of @c setf.
static const fmtflags adjustfield = fmtflags(__ios_flags::_S_adjustfield);
+ /// A mask of dec|oct|hex. Useful for the 2-arg form of @c setf.
static const fmtflags basefield = fmtflags(__ios_flags::_S_basefield);
+ /// A mask of scientific|fixed. Useful for the 2-arg form of @c setf.
static const fmtflags floatfield = fmtflags(__ios_flags::_S_floatfield);
// 27.4.2.1.3 Type ios_base::iostate
+ /**
+ * @brief This is a bitmask type.
+ *
+ * @c "_Ios_Iostate" is implementation-defined, but it is valid to
+ * perform bitwise operations on these values and expect the Right
+ * Thing to happen. Defined objects of type iostate are:
+ * - badbit
+ * - eofbit
+ * - failbit
+ * - goodbit
+ */
typedef _Ios_Iostate iostate;
+ /// Indicates a loss of integrity in an input or output sequence (such
+ /// as an irrecoverable read error from a file).
static const iostate badbit = iostate(__ios_flags::_S_badbit);
+ /// Indicates that an input operation reached the end of an input sequence.
static const iostate eofbit = iostate(__ios_flags::_S_eofbit);
+ /// Indicates that an input operation failed to read the expected
+ /// characters, or that an output operation failed to generate the
+ /// desired characters.
static const iostate failbit = iostate(__ios_flags::_S_failbit);
+ /// Indicates all is well.
static const iostate goodbit = iostate(0);
- // 27.4.2.1.4 Type openmode
+ // 27.4.2.1.4 Type ios_base::openmode
+ /**
+ * @brief This is a bitmask type.
+ *
+ * @c "_Ios_Openmode" is implementation-defined, but it is valid to
+ * perform bitwise operations on these values and expect the Right
+ * Thing to happen. Defined objects of type openmode are:
+ * - app
+ * - ate
+ * - binary
+ * - in
+ * - out
+ * - trunc
+ */
typedef _Ios_Openmode openmode;
+ /// Seek to end before each write.
static const openmode app = openmode(__ios_flags::_S_app);
+ /// Open and seek to end immediately after opening.
static const openmode ate = openmode(__ios_flags::_S_ate);
+ /// Perform input and output in binary mode (as opposed to text mode).
+ /// This is probably not what you think it is; see
+ /// http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html#3 and
+ /// http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html#7 for more.
static const openmode binary = openmode(__ios_flags::_S_bin);
+ /// Open for input. Default for @c ifstream and fstream.
static const openmode in = openmode(__ios_flags::_S_in);
+ /// Open for output. Default for @c ofstream and fstream.
static const openmode out = openmode(__ios_flags::_S_out);
+ /// Open for input. Default for @c ofstream.
static const openmode trunc = openmode(__ios_flags::_S_trunc);
- // 27.4.2.1.5 Type seekdir
+ // 27.4.2.1.5 Type ios_base::seekdir
+ /**
+ * @brief This is an enumerated type.
+ *
+ * @c "_Ios_Seekdir" is implementation-defined. Defined values
+ * of type seekdir are:
+ * - beg
+ * - cur, equivalent to @c SEEK_CUR in the C standard library.
+ * - end, equivalent to @c SEEK_END in the C standard library.
+ */
typedef _Ios_Seekdir seekdir;
+ /// Request a seek relative to the beginning of the stream.
static const seekdir beg = seekdir(0);
+ /// Request a seek relative to the current position within the sequence.
static const seekdir cur = seekdir(SEEK_CUR);
+ /// Request a seek relative to the current end of the sequence.
static const seekdir end = seekdir(SEEK_END);
#ifdef _GLIBCPP_DEPRECATED
@@ -227,6 +337,9 @@ namespace std
#endif
// Callbacks;
+ /**
+ * @doctodo
+ */
enum event
{
erase_event,
@@ -234,18 +347,30 @@ namespace std
copyfmt_event
};
+ /**
+ * @doctodo
+ */
typedef void (*event_callback) (event, ios_base&, int);
+ /**
+ * @doctodo
+ */
void
register_callback(event_callback __fn, int __index);
protected:
- // Data Members
+ //@{
+ /**
+ * @if maint
+ * ios_base data members (doc me)
+ * @endif
+ */
streamsize _M_precision;
streamsize _M_width;
fmtflags _M_flags;
iostate _M_exception;
iostate _M_streambuf_state;
+ //@}
// 27.4.2.6 Members for callbacks
// 27.4.2.6 ios_base callbacks
@@ -329,10 +454,21 @@ namespace std
static bool _S_synced_with_stdio;
};
- // Fmtflags state:
+ // [27.4.2.2] fmtflags state functions
+ /**
+ * @brief Access to format flags.
+ * @return The format control flags for both input and output.
+ */
inline fmtflags
flags() const { return _M_flags; }
+ /**
+ * @brief Setting new format flags all at once.
+ * @param fmtfl The new flags to set.
+ * @return The previous format control flags.
+ *
+ * This function overwrites all the format flags with @a fmtfl.
+ */
inline fmtflags
flags(fmtflags __fmtfl)
{
@@ -341,6 +477,14 @@ namespace std
return __old;
}
+ /**
+ * @brief Setting new format flags.
+ * @param fmtfl Additional flags to set.
+ * @return The previous format control flags.
+ *
+ * This function sets additional flags in format control. Flags that
+ * were previously set remain set.
+ */
inline fmtflags
setf(fmtflags __fmtfl)
{
@@ -349,6 +493,15 @@ namespace std
return __old;
}
+ /**
+ * @brief Setting new format flags.
+ * @param fmtfl Additional flags to set.
+ * @param mask The flags mask for @a fmtfl.
+ * @return The previous format control flags.
+ *
+ * This function clears @a mask in the format flags, then sets
+ * @a fmtfl @c & @a mask. An example mask is @c ios_base::adjustfield.
+ */
inline fmtflags
setf(fmtflags __fmtfl, fmtflags __mask)
{
@@ -358,12 +511,32 @@ namespace std
return __old;
}
+ /**
+ * @brief Clearing format flags.
+ * @param mask The flags to unset.
+ *
+ * This function clears @a mask in the format flags.
+ */
inline void
unsetf(fmtflags __mask) { _M_flags &= ~__mask; }
+ /**
+ * @brief Flags access.
+ * @return The precision to generate on certain output operations.
+ *
+ * @if maint
+ * Be careful if you try to give a definition of "precision" here; see
+ * DR 189.
+ * @endif
+ */
inline streamsize
precision() const { return _M_precision; }
+ /**
+ * @brief Changing flags.
+ * @param prec The new precision value.
+ * @return The previous value of precision().
+ */
inline streamsize
precision(streamsize __prec)
{
@@ -372,9 +545,20 @@ namespace std
return __old;
}
+ /**
+ * @brief Flags access.
+ * @return The minimum field width to generate on output operations.
+ *
+ * "Minimum field width" refers to the number of characters.
+ */
inline streamsize
width() const { return _M_width; }
+ /**
+ * @brief Changing flags.
+ * @param wide The new width value.
+ * @return The previous value of width().
+ */
inline streamsize
width(streamsize __wide)
{
@@ -383,20 +567,53 @@ namespace std
return __old;
}
+ // [27.4.2.4] ios_base static members
+ /**
+ * @brief Interaction with the standard C I/O objects.
+ * @param sync Whether to synchronize or not.
+ * @return True if the standard streams were previously synchronized.
+ *
+ * The synchronization referred to is @e only that between the standard
+ * C facilities (e.g., stdout) and the standard C++ objects (e.g.,
+ * cout). User-declared streams are unaffected. See
+ * http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html#8 for more.
+ */
static bool
sync_with_stdio(bool __sync = true);
- // Locales:
+ // [27.4.2.3] ios_base locale functions
+ /**
+ * @brief Setting a new locale.
+ * @param loc The new locale.
+ * @return The previous locale.
+ *
+ * Sets the new locale for this stream, and
+ * [XXX does something with callbacks].
+ */
locale
imbue(const locale& __loc);
+ /**
+ * @brief Locale access
+ * @return The locale currently in effect.
+ *
+ * If @c imbue(loc) has previously been called, then this function
+ * returns @c loc. Otherwise, it returns a copy of @c std::locale(),
+ * the global C++ locale.
+ */
inline locale
getloc() const { return _M_ios_locale; }
- // Storage:
+ // [27.4.2.5] ios_base storage functions
+ /**
+ * @doctodo
+ */
static int
xalloc() throw();
+ /**
+ * @doctodo
+ */
inline long&
iword(int __ix)
{
@@ -405,6 +622,9 @@ namespace std
return __word._M_iword;
}
+ /**
+ * @doctodo
+ */
inline void*&
pword(int __ix)
{
@@ -414,6 +634,10 @@ namespace std
}
// Destructor
+ /**
+ * Destroys local storage and
+ * [XXX does something with callbacks].
+ */
virtual ~ios_base();
protected:
@@ -429,7 +653,8 @@ namespace std
#endif
};
- // 27.4.5.1 fmtflags manipulators:
+ // [27.4.5.1] fmtflags manipulators
+ /// Calls base.setf(ios_base::boolalpha).
inline ios_base&
boolalpha(ios_base& __base)
{
@@ -437,6 +662,7 @@ namespace std
return __base;
}
+ /// Calls base.unsetf(ios_base::boolalpha).
inline ios_base&
noboolalpha(ios_base& __base)
{
@@ -444,6 +670,7 @@ namespace std
return __base;
}
+ /// Calls base.setf(ios_base::showbase).
inline ios_base&
showbase(ios_base& __base)
{
@@ -451,6 +678,7 @@ namespace std
return __base;
}
+ /// Calls base.unsetf(ios_base::showbase).
inline ios_base&
noshowbase(ios_base& __base)
{
@@ -458,6 +686,7 @@ namespace std
return __base;
}
+ /// Calls base.setf(ios_base::showpoint).
inline ios_base&
showpoint(ios_base& __base)
{
@@ -465,6 +694,7 @@ namespace std
return __base;
}
+ /// Calls base.unsetf(ios_base::showpoint).
inline ios_base&
noshowpoint(ios_base& __base)
{
@@ -472,6 +702,7 @@ namespace std
return __base;
}
+ /// Calls base.setf(ios_base::showpos).
inline ios_base&
showpos(ios_base& __base)
{
@@ -479,6 +710,7 @@ namespace std
return __base;
}
+ /// Calls base.unsetf(ios_base::showpos).
inline ios_base&
noshowpos(ios_base& __base)
{
@@ -486,6 +718,7 @@ namespace std
return __base;
}
+ /// Calls base.setf(ios_base::skipws).
inline ios_base&
skipws(ios_base& __base)
{
@@ -493,6 +726,7 @@ namespace std
return __base;
}
+ /// Calls base.unsetf(ios_base::skipws).
inline ios_base&
noskipws(ios_base& __base)
{
@@ -500,6 +734,7 @@ namespace std
return __base;
}
+ /// Calls base.setf(ios_base::uppercase).
inline ios_base&
uppercase(ios_base& __base)
{
@@ -507,6 +742,7 @@ namespace std
return __base;
}
+ /// Calls base.unsetf(ios_base::uppercase).
inline ios_base&
nouppercase(ios_base& __base)
{
@@ -514,6 +750,7 @@ namespace std
return __base;
}
+ /// Calls base.setf(ios_base::unitbuf).
inline ios_base&
unitbuf(ios_base& __base)
{
@@ -521,6 +758,7 @@ namespace std
return __base;
}
+ /// Calls base.unsetf(ios_base::unitbuf).
inline ios_base&
nounitbuf(ios_base& __base)
{
@@ -528,7 +766,8 @@ namespace std
return __base;
}
- // 27.4.5.2 adjustfield anipulators:
+ // [27.4.5.2] adjustfield anipulators
+ /// Calls base.setf(ios_base::internal, ios_base::adjustfield).
inline ios_base&
internal(ios_base& __base)
{
@@ -536,6 +775,7 @@ namespace std
return __base;
}
+ /// Calls base.setf(ios_base::left, ios_base::adjustfield).
inline ios_base&
left(ios_base& __base)
{
@@ -543,6 +783,7 @@ namespace std
return __base;
}
+ /// Calls base.setf(ios_base::right, ios_base::adjustfield).
inline ios_base&
right(ios_base& __base)
{
@@ -550,7 +791,8 @@ namespace std
return __base;
}
- // 27.4.5.3 basefield anipulators:
+ // [27.4.5.3] basefield anipulators
+ /// Calls base.setf(ios_base::dec, ios_base::basefield).
inline ios_base&
dec(ios_base& __base)
{
@@ -558,6 +800,7 @@ namespace std
return __base;
}
+ /// Calls base.setf(ios_base::hex, ios_base::basefield).
inline ios_base&
hex(ios_base& __base)
{
@@ -565,6 +808,7 @@ namespace std
return __base;
}
+ /// Calls base.setf(ios_base::oct, ios_base::basefield).
inline ios_base&
oct(ios_base& __base)
{
@@ -572,7 +816,8 @@ namespace std
return __base;
}
- // 27.4.5.4 floatfield anipulators:
+ // [27.4.5.4] floatfield anipulators
+ /// Calls base.setf(ios_base::fixed, ios_base::floatfield).
inline ios_base&
fixed(ios_base& __base)
{
@@ -580,6 +825,7 @@ namespace std
return __base;
}
+ /// Calls base.setf(ios_base::scientific, ios_base::floatfield).
inline ios_base&
scientific(ios_base& __base)
{
diff --git a/libstdc++-v3/include/bits/stl_alloc.h b/libstdc++-v3/include/bits/stl_alloc.h
index fceed498df6..bab39fb7150 100644
--- a/libstdc++-v3/include/bits/stl_alloc.h
+++ b/libstdc++-v3/include/bits/stl_alloc.h
@@ -139,7 +139,8 @@ namespace std
allocate(size_t __n)
{
void* __result = malloc(__n);
- if (0 == __result) __result = _S_oom_malloc(__n);
+ if (__builtin_expect(__result == 0, 0))
+ __result = _S_oom_malloc(__n);
return __result;
}
@@ -152,7 +153,7 @@ namespace std
reallocate(void* __p, size_t /* old_sz */, size_t __new_sz)
{
void* __result = realloc(__p, __new_sz);
- if (0 == __result)
+ if (__builtin_expect(__result == 0, 0))
__result = _S_oom_realloc(__p, __new_sz);
return __result;
}
@@ -181,8 +182,8 @@ namespace std
for (;;)
{
__my_malloc_handler = __malloc_alloc_oom_handler;
- if (0 == __my_malloc_handler)
- std::__throw_bad_alloc();
+ if (__builtin_expect(__my_malloc_handler == 0, 0))
+ __throw_bad_alloc();
(*__my_malloc_handler)();
__result = malloc(__n);
if (__result)
@@ -202,8 +203,8 @@ namespace std
for (;;)
{
__my_malloc_handler = __malloc_alloc_oom_handler;
- if (0 == __my_malloc_handler)
- std::__throw_bad_alloc();
+ if (__builtin_expect(__my_malloc_handler == 0, 0))
+ __throw_bad_alloc();
(*__my_malloc_handler)();
__result = realloc(__p, __n);
if (__result)
@@ -232,7 +233,12 @@ namespace std
public:
static _Tp*
allocate(size_t __n)
- { return 0 == __n ? 0 : (_Tp*) _Alloc::allocate(__n * sizeof (_Tp)); }
+ {
+ _Tp* __ret = 0;
+ if (__n)
+ __ret = static_cast<_Tp*>(_Alloc::allocate(__n * sizeof(_Tp)));
+ return __ret;
+ }
static _Tp*
allocate()
@@ -293,9 +299,9 @@ namespace std
{
char* __real_p = (char*)__p - (int) _S_extra;
assert(*(size_t*)__real_p == __old_sz);
- char* __result = (char*)
- _Alloc::reallocate(__real_p, __old_sz + (int) _S_extra,
- __new_sz + (int) _S_extra);
+ char* __result = (char*) _Alloc::reallocate(__real_p,
+ __old_sz + (int) _S_extra,
+ __new_sz + (int) _S_extra);
*(size_t*)__result = __new_sz;
return __result + (int) _S_extra;
}
@@ -362,7 +368,7 @@ namespace std
static size_t
_S_freelist_index(size_t __bytes)
- { return (((__bytes) + (size_t)_ALIGN-1)/(size_t)_ALIGN - 1); }
+ { return (((__bytes) + (size_t)_ALIGN - 1)/(size_t)_ALIGN - 1); }
// Returns an object of size __n, and optionally adds to size __n
// free list.
@@ -402,7 +408,7 @@ namespace std
else
__atomic_add(&_S_force_new, -1);
// Trust but verify...
- assert (_S_force_new != 0);
+ assert(_S_force_new != 0);
}
if ((__n > (size_t) _MAX_BYTES) || (_S_force_new > 0))
@@ -416,13 +422,15 @@ namespace std
// unwinding.
_Lock __lock_instance;
_Obj* __restrict__ __result = *__my_free_list;
- if (__result == 0)
+ if (__builtin_expect(__result == 0, 0))
__ret = _S_refill(_S_round_up(__n));
else
{
*__my_free_list = __result -> _M_free_list_link;
__ret = __result;
- }
+ }
+ if (__builtin_expect(__ret == 0, 0))
+ __throw_bad_alloc();
}
return __ret;
}
@@ -510,7 +518,7 @@ namespace std
*__my_free_list = (_Obj*)_S_start_free;
}
_S_start_free = (char*) __new_alloc::allocate(__bytes_to_get);
- if (0 == _S_start_free)
+ if (_S_start_free == 0)
{
size_t __i;
_Obj* volatile* __my_free_list;
@@ -523,7 +531,7 @@ namespace std
{
__my_free_list = _S_free_list + _S_freelist_index(__i);
__p = *__my_free_list;
- if (0 != __p)
+ if (__p != 0)
{
*__my_free_list = __p -> _M_free_list_link;
_S_start_free = (char*)__p;
@@ -569,17 +577,17 @@ namespace std
*__my_free_list = __next_obj = (_Obj*)(__chunk + __n);
for (__i = 1; ; __i++)
{
- __current_obj = __next_obj;
+ __current_obj = __next_obj;
__next_obj = (_Obj*)((char*)__next_obj + __n);
- if (__nobjs - 1 == __i)
- {
- __current_obj -> _M_free_list_link = 0;
- break;
- }
- else
- __current_obj -> _M_free_list_link = __next_obj;
- }
- return(__result);
+ if (__nobjs - 1 == __i)
+ {
+ __current_obj -> _M_free_list_link = 0;
+ break;
+ }
+ else
+ __current_obj -> _M_free_list_link = __next_obj;
+ }
+ return __result;
}
@@ -600,7 +608,7 @@ namespace std
__copy_sz = __new_sz > __old_sz? __old_sz : __new_sz;
memcpy(__result, __p, __copy_sz);
deallocate(__p, __old_sz);
- return(__result);
+ return __result;
}
#endif
@@ -669,13 +677,20 @@ namespace std
const_pointer
address(const_reference __x) const { return &__x; }
- // __n is permitted to be 0. The C++ standard says nothing about what
- // the return value is when __n == 0.
+ // NB: __n is permitted to be 0. The C++ standard says nothing
+ // about what the return value is when __n == 0.
_Tp*
allocate(size_type __n, const void* = 0)
{
- return __n != 0
- ? static_cast<_Tp*>(_Alloc::allocate(__n * sizeof(_Tp))) : 0;
+ _Tp* __ret = 0;
+ if (__n)
+ {
+ if (__n <= this->max_size())
+ __ret = static_cast<_Tp*>(_Alloc::allocate(__n * sizeof(_Tp)));
+ else
+ __throw_bad_alloc();
+ }
+ return __ret;
}
// __p is not permitted to be a null pointer.
@@ -719,12 +734,13 @@ namespace std
/**
* @if maint
- * Allocator adaptor to turn an "SGI" style allocator (e.g., __alloc,
- * __malloc_alloc_template) into a "standard" conforming allocator. Note
- * that this adaptor does *not* assume that all objects of the underlying
- * alloc class are identical, nor does it assume that all of the underlying
- * alloc's member functions are static member functions. Note, also, that
- * __allocator<_Tp, __alloc> is essentially the same thing as allocator<_Tp>.
+ * Allocator adaptor to turn an "SGI" style allocator (e.g.,
+ * __alloc, __malloc_alloc_template) into a "standard" conforming
+ * allocator. Note that this adaptor does *not* assume that all
+ * objects of the underlying alloc class are identical, nor does it
+ * assume that all of the underlying alloc's member functions are
+ * static member functions. Note, also, that __allocator<_Tp,
+ * __alloc> is essentially the same thing as allocator<_Tp>.
* @endif
* (See @link Allocators allocators info @endlink for more.)
*/
@@ -732,7 +748,7 @@ namespace std
struct __allocator
{
_Alloc __underlying_alloc;
-
+
typedef size_t size_type;
typedef ptrdiff_t difference_type;
typedef _Tp* pointer;
@@ -761,29 +777,31 @@ namespace std
const_pointer
address(const_reference __x) const { return &__x; }
- // __n is permitted to be 0.
- _Tp*
- allocate(size_type __n, const void* = 0)
- {
- return __n != 0
- ? static_cast<_Tp*>(__underlying_alloc.allocate(__n * sizeof(_Tp)))
- : 0;
- }
-
- // __p is not permitted to be a null pointer.
- void
- deallocate(pointer __p, size_type __n)
- { __underlying_alloc.deallocate(__p, __n * sizeof(_Tp)); }
-
- size_type
- max_size() const throw() { return size_t(-1) / sizeof(_Tp); }
-
- void
- construct(pointer __p, const _Tp& __val) { new(__p) _Tp(__val); }
+ // NB: __n is permitted to be 0. The C++ standard says nothing
+ // about what the return value is when __n == 0.
+ _Tp*
+ allocate(size_type __n, const void* = 0)
+ {
+ _Tp* __ret = 0;
+ if (__n)
+ __ret = static_cast<_Tp*>(_Alloc::allocate(__n * sizeof(_Tp)));
+ return __ret;
+ }
- void
- destroy(pointer __p) { __p->~_Tp(); }
- };
+ // __p is not permitted to be a null pointer.
+ void
+ deallocate(pointer __p, size_type __n)
+ { __underlying_alloc.deallocate(__p, __n * sizeof(_Tp)); }
+
+ size_type
+ max_size() const throw() { return size_t(-1) / sizeof(_Tp); }
+
+ void
+ construct(pointer __p, const _Tp& __val) { new(__p) _Tp(__val); }
+
+ void
+ destroy(pointer __p) { __p->~_Tp(); }
+ };
template<typename _Alloc>
struct __allocator<void, _Alloc>
diff --git a/libstdc++-v3/include/bits/stl_bvector.h b/libstdc++-v3/include/bits/stl_bvector.h
index 59e7b7f967c..2c97d470582 100644
--- a/libstdc++-v3/include/bits/stl_bvector.h
+++ b/libstdc++-v3/include/bits/stl_bvector.h
@@ -604,7 +604,9 @@ template <typename _Alloc>
}
void reserve(size_type __n) {
- if (capacity() < __n) {
+ if (__n > this->max_size())
+ __throw_length_error("vector::reserve");
+ if (this->capacity() < __n) {
_Bit_type * __q = _M_bit_alloc(__n);
_M_finish = copy(begin(), end(), iterator(__q, 0));
_M_deallocate();
diff --git a/libstdc++-v3/include/bits/stl_deque.h b/libstdc++-v3/include/bits/stl_deque.h
index 7dbbbea7e83..454fed31bf7 100644
--- a/libstdc++-v3/include/bits/stl_deque.h
+++ b/libstdc++-v3/include/bits/stl_deque.h
@@ -1280,7 +1280,8 @@ namespace std
}
// called by the second initialize_dispatch above
- /** @{
+ //@{
+ /**
* @if maint
* @brief Fills the deque with whatever is in [first,last).
* @param first An input iterator.
@@ -1302,7 +1303,7 @@ namespace std
void
_M_range_initialize(_ForwardIterator __first, _ForwardIterator __last,
forward_iterator_tag);
- /** @} */
+ //@}
/**
* @if maint
@@ -1383,7 +1384,8 @@ namespace std
}
- /** @{
+ //@{
+ /**
* @if maint
* @brief Helper functions for push_* and pop_*.
* @endif
@@ -1396,7 +1398,7 @@ namespace std
#endif
void _M_pop_back_aux();
void _M_pop_front_aux();
- /** @} */
+ //@}
// Internal insert functions follow. The *_aux functions do the actual
@@ -1462,7 +1464,8 @@ namespace std
iterator _M_insert_aux(iterator __pos);
#endif
- /** @{
+ //@{
+ /**
* @if maint
* @brief Memory-handling helpers for the previous internal insert
* functions.
@@ -1491,10 +1494,11 @@ namespace std
void
_M_new_elements_at_back(size_type __new_elements);
- /** @} */
+ //@}
- /** @{
+ //@{
+ /**
* @if maint
* @brief Memory-handling helpers for the major %map.
*
@@ -1519,7 +1523,7 @@ namespace std
void
_M_reallocate_map(size_type __nodes_to_add, bool __add_at_front);
- /** @} */
+ //@}
};
diff --git a/libstdc++-v3/include/bits/stl_iterator_base_types.h b/libstdc++-v3/include/bits/stl_iterator_base_types.h
index e7f131280c3..8b040e49602 100644
--- a/libstdc++-v3/include/bits/stl_iterator_base_types.h
+++ b/libstdc++-v3/include/bits/stl_iterator_base_types.h
@@ -68,7 +68,8 @@
namespace std
{
- /** @{
+ //@{
+ /**
* @defgroup iterator_tags Iterator Tags
* These are empty types, used to distinguish different iterators. The
* distinction is not made by what they contain, but simply by what they
diff --git a/libstdc++-v3/include/bits/stl_tree.h b/libstdc++-v3/include/bits/stl_tree.h
index ec218527c0c..1e7fdf5db2d 100644
--- a/libstdc++-v3/include/bits/stl_tree.h
+++ b/libstdc++-v3/include/bits/stl_tree.h
@@ -457,7 +457,7 @@ namespace std
if (__w->_M_right == 0
|| __w->_M_right->_M_color == _M_black)
{
- if (__w->_M_left) __w->_M_left->_M_color = _M_black;
+ __w->_M_left->_M_color = _M_black;
__w->_M_color = _M_red;
_Rb_tree_rotate_right(__w, __root);
__w = __x_parent->_M_right;
@@ -494,7 +494,7 @@ namespace std
{
if (__w->_M_left == 0 || __w->_M_left->_M_color == _M_black)
{
- if (__w->_M_right) __w->_M_right->_M_color = _M_black;
+ __w->_M_right->_M_color = _M_black;
__w->_M_color = _M_red;
_Rb_tree_rotate_left(__w, __root);
__w = __x_parent->_M_left;
diff --git a/libstdc++-v3/include/bits/stl_vector.h b/libstdc++-v3/include/bits/stl_vector.h
index a885d9f8dcb..53547322d65 100644
--- a/libstdc++-v3/include/bits/stl_vector.h
+++ b/libstdc++-v3/include/bits/stl_vector.h
@@ -73,62 +73,62 @@ namespace std
* See bits/stl_deque.h's _Deque_alloc_base for an explanation.
* @endif
*/
- template <typename _Tp, typename _Allocator, bool _IsStatic>
+ template<typename _Tp, typename _Allocator, bool _IsStatic>
class _Vector_alloc_base
- {
- public:
- typedef typename _Alloc_traits<_Tp, _Allocator>::allocator_type
- allocator_type;
-
- allocator_type
- get_allocator() const { return _M_data_allocator; }
+ {
+ public:
+ typedef typename _Alloc_traits<_Tp, _Allocator>::allocator_type
+ allocator_type;
+
+ allocator_type
+ get_allocator() const { return _M_data_allocator; }
- _Vector_alloc_base(const allocator_type& __a)
+ _Vector_alloc_base(const allocator_type& __a)
: _M_data_allocator(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0)
- {}
+ { }
- protected:
- allocator_type _M_data_allocator;
- _Tp* _M_start;
- _Tp* _M_finish;
- _Tp* _M_end_of_storage;
+ protected:
+ allocator_type _M_data_allocator;
+ _Tp* _M_start;
+ _Tp* _M_finish;
+ _Tp* _M_end_of_storage;
- _Tp*
- _M_allocate(size_t __n) { return _M_data_allocator.allocate(__n); }
+ _Tp*
+ _M_allocate(size_t __n) { return _M_data_allocator.allocate(__n); }
- void
- _M_deallocate(_Tp* __p, size_t __n)
- { if (__p) _M_data_allocator.deallocate(__p, __n); }
- };
+ void
+ _M_deallocate(_Tp* __p, size_t __n)
+ { if (__p) _M_data_allocator.deallocate(__p, __n); }
+ };
/// @if maint Specialization for instanceless allocators. @endif
- template <typename _Tp, typename _Allocator>
+ template<typename _Tp, typename _Allocator>
class _Vector_alloc_base<_Tp, _Allocator, true>
- {
- public:
- typedef typename _Alloc_traits<_Tp, _Allocator>::allocator_type
- allocator_type;
-
- allocator_type
- get_allocator() const { return allocator_type(); }
-
- _Vector_alloc_base(const allocator_type&)
+ {
+ public:
+ typedef typename _Alloc_traits<_Tp, _Allocator>::allocator_type
+ allocator_type;
+
+ allocator_type
+ get_allocator() const { return allocator_type(); }
+
+ _Vector_alloc_base(const allocator_type&)
: _M_start(0), _M_finish(0), _M_end_of_storage(0)
- {}
-
- protected:
- _Tp* _M_start;
- _Tp* _M_finish;
- _Tp* _M_end_of_storage;
+ { }
- typedef typename _Alloc_traits<_Tp, _Allocator>::_Alloc_type _Alloc_type;
+ protected:
+ _Tp* _M_start;
+ _Tp* _M_finish;
+ _Tp* _M_end_of_storage;
- _Tp*
- _M_allocate(size_t __n) { return _Alloc_type::allocate(__n); }
+ typedef typename _Alloc_traits<_Tp, _Allocator>::_Alloc_type _Alloc_type;
+
+ _Tp*
+ _M_allocate(size_t __n) { return _Alloc_type::allocate(__n); }
- void
- _M_deallocate(_Tp* __p, size_t __n) { _Alloc_type::deallocate(__p, __n);}
- };
+ void
+ _M_deallocate(_Tp* __p, size_t __n) { _Alloc_type::deallocate(__p, __n);}
+ };
/**
@@ -136,29 +136,31 @@ namespace std
* See bits/stl_deque.h's _Deque_base for an explanation.
* @endif
*/
- template <typename _Tp, typename _Alloc>
+ template<typename _Tp, typename _Alloc>
struct _Vector_base
: public _Vector_alloc_base<_Tp, _Alloc,
_Alloc_traits<_Tp, _Alloc>::_S_instanceless>
- {
- public:
- typedef _Vector_alloc_base<_Tp, _Alloc,
- _Alloc_traits<_Tp, _Alloc>::_S_instanceless>
- _Base;
- typedef typename _Base::allocator_type allocator_type;
-
- _Vector_base(const allocator_type& __a)
- : _Base(__a) {}
- _Vector_base(size_t __n, const allocator_type& __a)
- : _Base(__a)
{
- _M_start = _M_allocate(__n);
- _M_finish = _M_start;
- _M_end_of_storage = _M_start + __n;
- }
-
- ~_Vector_base() { _M_deallocate(_M_start, _M_end_of_storage - _M_start); }
- };
+ public:
+ typedef _Vector_alloc_base<_Tp, _Alloc,
+ _Alloc_traits<_Tp, _Alloc>::_S_instanceless>
+ _Base;
+ typedef typename _Base::allocator_type allocator_type;
+
+ _Vector_base(const allocator_type& __a)
+ : _Base(__a) { }
+
+ _Vector_base(size_t __n, const allocator_type& __a)
+ : _Base(__a)
+ {
+ _M_start = _M_allocate(__n);
+ _M_finish = _M_start;
+ _M_end_of_storage = _M_start + __n;
+ }
+
+ ~_Vector_base()
+ { _M_deallocate(_M_start, _M_end_of_storage - _M_start); }
+ };
/**
@@ -179,723 +181,744 @@ namespace std
* and saves the user from worrying about memory and size allocation.
* Subscripting ( @c [] ) access is also provided as with C-style arrays.
*/
- template <typename _Tp, typename _Alloc = allocator<_Tp> >
+ template<typename _Tp, typename _Alloc = allocator<_Tp> >
class vector : protected _Vector_base<_Tp, _Alloc>
- {
- // concept requirements
- __glibcpp_class_requires(_Tp, _SGIAssignableConcept)
-
- typedef _Vector_base<_Tp, _Alloc> _Base;
- typedef vector<_Tp, _Alloc> vector_type;
-
- public:
- typedef _Tp value_type;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef __gnu_cxx::__normal_iterator<pointer, vector_type> iterator;
- typedef __gnu_cxx::__normal_iterator<const_pointer, vector_type>
- const_iterator;
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
- typedef std::reverse_iterator<iterator> reverse_iterator;
- typedef value_type& reference;
- typedef const value_type& const_reference;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef typename _Base::allocator_type allocator_type;
-
- protected:
- /** @if maint
- * These two functions and three data members are all from the top-most
- * base class, which varies depending on the type of %allocator. They
- * should be pretty self-explanatory, as %vector uses a simple contiguous
- * allocation scheme.
- * @endif
- */
- using _Base::_M_allocate;
- using _Base::_M_deallocate;
- using _Base::_M_start;
- using _Base::_M_finish;
- using _Base::_M_end_of_storage;
-
- public:
- // [23.2.4.1] construct/copy/destroy
- // (assign() and get_allocator() are also listed in this section)
- /**
- * @brief Default constructor creates no elements.
- */
- explicit
- vector(const allocator_type& __a = allocator_type())
- : _Base(__a) {}
-
- /**
- * @brief Create a %vector with copies of an exemplar element.
- * @param n The number of elements to initially create.
- * @param value An element to copy.
- *
- * This constructor fills the %vector with @a n copies of @a value.
- */
- vector(size_type __n, const value_type& __value,
- const allocator_type& __a = allocator_type())
+ {
+ // Concept requirements.
+ __glibcpp_class_requires(_Tp, _SGIAssignableConcept)
+
+ typedef _Vector_base<_Tp, _Alloc> _Base;
+ typedef vector<_Tp, _Alloc> vector_type;
+
+ public:
+ typedef _Tp value_type;
+ typedef value_type* pointer;
+ typedef const value_type* const_pointer;
+ typedef __gnu_cxx::__normal_iterator<pointer, vector_type> iterator;
+ typedef __gnu_cxx::__normal_iterator<const_pointer, vector_type>
+ const_iterator;
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+ typedef std::reverse_iterator<iterator> reverse_iterator;
+ typedef value_type& reference;
+ typedef const value_type& const_reference;
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ typedef typename _Base::allocator_type allocator_type;
+
+ protected:
+ /** @if maint
+ * These two functions and three data members are all from the
+ * top-most base class, which varies depending on the type of
+ * %allocator. They should be pretty self-explanatory, as
+ * %vector uses a simple contiguous allocation scheme. @endif
+ */
+ using _Base::_M_allocate;
+ using _Base::_M_deallocate;
+ using _Base::_M_start;
+ using _Base::_M_finish;
+ using _Base::_M_end_of_storage;
+
+ public:
+ // [23.2.4.1] construct/copy/destroy
+ // (assign() and get_allocator() are also listed in this section)
+ /**
+ * @brief Default constructor creates no elements.
+ */
+ explicit
+ vector(const allocator_type& __a = allocator_type())
+ : _Base(__a) { }
+
+ /**
+ * @brief Create a %vector with copies of an exemplar element.
+ * @param n The number of elements to initially create.
+ * @param value An element to copy.
+ *
+ * This constructor fills the %vector with @a n copies of @a value.
+ */
+ vector(size_type __n, const value_type& __value,
+ const allocator_type& __a = allocator_type())
: _Base(__n, __a)
{ _M_finish = uninitialized_fill_n(_M_start, __n, __value); }
- /**
- * @brief Create a %vector with default elements.
- * @param n The number of elements to initially create.
- *
- * This constructor fills the %vector with @a n copies of a
- * default-constructed element.
- */
- explicit
- vector(size_type __n)
+ /**
+ * @brief Create a %vector with default elements.
+ * @param n The number of elements to initially create.
+ *
+ * This constructor fills the %vector with @a n copies of a
+ * default-constructed element.
+ */
+ explicit
+ vector(size_type __n)
: _Base(__n, allocator_type())
{ _M_finish = uninitialized_fill_n(_M_start, __n, value_type()); }
-
- /**
- * @brief %Vector copy constructor.
- * @param x A %vector of identical element and allocator types.
- *
- * The newly-created %vector uses a copy of the allocation object used
- * by @a x. All the elements of @a x are copied, but any extra memory in
- * @a x (for fast expansion) will not be copied.
- */
- vector(const vector& __x)
+
+ /**
+ * @brief %Vector copy constructor.
+ * @param x A %vector of identical element and allocator types.
+ *
+ * The newly-created %vector uses a copy of the allocation
+ * object used by @a x. All the elements of @a x are copied,
+ * but any extra memory in
+ * @a x (for fast expansion) will not be copied.
+ */
+ vector(const vector& __x)
: _Base(__x.size(), __x.get_allocator())
{ _M_finish = uninitialized_copy(__x.begin(), __x.end(), _M_start); }
- /**
- * @brief Builds a %vector from a range.
- * @param first An input iterator.
- * @param last An input iterator.
- *
- * Create a %vector consisting of copies of the elements from [first,last).
- *
- * If the iterators are forward, bidirectional, or random-access, then
- * this will call the elements' copy constructor N times (where N is
- * distance(first,last)) and do no memory reallocation. But if only
- * input iterators are used, then this will do at most 2N calls to the
- * copy constructor, and logN memory reallocations.
- */
- template <typename _InputIterator>
- vector(_InputIterator __first, _InputIterator __last,
- const allocator_type& __a = allocator_type())
- : _Base(__a)
- {
- // Check whether it's an integral type. If so, it's not an iterator.
- typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
- _M_initialize_dispatch(__first, __last, _Integral());
- }
-
- /**
- * The dtor only erases the elements, and note that if the elements
- * themselves are pointers, the pointed-to memory is not touched in any
- * way. Managing the pointer is the user's responsibilty.
- */
- ~vector() { _Destroy(_M_start, _M_finish); }
-
- /**
- * @brief %Vector assignment operator.
- * @param x A %vector of identical element and allocator types.
- *
- * All the elements of @a x are copied, but any extra memory in @a x (for
- * fast expansion) will not be copied. Unlike the copy constructor, the
- * allocator object is not copied.
- */
- vector&
- operator=(const vector& __x);
-
- /**
- * @brief Assigns a given value to a %vector.
- * @param n Number of elements to be assigned.
- * @param val Value to be assigned.
- *
- * This function fills a %vector with @a n copies of the given value.
- * Note that the assignment completely changes the %vector and that the
- * resulting %vector's size is the same as the number of elements assigned.
- * Old data may be lost.
- */
- void
- assign(size_type __n, const value_type& __val) { _M_fill_assign(__n, __val); }
-
- /**
- * @brief Assigns a range to a %vector.
- * @param first An input iterator.
- * @param last An input iterator.
- *
- * This function fills a %vector with copies of the elements in the
- * range [first,last).
- *
- * Note that the assignment completely changes the %vector and that the
- * resulting %vector's size is the same as the number of elements assigned.
- * Old data may be lost.
- */
- template<typename _InputIterator>
- void
- assign(_InputIterator __first, _InputIterator __last)
- {
- // Check whether it's an integral type. If so, it's not an iterator.
- typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
- _M_assign_dispatch(__first, __last, _Integral());
- }
-
- /// Get a copy of the memory allocation object.
- allocator_type
- get_allocator() const { return _Base::get_allocator(); }
-
- // iterators
- /**
- * Returns a read/write iterator that points to the first element in the
- * %vector. Iteration is done in ordinary element order.
- */
- iterator
- begin() { return iterator (_M_start); }
-
- /**
- * Returns a read-only (constant) iterator that points to the first element
- * in the %vector. Iteration is done in ordinary element order.
- */
- const_iterator
- begin() const { return const_iterator (_M_start); }
-
- /**
- * Returns a read/write iterator that points one past the last element in
- * the %vector. Iteration is done in ordinary element order.
- */
- iterator
- end() { return iterator (_M_finish); }
-
- /**
- * Returns a read-only (constant) iterator that points one past the last
- * element in the %vector. Iteration is done in ordinary element order.
- */
- const_iterator
- end() const { return const_iterator (_M_finish); }
-
- /**
- * Returns a read/write reverse iterator that points to the last element in
- * the %vector. Iteration is done in reverse element order.
- */
- reverse_iterator
- rbegin() { return reverse_iterator(end()); }
-
- /**
- * Returns a read-only (constant) reverse iterator that points to the last
- * element in the %vector. Iteration is done in reverse element order.
- */
- const_reverse_iterator
- rbegin() const { return const_reverse_iterator(end()); }
-
- /**
- * Returns a read/write reverse iterator that points to one before the
- * first element in the %vector. Iteration is done in reverse element
- * order.
- */
- reverse_iterator
- rend() { return reverse_iterator(begin()); }
-
- /**
- * Returns a read-only (constant) reverse iterator that points to one
- * before the first element in the %vector. Iteration is done in reverse
- * element order.
- */
- const_reverse_iterator
- rend() const { return const_reverse_iterator(begin()); }
-
- // [23.2.4.2] capacity
- /** Returns the number of elements in the %vector. */
- size_type
- size() const { return size_type(end() - begin()); }
-
- /** Returns the size() of the largest possible %vector. */
- size_type
- max_size() const { return size_type(-1) / sizeof(value_type); }
-
- /**
- * @brief Resizes the %vector to the specified number of elements.
- * @param new_size Number of elements the %vector should contain.
- * @param x Data with which new elements should be populated.
- *
- * This function will %resize the %vector to the specified number of
- * elements. If the number is smaller than the %vector's current size the
- * %vector is truncated, otherwise the %vector is extended and new elements
- * are populated with given data.
- */
- void
- resize(size_type __new_size, const value_type& __x)
- {
- if (__new_size < size())
- erase(begin() + __new_size, end());
- else
- insert(end(), __new_size - size(), __x);
- }
-
- /**
- * @brief Resizes the %vector to the specified number of elements.
- * @param new_size Number of elements the %vector should contain.
- *
- * This function will resize the %vector to the specified number of
- * elements. If the number is smaller than the %vector's current size the
- * %vector is truncated, otherwise the %vector is extended and new elements
- * are default-constructed.
- */
- void
- resize(size_type __new_size) { resize(__new_size, value_type()); }
-
- /**
- * Returns the total number of elements that the %vector can hold before
- * needing to allocate more memory.
- */
- size_type
- capacity() const
- { return size_type(const_iterator(_M_end_of_storage) - begin()); }
-
- /**
- * Returns true if the %vector is empty. (Thus begin() would equal end().)
- */
- bool
- empty() const { return begin() == end(); }
-
- /**
- * @brief Attempt to preallocate enough memory for specified number of
- * elements.
- * @param n Number of elements required.
- * @throw std::length_error If @a n exceeds @c max_size().
- *
- * This function attempts to reserve enough memory for the %vector to hold
- * the specified number of elements. If the number requested is more than
- * max_size(), length_error is thrown.
- *
- * The advantage of this function is that if optimal code is a necessity
- * and the user can determine the number of elements that will be required,
- * the user can reserve the memory in %advance, and thus prevent a possible
- * reallocation of memory and copying of %vector data.
- */
- void
- reserve(size_type __n);
-
- // element access
- /**
- * @brief Subscript access to the data contained in the %vector.
- * @param n The index of the element for which data should be accessed.
- * @return Read/write reference to data.
- *
- * This operator allows for easy, array-style, data access.
- * Note that data access with this operator is unchecked and out_of_range
- * lookups are not defined. (For checked lookups see at().)
- */
- reference
- operator[](size_type __n) { return *(begin() + __n); }
-
- /**
- * @brief Subscript access to the data contained in the %vector.
- * @param n The index of the element for which data should be accessed.
- * @return Read-only (constant) reference to data.
- *
- * This operator allows for easy, array-style, data access.
- * Note that data access with this operator is unchecked and out_of_range
- * lookups are not defined. (For checked lookups see at().)
- */
- const_reference
- operator[](size_type __n) const { return *(begin() + __n); }
-
- protected:
- /// @if maint Safety check used only from at(). @endif
- void
- _M_range_check(size_type __n) const
- {
- if (__n >= this->size())
- __throw_out_of_range("vector [] access out of range");
- }
-
- public:
- /**
- * @brief Provides access to the data contained in the %vector.
- * @param n The index of the element for which data should be accessed.
- * @return Read/write reference to data.
- * @throw std::out_of_range If @a n is an invalid index.
- *
- * This function provides for safer data access. The parameter is first
- * checked that it is in the range of the vector. The function throws
- * out_of_range if the check fails.
- */
- reference
- at(size_type __n) { _M_range_check(__n); return (*this)[__n]; }
-
- /**
- * @brief Provides access to the data contained in the %vector.
- * @param n The index of the element for which data should be accessed.
- * @return Read-only (constant) reference to data.
- * @throw std::out_of_range If @a n is an invalid index.
- *
- * This function provides for safer data access. The parameter is first
- * checked that it is in the range of the vector. The function throws
- * out_of_range if the check fails.
- */
- const_reference
- at(size_type __n) const { _M_range_check(__n); return (*this)[__n]; }
-
- /**
- * Returns a read/write reference to the data at the first element of the
- * %vector.
- */
- reference
- front() { return *begin(); }
-
- /**
- * Returns a read-only (constant) reference to the data at the first
- * element of the %vector.
- */
- const_reference
- front() const { return *begin(); }
-
- /**
- * Returns a read/write reference to the data at the last element of the
- * %vector.
- */
- reference
- back() { return *(end() - 1); }
-
- /**
- * Returns a read-only (constant) reference to the data at the last
- * element of the %vector.
- */
- const_reference
- back() const { return *(end() - 1); }
-
- // [23.2.4.3] modifiers
- /**
- * @brief Add data to the end of the %vector.
- * @param x Data to be added.
- *
- * This is a typical stack operation. The function creates an element at
- * the end of the %vector and assigns the given data to it.
- * Due to the nature of a %vector this operation can be done in constant
- * time if the %vector has preallocated space available.
- */
- void
- push_back(const value_type& __x)
- {
- if (_M_finish != _M_end_of_storage)
- {
- _Construct(_M_finish, __x);
- ++_M_finish;
- }
- else
- _M_insert_aux(end(), __x);
- }
-
- /**
- * @brief Removes last element.
- *
- * This is a typical stack operation. It shrinks the %vector by one.
- *
- * Note that no data is returned, and if the last element's data is
- * needed, it should be retrieved before pop_back() is called.
- */
- void
- pop_back()
- {
- --_M_finish;
- _Destroy(_M_finish);
- }
-
- /**
- * @brief Inserts given value into %vector before specified iterator.
- * @param position An iterator into the %vector.
- * @param x Data to be inserted.
- * @return An iterator that points to the inserted data.
- *
- * This function will insert a copy of the given value before the specified
- * location.
- * Note that this kind of operation could be expensive for a %vector and if
- * it is frequently used the user should consider using std::list.
- */
- iterator
- insert(iterator __position, const value_type& __x);
-
- #ifdef _GLIBCPP_DEPRECATED
- /**
- * @brief Inserts an element into the %vector.
- * @param position An iterator into the %vector.
- * @return An iterator that points to the inserted element.
- *
- * This function will insert a default-constructed element before the
- * specified location. You should consider using
- * insert(position,value_type()) instead.
- * Note that this kind of operation could be expensive for a vector and if
- * it is frequently used the user should consider using std::list.
- *
- * @note This was deprecated in 3.2 and will be removed in 3.4. You must
- * define @c _GLIBCPP_DEPRECATED to make this visible in 3.2; see
- * c++config.h.
- */
- iterator
- insert(iterator __position)
- { return insert(__position, value_type()); }
- #endif
-
- /**
- * @brief Inserts a number of copies of given data into the %vector.
- * @param position An iterator into the %vector.
- * @param n Number of elements to be inserted.
- * @param x Data to be inserted.
- *
- * This function will insert a specified number of copies of the given data
- * before the location specified by @a position.
- *
- * Note that this kind of operation could be expensive for a %vector and if
- * it is frequently used the user should consider using std::list.
- */
- void
- insert (iterator __pos, size_type __n, const value_type& __x)
- { _M_fill_insert(__pos, __n, __x); }
-
- /**
- * @brief Inserts a range into the %vector.
- * @param pos An iterator into the %vector.
- * @param first An input iterator.
- * @param last An input iterator.
- *
- * This function will insert copies of the data in the range [first,last)
- * into the %vector before the location specified by @a pos.
- *
- * Note that this kind of operation could be expensive for a %vector and if
- * it is frequently used the user should consider using std::list.
- */
- template<typename _InputIterator>
- void
- insert(iterator __pos, _InputIterator __first, _InputIterator __last)
- {
- // Check whether it's an integral type. If so, it's not an iterator.
- typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
- _M_insert_dispatch(__pos, __first, __last, _Integral());
- }
-
- /**
- * @brief Remove element at given position.
- * @param position Iterator pointing to element to be erased.
- * @return An iterator pointing to the next element (or end()).
- *
- * This function will erase the element at the given position and thus
- * shorten the %vector by one.
- *
- * Note This operation could be expensive and if it is frequently used the
- * user should consider using std::list. The user is also cautioned that
- * this function only erases the element, and that if the element is itself
- * a pointer, the pointed-to memory is not touched in any way. Managing
- * the pointer is the user's responsibilty.
- */
- iterator
- erase(iterator __position);
-
- /**
- * @brief Remove a range of elements.
- * @param first Iterator pointing to the first element to be erased.
- * @param last Iterator pointing to one past the last element to be
- * erased.
- * @return An iterator pointing to the element pointed to by @a last
- * prior to erasing (or end()).
- *
- * This function will erase the elements in the range [first,last) and
- * shorten the %vector accordingly.
- *
- * Note This operation could be expensive and if it is frequently used the
- * user should consider using std::list. The user is also cautioned that
- * this function only erases the elements, and that if the elements
- * themselves are pointers, the pointed-to memory is not touched in any
- * way. Managing the pointer is the user's responsibilty.
- */
- iterator
- erase(iterator __first, iterator __last);
-
- /**
- * @brief Swaps data with another %vector.
- * @param x A %vector of the same element and allocator types.
- *
- * This exchanges the elements between two vectors in constant time.
- * (Three pointers, so it should be quite fast.)
- * Note that the global std::swap() function is specialized such that
- * std::swap(v1,v2) will feed to this function.
- */
- void
- swap(vector& __x)
- {
- std::swap(_M_start, __x._M_start);
- std::swap(_M_finish, __x._M_finish);
- std::swap(_M_end_of_storage, __x._M_end_of_storage);
- }
-
- /**
- * Erases all the elements. Note that this function only erases the
- * elements, and that if the elements themselves are pointers, the
- * pointed-to memory is not touched in any way. Managing the pointer is
- * the user's responsibilty.
- */
- void
- clear() { erase(begin(), end()); }
-
- protected:
- /**
- * @if maint
- * Memory expansion handler. Uses the member allocation function to
- * obtain @a n bytes of memory, and then copies [first,last) into it.
- * @endif
- */
- template <typename _ForwardIterator>
- pointer
- _M_allocate_and_copy(size_type __n,
- _ForwardIterator __first, _ForwardIterator __last)
- {
- pointer __result = _M_allocate(__n);
- try
+ /**
+ * @brief Builds a %vector from a range.
+ * @param first An input iterator.
+ * @param last An input iterator.
+ *
+ * Create a %vector consisting of copies of the elements from
+ * [first,last).
+ *
+ * If the iterators are forward, bidirectional, or random-access, then
+ * this will call the elements' copy constructor N times (where N is
+ * distance(first,last)) and do no memory reallocation. But if only
+ * input iterators are used, then this will do at most 2N calls to the
+ * copy constructor, and logN memory reallocations.
+ */
+ template<typename _InputIterator>
+ vector(_InputIterator __first, _InputIterator __last,
+ const allocator_type& __a = allocator_type())
+ : _Base(__a)
{
- uninitialized_copy(__first, __last, __result);
- return __result;
- }
- catch(...)
+ // Check whether it's an integral type. If so, it's not an iterator.
+ typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
+ _M_initialize_dispatch(__first, __last, _Integral());
+ }
+
+ /**
+ * The dtor only erases the elements, and note that if the elements
+ * themselves are pointers, the pointed-to memory is not touched in any
+ * way. Managing the pointer is the user's responsibilty.
+ */
+ ~vector() { _Destroy(_M_start, _M_finish); }
+
+ /**
+ * @brief %Vector assignment operator.
+ * @param x A %vector of identical element and allocator types.
+ *
+ * All the elements of @a x are copied, but any extra memory in
+ * @a x (for fast expansion) will not be copied. Unlike the
+ * copy constructor, the allocator object is not copied.
+ */
+ vector&
+ operator=(const vector& __x);
+
+ /**
+ * @brief Assigns a given value to a %vector.
+ * @param n Number of elements to be assigned.
+ * @param val Value to be assigned.
+ *
+ * This function fills a %vector with @a n copies of the given
+ * value. Note that the assignment completely changes the
+ * %vector and that the resulting %vector's size is the same as
+ * the number of elements assigned. Old data may be lost.
+ */
+ void
+ assign(size_type __n, const value_type& __val)
+ { _M_fill_assign(__n, __val); }
+
+ /**
+ * @brief Assigns a range to a %vector.
+ * @param first An input iterator.
+ * @param last An input iterator.
+ *
+ * This function fills a %vector with copies of the elements in the
+ * range [first,last).
+ *
+ * Note that the assignment completely changes the %vector and
+ * that the resulting %vector's size is the same as the number
+ * of elements assigned. Old data may be lost.
+ */
+ template<typename _InputIterator>
+ void
+ assign(_InputIterator __first, _InputIterator __last)
{
- _M_deallocate(__result, __n);
- __throw_exception_again;
- }
- }
-
-
- // Internal constructor functions follow.
-
- // called by the range constructor to implement [23.1.1]/9
- template<typename _Integer>
+ // Check whether it's an integral type. If so, it's not an iterator.
+ typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
+ _M_assign_dispatch(__first, __last, _Integral());
+ }
+
+ /// Get a copy of the memory allocation object.
+ allocator_type
+ get_allocator() const { return _Base::get_allocator(); }
+
+ // iterators
+ /**
+ * Returns a read/write iterator that points to the first element in the
+ * %vector. Iteration is done in ordinary element order.
+ */
+ iterator
+ begin() { return iterator (_M_start); }
+
+ /**
+ * Returns a read-only (constant) iterator that points to the
+ * first element in the %vector. Iteration is done in ordinary
+ * element order.
+ */
+ const_iterator
+ begin() const { return const_iterator (_M_start); }
+
+ /**
+ * Returns a read/write iterator that points one past the last
+ * element in the %vector. Iteration is done in ordinary
+ * element order.
+ */
+ iterator
+ end() { return iterator (_M_finish); }
+
+ /**
+ * Returns a read-only (constant) iterator that points one past the last
+ * element in the %vector. Iteration is done in ordinary element order.
+ */
+ const_iterator
+ end() const { return const_iterator (_M_finish); }
+
+ /**
+ * Returns a read/write reverse iterator that points to the
+ * last element in the %vector. Iteration is done in reverse
+ * element order.
+ */
+ reverse_iterator
+ rbegin() { return reverse_iterator(end()); }
+
+ /**
+ * Returns a read-only (constant) reverse iterator that points
+ * to the last element in the %vector. Iteration is done in
+ * reverse element order.
+ */
+ const_reverse_iterator
+ rbegin() const { return const_reverse_iterator(end()); }
+
+ /**
+ * Returns a read/write reverse iterator that points to one before the
+ * first element in the %vector. Iteration is done in reverse element
+ * order.
+ */
+ reverse_iterator
+ rend() { return reverse_iterator(begin()); }
+
+ /**
+ * Returns a read-only (constant) reverse iterator that points
+ * to one before the first element in the %vector. Iteration
+ * is done in reverse element order.
+ */
+ const_reverse_iterator
+ rend() const { return const_reverse_iterator(begin()); }
+
+ // [23.2.4.2] capacity
+ /** Returns the number of elements in the %vector. */
+ size_type
+ size() const { return size_type(end() - begin()); }
+
+ /** Returns the size() of the largest possible %vector. */
+ size_type
+ max_size() const { return size_type(-1) / sizeof(value_type); }
+
+ /**
+ * @brief Resizes the %vector to the specified number of elements.
+ * @param new_size Number of elements the %vector should contain.
+ * @param x Data with which new elements should be populated.
+ *
+ * This function will %resize the %vector to the specified
+ * number of elements. If the number is smaller than the
+ * %vector's current size the %vector is truncated, otherwise
+ * the %vector is extended and new elements are populated with
+ * given data.
+ */
void
- _M_initialize_dispatch(_Integer __n, _Integer __value, __true_type)
+ resize(size_type __new_size, const value_type& __x)
{
- _M_start = _M_allocate(__n);
- _M_end_of_storage = _M_start + __n;
- _M_finish = uninitialized_fill_n(_M_start, __n, __value);
+ if (__new_size < size())
+ erase(begin() + __new_size, end());
+ else
+ insert(end(), __new_size - size(), __x);
}
-
- // called by the range constructor to implement [23.1.1]/9
- template<typename _InputIter>
+
+ /**
+ * @brief Resizes the %vector to the specified number of elements.
+ * @param new_size Number of elements the %vector should contain.
+ *
+ * This function will resize the %vector to the specified
+ * number of elements. If the number is smaller than the
+ * %vector's current size the %vector is truncated, otherwise
+ * the %vector is extended and new elements are
+ * default-constructed.
+ */
+ void
+ resize(size_type __new_size) { resize(__new_size, value_type()); }
+
+ /**
+ * Returns the total number of elements that the %vector can hold before
+ * needing to allocate more memory.
+ */
+ size_type
+ capacity() const
+ { return size_type(const_iterator(_M_end_of_storage) - begin()); }
+
+ /**
+ * Returns true if the %vector is empty. (Thus begin() would
+ * equal end().)
+ */
+ bool
+ empty() const { return begin() == end(); }
+
+ /**
+ * @brief Attempt to preallocate enough memory for specified number of
+ * elements.
+ * @param n Number of elements required.
+ * @throw std::length_error If @a n exceeds @c max_size().
+ *
+ * This function attempts to reserve enough memory for the
+ * %vector to hold the specified number of elements. If the
+ * number requested is more than max_size(), length_error is
+ * thrown.
+ *
+ * The advantage of this function is that if optimal code is a
+ * necessity and the user can determine the number of elements
+ * that will be required, the user can reserve the memory in
+ * %advance, and thus prevent a possible reallocation of memory
+ * and copying of %vector data.
+ */
+ void
+ reserve(size_type __n);
+
+ // element access
+ /**
+ * @brief Subscript access to the data contained in the %vector.
+ * @param n The index of the element for which data should be accessed.
+ * @return Read/write reference to data.
+ *
+ * This operator allows for easy, array-style, data access.
+ * Note that data access with this operator is unchecked and
+ * out_of_range lookups are not defined. (For checked lookups
+ * see at().)
+ */
+ reference
+ operator[](size_type __n) { return *(begin() + __n); }
+
+ /**
+ * @brief Subscript access to the data contained in the %vector.
+ * @param n The index of the element for which data should be
+ * accessed.
+ * @return Read-only (constant) reference to data.
+ *
+ * This operator allows for easy, array-style, data access.
+ * Note that data access with this operator is unchecked and
+ * out_of_range lookups are not defined. (For checked lookups
+ * see at().)
+ */
+ const_reference
+ operator[](size_type __n) const { return *(begin() + __n); }
+
+ protected:
+ /// @if maint Safety check used only from at(). @endif
void
- _M_initialize_dispatch(_InputIter __first, _InputIter __last,
- __false_type)
+ _M_range_check(size_type __n) const
{
- typedef typename iterator_traits<_InputIter>::iterator_category
- _IterCategory;
- _M_range_initialize(__first, __last, _IterCategory());
+ if (__n >= this->size())
+ __throw_out_of_range("vector [] access out of range");
}
-
- // called by the second initialize_dispatch above
- template <typename _InputIterator>
- void
- _M_range_initialize(_InputIterator __first,
- _InputIterator __last, input_iterator_tag)
- {
- for ( ; __first != __last; ++__first)
- push_back(*__first);
- }
-
- // called by the second initialize_dispatch above
- template <typename _ForwardIterator>
- void _M_range_initialize(_ForwardIterator __first,
- _ForwardIterator __last, forward_iterator_tag)
- {
- size_type __n = distance(__first, __last);
- _M_start = _M_allocate(__n);
- _M_end_of_storage = _M_start + __n;
- _M_finish = uninitialized_copy(__first, __last, _M_start);
- }
-
-
- // Internal assign functions follow. The *_aux functions do the actual
- // assignment work for the range versions.
-
- // called by the range assign to implement [23.1.1]/9
- template<typename _Integer>
- void
- _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
- {
- _M_fill_assign(static_cast<size_type>(__n),
- static_cast<value_type>(__val));
- }
-
- // called by the range assign to implement [23.1.1]/9
- template<typename _InputIter>
+
+ public:
+ /**
+ * @brief Provides access to the data contained in the %vector.
+ * @param n The index of the element for which data should be
+ * accessed.
+ * @return Read/write reference to data.
+ * @throw std::out_of_range If @a n is an invalid index.
+ *
+ * This function provides for safer data access. The parameter is first
+ * checked that it is in the range of the vector. The function throws
+ * out_of_range if the check fails.
+ */
+ reference
+ at(size_type __n) { _M_range_check(__n); return (*this)[__n]; }
+
+ /**
+ * @brief Provides access to the data contained in the %vector.
+ * @param n The index of the element for which data should be
+ * accessed.
+ * @return Read-only (constant) reference to data.
+ * @throw std::out_of_range If @a n is an invalid index.
+ *
+ * This function provides for safer data access. The parameter
+ * is first checked that it is in the range of the vector. The
+ * function throws out_of_range if the check fails.
+ */
+ const_reference
+ at(size_type __n) const { _M_range_check(__n); return (*this)[__n]; }
+
+ /**
+ * Returns a read/write reference to the data at the first
+ * element of the %vector.
+ */
+ reference
+ front() { return *begin(); }
+
+ /**
+ * Returns a read-only (constant) reference to the data at the first
+ * element of the %vector.
+ */
+ const_reference
+ front() const { return *begin(); }
+
+ /**
+ * Returns a read/write reference to the data at the last element of the
+ * %vector.
+ */
+ reference
+ back() { return *(end() - 1); }
+
+ /**
+ * Returns a read-only (constant) reference to the data at the last
+ * element of the %vector.
+ */
+ const_reference
+ back() const { return *(end() - 1); }
+
+ // [23.2.4.3] modifiers
+ /**
+ * @brief Add data to the end of the %vector.
+ * @param x Data to be added.
+ *
+ * This is a typical stack operation. The function creates an
+ * element at the end of the %vector and assigns the given data
+ * to it. Due to the nature of a %vector this operation can be
+ * done in constant time if the %vector has preallocated space
+ * available.
+ */
void
- _M_assign_dispatch(_InputIter __first, _InputIter __last, __false_type)
+ push_back(const value_type& __x)
{
- typedef typename iterator_traits<_InputIter>::iterator_category
- _IterCategory;
- _M_assign_aux(__first, __last, _IterCategory());
+ if (_M_finish != _M_end_of_storage)
+ {
+ _Construct(_M_finish, __x);
+ ++_M_finish;
+ }
+ else
+ _M_insert_aux(end(), __x);
}
-
- // called by the second assign_dispatch above
- template <typename _InputIterator>
- void
- _M_assign_aux(_InputIterator __first, _InputIterator __last,
- input_iterator_tag);
-
- // called by the second assign_dispatch above
- template <typename _ForwardIterator>
- void
- _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
- forward_iterator_tag);
-
- // Called by assign(n,t), and the range assign when it turns out to be the
- // same thing.
- void
- _M_fill_assign(size_type __n, const value_type& __val);
-
-
- // Internal insert functions follow.
-
- // called by the range insert to implement [23.1.1]/9
- template<typename _Integer>
+
+ /**
+ * @brief Removes last element.
+ *
+ * This is a typical stack operation. It shrinks the %vector by one.
+ *
+ * Note that no data is returned, and if the last element's data is
+ * needed, it should be retrieved before pop_back() is called.
+ */
void
- _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val,
- __true_type)
+ pop_back()
{
- _M_fill_insert(__pos, static_cast<size_type>(__n),
- static_cast<value_type>(__val));
+ --_M_finish;
+ _Destroy(_M_finish);
}
-
- // called by the range insert to implement [23.1.1]/9
- template<typename _InputIterator>
+
+ /**
+ * @brief Inserts given value into %vector before specified iterator.
+ * @param position An iterator into the %vector.
+ * @param x Data to be inserted.
+ * @return An iterator that points to the inserted data.
+ *
+ * This function will insert a copy of the given value before
+ * the specified location. Note that this kind of operation
+ * could be expensive for a %vector and if it is frequently
+ * used the user should consider using std::list.
+ */
+ iterator
+ insert(iterator __position, const value_type& __x);
+
+#ifdef _GLIBCPP_DEPRECATED
+ /**
+ * @brief Inserts an element into the %vector.
+ * @param position An iterator into the %vector.
+ * @return An iterator that points to the inserted element.
+ *
+ * This function will insert a default-constructed element
+ * before the specified location. You should consider using
+ * insert(position,value_type()) instead. Note that this kind
+ * of operation could be expensive for a vector and if it is
+ * frequently used the user should consider using std::list.
+ *
+ * @note This was deprecated in 3.2 and will be removed in 3.4.
+ * You must define @c _GLIBCPP_DEPRECATED to make this visible
+ * in 3.2; see c++config.h.
+ */
+ iterator
+ insert(iterator __position)
+ { return insert(__position, value_type()); }
+#endif
+
+ /**
+ * @brief Inserts a number of copies of given data into the %vector.
+ * @param position An iterator into the %vector.
+ * @param n Number of elements to be inserted.
+ * @param x Data to be inserted.
+ *
+ * This function will insert a specified number of copies of
+ * the given data before the location specified by @a position.
+ *
+ * Note that this kind of operation could be expensive for a
+ * %vector and if it is frequently used the user should
+ * consider using std::list.
+ */
+ void
+ insert(iterator __pos, size_type __n, const value_type& __x)
+ { _M_fill_insert(__pos, __n, __x); }
+
+ /**
+ * @brief Inserts a range into the %vector.
+ * @param pos An iterator into the %vector.
+ * @param first An input iterator.
+ * @param last An input iterator.
+ *
+ * This function will insert copies of the data in the range
+ * [first,last) into the %vector before the location specified
+ * by @a pos.
+ *
+ * Note that this kind of operation could be expensive for a
+ * %vector and if it is frequently used the user should
+ * consider using std::list.
+ */
+ template<typename _InputIterator>
+ void
+ insert(iterator __pos, _InputIterator __first, _InputIterator __last)
+ {
+ // Check whether it's an integral type. If so, it's not an iterator.
+ typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
+ _M_insert_dispatch(__pos, __first, __last, _Integral());
+ }
+
+ /**
+ * @brief Remove element at given position.
+ * @param position Iterator pointing to element to be erased.
+ * @return An iterator pointing to the next element (or end()).
+ *
+ * This function will erase the element at the given position and thus
+ * shorten the %vector by one.
+ *
+ * Note This operation could be expensive and if it is
+ * frequently used the user should consider using std::list.
+ * The user is also cautioned that this function only erases
+ * the element, and that if the element is itself a pointer,
+ * the pointed-to memory is not touched in any way. Managing
+ * the pointer is the user's responsibilty.
+ */
+ iterator
+ erase(iterator __position);
+
+ /**
+ * @brief Remove a range of elements.
+ * @param first Iterator pointing to the first element to be erased.
+ * @param last Iterator pointing to one past the last element to be
+ * erased.
+ * @return An iterator pointing to the element pointed to by @a last
+ * prior to erasing (or end()).
+ *
+ * This function will erase the elements in the range [first,last) and
+ * shorten the %vector accordingly.
+ *
+ * Note This operation could be expensive and if it is
+ * frequently used the user should consider using std::list.
+ * The user is also cautioned that this function only erases
+ * the elements, and that if the elements themselves are
+ * pointers, the pointed-to memory is not touched in any way.
+ * Managing the pointer is the user's responsibilty.
+ */
+ iterator
+ erase(iterator __first, iterator __last);
+
+ /**
+ * @brief Swaps data with another %vector.
+ * @param x A %vector of the same element and allocator types.
+ *
+ * This exchanges the elements between two vectors in constant time.
+ * (Three pointers, so it should be quite fast.)
+ * Note that the global std::swap() function is specialized such that
+ * std::swap(v1,v2) will feed to this function.
+ */
void
- _M_insert_dispatch(iterator __pos, _InputIterator __first,
- _InputIterator __last, __false_type)
+ swap(vector& __x)
{
- typedef typename iterator_traits<_InputIterator>::iterator_category
- _IterCategory;
- _M_range_insert(__pos, __first, __last, _IterCategory());
+ std::swap(_M_start, __x._M_start);
+ std::swap(_M_finish, __x._M_finish);
+ std::swap(_M_end_of_storage, __x._M_end_of_storage);
}
-
- // called by the second insert_dispatch above
- template <typename _InputIterator>
+
+ /**
+ * Erases all the elements. Note that this function only erases the
+ * elements, and that if the elements themselves are pointers, the
+ * pointed-to memory is not touched in any way. Managing the pointer is
+ * the user's responsibilty.
+ */
void
- _M_range_insert(iterator __pos,
- _InputIterator __first, _InputIterator __last,
- input_iterator_tag);
-
- // called by the second insert_dispatch above
- template <typename _ForwardIterator>
+ clear() { erase(begin(), end()); }
+
+ protected:
+ /**
+ * @if maint
+ * Memory expansion handler. Uses the member allocation function to
+ * obtain @a n bytes of memory, and then copies [first,last) into it.
+ * @endif
+ */
+ template<typename _ForwardIterator>
+ pointer
+ _M_allocate_and_copy(size_type __n,
+ _ForwardIterator __first, _ForwardIterator __last)
+ {
+ pointer __result = _M_allocate(__n);
+ try
+ {
+ uninitialized_copy(__first, __last, __result);
+ return __result;
+ }
+ catch(...)
+ {
+ _M_deallocate(__result, __n);
+ __throw_exception_again;
+ }
+ }
+
+
+ // Internal constructor functions follow.
+
+ // Called by the range constructor to implement [23.1.1]/9
+ template<typename _Integer>
+ void
+ _M_initialize_dispatch(_Integer __n, _Integer __value, __true_type)
+ {
+ _M_start = _M_allocate(__n);
+ _M_end_of_storage = _M_start + __n;
+ _M_finish = uninitialized_fill_n(_M_start, __n, __value);
+ }
+
+ // Called by the range constructor to implement [23.1.1]/9
+ template<typename _InputIter>
+ void
+ _M_initialize_dispatch(_InputIter __first, _InputIter __last,
+ __false_type)
+ {
+ typedef typename iterator_traits<_InputIter>::iterator_category
+ _IterCategory;
+ _M_range_initialize(__first, __last, _IterCategory());
+ }
+
+ // Called by the second initialize_dispatch above
+ template<typename _InputIterator>
+ void
+ _M_range_initialize(_InputIterator __first,
+ _InputIterator __last, input_iterator_tag)
+ {
+ for ( ; __first != __last; ++__first)
+ push_back(*__first);
+ }
+
+ // Called by the second initialize_dispatch above
+ template<typename _ForwardIterator>
+ void
+ _M_range_initialize(_ForwardIterator __first,
+ _ForwardIterator __last, forward_iterator_tag)
+ {
+ size_type __n = distance(__first, __last);
+ _M_start = _M_allocate(__n);
+ _M_end_of_storage = _M_start + __n;
+ _M_finish = uninitialized_copy(__first, __last, _M_start);
+ }
+
+
+ // Internal assign functions follow. The *_aux functions do the actual
+ // assignment work for the range versions.
+
+ // Called by the range assign to implement [23.1.1]/9
+ template<typename _Integer>
+ void
+ _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
+ {
+ _M_fill_assign(static_cast<size_type>(__n),
+ static_cast<value_type>(__val));
+ }
+
+ // Called by the range assign to implement [23.1.1]/9
+ template<typename _InputIter>
+ void
+ _M_assign_dispatch(_InputIter __first, _InputIter __last, __false_type)
+ {
+ typedef typename iterator_traits<_InputIter>::iterator_category
+ _IterCategory;
+ _M_assign_aux(__first, __last, _IterCategory());
+ }
+
+ // Called by the second assign_dispatch above
+ template<typename _InputIterator>
+ void
+ _M_assign_aux(_InputIterator __first, _InputIterator __last,
+ input_iterator_tag);
+
+ // Called by the second assign_dispatch above
+ template<typename _ForwardIterator>
+ void
+ _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
+ forward_iterator_tag);
+
+ // Called by assign(n,t), and the range assign when it turns out
+ // to be the same thing.
void
- _M_range_insert(iterator __pos,
- _ForwardIterator __first, _ForwardIterator __last,
- forward_iterator_tag);
-
- // Called by insert(p,n,x), and the range insert when it turns out to be
- // the same thing.
- void
- _M_fill_insert (iterator __pos, size_type __n, const value_type& __x);
-
- // called by insert(p,x)
- void
- _M_insert_aux(iterator __position, const value_type& __x);
-
- #ifdef _GLIBCPP_DEPRECATED
- // unused now (same situation as in deque)
- void _M_insert_aux(iterator __position);
- #endif
- };
+ _M_fill_assign(size_type __n, const value_type& __val);
+
+
+ // Internal insert functions follow.
+
+ // Called by the range insert to implement [23.1.1]/9
+ template<typename _Integer>
+ void
+ _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val,
+ __true_type)
+ {
+ _M_fill_insert(__pos, static_cast<size_type>(__n),
+ static_cast<value_type>(__val));
+ }
+
+ // Called by the range insert to implement [23.1.1]/9
+ template<typename _InputIterator>
+ void
+ _M_insert_dispatch(iterator __pos, _InputIterator __first,
+ _InputIterator __last, __false_type)
+ {
+ typedef typename iterator_traits<_InputIterator>::iterator_category
+ _IterCategory;
+ _M_range_insert(__pos, __first, __last, _IterCategory());
+ }
+
+ // Called by the second insert_dispatch above
+ template<typename _InputIterator>
+ void
+ _M_range_insert(iterator __pos, _InputIterator __first,
+ _InputIterator __last, input_iterator_tag);
+
+ // Called by the second insert_dispatch above
+ template<typename _ForwardIterator>
+ void
+ _M_range_insert(iterator __pos, _ForwardIterator __first,
+ _ForwardIterator __last, forward_iterator_tag);
+
+ // Called by insert(p,n,x), and the range insert when it turns out to be
+ // the same thing.
+ void
+ _M_fill_insert(iterator __pos, size_type __n, const value_type& __x);
+
+ // Called by insert(p,x)
+ void
+ _M_insert_aux(iterator __position, const value_type& __x);
+
+#ifdef _GLIBCPP_DEPRECATED
+ // Unused now (same situation as in deque)
+ void _M_insert_aux(iterator __position);
+#endif
+ };
/**
@@ -908,7 +931,7 @@ namespace std
* vectors. Vectors are considered equivalent if their sizes are equal,
* and if corresponding elements compare equal.
*/
- template <typename _Tp, typename _Alloc>
+ template<typename _Tp, typename _Alloc>
inline bool
operator==(const vector<_Tp,_Alloc>& __x, const vector<_Tp,_Alloc>& __y)
{
@@ -927,7 +950,7 @@ namespace std
*
* See std::lexographical_compare() for how the determination is made.
*/
- template <typename _Tp, typename _Alloc>
+ template<typename _Tp, typename _Alloc>
inline bool
operator<(const vector<_Tp,_Alloc>& __x, const vector<_Tp,_Alloc>& __y)
{
@@ -936,31 +959,31 @@ namespace std
}
/// Based on operator==
- template <typename _Tp, typename _Alloc>
+ template<typename _Tp, typename _Alloc>
inline bool
operator!=(const vector<_Tp,_Alloc>& __x, const vector<_Tp,_Alloc>& __y)
{ return !(__x == __y); }
/// Based on operator<
- template <typename _Tp, typename _Alloc>
+ template<typename _Tp, typename _Alloc>
inline bool
operator>(const vector<_Tp,_Alloc>& __x, const vector<_Tp,_Alloc>& __y)
{ return __y < __x; }
/// Based on operator<
- template <typename _Tp, typename _Alloc>
+ template<typename _Tp, typename _Alloc>
inline bool
operator<=(const vector<_Tp,_Alloc>& __x, const vector<_Tp,_Alloc>& __y)
{ return !(__y < __x); }
/// Based on operator<
- template <typename _Tp, typename _Alloc>
+ template<typename _Tp, typename _Alloc>
inline bool
operator>=(const vector<_Tp,_Alloc>& __x, const vector<_Tp,_Alloc>& __y)
{ return !(__x < __y); }
/// See std::vector::swap().
- template <typename _Tp, typename _Alloc>
+ template<typename _Tp, typename _Alloc>
inline void
swap(vector<_Tp,_Alloc>& __x, vector<_Tp,_Alloc>& __y)
{ __x.swap(__y); }
diff --git a/libstdc++-v3/include/bits/streambuf.tcc b/libstdc++-v3/include/bits/streambuf.tcc
index c8084ee68ad..5f57df583a7 100644
--- a/libstdc++-v3/include/bits/streambuf.tcc
+++ b/libstdc++-v3/include/bits/streambuf.tcc
@@ -69,7 +69,7 @@ namespace std
bool __testpos = _M_in_cur && _M_in_beg < _M_in_cur;
bool __testne = _M_in_cur && !traits_type::eq(__c, this->gptr()[-1]);
if (!__testpos || __testne)
- __ret = pbackfail(traits_type::to_int_type(__c));
+ __ret = this->pbackfail(traits_type::to_int_type(__c));
else
{
_M_in_cur_move(-1);
@@ -209,7 +209,8 @@ namespace std
{
while (__testput && __bufsize != -1)
{
- if (__bufsize != 0 && __sbin->gptr() != NULL)
+ if (__bufsize != 0 && __sbin->gptr() != NULL
+ && __sbin->gptr() + __bufsize <= __sbin->egptr())
{
__xtrct = __sbout->sputn(__sbin->gptr(), __bufsize);
__ret += __xtrct;
@@ -219,8 +220,11 @@ namespace std
}
else
{
- _CharT __buf[256];
- streamsize __charsread = __sbin->sgetn(__buf, sizeof(__buf));
+ size_t __size =
+ __sbin->_M_buf_size_opt > 0 ? __sbin->_M_buf_size_opt : 1;
+ _CharT* __buf =
+ static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * __size));
+ streamsize __charsread = __sbin->sgetn(__buf, __size);
__xtrct = __sbout->sputn(__buf, __charsread);
__ret += __xtrct;
if (__xtrct != __charsread)
diff --git a/libstdc++-v3/include/bits/vector.tcc b/libstdc++-v3/include/bits/vector.tcc
index 9b21d0da9fc..da5cf7edf83 100644
--- a/libstdc++-v3/include/bits/vector.tcc
+++ b/libstdc++-v3/include/bits/vector.tcc
@@ -63,24 +63,26 @@
namespace std
{
- template <typename _Tp, typename _Alloc>
+ template<typename _Tp, typename _Alloc>
void
vector<_Tp,_Alloc>::
reserve(size_type __n)
{
- if (capacity() < __n)
- {
- const size_type __old_size = size();
- pointer __tmp = _M_allocate_and_copy(__n, _M_start, _M_finish);
- _Destroy(_M_start, _M_finish);
- _M_deallocate(_M_start, _M_end_of_storage - _M_start);
- _M_start = __tmp;
- _M_finish = __tmp + __old_size;
- _M_end_of_storage = _M_start + __n;
- }
+ if (__n > this->max_size())
+ __throw_length_error("vector::reserve");
+ if (this->capacity() < __n)
+ {
+ const size_type __old_size = size();
+ pointer __tmp = _M_allocate_and_copy(__n, _M_start, _M_finish);
+ _Destroy(_M_start, _M_finish);
+ _M_deallocate(_M_start, _M_end_of_storage - _M_start);
+ _M_start = __tmp;
+ _M_finish = __tmp + __old_size;
+ _M_end_of_storage = _M_start + __n;
+ }
}
- template <typename _Tp, typename _Alloc>
+ template<typename _Tp, typename _Alloc>
typename vector<_Tp,_Alloc>::iterator
vector<_Tp,_Alloc>::
insert(iterator __position, const value_type& __x)
@@ -96,7 +98,7 @@ namespace std
return begin() + __n;
}
- template <typename _Tp, typename _Alloc>
+ template<typename _Tp, typename _Alloc>
typename vector<_Tp,_Alloc>::iterator
vector<_Tp,_Alloc>::
erase(iterator __position)
@@ -108,7 +110,7 @@ namespace std
return __position;
}
- template <typename _Tp, typename _Alloc>
+ template<typename _Tp, typename _Alloc>
typename vector<_Tp,_Alloc>::iterator
vector<_Tp,_Alloc>::
erase(iterator __first, iterator __last)
@@ -119,7 +121,7 @@ namespace std
return __first;
}
- template <typename _Tp, typename _Alloc>
+ template<typename _Tp, typename _Alloc>
vector<_Tp,_Alloc>&
vector<_Tp,_Alloc>::
operator=(const vector<_Tp,_Alloc>& __x)
@@ -150,7 +152,7 @@ namespace std
return *this;
}
- template <typename _Tp, typename _Alloc>
+ template<typename _Tp, typename _Alloc>
void
vector<_Tp,_Alloc>::
_M_fill_assign(size_t __n, const value_type& __val)
@@ -169,7 +171,7 @@ namespace std
erase(fill_n(begin(), __n, __val), end());
}
- template <typename _Tp, typename _Alloc> template <typename _InputIter>
+ template<typename _Tp, typename _Alloc> template<typename _InputIter>
void
vector<_Tp,_Alloc>::
_M_assign_aux(_InputIter __first, _InputIter __last, input_iterator_tag)
@@ -183,7 +185,7 @@ namespace std
insert(end(), __first, __last);
}
- template <typename _Tp, typename _Alloc> template <typename _ForwardIter>
+ template<typename _Tp, typename _Alloc> template<typename _ForwardIter>
void
vector<_Tp,_Alloc>::
_M_assign_aux(_ForwardIter __first, _ForwardIter __last,
@@ -214,7 +216,7 @@ namespace std
}
}
- template <typename _Tp, typename _Alloc>
+ template<typename _Tp, typename _Alloc>
void
vector<_Tp,_Alloc>::
_M_insert_aux(iterator __position, const _Tp& __x)
@@ -257,7 +259,7 @@ namespace std
}
#ifdef _GLIBCPP_DEPRECATED
- template <typename _Tp, typename _Alloc>
+ template<typename _Tp, typename _Alloc>
void
vector<_Tp,_Alloc>::
_M_insert_aux(iterator __position)
@@ -300,63 +302,64 @@ namespace std
}
#endif
- template <typename _Tp, typename _Alloc>
+ template<typename _Tp, typename _Alloc>
void
vector<_Tp,_Alloc>::
_M_fill_insert(iterator __position, size_type __n, const value_type& __x)
{
if (__n != 0)
{
- if (size_type(_M_end_of_storage - _M_finish) >= __n) {
- value_type __x_copy = __x;
- const size_type __elems_after = end() - __position;
- iterator __old_finish(_M_finish);
- if (__elems_after > __n)
- {
- uninitialized_copy(_M_finish - __n, _M_finish, _M_finish);
- _M_finish += __n;
- copy_backward(__position, __old_finish - __n, __old_finish);
- fill(__position, __position + __n, __x_copy);
- }
- else
- {
- uninitialized_fill_n(_M_finish, __n - __elems_after, __x_copy);
- _M_finish += __n - __elems_after;
- uninitialized_copy(__position, __old_finish, _M_finish);
- _M_finish += __elems_after;
- fill(__position, __old_finish, __x_copy);
- }
- }
+ if (size_type(_M_end_of_storage - _M_finish) >= __n)
+ {
+ value_type __x_copy = __x;
+ const size_type __elems_after = end() - __position;
+ iterator __old_finish(_M_finish);
+ if (__elems_after > __n)
+ {
+ uninitialized_copy(_M_finish - __n, _M_finish, _M_finish);
+ _M_finish += __n;
+ copy_backward(__position, __old_finish - __n, __old_finish);
+ fill(__position, __position + __n, __x_copy);
+ }
+ else
+ {
+ uninitialized_fill_n(_M_finish, __n - __elems_after, __x_copy);
+ _M_finish += __n - __elems_after;
+ uninitialized_copy(__position, __old_finish, _M_finish);
+ _M_finish += __elems_after;
+ fill(__position, __old_finish, __x_copy);
+ }
+ }
else
- {
- const size_type __old_size = size();
- const size_type __len = __old_size + max(__old_size, __n);
- iterator __new_start(_M_allocate(__len));
- iterator __new_finish(__new_start);
- try
- {
- __new_finish = uninitialized_copy(begin(), __position,
- __new_start);
- __new_finish = uninitialized_fill_n(__new_finish, __n, __x);
- __new_finish
- = uninitialized_copy(__position, end(), __new_finish);
- }
- catch(...)
- {
- _Destroy(__new_start,__new_finish);
- _M_deallocate(__new_start.base(),__len);
- __throw_exception_again;
- }
- _Destroy(_M_start, _M_finish);
- _M_deallocate(_M_start, _M_end_of_storage - _M_start);
- _M_start = __new_start.base();
- _M_finish = __new_finish.base();
- _M_end_of_storage = __new_start.base() + __len;
- }
+ {
+ const size_type __old_size = size();
+ const size_type __len = __old_size + max(__old_size, __n);
+ iterator __new_start(_M_allocate(__len));
+ iterator __new_finish(__new_start);
+ try
+ {
+ __new_finish = uninitialized_copy(begin(), __position,
+ __new_start);
+ __new_finish = uninitialized_fill_n(__new_finish, __n, __x);
+ __new_finish = uninitialized_copy(__position, end(),
+ __new_finish);
+ }
+ catch(...)
+ {
+ _Destroy(__new_start,__new_finish);
+ _M_deallocate(__new_start.base(),__len);
+ __throw_exception_again;
+ }
+ _Destroy(_M_start, _M_finish);
+ _M_deallocate(_M_start, _M_end_of_storage - _M_start);
+ _M_start = __new_start.base();
+ _M_finish = __new_finish.base();
+ _M_end_of_storage = __new_start.base() + __len;
+ }
}
}
- template <typename _Tp, typename _Alloc> template <typename _InputIterator>
+ template<typename _Tp, typename _Alloc> template<typename _InputIterator>
void
vector<_Tp,_Alloc>::
_M_range_insert(iterator __pos,
@@ -370,12 +373,11 @@ namespace std
}
}
- template <typename _Tp, typename _Alloc> template <typename _ForwardIterator>
+ template<typename _Tp, typename _Alloc> template<typename _ForwardIterator>
void
vector<_Tp,_Alloc>::
- _M_range_insert(iterator __position,
- _ForwardIterator __first, _ForwardIterator __last,
- forward_iterator_tag)
+ _M_range_insert(iterator __position,_ForwardIterator __first,
+ _ForwardIterator __last, forward_iterator_tag)
{
if (__first != __last)
{
diff --git a/libstdc++-v3/include/std/std_fstream.h b/libstdc++-v3/include/std/std_fstream.h
index c3861051d40..685a38dd944 100644
--- a/libstdc++-v3/include/std/std_fstream.h
+++ b/libstdc++-v3/include/std/std_fstream.h
@@ -50,6 +50,15 @@
namespace std
{
+ // [27.8.1.1] template class basic_filebuf
+ /**
+ * @brief The actual work of input and output (for files).
+ *
+ * This class associates both its input and output sequence with an
+ * external disk file, and maintains a joint file position for both
+ * sequences. Many of its sematics are described in terms of similar
+ * behavior in the Standard C Library's @c FILE streams.
+ */
template<typename _CharT, typename _Traits>
class basic_filebuf : public basic_streambuf<_CharT, _Traits>
{
@@ -61,7 +70,12 @@ namespace std
typedef typename traits_type::pos_type pos_type;
typedef typename traits_type::off_type off_type;
- // Non-standard Types:
+ //@{
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
typedef basic_streambuf<char_type, traits_type> __streambuf_type;
typedef basic_filebuf<char_type, traits_type> __filebuf_type;
typedef __basic_file<char> __file_type;
@@ -69,22 +83,43 @@ namespace std
typedef codecvt<char_type, char, __state_type> __codecvt_type;
typedef typename __codecvt_type::result __res_type;
typedef ctype<char_type> __ctype_type;
+ //@}
friend class ios_base; // For sync_with_stdio.
protected:
// Data Members:
// MT lock inherited from libio or other low-level io library.
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
__c_lock _M_lock;
// External buffer.
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
__file_type _M_file;
// Current and beginning state type for codecvt.
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
__state_type _M_state_cur;
__state_type _M_state_beg;
// Set iff _M_buf is allocated memory from _M_allocate_internal_buffer.
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
bool _M_buf_allocated;
// XXX Needed?
@@ -92,12 +127,26 @@ namespace std
// The position in the buffer corresponding to the external file
// pointer.
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
char_type* _M_filepos;
public:
// Constructors/destructor:
+ /**
+ * @brief Does not open any files.
+ *
+ * The default constructor initializes the parent class using its
+ * own default ctor.
+ */
basic_filebuf();
+ /**
+ * @brief The destructor closes the file first.
+ */
virtual
~basic_filebuf()
{
@@ -106,23 +155,61 @@ namespace std
}
// Members:
+ /**
+ * @brief Returns true if the external file is open.
+ */
bool
is_open() const { return _M_file.is_open(); }
+ /**
+ * @brief Opens an external file.
+ * @param s The name of the file.
+ * @param mode The open mode flags.
+ * @return @c this on success, NULL on failure
+ *
+ * If a file is already open, this function immediately fails.
+ * Otherwise it tries to open the file named @a s using the flags
+ * given in @a mode.
+ *
+ * [Table 92 gives the relation between openmode combinations and the
+ * equivalent fopen() flags, but the table has not been copied yet.]
+ */
__filebuf_type*
open(const char* __s, ios_base::openmode __mode);
+ /**
+ * @brief Closes the currently associated file.
+ * @return @c this on success, NULL on failure
+ *
+ * If no file is currently open, this function immediately fails.
+ *
+ * If a "put buffer area" exists, @c overflow(eof) is called to flush
+ * all the characters. The file is then closed.
+ *
+ * If any operations fail, this function also fails.
+ */
__filebuf_type*
close();
protected:
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
void
_M_allocate_internal_buffer();
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
void
_M_destroy_internal_buffer();
- // Overridden virtual functions:
+ // [27.8.1.4] overridden virtual functions
+ // [documentation is inherited]
virtual streamsize
showmanyc();
@@ -137,15 +224,23 @@ namespace std
// the underflow() case in order to maintain synchronization. So
// instead of calling underflow() from uflow(), we create a common
// subroutine to do the real work.
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
int_type
_M_underflow_common(bool __bump);
+ // [documentation is inherited]
virtual int_type
underflow() { return _M_underflow_common(false); }
+ // [documentation is inherited]
virtual int_type
uflow() { return _M_underflow_common(true); }
+ // [documentation is inherited]
virtual int_type
pbackfail(int_type __c = _Traits::eof());
@@ -157,6 +252,8 @@ namespace std
// this in actuality be a helper function that checks for the
// eccentricities of this implementation, and then call
// overflow() if indeed the buffer is full.
+
+ // [documentation is inherited]
virtual int_type
overflow(int_type __c = _Traits::eof());
@@ -167,25 +264,50 @@ namespace std
// character c.
// 27.5.2.4.5
// Consume some sequence of the characters in the pending sequence.
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
int_type
_M_really_overflow(int_type __c = _Traits::eof());
// Convert internal byte sequence to external, char-based
// sequence via codecvt.
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
void
_M_convert_to_external(char_type*, streamsize, streamsize&, streamsize&);
+ /**
+ * @brief Manipulates the buffer.
+ * @param s Pointer to a buffer area.
+ * @param n Size of @a s.
+ * @return @c this
+ *
+ * If no file has been opened, and both @a s and @a n are zero, then
+ * the stream becomes unbuffered. Otherwise, @c s is used as a
+ * buffer; see
+ * http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html#2
+ * for more.
+ */
virtual __streambuf_type*
setbuf(char_type* __s, streamsize __n);
+ // [documentation is inherited]
virtual pos_type
seekoff(off_type __off, ios_base::seekdir __way,
ios_base::openmode __mode = ios_base::in | ios_base::out);
+ // [documentation is inherited]
virtual pos_type
seekpos(pos_type __pos,
ios_base::openmode __mode = ios_base::in | ios_base::out);
+ // [documentation is inherited]
virtual int
sync()
{
@@ -207,9 +329,11 @@ namespace std
return 0;
}
+ // [documentation is inherited]
virtual void
imbue(const locale& __loc);
+ // [documentation is inherited]
virtual streamsize
xsgetn(char_type* __s, streamsize __n)
{
@@ -231,6 +355,7 @@ namespace std
return __ret;
}
+ // [documentation is inherited]
virtual streamsize
xsputn(const char_type* __s, streamsize __n)
{
@@ -238,6 +363,11 @@ namespace std
return __streambuf_type::xsputn(__s, __n);
}
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
void
_M_output_unshift();
@@ -248,6 +378,11 @@ namespace std
// internal buffer does not truly reflect the contents of the
// external buffer. At this point, for whatever reason, it is in
// an indeterminate state.
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
void
_M_set_indeterminate(void)
{
@@ -258,6 +393,11 @@ namespace std
_M_filepos = _M_buf;
}
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
void
_M_set_determinate(off_type __off)
{
@@ -270,6 +410,11 @@ namespace std
_M_filepos = _M_buf + __off;
}
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
bool
_M_is_indeterminate(void)
{
@@ -286,7 +431,7 @@ namespace std
}
};
- // Explicit specializations.
+ // Explicit specializations, defined in src/fstream.cc.
template<>
basic_filebuf<char>::int_type
basic_filebuf<char>::_M_underflow_common(bool __bump);
@@ -297,9 +442,14 @@ namespace std
basic_filebuf<wchar_t>::_M_underflow_common(bool __bump);
#endif
- // 27.8.1.5 Template class basic_ifstream
+ // [27.8.1.5] Template class basic_ifstream
/**
- * Derivation of general input streams, specific to files.
+ * @brief Controlling input for files.
+ *
+ * This class supports reading from named files, using the inherited
+ * functions from std::basic_istream. To control the associated
+ * sequence, an instance of std::basic_filebuf is used, which this page
+ * refers to as @c sb.
*/
template<typename _CharT, typename _Traits>
class basic_ifstream : public basic_istream<_CharT, _Traits>
@@ -317,20 +467,33 @@ namespace std
typedef basic_istream<char_type, traits_type> __istream_type;
private:
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
__filebuf_type _M_filebuf;
public:
- // Constructors/Destructors:
- /** Default constructor. Create an input file stream. */
+ // Constructors/Destructors:
+ /**
+ * @brief Default constructor.
+ *
+ * Initializes @c sb using its default constructor, and passes
+ * @c &sb to the base class initializer. Does not open any files
+ * (you haven't given it a filename to open).
+ */
basic_ifstream()
: __istream_type(NULL), _M_filebuf()
{ this->init(&_M_filebuf); }
/**
- * @brief Create an input file stream.
- * @param s Null terminated string specifying filename.
+ * @brief Create an input file stream.
+ * @param s Null terminated string specifying the filename.
* @param mode Open file in specified mode (see std::ios_base).
*
+ * @c ios_base::in is automatically included in @a mode.
+ *
* Tip: When using std::string to hold the filename, you must use
* .c_str() before passing it to this constructor.
*/
@@ -342,21 +505,44 @@ namespace std
this->open(__s, __mode);
}
+ /**
+ * @brief The destructor does nothing.
+ *
+ * The file is closed by the filebuf object, not the formatting
+ * stream.
+ */
~basic_ifstream()
{ }
// Members:
/**
- * @brief Get a pointer to the file stream's buffer.
- * @return Pointer to basic_filebuf.
+ * @brief Accessing the underlying buffer.
+ * @return The current basic_filebuf buffer.
+ *
+ * This hides both signatures of std::basic_ios::rdbuf().
*/
__filebuf_type*
rdbuf() const
{ return const_cast<__filebuf_type*>(&_M_filebuf); }
+ /**
+ * @brief Wrapper to test for an open file.
+ * @return @c rdbuf()->is_open()
+ */
bool
is_open() { return _M_filebuf.is_open(); }
+ /**
+ * @brief Opens an external file.
+ * @param s The name of the file.
+ * @param mode The open mode flags.
+ *
+ * Calls @c std::basic_filebuf::open(s,mode|in). If that function
+ * fails, @c failbit is set in the stream's error state.
+ *
+ * Tip: When using std::string to hold the filename, you must use
+ * .c_str() before passing it to this constructor.
+ */
void
open(const char* __s, ios_base::openmode __mode = ios_base::in)
{
@@ -364,7 +550,12 @@ namespace std
this->setstate(ios_base::failbit);
}
- /** Close the file. */
+ /**
+ * @brief Close the file.
+ *
+ * Calls @c std::basic_filebuf::close(). If that function
+ * fails, @c failbit is set in the stream's error state.
+ */
void
close()
{
@@ -374,9 +565,14 @@ namespace std
};
- // 27.8.1.8 Template class basic_ofstream
+ // [27.8.1.8] Template class basic_ofstream
/**
- * Derivation of general output streams, specific to files.
+ * @brief Controlling output for files.
+ *
+ * This class supports reading from named files, using the inherited
+ * functions from std::basic_ostream. To control the associated
+ * sequence, an instance of std::basic_filebuf is used, which this page
+ * refers to as @c sb.
*/
template<typename _CharT, typename _Traits>
class basic_ofstream : public basic_ostream<_CharT,_Traits>
@@ -394,20 +590,34 @@ namespace std
typedef basic_ostream<char_type, traits_type> __ostream_type;
private:
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
__filebuf_type _M_filebuf;
public:
// Constructors:
- /** Default constructor for output file_stream. */
+ /**
+ * @brief Default constructor.
+ *
+ * Initializes @c sb using its default constructor, and passes
+ * @c &sb to the base class initializer. Does not open any files
+ * (you haven't given it a filename to open).
+ */
basic_ofstream()
: __ostream_type(NULL), _M_filebuf()
{ this->init(&_M_filebuf); }
/**
- * @brief Create an output stream.
- * @param s Null terminated string specifying filename.
+ * @brief Create an output file stream.
+ * @param s Null terminated string specifying the filename.
* @param mode Open file in specified mode (see std::ios_base).
*
+ * @c ios_base::out|ios_base::trunc is automatically included in
+ * @a mode.
+ *
* Tip: When using std::string to hold the filename, you must use
* .c_str() before passing it to this constructor.
*/
@@ -420,29 +630,40 @@ namespace std
this->open(__s, __mode);
}
+ /**
+ * @brief The destructor does nothing.
+ *
+ * The file is closed by the filebuf object, not the formatting
+ * stream.
+ */
~basic_ofstream()
{ }
// Members:
/**
- * @brief Get a pointer to the file stream's buffer.
- * @return Pointer to basic_filebuf.
+ * @brief Accessing the underlying buffer.
+ * @return The current basic_filebuf buffer.
+ *
+ * This hides both signatures of std::basic_ios::rdbuf().
*/
__filebuf_type*
rdbuf() const
{ return const_cast<__filebuf_type*>(&_M_filebuf); }
/**
- * @brief Query to see if file stream is open.
- * @return True if stream is open.
+ * @brief Wrapper to test for an open file.
+ * @return @c rdbuf()->is_open()
*/
bool
is_open() { return _M_filebuf.is_open(); }
/**
- * @brief Specify a file to open for output.
- * @param s Null terminated string specifying filename.
- * @param mode Mode in which to open file (see std::ios_base).
+ * @brief Opens an external file.
+ * @param s The name of the file.
+ * @param mode The open mode flags.
+ *
+ * Calls @c std::basic_filebuf::open(s,mode|out|trunc). If that
+ * function fails, @c failbit is set in the stream's error state.
*
* Tip: When using std::string to hold the filename, you must use
* .c_str() before passing it to this constructor.
@@ -455,7 +676,12 @@ namespace std
this->setstate(ios_base::failbit);
}
- /** Close the file stream. */
+ /**
+ * @brief Close the file.
+ *
+ * Calls @c std::basic_filebuf::close(). If that function
+ * fails, @c failbit is set in the stream's error state.
+ */
void
close()
{
@@ -465,9 +691,14 @@ namespace std
};
- // 27.8.1.11 Template class basic_fstream
+ // [27.8.1.11] Template class basic_fstream
/**
- * Derivation of general input/output streams, specific to files.
+ * @brief Controlling intput and output for files.
+ *
+ * This class supports reading from and writing to named files, using
+ * the inherited functions from std::basic_iostream. To control the
+ * associated sequence, an instance of std::basic_filebuf is used, which
+ * this page refers to as @c sb.
*/
template<typename _CharT, typename _Traits>
class basic_fstream : public basic_iostream<_CharT, _Traits>
@@ -486,18 +717,29 @@ namespace std
typedef basic_iostream<char_type, traits_type> __iostream_type;
private:
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
__filebuf_type _M_filebuf;
public:
// Constructors/destructor:
- /** Default constructor. Create a file stream. */
+ /**
+ * @brief Default constructor.
+ *
+ * Initializes @c sb using its default constructor, and passes
+ * @c &sb to the base class initializer. Does not open any files
+ * (you haven't given it a filename to open).
+ */
basic_fstream()
: __iostream_type(NULL), _M_filebuf()
{ this->init(&_M_filebuf); }
/**
- * @brief Create an input/output stream.
- * @param s Null terminated string specifying filename.
+ * @brief Create an input/output file stream.
+ * @param s Null terminated string specifying the filename.
* @param mode Open file in specified mode (see std::ios_base).
*
* Tip: When using std::string to hold the filename, you must use
@@ -512,29 +754,40 @@ namespace std
this->open(__s, __mode);
}
+ /**
+ * @brief The destructor does nothing.
+ *
+ * The file is closed by the filebuf object, not the formatting
+ * stream.
+ */
~basic_fstream()
{ }
// Members:
/**
- * @brief Get a pointer to the file stream's buffer.
- * @return Pointer to basic_filebuf.
+ * @brief Accessing the underlying buffer.
+ * @return The current basic_filebuf buffer.
+ *
+ * This hides both signatures of std::basic_ios::rdbuf().
*/
__filebuf_type*
rdbuf() const
{ return const_cast<__filebuf_type*>(&_M_filebuf); }
/**
- * @brief Query to see if file stream is open.
- * @return True if stream is open.
+ * @brief Wrapper to test for an open file.
+ * @return @c rdbuf()->is_open()
*/
bool
is_open() { return _M_filebuf.is_open(); }
/**
- * @brief Specify a file to open for input and/or output.
- * @param s Null terminated string specifying filename.
- * @param mode Mode in which to open file (see std::ios_base).
+ * @brief Opens an external file.
+ * @param s The name of the file.
+ * @param mode The open mode flags.
+ *
+ * Calls @c std::basic_filebuf::open(s,mode). If that
+ * function fails, @c failbit is set in the stream's error state.
*
* Tip: When using std::string to hold the filename, you must use
* .c_str() before passing it to this constructor.
@@ -547,7 +800,12 @@ namespace std
setstate(ios_base::failbit);
}
- /** Close the file stream. */
+ /**
+ * @brief Close the file.
+ *
+ * Calls @c std::basic_filebuf::close(). If that function
+ * fails, @c failbit is set in the stream's error state.
+ */
void
close()
{
diff --git a/libstdc++-v3/include/std/std_iomanip.h b/libstdc++-v3/include/std/std_iomanip.h
index 23237ce210d..26756a8041c 100644
--- a/libstdc++-v3/include/std/std_iomanip.h
+++ b/libstdc++-v3/include/std/std_iomanip.h
@@ -47,8 +47,18 @@
namespace std
{
+ // [27.6.3] standard manipulators
+ // Also see DR 183.
+
struct _Resetiosflags { ios_base::fmtflags _M_mask; };
+ /**
+ * @brief Manipulator for @c setf.
+ * @param mask A format flags mask.
+ *
+ * Sent to a stream object, this manipulator resets the specified flags,
+ * via @e stream.setf(0,mask).
+ */
inline _Resetiosflags
resetiosflags(ios_base::fmtflags __mask)
{
@@ -76,6 +86,13 @@ namespace std
struct _Setiosflags { ios_base::fmtflags _M_mask; };
+ /**
+ * @brief Manipulator for @c setf.
+ * @param mask A format flags mask.
+ *
+ * Sent to a stream object, this manipulator sets the format flags
+ * to @a mask.
+ */
inline _Setiosflags
setiosflags(ios_base::fmtflags __mask)
{
@@ -103,6 +120,14 @@ namespace std
struct _Setbase { int _M_base; };
+ /**
+ * @brief Manipulator for @c setf.
+ * @param base A numeric base.
+ *
+ * Sent to a stream object, this manipulator changes the
+ * @c ios_base::basefield flags to @c oct, @c dec, or @c hex when @a base
+ * is 8, 10, or 16, accordingly, and to 0 if @a base is any other value.
+ */
inline _Setbase
setbase(int __base)
{
@@ -137,6 +162,13 @@ namespace std
template<typename _CharT>
struct _Setfill { _CharT _M_c; };
+ /**
+ * @brief Manipulator for @c fill.
+ * @param c The new fill character.
+ *
+ * Sent to a stream object, this manipulator calls @c fill(c) for that
+ * object.
+ */
template<typename _CharT>
inline _Setfill<_CharT>
setfill(_CharT __c)
@@ -165,6 +197,13 @@ namespace std
struct _Setprecision { int _M_n; };
+ /**
+ * @brief Manipulator for @c precision.
+ * @param n The new precision.
+ *
+ * Sent to a stream object, this manipulator calls @c precision(n) for
+ * that object.
+ */
inline _Setprecision
setprecision(int __n)
{
@@ -192,6 +231,13 @@ namespace std
struct _Setw { int _M_n; };
+ /**
+ * @brief Manipulator for @c width.
+ * @param n The new width.
+ *
+ * Sent to a stream object, this manipulator calls @c width(n) for
+ * that object.
+ */
inline _Setw
setw(int __n)
{
diff --git a/libstdc++-v3/include/std/std_iosfwd.h b/libstdc++-v3/include/std/std_iosfwd.h
index 797f4936dc8..124c8ffc5ff 100644
--- a/libstdc++-v3/include/std/std_iosfwd.h
+++ b/libstdc++-v3/include/std/std_iosfwd.h
@@ -102,35 +102,64 @@ namespace std
class ios_base;
#endif
- typedef basic_ios<char> ios;
- typedef basic_streambuf<char> streambuf;
- typedef basic_istream<char> istream;
- typedef basic_ostream<char> ostream;
- typedef basic_iostream<char> iostream;
- typedef basic_stringbuf<char> stringbuf;
- typedef basic_istringstream<char> istringstream;
- typedef basic_ostringstream<char> ostringstream;
- typedef basic_stringstream<char> stringstream;
- typedef basic_filebuf<char> filebuf;
- typedef basic_ifstream<char> ifstream;
- typedef basic_ofstream<char> ofstream;
- typedef basic_fstream<char> fstream;
+ /**
+ * @defgroup s27_2_iosfwd I/O Forward Declarations
+ *
+ * Nearly all of the I/O classes are parameterized on the type of
+ * characters they read and write. (The major exception is ios_base at
+ * the top of the hierarchy.) This is a change from pre-Standard
+ * streams, which were not templates.
+ *
+ * For ease of use and compatibility, all of the basic_* I/O-related
+ * classes are given typedef names for both of the builtin character
+ * widths (wide and narrow). The typedefs are the same as the
+ * pre-Standard names, for example:
+ *
+ * @code
+ * typedef basic_ifstream<char> ifstream;
+ * @endcode
+ *
+ * Because properly forward-declaring these classes can be difficult, you
+ * should not do it yourself. Instead, include the &lt;iosfwd&gt;
+ * header, which contains only declarations of all the I/O classes as
+ * well as the typedefs. Trying to forward-declare the typedefs
+ * themselves (e.g., "class ostream;") is not valid ISO C++.
+ *
+ * For more specific declarations, see
+ * http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html#10
+ *
+ * @{
+ */
+ typedef basic_ios<char> ios; ///< @isiosfwd
+ typedef basic_streambuf<char> streambuf; ///< @isiosfwd
+ typedef basic_istream<char> istream; ///< @isiosfwd
+ typedef basic_ostream<char> ostream; ///< @isiosfwd
+ typedef basic_iostream<char> iostream; ///< @isiosfwd
+ typedef basic_stringbuf<char> stringbuf; ///< @isiosfwd
+ typedef basic_istringstream<char> istringstream; ///< @isiosfwd
+ typedef basic_ostringstream<char> ostringstream; ///< @isiosfwd
+ typedef basic_stringstream<char> stringstream; ///< @isiosfwd
+ typedef basic_filebuf<char> filebuf; ///< @isiosfwd
+ typedef basic_ifstream<char> ifstream; ///< @isiosfwd
+ typedef basic_ofstream<char> ofstream; ///< @isiosfwd
+ typedef basic_fstream<char> fstream; ///< @isiosfwd
#ifdef _GLIBCPP_USE_WCHAR_T
- typedef basic_ios<wchar_t> wios;
- typedef basic_streambuf<wchar_t> wstreambuf;
- typedef basic_istream<wchar_t> wistream;
- typedef basic_ostream<wchar_t> wostream;
- typedef basic_iostream<wchar_t> wiostream;
- typedef basic_stringbuf<wchar_t> wstringbuf;
- typedef basic_istringstream<wchar_t> wistringstream;
- typedef basic_ostringstream<wchar_t> wostringstream;
- typedef basic_stringstream<wchar_t> wstringstream;
- typedef basic_filebuf<wchar_t> wfilebuf;
- typedef basic_ifstream<wchar_t> wifstream;
- typedef basic_ofstream<wchar_t> wofstream;
- typedef basic_fstream<wchar_t> wfstream;
+ typedef basic_ios<wchar_t> wios; ///< @isiosfwd
+ typedef basic_streambuf<wchar_t> wstreambuf; ///< @isiosfwd
+ typedef basic_istream<wchar_t> wistream; ///< @isiosfwd
+ typedef basic_ostream<wchar_t> wostream; ///< @isiosfwd
+ typedef basic_iostream<wchar_t> wiostream; ///< @isiosfwd
+ typedef basic_stringbuf<wchar_t> wstringbuf; ///< @isiosfwd
+ typedef basic_istringstream<wchar_t> wistringstream; ///< @isiosfwd
+ typedef basic_ostringstream<wchar_t> wostringstream; ///< @isiosfwd
+ typedef basic_stringstream<wchar_t> wstringstream; ///< @isiosfwd
+ typedef basic_filebuf<wchar_t> wfilebuf; ///< @isiosfwd
+ typedef basic_ifstream<wchar_t> wifstream; ///< @isiosfwd
+ typedef basic_ofstream<wchar_t> wofstream; ///< @isiosfwd
+ typedef basic_fstream<wchar_t> wfstream; ///< @isiosfwd
#endif
+ /** @} */
} // namespace std
#endif
diff --git a/libstdc++-v3/include/std/std_iostream.h b/libstdc++-v3/include/std/std_iostream.h
index d0736b83513..d70949377df 100644
--- a/libstdc++-v3/include/std/std_iostream.h
+++ b/libstdc++-v3/include/std/std_iostream.h
@@ -47,17 +47,31 @@
namespace std
{
- extern istream cin;
- extern ostream cout;
- extern ostream cerr;
- extern ostream clog;
+ /**
+ * @name Standard Stream Objects
+ *
+ * The &lt;iostream&gt; header declares the eight <em>standard stream
+ * objects</em>. For other declarations, see
+ * http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html#10 and the
+ * @link s27_2_iosfwd I/O forward declarations @endlink
+ *
+ * They are required by default to cooperate with the global C library's
+ * @c FILE streams, and to be available during program startup and
+ * termination. For more information, see the HOWTO linked to above.
+ */
+ //@{
+ extern istream cin; ///< Linked to standard input
+ extern ostream cout; ///< Linked to standard output
+ extern ostream cerr; ///< Linked to standard error (unbuffered)
+ extern ostream clog; ///< Linked to standard error (buffered)
#ifdef _GLIBCPP_USE_WCHAR_T
- extern wistream wcin;
- extern wostream wcout;
- extern wostream wcerr;
- extern wostream wclog;
+ extern wistream wcin; ///< Linked to standard input
+ extern wostream wcout; ///< Linked to standard output
+ extern wostream wcerr; ///< Linked to standard error (unbuffered)
+ extern wostream wclog; ///< Linked to standard error (buffered)
#endif
+ //@}
// For construction of filebuffers for cout, cin, cerr, clog et. al.
static ios_base::Init __ioinit;
diff --git a/libstdc++-v3/include/std/std_istream.h b/libstdc++-v3/include/std/std_istream.h
index 8aa9123ed5c..7e050322328 100644
--- a/libstdc++-v3/include/std/std_istream.h
+++ b/libstdc++-v3/include/std/std_istream.h
@@ -46,7 +46,14 @@
namespace std
{
- // 27.6.1.1 Template class basic_istream
+ // [27.6.1.1] Template class basic_istream
+ /**
+ * @brief Controlling input.
+ *
+ * This is the base class for all input streams. It provides text
+ * formatting of all builtin types, and communicates with any class
+ * derived from basic_streambuf to do the actual input.
+ */
template<typename _CharT, typename _Traits>
class basic_istream : virtual public basic_ios<_CharT, _Traits>
{
@@ -68,10 +75,23 @@ namespace std
protected:
// Data Members:
+ /**
+ * @if maint
+ * The number of characters extracted in the previous unformatted
+ * function; see gcount().
+ * @endif
+ */
streamsize _M_gcount;
public:
- // 27.6.1.1.1 Constructor/destructor:
+ // [27.6.1.1.1] constructor/destructor
+ /**
+ * @brief Base constructor.
+ *
+ * This ctor is almost never called by the user directly, rather from
+ * derived classes' initialization lists, which pass a pointer to
+ * their own stream buffer.
+ */
explicit
basic_istream(__streambuf_type* __sb)
{
@@ -79,16 +99,29 @@ namespace std
_M_gcount = streamsize(0);
}
+ /**
+ * @brief Base destructor.
+ *
+ * This does very little apart from providing a virtual base dtor.
+ */
virtual
~basic_istream()
{ _M_gcount = streamsize(0); }
- // 27.6.1.1.2 Prefix/suffix:
+ // [27.6.1.1.2] prefix/suffix
class sentry;
friend class sentry;
- // 27.6.1.2 Formatted input:
- // 27.6.1.2.3 basic_istream::operator>>
+ // [27.6.1.2] formatted input
+ // [27.6.1.2.3] basic_istream::operator>>
+ //@{
+ /**
+ * @brief Interface for manipulators.
+ *
+ * Manuipulators such as @c std::ws and @c std::dec use these
+ * functions in constructs like "std::cin >> std::ws". For more
+ * information, see the iomanip header.
+ */
__istream_type&
operator>>(__istream_type& (*__pf)(__istream_type&));
@@ -97,8 +130,36 @@ namespace std
__istream_type&
operator>>(ios_base& (*__pf)(ios_base&));
+ //@}
- // 27.6.1.2.2 Arithmetic Extractors
+ // [27.6.1.2.2] arithmetic extractors
+ /**
+ * @name Arithmetic Extractors
+ *
+ * All the @c operator>> functions (aka <em>formatted input
+ * functions</em>) have some common behavior. Each starts by
+ * constructing a temporary object of type std::basic_istream::sentry
+ * with the second argument (noskipws) set to false. This has several
+ * effects, concluding with the setting of a status flag; see the
+ * sentry documentation for more.
+ *
+ * If the sentry status is good, the function tries to extract
+ * whatever data is appropriate for the type of the argument.
+ *
+ * If an exception is thrown during extraction, ios_base::badbit
+ * will be turned on in the stream's error state without causing an
+ * ios_base::failure to be thrown. The original exception will then
+ * be rethrown.
+ */
+ //@{
+ /**
+ * @brief Basic arithmetic extractors
+ * @param A variable of builtin type.
+ * @return @c *this if successful
+ *
+ * These functions use the stream's current locale (specifically, the
+ * @c num_get facet) to parse the input data.
+ */
__istream_type&
operator>>(bool& __n);
@@ -140,92 +201,444 @@ namespace std
__istream_type&
operator>>(void*& __p);
+ /**
+ * @brief Extracting into another streambuf.
+ * @param sb A pointer to a streambuf
+ *
+ * This function behaves like one of the basic arithmetic extractors,
+ * in that it also constructs a sentry onject and has the same error
+ * handling behavior.
+ *
+ * If @a sb is NULL, the stream will set failbit in its error state.
+ *
+ * Characters are extracted from this stream and inserted into the
+ * @a sb streambuf until one of the following occurs:
+ *
+ * - the input stream reaches end-of-file,
+ * - insertion into the output buffer fails (in this case, the
+ * character that would have been inserted is not extracted), or
+ * - an exception occurs (and in this case is caught)
+ *
+ * If the function inserts no characters, failbit is set.
+ */
__istream_type&
operator>>(__streambuf_type* __sb);
+ //@}
- // 27.6.1.3 Unformatted input:
+ // [27.6.1.3] unformatted input
+ /**
+ * @brief Character counting
+ * @return The number of characters extracted by the previous
+ * unformatted input function dispatched for this stream.
+ */
inline streamsize
- gcount(void) const
+ gcount() const
{ return _M_gcount; }
+ /**
+ * @name Unformatted Input Functions
+ *
+ * All the unformatted input functions have some common behavior.
+ * Each starts by constructing a temporary object of type
+ * std::basic_istream::sentry with the second argument (noskipws)
+ * set to true. This has several effects, concluding with the
+ * setting of a status flag; see the sentry documentation for more.
+ *
+ * If the sentry status is good, the function tries to extract
+ * whatever data is appropriate for the type of the argument.
+ *
+ * The number of characters extracted is stored for later retrieval
+ * by gcount().
+ *
+ * If an exception is thrown during extraction, ios_base::badbit
+ * will be turned on in the stream's error state without causing an
+ * ios_base::failure to be thrown. The original exception will then
+ * be rethrown.
+ */
+ //@{
+ /**
+ * @brief Simple extraction.
+ * @return A character, or eof().
+ *
+ * Tries to extract a character. If none are available, sets failbit
+ * and returns traits::eof().
+ */
int_type
- get(void);
-
+ get();
+
+ /**
+ * @brief Simple extraction.
+ * @param c The character in which to store data.
+ * @return *this
+ *
+ * Tries to extract a character and store it in @a c. If none are
+ * available, sets failbit and returns traits::eof().
+ *
+ * @note This function is not overloaded on signed char and
+ * unsigned char.
+ */
__istream_type&
get(char_type& __c);
+ /**
+ * @brief Simple multiple-character extraction.
+ * @param s Pointer to an array.
+ * @param n Maximum number of characters to store in @a s.
+ * @param delim A "stop" character.
+ * @return *this
+ *
+ * Characters are extracted and stored into @a s until one of the
+ * following happens:
+ *
+ * - @c n-1 characters are stored
+ * - the input sequence reaches EOF
+ * - the next character equals @a delim, in which case the character
+ * is not extracted
+ *
+ * If no characters are stored, failbit is set in the stream's error
+ * state.
+ *
+ * In any case, a null character is stored into the next location in
+ * the array.
+ *
+ * @note This function is not overloaded on signed char and
+ * unsigned char.
+ */
__istream_type&
get(char_type* __s, streamsize __n, char_type __delim);
+ /**
+ * @brief Simple multiple-character extraction.
+ * @param s Pointer to an array.
+ * @param n Maximum number of characters to store in @a s.
+ * @return *this
+ *
+ * Returns @c get(s,n,widen('\n')).
+ */
inline __istream_type&
get(char_type* __s, streamsize __n)
{ return this->get(__s, __n, this->widen('\n')); }
+ /**
+ * @brief Extraction into another streambuf.
+ * @param sb A streambuf in which to store data.
+ * @param delim A "stop" character.
+ * @return *this
+ *
+ * Characters are extracted and inserted into @a sb until one of the
+ * following happens:
+ *
+ * - the input sequence reaches EOF
+ * - insertion into the output buffer fails (in this case, the
+ * character that would have been inserted is not extracted)
+ * - the next character equals @a delim (in this case, the character
+ * is not extracted)
+ * - an exception occurs (and in this case is caught)
+ *
+ * If no characters are stored, failbit is set in the stream's error
+ * state.
+ */
__istream_type&
get(__streambuf_type& __sb, char_type __delim);
+ /**
+ * @brief Extraction into another streambuf.
+ * @param sb A streambuf in which to store data.
+ * @return *this
+ *
+ * Returns @c get(sb,widen('\n')).
+ */
inline __istream_type&
get(__streambuf_type& __sb)
{ return this->get(__sb, this->widen('\n')); }
+ /**
+ * @brief String extraction.
+ * @param s A character array in which to store the data.
+ * @param n Maximum number of characters to extract.
+ * @param delim A "stop" character.
+ * @return *this
+ *
+ * Extracts and stores characters into @a s until one of the
+ * following happens. Note that these criteria are required to be
+ * tested in the order listed here, to allow an input line to exactly
+ * fill the @a s array without setting failbit.
+ *
+ * -# the input sequence reaches end-of-file, in which case eofbit
+ * is set in the stream error state
+ * -# the next character equals @c delim, in which case the character
+ * is extracted (and therefore counted in @c gcount()) but not stored
+ * -# @c n-1 characters are stored, in which case failbit is set
+ * in the stream error state
+ *
+ * If no characters are extracted, failbit is set. (An empty line of
+ * input should therefore not cause failbit to be set.)
+ *
+ * In any case, a null character is stored in the next location in
+ * the array.
+ */
__istream_type&
getline(char_type* __s, streamsize __n, char_type __delim);
+ /**
+ * @brief String extraction.
+ * @param s A character array in which to store the data.
+ * @param n Maximum number of characters to extract.
+ * @return *this
+ *
+ * Returns @c getline(s,n,widen('\n')).
+ */
inline __istream_type&
getline(char_type* __s, streamsize __n)
{ return this->getline(__s, __n, this->widen('\n')); }
+ /**
+ * @brief Discarding characters
+ * @param n Number of characters to discard.
+ * @param delim A "stop" character.
+ * @return *this
+ *
+ * Extracts characters and throws them away until one of the
+ * following happens:
+ * - if @a n @c != @c std::numeric_limits<int>::max(), @a n
+ * characters are extracted
+ * - the input sequence reaches end-of-file
+ * - the next character equals @a delim (in this case, the character
+ * is extracted); note that this condition will never occur if
+ * @a delim equals @c traits::eof().
+ */
__istream_type&
ignore(streamsize __n = 1, int_type __delim = traits_type::eof());
+ /**
+ * @brief Looking ahead in the stream
+ * @return The next character, or eof().
+ *
+ * If, after constructing the sentry object, @c good() is false,
+ * returns @c traits::eof(). Otherwise reads but does not extract
+ * the next input character.
+ */
int_type
- peek(void);
+ peek();
+ /**
+ * @brief Extraction without delimiters.
+ * @param s A character array.
+ * @param n Maximum number of characters to store.
+ * @return *this
+ *
+ * If the stream state is @c good(), extracts characters and stores
+ * them into @a s until one of the following happens:
+ * - @a n characters are stored
+ * - the input sequence reaches end-of-file, in which case the error
+ * state is set to @c failbit|eofbit.
+ *
+ * @note This function is not overloaded on signed char and
+ * unsigned char.
+ */
__istream_type&
read(char_type* __s, streamsize __n);
+ /**
+ * @brief Extraction until the buffer is exhausted, but no more.
+ * @param s A character array.
+ * @param n Maximum number of characters to store.
+ * @return The number of characters extracted.
+ *
+ * Extracts characters and stores them into @a s depending on the
+ * number of characters remaining in the streambuf's buffer,
+ * @c rdbuf()->in_avail(), called @c A here:
+ * - if @c A @c == @c -1, sets eofbit and extracts no characters
+ * - if @c A @c == @c 0, extracts no characters
+ * - if @c A @c > @c 0, extracts @c min(A,n)
+ *
+ * The goal is to empty the current buffer, and to not request any
+ * more from the external input sequence controlled by the streambuf.
+ */
streamsize
readsome(char_type* __s, streamsize __n);
+ /**
+ * @brief Unextracting a single character.
+ * @param c The character to push back into the input stream.
+ * @return *this
+ *
+ * If @c rdbuf() is not null, calls @c rdbuf()->sputbackc(c).
+ *
+ * If @c rdbuf() is null or if @c sputbackc() fails, sets badbit in
+ * the error state.
+ *
+ * @note Since no characters are extracted, the next call to
+ * @c gcount() will return 0, as required by DR 60.
+ *
+ * @if maint
+ * FIXME We don't comply with DR 60 here, _M_gcount is untouched.
+ * @endif
+ */
__istream_type&
putback(char_type __c);
+ /**
+ * @brief Unextracting the previous character.
+ * @return *this
+ *
+ * If @c rdbuf() is not null, calls @c rdbuf()->sungetc(c).
+ *
+ * If @c rdbuf() is null or if @c sungetc() fails, sets badbit in
+ * the error state.
+ *
+ * @note Since no characters are extracted, the next call to
+ * @c gcount() will return 0, as required by DR 60.
+ */
__istream_type&
- unget(void);
-
+ unget();
+
+ /**
+ * @brief Synchronizing the stream buffer.
+ * @return 0 on success, -1 on failure
+ *
+ * If @c rdbuf() is a null pointer, returns -1.
+ *
+ * Otherwise, calls @c rdbuf()->pubsync(), and if that returns -1,
+ * sets badbit and returns -1.
+ *
+ * Otherwise, returns 0.
+ *
+ * @note This function does not count the number of characters
+ * extracted, if any, and therefore does not affect the next
+ * call to @c gcount().
+ * @if maint
+ * FIXME We don't comply with DR 60 here, _M_gcount is zeroed.
+ * @endif
+ */
int
- sync(void);
-
+ sync();
+
+ /**
+ * @brief Getting the current read position.
+ * @return A file position object.
+ *
+ * If @c fail() is not false, returns @c pos_type(-1) to indicate
+ * failure. Otherwise returns @c rdbuf()->pubseekoff(0,cur,in).
+ *
+ * @note This function does not count the number of characters
+ * extracted, if any, and therefore does not affect the next
+ * call to @c gcount().
+ */
pos_type
- tellg(void);
-
+ tellg();
+
+ /**
+ * @brief Changing the current read position.
+ * @param pos A file position object.
+ * @return *this
+ *
+ * If @c fail() is not true, calls @c rdbuf()->pubseekpos(pos). If
+ * that function fails, sets failbit.
+ *
+ * @note This function does not count the number of characters
+ * extracted, if any, and therefore does not affect the next
+ * call to @c gcount().
+ * @if maint
+ * FIXME We don't comply with DR 60 here, _M_gcount is zeroed.
+ * @endif
+ */
__istream_type&
seekg(pos_type);
+ /**
+ * @brief Changing the current read position.
+ * @param off A file offset object.
+ * @param dir The direction in which to seek.
+ * @return *this
+ *
+ * If @c fail() is not true, calls @c rdbuf()->pubseekoff(off,dir).
+ * If that function fails, sets failbit.
+ *
+ * @note This function does not count the number of characters
+ * extracted, if any, and therefore does not affect the next
+ * call to @c gcount().
+ * @if maint
+ * FIXME We don't comply with DR 60 here, _M_gcount is zeroed.
+ * @endif
+ */
__istream_type&
seekg(off_type, ios_base::seekdir);
+ //@}
};
+ /**
+ * @brief Performs setup work for input streams.
+ *
+ * Objects of this class are created before all of the standard
+ * extractors are run. It is responsible for "exception-safe prefix and
+ * suffix operations," although only prefix actions are currently required
+ * by the standard. Additional actions may be added by the
+ * implementation, and we list them in
+ * http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/howto.html#5
+ * under [27.6] notes.
+ */
template<typename _CharT, typename _Traits>
class basic_istream<_CharT, _Traits>::sentry
{
public:
+ /// Easy access to dependant types.
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;
+ /**
+ * @brief The constructor performs all the work.
+ * @param is The input stream to guard.
+ * @param noskipws Whether to consume whitespace or not.
+ *
+ * If the stream state is good (@a is.good() is true), then the
+ * following actions are performed, otherwise the sentry state is
+ * false ("not okay") and failbit is set in the stream state.
+ *
+ * The sentry's preparatory actions are:
+ *
+ * -# if the stream is tied to an output stream, @c is.tie()->flush()
+ * is called to synchronize the output sequence
+ * -# if @a noskipws is false, and @c ios_base::skipws is set in
+ * @c is.flags(), the sentry extracts and discards whitespace
+ * characters from the stream. The currently imbued locale is
+ * used to determine whether each character is whitespace.
+ *
+ * If the stream state is still good, then the sentry state becomes
+ * true ("okay").
+ */
explicit
sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false);
+ /**
+ * @brief Quick status checking.
+ * @return The sentry state.
+ *
+ * For ease of use, sentries may be converted to booleans. The
+ * return value is that of the sentry state (true == okay).
+ */
operator bool() { return _M_ok; }
private:
bool _M_ok;
};
- // 27.6.1.2.3 Character extraction templates
+ // [27.6.1.2.3] character extraction templates
+ //@{
+ /**
+ * @brief Character extractors
+ * @param in An input stream.
+ * @param c A character reference.
+ * @return in
+ *
+ * Behaves like one of the formatted arithmetic extractors described in
+ * std::basic_istream. After constructing a sentry object with good
+ * status, this function extracts a character (if one is available) and
+ * stores it in @a c. Otherwise, sets failbit in the input stream.
+ */
template<typename _CharT, typename _Traits>
basic_istream<_CharT, _Traits>&
operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c);
@@ -239,7 +652,34 @@ namespace std
basic_istream<char, _Traits>&
operator>>(basic_istream<char, _Traits>& __in, signed char& __c)
{ return (__in >> reinterpret_cast<char&>(__c)); }
-
+ //@}
+
+ //@{
+ /**
+ * @brief Character string extractors
+ * @param in An input stream.
+ * @param s A pointer to a character array.
+ * @return in
+ *
+ * Behaves like one of the formatted arithmetic extractors described in
+ * std::basic_istream. After constructing a sentry object with good
+ * status, this function extracts up to @c n characters and stores them
+ * into the array starting at @a s. @c n is defined as:
+ *
+ * - if @c width() is greater than zero, @c n is width()
+ * - otherwise @c n is "the number of elements of the largest array of
+ * @c char_type that can store a terminating @c eos." [27.6.1.2.3]/6
+ *
+ * Characters are extracted and stored until one of the following happens:
+ * - @c n-1 characters are stored
+ * - EOF is reached
+ * - the next character is whitespace according to the current locale
+ * - the next character is a null byte (i.e., @c charT() )
+ *
+ * @c width(0) is then called for the input stream.
+ *
+ * If no characters are extracted, sets failbit.
+ */
template<typename _CharT, typename _Traits>
basic_istream<_CharT, _Traits>&
operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s);
@@ -253,8 +693,15 @@ namespace std
basic_istream<char,_Traits>&
operator>>(basic_istream<char,_Traits>& __in, signed char* __s)
{ return (__in >> reinterpret_cast<char*>(__s)); }
+ //@}
// 27.6.1.5 Template class basic_iostream
+ /**
+ * @brief Merging istream and ostream capabilities.
+ *
+ * This class multiply inherits from the input and output stream classes
+ * simply to provide a single interface.
+ */
template<typename _CharT, typename _Traits>
class basic_iostream
: public basic_istream<_CharT, _Traits>,
@@ -275,16 +722,45 @@ namespace std
typedef basic_istream<_CharT, _Traits> __istream_type;
typedef basic_ostream<_CharT, _Traits> __ostream_type;
+ /**
+ * @brief Constructor does nothing.
+ *
+ * Both of the parent classes are initialized with the same
+ * streambuf pointer passed to this constructor.
+ */
explicit
basic_iostream(basic_streambuf<_CharT, _Traits>* __sb)
: __istream_type(__sb), __ostream_type(__sb)
{ }
+ /**
+ * @brief Destructor does nothing.
+ */
virtual
~basic_iostream() { }
};
- // 27.6.1.4 Standard basic_istream manipulators
+ // [27.6.1.4] standard basic_istream manipulators
+ /**
+ * @brief Quick and easy way to eat whitespace
+ *
+ * This manipulator extracts whitespace characters, stopping when the
+ * next character is non-whitespace, or when the input sequence is empty.
+ * If the sequence is empty, @c eofbit is set in the stream, but not
+ * @c failbit.
+ *
+ * The current locale is used to distinguish whitespace characters.
+ *
+ * Example:
+ * @code
+ * MyClass mc;
+ *
+ * std::cin >> std::ws >> mc;
+ * @endcode
+ * will skip leading whitespace before calling operator>> on cin and your
+ * object. Note that the same effect can be achieved by creating a
+ * std::basic_istream::sentry inside your definition of operator>>.
+ */
template<typename _CharT, typename _Traits>
basic_istream<_CharT, _Traits>&
ws(basic_istream<_CharT, _Traits>& __is);
diff --git a/libstdc++-v3/include/std/std_ostream.h b/libstdc++-v3/include/std/std_ostream.h
index eff4bb5119f..7a553296102 100644
--- a/libstdc++-v3/include/std/std_ostream.h
+++ b/libstdc++-v3/include/std/std_ostream.h
@@ -46,7 +46,14 @@
namespace std
{
- // 27.6.2.1 Template class basic_ostream
+ // [27.6.2.1] Template class basic_ostream
+ /**
+ * @brief Controlling output.
+ *
+ * This is the base class for all output streams. It provides text
+ * formatting of all builtin types, and communicates with any class
+ * derived from basic_streambuf to do the actual output.
+ */
template<typename _CharT, typename _Traits>
class basic_ostream : virtual public basic_ios<_CharT, _Traits>
{
@@ -66,20 +73,40 @@ namespace std
typedef num_put<_CharT, __ostreambuf_iter> __numput_type;
typedef ctype<_CharT> __ctype_type;
- // 27.6.2.2 Constructor/destructor:
+ // [27.6.2.2] constructor/destructor
+ /**
+ * @brief Base constructor.
+ *
+ * This ctor is almost never called by the user directly, rather from
+ * derived classes' initialization lists, which pass a pointer to
+ * their own stream buffer.
+ */
explicit
basic_ostream(__streambuf_type* __sb)
{ this->init(__sb); }
+ /**
+ * @brief Base destructor.
+ *
+ * This does very little apart from providing a virtual base dtor.
+ */
virtual
~basic_ostream() { }
- // 27.6.2.3 Prefix/suffix:
+ // [27.6.2.3] prefix/suffix
class sentry;
friend class sentry;
- // 27.6.2.5 Formatted output:
- // 27.6.2.5.3 basic_ostream::operator<<
+ // [27.6.2.5] formatted output
+ // [27.6.2.5.3] basic_ostream::operator<<
+ //@{
+ /**
+ * @brief Interface for manipulators.
+ *
+ * Manuipulators such as @c std::endl and @c std::hex use these
+ * functions in constructs like "std::cout << std::endl". For more
+ * information, see the iomanip header.
+ */
__ostream_type&
operator<<(__ostream_type& (*__pf)(__ostream_type&));
@@ -88,8 +115,35 @@ namespace std
__ostream_type&
operator<<(ios_base& (*__pf) (ios_base&));
-
- // 27.6.2.5.2 Arithmetic Inserters
+ //@}
+
+ // [27.6.2.5.2] arithmetic inserters
+ /**
+ * @name Arithmetic Inserters
+ *
+ * All the @c operator<< functions (aka <em>formatted output
+ * functions</em>) have some common behavior. Each starts by
+ * constructing a temporary object of type std::basic_ostream::sentry.
+ * This can have several effects, concluding with the setting of a
+ * status flag; see the sentry documentation for more.
+ *
+ * If the sentry status is good, the function tries to generate
+ * whatever data is appropriate for the type of the argument.
+ *
+ * If an exception is thrown during insertion, ios_base::badbit
+ * will be turned on in the stream's error state without causing an
+ * ios_base::failure to be thrown. The original exception will then
+ * be rethrown.
+ */
+ //@{
+ /**
+ * @brief Basic arithmetic inserters
+ * @param A variable of builtin type.
+ * @return @c *this if successful
+ *
+ * These functions use the stream's current locale (specifically, the
+ * @c num_get facet) to perform numeric formatting.
+ */
__ostream_type&
operator<<(long __n);
@@ -150,31 +204,140 @@ namespace std
__ostream_type&
operator<<(const void* __p);
+ /**
+ * @brief Extracting from another streambuf.
+ * @param sb A pointer to a streambuf
+ *
+ * This function behaves like one of the basic arithmetic extractors,
+ * in that it also constructs a sentry onject and has the same error
+ * handling behavior.
+ *
+ * If @a sb is NULL, the stream will set failbit in its error state.
+ *
+ * Characters are extracted from @a sb and inserted into @c *this
+ * until one of the following occurs:
+ *
+ * - the input stream reaches end-of-file,
+ * - insertion into the output sequence fails (in this case, the
+ * character that would have been inserted is not extracted), or
+ * - an exception occurs while getting a character from @a sb, which
+ * sets failbit in the error state
+ *
+ * If the function inserts no characters, failbit is set.
+ */
__ostream_type&
operator<<(__streambuf_type* __sb);
-
- // Unformatted output:
+ //@}
+
+ // [27.6.2.6] unformatted output functions
+ /**
+ * @name Unformatted Output Functions
+ *
+ * All the unformatted output functions have some common behavior.
+ * Each starts by constructing a temporary object of type
+ * std::basic_ostream::sentry. This has several effects, concluding
+ * with the setting of a status flag; see the sentry documentation
+ * for more.
+ *
+ * If the sentry status is good, the function tries to generate
+ * whatever data is appropriate for the type of the argument.
+ *
+ * If an exception is thrown during insertion, ios_base::badbit
+ * will be turned on in the stream's error state. If badbit is on in
+ * the stream's exceptions mask, the exception will be rethrown
+ * without completing its actions.
+ */
+ //@{
+ /**
+ * @brief Simple insertion.
+ * @param c The character to insert.
+ * @return *this
+ *
+ * Tries to insert @a c.
+ *
+ * @note This function is not overloaded on signed char and
+ * unsigned char.
+ */
__ostream_type&
put(char_type __c);
+ /**
+ * @brief Character string insertion.
+ * @param s The array to insert.
+ * @param n Maximum number of characters to insert.
+ * @return *this
+ *
+ * Characters are copied from @a s and inserted into the stream until
+ * one of the following happens:
+ *
+ * - @a n characters are inserted
+ * - inserting into the output sequence fails (in this case, badbit
+ * will be set in the stream's error state)
+ *
+ * @note This function is not overloaded on signed char and
+ * unsigned char.
+ */
__ostream_type&
write(const char_type* __s, streamsize __n);
-
+ //@}
+
+ /**
+ * @brief Synchronizing the stream buffer.
+ * @return *this
+ *
+ * If @c rdbuf() is a null pointer, changes nothing.
+ *
+ * Otherwise, calls @c rdbuf()->pubsync(), and if that returns -1,
+ * sets badbit.
+ */
__ostream_type&
flush();
- // Seeks:
+ // [27.6.2.4] seek members
+ /**
+ * @brief Getting the current write position.
+ * @return A file position object.
+ *
+ * If @c fail() is not false, returns @c pos_type(-1) to indicate
+ * failure. Otherwise returns @c rdbuf()->pubseekoff(0,cur,out).
+ */
pos_type
tellp();
+ /**
+ * @brief Changing the current write position.
+ * @param pos A file position object.
+ * @return *this
+ *
+ * If @c fail() is not true, calls @c rdbuf()->pubseekpos(pos). If
+ * that function fails, sets failbit.
+ */
__ostream_type&
seekp(pos_type);
- __ostream_type&
+ /**
+ * @brief Changing the current write position.
+ * @param off A file offset object.
+ * @param dir The direction in which to seek.
+ * @return *this
+ *
+ * If @c fail() is not true, calls @c rdbuf()->pubseekoff(off,dir).
+ * If that function fails, sets failbit.
+ */
+ __ostream_type&
seekp(off_type, ios_base::seekdir);
};
- // 27.6.2.3 Class basic_ostream::sentry
+ /**
+ * @brief Performs setup work for output streams.
+ *
+ * Objects of this class are created before all of the standard
+ * inserters are run. It is responsible for "exception-safe prefix and
+ * suffix operations." Additional actions may be added by the
+ * implementation, and we list them in
+ * http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/howto.html#5
+ * under [27.6] notes.
+ */
template <typename _CharT, typename _Traits>
class basic_ostream<_CharT, _Traits>::sentry
{
@@ -183,9 +346,27 @@ namespace std
basic_ostream<_CharT,_Traits>& _M_os;
public:
+ /**
+ * @brief The constructor performs preparatory work.
+ * @param os The output stream to guard.
+ *
+ * If the stream state is good (@a os.good() is true), then if the
+ * stream is tied to another output stream, @c is.tie()->flush()
+ * is called to synchronize the output sequences.
+ *
+ * If the stream state is still good, then the sentry state becomes
+ * true ("okay").
+ */
explicit
sentry(basic_ostream<_CharT,_Traits>& __os);
+ /**
+ * @brief Possibly flushes the stream.
+ *
+ * If @c ios_base::unitbuf is set in @c os.flags(), and
+ * @c std::uncaught_exception() is true, the sentry destructor calls
+ * @c flush() on the output stream.
+ */
~sentry()
{
// XXX MT
@@ -197,10 +378,34 @@ namespace std
}
}
+ /**
+ * @brief Quick status checking.
+ * @return The sentry state.
+ *
+ * For ease of use, sentries may be converted to booleans. The
+ * return value is that of the sentry state (true == okay).
+ */
operator bool()
{ return _M_ok; }
};
+ // [27.6.2.5.4] character insertion templates
+ //@{
+ /**
+ * @brief Character inserters
+ * @param out An output stream.
+ * @param c A character.
+ * @return out
+ *
+ * Behaves like one of the formatted arithmetic inserters described in
+ * std::basic_ostream. After constructing a sentry object with good
+ * status, this function inserts a single character and any required
+ * padding (as determined by [22.2.2.2.2]). @c out.width(0) is then
+ * called.
+ *
+ * If @a c is of type @c char and the character type of the stream is not
+ * @c char, the character is widened before insertion.
+ */
template<typename _CharT, typename _Traits>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c);
@@ -225,7 +430,22 @@ namespace std
basic_ostream<char, _Traits>&
operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c)
{ return (__out << static_cast<char>(__c)); }
+ //@}
+ //@{
+ /**
+ * @brief String inserters
+ * @param out An output stream.
+ * @param s A character string.
+ * @return out
+ * @pre @a s must be a non-NULL pointer
+ *
+ * Behaves like one of the formatted arithmetic inserters described in
+ * std::basic_ostream. After constructing a sentry object with good
+ * status, this function inserts @c traits::length(s) characters starting
+ * at @a s, widened if necessary, followed by any required padding (as
+ * determined by [22.2.2.2.2]). @c out.width(0) is then called.
+ */
template<typename _CharT, typename _Traits>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s);
@@ -249,18 +469,38 @@ namespace std
basic_ostream<char, _Traits> &
operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s)
{ return (__out << reinterpret_cast<const char*>(__s)); }
-
- // 27.6.2.7 Standard basic_ostream manipulators
+ //@}
+
+ // [27.6.2.7] standard basic_ostream manipulators
+ /**
+ * @brief Write a newline and flush the stream.
+ *
+ * This manipulator is often mistakenly used when a simple newline is
+ * desired, leading to poor buffering performance. See
+ * http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html#2 for more
+ * on this subject.
+ */
template<typename _CharT, typename _Traits>
basic_ostream<_CharT, _Traits>&
endl(basic_ostream<_CharT, _Traits>& __os)
{ return flush(__os.put(__os.widen('\n'))); }
+ /**
+ * @brief Write a null character into the output sequence.
+ *
+ * "Null character" is @c CharT() by definition. For CharT of @c char,
+ * this correctly writes the ASCII @c NUL character string terminator.
+ */
template<typename _CharT, typename _Traits>
basic_ostream<_CharT, _Traits>&
ends(basic_ostream<_CharT, _Traits>& __os)
{ return __os.put(_CharT()); }
+ /**
+ * @brief Flushes the output stream.
+ *
+ * This manipulator simply calls the stream's @c flush() member function.
+ */
template<typename _CharT, typename _Traits>
basic_ostream<_CharT, _Traits>&
flush(basic_ostream<_CharT, _Traits>& __os)
diff --git a/libstdc++-v3/include/std/std_sstream.h b/libstdc++-v3/include/std/std_sstream.h
index 6ee75053148..aaec83f082b 100644
--- a/libstdc++-v3/include/std/std_sstream.h
+++ b/libstdc++-v3/include/std/std_sstream.h
@@ -46,6 +46,18 @@
namespace std
{
+ // [27.7.1] template class basic_stringbuf
+ /**
+ * @brief The actual work of input and output (for std::string).
+ *
+ * This class associates either or both of its input and output sequences
+ * with a sequence of characters, which can be initialized from, or made
+ * available as, a @c std::basic_string. (Paraphrased from [27.7.1]/1.)
+ *
+ * For this class, open modes (of type @c ios_base::openmode) have
+ * @c in set if the input sequence can be read, and @c out set if the
+ * output sequence can be written.
+ */
template<typename _CharT, typename _Traits, typename _Alloc>
class basic_stringbuf : public basic_streambuf<_CharT, _Traits>
{
@@ -61,22 +73,48 @@ namespace std
typedef typename traits_type::pos_type pos_type;
typedef typename traits_type::off_type off_type;
- // Non-standard Types:
+ //@{
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
typedef basic_streambuf<char_type, traits_type> __streambuf_type;
typedef basic_string<char_type, _Traits, _Alloc> __string_type;
typedef typename __string_type::size_type __size_type;
+ //@}
protected:
// Data Members:
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
__string_type _M_string;
public:
// Constructors:
+ /**
+ * @brief Starts with an empty string buffer.
+ * @param mode Whether the buffer can read, or write, or both.
+ *
+ * The default constructor initializes the parent class using its
+ * own default ctor.
+ */
explicit
basic_stringbuf(ios_base::openmode __mode = ios_base::in | ios_base::out)
: __streambuf_type(), _M_string()
{ _M_stringbuf_init(__mode); }
+ /**
+ * @brief Starts with an existing string buffer.
+ * @param str A string to copy as a starting buffer.
+ * @param mode Whether the buffer can read, or write, or both.
+ *
+ * This constructor initializes the parent class using its
+ * own default ctor.
+ */
explicit
basic_stringbuf(const __string_type& __str,
ios_base::openmode __mode = ios_base::in | ios_base::out)
@@ -84,6 +122,14 @@ namespace std
{ _M_stringbuf_init(__mode); }
// Get and set:
+ /**
+ * @brief Copying out the string buffer.
+ * @return A copy of one of the underlying sequences.
+ *
+ * "If the buffer is only created in input mode, the underlying
+ * character sequence is equal to the input sequence; otherwise, it
+ * is equal to the output sequence." [27.7.1.2]/1
+ */
__string_type
str() const
{
@@ -102,6 +148,13 @@ namespace std
return _M_string;
}
+ /**
+ * @brief Setting a new buffer.
+ * @param s The string to use as a new sequence.
+ *
+ * Deallocates any previous stored sequence, then copies @a s to
+ * use as a new one.
+ */
void
str(const __string_type& __s)
{
@@ -112,6 +165,11 @@ namespace std
protected:
// Common initialization code for both ctors goes here.
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
void
_M_stringbuf_init(ios_base::openmode __mode)
{
@@ -135,6 +193,7 @@ namespace std
}
// Overridden virtual functions:
+ // [documentation is inherited]
virtual int_type
underflow()
{
@@ -144,12 +203,25 @@ namespace std
return traits_type::eof();
}
+ // [documentation is inherited]
virtual int_type
pbackfail(int_type __c = traits_type::eof());
+ // [documentation is inherited]
virtual int_type
overflow(int_type __c = traits_type::eof());
+ /**
+ * @brief Manipulates the buffer.
+ * @param s Pointer to a buffer area.
+ * @param n Size of @a s.
+ * @return @c this
+ *
+ * If no buffer has already been created, and both @a s and @a n are
+ * non-zero, then @c s is used as a buffer; see
+ * http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html#2
+ * for more.
+ */
virtual __streambuf_type*
setbuf(char_type* __s, streamsize __n)
{
@@ -161,10 +233,12 @@ namespace std
return this;
}
+ // [documentation is inherited]
virtual pos_type
seekoff(off_type __off, ios_base::seekdir __way,
ios_base::openmode __mode = ios_base::in | ios_base::out);
+ // [documentation is inherited]
virtual pos_type
seekpos(pos_type __sp,
ios_base::openmode __mode = ios_base::in | ios_base::out);
@@ -175,6 +249,11 @@ namespace std
// Assumes: contents of _M_string and internal buffer match exactly.
// __i == _M_in_cur - _M_in_beg
// __o == _M_out_cur - _M_out_beg
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
virtual int
_M_really_sync(__size_type __i, __size_type __o)
{
@@ -196,7 +275,15 @@ namespace std
};
- // 27.7.2 Template class basic_istringstream
+ // [27.7.2] Template class basic_istringstream
+ /**
+ * @brief Controlling input for std::string.
+ *
+ * This class supports reading from objects of type std::basic_string,
+ * using the inherited functions from std::basic_istream. To control
+ * the associated sequence, an instance of std::basic_stringbuf is used,
+ * which this page refers to as @c sb.
+ */
template<typename _CharT, typename _Traits, typename _Alloc>
class basic_istringstream : public basic_istream<_CharT, _Traits>
{
@@ -218,40 +305,104 @@ namespace std
typedef basic_istream<char_type, traits_type> __istream_type;
private:
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
__stringbuf_type _M_stringbuf;
public:
// Constructors:
+ /**
+ * @brief Default constructor starts with an empty string buffer.
+ * @param mode Whether the buffer can read, or write, or both.
+ *
+ * @c ios_base::in is automatically included in @a mode.
+ *
+ * Initializes @c sb using @c mode|in, and passes @c &sb to the base
+ * class initializer. Does not allocate any buffer.
+ *
+ * @if maint
+ * That's a lie. We initialize the base class with NULL, because the
+ * string class does its own memory management.
+ * @endif
+ */
explicit
basic_istringstream(ios_base::openmode __mode = ios_base::in)
: __istream_type(NULL), _M_stringbuf(__mode | ios_base::in)
{ this->init(&_M_stringbuf); }
+ /**
+ * @brief Starts with an existing string buffer.
+ * @param str A string to copy as a starting buffer.
+ * @param mode Whether the buffer can read, or write, or both.
+ *
+ * @c ios_base::in is automatically included in @a mode.
+ *
+ * Initializes @c sb using @a str and @c mode|in, and passes @c &sb
+ * to the base class initializer.
+ *
+ * @if maint
+ * That's a lie. We initialize the base class with NULL, because the
+ * string class does its own memory management.
+ * @endif
+ */
explicit
basic_istringstream(const __string_type& __str,
ios_base::openmode __mode = ios_base::in)
: __istream_type(NULL), _M_stringbuf(__str, __mode | ios_base::in)
{ this->init(&_M_stringbuf); }
+ /**
+ * @brief The destructor does nothing.
+ *
+ * The buffer is deallocated by the stringbuf object, not the
+ * formatting stream.
+ */
~basic_istringstream()
{ }
// Members:
+ /**
+ * @brief Accessing the underlying buffer.
+ * @return The current basic_stringbuf buffer.
+ *
+ * This hides both signatures of std::basic_ios::rdbuf().
+ */
__stringbuf_type*
rdbuf() const
{ return const_cast<__stringbuf_type*>(&_M_stringbuf); }
+ /**
+ * @brief Copying out the string buffer.
+ * @return @c rdbuf()->str()
+ */
__string_type
str() const
{ return _M_stringbuf.str(); }
+ /**
+ * @brief Setting a new buffer.
+ * @param s The string to use as a new sequence.
+ *
+ * Calls @c rdbuf()->str(s).
+ */
void
str(const __string_type& __s)
{ _M_stringbuf.str(__s); }
};
- // 27.7.3 Template class basic_ostringstream
+ // [27.7.3] Template class basic_ostringstream
+ /**
+ * @brief Controlling output for std::string.
+ *
+ * This class supports writing to objects of type std::basic_string,
+ * using the inherited functions from std::basic_ostream. To control
+ * the associated sequence, an instance of std::basic_stringbuf is used,
+ * which this page refers to as @c sb.
+ */
template <typename _CharT, typename _Traits, typename _Alloc>
class basic_ostringstream : public basic_ostream<_CharT, _Traits>
{
@@ -273,40 +424,104 @@ namespace std
typedef basic_ostream<char_type, traits_type> __ostream_type;
private:
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
__stringbuf_type _M_stringbuf;
public:
- // Constructors/destructor:
+ // Constructors/destructor:
+ /**
+ * @brief Default constructor starts with an empty string buffer.
+ * @param mode Whether the buffer can read, or write, or both.
+ *
+ * @c ios_base::out is automatically included in @a mode.
+ *
+ * Initializes @c sb using @c mode|out, and passes @c &sb to the base
+ * class initializer. Does not allocate any buffer.
+ *
+ * @if maint
+ * That's a lie. We initialize the base class with NULL, because the
+ * string class does its own memory management.
+ * @endif
+ */
explicit
basic_ostringstream(ios_base::openmode __mode = ios_base::out)
: __ostream_type(NULL), _M_stringbuf(__mode | ios_base::out)
{ this->init(&_M_stringbuf); }
+ /**
+ * @brief Starts with an existing string buffer.
+ * @param str A string to copy as a starting buffer.
+ * @param mode Whether the buffer can read, or write, or both.
+ *
+ * @c ios_base::out is automatically included in @a mode.
+ *
+ * Initializes @c sb using @a str and @c mode|out, and passes @c &sb
+ * to the base class initializer.
+ *
+ * @if maint
+ * That's a lie. We initialize the base class with NULL, because the
+ * string class does its own memory management.
+ * @endif
+ */
explicit
basic_ostringstream(const __string_type& __str,
ios_base::openmode __mode = ios_base::out)
: __ostream_type(NULL), _M_stringbuf(__str, __mode | ios_base::out)
{ this->init(&_M_stringbuf); }
+ /**
+ * @brief The destructor does nothing.
+ *
+ * The buffer is deallocated by the stringbuf object, not the
+ * formatting stream.
+ */
~basic_ostringstream()
{ }
// Members:
+ /**
+ * @brief Accessing the underlying buffer.
+ * @return The current basic_stringbuf buffer.
+ *
+ * This hides both signatures of std::basic_ios::rdbuf().
+ */
__stringbuf_type*
rdbuf() const
{ return const_cast<__stringbuf_type*>(&_M_stringbuf); }
+ /**
+ * @brief Copying out the string buffer.
+ * @return @c rdbuf()->str()
+ */
__string_type
str() const
{ return _M_stringbuf.str(); }
+ /**
+ * @brief Setting a new buffer.
+ * @param s The string to use as a new sequence.
+ *
+ * Calls @c rdbuf()->str(s).
+ */
void
str(const __string_type& __s)
{ _M_stringbuf.str(__s); }
};
- // 27.7.4 Template class basic_stringstream
+ // [27.7.4] Template class basic_stringstream
+ /**
+ * @brief Controlling input and output for std::string.
+ *
+ * This class supports reading from and writing to objects of type
+ * std::basic_string, using the inherited functions from
+ * std::basic_iostream. To control the associated sequence, an instance
+ * of std::basic_stringbuf is used, which this page refers to as @c sb.
+ */
template <typename _CharT, typename _Traits, typename _Alloc>
class basic_stringstream : public basic_iostream<_CharT, _Traits>
{
@@ -328,33 +543,85 @@ namespace std
typedef basic_iostream<char_type, traits_type> __iostream_type;
private:
+ /**
+ * @if maint
+ * @doctodo
+ * @endif
+ */
__stringbuf_type _M_stringbuf;
public:
// Constructors/destructors
+ /**
+ * @brief Default constructor starts with an empty string buffer.
+ * @param mode Whether the buffer can read, or write, or both.
+ *
+ * Initializes @c sb using @c mode, and passes @c &sb to the base
+ * class initializer. Does not allocate any buffer.
+ *
+ * @if maint
+ * That's a lie. We initialize the base class with NULL, because the
+ * string class does its own memory management.
+ * @endif
+ */
explicit
basic_stringstream(ios_base::openmode __m = ios_base::out | ios_base::in)
: __iostream_type(NULL), _M_stringbuf(__m)
{ this->init(&_M_stringbuf); }
+ /**
+ * @brief Starts with an existing string buffer.
+ * @param str A string to copy as a starting buffer.
+ * @param mode Whether the buffer can read, or write, or both.
+ *
+ * Initializes @c sb using @a str and @c mode, and passes @c &sb
+ * to the base class initializer.
+ *
+ * @if maint
+ * That's a lie. We initialize the base class with NULL, because the
+ * string class does its own memory management.
+ * @endif
+ */
explicit
basic_stringstream(const __string_type& __str,
ios_base::openmode __m = ios_base::out | ios_base::in)
: __iostream_type(NULL), _M_stringbuf(__str, __m)
{ this->init(&_M_stringbuf); }
+ /**
+ * @brief The destructor does nothing.
+ *
+ * The buffer is deallocated by the stringbuf object, not the
+ * formatting stream.
+ */
~basic_stringstream()
{ }
// Members:
+ /**
+ * @brief Accessing the underlying buffer.
+ * @return The current basic_stringbuf buffer.
+ *
+ * This hides both signatures of std::basic_ios::rdbuf().
+ */
__stringbuf_type*
rdbuf() const
{ return const_cast<__stringbuf_type*>(&_M_stringbuf); }
+ /**
+ * @brief Copying out the string buffer.
+ * @return @c rdbuf()->str()
+ */
__string_type
str() const
{ return _M_stringbuf.str(); }
+ /**
+ * @brief Setting a new buffer.
+ * @param s The string to use as a new sequence.
+ *
+ * Calls @c rdbuf()->str(s).
+ */
void
str(const __string_type& __s)
{ _M_stringbuf.str(__s); }
diff --git a/libstdc++-v3/include/std/std_streambuf.h b/libstdc++-v3/include/std/std_streambuf.h
index ecd546e85a8..883401bf6ee 100644
--- a/libstdc++-v3/include/std/std_streambuf.h
+++ b/libstdc++-v3/include/std/std_streambuf.h
@@ -50,28 +50,104 @@
namespace std
{
+ /**
+ * @if maint
+ * Does stuff.
+ * @endif
+ */
template<typename _CharT, typename _Traits>
streamsize
__copy_streambufs(basic_ios<_CharT, _Traits>& _ios,
basic_streambuf<_CharT, _Traits>* __sbin,
basic_streambuf<_CharT, _Traits>* __sbout);
- // 27.5.2 Template class basic_streambuf<_CharT, _Traits>
+ /**
+ * @brief The actual work of input and output (interface).
+ *
+ * This is a base class. Derived stream buffers each control a
+ * pair of character sequences: one for input, and one for output.
+ *
+ * Section [27.5.1] of the standard describes the requirements and
+ * behavior of stream buffer classes. That section (three paragraphs)
+ * is reproduced here, for simplicity and accuracy.
+ *
+ * -# Stream buffers can impose various constraints on the sequences
+ * they control. Some constraints are:
+ * - The controlled input sequence can be not readable.
+ * - The controlled output sequence can be not writable.
+ * - The controlled sequences can be associated with the contents of
+ * other representations for character sequences, such as external
+ * files.
+ * - The controlled sequences can support operations @e directly to or
+ * from associated sequences.
+ * - The controlled sequences can impose limitations on how the
+ * program can read characters from a sequence, write characters to
+ * a sequence, put characters back into an input sequence, or alter
+ * the stream position.
+ * .
+ * -# Each sequence is characterized by three pointers which, if non-null,
+ * all point into the same @c charT array object. The array object
+ * represents, at any moment, a (sub)sequence of characters from the
+ * sequence. Operations performed on a sequence alter the values
+ * stored in these pointers, perform reads and writes directly to or
+ * from associated sequences, and alter "the stream position" and
+ * conversion state as needed to maintain this subsequence relationship.
+ * The three pointers are:
+ * - the <em>beginning pointer</em>, or lowest element address in the
+ * array (called @e xbeg here);
+ * - the <em>next pointer</em>, or next element address that is a
+ * current candidate for reading or writing (called @e xnext here);
+ * - the <em>end pointer</em>, or first element address beyond the
+ * end of the array (called @e xend here).
+ * .
+ * -# The following semantic constraints shall always apply for any set
+ * of three pointers for a sequence, using the pointer names given
+ * immediately above:
+ * - If @e xnext is not a null pointer, then @e xbeg and @e xend shall
+ * also be non-null pointers into the same @c charT array, as
+ * described above; otherwise, @e xbeg and @e xend shall also be null.
+ * - If @e xnext is not a null pointer and @e xnext < @e xend for an
+ * output sequence, then a <em>write position</em> is available.
+ * In this case, @e *xnext shall be assignable as the next element
+ * to write (to put, or to store a character value, into the sequence).
+ * - If @e xnext is not a null pointer and @e xbeg < @e xnext for an
+ * input sequence, then a <em>putback position</em> is available.
+ * In this case, @e xnext[-1] shall have a defined value and is the
+ * next (preceding) element to store a character that is put back
+ * into the input sequence.
+ * - If @e xnext is not a null pointer and @e xnext< @e xend for an
+ * input sequence, then a <em>read position</em> is available.
+ * In this case, @e *xnext shall have a defined value and is the
+ * next element to read (to get, or to obtain a character value,
+ * from the sequence).
+ */
template<typename _CharT, typename _Traits>
class basic_streambuf
{
public:
- // Types:
+ //@{
+ /**
+ * These are standard types. They permit a standardized way of
+ * referring to names of (or names dependant on) the template
+ * parameters, which are specific to the implementation.
+ */
typedef _CharT char_type;
typedef _Traits traits_type;
typedef typename traits_type::int_type int_type;
typedef typename traits_type::pos_type pos_type;
typedef typename traits_type::off_type off_type;
-
- // Non-standard Types:
+ //@}
+
+ //@{
+ /**
+ * @if maint
+ * These are non-standard types.
+ * @endif
+ */
typedef ctype<char_type> __ctype_type;
typedef basic_streambuf<char_type, traits_type> __streambuf_type;
typedef typename traits_type::state_type __state_type;
+ //@}
friend class basic_ios<char_type, traits_type>;
friend class basic_istream<char_type, traits_type>;
@@ -84,56 +160,100 @@ namespace std
__streambuf_type* __sbin,__streambuf_type* __sbout);
protected:
- // Pointer to the beginning of internally-allocated
- // space. Filebuf manually allocates/deallocates this, whereas
- // stringstreams attempt to use the built-in intelligence of the
- // string class. If you are managing memory, set this. If not,
- // leave it NULL.
+ /**
+ * @if maint
+ * Pointer to the beginning of internally-allocated space. Filebuf
+ * manually allocates/deallocates this, whereas stringstreams attempt
+ * to use the built-in intelligence of the string class. If you are
+ * managing memory, set this. If not, leave it NULL.
+ * @endif
+ */
char_type* _M_buf;
- // Actual size of allocated internal buffer, in bytes.
+ /**
+ * @if maint
+ * Actual size of allocated internal buffer, in bytes.
+ * @endif
+ */
size_t _M_buf_size;
- // Optimal or preferred size of internal buffer, in bytes.
+ /**
+ * @if maint
+ * Optimal or preferred size of internal buffer, in bytes.
+ * @endif
+ */
size_t _M_buf_size_opt;
- // True iff _M_in_* and _M_out_* buffers should always point to
- // the same place. True for fstreams, false for sstreams.
+ /**
+ * @if maint
+ * True iff _M_in_* and _M_out_* buffers should always point to
+ * the same place. True for fstreams, false for sstreams.
+ * @endif
+ */
bool _M_buf_unified;
- // This is based on _IO_FILE, just reordered to be more
- // consistent, and is intended to be the most minimal abstraction
- // for an internal buffer.
- // get == input == read
- // put == output == write
+ //@{
+ /**
+ * @if maint
+ * This is based on _IO_FILE, just reordered to be more consistent,
+ * and is intended to be the most minimal abstraction for an
+ * internal buffer.
+ * - get == input == read
+ * - put == output == write
+ * @endif
+ */
char_type* _M_in_beg; // Start of get area.
char_type* _M_in_cur; // Current read area.
char_type* _M_in_end; // End of get area.
char_type* _M_out_beg; // Start of put area.
char_type* _M_out_cur; // Current put area.
char_type* _M_out_end; // End of put area.
+ //@}
- // Place to stash in || out || in | out settings for current streambuf.
+ /**
+ * @if maint
+ * Place to stash in || out || in | out settings for current streambuf.
+ * @endif
+ */
ios_base::openmode _M_mode;
- // Current locale setting.
+ /**
+ * @if maint
+ * Current locale setting.
+ * @endif
+ */
locale _M_buf_locale;
- // True iff locale is initialized.
+ /**
+ * @if maint
+ * True iff locale is initialized.
+ * @endif
+ */
bool _M_buf_locale_init;
- // Necessary bits for putback buffer management. Only used in
- // the basic_filebuf class, as necessary for the standard
- // requirements. The only basic_streambuf member function that
- // needs access to these data members is in_avail...
- // NB: pbacks of over one character are not currently supported.
+ //@{
+ /**
+ * @if maint
+ * Necessary bits for putback buffer management. Only used in
+ * the basic_filebuf class, as necessary for the standard
+ * requirements. The only basic_streambuf member function that
+ * needs access to these data members is in_avail...
+ *
+ * @note pbacks of over one character are not currently supported.
+ * @endif
+ */
static const size_t _S_pback_size = 1;
char_type _M_pback[_S_pback_size];
char_type* _M_pback_cur_save;
char_type* _M_pback_end_save;
bool _M_pback_init;
+ //@}
- // Yet unused.
+ /**
+ * @if maint
+ * Yet unused.
+ * @endif
+ */
fpos<__state_type> _M_pos;
// Initializes pback buffers, and moves normal buffers to safety.
@@ -236,6 +356,7 @@ namespace std
}
public:
+ /// Destructor deallocates no buffer space.
virtual
~basic_streambuf()
{
@@ -246,7 +367,14 @@ namespace std
_M_buf_locale_init = false;
}
- // Locales:
+ // [27.5.2.2.1] locales
+ /**
+ * @brief Entry point for imbue().
+ * @param loc The new locale.
+ * @return The previous locale.
+ *
+ * Calls the derived imbue(loc).
+ */
locale
pubimbue(const locale &__loc)
{
@@ -255,6 +383,14 @@ namespace std
return __tmp;
}
+ /**
+ * @brief Locale access.
+ * @return The current locale in effect.
+ *
+ * If pubimbue(loc) has been called, then the most recent @c loc
+ * is returned. Otherwise the global locale in effect at the time
+ * of construction is returned.
+ */
locale
getloc() const
{
@@ -264,7 +400,15 @@ namespace std
return locale();
}
- // Buffer and positioning:
+ // [27.5.2.2.2] buffer management and positioning
+ //@{
+ /**
+ * @brief Entry points for derived buffer functions.
+ *
+ * The public versions of @c pubfoo dispatch to the protected
+ * derived @c foo member functions, passing the arguments (if any)
+ * and returning the result unchanged.
+ */
__streambuf_type*
pubsetbuf(char_type* __s, streamsize __n)
{ return this->setbuf(__s, __n); }
@@ -281,9 +425,17 @@ namespace std
int
pubsync() { return this->sync(); }
-
- // Get and put areas:
- // Get area:
+ //@}
+
+ // [27.5.2.2.3] get area
+ /**
+ * @brief Looking ahead into the stream.
+ * @return The number of characters available.
+ *
+ * If a read position is available, returns the number of characters
+ * available for reading before the buffer must be refilled.
+ * Otherwise returns the derived @c showmanyc().
+ */
streamsize
in_avail()
{
@@ -304,6 +456,13 @@ namespace std
return __ret;
}
+ /**
+ * @brief Getting the next character.
+ * @return The next character, or eof.
+ *
+ * Calls @c sbumpc(), and if that function returns
+ * @c traits::eof(), so does this function. Otherwise, @c sgetc().
+ */
int_type
snextc()
{
@@ -312,9 +471,25 @@ namespace std
? __eof : this->sgetc());
}
+ /**
+ * @brief Getting the next character.
+ * @return The next character, or eof.
+ *
+ * If the input read position is available, returns that character
+ * and increments the read pointer, otherwise calls and returns
+ * @c uflow().
+ */
int_type
sbumpc();
+ /**
+ * @brief Getting the next character.
+ * @return The next character, or eof.
+ *
+ * If the input read position is available, returns that character,
+ * otherwise calls and returns @c underflow(). Does not move the
+ * read position after fetching the character.
+ */
int_type
sgetc()
{
@@ -326,26 +501,84 @@ namespace std
return __ret;
}
+ /**
+ * @brief Entry point for xsgetn.
+ * @param s A buffer area.
+ * @param n A count.
+ *
+ * Returns xsgetn(s,n). The effect is to fill @a s[0] through
+ * @a s[n-1] with characters from the input sequence, if possible.
+ */
streamsize
sgetn(char_type* __s, streamsize __n)
{ return this->xsgetn(__s, __n); }
- // Putback:
+ // [27.5.2.2.4] putback
+ /**
+ * @brief Pushing characters back into the input stream.
+ * @param c The character to push back.
+ * @return The previous character, if possible.
+ *
+ * Similar to sungetc(), but @a c is pushed onto the stream instead
+ * of "the previous character". If successful, the next character
+ * fetched from the input stream will be @a c.
+ */
int_type
sputbackc(char_type __c);
+ /**
+ * @brief Moving backwards in the input stream.
+ * @return The previous character, if possible.
+ *
+ * If a putback position is available, this function decrements the
+ * input pointer and returns that character. Otherwise, calls and
+ * returns pbackfail(). The effect is to "unget" the last character
+ * "gotten".
+ */
int_type
sungetc();
- // Put area:
+ // [27.5.2.2.5] put area
+ /**
+ * @brief Entry point for all single-character output functions.
+ * @param c A character to output.
+ * @return @a c, if possible.
+ *
+ * One of two public output functions.
+ *
+ * If a write position is available for the output sequence (i.e.,
+ * the buffer is not full), stores @a c in that position, increments
+ * the position, and returns @c traits::to_int_type(c). If a write
+ * position is not available, returns @c overflow(c).
+ */
int_type
sputc(char_type __c);
+ /**
+ * @brief Entry point for all single-character output functions.
+ * @param s A buffer read area.
+ * @param n A count.
+ *
+ * One of two public output functions.
+ *
+ *
+ * Returns xsputn(s,n). The effect is to write @a s[0] through
+ * @a s[n-1] to the output sequence, if possible.
+ */
streamsize
sputn(const char_type* __s, streamsize __n)
{ return this->xsputn(__s, __n); }
protected:
+ /**
+ * @brief Base constructor.
+ *
+ * Only called from derived constructors, and sets up all the
+ * buffer data to zero, including the pointers described in the
+ * basic_streambuf class description. Note that, as a result,
+ * - the class starts with no read nor write positions available,
+ * - this is not an error
+ */
basic_streambuf()
: _M_buf(NULL), _M_buf_size(0), _M_buf_size_opt(BUFSIZ),
_M_buf_unified(false), _M_in_beg(0), _M_in_cur(0), _M_in_end(0),
@@ -355,7 +588,18 @@ namespace std
_M_pback_init(false)
{ }
- // Get area:
+ // [27.5.2.3.1] get area access
+ //@{
+ /**
+ * @brief Access to the get area.
+ *
+ * These functions are only available to other protected functions,
+ * including derived classes.
+ *
+ * - eback() returns the beginning pointer for the input sequence
+ * - gptr() returns the next pointer for the input sequence
+ * - egptr() returns the end pointer for the input sequence
+ */
char_type*
eback() const { return _M_in_beg; }
@@ -364,10 +608,25 @@ namespace std
char_type*
egptr() const { return _M_in_end; }
-
+ //@}
+
+ /**
+ * @brief Moving the read position.
+ * @param n The delta by which to move.
+ *
+ * This just advances the read position without returning any data.
+ */
void
gbump(int __n) { _M_in_cur += __n; }
+ /**
+ * @brief Setting the three read area pointers.
+ * @param gbeg A pointer.
+ * @param gnext A pointer.
+ * @param gend A pointer.
+ * @post @a gbeg == @c eback(), @a gnext == @c gptr(), and
+ * @a gend == @c egptr()
+ */
void
setg(char_type* __gbeg, char_type* __gnext, char_type* __gend)
{
@@ -378,7 +637,18 @@ namespace std
_M_mode = _M_mode | ios_base::in;
}
- // Put area:
+ // [27.5.2.3.2] put area access
+ //@{
+ /**
+ * @brief Access to the put area.
+ *
+ * These functions are only available to other protected functions,
+ * including derived classes.
+ *
+ * - pbase() returns the beginning pointer for the output sequence
+ * - pptr() returns the next pointer for the output sequence
+ * - epptr() returns the end pointer for the output sequence
+ */
char_type*
pbase() const { return _M_out_beg; }
@@ -387,10 +657,24 @@ namespace std
char_type*
epptr() const { return _M_out_end; }
-
+ //@}
+
+ /**
+ * @brief Moving the write position.
+ * @param n The delta by which to move.
+ *
+ * This just advances the write position without returning any data.
+ */
void
pbump(int __n) { _M_out_cur += __n; }
+ /**
+ * @brief Setting the three write area pointers.
+ * @param pbeg A pointer.
+ * @param pend A pointer.
+ * @post @a pbeg == @c pbase(), @a pbeg == @c pptr(), and
+ * @a pend == @c epptr()
+ */
void
setp(char_type* __pbeg, char_type* __pend)
{
@@ -400,8 +684,19 @@ namespace std
_M_mode = _M_mode | ios_base::out;
}
- // Virtual functions:
- // Locales:
+ // [27.5.2.4] virtual functions
+ // [27.5.2.4.1] locales
+ /**
+ * @brief Changes translations.
+ * @param loc A new locale.
+ *
+ * Translations done during I/O which depend on the current locale
+ * are changed by this call. The standard adds, "Between invocations
+ * of this function a class derived from streambuf can safely cache
+ * results of calls to locale functions and to members of facets
+ * so obtained." This function simply stores the new locale for use
+ * by derived classes.
+ */
virtual void
imbue(const locale& __loc)
{
@@ -410,35 +705,126 @@ namespace std
_M_buf_locale = __loc;
}
- // Buffer management and positioning:
+ // [27.5.2.4.2] buffer management and positioning
+ /**
+ * @brief Maniuplates the buffer.
+ *
+ * Each derived class provides its own appropriate behavior. See
+ * the next-to-last paragraph of
+ * http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html#2 for
+ * more on this function.
+ *
+ * @note Base class version does nothing, returns @c this.
+ */
virtual basic_streambuf<char_type,_Traits>*
setbuf(char_type*, streamsize)
{ return this; }
+ /**
+ * @brief Alters the stream positions.
+ *
+ * Each derived class provides its own appropriate behavior.
+ * @note Base class version does nothing, returns a @c pos_type
+ * that represents an invalid stream position.
+ */
virtual pos_type
seekoff(off_type, ios_base::seekdir,
ios_base::openmode /*__mode*/ = ios_base::in | ios_base::out)
{ return pos_type(off_type(-1)); }
+ /**
+ * @brief Alters the stream positions.
+ *
+ * Each derived class provides its own appropriate behavior.
+ * @note Base class version does nothing, returns a @c pos_type
+ * that represents an invalid stream position.
+ */
virtual pos_type
seekpos(pos_type,
ios_base::openmode /*__mode*/ = ios_base::in | ios_base::out)
{ return pos_type(off_type(-1)); }
+ /**
+ * @brief Synchronizes the buffer arrays with the controlled sequences.
+ * @return -1 on failure.
+ *
+ * Each derived class provides its own appropriate behavior,
+ * including the definition of "failure".
+ * @note Base class version does nothing, returns zero.
+ */
virtual int
sync() { return 0; }
- // Get area:
+ // [27.5.2.4.3] get area
+ /**
+ * @brief Investigating the data available.
+ * @return An estimate of the number of characters available in the
+ * input sequence, or -1.
+ *
+ * "If it returns a positive value, then successive calls to
+ * @c underflow() will not return @c traits::eof() until at least that
+ * number of characters have been supplied. If @c showmanyc()
+ * returns -1, then calls to @c underflow() or @c uflow() will fail."
+ * [27.5.2.4.3]/1
+ *
+ * @note Base class version does nothing, returns zero.
+ * @note The standard adds that "the intention is not only that the
+ * calls [to underflow or uflow] will not return @c eof() but
+ * that they will return "immediately".
+ * @note The standard adds that "the morphemes of @c showmanyc are
+ * "es-how-many-see", not "show-manic".
+ */
virtual streamsize
showmanyc() { return 0; }
+ /**
+ * @brief Multiple character extraction.
+ * @param s A buffer area.
+ * @param n Maximum number of characters to assign.
+ * @return The number of characters assigned.
+ *
+ * Fills @a s[0] through @a s[n-1] with characters from the input
+ * sequence, as if by @c sbumpc(). Stops when either @a n characters
+ * have been copied, or when @c traits::eof() would be copied.
+ *
+ * It is expected that derived classes provide a more efficient
+ * implementation by overriding this definition.
+ */
virtual streamsize
xsgetn(char_type* __s, streamsize __n);
+ /**
+ * @brief Fetches more data from the controlled sequence.
+ * @return The first character from the <em>pending sequence</em>.
+ *
+ * Informally, this function is called when the input buffer is
+ * exhausted (or does not exist, as buffering need not actually be
+ * done). If a buffer exists, it is "refilled". In either case, the
+ * next available character is returned, or @c traits::eof() to
+ * indicate a null pending sequence.
+ *
+ * For a formal definiton of the pending sequence, see a good text
+ * such as Langer & Kreft, or [27.5.2.4.3]/7-14.
+ *
+ * A functioning input streambuf can be created by overriding only
+ * this function (no buffer area will be used). For an example, see
+ * http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html#6
+ *
+ * @note Base class version does nothing, returns eof().
+ */
virtual int_type
underflow()
{ return traits_type::eof(); }
+ /**
+ * @brief Fetches more data from the controlled sequence.
+ * @return The first character from the <em>pending sequence</em>.
+ *
+ * Informally, this function does the same thing as @c underflow(),
+ * and in fact is required to call that function. It also returns
+ * the new character, like @c underflow() does. However, this
+ * function also moves the read position forward by one.
+ */
virtual int_type
uflow()
{
@@ -455,23 +841,78 @@ namespace std
return __ret;
}
- // Putback:
+ // [27.5.2.4.4] putback
+ /**
+ * @brief Tries to back up the input sequence.
+ * @param c The character to be inserted back into the sequence.
+ * @return eof() on failure, "some other value" on success
+ * @post The constraints of @c gptr(), @c eback(), and @c pptr()
+ * are the same as for @c underflow().
+ *
+ * @note Base class version does nothing, returns eof().
+ */
virtual int_type
pbackfail(int_type /* __c */ = traits_type::eof())
{ return traits_type::eof(); }
// Put area:
+ /**
+ * @brief Multiple character insertion.
+ * @param s A buffer area.
+ * @param n Maximum number of characters to write.
+ * @return The number of characters written.
+ *
+ * Writes @a s[0] through @a s[n-1] to the output sequence, as if
+ * by @c sputc(). Stops when either @a n characters have been
+ * copied, or when @c sputc() would return @c traits::eof().
+ *
+ * It is expected that derived classes provide a more efficient
+ * implementation by overriding this definition.
+ */
virtual streamsize
xsputn(const char_type* __s, streamsize __n);
+ /**
+ * @brief Consumes data from the buffer; writes to the
+ * controlled sequence.
+ * @param c An additional character to consume.
+ * @return eof() to indicate failure, something else (usually
+ * @a c, or not_eof())
+ *
+ * Informally, this function is called when the output buffer is full
+ * (or does not exist, as buffering need not actually be done). If a
+ * buffer exists, it is "consumed", with "some effect" on the
+ * controlled sequence. (Typically, the buffer is written out to the
+ * sequence verbatim.) In either case, the character @a c is also
+ * written out, if @a c is not @c eof().
+ *
+ * For a formal definiton of this function, see a good text
+ * such as Langer & Kreft, or [27.5.2.4.5]/3-7.
+ *
+ * A functioning output streambuf can be created by overriding only
+ * this function (no buffer area will be used).
+ *
+ * @note Base class version does nothing, returns eof().
+ */
virtual int_type
overflow(int_type /* __c */ = traits_type::eof())
{ return traits_type::eof(); }
#ifdef _GLIBCPP_DEPRECATED
- // http://gcc.gnu.org/ml/libstdc++/2002-05/msg00168.html
// Annex D.6
public:
+ /**
+ * @brief Tosses a character.
+ *
+ * Advances the read pointer, ignoring the character that would have
+ * been read.
+ *
+ * See http://gcc.gnu.org/ml/libstdc++/2002-05/msg00168.html
+ *
+ * @note This function has been deprecated by the standard. You
+ * must define @c _GLIBCPP_DEPRECATED to make this visible; see
+ * c++config.h.
+ */
void
stossc()
{
diff --git a/libstdc++-v3/src/ios.cc b/libstdc++-v3/src/ios.cc
index 7bfdc5b4bb4..9f4c71841b4 100644
--- a/libstdc++-v3/src/ios.cc
+++ b/libstdc++-v3/src/ios.cc
@@ -38,6 +38,9 @@
#include <fstream>
#include <bits/atomicity.h>
#include <ext/stdio_filebuf.h>
+#ifdef _GLIBCPP_HAVE_UNISTD_H
+#include <unistd.h>
+#endif
namespace __gnu_cxx
{
@@ -157,7 +160,11 @@ namespace std
ios_base::Init::_S_ios_create(bool __sync)
{
int __out_size = __sync ? 0 : static_cast<int>(BUFSIZ);
- int __in_size = __sync ? 1 : static_cast<int>(BUFSIZ);
+#ifdef _GLIBCPP_HAVE_ISATTY
+ int __in_size = (__sync || isatty (0)) ? 1 : static_cast<int>(BUFSIZ);
+#else
+ int __in_size = 1;
+#endif
// NB: The file globals.cc creates the four standard files
// with NULL buffers. At this point, we swap out the dummy NULL
diff --git a/libstdc++-v3/src/locale.cc b/libstdc++-v3/src/locale.cc
index 127197d0138..dfb2feba8eb 100644
--- a/libstdc++-v3/src/locale.cc
+++ b/libstdc++-v3/src/locale.cc
@@ -208,9 +208,8 @@ namespace std
// different from LANG.
size_t __i = 0;
if (strcmp(__res, "C") == 0)
- for (__i = 0;
- __i < _S_categories_size + _S_extra_categories_size;
- ++__i)
+ for (; __i < _S_categories_size
+ + _S_extra_categories_size; ++__i)
{
__env = getenv(_S_categories[__i]);
if (__env && strcmp(__env, "") != 0
@@ -219,9 +218,8 @@ namespace std
break;
}
else
- for (__i = 0;
- __i < _S_categories_size + _S_extra_categories_size;
- ++__i)
+ for (; __i < _S_categories_size
+ + _S_extra_categories_size; ++__i)
{
__env = getenv(_S_categories[__i]);
if (__env && strcmp(__env, "") != 0
@@ -253,9 +251,9 @@ namespace std
if (!__env || strcmp(__env, "") == 0)
{
__str += _S_categories[__i];
- __str += '=';
+ __str += "=";
__str += __res;
- __str += ';';
+ __str += ";";
}
else if (strcmp(__env, "C") == 0
|| strcmp(__env, "POSIX") == 0)
@@ -367,9 +365,7 @@ namespace std
const locale&
locale::classic()
{
- static _STL_mutex_lock __lock __STL_MUTEX_INITIALIZER;
- _STL_auto_lock __auto(__lock);
-
+ // Locking protocol: singleton-called-before-threading-starts
if (!_S_classic)
{
try
diff --git a/libstdc++-v3/testsuite/20_util/allocator_members.cc b/libstdc++-v3/testsuite/20_util/allocator_members.cc
index 5d6cdd71600..8c40ab760f7 100644
--- a/libstdc++-v3/testsuite/20_util/allocator_members.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator_members.cc
@@ -1,6 +1,6 @@
// 2001-06-14 Benjamin Kosnik <bkoz@redhat.com>
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002 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
@@ -21,6 +21,7 @@
// 20.4.1.1 allocator members
#include <memory>
+#include <stdexcept>
#include <cstdlib>
#include <testsuite_hooks.h>
@@ -42,7 +43,7 @@ void operator delete(void *v) throw()
return std::free(v);
}
-int main(void)
+void test01()
{
bool test = true;
std::allocator<gnu> obj;
@@ -55,6 +56,34 @@ int main(void)
obj.deallocate(pobj, 256);
VERIFY( check_delete );
+}
+
+// libstdc++/8230
+void test02()
+{
+ bool test = true;
+ try
+ {
+ std::allocator<int> alloc;
+ const std::allocator<int>::size_type n = alloc.max_size();
+ int* p = alloc.allocate(n + 1);
+ p[n] = 2002;
+ }
+ catch(const std::bad_alloc& e)
+ {
+ // Allowed.
+ test = true;
+ }
+ catch(...)
+ {
+ test = false;
+ }
+ VERIFY( test );
+}
+int main()
+{
+ test01();
+ test02();
return 0;
}
diff --git a/libstdc++-v3/testsuite/23_containers/vector_capacity.cc b/libstdc++-v3/testsuite/23_containers/vector_capacity.cc
index a56f2ef40c4..8e9b6a8b1ab 100644
--- a/libstdc++-v3/testsuite/23_containers/vector_capacity.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector_capacity.cc
@@ -1,7 +1,7 @@
// 1999-05-07
// bkoz
-// Copyright (C) 1999 Free Software Foundation, Inc.
+// Copyright (C) 1999, 2002 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
@@ -22,6 +22,7 @@
// 23.2.4.2 vector capacity
#include <vector>
+#include <stdexcept>
#include <testsuite_hooks.h>
template<typename T>
@@ -29,9 +30,8 @@ template<typename T>
struct B { };
-bool test01()
+void test01()
{
-
// non POD types
bool test = true;
std::vector< A<B> > vec01;
@@ -51,17 +51,78 @@ bool test01()
vec01.resize(sz01);
sz02 = vec01.size();
VERIFY( sz01 == sz02 );
+}
-#ifdef DEBUG_ASSERT
- assert(test);
-#endif
-
- return test;
+// libstdc++/8230
+void test02()
+{
+ bool test = true;
+
+ {
+ std::vector<int> array;
+ const std::size_t size = array.max_size();
+ try
+ {
+ array.reserve(size);
+ }
+ catch (const std::length_error& error)
+ {
+ test &= false;
+ }
+ catch (const std::bad_alloc& error)
+ {
+ test &= true;
+ }
+ catch (...)
+ {
+ test &= false;
+ }
+ VERIFY( test );
+ }
+
+ {
+ std::vector<int> array;
+ const std::size_t size = array.max_size() + 1;
+ try
+ {
+ array.reserve(size);
+ }
+ catch (const std::length_error& error)
+ {
+ test &= true;
+ }
+ catch (...)
+ {
+ test &= false;
+ }
+ VERIFY( test );
+ }
+}
+
+void test03()
+{
+ bool test = true;
+ std::vector<int> v;
+ try
+ {
+ v.resize(v.max_size());
+ v[v.max_size() - 1] = 2002;
+ }
+ catch (const std::bad_alloc& error)
+ {
+ test = true;
+ }
+ catch (...)
+ {
+ test = false;
+ }
+ VERIFY( test );
}
int main()
{
test01();
-
+ test02();
+ test03();
return 0;
}
diff --git a/libstdc++-v3/testsuite/27_io/istream_unformatted.cc b/libstdc++-v3/testsuite/27_io/istream_unformatted.cc
index 7e449ab2fe4..e7676ecb370 100644
--- a/libstdc++-v3/testsuite/27_io/istream_unformatted.cc
+++ b/libstdc++-v3/testsuite/27_io/istream_unformatted.cc
@@ -569,7 +569,54 @@ void test11()
VERIFY(istr.rdstate() == ios_base::goodbit);
}
-
+// libstdc++/6746
+void test12()
+{
+ using namespace std;
+ bool test = true;
+ streamsize sum = 0;
+ istringstream iss("shamma shamma");
+
+ // test01
+ size_t i = iss.rdbuf()->in_avail();
+ VERIFY( i != 0 );
+
+ // test02
+ streamsize extracted;
+ do
+ {
+ char buf[1024];
+ extracted = iss.readsome(buf, sizeof buf);
+ sum += extracted;
+ }
+ while (iss.good() && extracted);
+ VERIFY( sum != 0 );
+}
+
+// libstdc++/6746
+void test13()
+{
+ using namespace std;
+ bool test = true;
+ streamsize sum = 0;
+ ifstream ifs("istream_unformatted-1.tst");
+
+ // test01
+ size_t i = ifs.rdbuf()->in_avail();
+ VERIFY( i != 0 );
+
+ // test02
+ streamsize extracted;
+ do
+ {
+ char buf[1024];
+ extracted = ifs.readsome(buf, sizeof buf);
+ sum += extracted;
+ }
+ while (ifs.good() && extracted);
+ VERIFY( sum != 0 );
+}
+
int
main()
{
@@ -584,5 +631,9 @@ main()
test09();
test10();
test11();
+
+ test12();
+ test13();
+
return 0;
}
diff --git a/libstdc++-v3/testsuite/27_io/ostream_inserter_other.cc b/libstdc++-v3/testsuite/27_io/ostream_inserter_other.cc
index 9d8cc0f9ecc..4ae1f3b88a6 100644
--- a/libstdc++-v3/testsuite/27_io/ostream_inserter_other.cc
+++ b/libstdc++-v3/testsuite/27_io/ostream_inserter_other.cc
@@ -198,6 +198,28 @@ private:
std::string::const_iterator it;
};
+class test_buffer_4 : public std::streambuf {
+public:
+ test_buffer_4(const std::string& s) : str(s), it(str.begin())
+ {
+ if (it != str.end()) {
+ buf[0] = *it++;
+ setg(buf, buf, buf+1);
+ }
+ }
+
+protected:
+ virtual int underflow() { return (it != str.end() ? *it : EOF); }
+ virtual int uflow() { return (it != str.end() ? *it++ : EOF); }
+ virtual std::streamsize showmanyc() {
+ std::streamsize ret = std::distance(it, str.end());
+ return ret > 0 ? ret : -1;
+ }
+private:
+ const std::string str;
+ std::string::const_iterator it;
+ char buf[1];
+};
void test(const std::string& str, std::streambuf& buf)
{
@@ -218,8 +240,6 @@ void test(const std::string& str, std::streambuf& buf)
// Jonathan Lennox <lennox@cs.columbia.edu>
void test05()
{
- std::ostringstream out_1, out_2, out_3, out_4;
-
std::string string_a("Hello, world!");
std::string string_b("");
@@ -232,6 +252,9 @@ void test05()
test_buffer_3 buf3a(string_a);
test_buffer_3 buf3b(string_b);
+ test_buffer_4 buf4a(string_a);
+ test_buffer_4 buf4b(string_b);
+
test(string_a, buf1a);
test(string_b, buf1b);
@@ -240,6 +263,9 @@ void test05()
test(string_a, buf3a);
test(string_b, buf3b);
+
+ test(string_a, buf4a);
+ test(string_b, buf4b);
}
int
diff --git a/libtool.m4 b/libtool.m4
index 3f452bcba28..99149ffe140 100644
--- a/libtool.m4
+++ b/libtool.m4
@@ -175,6 +175,48 @@ ia64-*-hpux*)
rm -rf conftest*
;;
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case "`/usr/bin/file conftest.o`" in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
*-*-sco3.2v5*)
# On SCO OpenServer 5, we need -belf to get full-featured binaries.
SAVE_CFLAGS="$CFLAGS"
diff --git a/ltconfig b/ltconfig
index 5ccefe0463e..68be49bb2ee 100755
--- a/ltconfig
+++ b/ltconfig
@@ -1286,8 +1286,8 @@ os2*)
osf3* | osf4* | osf5*)
version_type=osf
need_version=no
- soname_spec='${libname}${release}.so'
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+ soname_spec='${libname}${release}.so$major'
+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
shlibpath_var=LD_LIBRARY_PATH
sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
diff --git a/ltmain.sh b/ltmain.sh
index 92526b60b79..5d4281c54d2 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -2606,7 +2606,7 @@ EOF
;;
osf)
- major=`expr $current - $age`
+ major=.`expr $current - $age`
versuffix=".$current.$age.$revision"
verstring="$current.$age.$revision"