diff --git a/libcxx/www/results.Windows.html b/libcxx/www/results.Windows.html index b548ab7c873c7e02ab76488bdb72c7ccac60559f..a5ec1218a1b5be83ff962a72e91586360f47d91e 100644 --- a/libcxx/www/results.Windows.html +++ b/libcxx/www/results.Windows.html @@ -7,52 +7,41 @@
All failures in the libc++ test suite will be documented here. -Last run was with Clang (pre-3.0) and GCC 4.6.2 (prerelease) and - mingw-w64 on x86_64-w64-mingw32. +Last run was with Clang (pre-3.1) and GCC 4.6.3 (with dw2 exception handling) and + mingw-w64 v2.0.3 on i686-w64-mingw32. -The commands to build and test were (-nodefaultlibs does not work, lots of MinGW related stuff gets left resulting in linker failures): -TRIPLE=x86_64-w64-mingw32 ./buildit -TRIPLE=x86_64-w64-mingw32 HEADER_INCLUDE="-I/home/Ruben/libc++/include" LIBS="-L/home/ruben/libc++/lib -lc++ -lsupc++ -lmsvcr100 -Wl,--allow-multiple-definition" PATH=/home/Ruben/libc++/lib:$PATH ./testit > test.log 2>&1 +The following line was added to ./lib/buildit to make a static libc++ library because a DLL requires "declspec(dllexport)" or a .def file: +ar rcs libc++.a *.o +I also deleted libc++.dll and libc++.dll.a to make sure libc++ was linked statically to prevent unrelated issues from contaminating the test results. +The commands to build and test were (-nodefaultlibs does not work, lots of MinGW related stuff gets left out resulting in linker failures): +TRIPLE=i686-w64-mingw32 ./buildit +TRIPLE=i686-w64-mingw32 HEADER_INCLUDE="-I/home/Ruben/libcxx/include" LIBS="-L/home/ruben/libcxx/lib -lc++ -lpthread -lsupc++ -lmsvcr100 -Wl,--allow-multiple-definition" ./testit > test.log 2>&1 -Note: Exception catching seems broken in Clang, so any test catching - exceptions is currently broken. Result will be compared to GCC's result. - Failing tests only on GCC will be ignored: Clang is the standard in this - part of the world, and GCC fails on many C++11 constructs in libc++. Note: Some locale tests may "Need investigating", but I think most problems are - caused by wrong/unportable locale naming in the tests. -Note: Thread test results are very different from the last run: failures now - pass and passes now fail. These results are not to be trusted. + caused by wrong/unportable locale naming in the tests. +Note: Some tests failed to link because "test.exe" was still running when ld.exe + tried to link the next test. I left these failures out of the list; they + account for about 10-30 failures, and are counted in the total scores below. + I reran some of these failures manually and they passed. +Note: Some tests fail at runtime but pass when run manually. Usage of std::cout + segfaults so further investigation is difficult. These also contribute to + the failures total, but are left out of the failure list, as the cause is + probably not located in that part of libc++, not locatable due to the lack + of usable debug info generated by Clang at this time. + +TOTAL RESULTS: +Section failures / total sections: 104 / 1064 = 9.8% failures +Test failures / total number of tests: 292 / 4326 = 6.7% failures -atomics/*: unimplemented. -containers/ - associative/ - map/ - map.access/ - at.pass.cpp: exception uncaught with Clang, passes for GCC. - sequences/ - list/ - list.modifiers/ - insert_iter_iter_iter.pass.cpp: exception uncaught with Clang, passes for GCC. - insert_iter_size_value.pass.cpp: exception uncaught with Clang, passes for GCC. - insert_iter_value.pass.cpp: exception uncaught with Clang, passes for GCC. - vector/ - vector.capacity/ - shrink_to_fit.pass.cpp: exception uncaught with Clang, passes for GCC. - unord/ - unord.map/ - unord.map.elem/ - at.pass.cpp: exception uncaught with Clang, passes for GCC. depr/ depr.c.headers/ - inttypes_h.pass.cpp: mingw-w64 does not define these for C++. Patch sent. - math_h.pass.cpp: Needs investigation. - stdint_h.pass.cpp: mingw-w64 does not define these for C++. Patch sent. - uchar_h.pass.cpp: mingw-w64 does not have this header. Patch sent. + inttypes_h.pass.cpp: missing macros for C++. + uchar_h.pass.cpp: bug in mingw-w64 headers for C++11 builtin char types. wchar_h.pass.cpp: Windows does not have swprintf, should use _snwprintf. Suggest #define swprintf as _snwprintf for _WIN32. - exception.unexpected/ +exception.unexpected/ set.unexpected/ - get_unexpected.pass.cpp: Needs investigation. + get_unexpected.pass.cpp: Segmentation fault - needs investigation. set_unexpected.pass.cpp: idem. diagnostics/ syserr/ @@ -62,55 +51,56 @@ diagnostics/ input.output/ file.streams/ c.files/ - cinttypes.pass.cpp: Same as above. Patch submitted to mingw-w64. + cinttypes.pass.cpp: missing macros for C++. fstreams/ filebuf.assign/ - member_swap.pass.cpp: Needs investigation. + member_swap.pass.cpp: Segmentation fault - needs investigation. move_assign.pass.cpp: idem. nonmember_swap.pass.cpp: idem. filebuf.cons/ - move.pass.cpp: Needs investigation. + move.pass.cpp: idem. filebuf.members/ - open_pointers.pass.cpp: Needs investigation. + open_pointers.pass.cpp: idem. filebuf.virtuals/ - overflow.pass.cpp: Needs investigation. + overflow.pass.cpp: idem. + pbackfail.pass.cpp: idem. seekoff.pass.cpp: idem. underflow.pass.cpp: idem. fstream.assign/ - member_swap.pass.cpp: Needs investigation. + member_swap.pass.cpp: idem. move_assign.pass.cpp: idem. nonmember_swap.pass.cpp: idem. fstream.cons/ - move.pass.cpp: Needs investigation. + move.pass.cpp: idem. pointer.pass.cpp: idem. string.pass.cpp: idem. fstream.members/ - open_pointer.pass.cpp: Needs investigation. + open_pointer.pass.cpp: idem. open_string.pass.cpp: idem. ifstream.assign/ - member_swap.pass.cpp: Needs investigation. + member_swap.pass.cpp: idem. move_assign.pass.cpp: idem. nonmember_swap.pass.cpp: idem. ifstream.cons/ - move.pass.cpp: Needs investigation. + move.pass.cpp: idem. pointer.pass.cpp: idem. string.pass.cpp: idem. ifstream.members/ - open_pointer.pass.cpp: Needs investigation. + open_pointer.pass.cpp: idem. open_string.pass.cpp: idem. - rdbuf.pass.cpp: idem. + rdbuf.pass.cpp: idem. ofstream.assign/ - member_swap.pass.cpp: Needs investigation. + member_swap.pass.cpp: idem. move_assign.pass.cpp: idem. nonmember_swap.pass.cpp: idem. ofstream.cons/ - move.pass.cpp: Needs investigation. + move.pass.cpp: idem. pointer.pass.cpp: idem. string.pass.cpp: idem. ofstream.members/ - open_pointer.pass.cpp: Needs investigation. + open_pointer.pass.cpp: idem. open_string.pass.cpp: idem. - rdbuf.pass.cpp: idem. + rdbuf.pass.cpp: idem. iostream.format/ ext.manip get_money.pass.cpp: Windows locale names don't follow UNIX convention. @@ -120,16 +110,16 @@ input.output/ output.streams/ ostream.formatted/ ostream.inserters.arithmetic/ - long_double.pass.cpp: Needs investigation. + long_double.pass.cpp: Segfault - needs investigation. pointer.pass.cpp: idem. ostream_sentry/ - destruct.pass.cpp: exception uncaught with Clang, passes for GCC. + destruct.pass.cpp: idem. iostream.objects/ narrow.stream.objects/ - cerr.pass.cpp: Needs investigation. + cerr.pass.cpp: idem. cin.pass.cpp: idem. wide.stream.objects/ - wcerr.pass.cpp: Needs investigation. + wcerr.pass.cpp: idem. wcin.pass.cpp: idem. iostreams.base/ ios/ @@ -137,49 +127,25 @@ input.output/ copyfmt.pass.cpp: Windows locale names don't follow UNIX convention. imbue.pass.cpp: idem. move.pass.cpp: idem. - set_rdbuf.pass.cpp: Passes for GCC. swap.pass.cpp: Windows locale names don't follow UNIX convention. - iostate.flags/ - clear.pass.cpp: exception uncaught with Clang, passes for GCC. - exceptions_iostate.pass.cpp:idem. - setstate.pass.cpp: idem. ios.base/ ios.base.callback/ register_callback.pass.cpp: Windows locale names don't follow UNIX convention. ios.base.locales/ imbue.pass.cpp: Windows locale names don't follow UNIX convention. - ios.base/storage/ - pword.pass.cpp: GCC on Windows x64 warns about pointer to int cast - (lines:columns 37:29, 38:9, 40:13) stream.buffers/ streambuf/ streambuf.cons/ copy.pass.cpp: Windows locale names don't follow UNIX convention. default.pass.cpp: idem. streambuf.members/ - streambuf.locales/ + streambuf.buffer/ locales.pass.cpp: Windows locale names don't follow UNIX convention. streambuf.protected/ streambuf.assign/ - assign.pass.cpp: Windows locale names don't follow UNIX convention. + assign.pass.cpp: Windows locale names don't follow UNIX convention. swap.pass.cpp: idem. -iterators/ - predef.iterators/ - insert.iterators/ - insert.iterator/ - types.pass.cpp: Clang warns about equality comparison result unused. - (line:column 41:20) language.support/ - cstdint/ - cstdint.pass.cpp: see above. - support.dynamic/ - new.delete/ - new.delete.array/ - new_array.pass.cpp: exception uncaught with Clang, passes for GCC. - new_array_nothrow_replace.pass.cpp: Needs investigation. - new.delete.single/ - new.pass.cpp: exception uncaught with Clang, passes for GCC. - new_nothrow_replace.pass.cpp: Needs investigation. support.exception/ except.nested/ assign.pass.cpp: Needs investigation. @@ -198,13 +164,13 @@ language.support/ support.limits/ limits/ numeric.limits.members/ - digits.pass.cpp: Needs investigation. + digits.pass.cpp: Needs investigation (wrong assumptions?). digits10.pass.cpp: idem. - quiet_NaN.pass.cpp: exception uncaught with Clang, passes for GCC. - signaling_NaN.pass.cpp: idem. support.runtime/ support.start.term/ quick_exit.pass.cpp: Not declared in libc++ headers. Is it from the ABI lib? + support.types/ + max_align_t.pass.cpp: needs investigation (wrong assumptions?). localization/ locale.categories/ category.collate/ @@ -303,7 +269,7 @@ localization/ locale.numpunct.byname/ decimal_point.pass.cpp: Failed constructing from C locale. Needs investigation. grouping.pass.cpp: idem. - thousands_sep.pass.cpp: failed at runtime with Clang, passed with GCC. + thousands_sep.pass.cpp: idem. locale.stdcvt/ codecvt_utf16_in.pass.cpp: 0x40003 does not fit in a 2-byte wchar_t. codecvt_utf16_out.pass.cpp: idem. @@ -324,7 +290,6 @@ localization/ locale_string_cat.pass.cpp: idem. string.pass.cpp: idem. locale.members/ - combine.pass.cpp: "locale missing facet" with Clang. GCC passes. name.pass.cpp: Windows locale names don't follow UNIX convention. locale.operators/ eq.pass.cpp: Windows locale names don't follow UNIX convention. @@ -341,43 +306,13 @@ localization/ underflow.pass.cpp: idem. conversions.string/ converted.pass.cpp: out of range hex sequence due to 2-byte wchar_t. - ctor_err_string.pass.cpp: Passed for GCC, not for Clang... - from_bytes.pass.cpp: idem. This test passed while it probably shouldn't!! + from_bytes.pass.cpp: idem (This test passed while it probably shouldn't!). to_bytes.pass.cpp: idem. numerics/ - c.math/ - cmath.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) complex.number/ - ccmplx/ - arg.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) - pow.pass.cpp: idem - complex.member.ops/ - divide_equal_complex.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) - complex.ops/ - complex_divide_complex.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) - scalar_divide_complex.pass.cpp: idem. - complex.transcendentals/ - acos.pass.cpp: error with Clang, passes for GCC. (uncaught exception? Bad codegen?) - acosh.pass.cpp: idem. - asin.pass.cpp: idem. - asinh.pass.cpp: idem. - atan.pass.cpp: idem. - atanh.pass.cpp: idem. - exp.pass.cpp: idem. - log.pass.cpp: idem. - log10.pass.cpp: idem. - pow_complex_complex.pass.cpp: idem. - pow_complex_scalar.pass.cpp: idem. - pow_scalar_complex.pass.cpp: idem. - sin.pass.cpp: idem. - sinh.pass.cpp: idem. - sqrt.pass.cpp: idem. - tan.pass.cpp: idem. - tanh.pass.cpp: idem. complex.value.ops/ - abs.pass.cpp: error with Clang, passes for GCC. (uncaught exception? Bad codegen?) + abs.pass.cpp: Failed assertion. arg.pass.cpp: idem. - polar.pass.cpp: idem. rand/ rand.device/ ctor.pass.cpp: No such thing as /dev/urandom on Windows. Need alternative. @@ -394,17 +329,17 @@ numerics/ rand.dist.bern.negbin/ io.pass.cpp: Needs investigation. (different output double format?) rand.dist.norm/ - rand.dist.norm.cauchy/ + rand.dist.norm.cauchy/ io.pass.cpp: Needs investigation. (different output double format?) - rand.dist.norm.chisq/ + rand.dist.norm.chisq/ io.pass.cpp: Needs investigation. (different output double format?) - rand.dist.norm.norm.f/ + rand.dist.norm.norm.f/ io.pass.cpp: Needs investigation. (different output double format?) - rand.dist.norm.lognormal/ + rand.dist.norm.lognormal/ io.pass.cpp: Needs investigation. (different output double format?) - rand.dist.norm.normal/ + rand.dist.norm.normal/ io.pass.cpp: Needs investigation. (different output double format?) - rand.dist.norm.t/ + rand.dist.norm.t/ io.pass.cpp: Needs investigation. (different output double format?) rand.dist.pois/ rand.dist.pois.exp/ @@ -419,7 +354,6 @@ numerics/ io.pass.cpp: Needs investigation. (different output double format?) rand.dist.samp/ rand.dist.samp.discrete/ - ctor_default.pass.cpp: passes with Clang, fails on GCC. io.pass.cpp: Needs investigation. (different output double format?) rand.dist.samp.pconst/ io.pass.cpp: Needs investigation. (different output double format?) @@ -454,44 +388,6 @@ re/ transform_primary.pass.cpp: idem translate_nocase.pass.cpp: Needs investigation. strings/ - basic.string/ - string.access/ - at.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) - string.capacity/ - reserve.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) - resize_size.pass.cpp: idem. - resize_size_char.pass.cpp: idem. - string.cons/ - substr.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) - string.modifiers/ - string_append/ - string_size_size.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) - string_assign/ - string_size_size.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) - string_copy/ - copy.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) - string_erase/ - size_size.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) - string_insert/ - size_pointer.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) - size_pointer_size.pass.cpp: idem. - size_size_char.pass.cpp: idem. - size_string.pass.cpp: idem. - size_string_size_size.pass.cpp: idem. - string_replace/ - size_size_pointer.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) - size_size_pointer_size.pass.cpp: idem. - size_size_size_char.pass.cpp: idem. - size_size_string.pass.cpp: idem. - size_size_string_size_size.pass.cpp: idem. - string.ops/ - string_compare/ - size_size_pointer.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) - size_size_pointer_size.pass.cpp: idem. - size_size_string.pass.cpp: idem. - size_size_string_size_size.pass.cpp: idem. - string_substr/ - substr.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) c.strings/ cuchar.pass.cpp: see previous note about uchar.h. cwchar.pass.cpp: I suggest including the win32 support header which defines @@ -500,33 +396,21 @@ strings/ string.conversions/ stod.pass.cpp: "no conversion". Needs investigation. stof.pass.cpp: idem. - stoi.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) - stol.pass.cpp: idem. - stold.pass.cpp: Needs investigation. - stoll.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) - stoul.pass.cpp: idem. - stoull.pass.cpp: idem. to_string.pass.cpp: Needs investigation. to_wstring.pass.cpp: idem. thread/ futures/ futures.async/ async.pass.cpp: Needs investigation. - futures.errors/ - default_error_condition.pass.cpp: passes with Clang, fails with GCC. - equivalent_int_error_condition.pass.cpp: idem. - futures.future_error/ - code.pass.cpp: passes with Clang, fails with GCC. - what.pass.cpp: idem. futures.promise/ alloc_ctor.pass.cpp: Needs investigation. default.pass.cpp: idem. dtor.pass.cpp: idem. get_future.pass.cpp: idem. move_assign.pass.cpp: idem. - move_ctor.pass.cpp: idem. (uncaught exception?) - set_exception.pass.cpp: idem. (uncaught exception?) - set_exception_at_thread_exit.pass.cpp: idem. (uncaught exception?) + move_ctor.pass.cpp: idem. + set_exception.pass.cpp: idem. + set_exception_at_thread_exit.pass.cpp: idem. set_lvalue.pass.cpp: idem. set_lvalue_at_thread_exit.pass.cpp: idem. set_rvalue.pass.cpp: idem. @@ -572,99 +456,32 @@ thread/ wait_until.pass.cpp: idem. thread.condition/ thread.condition.condvar/ - wait_for.pass.cpp: Needs investigation. (winpthreads problem?) - wait_for_pred.pass.cpp: idem. - wait_until.pass.cpp: idem. - wait_until_pred.pass.cpp: idem. + wait_for.pass.cpp: Needs investigation. thread.condition.condvarany/ - wait_for.pass.cpp: Needs investigation. (winpthreads problem?) - wait_for_pred.pass.cpp: idem. - wait_until.pass.cpp: idem. - wait_until_pred.pass.cpp: idem. + wait_for.pass.cpp: Needs investigation. thread.mutex/ thread.lock/ - thread.lock.guard/ - adopt_lock.pass.cpp: passes with Clang, fails with GCC. - mutex.pass.cpp: idem. thread.lock.unique/ - thread.unique.cons/ - mutex_duration.pass.cpp: Needs investigation. (winpthreads problem?) - mutex_time_point.pass.cpp: Test passed, but Assertion failed in - ../src/mutex.cpp, Line 45 - mutex_try_to_lock.pass.cpp: Needs investigation. (winpthreads problem?) - thread.lock.unique/ - thread.lock.unique.locking/ - lock.pass.cpp: Needs investigation. - try_lock.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) - try_lock_for.pass.cpp: idem. - try_lock.until.pass.cpp: idem. - unlock.pass.cpp: idem. - thread.lock.algorithm/ - lock.pass.cpp: exception uncaught with Clang, passes for GCC. - try_lock.pass.cpp: idem. - thread.mutex.requirements/ - thread.timedmutes.requirements/ - thread.timedmmutex.class/ - try_lock_for.pass.cpp: exception uncaught with Clang, passes for GCC. - try_lock_until.pass.cpp: Needs investigation. (winpthreads problem?) - thread.once/ - thread.once.callonce/ - call_once: Needs investigation. (uncaught exception?) + thread.lock.unique.cons/ + mutex_try_to_lock.pass.cpp: Needs investigation. thread.threads/ thread.thread.class/ thread.thread.constr/ - F.pass.cpp: Needs investigation. + move.pass.cpp: Needs investigation. + thread.thread.id/ + join.pass.cpp: Needs investigation. thread.thread.static/ - hardware_concurrency.pass.cpp: Needs investigation. (winpthreads problem?) - thread.thread.this/ - sleep_until.pass.cpp: Needs investigation. + hardware_concurrency.pass.cpp: Needs investigation. utilities/ - memory/ - specialized.algorithms/ - unitialized.copy/ - uninitialized.copy.pass.cpp: exception uncaught with Clang, passes for GCC. - uninitialized.copy_n.pass.cpp: idem. - uninitialized.fill/ - uninitialized_fill.pass.cpp: exception uncaught with Clang, passes for GCC. - uninitialized.fill.n/ - uninitialized_fill_n.pass.cpp: exception uncaught with Clang, passes for GCC. - util.smartptr/ - util.smartptr.shared/ - util.smartptr.shared.const/ - auto_ptr.pass.cpp: exception uncaught with Clang, passes for GCC. - nullptr_t_deleter_allocator_throw.pass.cpp: idem. - nullptr_t_deleter_throw.pass.cpp: idem. - pointer_deleter_allocator_throw.pass.cpp: idem. - pointer_deleter_throw.pass.cpp: idem. - pointer_throw.pass.cpp: idem. - unique_ptr.pass.cpp: idem. - weak_ptr.pass.cpp: idem. meta/ - meta.rel/ - is_convertible.pass.cpp: passed with Clang, failed with GCC. meta.trans/ meta.trans.other/ aligned_storage.pass.cpp: Probably due to sizeof(long) != 8. meta.trans.sign/ make_signed.pass.cpp: Probably due to sizeof(wchar_t) != 4. make_unsigned.pass.cpp: idem. - meta.unary/ - meta.unary.prop/ - is_trivially_assignable.pass.cpp: Needs investigation. - is_trivially_copy_constructable.pass.cpp: idem. - is_trivially_move_constructible.pass.cpp: idem. meta.unary.prop.query/ alignment_of.pass.cpp: Probably a Clang problem on Windows. - template.bitset/ - template.bitset.cons/ - char_ptr_ctor.pass.cpp: exception uncaught with Clang, passes for GCC. - string_ctor.pass.cpp: idem. - template.bitset.members/ - flip_one.pass.cpp: exception uncaught with Clang, passes for GCC. - reset_one.pass.cpp: idem. - set_one.pass.cpp: idem. - test.pass.cpp: idem. - to_ulong.pass.cpp: Assert fails with Clang, passes with GCC