1<!DOCTYPE html>
2<html>
3<head>
4	<title>results.Windows</title>
5</head>
6<body>
7<pre>
8All failures in the libc++ test suite will be documented here.
9
10Last run was with Clang (pre-3.1) and GCC 4.6.3 (with dw2 exception handling) and
11 mingw-w64 v2.0.3 on i686-w64-mingw32.
12
13The following line was added to /lib/buildit to make a static libc++ library because a DLL requires "declspec(dllexport)" or a .def file:
14ar rcs libc++.a *.o
15I also deleted libc++.dll and libc++.dll.a to make sure libc++ was linked statically to prevent unrelated issues from contaminating the test results.
16The commands to build and test were (-nodefaultlibs does not work, lots of MinGW related stuff gets left out resulting in linker failures):
17TRIPLE=i686-w64-mingw32 /buildit
18TRIPLE=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
19
20Note: Some locale tests may "Need investigating", but I think most problems are
21      caused by wrong/unportable locale naming in the tests.
22Note: Some tests failed to link because "test.exe" was still running when ld.exe
23      tried to link the next test. I left these failures out of the list; they
24      account for about 10-30 failures, and are counted in the total scores below.
25      I reran some of these failures manually and they passed.
26Note: Some tests fail at runtime but pass when run manually. Usage of std::cout
27      segfaults so further investigation is difficult. These also contribute to
28      the failures total, but are left out of the failure list, as the cause is
29      probably not located in that part of libc++, not locatable due to the lack
30      of usable debug info generated by Clang at this time.
31
32TOTAL RESULTS:
33Section failures / total sections: 104 / 1064 = 9.8% failures
34Test failures / total number of tests: 292 / 4326 = 6.7% failures
35
36depr/
37 depr.c.headers/
38  inttypes_h.pass.cpp: missing macros for C++.
39  uchar_h.pass.cpp: bug in mingw-w64 headers for C++11 builtin char types.
40  wchar_h.pass.cpp: Windows does not have swprintf, should use _snwprintf.
41                    Suggest #define swprintf as _snwprintf for _WIN32.
42exception.unexpected/
43   set.unexpected/
44    get_unexpected.pass.cpp: Segmentation fault - needs investigation.
45    set_unexpected.pass.cpp: idem.
46diagnostics/
47 syserr/
48  syserr.errcat/
49   syserr.errcat.objects/
50    system_category.pass.cpp: Needs investigation.
51input.output/
52 file.streams/
53  c.files/
54   cinttypes.pass.cpp: missing macros for C++.
55  fstreams/
56   filebuf.assign/
57    member_swap.pass.cpp: Segmentation fault - needs investigation.
58    move_assign.pass.cpp: idem.
59    nonmember_swap.pass.cpp: idem.
60   filebuf.cons/
61    move.pass.cpp: idem.
62   filebuf.members/
63    open_pointers.pass.cpp: idem.
64   filebuf.virtuals/
65    overflow.pass.cpp: idem.
66    pbackfail.pass.cpp: idem.
67    seekoff.pass.cpp: idem.
68    underflow.pass.cpp: idem.
69   fstream.assign/
70    member_swap.pass.cpp: idem.
71    move_assign.pass.cpp: idem.
72    nonmember_swap.pass.cpp: idem.
73   fstream.cons/
74    move.pass.cpp: idem.
75    pointer.pass.cpp: idem.
76    string.pass.cpp: idem.
77   fstream.members/
78    open_pointer.pass.cpp: idem.
79    open_string.pass.cpp: idem.
80   ifstream.assign/
81    member_swap.pass.cpp: idem.
82    move_assign.pass.cpp: idem.
83    nonmember_swap.pass.cpp: idem.
84   ifstream.cons/
85    move.pass.cpp: idem.
86    pointer.pass.cpp: idem.
87    string.pass.cpp: idem.
88   ifstream.members/
89    open_pointer.pass.cpp: idem.
90    open_string.pass.cpp: idem.
91	  rdbuf.pass.cpp: idem.
92   ofstream.assign/
93    member_swap.pass.cpp: idem.
94    move_assign.pass.cpp: idem.
95    nonmember_swap.pass.cpp: idem.
96   ofstream.cons/
97    move.pass.cpp: idem.
98    pointer.pass.cpp: idem.
99    string.pass.cpp: idem.
100   ofstream.members/
101    open_pointer.pass.cpp: idem.
102    open_string.pass.cpp: idem.
103	  rdbuf.pass.cpp: idem.
104 iostream.format/
105  ext.manip
106   get_money.pass.cpp: Windows locale names don't follow UNIX convention.
107   get_time.pass.cpp: idem.
108   put_money.pass.cpp: idem.
109   put_time.pass.cpp: idem.
110  output.streams/
111   ostream.formatted/
112    ostream.inserters.arithmetic/
113     long_double.pass.cpp: Segfault - needs investigation.
114     pointer.pass.cpp: idem.
115   ostream_sentry/
116    destruct.pass.cpp: idem.
117 iostream.objects/
118  narrow.stream.objects/
119   cerr.pass.cpp: idem.
120   cin.pass.cpp: idem.
121  wide.stream.objects/
122   wcerr.pass.cpp: idem.
123   wcin.pass.cpp: idem.
124 iostreams.base/
125  ios/
126   basic.ios.members/
127    copyfmt.pass.cpp: Windows locale names don't follow UNIX convention.
128    imbue.pass.cpp: idem.
129    move.pass.cpp: idem.
130    swap.pass.cpp: Windows locale names don't follow UNIX convention.
131  ios.base/
132   ios.base.callback/
133    register_callback.pass.cpp: Windows locale names don't follow UNIX convention.
134   ios.base.locales/
135    imbue.pass.cpp: Windows locale names don't follow UNIX convention.
136 stream.buffers/
137  streambuf/
138   streambuf.cons/
139    copy.pass.cpp: Windows locale names don't follow UNIX convention.
140    default.pass.cpp: idem.
141   streambuf.members/
142    streambuf.buffer/
143     locales.pass.cpp: Windows locale names don't follow UNIX convention.
144   streambuf.protected/
145    streambuf.assign/
146	   assign.pass.cpp: Windows locale names don't follow UNIX convention.
147     swap.pass.cpp: idem.
148language.support/
149 support.exception/
150  except.nested/
151   assign.pass.cpp: Needs investigation.
152   ctor_copy.pass.cpp: idem.
153   ctor_default.pass.cpp: idem.
154   rethrow_if_nested.pass.cpp: idem.
155   rethrow_nested.pass.cpp: idem.
156   throw_with_nested.pass.cpp: idem.
157  propagation/
158   current_exception.pass.cpp: Needs investigation.
159   exception_ptr.pass.cpp: idem.
160   make_exception_ptr.pass.cpp: idem.
161   rethrow_exception.pass.cpp: idem.
162  uncaught/
163   uncaught_exception.pass.cpp: Needs investigation.
164 support.limits/
165  limits/
166   numeric.limits.members/
167    digits.pass.cpp: Needs investigation (wrong assumptions?).
168    digits10.pass.cpp: idem.
169 support.runtime/
170  support.start.term/
171   quick_exit.pass.cpp: Not declared in libc++ headers. Is it from the ABI lib?
172 support.types/
173  max_align_t.pass.cpp: needs investigation (wrong assumptions?).
174localization/
175 locale.categories/
176  category.collate/
177   locale.collate.byname/
178    compare.pass.cpp: Windows locale names don't follow UNIX convention.
179    hash.pass.cpp: idem.
180    transform.pass.cpp: getenv should be replaced by putenv for portability.
181                        Windows locale names don't follow UNIX convention.
182    types.pass.cpp: Windows locale names don't follow UNIX convention.
183 locale.categories/
184  category.ctype/
185   locale.codecvt/
186    locale.codecvt.members/
187     wchar_t_in.pass.cpp: Most likely wchar_t is assumed 4 bytes.
188     wchar_t_length.pass.cpp: idem.
189     wchar_t_out.pass.cpp: idem.
190     wchar_t_unshift.pass.cpp: idem.
191   locale.codecvt.byname/
192    ctor_wchar_t.pass.cpp: Windows locale names don't follow UNIX convention.
193   locale.ctype.byname/
194    is_1.pass.cpp: Windows locale names don't follow UNIX convention.
195    is_many.pass.cpp: idem.
196    narrow_1.pass.cpp: idem.
197    narrow_many.pass.cpp: idem.
198    scan_is.pass.cpp: idem.
199    scan_not.pass.cpp: idem.
200    tolower_1.pass.cpp: idem.
201    tolower_many.pass.cpp: idem.
202    toupper_1.pass.cpp: idem.
203    toupper_many.pass.cpp: idem.
204    types.pass.cpp: idem.
205    widen_1.pass.cpp: idem.
206    widen_many.pass.cpp: idem.
207  category.monetary/
208   locale.money.get/
209    locale.money.get.members/
210     get_long_double_en_US.pass.cpp: Windows locale names don't follow UNIX convention.
211     get_long_double_fr_FR.pass.cpp: idem.
212     get_long_double_ru_RU.pass.cpp: idem.
213     get_long_double_zh_CN.pass.cpp: idem.
214     get_string_en_US.pass.cpp: idem.
215   locale.money.put/
216    locale.money.put.members/
217	 put_long_double_en_US.pass.cpp: Windows locale names don't follow UNIX convention.
218     put_long_double_fr_FR.pass.cpp: idem.
219     put_long_double_ru_RU.pass.cpp: idem.
220     put_long_double_zh_CN.pass.cpp: idem.
221     put_string_en_US.pass.cpp: idem.
222   locale.moneypunct.byname/
223     curr_symbol.pass.cpp: Failed constructing from C locale. Needs investigation.
224     decimal_point.pass.cpp: idem.
225     frac_digits.pass.cpp: idem.
226     grouping.pass.cpp: idem.
227     neg_format.pass.cpp: idem.
228     negative_sign.pass.cpp: idem.
229     pos_format.pass.cpp: idem.
230     positive_sign.pass.cpp: idem.
231     thousands_sep.pass.cpp: idem.
232  category.numeric/
233   locale.nm.put/
234    facet.num.put.members/
235     put_double.pass.cpp: idem. (different floating point format?)
236     put_long_double.pass.cpp: idem.
237     put_pointer.pass.cpp: idem.
238   locale.num.get/
239    facet.num.get.members/
240     get_double.pass.cpp: Needs investigating.
241     get_float.pass.cpp: idem.
242     get_long_double.pass.cpp: idem.
243     get_pointer.pass.cpp: idem.
244  category.time/
245   locale.time.get/
246    locale.time.get.byname/
247     date_order.pass.cpp: Windows locale names don't follow UNIX convention.
248     date_order_wide.pass.cpp: idem.
249     get_date.pass.cpp: idem.
250     get_date_wide.pass.cpp: idem.
251     get_monthname.pass.cpp: idem.
252     get_monthname_wide.pass.cpp: idem.
253     get_one.pass.cpp: idem.
254     get_one_wide.pass.cpp: idem.
255     get_time.pass.cpp: idem.
256     get_time_wide.pass.cpp: idem.
257     get_weekday.pass.cpp: idem.
258     get_weekday_wide.pass.cpp: idem.
259     get_year.pass.cpp: idem.
260     get_year_wide.pass.cpp: idem.
261   locale.time.put/
262    locale.time.put.members/
263     put1.pass.cpp: Needs investigating.
264     put2.pass.cpp: idem.
265    locale.time.put.byname/
266     put1.pass.cpp: Windows locale names don't follow UNIX convention.
267   facet.numpunct/
268    locale.numpunct/
269     locale.numpunct.byname/
270      decimal_point.pass.cpp: Failed constructing from C locale. Needs investigation.
271      grouping.pass.cpp: idem.
272      thousands_sep.pass.cpp: idem.
273 locale.stdcvt/
274  codecvt_utf16_in.pass.cpp: 0x40003 does not fit in a 2-byte wchar_t.
275  codecvt_utf16_out.pass.cpp: idem.
276  codecvt_utf8_in.pass.cpp: idem.
277  codecvt_utf8_out.pass.cpp: idem.
278  codecvt_utf8_utf16_in.pass: idem.
279  codecvt_utf8_utf16_out.pass.cpp: idem.
280 locales/
281  locale/
282   locale.cons/
283    assign.pass.cpp: Windows locale names don't follow UNIX convention.
284    char_pointer.pass.cpp: idem.
285    copy.pass.cpp: idem.
286    default.pass.cpp: idem.
287    locale_char_pointer_cat.pass.cpp: idem.
288    locale_facetptr.pass.cpp: idem.
289    locale_locale_cat.pass.cpp: idem.
290    locale_string_cat.pass.cpp: idem.
291    string.pass.cpp: idem.
292   locale.members/
293    name.pass.cpp: Windows locale names don't follow UNIX convention.
294   locale.operators/
295    eq.pass.cpp: Windows locale names don't follow UNIX convention.
296   locale/locale.statics/
297    classic.pass.cpp: Failed constructing from C locale. Needs investigation.
298    global.pass.cpp: Windows locale names don't follow UNIX convention.
299   locale.convenience/
300    conversions/
301     conversions.buffer/
302      overflow.pass.cpp: Needs investigation.
303      pbackfail.pass.cpp: idem.
304      seekoff.pass.cpp: idem.
305      test.pass.cpp: idem.
306      underflow.pass.cpp: idem.
307     conversions.string/
308      converted.pass.cpp: out of range hex sequence due to 2-byte wchar_t.
309      from_bytes.pass.cpp: idem (This test passed while it probably shouldn't!).
310      to_bytes.pass.cpp: idem.
311numerics/
312 complex.number/
313  complex.value.ops/
314   abs.pass.cpp: Failed assertion.
315   arg.pass.cpp: idem.
316 rand/
317  rand.device/
318   ctor.pass.cpp: No such thing as /dev/urandom on Windows. Need alternative.
319   entropy.pass.cpp: idem.
320   eval.pass.cpp: idem.
321  rand.dis/
322   rand.dist.bern/
323    rand.dist.bern.bernoulli/
324     io.pass.cpp: Needs investigation. (different output double format?)
325    rand.dist.bern.bin/
326     io.pass.cpp: Needs investigation. (different output double format?)
327    rand.dist.bern.geo/
328     io.pass.cpp: Needs investigation. (different output double format?)
329    rand.dist.bern.negbin/
330     io.pass.cpp: Needs investigation. (different output double format?)
331   rand.dist.norm/
332	  rand.dist.norm.cauchy/
333     io.pass.cpp: Needs investigation. (different output double format?)
334	  rand.dist.norm.chisq/
335     io.pass.cpp: Needs investigation. (different output double format?)
336	  rand.dist.norm.norm.f/
337     io.pass.cpp: Needs investigation. (different output double format?)
338	  rand.dist.norm.lognormal/
339     io.pass.cpp: Needs investigation. (different output double format?)
340	  rand.dist.norm.normal/
341     io.pass.cpp: Needs investigation. (different output double format?)
342	  rand.dist.norm.t/
343     io.pass.cpp: Needs investigation. (different output double format?)
344   rand.dist.pois/
345    rand.dist.pois.exp/
346     io.pass.cpp: Needs investigation. (different output double format?)
347    rand.dist.pois.extreme/
348     io.pass.cpp: Needs investigation. (different output double format?)
349    rand.dist.pois.gamma/
350     io.pass.cpp: Needs investigation. (different output double format?)
351    rand.dist.pois.poisson/
352     io.pass.cpp: Needs investigation. (different output double format?)
353    rand.dist.pois.weibull/
354     io.pass.cpp: Needs investigation. (different output double format?)
355   rand.dist.samp/
356    rand.dist.samp.discrete/
357     io.pass.cpp: Needs investigation. (different output double format?)
358    rand.dist.samp.pconst/
359     io.pass.cpp: Needs investigation. (different output double format?)
360    rand.dist.samp.plinear/
361     io.pass.cpp: Needs investigation. (different output double format?)
362   rand.dist.uni/
363    rand.dist.uni.real/
364     io.pass.cpp: Needs investigation. (different output double format?)
365re/
366 re.alg/
367  re.alg.match/
368   awk.pass.cpp: Needs investigation.
369   basic.pass.cpp: idem.
370   ecma.pass.cpp: idem.
371   extended.pass.cpp: idem.
372  re.alg.search/
373   awk.pass.cpp: Needs investigation.
374   basic.pass.cpp: idem.
375   ecma.pass.cpp: idem.
376   extended.pass.cpp: idem.
377 re.regex/
378  re.regex.locale/
379   imbue.pass.cpp: Windows locale names don't follow UNIX convention.
380 re.traits/
381  default.pass.cpp: Windows locale names don't follow UNIX convention.
382  getloc.pass.cpp: idem.
383  imbue.pass.cpp: idem.
384  isctype.pass.cpp: Needs investigation.
385  lookup_classname.pass.cpp: idem.
386  lookup_collatename.pass.cpp: Windows locale names don't follow UNIX convention.
387  transform.pass.cpp: idem.
388  transform_primary.pass.cpp: idem
389  translate_nocase.pass.cpp: Needs investigation.
390strings/
391 c.strings/
392  cuchar.pass.cpp: see previous note about uchar.h.
393  cwchar.pass.cpp: I suggest including the win32 support header which defines
394                   (v)swprintf to the Windows equivalent.
395  version_cuchar.pass.cpp: see previous note about uchar.h.
396 string.conversions/
397  stod.pass.cpp: "no conversion". Needs investigation.
398  stof.pass.cpp: idem.
399  to_string.pass.cpp: Needs investigation.
400  to_wstring.pass.cpp: idem.
401thread/
402 futures/
403  futures.async/
404   async.pass.cpp: Needs investigation.
405  futures.promise/
406   alloc_ctor.pass.cpp: Needs investigation.
407   default.pass.cpp: idem.
408   dtor.pass.cpp: idem.
409   get_future.pass.cpp: idem.
410   move_assign.pass.cpp: idem.
411   move_ctor.pass.cpp: idem.
412   set_exception.pass.cpp: idem.
413   set_exception_at_thread_exit.pass.cpp: idem.
414   set_lvalue.pass.cpp: idem.
415   set_lvalue_at_thread_exit.pass.cpp: idem.
416   set_rvalue.pass.cpp: idem.
417   set_rvalue_at_thread_exit.pass.cpp: idem.
418   set_value_at_thread_exit_const.pass.cpp: idem.
419   set_value_at_thread_exit_void.pass.cpp: idem.
420   set_value_const.pass.cpp: idem.
421   set_value_void.pass.cpp: idem.
422   swap.pass.cpp: idem.
423  futures.shared_future/
424   copy_assign.pass.cpp: Needs investigation.
425   copy_ctor.pass.cpp: idem.
426   ctor_future.pass.cpp: idem.
427   dtor.pass.cpp: idem.
428   get.pass.cpp: idem.
429   move_assign.pass.cpp: idem.
430   move_ctor.pass.cpp: idem.
431   wait.pass.cpp: idem.
432   wait_for.pass.cpp: idem.
433   wait_until.pass.cpp: idem.
434  futures.tas/
435   futures.task.members/
436    assign_move.pass.cpp: Needs investigation.
437    ctor_func.pass.cpp: idem.
438    ctor_func_alloc.pass.cpp: idem.
439    ctor_move.pass.cpp: idem.
440    dtor.pass.cpp: idem.
441    get_future.pass.cpp: idem.
442    make_ready_at_thread_exit.pass.cpp: idem.
443    operator.pass.cpp: idem.
444    reset.pass.cpp: idem.
445    swap.pass.cpp: idem.
446   futures.task.nonmembers/
447    swap.pass.cpp: Needs investigation.
448   futures.unique_future/
449    dtor.pass.cpp: Needs investigation.
450    get.pass.cpp: idem.
451    move_assign.pass.cpp: idem.
452    move_ctor.pass.cpp: idem.
453    share.pass.cpp: idem.
454    wait.pass.cpp: idem.
455    wait_for.pass.cpp: idem.
456    wait_until.pass.cpp: idem.
457 thread.condition/
458  thread.condition.condvar/
459   wait_for.pass.cpp: Needs investigation.
460  thread.condition.condvarany/
461   wait_for.pass.cpp: Needs investigation.
462 thread.mutex/
463  thread.lock/
464   thread.lock.unique/
465    thread.lock.unique.cons/
466     mutex_try_to_lock.pass.cpp: Needs investigation.
467 thread.threads/
468  thread.thread.class/
469   thread.thread.constr/
470    move.pass.cpp: Needs investigation.
471   thread.thread.id/
472    join.pass.cpp: Needs investigation.
473   thread.thread.static/
474    hardware_concurrency.pass.cpp: Needs investigation.
475utilities/
476 meta/
477  meta.trans/
478   meta.trans.other/
479    aligned_storage.pass.cpp: Probably due to sizeof(long) != 8.
480   meta.trans.sign/
481    make_signed.pass.cpp: Probably due to sizeof(wchar_t) != 4.
482    make_unsigned.pass.cpp: idem.
483   meta.unary.prop.query/
484    alignment_of.pass.cpp: Probably a Clang problem on Windows.
485</pre>
486</body>
487</html>
488