diff mbox

Floating Point as Hex Patch

Message ID AANLkTi=6JeZsZucNUMB5Xxcz5H4X7K4b=WvcRR_ABskW@mail.gmail.com
State New
Headers show

Commit Message

Martin York Jan. 29, 2011, 12:29 a.m. UTC
Description:

libstdc++ does not conform to the C++ (draft) standard n3225

22.4.2.2.2    num_put virtual functions    [facet.num.put.virtuals]
    Table 88 - Floating-Point Conversions

Currently the %a and %A conversion are not supported. They are
supposed to be used when the ostream flags ios_base::fixed and
ios_base::scientific are both set.
This patch adds that functionality.

22.4.2.1.2    num_get virtual functions    [facet.num.get.virtuals]
     For conversions to a floating type the specifier is %g and the
conversion function is strtold()

Based on the definition of strtold() from the C standard n1124
7.20.1.3 The strtod, strtof, and strtold functions
This indicates that hexadecimal values are converted based on the
syntax of section 6.4.4.2

Basically the format is the same as defined for normal floating point
literals in C++ except:

1) The value is prefixed with 0x or 0X
2) use 'p' or 'P' rather than 'e' or 'E'
3) The top fractional part uses hex digits (the exponent is still base
10 digits)

This functionality has been added.

TestCase changes:
The following files have additional test
       testsuite/22_locale/num_get/get/char/2.cc
       testsuite/22_locale/num_get/get/wchar_t/2.cc
       testsuite/22_locale/num_put/put/char/6.cc
       testsuite/22_locale/num_put/put/wchar_t/6.cc

GNU Style checks:

I ran the command  contrib/check_GNU_style.sh on the patch file.

It showed difference for:
       There should be exactly one space between function name and parentheses.
            In all these situations the style matched the surrounding
code so maintain consistency
            with the current code I did not change it.

       There should be no space before closing parentheses.
            In all these situations the code was using the macro
VERIFY() and matched the
            usage of the surrounding code. Thus to maintain
consistency it was not corrected.

Change Log Entry

2010-01-26  Martin York  <Martin.AmazonYork@gmail.com>

* num_put facet Floating-Point Conversions.
When both the fixed and scientific flags are set on a ostream

floating point numbers will be output using the format specifier
%a or %A (depending n the state of the ostreams uppercase flag).
This mean the floating point values are output hex encoded into
a text stream. If the float radix of your compiler is a power of

two then this representation is loss-less if you output the
number with enough precision.
->   std::numeric_limits<FLOAT Type>::digits /4

* num_get facet Floating-Point Conversions.

Compliments the changes to num_put so that float values in a
hexadecimal representation can be retrieved from a formatted text
stream.

Bootstrapping and testing

Changes were done on Max.
> uname -a
Darwin Alpha.local 10.6.0 Darwin Kernel Version 10.6.0: Wed Nov 10
18:13:17 PST 2010; root:xnu-1504.9.26~3/RELEASE_I386 i386

With:
> x-g++ --version
x-g++ (GCC) 4.6.0 20110120 (experimental)

Note: I use the prefix 'x-' to distinguish this compiler from the
system default.
See attached file `test.result.txt` for test result run


Patch:
Please find the patch file attached.
floathex.patch.txt
[Alpha:~/H2/build] myork% make -k check
autogen -T /Volumes/Lexar/H2/trunk/fixincludes/check.tpl /Volumes/Lexar/H2/trunk/fixincludes/inclhack.def
make[2]: autogen: No such file or directory
make[2]: *** [check] Error 1
make[1]: *** [check-fixincludes] Error 2
Making a new config file...
echo "set tmpdir /Users/myork/H2/build/gcc/testsuite" >> ./tmp0
test -d plugin || mkdir plugin
test -d testsuite || mkdir testsuite
test -d testsuite/gcc || mkdir testsuite/gcc
(rootme=`${PWDCMD-pwd}`; export rootme; \
	srcdir=`cd /Volumes/Lexar/H2/trunk/gcc; ${PWDCMD-pwd}` ; export srcdir ; \
	cd testsuite/gcc; \
	rm -f tmp-site.exp; \
	sed '/set tmpdir/ s|testsuite$|testsuite/gcc|' \
		< ../../site.exp > tmp-site.exp; \
	/bin/sh ${srcdir}/../move-if-change tmp-site.exp site.exp; \
	EXPECT=`if [ -f ${rootme}/../expect/expect ] ; then echo ${rootme}/../expect/expect ; else echo expect ; fi` ; export EXPECT ; \
	if [ -f ${rootme}/../expect/expect ] ; then  \
	   TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWDCMD-pwd}` ; \
	    export TCL_LIBRARY ; fi ; \
	runtestflags= ; \
	if [ -n "" ] ; then \
	  runtestflags=""; \
	elif [ -n "" ] ; then \
	  parts="`echo '  ' \
		  | sed 's/=[^ ]* / /g'`"; \
	  for part in `find $srcdir/testsuite/gcc* -name \*.exp` ; do \
	    part=`basename $part` ; \
	    case " $parts $runtestflags " in \
	      *" $part "*) ;; \
	      *) runtestflags="$runtestflags $part" ;; \
	    esac ; \
	  done ; \
	fi ; \
	`if [ -f ${srcdir}/../dejagnu/runtest ] ; then echo ${srcdir}/../dejagnu/runtest ; else echo runtest; fi` --tool gcc  $runtestflags)
WARNING: Couldn't find the global config file.
Test Run By myork on Wed Jan 26 23:44:34 2011
Native configuration is x86_64-apple-darwin10

		=== gcc tests ===

Schedule of variations:
    unix

Running target unix
Using /opt/local/share/dejagnu/baseboards/unix.exp as board description file for target.
Using /opt/local/share/dejagnu/config/unix.exp as generic interface file for target.
Using /Volumes/Lexar/H2/trunk/gcc/testsuite/config/default.exp as tool-and-target-specific interface file.
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.c-torture/compile/compile.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.c-torture/execute/execute.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp ...

Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/autopar/autopar.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/charset/charset.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/compat/compat.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/compat/struct-layout-1.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/cpp/cpp.exp ...
FAIL: gcc.dg/cpp/_Pragma3.c (test for excess errors)
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/cpp/trad/trad.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/debug/debug.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/dfp/dfp.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/dg.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/fixed-point/fixed-point.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/format/format.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/gomp/gomp.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/graphite/graphite.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/guality/guality.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/ipa/ipa.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/lto/lto.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/matrix/matrix.exp ...
FAIL: gcc.dg/matrix/transpose-3.c execution,    -fprofile-use -fipa-matrix-reorg -fdump-ipa-matrix-reorg -O3 -fwhole-program
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/noncompile/noncompile.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/pch/pch.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/plugin/plugin.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/special/mips-abi.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/special/special.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/struct/struct-reorg.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/tls/tls.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/torture/dg-torture.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/torture/tls/tls.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tree-ssa.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/vect/costmodel/spu/spu-costmodel-vect.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/vect/vect.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/vmx/vmx.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/vxworks/vxworks.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.dg/weak/weak.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.misc-tests/acker1.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.misc-tests/arm-isr.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.misc-tests/bprob.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.misc-tests/dectest.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.misc-tests/dhry.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.misc-tests/gcov.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.misc-tests/help.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.misc-tests/linkage.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.misc-tests/matrix1.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.misc-tests/mg-2.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.misc-tests/mg.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.misc-tests/options.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.misc-tests/sieve.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.misc-tests/sort2.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/alpha/alpha.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/arm/arm.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/arm/neon/neon.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/avr/avr.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/avr/torture/avr-torture.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/bfin/bfin.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/cris/cris.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/cris/torture/cris-torture.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/frv/frv.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/i386/i386.exp ...
FAIL: gcc.target/i386/combine-mul.c scan-assembler-not 12345
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/i386/stackalign/stackalign.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/ia64/ia64.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/m68k/m68k.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/microblaze/microblaze.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/mips/inter/mips16-inter.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/mips/mips.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/powerpc/powerpc.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/rx/rx.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/s390/s390.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/sh/sh.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/sparc/sparc.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/spu/ea/ea.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/spu/spu.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/x86_64/abi/abi-x86_64.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.target/xstormy16/xstormy16.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/gcc.test-framework/test-framework.exp ...
skipping test framework tests, CHECK_TEST_FRAMEWORK is not defined

		=== gcc Summary ===

# of expected passes		73913
# of unexpected failures	3
# of expected failures		211
# of unsupported tests		1727
/Users/myork/H2/build/gcc/xgcc  version 4.6.0 20110120 (experimental) (GCC) 

make[3]: [check-parallel-gcc] Error 1 (ignored)
test -d plugin || mkdir plugin
test -d testsuite || mkdir testsuite
test -d testsuite/g++ || mkdir testsuite/g++
(rootme=`${PWDCMD-pwd}`; export rootme; \
	srcdir=`cd /Volumes/Lexar/H2/trunk/gcc; ${PWDCMD-pwd}` ; export srcdir ; \
	cd testsuite/g++; \
	rm -f tmp-site.exp; \
	sed '/set tmpdir/ s|testsuite$|testsuite/g++|' \
		< ../../site.exp > tmp-site.exp; \
	/bin/sh ${srcdir}/../move-if-change tmp-site.exp site.exp; \
	EXPECT=`if [ -f ${rootme}/../expect/expect ] ; then echo ${rootme}/../expect/expect ; else echo expect ; fi` ; export EXPECT ; \
	if [ -f ${rootme}/../expect/expect ] ; then  \
	   TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWDCMD-pwd}` ; \
	    export TCL_LIBRARY ; fi ; \
	runtestflags= ; \
	if [ -n "" ] ; then \
	  runtestflags=""; \
	elif [ -n "" ] ; then \
	  parts="`echo '  ' \
		  | sed 's/=[^ ]* / /g'`"; \
	  for part in `find $srcdir/testsuite/g++* -name \*.exp` ; do \
	    part=`basename $part` ; \
	    case " $parts $runtestflags " in \
	      *" $part "*) ;; \
	      *) runtestflags="$runtestflags $part" ;; \
	    esac ; \
	  done ; \
	fi ; \
	`if [ -f ${srcdir}/../dejagnu/runtest ] ; then echo ${srcdir}/../dejagnu/runtest ; else echo runtest; fi` --tool g++  $runtestflags)
WARNING: Couldn't find the global config file.
Test Run By myork on Thu Jan 27 01:08:10 2011
Native configuration is x86_64-apple-darwin10

		=== g++ tests ===

Schedule of variations:
    unix

Running target unix
Using /opt/local/share/dejagnu/baseboards/unix.exp as board description file for target.
Using /opt/local/share/dejagnu/config/unix.exp as generic interface file for target.
Using /Volumes/Lexar/H2/trunk/gcc/testsuite/config/default.exp as tool-and-target-specific interface file.
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/bprob/bprob.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/charset/charset.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/compat/compat.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/compat/struct-layout-1.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/debug/debug.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/dfp/dfp.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/dg.exp ...
WARNING: g++.dg/ext/label13.C compilation failed to produce executable
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/gcov/gcov.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/gomp/gomp.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/graphite/graphite.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/guality/guality.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/lto/lto.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/pch/pch.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/plugin/plugin.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/special/ecos.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/tls/tls.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/torture/dg-torture.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/tree-prof/tree-prof.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.dg/vect/vect.exp ...
Running /Volumes/Lexar/H2/trunk/gcc/testsuite/g++.old-deja/old-deja.exp ...

		=== g++ Summary ===

# of expected passes		26596
# of expected failures		160
# of unsupported tests		373
/Users/myork/H2/build/gcc/testsuite/g++/../../g++  version 4.6.0 20110120 (experimental) (GCC) 

rm -f stamp-h1
/bin/sh ./config.status config.h
config.status: creating config.h
config.status: config.h is unchanged
test -f config.h || (rm -f stamp-h1 && make stamp-h1)
make[2]: Nothing to be done for `check'.
make[2]: Nothing to be done for `check'.
gcc -DHAVE_CONFIG_H -g -I.. -I/Volumes/Lexar/H2/trunk/libiberty/testsuite/../../include  -o test-demangle \
		/Volumes/Lexar/H2/trunk/libiberty/testsuite/test-demangle.c ../libiberty.a
./test-demangle < /Volumes/Lexar/H2/trunk/libiberty/testsuite/demangle-expected
./test-demangle: 827 tests, 0 failures
gcc -DHAVE_CONFIG_H -g -I.. -I/Volumes/Lexar/H2/trunk/libiberty/testsuite/../../include  -DHAVE_CONFIG_H -I.. -o test-pexecute \
		/Volumes/Lexar/H2/trunk/libiberty/testsuite/test-pexecute.c ../libiberty.a
./test-pexecute
gcc -DHAVE_CONFIG_H -g -I.. -I/Volumes/Lexar/H2/trunk/libiberty/testsuite/../../include  -DHAVE_CONFIG_H -I.. -o test-expandargv \
		/Volumes/Lexar/H2/trunk/libiberty/testsuite/test-expandargv.c ../libiberty.a
./test-expandargv
PASS: test-expandargv-0.
PASS: test-expandargv-1.
PASS: test-expandargv-2.
PASS: test-expandargv-3.
PASS: test-expandargv-4.
PASS: test-expandargv-5.
PASS: test-expandargv-6.
make[1]: Target `check-host' not remade because of errors.
Making check in include
make[3]: Nothing to be done for `check'.
Making check in libsupc++
make[3]: Nothing to be done for `check'.
Making check in doc
make[3]: Nothing to be done for `check'.
Making check in src
make[3]: Nothing to be done for `check'.
Making check in po
make[3]: Nothing to be done for `check'.
Making check in testsuite
make  check-DEJAGNU
Making a new site.exp file...
AR="ar"; export AR; \
	RANLIB="ranlib"; export RANLIB; \
	if [ -z "" ] \
	    && [ "" = "-j" ]; then \
	  make  check-DEJAGNUnormal0 check-DEJAGNUnormal1 \
		  check-DEJAGNUnormal2 check-DEJAGNUnormal3; \
	  for idx in 0 1 2 3; do \
	    mv -f normal$idx/libstdc++.sum normal$idx/libstdc++.sum.sep; \
	    mv -f normal$idx/libstdc++.log normal$idx/libstdc++.log.sep; \
	  done; \
	  mv -f libstdc++.sum libstdc++.sum.sep; \
	  mv -f libstdc++.log libstdc++.log.sep; \
	  /bin/sh /Volumes/Lexar/H2/trunk/libstdc++-v3/testsuite/../../contrib/dg-extract-results.sh \
	    libstdc++.sum.sep normal0/libstdc++.sum.sep \
	    normal1/libstdc++.sum.sep normal2/libstdc++.sum.sep \
	    normal3/libstdc++.sum.sep > libstdc++.sum; \
	  /bin/sh /Volumes/Lexar/H2/trunk/libstdc++-v3/testsuite/../../contrib/dg-extract-results.sh -L \
	    libstdc++.log.sep normal0/libstdc++.log.sep \
	    normal1/libstdc++.log.sep normal2/libstdc++.log.sep \
	    normal3/libstdc++.log.sep > libstdc++.log; \
	  exit 0; \
	fi; \
	srcdir=`CDPATH="${ZSH_VERSION+.}:" && cd /Volumes/Lexar/H2/trunk/libstdc++-v3/testsuite && pwd`; export srcdir; \
	EXPECT=expect; export EXPECT; \
	runtest=runtest; \
	if [ -z "$runtest" ]; then runtest=runtest; fi; \
	tool=libstdc++; \
	dirs=; \
	case "" in \
	  normal0) \
	    if /bin/sh -c "$runtest --version" > /dev/null 2>&1; then \
	      $runtest  --tool $tool --srcdir $srcdir \
			 abi.exp; \
	    else echo "WARNING: could not find \`runtest'" 1>&2; :;\
	    fi; \
	    dirs="`cd $srcdir; echo [013-9][0-9]_*/* [ab]* de* [ep]*/*`";; \
	  normal1) \
	    dirs="`cd $srcdir; echo 2[0-2]_*/*`";; \
	  normal2) \
	    dirs="`cd $srcdir; echo 2[4-9]_*/*`";; \
	  normal3) \
	    dirs="`cd $srcdir; echo 23_*/* t*/*`";; \
	esac; \
	if [ -n "" ]; then cd ""; fi; \
	if /bin/sh -c "$runtest --version" > /dev/null 2>&1; then \
	  if [ -n "$dirs" ]; then \
	    $runtest  --tool $tool --srcdir $srcdir \
		     \
		    "conformance.exp=`echo $dirs | sed 's/ /* /g;s/$/*/'`"; \
	  else \
	    $runtest  --tool $tool --srcdir $srcdir \
		    ; \
	  fi; \
	else echo "WARNING: could not find \`runtest'" 1>&2; :;\
	fi
WARNING: Couldn't find the global config file.
Test Run By myork on Thu Jan 27 01:31:49 2011
Native configuration is x86_64-apple-darwin10

		=== libstdc++ tests ===

Schedule of variations:
    unix

Running target unix
Using /opt/local/share/dejagnu/baseboards/unix.exp as board description file for target.
Using /opt/local/share/dejagnu/config/unix.exp as generic interface file for target.
Using /Volumes/Lexar/H2/trunk/libstdc++-v3/testsuite/config/default.exp as tool-and-target-specific interface file.
Running /Volumes/Lexar/H2/trunk/libstdc++-v3/testsuite/libstdc++-abi/abi.exp ...
Running /Volumes/Lexar/H2/trunk/libstdc++-v3/testsuite/libstdc++-dg/conformance.exp ...

		=== libstdc++ Summary ===

# of expected passes		6983
# of expected failures		83
# of unsupported tests		652
Making check in python
make[3]: Nothing to be done for `check'.
make "AR_FLAGS=rc" "CC_FOR_BUILD=gcc" "CC_FOR_TARGET=/Users/myork/H2/build/./gcc/xgcc -B/Users/myork/H2/build/./gcc/" "CFLAGS=-g" "CXXFLAGS=-g" "CFLAGS_FOR_BUILD=-g" "CFLAGS_FOR_TARGET=-g" "INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m 644" "INSTALL_PROGRAM=/usr/bin/install -c" "INSTALL_SCRIPT=/usr/bin/install -c" "LDFLAGS=" "LIBCFLAGS=-g" "LIBCFLAGS_FOR_TARGET=-g" "MAKE=make" "MAKEINFO=makeinfo --split-size=5000000 --split-size=5000000  " "PICFLAG=" "PICFLAG_FOR_TARGET=" "SHELL=/bin/sh" "RUNTESTFLAGS=" "exec_prefix=/Users/myork/H2/install" "infodir=/Users/myork/H2/install/share/info" "libdir=/Users/myork/H2/install/lib" "includedir=/Users/myork/H2/install/include" "prefix=/Users/myork/H2/install" "tooldir=/Users/myork/H2/install/x86_64-apple-darwin10" "gxx_include_dir=/Users/myork/H2/install/include/c++/4.6.0" "AR=ar" "AS=/Users/myork/H2/build/./gcc/as" "LD=/Users/myork/H2/build/./gcc/collect-ld" "RANLIB=ranlib" "NM=/Users/myork/H2/build/./gcc/nm" "NM_FOR_BUILD=" "NM_FOR_TARGET=nm" "DESTDIR=" "WERROR=" DO=all multi-do # make
if [ -z "i386" ]; then \
	  true; \
	else \
	  rootpre=`${PWDCMD-pwd}`/; export rootpre; \
	  srcrootpre=`cd /Volumes/Lexar/H2/trunk/libstdc++-v3; ${PWDCMD-pwd}`/; export srcrootpre; \
	  lib=`echo "${rootpre}" | sed -e 's,^.*/\([^/][^/]*\)/$,\1,'`; \
	  compiler="/Users/myork/H2/build/./gcc/xgcc -B/Users/myork/H2/build/./gcc/ -B/Users/myork/H2/install/x86_64-apple-darwin10/bin/ -B/Users/myork/H2/install/x86_64-apple-darwin10/lib/ -isystem /Users/myork/H2/install/x86_64-apple-darwin10/include -isystem /Users/myork/H2/install/x86_64-apple-darwin10/sys-include   "; \
	  for i in `${compiler} --print-multi-lib 2>/dev/null`; do \
	    dir=`echo $i | sed -e 's/;.*$//'`; \
	    if [ "${dir}" = "." ]; then \
	      true; \
	    else \
	      if [ -d ../${dir}/${lib} ]; then \
		flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
		if (cd ../${dir}/${lib}; make "AR_FLAGS=rc" "CC_FOR_BUILD=gcc" "CC_FOR_TARGET=/Users/myork/H2/build/./gcc/xgcc -B/Users/myork/H2/build/./gcc/" "CFLAGS=-g" "CXXFLAGS=-g" "CFLAGS_FOR_BUILD=-g" "CFLAGS_FOR_TARGET=-g" "INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m 644" "INSTALL_PROGRAM=/usr/bin/install -c" "INSTALL_SCRIPT=/usr/bin/install -c" "LDFLAGS=" "LIBCFLAGS=-g" "LIBCFLAGS_FOR_TARGET=-g" "MAKE=make" "MAKEINFO=makeinfo --split-size=5000000 --split-size=5000000   " "PICFLAG=" "PICFLAG_FOR_TARGET=" "SHELL=/bin/sh" "RUNTESTFLAGS=" "exec_prefix=/Users/myork/H2/install" "infodir=/Users/myork/H2/install/share/info" "libdir=/Users/myork/H2/install/lib" "includedir=/Users/myork/H2/install/include" "prefix=/Users/myork/H2/install" "tooldir=/Users/myork/H2/install/x86_64-apple-darwin10" "gxx_include_dir=/Users/myork/H2/install/include/c++/4.6.0" "AR=ar" "AS=/Users/myork/H2/build/./gcc/as" "LD=/Users/myork/H2/build/./gcc/collect-ld" "RANLIB=ranlib" "NM=/Users/myork/H2/build/./gcc/nm" "NM_FOR_BUILD=" "NM_FOR_TARGET=nm" "DESTDIR=" "WERROR=" \
				CFLAGS="-g ${flags}" \
				CCASFLAGS=" ${flags}" \
				FCFLAGS=" ${flags}" \
				FFLAGS=" ${flags}" \
				ADAFLAGS=" ${flags}" \
				prefix="/Users/myork/H2/install" \
				exec_prefix="/Users/myork/H2/install" \
				GCJFLAGS=" ${flags}" \
				GOCFLAGS="-O2 -g ${flags}" \
				CXXFLAGS="-g ${flags}" \
				LIBCFLAGS="-g ${flags}" \
				LIBCXXFLAGS="-g -fno-implicit-templates ${flags}" \
				LDFLAGS=" ${flags}" \
				MULTIFLAGS="${flags}" \
				DESTDIR="" \
				INSTALL="/usr/bin/install -c" \
				INSTALL_DATA="/usr/bin/install -c -m 644" \
				INSTALL_PROGRAM="/usr/bin/install -c" \
				INSTALL_SCRIPT="/usr/bin/install -c" \
				all); then \
		  true; \
		else \
		  exit 1; \
		fi; \
	      else true; \
	      fi; \
	    fi; \
	  done; \
	fi
make "AR_FLAGS=rc" "CC_FOR_BUILD=gcc" "CC_FOR_TARGET=/Users/myork/H2/build/./gcc/xgcc -B/Users/myork/H2/build/./gcc/" "CFLAGS=-g  -m32" "CXXFLAGS=-g  -m32" "CFLAGS_FOR_BUILD=-g" "CFLAGS_FOR_TARGET=-g" "INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m 644" "INSTALL_PROGRAM=/usr/bin/install -c" "INSTALL_SCRIPT=/usr/bin/install -c" "LDFLAGS=-m32" "LIBCFLAGS=-g  -m32" "LIBCFLAGS_FOR_TARGET=-g" "MAKE=make" "MAKEINFO=makeinfo --split-size=5000000 --split-size=5000000    " "PICFLAG=" "PICFLAG_FOR_TARGET=" "SHELL=/bin/sh" "RUNTESTFLAGS=" "exec_prefix=/Users/myork/H2/install" "infodir=/Users/myork/H2/install/share/info" "libdir=/Users/myork/H2/install/lib" "includedir=/Users/myork/H2/install/include" "prefix=/Users/myork/H2/install" "tooldir=/Users/myork/H2/install/x86_64-apple-darwin10" "gxx_include_dir=/Users/myork/H2/install/include/c++/4.6.0" "AR=ar" "AS=/Users/myork/H2/build/./gcc/as" "LD=/Users/myork/H2/build/./gcc/collect-ld" "RANLIB=ranlib" "NM=/Users/myork/H2/build/./gcc/nm" "NM_FOR_BUILD=" "NM_FOR_TARGET=nm" "DESTDIR=" "WERROR=" all-recursive
Making all in include
make[7]: Nothing to be done for `all'.
Making all in libsupc++
make[7]: Nothing to be done for `all'.
Making all in doc
make[7]: Nothing to be done for `all'.
Making all in src
make[7]: Nothing to be done for `all'.
Making all in po
make[7]: Nothing to be done for `all'.
Making all in testsuite
make[7]: Nothing to be done for `all'.
Making all in python
make[7]: Nothing to be done for `all'.
true "AR_FLAGS=rc" "CC_FOR_BUILD=gcc" "CC_FOR_TARGET=/Users/myork/H2/build/./gcc/xgcc -B/Users/myork/H2/build/./gcc/" "CFLAGS=-g  -m32" "CXXFLAGS=-g  -m32" "CFLAGS_FOR_BUILD=-g" "CFLAGS_FOR_TARGET=-g" "INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m 644" "INSTALL_PROGRAM=/usr/bin/install -c" "INSTALL_SCRIPT=/usr/bin/install -c" "LDFLAGS=-m32" "LIBCFLAGS=-g  -m32" "LIBCFLAGS_FOR_TARGET=-g" "MAKE=make" "MAKEINFO=makeinfo --split-size=5000000 --split-size=5000000      " "PICFLAG=" "PICFLAG_FOR_TARGET=" "SHELL=/bin/sh" "RUNTESTFLAGS=" "exec_prefix=/Users/myork/H2/install" "infodir=/Users/myork/H2/install/share/info" "libdir=/Users/myork/H2/install/lib" "includedir=/Users/myork/H2/install/include" "prefix=/Users/myork/H2/install" "tooldir=/Users/myork/H2/install/x86_64-apple-darwin10" "gxx_include_dir=/Users/myork/H2/install/include/c++/4.6.0" "AR=ar" "AS=/Users/myork/H2/build/./gcc/as" "LD=/Users/myork/H2/build/./gcc/collect-ld" "RANLIB=ranlib" "NM=/Users/myork/H2/build/./gcc/nm" "NM_FOR_BUILD=" "NM_FOR_TARGET=nm" "DESTDIR=" "WERROR=" DO=all multi-do # make
make "AR_FLAGS=rc" "CC_FOR_BUILD=gcc" "CFLAGS=-g" "CXXFLAGS=-g" "CFLAGS_FOR_BUILD=-g" "CFLAGS_FOR_TARGET=-g" "INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m 644" "INSTALL_PROGRAM=/usr/bin/install -c" "INSTALL_SCRIPT=/usr/bin/install -c" "JC1FLAGS=" "LDFLAGS=" "LIBCFLAGS=-g" "LIBCFLAGS_FOR_TARGET=-g" "MAKE=make" "MAKEINFO=makeinfo --split-size=5000000 --split-size=5000000 " "PICFLAG=" "PICFLAG_FOR_TARGET=" "SHELL=/bin/sh" "RUNTESTFLAGS=" "exec_prefix=/Users/myork/H2/install" "infodir=/Users/myork/H2/install/share/info" "libdir=/Users/myork/H2/install/lib" "prefix=/Users/myork/H2/install" "includedir=/Users/myork/H2/install/include" "AR=ar" "AS=/Users/myork/H2/build/./gcc/as" "CC=/Users/myork/H2/build/./gcc/xgcc -B/Users/myork/H2/build/./gcc/ -B/Users/myork/H2/install/x86_64-apple-darwin10/bin/ -B/Users/myork/H2/install/x86_64-apple-darwin10/lib/ -isystem /Users/myork/H2/install/x86_64-apple-darwin10/include -isystem /Users/myork/H2/install/x86_64-apple-darwin10/sys-include   " "CXX=/Users/myork/H2/build/./gcc/g++ -B/Users/myork/H2/build/./gcc/ -nostdinc++ -nostdinc++ -I/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/include/x86_64-apple-darwin10 -I/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/include -I/Volumes/Lexar/H2/trunk/libstdc++-v3/libsupc++ -I/Volumes/Lexar/H2/trunk/libstdc++-v3/include/backward -I/Volumes/Lexar/H2/trunk/libstdc++-v3/testsuite/util -L/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/src -L/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/src/.libs -B/Users/myork/H2/install/x86_64-apple-darwin10/bin/ -B/Users/myork/H2/install/x86_64-apple-darwin10/lib/ -isystem /Users/myork/H2/install/x86_64-apple-darwin10/include -isystem /Users/myork/H2/install/x86_64-apple-darwin10/sys-include   " "LD=/Users/myork/H2/build/./gcc/collect-ld" "LIBCFLAGS=-g" "NM=/Users/myork/H2/build/./gcc/nm" "PICFLAG=" "RANLIB=ranlib" "DESTDIR=" DO=all multi-do # make
if [ -z "i386" ]; then \
	  true; \
	else \
	  rootpre=`${PWDCMD-pwd}`/; export rootpre; \
	  srcrootpre=`cd /Volumes/Lexar/H2/trunk/libssp; ${PWDCMD-pwd}`/; export srcrootpre; \
	  lib=`echo "${rootpre}" | sed -e 's,^.*/\([^/][^/]*\)/$,\1,'`; \
	  compiler="/Users/myork/H2/build/./gcc/xgcc -B/Users/myork/H2/build/./gcc/ -B/Users/myork/H2/install/x86_64-apple-darwin10/bin/ -B/Users/myork/H2/install/x86_64-apple-darwin10/lib/ -isystem /Users/myork/H2/install/x86_64-apple-darwin10/include -isystem /Users/myork/H2/install/x86_64-apple-darwin10/sys-include   "; \
	  for i in `${compiler} --print-multi-lib 2>/dev/null`; do \
	    dir=`echo $i | sed -e 's/;.*$//'`; \
	    if [ "${dir}" = "." ]; then \
	      true; \
	    else \
	      if [ -d ../${dir}/${lib} ]; then \
		flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
		if (cd ../${dir}/${lib}; make  \
				CFLAGS="-g ${flags}" \
				CCASFLAGS=" ${flags}" \
				FCFLAGS=" ${flags}" \
				FFLAGS=" ${flags}" \
				ADAFLAGS=" ${flags}" \
				prefix="/Users/myork/H2/install" \
				exec_prefix="/Users/myork/H2/install" \
				GCJFLAGS=" ${flags}" \
				GOCFLAGS="-O2 -g ${flags}" \
				CXXFLAGS="-g ${flags}" \
				LIBCFLAGS="-g ${flags}" \
				LIBCXXFLAGS="-g -fno-implicit-templates ${flags}" \
				LDFLAGS=" ${flags}" \
				MULTIFLAGS="${flags}" \
				DESTDIR="" \
				INSTALL="/usr/bin/install -c" \
				INSTALL_DATA="/usr/bin/install -c -m 644" \
				INSTALL_PROGRAM="/usr/bin/install -c" \
				INSTALL_SCRIPT="/usr/bin/install -c" \
				all); then \
		  true; \
		else \
		  exit 1; \
		fi; \
	      else true; \
	      fi; \
	    fi; \
	  done; \
	fi
make "AR_FLAGS=rc" "CC_FOR_BUILD=gcc" "CFLAGS=-g  -m32" "CXXFLAGS=-g  -m32" "CFLAGS_FOR_BUILD=-g" "CFLAGS_FOR_TARGET=-g" "INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m 644" "INSTALL_PROGRAM=/usr/bin/install -c" "INSTALL_SCRIPT=/usr/bin/install -c" "JC1FLAGS=" "LDFLAGS=-m32" "LIBCFLAGS=-g  -m32" "LIBCFLAGS_FOR_TARGET=-g" "MAKE=make" "MAKEINFO=makeinfo --split-size=5000000 " "PICFLAG=" "PICFLAG_FOR_TARGET=" "SHELL=/bin/sh" "RUNTESTFLAGS=" "exec_prefix=/Users/myork/H2/install" "infodir=/Users/myork/H2/install/share/info" "libdir=/Users/myork/H2/install/lib" "prefix=/Users/myork/H2/install" "includedir=/Users/myork/H2/install/include" "AR=ar" "AS=/Users/myork/H2/build/./gcc/as" "CC=/Users/myork/H2/build/./gcc/xgcc -B/Users/myork/H2/build/./gcc/ -B/Users/myork/H2/install/x86_64-apple-darwin10/bin/ -B/Users/myork/H2/install/x86_64-apple-darwin10/lib/ -isystem /Users/myork/H2/install/x86_64-apple-darwin10/include -isystem /Users/myork/H2/install/x86_64-apple-darwin10/sys-include  -m32" "CXX=/Users/myork/H2/build/./gcc/g++ -B/Users/myork/H2/build/./gcc/ -nostdinc++ -nostdinc++ -I/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/include/x86_64-apple-darwin10 -I/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/include -I/Volumes/Lexar/H2/trunk/libstdc++-v3/libsupc++ -I/Volumes/Lexar/H2/trunk/libstdc++-v3/include/backward -I/Volumes/Lexar/H2/trunk/libstdc++-v3/testsuite/util -L/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/src -L/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/src/.libs -B/Users/myork/H2/install/x86_64-apple-darwin10/bin/ -B/Users/myork/H2/install/x86_64-apple-darwin10/lib/ -isystem /Users/myork/H2/install/x86_64-apple-darwin10/include -isystem /Users/myork/H2/install/x86_64-apple-darwin10/sys-include   " "LD=/Users/myork/H2/build/./gcc/collect-ld" "LIBCFLAGS=-g  -m32" "NM=/Users/myork/H2/build/./gcc/nm" "PICFLAG=" "RANLIB=ranlib" "DESTDIR=" all-am
true "AR_FLAGS=rc" "CC_FOR_BUILD=gcc" "CFLAGS=-g  -m32" "CXXFLAGS=-g  -m32" "CFLAGS_FOR_BUILD=-g" "CFLAGS_FOR_TARGET=-g" "INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m 644" "INSTALL_PROGRAM=/usr/bin/install -c" "INSTALL_SCRIPT=/usr/bin/install -c" "JC1FLAGS=" "LDFLAGS=-m32" "LIBCFLAGS=-g  -m32" "LIBCFLAGS_FOR_TARGET=-g" "MAKE=make" "MAKEINFO=makeinfo --split-size=5000000  " "PICFLAG=" "PICFLAG_FOR_TARGET=" "SHELL=/bin/sh" "RUNTESTFLAGS=" "exec_prefix=/Users/myork/H2/install" "infodir=/Users/myork/H2/install/share/info" "libdir=/Users/myork/H2/install/lib" "prefix=/Users/myork/H2/install" "includedir=/Users/myork/H2/install/include" "AR=ar" "AS=/Users/myork/H2/build/./gcc/as" "CC=/Users/myork/H2/build/./gcc/xgcc -B/Users/myork/H2/build/./gcc/ -B/Users/myork/H2/install/x86_64-apple-darwin10/bin/ -B/Users/myork/H2/install/x86_64-apple-darwin10/lib/ -isystem /Users/myork/H2/install/x86_64-apple-darwin10/include -isystem /Users/myork/H2/install/x86_64-apple-darwin10/sys-include  -m32" "CXX=/Users/myork/H2/build/./gcc/g++ -B/Users/myork/H2/build/./gcc/ -nostdinc++ -nostdinc++ -I/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/include/x86_64-apple-darwin10 -I/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/include -I/Volumes/Lexar/H2/trunk/libstdc++-v3/libsupc++ -I/Volumes/Lexar/H2/trunk/libstdc++-v3/include/backward -I/Volumes/Lexar/H2/trunk/libstdc++-v3/testsuite/util -L/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/src -L/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/src/.libs -B/Users/myork/H2/install/x86_64-apple-darwin10/bin/ -B/Users/myork/H2/install/x86_64-apple-darwin10/lib/ -isystem /Users/myork/H2/install/x86_64-apple-darwin10/include -isystem /Users/myork/H2/install/x86_64-apple-darwin10/sys-include   " "LD=/Users/myork/H2/build/./gcc/collect-ld" "LIBCFLAGS=-g  -m32" "NM=/Users/myork/H2/build/./gcc/nm" "PICFLAG=" "RANLIB=ranlib" "DESTDIR=" DO=all multi-do # make
make "AR_FLAGS=rc" "CC_FOR_BUILD=gcc" "CFLAGS=-g" "CXXFLAGS=-g" "CFLAGS_FOR_BUILD=-g" "CFLAGS_FOR_TARGET=-g" "INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m 644" "INSTALL_PROGRAM=/usr/bin/install -c" "INSTALL_SCRIPT=/usr/bin/install -c" "JC1FLAGS=" "LDFLAGS=" "LIBCFLAGS=-g" "LIBCFLAGS_FOR_TARGET=-g" "MAKE=make" "MAKEINFO=makeinfo --split-size=5000000 --split-size=5000000 -I /Volumes/Lexar/H2/trunk/libquadmath/../gcc/doc/include" "PICFLAG=" "PICFLAG_FOR_TARGET=" "SHELL=/bin/sh" "RUNTESTFLAGS=" "exec_prefix=/Users/myork/H2/install" "infodir=/Users/myork/H2/install/share/info" "libdir=/Users/myork/H2/install/lib" "prefix=/Users/myork/H2/install" "includedir=/Users/myork/H2/install/include" "AR=ar" "AS=/Users/myork/H2/build/./gcc/as" "CC=/Users/myork/H2/build/./gcc/xgcc -B/Users/myork/H2/build/./gcc/ -B/Users/myork/H2/install/x86_64-apple-darwin10/bin/ -B/Users/myork/H2/install/x86_64-apple-darwin10/lib/ -isystem /Users/myork/H2/install/x86_64-apple-darwin10/include -isystem /Users/myork/H2/install/x86_64-apple-darwin10/sys-include   " "CXX=/Users/myork/H2/build/./gcc/g++ -B/Users/myork/H2/build/./gcc/ -nostdinc++ -nostdinc++ -I/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/include/x86_64-apple-darwin10 -I/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/include -I/Volumes/Lexar/H2/trunk/libstdc++-v3/libsupc++ -I/Volumes/Lexar/H2/trunk/libstdc++-v3/include/backward -I/Volumes/Lexar/H2/trunk/libstdc++-v3/testsuite/util -L/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/src -L/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/src/.libs -B/Users/myork/H2/install/x86_64-apple-darwin10/bin/ -B/Users/myork/H2/install/x86_64-apple-darwin10/lib/ -isystem /Users/myork/H2/install/x86_64-apple-darwin10/include -isystem /Users/myork/H2/install/x86_64-apple-darwin10/sys-include   " "LD=/Users/myork/H2/build/./gcc/collect-ld" "LIBCFLAGS=-g" "NM=/Users/myork/H2/build/./gcc/nm" "PICFLAG=" "RANLIB=ranlib" "DESTDIR=" DO=all multi-do # make
if [ -z "i386" ]; then \
	  true; \
	else \
	  rootpre=`${PWDCMD-pwd}`/; export rootpre; \
	  srcrootpre=`cd /Volumes/Lexar/H2/trunk/libquadmath; ${PWDCMD-pwd}`/; export srcrootpre; \
	  lib=`echo "${rootpre}" | sed -e 's,^.*/\([^/][^/]*\)/$,\1,'`; \
	  compiler="/Users/myork/H2/build/./gcc/xgcc -B/Users/myork/H2/build/./gcc/ -B/Users/myork/H2/install/x86_64-apple-darwin10/bin/ -B/Users/myork/H2/install/x86_64-apple-darwin10/lib/ -isystem /Users/myork/H2/install/x86_64-apple-darwin10/include -isystem /Users/myork/H2/install/x86_64-apple-darwin10/sys-include   "; \
	  for i in `${compiler} --print-multi-lib 2>/dev/null`; do \
	    dir=`echo $i | sed -e 's/;.*$//'`; \
	    if [ "${dir}" = "." ]; then \
	      true; \
	    else \
	      if [ -d ../${dir}/${lib} ]; then \
		flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
		if (cd ../${dir}/${lib}; make  \
				CFLAGS="-g ${flags}" \
				CCASFLAGS=" ${flags}" \
				FCFLAGS=" ${flags}" \
				FFLAGS=" ${flags}" \
				ADAFLAGS=" ${flags}" \
				prefix="/Users/myork/H2/install" \
				exec_prefix="/Users/myork/H2/install" \
				GCJFLAGS=" ${flags}" \
				GOCFLAGS="-O2 -g ${flags}" \
				CXXFLAGS="-g ${flags}" \
				LIBCFLAGS="-g ${flags}" \
				LIBCXXFLAGS="-g -fno-implicit-templates ${flags}" \
				LDFLAGS=" ${flags}" \
				MULTIFLAGS="${flags}" \
				DESTDIR="" \
				INSTALL="/usr/bin/install -c" \
				INSTALL_DATA="/usr/bin/install -c -m 644" \
				INSTALL_PROGRAM="/usr/bin/install -c" \
				INSTALL_SCRIPT="/usr/bin/install -c" \
				all); then \
		  true; \
		else \
		  exit 1; \
		fi; \
	      else true; \
	      fi; \
	    fi; \
	  done; \
	fi
make "AR_FLAGS=rc" "CC_FOR_BUILD=gcc" "CFLAGS=-g  -m32" "CXXFLAGS=-g  -m32" "CFLAGS_FOR_BUILD=-g" "CFLAGS_FOR_TARGET=-g" "INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m 644" "INSTALL_PROGRAM=/usr/bin/install -c" "INSTALL_SCRIPT=/usr/bin/install -c" "JC1FLAGS=" "LDFLAGS=-m32" "LIBCFLAGS=-g  -m32" "LIBCFLAGS_FOR_TARGET=-g" "MAKE=make" "MAKEINFO=makeinfo --split-size=5000000 -I /Volumes/Lexar/H2/trunk/libquadmath/../gcc/doc/include" "PICFLAG=" "PICFLAG_FOR_TARGET=" "SHELL=/bin/sh" "RUNTESTFLAGS=" "exec_prefix=/Users/myork/H2/install" "infodir=/Users/myork/H2/install/share/info" "libdir=/Users/myork/H2/install/lib" "prefix=/Users/myork/H2/install" "includedir=/Users/myork/H2/install/include" "AR=ar" "AS=/Users/myork/H2/build/./gcc/as" "CC=/Users/myork/H2/build/./gcc/xgcc -B/Users/myork/H2/build/./gcc/ -B/Users/myork/H2/install/x86_64-apple-darwin10/bin/ -B/Users/myork/H2/install/x86_64-apple-darwin10/lib/ -isystem /Users/myork/H2/install/x86_64-apple-darwin10/include -isystem /Users/myork/H2/install/x86_64-apple-darwin10/sys-include  -m32" "CXX=/Users/myork/H2/build/./gcc/g++ -B/Users/myork/H2/build/./gcc/ -nostdinc++ -nostdinc++ -I/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/include/x86_64-apple-darwin10 -I/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/include -I/Volumes/Lexar/H2/trunk/libstdc++-v3/libsupc++ -I/Volumes/Lexar/H2/trunk/libstdc++-v3/include/backward -I/Volumes/Lexar/H2/trunk/libstdc++-v3/testsuite/util -L/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/src -L/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/src/.libs -B/Users/myork/H2/install/x86_64-apple-darwin10/bin/ -B/Users/myork/H2/install/x86_64-apple-darwin10/lib/ -isystem /Users/myork/H2/install/x86_64-apple-darwin10/include -isystem /Users/myork/H2/install/x86_64-apple-darwin10/sys-include   " "LD=/Users/myork/H2/build/./gcc/collect-ld" "LIBCFLAGS=-g  -m32" "NM=/Users/myork/H2/build/./gcc/nm" "PICFLAG=" "RANLIB=ranlib" "DESTDIR=" all-am
true "AR_FLAGS=rc" "CC_FOR_BUILD=gcc" "CFLAGS=-g  -m32" "CXXFLAGS=-g  -m32" "CFLAGS_FOR_BUILD=-g" "CFLAGS_FOR_TARGET=-g" "INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m 644" "INSTALL_PROGRAM=/usr/bin/install -c" "INSTALL_SCRIPT=/usr/bin/install -c" "JC1FLAGS=" "LDFLAGS=-m32" "LIBCFLAGS=-g  -m32" "LIBCFLAGS_FOR_TARGET=-g" "MAKE=make" "MAKEINFO=makeinfo --split-size=5000000 -I /Volumes/Lexar/H2/trunk/libquadmath/../gcc/doc/include -I /Volumes/Lexar/H2/trunk/libquadmath/../gcc/doc/include" "PICFLAG=" "PICFLAG_FOR_TARGET=" "SHELL=/bin/sh" "RUNTESTFLAGS=" "exec_prefix=/Users/myork/H2/install" "infodir=/Users/myork/H2/install/share/info" "libdir=/Users/myork/H2/install/lib" "prefix=/Users/myork/H2/install" "includedir=/Users/myork/H2/install/include" "AR=ar" "AS=/Users/myork/H2/build/./gcc/as" "CC=/Users/myork/H2/build/./gcc/xgcc -B/Users/myork/H2/build/./gcc/ -B/Users/myork/H2/install/x86_64-apple-darwin10/bin/ -B/Users/myork/H2/install/x86_64-apple-darwin10/lib/ -isystem /Users/myork/H2/install/x86_64-apple-darwin10/include -isystem /Users/myork/H2/install/x86_64-apple-darwin10/sys-include  -m32" "CXX=/Users/myork/H2/build/./gcc/g++ -B/Users/myork/H2/build/./gcc/ -nostdinc++ -nostdinc++ -I/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/include/x86_64-apple-darwin10 -I/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/include -I/Volumes/Lexar/H2/trunk/libstdc++-v3/libsupc++ -I/Volumes/Lexar/H2/trunk/libstdc++-v3/include/backward -I/Volumes/Lexar/H2/trunk/libstdc++-v3/testsuite/util -L/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/src -L/Users/myork/H2/build/x86_64-apple-darwin10/libstdc++-v3/src/.libs -B/Users/myork/H2/install/x86_64-apple-darwin10/bin/ -B/Users/myork/H2/install/x86_64-apple-darwin10/lib/ -isystem /Users/myork/H2/install/x86_64-apple-darwin10/include -isystem /Users/myork/H2/install/x86_64-apple-darwin10/sys-include   " "LD=/Users/myork/H2/build/./gcc/collect-ld" "LIBCFLAGS=-g  -m32" "NM=/Users/myork/H2/build/./gcc/nm" "PICFLAG=" "RANLIB=ranlib" "DESTDIR=" DO=all multi-do # make
make[3]: Nothing to be done for `check'.
Making check in testsuite
make  check-DEJAGNU
Making a new site.exp file...
srcdir=`CDPATH="${ZSH_VERSION+.}:" && cd /Volumes/Lexar/H2/trunk/libgomp/testsuite && pwd`; export srcdir; \
	EXPECT=expect; export EXPECT; \
	runtest=runtest; \
	if /bin/sh -c "$runtest --version" > /dev/null 2>&1; then \
	  exit_status=0; l='libgomp'; for tool in $l; do \
	    if $runtest  --tool $tool --srcdir $srcdir ; \
	    then :; else exit_status=1; fi; \
	  done; \
	else echo "WARNING: could not find \`runtest'" 1>&2; :;\
	fi; \
	exit $exit_status
WARNING: Couldn't find the global config file.
Test Run By myork on Thu Jan 27 02:36:37 2011
Native configuration is x86_64-apple-darwin10

		=== libgomp tests ===

Schedule of variations:
    unix

Running target unix
Using /opt/local/share/dejagnu/baseboards/unix.exp as board description file for target.
Using /opt/local/share/dejagnu/config/unix.exp as generic interface file for target.
Using /Volumes/Lexar/H2/trunk/libgomp/testsuite/config/default.exp as tool-and-target-specific interface file.
Running /Volumes/Lexar/H2/trunk/libgomp/testsuite/libgomp.c/c.exp ...
Running /Volumes/Lexar/H2/trunk/libgomp/testsuite/libgomp.c++/c++.exp ...
Running /Volumes/Lexar/H2/trunk/libgomp/testsuite/libgomp.fortran/fortran.exp ...
No libgfortran library found, will not execute fortran tests
Running /Volumes/Lexar/H2/trunk/libgomp/testsuite/libgomp.graphite/graphite.exp ...

		=== libgomp Summary ===

# of expected passes		1025
# of unsupported tests		2
make  DO=all multi-do # make
if [ -z "i386" ]; then \
	  true; \
	else \
	  rootpre=`${PWDCMD-pwd}`/; export rootpre; \
	  srcrootpre=`cd /Volumes/Lexar/H2/trunk/libgomp; ${PWDCMD-pwd}`/; export srcrootpre; \
	  lib=`echo "${rootpre}" | sed -e 's,^.*/\([^/][^/]*\)/$,\1,'`; \
	  compiler="/Users/myork/H2/build/./gcc/xgcc -B/Users/myork/H2/build/./gcc/ -B/Users/myork/H2/install/x86_64-apple-darwin10/bin/ -B/Users/myork/H2/install/x86_64-apple-darwin10/lib/ -isystem /Users/myork/H2/install/x86_64-apple-darwin10/include -isystem /Users/myork/H2/install/x86_64-apple-darwin10/sys-include   "; \
	  for i in `${compiler} --print-multi-lib 2>/dev/null`; do \
	    dir=`echo $i | sed -e 's/;.*$//'`; \
	    if [ "${dir}" = "." ]; then \
	      true; \
	    else \
	      if [ -d ../${dir}/${lib} ]; then \
		flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
		if (cd ../${dir}/${lib}; make  \
				CFLAGS="-g ${flags}" \
				CCASFLAGS=" ${flags}" \
				FCFLAGS="-L. -Wall -L../libgfortran ${flags}" \
				FFLAGS=" ${flags}" \
				ADAFLAGS=" ${flags}" \
				prefix="/Users/myork/H2/install" \
				exec_prefix="/Users/myork/H2/install" \
				GCJFLAGS=" ${flags}" \
				GOCFLAGS="-O2 -g ${flags}" \
				CXXFLAGS="-g ${flags}" \
				LIBCFLAGS="-g ${flags}" \
				LIBCXXFLAGS="-g -fno-implicit-templates ${flags}" \
				LDFLAGS=" ${flags}" \
				MULTIFLAGS="${flags}" \
				DESTDIR="" \
				INSTALL="/usr/bin/install -c" \
				INSTALL_DATA="/usr/bin/install -c -m 644" \
				INSTALL_PROGRAM="/usr/bin/install -c" \
				INSTALL_SCRIPT="/usr/bin/install -c" \
				all); then \
		  true; \
		else \
		  exit 1; \
		fi; \
	      else true; \
	      fi; \
	    fi; \
	  done; \
	fi
make  all-recursive
Making all in testsuite
make[7]: Nothing to be done for `all'.
true  DO=all multi-do # make
make: *** [do-check] Error 2
make: Target `check' not remade because of errors.
[Alpha:~/H2/build] myork%

Comments

Paolo Carlini Jan. 29, 2011, 12:46 a.m. UTC | #1
On 01/29/2011 01:29 AM, Martin York wrote:
> Description:
>
> libstdc++ does not conform to the C++ (draft) standard n3225
>   
Really?!? ;-)

Seriously, for sure we are still missing this new feature, you are
right, but we are not pretending we are anywhere in the docs. That said,
before going ahead with this work for 4.7.0 - not for 4.6.0, it's too
late -  I have to ask you if you have already a Copyright assignment on
file, which is a requirement for such type of non-trivial contribution
(http://gcc.gnu.org/contribute.html). Then, you should double check
that: 1- We are still implementing the C++03 specs when no -std=c++0x
(or gnu++0x) is passed on the command line and 2- that we are not
breaking the binary compatibility anyway (in the extended sense we
usually require, that is not just in terms of exported symbols but also
in terms of interoperability between *.o built with pre- and post- patch
headers). Then there are more details, but it's early for those.

Thanks for your kind offer of help!
Paolo.
diff mbox

Patch

Index: libstdc++-v3/src/locale_facets.cc
===================================================================
--- libstdc++-v3/src/.svn/text-base/locale_facets.cc.svn-base	2011-01-20 02:35:26.000000000 -0800
+++ libstdc++-v3/src/locale_facets.cc	2011-01-25 23:14:52.000000000 -0800
@@ -51,8 +51,8 @@  _GLIBCXX_BEGIN_NAMESPACE(std)
 
   const char* money_base::_S_atoms = "-0123456789";
 
-  const char* __num_base::_S_atoms_in = "-+xX0123456789abcdefABCDEF";
-  const char* __num_base::_S_atoms_out ="-+xX0123456789abcdef0123456789ABCDEF";
+  const char* __num_base::_S_atoms_in = "-+xXpP0123456789abcdefABCDEF";
+  const char* __num_base::_S_atoms_out ="-+xXpP0123456789abcdef0123456789ABCDEF";
 
   // _GLIBCXX_RESOLVE_LIB_DEFECTS
   // According to the resolution of DR 231, about 22.2.2.2.2, p11,
@@ -77,11 +77,13 @@  _GLIBCXX_BEGIN_NAMESPACE(std)
     if (__mod)
       *__fptr++ = __mod;
     ios_base::fmtflags __fltfield = __flags & ios_base::floatfield;
-    // [22.2.2.2.2] Table 58
+    // n3225 [22.4.2.2.2] Table 88
     if (__fltfield == ios_base::fixed)
       *__fptr++ = 'f';
     else if (__fltfield == ios_base::scientific)
       *__fptr++ = (__flags & ios_base::uppercase) ? 'E' : 'e';
+    else if (__fltfield == (ios_base::scientific | ios_base::fixed))
+      *__fptr++ = (__flags & ios_base::uppercase) ? 'A' : 'a';
     else
       *__fptr++ = (__flags & ios_base::uppercase) ? 'G' : 'g';
     *__fptr = '\0';
Index: libstdc++-v3/include/bits/locale_facets.tcc
===================================================================
--- libstdc++-v3/include/bits/.svn/text-base/locale_facets.tcc.svn-base	2011-01-20 02:36:28.000000000 -0800
+++ libstdc++-v3/include/bits/locale_facets.tcc	2011-01-26 23:40:10.000000000 -0800
@@ -175,6 +175,7 @@  _GLIBCXX_BEGIN_LDBL_NAMESPACE
 
       // Next, look for leading zeros.
       bool __found_mantissa = false;
+      bool __found_hex = false;
       int __sep_pos = 0;
       while (!__testeof)
 	{
@@ -195,6 +196,20 @@  _GLIBCXX_BEGIN_LDBL_NAMESPACE
 	      else
 		__testeof = true;
 	    }
+	  // If a float starts 0x then it is a hexadecimal floating const
+	  // But we only do this if both fixed and scientific are set
+	  else if (
+		     (__c == __lit[__num_base::_S_ix] || __c == __lit[__num_base::_S_iX])
+		  && (__sep_pos == 1))
+	    {
+	      __found_hex = true;
+	      __xtrc += 'x';
+	      if (++__beg != __end)
+		__c = *__beg;
+	      else
+		__testeof = true;
+	      break;
+	    }
 	  else
 	    break;
 	}
@@ -206,13 +221,35 @@  _GLIBCXX_BEGIN_LDBL_NAMESPACE
       if (__lc->_M_use_grouping)
 	__found_grouping.reserve(32);
       const char_type* __lit_zero = __lit + __num_base::_S_izero;
+      // So use the C local to decide them.
+      // Use __len rather than literal 10 in decoding the digits to account
+      // for hexadecimal digits.  The exponent prefix is changed from e -> p
+      const char_type   __expPrefixLower
+				= __lit[__found_hex
+					    ? __num_base::_S_ip
+					    : __num_base::_S_ie];
+      const char_type   __expPrefixUpper
+				= __lit[__found_hex
+					    ? __num_base::_S_iP
+					    : __num_base::_S_iE];
+      size_t __len = (__found_hex
+				? __num_base::_S_iend - __num_base::_S_izero
+				: 10);
 
-      if (!__lc->_M_allocated)
+      // Hexadecimal floating point values are not subject to local
+      if ((__found_hex) || (!__lc->_M_allocated))
 	// "C" locale
 	while (!__testeof)
 	  {
-	    const int __digit = _M_find(__lit_zero, 10, __c);
-	    if (__digit != -1)
+	    const int __digit = _M_find(__lit_zero, __len, __c);
+	    if (__digit >= 10)
+	      {
+		// Decode Hex digits
+		int __offset = __digit >= 16 ? 16 : 10;
+		__xtrc += 'A' - __offset + __digit;
+		__found_mantissa = true;
+	      }
+	    else if (__digit != -1)
 	      {
 		__xtrc += '0' + __digit;
 		__found_mantissa = true;
@@ -223,13 +260,15 @@  _GLIBCXX_BEGIN_LDBL_NAMESPACE
 		__xtrc += '.';
 		__found_dec = true;
 	      }
-	    else if ((__c == __lit[__num_base::_S_ie] 
-		      || __c == __lit[__num_base::_S_iE])
+	    else if ((__c == __expPrefixLower
+		      || __c == __expPrefixUpper)
 		     && !__found_sci && __found_mantissa)
 	      {
 		// Scientific notation.
-		__xtrc += 'e';
+		__xtrc += __found_hex ? 'p' : 'e';
 		__found_sci = true;
+		// The digit sequence after the exponent symbols is always base 10
+		__len = 10;
 		
 		// Remove optional plus or minus sign, if they exist.
 		if (++__beg != __end)
@@ -346,6 +385,12 @@  _GLIBCXX_BEGIN_LDBL_NAMESPACE
 	      __testeof = true;
 	  }
 
+      // If this was a HEX coded float (see 6.4.4.2 of n1124)
+      // Then it is required to have the exponent part of the number
+      if ((__found_hex) && (!__found_sci))
+      {
+	__err = ios_base::failbit;
+      }
       // Digit grouping is checked. If grouping and found_grouping don't
       // match, then get very very upset, and set failbit.
       if (__found_grouping.size())
Index: libstdc++-v3/include/bits/locale_facets.h
===================================================================
--- libstdc++-v3/include/bits/.svn/text-base/locale_facets.h.svn-base	2011-01-20 02:36:28.000000000 -0800
+++ libstdc++-v3/include/bits/locale_facets.h	2011-01-25 23:15:22.000000000 -0800
@@ -1522,6 +1522,8 @@  _GLIBCXX_BEGIN_NAMESPACE(std)
         _S_oplus,
         _S_ox,
         _S_oX,
+        _S_op,
+        _S_oP,
         _S_odigits,
         _S_odigits_end = _S_odigits + 16,
         _S_oudigits = _S_odigits_end,
@@ -1548,10 +1550,12 @@  _GLIBCXX_BEGIN_NAMESPACE(std)
       _S_iplus,
       _S_ix,
       _S_iX,
+      _S_ip,
+      _S_iP,
       _S_izero,
       _S_ie = _S_izero + 14,
       _S_iE = _S_izero + 20,
-      _S_iend = 26
+      _S_iend = 28
     };
 
     // num_put
Index: libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/6.cc
===================================================================
--- libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/.svn/text-base/6.cc.svn-base	2011-01-20 02:43:10.000000000 -0800
+++ libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/6.cc	2011-01-26 22:45:38.000000000 -0800
@@ -21,6 +21,8 @@ 
 
 #include <locale>
 #include <sstream>
+#include <limits>
+#include <cfloat>
 #include <testsuite_hooks.h>
 
 // libstdc++/9548 and DR 231
@@ -29,11 +31,14 @@  void test01()
   using namespace std;
   bool test __attribute__((unused)) = true;
 
-  wostringstream woss1, woss2;
+  wostringstream woss1, woss2, woss3;
+  wstringstream woss4;
   const num_put<wchar_t>& np1 = use_facet<num_put<wchar_t> >(woss1.getloc());
   const num_put<wchar_t>& np2 = use_facet<num_put<wchar_t> >(woss2.getloc());
+  const num_put<wchar_t>& np3 = use_facet<num_put<wchar_t> >(woss3.getloc());
+  const num_put<wchar_t>& np4 = use_facet<num_put<wchar_t> >(woss4.getloc());
 
-  wstring result1, result2;
+  wstring result1, result2, result3;
 
   woss1.precision(-1);
   woss1.setf(ios_base::fixed, ios_base::floatfield);
@@ -46,6 +51,32 @@  void test01()
   np2.put(woss2.rdbuf(), woss2, L'+', 1.0);
   result2 = woss2.str();
   VERIFY( result2 == L"1e+00" );
+
+  // If both ios_base::fixed | ios_base::scientific are set then
+  // The format specifier should be "%a" or "%A"
+  // See n3225 22.4.2.2.2 Table 88
+  woss3.precision(2);
+  woss3.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield);
+  np3.put(woss3.rdbuf(), woss3, L'+', 0.001);
+  result3 = woss3.str();
+  VERIFY( result3 == L"0x1.06p-10" );
+
+  if ((FLT_RADIX == 2)||(FLT_RADIX == 4)||(FLT_RADIX == 8)||(FLT_RADIX == 16))
+  {
+    // if FLT_RADIX is a power of 2
+    // If the format specifier is "%a" or "%A" and no precision is specified
+    // the precision is sufficient for an exact representation.
+    // see n1124 7.24.2.1p8
+    double  input    = 0.0123456789 * 0.01;
+    double  result;
+    woss4.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield);
+    woss4.precision(std::numeric_limits<double>::digits/4 + 1);
+
+    np4.put(woss4.rdbuf(), woss4, L' ', input);
+
+    woss4 >> result;
+    VERIFY( input == result );
+  }
 }
 
 int main()
Index: libstdc++-v3/testsuite/22_locale/num_put/put/char/6.cc
===================================================================
--- libstdc++-v3/testsuite/22_locale/num_put/put/char/.svn/text-base/6.cc.svn-base	2011-01-20 02:43:10.000000000 -0800
+++ libstdc++-v3/testsuite/22_locale/num_put/put/char/6.cc	2011-01-26 22:45:22.000000000 -0800
@@ -21,6 +21,8 @@ 
 
 #include <locale>
 #include <sstream>
+#include <limits>
+#include <cfloat>
 #include <testsuite_hooks.h>
 
 // libstdc++/9548 and DR 231
@@ -29,11 +31,14 @@  void test01()
   using namespace std;
   bool test __attribute__((unused)) = true;
 
-  ostringstream oss1, oss2;
+  ostringstream oss1, oss2, oss3;
+  stringstream  oss4;
   const num_put<char>& np1 = use_facet<num_put<char> >(oss1.getloc());
   const num_put<char>& np2 = use_facet<num_put<char> >(oss2.getloc());
+  const num_put<char>& np3 = use_facet<num_put<char> >(oss3.getloc());
+  const num_put<char>& np4 = use_facet<num_put<char> >(oss4.getloc());
 
-  string result1, result2;
+  string result1, result2, result3;
 
   oss1.precision(-1);
   oss1.setf(ios_base::fixed, ios_base::floatfield);
@@ -46,6 +51,32 @@  void test01()
   np2.put(oss2.rdbuf(), oss2, '+', 1.0);
   result2 = oss2.str();
   VERIFY( result2 == "1e+00" );
+
+  // If both ios_base::fixed | ios_base::scientific are set then
+  // The format specifier should be "%a" or "%A"
+  // See n3225 22.4.2.2.2 Table 88
+  oss3.precision(2);
+  oss3.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield);
+  np3.put(oss3.rdbuf(), oss3, '+', 0.001);
+  result3 = oss3.str();
+  VERIFY( result3 == "0x1.06p-10" );
+
+  if ((FLT_RADIX == 2)||(FLT_RADIX == 4)||(FLT_RADIX == 8)||(FLT_RADIX == 16))
+  {
+    // if FLT_RADIX is a power of 2
+    // If the format specifier is "%a" or "%A" and no precision is specified
+    // the precision is sufficient for an exact representation.
+    // see n1124 7.24.2.1p8
+    double  input    = 0.0123456789 * 0.01;
+    double  result;
+    oss4.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield);
+    oss4.precision(std::numeric_limits<double>::digits/4 + 1);
+
+    np4.put(oss4.rdbuf(), oss4, ' ', input);
+
+    oss4 >> result;
+    VERIFY( input == result );
+  }
 }
 
 int main()
Index: libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/2.cc
===================================================================
--- libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/.svn/text-base/2.cc.svn-base	2011-01-20 02:43:40.000000000 -0800
+++ libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/2.cc	2011-01-26 23:37:30.000000000 -0800
@@ -53,6 +53,7 @@  void test02()
   const num_get<wchar_t>& ng = use_facet<num_get<wchar_t> >(iss.getloc()); 
   const ios_base::iostate goodbit = ios_base::goodbit;
   const ios_base::iostate eofbit = ios_base::eofbit;
+  const ios_base::iostate failbit = ios_base::failbit;
   ios_base::iostate err = ios_base::goodbit;
 
   // C
@@ -108,6 +109,23 @@  void test02()
   ng.get(iss.rdbuf(), 0, iss, err, d);
   VERIFY( d == d2 );
   VERIFY( err == eofbit );
+
+  iss.str(L"0xAFp+123");
+  iss.clear();
+  iss.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield);
+  err = goodbit;
+  ng.get(iss.rdbuf(), 0, iss, err, d);
+  VERIFY( d == 0xAFp+123 );
+  VERIFY( err == eofbit );
+
+  iss.str(L"0xFF1p-23 ");
+  iss.clear();
+  iss.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield);
+  err = goodbit;
+  ng.get(iss.rdbuf(), 0, iss, err, d);
+  VERIFY( d == 0xFF1p-23 );
+  VERIFY( err == goodbit );
+
 }
 
 int main()
Index: libstdc++-v3/testsuite/22_locale/num_get/get/char/2.cc
===================================================================
--- libstdc++-v3/testsuite/22_locale/num_get/get/char/.svn/text-base/2.cc.svn-base	2011-01-20 02:43:40.000000000 -0800
+++ libstdc++-v3/testsuite/22_locale/num_get/get/char/2.cc	2011-01-26 23:37:12.000000000 -0800
@@ -53,6 +53,7 @@  void test02()
   const num_get<char>& ng = use_facet<num_get<char> >(iss.getloc()); 
   const ios_base::iostate goodbit = ios_base::goodbit;
   const ios_base::iostate eofbit = ios_base::eofbit;
+  const ios_base::iostate failbit = ios_base::failbit;
   ios_base::iostate err = ios_base::goodbit;
 
   // C
@@ -108,6 +109,23 @@  void test02()
   ng.get(iss.rdbuf(), 0, iss, err, d);
   VERIFY( d == d2 );
   VERIFY( err == eofbit );
+
+  iss.str("0xAFp+123");
+  iss.clear();
+  iss.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield);
+  err = goodbit;
+  ng.get(iss.rdbuf(), 0, iss, err, d);
+  VERIFY( d == 0xAFp+123 );
+  VERIFY( err == eofbit );
+
+  iss.str("0xFF1p-23 ");
+  iss.clear();
+  iss.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield);
+  err = goodbit;
+  ng.get(iss.rdbuf(), 0, iss, err, d);
+  VERIFY( d == 0xFF1p-23 );
+  VERIFY( err == goodbit );
+
 }
 
 int main()